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日

相关文章

  • python 将json数据提取转化为txt的方法

    要将从网页或API获取的JSON数据提取出来,并转化为文本文件,需要使用Python中的json模块和文件操作。 以下是将JSON数据提取并转化为TXT文件的完整攻略: 步骤1:引入json和os模块 import json # 引入json模块 import os # 引入os模块 步骤2:从源文件中读取JSON数据 从源文件中读取JSON数据的最简单方法…

    C 2023年5月23日
    00
  • C语言错误计算数组长度

    基于题目描述,我们将为大家提供“C语言错误计算数组长度”的使用攻略。 介绍 在使用C语言数组时,经常需要计算数组的长度,以便进行遍历等操作。然而,C语言中并没有提供直接获取数组长度的方法。 不少开发者会通过计算数组大小与单个元素大小之比来求得数组长度,但这种方式在某些情况下是不可靠的,因为数组大小与单个元素大小可能随指针或编译器的不同而产生变化。 正确的方法…

    C 2023年5月9日
    00
  • C语言入门篇–四大常量(字面,const修饰,宏,枚举)及标识符

    C语言入门篇–四大常量及标识符攻略 常量 字面常量 字面常量是指在程序中直接使用的常量,包括整型常量、实型常量、字符常量和字符串常量。 整型常量:在程序中直接写入的整数,如123,-456都是整型常量。 实型常量:包括浮点数和双精度浮点数,如3.14和5.76都是实型常量。 字符常量:单引号 ” 包裹的字符或转义字符的组合,如’A’、’?’或’\n’。 …

    C 2023年5月23日
    00
  • 计时器的time_t和clock_t 的两种实现方法(推荐)

    计时器的time_t和clock_t的两种实现方法(推荐) 计时器是一个非常实用的工具,在很多应用场景中都得到了广泛的应用。time_t和clock_t是两种常见的计时器类型,它们都可以用于测量时间的长度。本文将详细介绍这两种类型的实现方法,以供大家参考。 time_t的实现方法 time_t是标准C库中的一种数据类型,它代表了从1970年1月1日零时整到给…

    C 2023年5月23日
    00
  • C++实现商品管理程序

    C++实现商品管理程序攻略 程序功能概述 本程序是一个简单的商品管理系统,支持添加、删除、修改、查询商品信息等操作。每个商品的信息包括商品编号、商品名称、商品价格、商品数量、生产日期、保质期限等。 程序实现步骤 1. 创建商品类 首先需要创建一个商品类,其中包括商品编号、商品名称、商品价格、商品数量、生产日期、保质期限等属性。以下是该类的代码示例: clas…

    C 2023年5月23日
    00
  • C语言实现简单的学生学籍管理系统

    C语言实现简单的学生学籍管理系统攻略 本系统主要实现以下功能: 添加学生信息; 修改学生信息; 删除学生信息; 查询学生信息; 展示所有学生信息。 1. 添加学生信息 实现思路 添加学生信息需要以下步骤: 获取学生信息,包括姓名、性别、年龄等; 根据学生信息创建一个学生对象; 将学生对象添加到学生列表中。 示例代码 #include <stdio.h&…

    C 2023年5月23日
    00
  • JS跨域交互(jQuery+php)之jsonp使用心得

    下面我为你讲解一下“JS跨域交互(jQuery+php)之jsonp使用心得”的完整攻略。 什么是跨域? 跨域(cross-origin)是指在当前请求资源(如 javascript、css、json、xml 等)的文档或脚本所属窗口(window、iframe 或 frame)与请求资源所在文档的域(domain)不同情况下的访问。 JSONP 原理 JS…

    C 2023年5月23日
    00
  • C++的虚析构详解及实例代码

    C++的虚析构详解及实例代码 什么是虚析构函数 在 C++ 中,如果一个类中含有虚函数,我们通常都会将这个类的析构函数定义为虚析构函数,以保证对象的正确释放。 虚析构函数是在基类中定义,被子类继承并覆盖的析构函数。具有虚析构函数的类被用做其他类的基类,以确保正确地释放对象的所有资源。 虚析构函数的应用场景 假设我们有一个基类Base,它含有虚析构函数,另外还…

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