From bf6746e4a143f12d73eb72c349f652c31fa9e73e Mon Sep 17 00:00:00 2001
From: fei liang rong <1057432755@qq.com>
Date: Sun, 23 Apr 2023 18:56:25 +0800
Subject: [PATCH 1/6] 123
---
README.md | 6 +-
picture-add.drawio.svg | 111 ++++++++++++++
picture-main.drawio.svg | 312 ++++++++++++++++++++++++++++++++++++++++
picture-save.drawio.svg | 76 ++++++++++
4 files changed, 502 insertions(+), 3 deletions(-)
create mode 100644 picture-add.drawio.svg
create mode 100644 picture-main.drawio.svg
create mode 100644 picture-save.drawio.svg
diff --git a/README.md b/README.md
index 09d8378..5617242 100644
--- a/README.md
+++ b/README.md
@@ -358,7 +358,7 @@ Step 2.5: if c == CMD_PRINT then 打印数据
Step 2.6:
-
+
#### save_data
@@ -370,7 +370,7 @@ Step 4: 将所有库存记录写入文件
Step 5: 关闭文件
-
+
#### add_data
@@ -381,7 +381,7 @@ Step 4: 输入学生名和学生数量
Step 5: 添加新学生到数据
Step 6: 提示添加成功
-
+
### query_data
diff --git a/picture-add.drawio.svg b/picture-add.drawio.svg
new file mode 100644
index 0000000..a97cf47
--- /dev/null
+++ b/picture-add.drawio.svg
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/picture-main.drawio.svg b/picture-main.drawio.svg
new file mode 100644
index 0000000..bf0d2cc
--- /dev/null
+++ b/picture-main.drawio.svg
@@ -0,0 +1,312 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/picture-save.drawio.svg b/picture-save.drawio.svg
new file mode 100644
index 0000000..e60694f
--- /dev/null
+++ b/picture-save.drawio.svg
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From 792e18807c5dd9ef378d289851aaef679bb69f4b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E5=B2=B1=E7=91=BE?= <3198996150@qq.com>
Date: Sun, 23 Apr 2023 19:07:30 +0800
Subject: [PATCH 2/6] 1
---
README1.md | 894 ++++++++++++++++++++++++++---------------------------
1 file changed, 447 insertions(+), 447 deletions(-)
diff --git a/README1.md b/README1.md
index ce0bfa3..cc30acc 100644
--- a/README1.md
+++ b/README1.md
@@ -1,447 +1,447 @@
-# 图书管理系统
-
-2023年4月22日
-
-姚震、金雨佳、宋岱瑾、费良荣
-
-## 项目简介
-
-本系统是程序设计与问题求解课程设计项目,实现了库存零件 CSV 格式数据文件的读取和保存,以及数据的增删改查(CRUD)、排序和图表显示等功能。项目采用 C 语言编程实现,在 VS Code 集成开发环境(IDE)中用 GCC 进行编译。系统采用模块化设计,程序结构清晰,采用菜单驱动的命令行界面,操作便捷,能够用 CSV 格式读取和保存数据,通用性强,能够用图表展示数据,直观清楚。
-
-下载地址:https://gitee.com/wangqian12345/students
-
-项目开发过程中采用 Kanban(看板)进行任务管理和分工协作,并使用 Git 对程序代码和文档进行版本管理。任务分工情况如下:
-
-| 任务 | 设计 | 开发 | 测试 | 文档 |
-| ---- | ---- | ---- | ---- | ---- |
-| C1-C3 菜单驱动的用户界面 | 宋岱瑾 | 宋岱瑾 | 金雨佳 | 宋岱瑾 |
-| C4 添加图书记录 | 姚震 | 姚震 | 费良荣 | 姚震 |
-| C5 查询图书记录 | 金雨佳 | 金雨佳 | 宋岱瑾 | 金雨佳 |
-| C6 打印图书列表 | 金雨佳 | 金雨佳 | 姚震 | 金雨佳 |
-| C7 修改图书记录 | 费良荣 | 费良荣 | 宋岱瑾 | 费良荣 |
-| C8 删除图书记录 | 姚震 | 姚震 | 费良荣 | 姚震 |
-| C9 图书记录排序 | 姚震 | 姚震 | 金雨佳 | 姚震 |
-| C10 从文件中读取图书记录 | 费良荣 | 费良荣 | 宋岱瑾 | 费良荣 |
-| C11 将图书保存到文件 | 宋岱瑾 | 宋岱瑾 | 费良荣 | 宋岱瑾 |
-| C12 以图表方式显示图书记录 | 宋岱瑾 | 宋岱瑾 | 金雨佳. | 宋岱瑾 |
-
-每个成员的工作量(百分比):
-
-| 姚震 | 金雨佳 | 宋岱瑾 | 费良荣 |
-| ---- | ---- | ---- | ---- |
-| 25 | 25 | 25 | 25 |
-
-
-## 关于图书管理系统
-
-设计一个图书管理系统,要求采用命令行菜单界面进行交互,具备读取、保存、打印、查询、修改、插入、删除和排序等基本功能,能够以表格和图表形式展示数据,采用 CSV 格式保存数据。
-
-系统的功能性需求:
-- 数据的读取、保存、打印、查询、修改、插入、删除、排序和图表展示。
-
-系统的非功能性需求:
-- 菜单驱动的命令行交互界面。
-
-
-## 需求分析
-
-分析系统的功能需求和界面需求,编制用户手册如下。
-
-#### C1: 启动程序
-
-命令行中执行命令 `./app`,系统启动,显示提示信息,然后显示功能菜单,等待用户输入命令。
-```
-学生成绩管理系统启动
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:
-```
-
-
-
-#### C2: 显示命令菜单
-
-```
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:
-```
-
-
-
-#### C3: 退出程序
-
-选择菜单命令 `0`,再输入 `y` 确认,则退出程序。
-
-```
-请选择:0
-确定要退出吗?(Y/N): y
-程序退出
-```
-
-
-
-#### C4: 添加记录
-
-选择菜单命令 `5`,提示输入图书编号,若该图书不存在,则继续输入图书名、图书编号、图书借阅次数,并提示完成;若图书编号已存在,则提示学图书已存在,并结束。
-
-```
-请选择:5
-输入学生学号:101
-输入学生姓名:李
-输入学生成绩:80
-学生 101 已添加
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:5
-输入学生学号:101
-学生已存在.
-```
-
-
-#### C5: 查询图书记录
-
-选择菜单命令 `4`,提示输入图书编号,若该图书存在,则输出图书信息;否则提示图书不存在并结束。
-
-```
-请选择:4
-输入学生学号:101
-学生学号:101
-学生姓名:李
-学生成绩:80
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:4
-输入学生学号:100
-学生不存在.
-
-```
-
-
-
-#### C6: 打印图书列表
-
-选择菜单命令 `3`,打印
-
-```
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 101 | 李 | 80 |
--------------------------------------------------------
-
-```
-
-
-
-#### C7: 修改图书记录
-
-选择菜单命令 `6`,根据提示输入图书编号,若图书存在,则继续输入新的图书编号和图书,并修改图书记录;否则,提示图书不存在并结束。
-
-```
-请选择:6
-输入学生学号:101
-输入学生姓名:张
-输入学生成绩:90
-学生 101 已更新
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 101 | 张 | 90 |
--------------------------------------------------------
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:6
-输入学生学号:100
-学生不存在.
-
-```
-
-
-
-#### C8: 删除图书记录
-
-选择菜单命令 `7`,根据提示输入图书编号,若图书存在,则删除之;否则提示图书不存在并结束。
-
-```
-请选择:7
-输入学生学号:100
-学生不存在.
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:7
-输入学生学号:101
-学生 101 已删除
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
--------------------------------------------------------
-
-```
-
-
-
-#### C9: 图书记录排序
-
-选择菜单命令 `8`,对库存记录按图书借阅次数由高到低排序,若次数相同,则按编号从小到大排序。
-
-```
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 101 | 李 | 80 |
-| 100 | 张 | 90 |
--------------------------------------------------------
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:8
-排序
-排序已完成
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 100 | 张 | 90 |
-| 101 | 李 | 80 |
--------------------------------------------------------
-
-```
-
-
-
-#### C10: 从文件中读取图书记录
-
-选择菜单命令 `1`,提示输入文件名,若文件存在,则打开文件读取 CSV 格式保存的所有库存记录;否则,若文件不存在,则给出错误信息并结束。
-
-假设文件 `a.csv` 中,以 CSV (Comma-Separated Values)格式保存了如下记录:
-
-```
-103,张,80
-104,李,88
-101,王,90
-102,樊,100
-```
-
-则读取记录的过程如下:
-
-```
-请选择:1
-读取数据
-请输入文件名:a.csv
-读取 4 记录
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 103 | 张 | 80 |
-| 104 | 李 | 88 |
-| 101 | 王 | 90 |
-| 102 | 樊 | 100 |
--------------------------------------------------------
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:1
-读取数据
-请输入文件名:a
-a: No such file or directory
-
-```
-
-
-
-#### C11: 将图书保存保存到文件
-
-选择菜单命令 `2`,提示输入文件名,将所有库存记录以 CSV 格式保存到指定的文件中。
-
-```
-请选择:2
-保存数据
-请输入文件名:b.csv
-保存 4 记录
-
-```
-
-
-
-#### C12: 以图表方式显示图书记录
-
-选择菜单命令 `9`,以图表方式显示库存记录。
-
-```
-请选择:9
-图表
- 103 : 张 | ******** (80)
- 104 : 李 | ************ (88)
- 101 : 王 | ******************** (90)
- 102 : 樊 | ********** (100)
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-```
-
-
-## 概要设计
-
-系统主要分为用户界面和数据处理两大模块。
-用户界面模块包括系统初始化(init),显示菜单(display_menu),选择菜单命令(make_choice)、确认(confirm)、退出(quit)等子模块。
-数据处理模块包括读取数据(read_data)、保存数据(save_data)、打印数据(print_data)、查询数据(query_data)、添加数据(add_data)、更新数据(update_data)、删除数据(delete_data)、数据排序(sort_data)和生成图表(make_chart)等子模块。其中查询、添加、更新和删除数据还会用到根据编号查询数据的方法(find)。
-
-上述各模块通过主程序(main)进行调用,系统模块图如下。
-
-
-
-
-各模块的主要功能如下:
-
-#### main
-
-系统主函数模块,显示菜单,根据用户选择的菜单命令,执行相关操作。
-
-#### init
-
-系统初始化。
-
-#### display_menu
-
-显示菜单命令。
-
-
-## 详细设计
-
-针对概要设计
-
-#### main
-
-Step 1: 初始化
-Step 2: 根据用户选择的命令执行对应的操作
-Step 2.1: 显示菜单
-Step 2.2: 选择菜单命令 c
-Step 2.3: if c == CMD_READ then 读取数据
-Step 2.4: if c == CMD_SAVE then 保存数据
-Step 2.5: if c == CMD_PRINT then 打印数据
-Step 2.6:
-
-
-
-
-
-#### save_data
-
-Step 1: 输入文件名
-Step 2: 打开文件
-Step 3: if 打开文件失败 then 提示打开文件失败并结束
-Step 4: 将所有库存记录写入文件
-Step 5: 关闭文件
-
-
-
-
-#### add_data
-
-Step 1: if 数据库满 then 提示数据库满并结束
-Step 2: 输入图书编号
-Step 3: if 图书已存在 then 提示图书已存在并结束
-Step 4: 输入图书名和图书数量
-Step 5: 添加新图书到数据
-Step 6: 提示添加成功
-
-
-
-
-### query_data
-Step 1:提示输入图书编号,并输入编号
-Step 2:for i = 0 to num_parts开始查询
-Step 3:查询最后一个图书结束
-Step 4:if未查询到提示图书不存在
-Step 5:else打印图书信息
-
-
-
-
-### printf_data
-Step 1:打印图书编号和图书名
-Step 2:for i = 1 to num_parts
-Step 3:打印借阅次数
-
-
-
-#### update_data
-Step 1:输入图书编号
-Step 2:查找图书是否已录入
-Step 3:if 不存在then 直接退出
-Step 4:else 输出图书信息
-
-
-#### delete_data
-
-Step 1: 输入图书编号
-Step 2: 查找图书所在的位置
-Step 3: if 没有该图书then 则输出图书不存在
-Step 4: 将查找到的图书后面的依次往前移动信息
-Step 5: 将图书总数减一
-Step 6: 提示删除成功
-
-
-
-#### sort_data
-
-Step 1: 进行冒泡排序
-Step 2: 将按图书借阅次数排序,若前面的比后面的大,则交换
-Step 3: 每次遍历记录是否交换,若没有交换,则排序结束
-Step 4: 若借阅次数相同,则按照编号从小到大排序
-
-
-
-#### read_data
-Step 1:输入文件名
-Step 2:查看输入的文件名是否和已有的文化相匹配
-Step 3:若匹配成功,则打开文件
-Step 4:若不成功,则返回错误值
-Step 5:打开后利用循环,依次输出文件里各个学生的学号,姓名和成绩;
-Step 6:关闭文件
-
-
-
-#### make_chart
-Step 1:打印表头
-Step 2:循环打印图书名和图书编号
-Step 3:循环套循环打印图表
-Step 4:打印结束后换行继续循环
-Step 5:打印成功
-
+# 图书管理系统
+
+2023年4月22日
+
+姚震、金雨佳、宋岱瑾、费良荣
+
+## 项目简介
+
+本系统是程序设计与问题求解课程设计项目,实现了库存零件 CSV 格式数据文件的读取和保存,以及数据的增删改查(CRUD)、排序和图表显示等功能。项目采用 C 语言编程实现,在 VS Code 集成开发环境(IDE)中用 GCC 进行编译。系统采用模块化设计,程序结构清晰,采用菜单驱动的命令行界面,操作便捷,能够用 CSV 格式读取和保存数据,通用性强,能够用图表展示数据,直观清楚。
+
+下载地址:https://gitee.com/wangqian12345/students
+
+项目开发过程中采用 Kanban(看板)进行任务管理和分工协作,并使用 Git 对程序代码和文档进行版本管理。任务分工情况如下:
+
+| 任务 | 设计 | 开发 | 测试 | 文档 |
+| ---- | ---- | ---- | ---- | ---- |
+| C1-C3 菜单驱动的用户界面 | 宋岱瑾 | 宋岱瑾 | 金雨佳 | 宋岱瑾 |
+| C4 添加图书记录 | 姚震 | 姚震 | 费良荣 | 姚震 |
+| C5 查询图书记录 | 金雨佳 | 金雨佳 | 宋岱瑾 | 金雨佳 |
+| C6 打印图书列表 | 金雨佳 | 金雨佳 | 姚震 | 金雨佳 |
+| C7 修改图书记录 | 费良荣 | 费良荣 | 宋岱瑾 | 费良荣 |
+| C8 删除图书记录 | 姚震 | 姚震 | 费良荣 | 姚震 |
+| C9 图书记录排序 | 姚震 | 姚震 | 金雨佳 | 姚震 |
+| C10 从文件中读取图书记录 | 费良荣 | 费良荣 | 宋岱瑾 | 费良荣 |
+| C11 将图书保存到文件 | 宋岱瑾 | 宋岱瑾 | 费良荣 | 宋岱瑾 |
+| C12 以图表方式显示图书记录 | 宋岱瑾 | 宋岱瑾 | 金雨佳. | 宋岱瑾 |
+
+每个成员的工作量(百分比):
+
+| 姚震 | 金雨佳 | 宋岱瑾 | 费良荣 |
+| ---- | ---- | ---- | ---- |
+| 25 | 25 | 25 | 25 |
+
+
+## 关于图书管理系统
+
+设计一个图书管理系统,要求采用命令行菜单界面进行交互,具备读取、保存、打印、查询、修改、插入、删除和排序等基本功能,能够以表格和图表形式展示数据,采用 CSV 格式保存数据。
+
+系统的功能性需求:
+- 数据的读取、保存、打印、查询、修改、插入、删除、排序和图表展示。
+
+系统的非功能性需求:
+- 菜单驱动的命令行交互界面。
+
+
+## 需求分析
+
+分析系统的功能需求和界面需求,编制用户手册如下。
+
+#### C1: 启动程序
+
+命令行中执行命令 `./app`,系统启动,显示提示信息,然后显示功能菜单,等待用户输入命令。
+```
+学生成绩管理系统启动
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:
+```
+
+
+
+#### C2: 显示命令菜单
+
+```
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:
+```
+
+
+
+#### C3: 退出程序
+
+选择菜单命令 `0`,再输入 `y` 确认,则退出程序。
+
+```
+请选择:0
+确定要退出吗?(Y/N): y
+程序退出
+```
+
+
+
+#### C4: 添加记录
+
+选择菜单命令 `5`,提示输入图书编号,若该图书不存在,则继续输入图书名、图书编号、图书借阅次数,并提示完成;若图书编号已存在,则提示学图书已存在,并结束。
+
+```
+请选择:5
+输入学生学号:101
+输入学生姓名:李
+输入学生成绩:80
+学生 101 已添加
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:5
+输入学生学号:101
+学生已存在.
+```
+
+
+#### C5: 查询图书记录
+
+选择菜单命令 `4`,提示输入图书编号,若该图书存在,则输出图书信息;否则提示图书不存在并结束。
+
+```
+请选择:4
+输入学生学号:101
+学生学号:101
+学生姓名:李
+学生成绩:80
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:4
+输入学生学号:100
+学生不存在.
+
+```
+
+
+
+#### C6: 打印图书列表
+
+选择菜单命令 `3`,打印
+
+```
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 101 | 李 | 80 |
+-------------------------------------------------------
+
+```
+
+
+
+#### C7: 修改图书记录
+
+选择菜单命令 `6`,根据提示输入图书编号,若图书存在,则继续输入新的图书编号和图书,并修改图书记录;否则,提示图书不存在并结束。
+
+```
+请选择:6
+输入学生学号:101
+输入学生姓名:张
+输入学生成绩:90
+学生 101 已更新
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 101 | 张 | 90 |
+-------------------------------------------------------
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:6
+输入学生学号:100
+学生不存在.
+
+```
+
+
+
+#### C8: 删除图书记录
+
+选择菜单命令 `7`,根据提示输入图书编号,若图书存在,则删除之;否则提示图书不存在并结束。
+
+```
+请选择:7
+输入学生学号:100
+学生不存在.
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:7
+输入学生学号:101
+学生 101 已删除
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+-------------------------------------------------------
+
+```
+
+
+
+#### C9: 图书记录排序
+
+选择菜单命令 `8`,对库存记录按图书借阅次数由高到低排序,若次数相同,则按编号从小到大排序。
+
+```
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 101 | 李 | 80 |
+| 100 | 张 | 90 |
+-------------------------------------------------------
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:8
+排序
+排序已完成
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 100 | 张 | 90 |
+| 101 | 李 | 80 |
+-------------------------------------------------------
+
+```
+
+
+
+#### C10: 从文件中读取图书记录
+
+选择菜单命令 `1`,提示输入文件名,若文件存在,则打开文件读取 CSV 格式保存的所有库存记录;否则,若文件不存在,则给出错误信息并结束。
+
+假设文件 `a.csv` 中,以 CSV (Comma-Separated Values)格式保存了如下记录:
+
+```
+103,张,80
+104,李,88
+101,王,90
+102,樊,100
+```
+
+则读取记录的过程如下:
+
+```
+请选择:1
+读取数据
+请输入文件名:a.csv
+读取 4 记录
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 103 | 张 | 80 |
+| 104 | 李 | 88 |
+| 101 | 王 | 90 |
+| 102 | 樊 | 100 |
+-------------------------------------------------------
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:1
+读取数据
+请输入文件名:a
+a: No such file or directory
+
+```
+
+
+
+#### C11: 将图书保存保存到文件
+
+选择菜单命令 `2`,提示输入文件名,将所有库存记录以 CSV 格式保存到指定的文件中。
+
+```
+请选择:2
+保存数据
+请输入文件名:b.csv
+保存 4 记录
+
+```
+
+
+
+#### C12: 以图表方式显示图书记录
+
+选择菜单命令 `9`,以图表方式显示库存记录。
+
+```
+请选择:9
+图表
+ 103 : 张 | ******** (80)
+ 104 : 李 | ************ (88)
+ 101 : 王 | ******************** (90)
+ 102 : 樊 | ********** (100)
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+```
+
+
+## 概要设计
+
+系统主要分为用户界面和数据处理两大模块。
+用户界面模块包括系统初始化(init),显示菜单(display_menu),选择菜单命令(make_choice)、确认(confirm)、退出(quit)等子模块。
+数据处理模块包括读取数据(read_data)、保存数据(save_data)、打印数据(print_data)、查询数据(query_data)、添加数据(add_data)、更新数据(update_data)、删除数据(delete_data)、数据排序(sort_data)和生成图表(make_chart)等子模块。其中查询、添加、更新和删除数据还会用到根据编号查询数据的方法(find)。
+
+上述各模块通过主程序(main)进行调用,系统模块图如下。
+
+
+
+
+各模块的主要功能如下:
+
+#### main
+
+系统主函数模块,显示菜单,根据用户选择的菜单命令,执行相关操作。
+
+#### init
+
+系统初始化。
+
+#### display_menu
+
+显示菜单命令。
+
+
+## 详细设计
+
+针对概要设计
+
+#### main
+
+Step 1: 初始化
+Step 2: 根据用户选择的命令执行对应的操作
+Step 2.1: 显示菜单
+Step 2.2: 选择菜单命令 c
+Step 2.3: if c == CMD_READ then 读取数据
+Step 2.4: if c == CMD_SAVE then 保存数据
+Step 2.5: if c == CMD_PRINT then 打印数据
+Step 2.6:
+
+
+
+
+
+#### save_data
+
+Step 1: 输入文件名
+Step 2: 打开文件
+Step 3: if 打开文件失败 then 提示打开文件失败并结束
+Step 4: 将所有库存记录写入文件
+Step 5: 关闭文件
+
+
+
+
+#### add_data
+
+Step 1: if 数据库满 then 提示数据库满并结束
+Step 2: 输入图书编号
+Step 3: if 图书已存在 then 提示图书已存在并结束
+Step 4: 输入图书名和图书数量
+Step 5: 添加新图书到数据
+Step 6: 提示添加成功
+
+
+
+
+### query_data
+Step 1:提示输入图书编号,并输入编号
+Step 2:for i = 0 to num_parts开始查询
+Step 3:查询最后一个图书结束
+Step 4:if未查询到提示图书不存在
+Step 5:else打印图书信息
+
+
+
+
+### printf_data
+Step 1:打印图书编号和图书名
+Step 2:for i = 1 to num_parts
+Step 3:打印借阅次数
+
+
+
+#### update_data
+Step 1:输入图书编号
+Step 2:查找图书是否已录入
+Step 3:if 不存在then 直接退出
+Step 4:else 输出图书信息
+
+
+#### delete_data
+
+Step 1: 输入图书编号
+Step 2: 查找图书所在的位置
+Step 3: if 没有该图书then 则输出图书不存在
+Step 4: 将查找到的图书后面的依次往前移动信息
+Step 5: 将图书总数减一
+Step 6: 提示删除成功
+
+
+
+#### sort_data
+
+Step 1: 进行冒泡排序
+Step 2: 将按图书借阅次数排序,若前面的比后面的大,则交换
+Step 3: 每次遍历记录是否交换,若没有交换,则排序结束
+Step 4: 若借阅次数相同,则按照编号从小到大排序
+
+
+
+#### read_data
+Step 1:输入文件名
+Step 2:查看输入的文件名是否和已有的文化相匹配
+Step 3:若匹配成功,则打开文件
+Step 4:若不成功,则返回错误值
+Step 5:打开后利用循环,依次输出文件里各个学生的学号,姓名和成绩;
+Step 6:关闭文件
+
+
+
+#### make_chart
+Step 1:打印表头
+Step 2:循环打印图书名和图书编号
+Step 3:循环套循环打印图表
+Step 4:打印结束后换行继续循环
+Step 5:打印成功
+
From 5e39fe7183a34912d2f682c1c42166890c05a055 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E5=B2=B1=E7=91=BE?= <3198996150@qq.com>
Date: Sun, 23 Apr 2023 19:07:54 +0800
Subject: [PATCH 3/6] =?UTF-8?q?=E6=88=91=E8=A1=8C=E4=BA=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README1.md | 6 +++---
make_chart.svg | 1 +
read_data.svg | 2 ++
3 files changed, 6 insertions(+), 3 deletions(-)
create mode 100644 make_chart.svg
create mode 100644 read_data.svg
diff --git a/README1.md b/README1.md
index cc30acc..2bddb79 100644
--- a/README1.md
+++ b/README1.md
@@ -433,9 +433,9 @@ Step 1:输入文件名
Step 2:查看输入的文件名是否和已有的文化相匹配
Step 3:若匹配成功,则打开文件
Step 4:若不成功,则返回错误值
-Step 5:打开后利用循环,依次输出文件里各个学生的学号,姓名和成绩;
+Step 5:打开后利用循环,依次输出文件里各个图书信息;
Step 6:关闭文件
-
+
#### make_chart
@@ -444,4 +444,4 @@ Step 2:循环打印图书名和图书编号
Step 3:循环套循环打印图表
Step 4:打印结束后换行继续循环
Step 5:打印成功
-
+
diff --git a/make_chart.svg b/make_chart.svg
new file mode 100644
index 0000000..7429698
--- /dev/null
+++ b/make_chart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/read_data.svg b/read_data.svg
new file mode 100644
index 0000000..7757f3e
--- /dev/null
+++ b/read_data.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
From dfc14611c94674943f030f1b19d33b445c89cebf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E5=B2=B1=E7=91=BE?= <3198996150@qq.com>
Date: Sun, 23 Apr 2023 19:24:50 +0800
Subject: [PATCH 4/6] 1
---
make_chart.drawio.svg | 67 -------------------------------------------
read_data.drawio.svg | 58 -------------------------------------
2 files changed, 125 deletions(-)
delete mode 100644 make_chart.drawio.svg
delete mode 100644 read_data.drawio.svg
diff --git a/make_chart.drawio.svg b/make_chart.drawio.svg
deleted file mode 100644
index a6a33c3..0000000
--- a/make_chart.drawio.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/read_data.drawio.svg b/read_data.drawio.svg
deleted file mode 100644
index 0a81888..0000000
--- a/read_data.drawio.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
From 1d0bc13ce2598a10aafb7940cfff4012b5fde8c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E5=B2=B1=E7=91=BE?= <3198996150@qq.com>
Date: Sun, 23 Apr 2023 19:25:55 +0800
Subject: [PATCH 5/6] 1
---
README.md | 447 ------------------------------------------------------
1 file changed, 447 deletions(-)
delete mode 100644 README.md
diff --git a/README.md b/README.md
deleted file mode 100644
index 09d8378..0000000
--- a/README.md
+++ /dev/null
@@ -1,447 +0,0 @@
-# 图书管理系统
-
-2023年4月22日
-
-姚震、金雨佳、宋岱瑾、费良荣
-
-## 项目简介
-
-本系统是程序设计与问题求解课程设计项目,实现了库存零件 CSV 格式数据文件的读取和保存,以及数据的增删改查(CRUD)、排序和图表显示等功能。项目采用 C 语言编程实现,在 VS Code 集成开发环境(IDE)中用 GCC 进行编译。系统采用模块化设计,程序结构清晰,采用菜单驱动的命令行界面,操作便捷,能够用 CSV 格式读取和保存数据,通用性强,能够用图表展示数据,直观清楚。
-
-下载地址:https://gitee.com/wangqian12345/students
-
-项目开发过程中采用 Kanban(看板)进行任务管理和分工协作,并使用 Git 对程序代码和文档进行版本管理。任务分工情况如下:
-
-| 任务 | 设计 | 开发 | 测试 | 文档 |
-| ---- | ---- | ---- | ---- | ---- |
-| C1-C3 菜单驱动的用户界面 | 宋岱瑾 | 宋岱瑾 | 金雨佳 | 宋岱瑾 |
-| C4 添加图书记录 | 姚震 | 姚震 | 费良荣 | 姚震 |
-| C5 查询图书记录 | 金雨佳 | 金雨佳 | 宋岱瑾 | 金雨佳 |
-| C6 打印图书列表 | 金雨佳 | 金雨佳 | 姚震 | 金雨佳 |
-| C7 修改图书记录 | 费良荣 | 费良荣 | 宋岱瑾 | 费良荣 |
-| C8 删除图书记录 | 姚震 | 姚震 | 费良荣 | 姚震 |
-| C9 图书记录排序 | 姚震 | 姚震 | 金雨佳 | 姚震 |
-| C10 从文件中读取图书记录 | 费良荣 | 费良荣 | 宋岱瑾 | 费良荣 |
-| C11 将图书保存到文件 | 宋岱瑾 | 宋岱瑾 | 费良荣 | 宋岱瑾 |
-| C12 以图表方式显示图书记录 | 宋岱瑾 | 宋岱瑾 | 金雨佳. | 宋岱瑾 |
-
-每个成员的工作量(百分比):
-
-| 姚震 | 金雨佳 | 宋岱瑾 | 费良荣 |
-| ---- | ---- | ---- | ---- |
-| 30| 20 | 30 | 20 |
-
-
-## 关于图书管理系统
-
-设计一个图书管理系统,要求采用命令行菜单界面进行交互,具备读取、保存、打印、查询、修改、插入、删除和排序等基本功能,能够以表格和图表形式展示数据,采用 CSV 格式保存数据。
-
-系统的功能性需求:
-- 数据的读取、保存、打印、查询、修改、插入、删除、排序和图表展示。
-
-系统的非功能性需求:
-- 菜单驱动的命令行交互界面。
-
-
-## 需求分析
-
-分析系统的功能需求和界面需求,编制用户手册如下。
-
-#### C1: 启动程序
-
-命令行中执行命令 `./app`,系统启动,显示提示信息,然后显示功能菜单,等待用户输入命令。
-```
-学生成绩管理系统启动
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:
-```
-
-
-
-#### C2: 显示命令菜单
-
-```
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:
-```
-
-
-
-#### C3: 退出程序
-
-选择菜单命令 `0`,再输入 `y` 确认,则退出程序。
-
-```
-请选择:0
-确定要退出吗?(Y/N): y
-程序退出
-```
-
-
-
-#### C4: 添加记录
-
-选择菜单命令 `5`,提示输入图书编号,若该图书不存在,则继续输入图书名、图书编号、图书借阅次数,并提示完成;若图书编号已存在,则提示学图书已存在,并结束。
-
-```
-请选择:5
-输入学生学号:101
-输入学生姓名:李
-输入学生成绩:80
-学生 101 已添加
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:5
-输入学生学号:101
-学生已存在.
-```
-
-
-#### C5: 查询图书记录
-
-选择菜单命令 `4`,提示输入图书编号,若该图书存在,则输出图书信息;否则提示图书不存在并结束。
-
-```
-请选择:4
-输入学生学号:101
-学生学号:101
-学生姓名:李
-学生成绩:80
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:4
-输入学生学号:100
-学生不存在.
-
-```
-
-
-
-#### C6: 打印图书列表
-
-选择菜单命令 `3`,打印
-
-```
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 101 | 李 | 80 |
--------------------------------------------------------
-
-```
-
-
-
-#### C7: 修改图书记录
-
-选择菜单命令 `6`,根据提示输入图书编号,若图书存在,则继续输入新的图书编号和图书,并修改图书记录;否则,提示图书不存在并结束。
-
-```
-请选择:6
-输入学生学号:101
-输入学生姓名:张
-输入学生成绩:90
-学生 101 已更新
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 101 | 张 | 90 |
--------------------------------------------------------
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:6
-输入学生学号:100
-学生不存在.
-
-```
-
-
-
-#### C8: 删除图书记录
-
-选择菜单命令 `7`,根据提示输入图书编号,若图书存在,则删除之;否则提示图书不存在并结束。
-
-```
-请选择:7
-输入学生学号:100
-学生不存在.
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:7
-输入学生学号:101
-学生 101 已删除
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
--------------------------------------------------------
-
-```
-
-
-
-#### C9: 图书记录排序
-
-选择菜单命令 `8`,对库存记录按图书借阅次数由高到低排序,若次数相同,则按编号从小到大排序。
-
-```
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 101 | 李 | 80 |
-| 100 | 张 | 90 |
--------------------------------------------------------
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:8
-排序
-排序已完成
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 100 | 张 | 90 |
-| 101 | 李 | 80 |
--------------------------------------------------------
-
-```
-
-
-
-#### C10: 从文件中读取图书记录
-
-选择菜单命令 `1`,提示输入文件名,若文件存在,则打开文件读取 CSV 格式保存的所有库存记录;否则,若文件不存在,则给出错误信息并结束。
-
-假设文件 `a.csv` 中,以 CSV (Comma-Separated Values)格式保存了如下记录:
-
-```
-103,张,80
-104,李,88
-101,王,90
-102,樊,100
-```
-
-则读取记录的过程如下:
-
-```
-请选择:1
-读取数据
-请输入文件名:a.csv
-读取 4 记录
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:3
--------------------------------------------------------
-| NUMBER | NAME | ON HAND |
--------------------------------------------------------
-| 103 | 张 | 80 |
-| 104 | 李 | 88 |
-| 101 | 王 | 90 |
-| 102 | 樊 | 100 |
--------------------------------------------------------
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-请选择:1
-读取数据
-请输入文件名:a
-a: No such file or directory
-
-```
-
-
-
-#### C11: 将图书保存保存到文件
-
-选择菜单命令 `2`,提示输入文件名,将所有库存记录以 CSV 格式保存到指定的文件中。
-
-```
-请选择:2
-保存数据
-请输入文件名:b.csv
-保存 4 记录
-
-```
-
-
-
-#### C12: 以图表方式显示图书记录
-
-选择菜单命令 `9`,以图表方式显示库存记录。
-
-```
-请选择:9
-图表
- 103 : 张 | ******** (80)
- 104 : 李 | ************ (88)
- 101 : 王 | ******************** (90)
- 102 : 樊 | ********** (100)
-
-1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
-6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
-
-```
-
-
-## 概要设计
-
-系统主要分为用户界面和数据处理两大模块。
-用户界面模块包括系统初始化(init),显示菜单(display_menu),选择菜单命令(make_choice)、确认(confirm)、退出(quit)等子模块。
-数据处理模块包括读取数据(read_data)、保存数据(save_data)、打印数据(print_data)、查询数据(query_data)、添加数据(add_data)、更新数据(update_data)、删除数据(delete_data)、数据排序(sort_data)和生成图表(make_chart)等子模块。其中查询、添加、更新和删除数据还会用到根据编号查询数据的方法(find)。
-
-上述各模块通过主程序(main)进行调用,系统模块图如下。
-
-
-
-
-各模块的主要功能如下:
-
-#### main
-
-系统主函数模块,显示菜单,根据用户选择的菜单命令,执行相关操作。
-
-#### init
-
-系统初始化。
-
-#### display_menu
-
-显示菜单命令。
-
-
-## 详细设计
-
-针对概要设计
-
-#### main
-
-Step 1: 初始化
-Step 2: 根据用户选择的命令执行对应的操作
-Step 2.1: 显示菜单
-Step 2.2: 选择菜单命令 c
-Step 2.3: if c == CMD_READ then 读取数据
-Step 2.4: if c == CMD_SAVE then 保存数据
-Step 2.5: if c == CMD_PRINT then 打印数据
-Step 2.6:
-
-
-
-
-
-#### save_data
-
-Step 1: 输入文件名
-Step 2: 打开文件
-Step 3: if 打开文件失败 then 提示打开文件失败并结束
-Step 4: 将所有库存记录写入文件
-Step 5: 关闭文件
-
-
-
-
-#### add_data
-
-Step 1: if 数据库满 then 提示数据库满并结束
-Step 2: 输入学生编号
-Step 3: if 学生已存在 then 提示学生已存在并结束
-Step 4: 输入学生名和学生数量
-Step 5: 添加新学生到数据
-Step 6: 提示添加成功
-
-
-
-
-### query_data
-Step 1:提示输入学生学号,并输入学号
-Step 2:for i = 0 to num_parts开始查询
-Step 3:查询最后一个学生结束
-Step 4:if未查询到提示学生不存在
-Step 5:else打印学生信息
-
-
-
-
-### printf_data
-Step 1:打印学生学号和学生姓名
-Step 2:for i = 1 to num_parts
-Step 3:打印学生成绩
-
-
-
-#### update_data
-Step 1:输入学生学号
-Step 2:查找学生是否已录入
-Step 3:if 不存在then 直接退出
-Step 4:else 输出学生信息
-
-
-#### delete_data
-
-Step 1: 输入学生学号
-Step 2: 查找学生所在的位置
-Step 3: if 没有该学生 then 则输出学生不存在
-Step 4: 将查找到的学生后面的依次往前移动信息
-Step 5: 将学生总数减一
-Step 6: 提示删除成功
-
-
-
-#### sort_data
-
-Step 1: 进行冒泡排序
-Step 2: 将按照学生成绩排序,若前面的比后面的大,则交换
-Step 3: 每次遍历记录是否交换,若没有交换,则排序结束
-Step 4: 若成绩相同,则按照学号从小到大排序
-
-
-
-#### read_data
-Step 1:输入文件名
-Step 2:查看输入的文件名是否和已有的文化相匹配
-Step 3:若匹配成功,则打开文件
-Step 4:若不成功,则返回错误值
-Step 5:打开后利用循环,依次输出文件里各个学生的学号,姓名和成绩;
-Step 6:关闭文件
-
-
-
-#### make_chart
-Step 1:打印表头
-Step 2:循环打印学生姓名和学号
-Step 3:循环套循环打印图表
-Step 4:打印结束后换行继续循环
-Step 5:打印成功
-
From 453e2f3d92abf1852f1bdb73c5bc8b8745ff145e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E5=B2=B1=E7=91=BE?= <3198996150@qq.com>
Date: Sun, 23 Apr 2023 19:34:41 +0800
Subject: [PATCH 6/6] 1
---
README.md | 447 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 447 insertions(+)
create mode 100644 README.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2bddb79
--- /dev/null
+++ b/README.md
@@ -0,0 +1,447 @@
+# 图书管理系统
+
+2023年4月22日
+
+姚震、金雨佳、宋岱瑾、费良荣
+
+## 项目简介
+
+本系统是程序设计与问题求解课程设计项目,实现了库存零件 CSV 格式数据文件的读取和保存,以及数据的增删改查(CRUD)、排序和图表显示等功能。项目采用 C 语言编程实现,在 VS Code 集成开发环境(IDE)中用 GCC 进行编译。系统采用模块化设计,程序结构清晰,采用菜单驱动的命令行界面,操作便捷,能够用 CSV 格式读取和保存数据,通用性强,能够用图表展示数据,直观清楚。
+
+下载地址:https://gitee.com/wangqian12345/students
+
+项目开发过程中采用 Kanban(看板)进行任务管理和分工协作,并使用 Git 对程序代码和文档进行版本管理。任务分工情况如下:
+
+| 任务 | 设计 | 开发 | 测试 | 文档 |
+| ---- | ---- | ---- | ---- | ---- |
+| C1-C3 菜单驱动的用户界面 | 宋岱瑾 | 宋岱瑾 | 金雨佳 | 宋岱瑾 |
+| C4 添加图书记录 | 姚震 | 姚震 | 费良荣 | 姚震 |
+| C5 查询图书记录 | 金雨佳 | 金雨佳 | 宋岱瑾 | 金雨佳 |
+| C6 打印图书列表 | 金雨佳 | 金雨佳 | 姚震 | 金雨佳 |
+| C7 修改图书记录 | 费良荣 | 费良荣 | 宋岱瑾 | 费良荣 |
+| C8 删除图书记录 | 姚震 | 姚震 | 费良荣 | 姚震 |
+| C9 图书记录排序 | 姚震 | 姚震 | 金雨佳 | 姚震 |
+| C10 从文件中读取图书记录 | 费良荣 | 费良荣 | 宋岱瑾 | 费良荣 |
+| C11 将图书保存到文件 | 宋岱瑾 | 宋岱瑾 | 费良荣 | 宋岱瑾 |
+| C12 以图表方式显示图书记录 | 宋岱瑾 | 宋岱瑾 | 金雨佳. | 宋岱瑾 |
+
+每个成员的工作量(百分比):
+
+| 姚震 | 金雨佳 | 宋岱瑾 | 费良荣 |
+| ---- | ---- | ---- | ---- |
+| 25 | 25 | 25 | 25 |
+
+
+## 关于图书管理系统
+
+设计一个图书管理系统,要求采用命令行菜单界面进行交互,具备读取、保存、打印、查询、修改、插入、删除和排序等基本功能,能够以表格和图表形式展示数据,采用 CSV 格式保存数据。
+
+系统的功能性需求:
+- 数据的读取、保存、打印、查询、修改、插入、删除、排序和图表展示。
+
+系统的非功能性需求:
+- 菜单驱动的命令行交互界面。
+
+
+## 需求分析
+
+分析系统的功能需求和界面需求,编制用户手册如下。
+
+#### C1: 启动程序
+
+命令行中执行命令 `./app`,系统启动,显示提示信息,然后显示功能菜单,等待用户输入命令。
+```
+学生成绩管理系统启动
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:
+```
+
+
+
+#### C2: 显示命令菜单
+
+```
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:
+```
+
+
+
+#### C3: 退出程序
+
+选择菜单命令 `0`,再输入 `y` 确认,则退出程序。
+
+```
+请选择:0
+确定要退出吗?(Y/N): y
+程序退出
+```
+
+
+
+#### C4: 添加记录
+
+选择菜单命令 `5`,提示输入图书编号,若该图书不存在,则继续输入图书名、图书编号、图书借阅次数,并提示完成;若图书编号已存在,则提示学图书已存在,并结束。
+
+```
+请选择:5
+输入学生学号:101
+输入学生姓名:李
+输入学生成绩:80
+学生 101 已添加
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:5
+输入学生学号:101
+学生已存在.
+```
+
+
+#### C5: 查询图书记录
+
+选择菜单命令 `4`,提示输入图书编号,若该图书存在,则输出图书信息;否则提示图书不存在并结束。
+
+```
+请选择:4
+输入学生学号:101
+学生学号:101
+学生姓名:李
+学生成绩:80
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:4
+输入学生学号:100
+学生不存在.
+
+```
+
+
+
+#### C6: 打印图书列表
+
+选择菜单命令 `3`,打印
+
+```
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 101 | 李 | 80 |
+-------------------------------------------------------
+
+```
+
+
+
+#### C7: 修改图书记录
+
+选择菜单命令 `6`,根据提示输入图书编号,若图书存在,则继续输入新的图书编号和图书,并修改图书记录;否则,提示图书不存在并结束。
+
+```
+请选择:6
+输入学生学号:101
+输入学生姓名:张
+输入学生成绩:90
+学生 101 已更新
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 101 | 张 | 90 |
+-------------------------------------------------------
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:6
+输入学生学号:100
+学生不存在.
+
+```
+
+
+
+#### C8: 删除图书记录
+
+选择菜单命令 `7`,根据提示输入图书编号,若图书存在,则删除之;否则提示图书不存在并结束。
+
+```
+请选择:7
+输入学生学号:100
+学生不存在.
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:7
+输入学生学号:101
+学生 101 已删除
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+-------------------------------------------------------
+
+```
+
+
+
+#### C9: 图书记录排序
+
+选择菜单命令 `8`,对库存记录按图书借阅次数由高到低排序,若次数相同,则按编号从小到大排序。
+
+```
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 101 | 李 | 80 |
+| 100 | 张 | 90 |
+-------------------------------------------------------
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:8
+排序
+排序已完成
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 100 | 张 | 90 |
+| 101 | 李 | 80 |
+-------------------------------------------------------
+
+```
+
+
+
+#### C10: 从文件中读取图书记录
+
+选择菜单命令 `1`,提示输入文件名,若文件存在,则打开文件读取 CSV 格式保存的所有库存记录;否则,若文件不存在,则给出错误信息并结束。
+
+假设文件 `a.csv` 中,以 CSV (Comma-Separated Values)格式保存了如下记录:
+
+```
+103,张,80
+104,李,88
+101,王,90
+102,樊,100
+```
+
+则读取记录的过程如下:
+
+```
+请选择:1
+读取数据
+请输入文件名:a.csv
+读取 4 记录
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:3
+-------------------------------------------------------
+| NUMBER | NAME | ON HAND |
+-------------------------------------------------------
+| 103 | 张 | 80 |
+| 104 | 李 | 88 |
+| 101 | 王 | 90 |
+| 102 | 樊 | 100 |
+-------------------------------------------------------
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+请选择:1
+读取数据
+请输入文件名:a
+a: No such file or directory
+
+```
+
+
+
+#### C11: 将图书保存保存到文件
+
+选择菜单命令 `2`,提示输入文件名,将所有库存记录以 CSV 格式保存到指定的文件中。
+
+```
+请选择:2
+保存数据
+请输入文件名:b.csv
+保存 4 记录
+
+```
+
+
+
+#### C12: 以图表方式显示图书记录
+
+选择菜单命令 `9`,以图表方式显示库存记录。
+
+```
+请选择:9
+图表
+ 103 : 张 | ******** (80)
+ 104 : 李 | ************ (88)
+ 101 : 王 | ******************** (90)
+ 102 : 樊 | ********** (100)
+
+1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
+6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
+
+```
+
+
+## 概要设计
+
+系统主要分为用户界面和数据处理两大模块。
+用户界面模块包括系统初始化(init),显示菜单(display_menu),选择菜单命令(make_choice)、确认(confirm)、退出(quit)等子模块。
+数据处理模块包括读取数据(read_data)、保存数据(save_data)、打印数据(print_data)、查询数据(query_data)、添加数据(add_data)、更新数据(update_data)、删除数据(delete_data)、数据排序(sort_data)和生成图表(make_chart)等子模块。其中查询、添加、更新和删除数据还会用到根据编号查询数据的方法(find)。
+
+上述各模块通过主程序(main)进行调用,系统模块图如下。
+
+
+
+
+各模块的主要功能如下:
+
+#### main
+
+系统主函数模块,显示菜单,根据用户选择的菜单命令,执行相关操作。
+
+#### init
+
+系统初始化。
+
+#### display_menu
+
+显示菜单命令。
+
+
+## 详细设计
+
+针对概要设计
+
+#### main
+
+Step 1: 初始化
+Step 2: 根据用户选择的命令执行对应的操作
+Step 2.1: 显示菜单
+Step 2.2: 选择菜单命令 c
+Step 2.3: if c == CMD_READ then 读取数据
+Step 2.4: if c == CMD_SAVE then 保存数据
+Step 2.5: if c == CMD_PRINT then 打印数据
+Step 2.6:
+
+
+
+
+
+#### save_data
+
+Step 1: 输入文件名
+Step 2: 打开文件
+Step 3: if 打开文件失败 then 提示打开文件失败并结束
+Step 4: 将所有库存记录写入文件
+Step 5: 关闭文件
+
+
+
+
+#### add_data
+
+Step 1: if 数据库满 then 提示数据库满并结束
+Step 2: 输入图书编号
+Step 3: if 图书已存在 then 提示图书已存在并结束
+Step 4: 输入图书名和图书数量
+Step 5: 添加新图书到数据
+Step 6: 提示添加成功
+
+
+
+
+### query_data
+Step 1:提示输入图书编号,并输入编号
+Step 2:for i = 0 to num_parts开始查询
+Step 3:查询最后一个图书结束
+Step 4:if未查询到提示图书不存在
+Step 5:else打印图书信息
+
+
+
+
+### printf_data
+Step 1:打印图书编号和图书名
+Step 2:for i = 1 to num_parts
+Step 3:打印借阅次数
+
+
+
+#### update_data
+Step 1:输入图书编号
+Step 2:查找图书是否已录入
+Step 3:if 不存在then 直接退出
+Step 4:else 输出图书信息
+
+
+#### delete_data
+
+Step 1: 输入图书编号
+Step 2: 查找图书所在的位置
+Step 3: if 没有该图书then 则输出图书不存在
+Step 4: 将查找到的图书后面的依次往前移动信息
+Step 5: 将图书总数减一
+Step 6: 提示删除成功
+
+
+
+#### sort_data
+
+Step 1: 进行冒泡排序
+Step 2: 将按图书借阅次数排序,若前面的比后面的大,则交换
+Step 3: 每次遍历记录是否交换,若没有交换,则排序结束
+Step 4: 若借阅次数相同,则按照编号从小到大排序
+
+
+
+#### read_data
+Step 1:输入文件名
+Step 2:查看输入的文件名是否和已有的文化相匹配
+Step 3:若匹配成功,则打开文件
+Step 4:若不成功,则返回错误值
+Step 5:打开后利用循环,依次输出文件里各个图书信息;
+Step 6:关闭文件
+
+
+
+#### make_chart
+Step 1:打印表头
+Step 2:循环打印图书名和图书编号
+Step 3:循环套循环打印图表
+Step 4:打印结束后换行继续循环
+Step 5:打印成功
+