C语言实现图书管理系统

这篇文章将介绍如何使用C语言实现一个简单的图书管理系统,该系统支持以下功能:

  • 添加图书* 删除图书* 修改图书信息* 查找图书* 借阅图书* 归还图书* 显示所有图书

代码实现c#include <stdio.h>#include <stdlib.h>#include <string.h>

// 定义图书节点结构体typedef struct Node { char bookCode[20]; char bookName[50]; char author[50]; char publisher[50]; char bookkind[50]; char bookkinds[50]; float price; int quantity; int borrowed; struct Node *next;} BookNode;

// 初始化链表头节点BookNode *head = NULL;

// 从文件中加载图书数据void loadBookData() { FILE *file = fopen('book_storage.txt', 'r'); if (file == NULL) { return; }

while (!feof(file)) {        BookNode *newNode = (BookNode *)malloc(sizeof(BookNode));        fscanf(file, '%s', newNode->bookCode);        fscanf(file, '%s', newNode->bookName);        fscanf(file, '%s', newNode->author);        fscanf(file, '%s', newNode->publisher);        fscanf(file, '%s', newNode->bookkind);        fscanf(file, '%s', newNode->bookkinds);        fscanf(file, '%f', &newNode->price);        fscanf(file, '%d', &newNode->quantity);        fscanf(file, '%d', &newNode->borrowed);        newNode->next = NULL;

    if (head == NULL) {            head = newNode;        } else {            BookNode *current = head;            while (current->next != NULL) {                current = current->next;            }            current->next = newNode;        }    }

fclose(file);}

// 将图书数据保存到文件void saveBookData() { FILE *file = fopen('book_storage.txt', 'w'); if (file == NULL) { printf('无法保存图书信息! '); return; }

BookNode *current = head;    while (current != NULL) {        fprintf(file, '%s

', current->bookCode); fprintf(file, '%s ', current->bookName); fprintf(file, '%s ', current->author); fprintf(file, '%s ', current->publisher); fprintf(file, '%s ', current->bookkind); fprintf(file, '%s ', current->bookkinds); fprintf(file, '%.2f ', current->price); fprintf(file, '%d ', current->quantity); fprintf(file, '%d ', current->borrowed);

    current = current->next;    }

fclose(file);}

// 添加图书void addBook() { BookNode *newNode = (BookNode *)malloc(sizeof(BookNode)); printf('请输入图书编号:'); scanf('%s', newNode->bookCode); printf('请输入书名:'); scanf('%s', newNode->bookName); printf('请输入作者:'); scanf('%s', newNode->author); printf('请输入出版社:'); scanf('%s', newNode->publisher); printf('请输入图书种类:'); scanf('%s', newNode->bookkind); printf('请输入图书种类编号:'); scanf('%s', newNode->bookkinds); printf('请输入价格:'); scanf('%f', &newNode->price); printf('请输入数量:'); scanf('%d', &newNode->quantity); newNode->borrowed = 0; newNode->next = NULL;

if (head == NULL) {        head = newNode;    } else {        BookNode *current = head;        while (current->next != NULL) {            current = current->next;        }        current->next = newNode;    }

printf('添加成功!

');}

// 删除图书void deleteBook() { char bookCode[20]; printf('请输入要删除的图书编号:'); scanf('%s', bookCode);

if (head == NULL) {        printf('没有找到相关图书!

'); return; }

if (strcmp(head->bookCode, bookCode) == 0) {        BookNode *temp = head;        head = head->next;        free(temp);        printf('删除成功!

'); return; }

BookNode *current = head;    while (current->next != NULL) {        if (strcmp(current->next->bookCode, bookCode) == 0) {            BookNode *temp = current->next;            current->next = temp->next;            free(temp);            printf('删除成功!

'); return; } current = current->next; }

printf('没有找到相关图书!

');}

// 修改图书信息void modifyBook() { char bookCode[20]; printf('请输入要修改的图书编号:'); scanf('%s', bookCode);

if (head == NULL) {        printf('没有找到相关图书!

'); return; }

BookNode *current = head;    while (current != NULL) {        if (strcmp(current->bookCode, bookCode) == 0) {            printf('请输入新的书名:');            scanf('%s', current->bookName);            printf('请输入新的作者:');            scanf('%s', current->author);            printf('请输入新的出版社:');            scanf('%s', current->publisher);            printf('请输入新的图书种类:');            scanf('%s', current->bookkind);            printf('请输入新的图书种类编号:');            scanf('%s', current->bookkinds);            printf('请输入新的价格:');            scanf('%f', &current->price);            printf('请输入新的数量:');            scanf('%d', &current->quantity);            printf('修改成功!

'); return; } current = current->next; }

printf('没有找到相关图书!

');}

// 查找图书void searchBook() { char bookName[50]; printf('请输入要查找的书名:'); scanf('%s', bookName);

if (head == NULL) {        printf('没有找到相关图书!

'); return; }

BookNode *current = head;    int found = 0;    while (current != NULL) {        if (strcmp(current->bookName, bookName) == 0) {            printf('图书编号:%s

', current->bookCode); printf('书名:%s ', current->bookName); printf('作者:%s ', current->author); printf('出版社:%s ', current->publisher); printf('图书种类:%s ', current->bookkind); printf('图书种类编号:%s ', current->bookkinds); printf('价格:%.2f ', current->price); printf('数量:%d ', current->quantity); printf('借阅状态:%s ', current->borrowed ? '已借出' : '未借出'); found = 1; } current = current->next; }

if (!found) {        printf('没有找到相关图书!

'); }}

// 借阅图书void borrowBook() { char bookCode[20]; printf('请输入要借阅的图书编号:'); scanf('%s', bookCode);

if (head == NULL) {        printf('没有找到相关图书!

'); return; }

BookNode *current = head;    while (current != NULL) {        if (strcmp(current->bookCode, bookCode) == 0) {            if (current->borrowed) {                printf('该图书已借出!

'); } else { current->borrowed = 1; printf('借阅成功! '); } return; } current = current->next; }

printf('没有找到相关图书!

');}

// 归还图书void returnBook() { char bookCode[20]; printf('请输入要归还的图书编号:'); scanf('%s', bookCode);

if (head == NULL) {        printf('没有找到相关图书!

'); return; }

BookNode *current = head;    while (current != NULL) {        if (strcmp(current->bookCode, bookCode) == 0) {            if (current->borrowed) {                current->borrowed = 0;                printf('归还成功!

'); } else { printf('该图书未借出! '); } return; } current = current->next; }

printf('没有找到相关图书!

');}

// 显示所有图书void displayAllBooks() { if (head == NULL) { printf('没有图书信息! '); return; }

BookNode *current = head;    while (current != NULL) {        printf('图书编号:%s

', current->bookCode); printf('书名:%s ', current->bookName); printf('作者:%s ', current->author); printf('出版社:%s ', current->publisher); printf('图书种类:%s ', current->bookkind); printf('图书种类编号:%s ', current->bookkinds); printf('价格:%.2f ', current->price); printf('数量:%d ', current->quantity); printf('借阅状态:%s ', current->borrowed ? '已借出' : '未借出'); printf(' '); current = current->next; }}

// 主函数int main() { loadBookData();

int choice;    while (1) {        printf('

'); printf('1. 添加图书 '); printf('2. 删除图书 '); printf('3. 修改图书信息 '); printf('4. 查找图书 '); printf('5. 借阅图书 '); printf('6. 归还图书 '); printf('7. 显示所有图书 '); printf('8. 退出 '); printf('请选择操作:'); scanf('%d', &choice);

    switch (choice) {            case 1:                addBook();                saveBookData();                break;            case 2:                deleteBook();                saveBookData();                break;            case 3:                modifyBook();                saveBookData();                break;            case 4:                searchBook();                break;            case 5:                borrowBook();                saveBookData();                break;            case 6:                returnBook();                saveBookData();                break;            case 7:                displayAllBooks();                break;            case 8:                saveBookData();                exit(0);            default:                printf('无效的选择!

'); break; } }

return 0;}

使用方法

  1. 编译并运行代码。2. 按照菜单提示选择操作。3. 输入相应的信息完成操作。

注意

  • 本代码使用文件存储图书信息,请确保程序有权限读写文件。* 本代码只是一个简单的示例,您可以根据需要进行修改和扩展。
C语言实现图书管理系统:增删改查、借阅归还功能详解

原文地址: https://www.cveoy.top/t/topic/fv2U 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录