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日

相关文章

  • C++中如何调用C语言的代码实现

    C++作为C语言的超集,兼容C语言的代码,因此在C++中调用C语言的代码实现是非常简单的。 一、在C++中引用C语言头文件 C++中调用C语言的代码实现,首先需要引用C语言的头文件。因为C++是C语言的超集,因此C语言的头文件可以直接引用,例如要引用C语言的math.h头文件,可以在C++代码中写下以下代码: #include <math.h> …

    C 2023年5月23日
    00
  • Ruby和Ruby on Rails中解析JSON格式数据的实例教程

    Ruby和Ruby on Rails中解析JSON格式数据的实例教程 1. 概述 JSON是一种轻量级的数据交换格式,广泛应用于数据传输和信息交换的场合。 Ruby和Ruby on Rails都提供了强大的JSON解析库,可以快速、简便地对JSON格式数据进行解析和生成。本文将以实例的方式演示在Ruby和Ruby on Rails中解析JSON格式数据的方法…

    C 2023年5月23日
    00
  • 计算器中的C键和CE键都是清零,两者有什么不同?

    问题描述: 在计算器中,一般都有“C”和“CE”两个按键,它们经常被使用者误用。那么这两个按键究竟有什么区别?在不同的场景下,应该如何使用它们呢? 解决方案: C键的使用方法 C键一般表示“清除”(Clear),使用C键会清除当前操作的内容,使计算器回到初始状态。它的主要应用场景之一是在你输入一个错误的数字或者运算符时,你可以使用C键使计算器重置,重新输入正…

    C 2023年5月22日
    00
  • C语言为结构体分配内存

    C语言中,为结构体分配内存主要有两种方式:静态分配和动态分配。 静态分配内存实际上就是在定义结构体时,直接在栈区分配所需要的内存空间。示例如下: #include <stdio.h> #include <stdlib.h> struct Student { int id; char name[20]; float score; }; …

    C 2023年5月9日
    00
  • SpringBoot @JsonDeserialize自定义Json序列化方式

    这里是关于“SpringBoot @JsonDeserialize自定义Json序列化方式”的详细攻略。 首先,我们需要明确一下什么是Json序列化。Json序列化是将java对象转化为包含对象数据的Json字符串的过程。而SpringBoot提供的@JsonDeserialize注解可以用来自定义Java对象到Json字符串的转换过程。 下面,我们来具体介…

    C 2023年5月23日
    00
  • C++ Primer Plus 第四章之C++ Primer Plus复合类型学习笔记

    C++ Primer Plus 第四章之C++ Primer Plus复合类型学习笔记 1. 复合类型简介 在C++中有许多复合类型,如数组、结构体、共用体和指针等,它们能够将多个基本类型变量组合成更加复杂的数据结构。在使用复合类型时,需要注意其内存结构和使用方法,以充分发挥其特性。 2. 数组 数组是一种复合类型,可以存储多个同一类型的数据,通过下标访问数…

    C 2023年5月22日
    00
  • CCleaner有哪些功能? CCleaner工具菜单的详细介绍

    CCleaner是一款非常实用的计算机清理工具,可以帮助我们快速、安全地清理电脑中的垃圾文件,加快系统运行速度,提高系统稳定性。下面是关于CCleaner的功能和工具菜单的详细介绍。 CCleaner的功能 CCleaner主要提供以下四个功能: 1. 清理系统垃圾文件 CCleaner可以自动清理电脑中的垃圾文件,包括浏览器的历史记录、cookies、临时…

    C 2023年5月23日
    00
  • JDK 7 新特性小结实例代码解析

    JDK 7 新特性小结实例代码解析 简介 JDK 7 是 Java Development Kit 的版本号,是 Java 的一个版本。JDK 7 主要添加了许多新特性,包括小型语言改进、文件访问/输入和输出的 I/O 改进、内部脚本引擎、实例创建类型推断、字符串开头的结尾和 switch 语句中的字符串变量、数字下划线等。本文将从例子出发,详细地介绍 JD…

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