C语言实现图书管理系统

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

  • 借阅图书
  • 归还图书
  • 展示所有图书信息

代码实现

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

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

// 图书链表头节点
BookNode *head = NULL;

// ... 其他函数定义,如 loadBookData(), saveBookData(), addBook(), deleteBook(), modifyBook(), searchBook() ...

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

    if (head == NULL) {
        printf('没有找到相关图书!\n');
        return;
    }

    BookNode *current = head;
    while (current != NULL) {
        if (strcmp(current->bookCode, bookCode) == 0) {
            if (current->borrowed) {
                printf('该图书已借出!\n');
            } else {
                current->borrowed = 1;
                printf('借阅成功!\n');
            }
            return;
        }
        current = current->next;
    }

    printf('没有找到相关图书!\n');
}

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

    if (head == NULL) {
        printf('没有找到相关图书!\n');
        return;
    }

    BookNode *current = head;
    while (current != NULL) {
        if (strcmp(current->bookCode, bookCode) == 0) {
            if (current->borrowed) {
                current->borrowed = 0;
                printf('归还成功!\n');
            } else {
                printf('该图书未借出!\n');
            }
            return;
        }
        current = current->next;
    }

    printf('没有找到相关图书!\n');
}

// 展示所有图书信息
void displayBook() {
    if (head == NULL) {
        printf('图书列表为空!\n');
        return;
    }

    BookNode *current = head;
    while (current != NULL) {
        printf('图书编号:%s\n', current->bookCode);
        printf('书名:%s\n', current->bookName);
        printf('作者:%s\n', current->author);
        printf('出版社:%s\n', current->publisher);
        printf('图书种类:%s\n', current->bookkind);
        printf('图书种类编号:%s\n', current->bookkinds);
        printf('价格:%d\n', current->quantity);
        printf('借阅状态:%s\n', current->borrowed ? '已借出' : '未借出');
        printf('\n');

        if (current->next != NULL) {
            printf('\n');
        }

        current = current->next;
    }
}

// 释放图书链表内存
void freeBookList() {
    BookNode *current = head;
    while (current != NULL) {
        BookNode *temp = current;
        current = current->next;
        free(temp);
    }
    head = NULL;
}

// 主函数
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');
        }
    
	}
}

时间复杂度分析

  • borrowBook(): O(n), n 为图书数量
  • returnBook(): O(n), n 为图书数量
  • displayBook(): O(n), n 为图书数量
  • freeBookList(): O(n), n 为图书数量
  • main(): O(1)

流程图

开始 -> 加载图书数据 -> 进入循环 -> 显示菜单 -> 用户选择操作 -> 执行对应操作 -> 返回菜单 -> 继续循环 -> 退出程序 -> 保存图书数据 -> 释放图书链表内存 -> 结束

总结

本文介绍了如何使用 C 语言实现一个简单的图书管理系统。该系统实现了借阅图书、归还图书和展示所有图书信息等基本功能。代码中使用了链表来存储图书信息,并对每个函数进行了时间复杂度分析。希望这篇文章能帮助你理解如何使用 C 语言进行简单的软件开发。

C语言图书管理系统:借阅、归还、展示等功能实现

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

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