C语言实现简单图书管理系统

C语言实现简单图书管理系统详细攻略

系统功能需求

一个简单的图书管理系统功能需求为:

  1. 借阅图书:用户能够借阅图书。

  2. 归还图书:用户能够归还图书。

  3. 查看图书:用户能够查看系统中的所有图书。

  4. 增加图书:管理员能够增加新的图书到系统中。

  5. 删除图书:管理员能够删除系统中已有的图书。

  6. 修改图书:管理员能够修改系统中已有的图书。

实现思路

  1. 创建一个图书结构体,包含图书的基本信息,如编号、书名、作者、出版社、出版日期、价格等。

  2. 借阅图书:将借阅的图书信息记录到一个链表中,并将该图书从系统中删除。

  3. 归还图书:将归还的图书信息从链表中删除,并将该图书添加回系统中。

  4. 查看图书:输出所有在系统中的图书信息。

  5. 增加图书:将新的图书信息添加到系统中。

  6. 删除图书:将该图书从系统中删除。

  7. 修改图书:将图书信息修改后更新到系统中。

代码实现

以下是一个简单的代码示例:

struct Book {
    int id;
    char title[50];
    char author[50];
    char publisher[50];
    char pub_date[20];
    double price;
};

// 定义链表结点类型
struct Node {
    struct Book book;
    struct Node *next;
};

// 添加图书到链表中
void addBook(struct Node **head, struct Book book) {
    struct Node *new_node = (struct Node*) malloc(sizeof(struct Node));
    new_node->book = book;
    new_node->next = (*head);
    (*head) = new_node;
}

// 从链表中删除图书
void deleteBook(struct Node **head, int book_id) {
    struct Node *temp = *head, *prev;
    if (temp != NULL && temp->book.id == book_id) {
        *head = temp->next;
        free(temp);
        return;
    }    

    while (temp != NULL && temp->book.id != book_id) {
        prev = temp;
        temp = temp->next;
    }

    if (temp == NULL) return;

    prev->next = temp->next;
    free(temp);
}

// 修改图书信息
void editBook(struct Node *head, int book_id, char *title, char *author, char *publisher, char *pub_date, double price) {
    struct Node *temp = head;
    while (temp != NULL && temp->book.id != book_id) {
        temp = temp->next;
    }

    if (temp == NULL) return;

    strcpy(temp->book.title, title);
    strcpy(temp->book.author, author);
    strcpy(temp->book.publisher, publisher);
    strcpy(temp->book.pub_date, pub_date);
    temp->book.price = price;
}

// 查看图书信息
void displayBooks(struct Node *head) {
    struct Node *temp = head;
    while (temp != NULL) {
        printf("ID: %d\n", temp->book.id);
        printf("Title: %s\n", temp->book.title);
        printf("Author: %s\n", temp->book.author);
        printf("Publisher: %s\n", temp->book.publisher);
        printf("Publish Date: %s\n", temp->book.pub_date);
        printf("Price: %.2f yuan\n\n", temp->book.price);
        temp = temp->next;
    }
}

int main() {
    struct Node *book_list = NULL;

    // 添加图书
    struct Book book1 = {1, "C Programming Language", "Dennis Ritchie", "Prentice Hall", "1978-02-22", 34.98};
    addBook(&book_list, book1);

    // 删除图书
    deleteBook(&book_list, 1);

    // 修改图书信息
    editBook(book_list, 2, "The C Programming Language", "Dennis Ritchie and Brian Kernighan", "Prentice Hall", "1988-04-01", 39.99);

    // 查看图书信息
    displayBooks(book_list);

    return 0;
}

以上示例展示了如何实现图书管理系统中的基本功能:添加图书、删除图书、修改图书信息、查看图书信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现简单图书管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Marshall Monitor II A.N.C.降噪蓝牙耳机30天详细评测

    Marshall Monitor II A.N.C.降噪蓝牙耳机30天详细评测 概述 本文介绍Marshall Monitor II A.N.C.降噪蓝牙耳机的使用体验,并根据30天的长时间使用给出评测。 外观设计 Marshall Monitor II A.N.C.耳机采用了传统的翻盖式设计,整个耳机以黑色为主色调,搭配铜色的镀金LOGO,非常时尚。耳机外…

    C 2023年5月22日
    00
  • C语言实现任意进制转换器

    C语言实现任意进制转换器的攻略如下: 介绍 进制转换是计算机科学中的一个基本问题。通常我们使用十进制作为计算的基础,但在某些场合下,如计算机领域中,可能需要十六进制或二进制来表示数据。因此,实现任意进制转换器是非常有用的。 操作步骤 实现任意进制转换器,需要以下的步骤: 输入要转换的数和当前进制; 将输入的数转换为十进制; 将十进制数转换为目标进制; 输出结…

    C 2023年5月23日
    00
  • Redis中SDS简单动态字符串详解

    Redis中SDS简单动态字符串详解 什么是SDS? SDS是Redis中的一个数据存储结构,全称为Simple Dynamic Strings,即简单动态字符串。SDS和C语言中的字符串很相似,但是在Redis中使用了自己的数据结构来实现。相比于C语言中的字符串数组,SDS有更好的性能表现。 SDS的数据结构 SDS的数据结构由以下三部分组成: len:表…

    C 2023年5月22日
    00
  • C++类的分离式写法介绍示例

    我们来详细讲解一下C++类的分离式写法介绍示例的完整攻略。 1. 什么是分离式写法 分离式写法是一种C++类的设计方法,它将类的声明和实现分离为两个文件,以实现模块化设计和代码重用。这种方法的优点是可以降低代码的耦合性,简化代码的维护和扩展,提高代码的可读性和可维护性。 2. 分离式写法示例 示例1:实现一个简单的矩形类,其中包含计算矩形面积和周长的功能。我…

    C 2023年5月23日
    00
  • 型号为a1526的iphone5c 联通版4g网络怎么开启 联通版iphone5c a1526越狱后破解4g教程

    那么针对这个问题,我将分为两个部分来进行回答。 如何开启型号为a1526的iphone5c联通版4G网络? 首先,您需要确认您的手机是否支持4G网络。型号为a1526的iphone5c 联通版是支持4G网络的,但需满足以下条件: 手机系统为iOS 8.0及以上版本 必须使用联通的USIM卡 在中国大陆地区开通4G网络服务 确认您的手机符合以上条件后,您需要进…

    C 2023年5月23日
    00
  • C语言中常用的几个头文件及库函数

    下面我来详细讲解一下“C语言中常用的几个头文件及库函数”。 常用的头文件 #include stdio.h 是C语言中用来进行输入输出(IO)操作的头文件。常见的IO函数有: printf: 打印输出。 scanf: 读入输入。 getchar: 读入单个字符。 示例: #include <stdio.h> int main() { printf…

    C 2023年5月22日
    00
  • C语言中如何进行并发编程?

    C语言最常用的并发编程方式是使用线程。线程是程序执行流的最小单元,多个线程可以同时并发执行不同的任务,从而提高程序的性能和响应速度。 线程的使用需要引入pthread库,包含头文件<pthread.h>。下面是实现线程的基本步骤: 创建线程:使用函数pthread_create创建子线程。该函数有四个参数,分别为线程对应的指针、线程属性、线程运行…

    C 2023年4月27日
    00
  • C语言实现纸牌24点小游戏

    C语言实现纸牌24点小游戏 简介 纸牌24点是一种常见的解谜游戏,在该游戏中,玩家需要选取若干个数值不同的纸牌,通过不断组合计算,使其总和等于24。该游戏是一款简单却又富有乐趣的解谜游戏,特别适合喜欢数学和逻辑思维的人群。 本文将演示如何使用C语言实现纸牌24点小游戏。读者需具备C语言基础和基本的编程能力。 实现方法 在C语言中,可以使用递归的方法来实现该游…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部