You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libray/README.md

228 lines
7.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 图书管理系统
2023年5月21日
成员1王昊 成员2孙艺哲 成员3张江楠 成员4郭佳慧
## 项目简介
本系统是程序设计与问题求解课程设计项目,实现了图书管理 CSV 格式数据文件的读取和保存以及数据的增删改查CRUD等功能。项目采用 C 语言编程实现,在 VS Code 集成开发环境IDE中用 GCC 进行编译。系统采用模块化设计,程序结构清晰,采用菜单驱动的命令行界面,操作便捷,能够用 CSV 格式读取和保存数据,通用性强,能够用图表展示数据,直观清楚。
下载地址https://bdgit.educoder.net/mac76tib2/libray.git
项目开发过程中采用 Kanban看板进行任务管理和分工协作并使用 Git 对程序代码和文档进行版本管理。任务分工情况如下:
| 任务 | 设计 | 开发 | 测试 | 文档 |
|------|-----|------|------|-----|
| C1 | 王昊 | 王昊 | 张江楠 | 郭佳慧 |
| C2·C3·C4·C5 | 张江楠 | 张江楠 | 郭佳慧 | 孙艺哲 |
| C6·C7·C8·C9 | 郭佳慧 | 郭佳慧 | 孙艺哲 | 王昊 |
| C10·C11·C12 | 孙艺哲 | 孙艺哲 | 王昊 | 张江楠 |
每个成员工作量(百分比):
| 王昊 | 张江楠 | 郭佳慧 | 孙艺哲 |
|----|---|----|----|
| 25 | 25 | 25 | 25 |
## 关于图书管理系统
建立一个图书馆管理系统,可以处理以下对象:
1图书馆基本信息
2图书馆的书籍
3图书馆管理员
4读者信息
### 需求分析
1查询图书馆的总信息
2查询图书馆藏书信息
3存入新书
4旧书处理
5根据书名检索书刊信息
6查询读者的借阅信息
7查询读者信息
8读者借书
9读者还书
10文件保存
11从文件读取
## C1函数模块
1.函数原形int main();
2.功能调用ShowMainMenu()函数,显示主界面
```
void ShowMainMenu()
{
system("cls");
printf("\n\n\n\n\n");
printf("\t|----------------------欢迎进入---------------------------\n");
printf("\t| 读者管理系统 \n");
printf("\t| 1、查询图书馆的总信息 \n");
printf("\t| 2、查询图书馆藏书信息 \n");
printf("\t| 3、存入新书 \n");
printf("\t| 4、旧书处理 \n");
printf("\t| 5、根据书名检索书刊信息 \n");
printf("\t| 6、查询读者的借阅信息 \n");
printf("\t| 7、查询读者信息 \n");
printf("\t| 8、读者借书 \n");
printf("\t| 9、读者还书 \n");
printf("\t| 10、文件保存 \n");
printf("\t| 11、从文件读取 \n");
printf("\t| 0、退出 \n");
printf("\t|---------------------------------------------------------\n");
printf("新打开程序需先添加管理员\n");
printf("\n");
printf("\t\t请选择0-11");
}
```
## C2查询图书馆信息模块
函数原形void ShowLibInfo(const Book* book, const Reader* reader);
功能:接受两个形参,分别是图书的链表地址,读者的链表地址,并遍历两个链表,显示出图书的数量和读者的数量
```
```
## C3查找图书馆藏书信息模块
1) 函数原形: void ShowLibBook(Book* book);
2) 功能: 接受一个形参:图书的链表地址,遍历该链表,显示出所有图书的信息
```
```
## C4存入新书信息模块
1) 函数原形: Book* AddBook(Book* book);
2) 功能: 接受一个形参:图书的链表地址,利用尾插对链表进行修改,添加图书
```
```
## C5:旧书处理信息模块
1函数原形: Book* DealoldBook(Book* book);
2) 功能: 接受一个形参:图书链表的地址,遍历该链表,用书的编号进行匹配,找到该图书后删除该图书,否则返回
```
```
## C6:查找图书信息模块
1函数原形: void foundBook(Book* book);
2) 功能:接受一个形参:图书链表的地址,遍历该链表,用书的编号进行匹配,找到该图书后显示该图书,否则返回
```
```
## C7:查询读者借阅信息模块
1函数原形: void foundReader_Info(Reader* reader);
2) 功能: 接受一个形参:读者链表的地址,遍历该链表,用读者的编号进行匹配,找到该读者显示该读者的信息,否则返回
```
```
## C8:查询读者借书模块
1函数原形: void foundReaderInfo(Reader* reader);
2功能: 接受一个形参:读者链表的地址,遍历该链表,用读者的编号进行匹配,找到该读者显示该读者的借阅信息,否则返回
```
```
## C9:读者借书模块
1)函数原形: Reader* LendBook(Reader* reader, Book* book);
2)功能:接受两个形参:读者链表地址和图书链表地址,用读者的编号进行匹配,找到该读者后,用图书的编号进行匹配,进行借书,否则返回
```
```
## C10:读者还书模块
函数原形void returnBook(Reader* reader, Book* book);
功能:接受两个形参:读者链表地址和图书链表地址,用读者的编号进行匹配,找到该读者后,用图书的编号进行匹配,进行还书,否则返回
```
```
## C11:保存信息模块
1函数原形: void save(Book* book);
2) 功能接受一个形参book的链表地址新建一个文件将链表中的信息保存到硬盘中
```
```
## C12:读取信息模块
1函数原形: Book* read1();
2) 功能打开一个文件将文件中的信息读取到内存中并返回一个Book类型的指针
```
```
## 概要设计
系统主要为开始界面和数据处理两大模块
开始界面即显示主要功能
数据处理包括:
查询图书馆的总信息
查询图书馆藏书信息
存入新书
旧书处理
根据书名检索书刊信息
查询读者的借阅信息
查询读者信息
读者借书
读者还书
文件保存
从文件读取
上述各模块通过主程序main进行调用系统模块图如下:
![](images/text.drawio.svg)
## 详细设计
针对概要设计
C2:void ShowLibInfo(const Book* book, const Reader* reader);\\查询图书馆的总信息
C3:void ShowLibBook(Book* book);\\查询图书馆藏书信息
C4:Book* AddBook(Book* book);\\存入新书
C5:Book* DealoldBook(Book* book);\\旧书处理
C6:void foundBook(Book* book);\\根据书名检索书刊信息
C7:void foundReader_Info(Reader* reader);\\查询读者的借阅信息
C8:void foundReaderInfo(Reader* reader);\\查询读者信息
C9:Reader* LendBook(Reader* reader, Book* book);\\读者借书
C10:void returnBook(Reader* reader, Book* book);\\读者还书
C11:void save(Book* book);\\文件保存
C12:Book* read1();\\从文件读取