C语言实现图书管理系统(附完整源码)

这篇博客文章将带你一步步创建一个基于C语言的图书管理系统,并提供完整的源代码。

1. 系统概述

这个图书管理系统旨在帮助用户有效地管理图书信息,它具备以下功能:

  • 添加图书: 录入新图书的信息,包括编号、书名、作者、出版社、种类、价格等。
  • 删除图书: 从系统中移除不再需要的图书信息。
  • 修改图书: 更新现有图书的信息,例如价格变动或库存变化。
  • 查找图书: 根据书名或其他关键词搜索特定的图书。
  • 借阅图书: 记录图书借阅状态,避免重复借阅。
  • 归还图书: 更新图书的借阅状态,使其可被再次借阅。
  • 显示图书: 展示系统中所有图书的详细信息。

2. 数据结构

我们使用链表来存储图书信息。每个节点表示一本书,包含以下字段:

typedef struct Node {
    char bookCode[20];
    char bookName[50];
    char author[50];
    char publisher[50];
    char bookkind[50];
    char bookkinds[50];
    int quantity;
    int borrowed;
    struct Node *next;
} BookNode;

BookNode *head = NULL;

3. 核心功能实现

3.1 加载和保存图书数据

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, '%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('无法保存图书信息!\n');
        return;
    }

    BookNode *current = head;
    while (current != NULL) {
        fprintf(file, '%s\n', current->bookCode);
        fprintf(file, '%s\n', current->bookName);
        fprintf(file, '%s\n', current->author);
        fprintf(file, '%s\n', current->publisher);
        fprintf(file, '%s\n', current->bookkind);
        fprintf(file, '%s\n', current->bookkinds);
        fprintf(file, '%d\n', current->quantity);
        fprintf(file, '%d\n', current->borrowed);

        current = current->next;
    }

    fclose(file);
}

3.2 添加图书

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('%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('添加成功!\n');
}

3.3 其他功能

删除、修改、查找、借阅、归还和显示图书信息等功能的实现与添加图书类似, 请参考完整源代码。

4. 完整源代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// ... (BookNode结构体和其他函数的代码,与上面相同)... 

int main() {
    loadBookData();

    while (1) {
        printf('*****欢迎使用图书管理系统*****\n');
        printf('1. 添加图书信息\n');
        printf('2. 删除图书信息\n');
        printf('3. 修改图书信息\n');
        printf('4. 查找图书信息\n');
        printf('5. 借阅图书\n');
        printf('6. 归还图书\n');
        printf('7. 显示图书信息\n');
        printf('0. 退出程序\n');
        printf('请输入您的选择:');

        int choice;
        scanf('%d', &choice);

        switch (choice) {
            case 1:
                addBook();
                break;
            case 2:
                deleteBook();
                break;
            case 3:
                modifyBook();
                break;
            case 4:
                searchBook();
                break;
            case 5:
                borrowBook();
                break;
            case 6:
                returnBook();
                break;
            case 7:
                 displayBook();
                break;
            case 0:
                saveBookData();
                freeBookList();
                printf('感谢使用图书管理系统,再见!\n');
                return 0;
            default:
                printf('无效的选择,请重新输入!\n');
        }
    }
}

5. 总结

本篇文章介绍了如何使用C语言创建一个简单的图书管理系统。你可以根据自己的需求对系统进行扩展,例如添加用户管理、借阅历史记录等功能。

C语言实现图书管理系统(附完整源码)

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

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