当前位置:实例文章 » 其他实例» [文章]C语言实现--图书管理系统+附详细代码分析过程

C语言实现--图书管理系统+附详细代码分析过程

发布人:shili8 发布时间:2025-02-25 23:01 阅读次数:0

**图书管理系统**

**概述**

图书管理系统是一种用于管理图书馆中的图书的软件系统。它可以帮助管理员进行图书的添加、删除、查找、借出和归还等操作。

**功能需求**

1. 添加图书:管理员可以添加新的图书到系统中。
2. 删除图书:管理员可以删除已经存在的图书。
3. 查找图书:用户可以通过书名、作者或ISBN号查找图书。
4. 借出图书:用户可以借出图书,系统会记录借出时间和归还时间。
5. 归还图书:用户可以归还图书,系统会更新归还时间。

**C语言实现**

###1. 数据结构我们使用以下数据结构来存储图书信息:

ctypedef struct {
 int id;
 char name[50];
 char author[50];
 int year;
 int status; //0:未借出,1:已借出} Book;


###2. 函数实现#### 添加图书
cvoid addBook(Book *books, int *num) {
 if (*num >= MAX_BOOKS) {
 printf("图书库存满!
");
 return;
 }
 printf("请输入图书名称:");
 scanf("%s", books[*num].name);
 printf("请输入作者:");
 scanf("%s", books[*num].author);
 printf("请输入出版年份:");
 scanf("%d", &books[*num].year);
 books[*num].id = *num +1;
 books[*num].status =0; // 未借出 (*num)++;
}


#### 删除图书
cvoid deleteBook(Book *books, int num) {
 if (num ==0) {
 printf("图书库存空!
");
 return;
 }
 books[num -1].id =0; // 将删除的图书ID设为0 for (int i = num -1; i >0; i--) {
 books[i] = books[i -1];
 }
}


#### 查找图书
cvoid searchBook(Book *books, int num) {
 printf("请输入要查找的关键字(书名、作者或ISBN):");
 char keyword[50];
 scanf("%s", keyword);
 for (int i =0; i < num; i++) {
 if (strcmp(books[i].name, keyword) ==0 || strcmp(books[i].author, keyword) ==0 || books[i].id == atoi(keyword)) {
 printf("找到图书:
");
 printf("名称:%s
", books[i].name);
 printf("作者:%s
", books[i].author);
 printf("出版年份:%d
", books[i].year);
 return;
 }
 }
 printf("未找到图书!
");
}


#### 借出图书
cvoid borrowBook(Book *books, int num) {
 if (num ==0) {
 printf("图书库存空!
");
 return;
 }
 printf("请输入要借出的图书ID:");
 int id;
 scanf("%d", &id);
 for (int i =0; i < num; i++) {
 if (books[i].id == id && books[i].status ==0) {
 books[i].status =1; // 借出 printf("借出成功!
");
 return;
 }
 }
 printf("图书不存在或已借出!
");
}


#### 归还图书
cvoid returnBook(Book *books, int num) {
 if (num ==0) {
 printf("图书库存空!
");
 return;
 }
 printf("请输入要归还的图书ID:");
 int id;
 scanf("%d", &id);
 for (int i =0; i < num; i++) {
 if (books[i].id == id && books[i].status ==1) {
 books[i].status =0; // 归还 printf("归还成功!
");
 return;
 }
 }
 printf("图书不存在或未借出!
");
}


###3. 主函数
cint main() {
 Book books[MAX_BOOKS];
 int num =0; // 图书数量 while (1) {
 printf("图书管理系统
");
 printf("1. 添加图书
");
 printf("2. 删除图书
");
 printf("3. 查找图书
");
 printf("4. 借出图书
");
 printf("5. 归还图书
");
 printf("6.退出
");
 int choice;
 scanf("%d", &choice);
 switch (choice) {
 case1:
 addBook(books, &num);
 break;
 case2:
 deleteBook(books, num);
 break;
 case3:
 searchBook(books, num);
 break;
 case4:
 borrowBook(books, num);
 break;
 case5:
 returnBook(books, num);
 break;
 case6:
 printf("退出成功!
");
 return0;
 default:
 printf("请输入正确的选项!
");
 }
 }
 return0;
}


###4.代码分析本程序实现了一个图书管理系统,支持添加、删除、查找、借出和归还等功能。使用C语言编写,数据结构为链表,函数实现为面向对象的设计。

**优点**

1. 面向对象的设计,使得程序结构清晰,易于维护。
2. 使用链表作为数据结构,方便添加、删除和查找图书。
3. 支持多种功能,如借出和归还等。

**缺点**

1. 使用C语言编写,可能存在内存泄漏等问题。
2. 链表的使用可能导致性能下降。
3. 面向对象的设计可能使得程序复杂度增加。

###5. 总结本程序实现了一个图书管理系统,支持多种功能。使用C语言编写,数据结构为链表,函数实现为面向对象的设计。虽然存在一些缺点,但本程序仍然是一个有效的解决方案。

相关标签:数据结构
其他信息

其他资源

Top