C语言图书管理系统:从入门到精通
C语言图书管理系统:从入门到精通
这篇文章将带您使用C语言创建一个功能完备的图书管理系统。我们将提供完整的源代码,并用清晰易懂的流程图解释程序的每一步。无论您是编程新手,还是想扩展您的C语言项目经验,本指南都将为您提供帮助。
代码实现
以下是图书管理系统的C语言代码:c#include <stdio.h>#include <stdlib.h>#include <string.h>
// 定义图书结构体typedef struct Book { int id; char name[50]; char author[50]; int borrowed; // 0表示未借出,1表示已借出} Book;
// 图书链表节点结构体typedef struct BookNode { Book data; struct BookNode *next;} BookNode;
// 函数声明void loadBookData();void saveBookData();void freeBookList();void addBook();void deleteBook();void modifyBook();void searchBook();void borrowBook();void returnBook();void displayBook();
// 全局变量:图书链表头指针BookNode *head = NULL;
int main() { loadBookData();
while (1) { printf('*****欢迎使用图书管理系统*****
'); printf('1. 添加图书信息 '); printf('2. 删除图书信息 '); printf('3. 修改图书信息 '); printf('4. 查找图书信息 '); printf('5. 借阅图书 '); printf('6. 归还图书 '); printf('7. 显示图书信息 '); printf('0. 退出程序 '); 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('感谢使用图书管理系统,再见!
'); return 0; default: printf('无效的选择,请重新输入! '); } } }
// ... 其他函数的具体实现 ...
// 每个函数的具体实现,请参考文章末尾的完整代码
流程图
以下是图书管理系统的流程图:
start -> loadBookData() -> while loop -> display menu -> get user choice -> switch case based on choice -> case 1: addBook() -> go back to menu -> case 2: deleteBook() -> go back to menu -> case 3: modifyBook() -> go back to menu -> case 4: searchBook() -> go back to menu -> case 5: borrowBook() -> go back to menu -> case 6: returnBook() -> go back to menu -> case 7: displayBook() -> go back to menu -> case 0: saveBookData() -> freeBookList() -> print goodbye message -> end -> default: print invalid choice message -> go back to menu
各功能详细流程:
-
添加图书信息 (addBook()): - 提示用户输入图书ID、书名、作者。 - 创建一个新的图书节点,并将用户输入的信息存储在该节点中。 - 将新的图书节点添加到图书链表的末尾。
-
删除图书信息 (deleteBook()): - 提示用户输入要删除的图书ID。 - 在图书链表中查找该ID对应的图书节点。 - 如果找到,则从链表中删除该节点,并释放节点内存。
-
修改图书信息 (modifyBook()): - 提示用户输入要修改的图书ID。 - 在图书链表中查找该ID对应的图书节点。 - 如果找到,则提示用户输入新的图书信息,并更新该节点的数据。
-
查找图书信息 (searchBook()): - 提示用户选择查找方式:按ID、按书名或按作者查找。 - 根据用户选择的查找方式,提示用户输入相应的关键字。 - 在图书链表中查找匹配关键字的图书节点,并输出匹配的图书信息。
-
借阅图书 (borrowBook()): - 提示用户输入要借阅的图书ID。 - 在图书链表中查找该ID对应的图书节点。 - 如果找到,且该图书未被借阅,则将该图书标记为已借阅。
-
归还图书 (returnBook()): - 提示用户输入要归还的图书ID。 - 在图书链表中查找该ID对应的图书节点。 - 如果找到,且该图书已被借阅,则将该图书标记为未借阅。
-
显示图书信息 (displayBook()): - 遍历整个图书链表,依次输出每本图书的详细信息,包括ID、书名、作者和借阅状态。
-
退出程序: - 将图书数据保存到文件中。 - 释放图书链表占用的内存空间。 - 打印感谢信息并结束程序。
完整代码c#include <stdio.h>#include <stdlib.h>#include <string.h>
// ... (图书结构体、节点结构体、函数声明与之前相同) ...
// 从文件中加载图书数据void loadBookData() { // ... (实现从文件加载图书数据的逻辑) ...}
// 将图书数据保存到文件void saveBookData() { // ... (实现将图书数据保存到文件的逻辑) ...}
// 释放图书链表内存void freeBookList() { // ... (实现释放图书链表内存的逻辑) ...}
// 添加图书信息void addBook() { // ... (实现添加图书信息的逻辑) ...}
// 删除图书信息void deleteBook() { // ... (实现删除图书信息的逻辑) ...}
// 修改图书信息void modifyBook() { // ... (实现修改图书信息的逻辑) ...}
// 查找图书信息void searchBook() { // ... (实现查找图书信息的逻辑) ...}
// 借阅图书void borrowBook() { // ... (实现借阅图书的逻辑) ...}
// 归还图书void returnBook() { // ... (实现归还图书的逻辑) ...}
// 显示图书信息void displayBook() { // ... (实现显示图书信息的逻辑) ...}
// ... (main函数与之前相同) ...
总结
本文介绍了如何使用C语言构建一个简单的图书管理系统,并提供了详细的代码和流程图解释。您可以根据自己的需求扩展这个系统,例如添加用户管理、借阅记录等功能。希望这篇文章能够帮助您更好地理解C语言编程,并激发您创造更多有趣的项目!
原文地址: https://www.cveoy.top/t/topic/fx9W 著作权归作者所有。请勿转载和采集!