Compare commits

...

93 Commits

Author SHA1 Message Date
王意伟 6b97cc248d .
2 years ago
王意伟 33a3551bfe .
2 years ago
王意伟 76bf414fa1 .
2 years ago
王意伟 bd7292659a .
2 years ago
0ad2190594 llxxcc
2 years ago
60564bcc3c llxx
2 years ago
5e395d96ea lllx
2 years ago
dd216f139d lll
2 years ago
5b53e0e7c5 lxc
2 years ago
3288e05eb2 1313
2 years ago
176c35bbf9 1234
2 years ago
d806d8c0f7 111
2 years ago
王意伟 b8821a80f0 .
2 years ago
王意伟 c4b51929e3 .
2 years ago
王意伟 6f1eb3ef2a .
2 years ago
王意伟 fd6312f3de .
2 years ago
王意伟 0de02f7e6d .
2 years ago
王意伟 76b870b6b3 .
2 years ago
王意伟 0966db0d93 .
2 years ago
王意伟 c3898f9963 .
2 years ago
王意伟 2ba6abac55 .
2 years ago
王意伟 4d91eade44 .
2 years ago
王意伟 2ed2903fe9 .
2 years ago
王意伟 e3b3866422 .
2 years ago
王意伟 2126f1058b .
2 years ago
马誉航 d3a4cbdb3b .
2 years ago
马誉航 3c91f18ed4 .
2 years ago
0b6c053f53 111
2 years ago
5198c1d866 123
2 years ago
pi9jl6p58 42f3ecc37b Delete 'text.drawio'
2 years ago
c00be4479c 111
2 years ago
pi9jl6p58 5487a49420 Delete '管理系统'
2 years ago
6547d162b9 111
2 years ago
pi9jl6p58 2ad93ed323 Delete '管理系统daima'
2 years ago
6b5a28f7ce 111
2 years ago
马誉航 d8f515dbd6 Merge branch 'master' of https://bdgit.educoder.net/pe3l754au/C
2 years ago
马誉航 ad62e52940 111
2 years ago
马誉航 69d1499845 111
2 years ago
王意伟 b632352543 Merge branch 'master' of https://bdgit.educoder.net/pe3l754au/C
2 years ago
王意伟 6bde8d620e .
2 years ago
刘梦琦 4d98e837d1 123
2 years ago
刘梦琦 66c61142d3 123
2 years ago
王意伟 dde8cd4e57 .
2 years ago
21afbf1d31 流程图(456)
2 years ago
4e89cbd0ed 流程图
2 years ago
f7bd5af4d0 456
2 years ago
51c494ba05 456
2 years ago
pi9jl6p58 6e54b157fd Delete 'text.drawio.svg'
2 years ago
95f4b0474a 456
2 years ago
pi9jl6p58 6bb4aaa999 Delete 'text.drawio'
2 years ago
刘梦琦 8eea6cf57a Merge branch 'master' of https://bdgit.educoder.net/pe3l754au/C
2 years ago
刘梦琦 e9401eb47d 123
2 years ago
1b8c9d4e52 456
2 years ago
pi9jl6p58 5c5270b813 Update README.md
2 years ago
pi9jl6p58 341a3c1abb Update README.md
2 years ago
pi9jl6p58 7665ab0f10 Update README.md
2 years ago
pi9jl6p58 033e008b52 Update README.md
2 years ago
王意伟 5ffa759b58 .
2 years ago
p6z4nu5yw 73ba5b3ca6 Update README.md
2 years ago
p6z4nu5yw 2e856b92ec Update README.md
2 years ago
p6z4nu5yw 30a7237062 Update README.md
2 years ago
p6z4nu5yw 272d077e9d Update README.md
2 years ago
p6z4nu5yw a38e53033d Update README.md
2 years ago
69de50569b 流程图
2 years ago
427e010e3b 456
2 years ago
pi9jl6p58 98fd31d6a6 Update README.md
2 years ago
pi9jl6p58 400f70ff22 Update README.md
2 years ago
pi9jl6p58 e7398b01ab Update README.md
2 years ago
pi9jl6p58 88dd042eb1 Update README.md
2 years ago
pi9jl6p58 9563e99968 Update README.md
2 years ago
pi9jl6p58 aefb755abe Delete '流程图'
2 years ago
pi9jl6p58 5c620373de Add 流程图
2 years ago
pi9jl6p58 aaf874a047 Update README.md
2 years ago
pi9jl6p58 06c0b8dc56 Update README.md
2 years ago
pi9jl6p58 dd71d4a6d9 Update README.md
2 years ago
pi9jl6p58 0d2b27be7d Update README.md
2 years ago
pi9jl6p58 588034d0f7 Update README.md
2 years ago
pi9jl6p58 fb679ff6e9 Update README.md
2 years ago
刘梦琦 93e26a7da1 123
2 years ago
刘梦琦 3f2ecf1efb 123
2 years ago
刘梦琦 7f8126d4c6 123
2 years ago
刘梦琦 7b88f2cb4a 123
2 years ago
pi9jl6p58 60508d489e Update README.md
2 years ago
王意伟 9281ea1312 Merge branch 'master' of https://bdgit.educoder.net/pe3l754au/C
2 years ago
王意伟 64080e3879 .
2 years ago
刘梦琦 294b2a7bc1 123
2 years ago
刘梦琦 5e7e7ce835 Merge branch 'master' of https://bdgit.educoder.net/pe3l754au/C
2 years ago
刘梦琦 ae98daace4 123
2 years ago
马誉航 b166592fce 11
2 years ago
马誉航 ae645db941 Merge branch 'master' of https://bdgit.educoder.net/pe3l754au/C
2 years ago
马誉航 47d990b8cc c789
2 years ago
刘梦琦 3e7fef8c96 123
2 years ago
刘梦琦 79e5abc784 123
2 years ago

@ -1,5 +1,61 @@
##C4: 添加库存记录
选择菜单命令 5 ,提示输入零件编号,若该零件不存在,则继续输入零件名称、库存数量,添加零件, 并提示完成;若零件编号已存在,则提示零件已存在,并结束。
#学生成绩管理系统
2023年4月22日
刘梦琦 、 马誉航 、 王意伟 、 刘鑫成
## 项目简介
本学生成绩管理系统是为教师提供管理班级成绩的工具,该系统可以实现的对学生的成绩进行增、删、改、查、信息保存和信息导入等基本功能,以及对学生成绩排序和分段的扩展功能,有利于对学生成绩管理。
下载地址https://bdgit.educoder.net/pe3l754au/C.git
项目开发过程中采用 Kanban看板进行任务管理和分工协作并使用 Git 对程序代码和文档进行版
本管理。任务分工情况如下:
```
------------------------------------------------
| 任务 | 设计 | 开发 | 测试 | 文档 |
| C1-C3 | 王意伟 | 刘鑫成 | 马誉航 | 刘梦琦 |
| C4-C6 | 刘梦琦 | 马誉航 | 王意伟 | 刘鑫成 |
| C7-C9 | 刘鑫成 | 王意伟 | 刘梦琦 | 马誉航 |
| C10-C12| 马誉航 | 刘梦琦 | 刘鑫成 | 王意伟 |
------------------------------------------------
```
每个成员的工作量(百分比):
```
刘梦琦 刘鑫成 王意伟 马誉航
25 25 25 25
```
##关于学生成绩管理系统
本学生成绩管理系统是为教师提供管理班级成绩的工具该系统可以实现的对学生的成绩进行增、删、改、查、信息保存和信息导入等基本功能以及对学生成绩排序和分段的扩展功能有利于对学生成绩管理。利用结构体——定义STU结构体存储学生学号、姓名、各科成绩总成绩和平均成绩利用文件来存储读取数据。
系统的功能性需求:
数据的读取、保存、打印、查询、修改、插入、删除、排序和图表展示。
系统的非功能性需求:
菜单驱动的命令行交互界面。
##需求分析
分析系统的功能需求和界面需求,编制用户手册如下。
###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 ,提示输入学生学号,若该学生不存在,则继续输入学生名称、名次,添加分数, 并提示完成;若学生学号存在,则提示学生已存在,并结束。
@ -7,23 +63,23 @@
```
请选择5
输入零件编101
输入零件名:电脑
输入库存数20
零件 101 已添加
输入学生学101
输入学生名:李华
输入排名20
学生 101 已添加
1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
请选择5
输入零件编101
零件已存在 .
输入学生学101
学生已存在 .
```
##C5: 查询库存记录
选择菜单命令 4 ,提示输入零件编号,若该零件存在,则输出零件信息;否则提示零件不存在并结束。
###C5: 查询学生记录
选择菜单命令 4 ,提示输入学生学号,若该学生存在,则输出学生信息;否则提示学生不存在并结束。
@ -31,21 +87,21 @@
```
请选择4
输入零件编101
零件编101
零件名称:电脑
零件库存20
输入学生学101
学生学101
学生名称:李华
学生排名20
1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
请选择4
输入零件编号100
零件不存在 .
输入学生学号100000000
学生不存在 .
```
##C6: 打印库存列表
###C6: 打印学生成绩列表
选择菜单命令 3 ,打印
@ -55,8 +111,218 @@
```
请选择3
-------------------------------------------------------
| NUMBER | NAME | ON HAND |
| NUMBER | NAME | RANK |
-------------------------------------------------------
| 101 |李华 | 20 |
-------------------------------------------------------
```
###C7: 修改学生成绩
选择菜单命令 6 ,根据提示输入学生学号,若学生成绩存在,则继续输入新的学生姓名和学生成绩,并修改库学生
记录;否则,提示学生不存在并结束。
```
请选择6
输入学生学号101
输入学生姓名:李华
输入学生成绩12
学生 101 已更新
1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
请选择3
| NUMBER | NAME | ON HAND |
| 101 | 李华 | 12 |
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 | 李华 | 20 |
| 100 | 李芳 | 10 |
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 | 李芳 | 10 |
| 101 | 李华 | 20 |
```
###C10: 读取学生成绩
选择菜单命令 1 ,提示输入文件名,若文件存在,则打开文件读取 CSV 格式保存的所有库存记录;否
则,若文件不存在,则给出错误信息并结束。
假设文件 a.csv 中,以 CSV Comma-Separated Values格式保存了如下记录
则读取记录的过程如下:
```
请选择3
-------------------------------------------------------
| NUMBER | NAME | ON HAND |
-------------------------------------------------------
| 100 | 李芳 | 10 |
| 101 | 李华 | 20 |
-------------------------------------------------------
103,李明,8
104,李娜,12
101,李华,20
102,李美,10
请选择1
读取数据
请输入文件名a.csv
读取 4 记录
1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加
6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出
请选择3
-------------------------------------------------------
| NUMBER | NAME | ON HAND |
-------------------------------------------------------
| 101 | 电脑 | 20 |
| 103 | 李明 | 8 |
| 104 | 李娜 | 12 |
| 101 | 李华 | 20 |
| 102 | 李美 | 10 |
-------------------------------------------------------
```
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 : 李明 | ******** (8)
104 : 李娜 | ************ (12)
101 : 李华 | ******************** (20)
102 : 李美 | ********** (10)
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.svg)
各模块的主要功能如下:
### 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:
![](main.svg)
### save_data
Step 1: 输入文件名
Step 2: 打开文件
Step 3: if 打开文件失败 then 提示打开文件失败并结束
Step 4: 将所有库存记录写入文件
Step 5: 关闭文件
![](save_data.svg)
### print_data
Step 1: for 0 to num_part-1
Step 2: 打印学生成绩
![](print_data.svg)
### query_data
Step 1: for 0 to num_part-1 查询
Step 2: 输入查询学号
Step 3: 根据查询结果输出
![](query_data.svg)
### add_data
Step 1: for 0 to num_part-1 添加
Step 2: 输入添加学号
Step 3: if 成立则结束 else 输入学生名称、名次,添加分数, 并提示完成
![](add_data.svg)
### update_data
Step 1: for 0 to num_part-1 修改
Step 2: 输入修改学号
Step 3: if 不成立则结束 else 输出学生信息
![](update_data.svg)
### delete_data
Step 1: for 0 to num_part-1 删除
Step 2: 输入删除学号
Step 3: if 不成立则结束 else 删除
![](delete_data.svg)
### sort_data
Step 1: for 0 to num_part-1 排序
Step 2: 按学生学号从小到大排序
![](sort_data.svg)
### make_chart
Step 1: Step 1: for 0 to num_part-1 图表
Step 2: 以图表方式显示库存记录
![](make_chart.svg)

@ -0,0 +1,52 @@
<mxfile host="65bd71144e">
<diagram id="WNjXzI9tJw80ir65-z7G" name="第 1 页">
<mxGraphModel dx="1072" dy="1668" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="28" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="27">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="2" value="add_data" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="150" y="-200" width="100" height="60" as="geometry"/>
</mxCell>
<mxCell id="7" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="5" target="6" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="26" value="" style="edgeStyle=none;html=1;" parent="1" source="5" target="25" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="5" value="学号是否存在" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="127.5" y="-10" width="145" height="70" as="geometry"/>
</mxCell>
<mxCell id="6" value="&lt;span style=&quot;color: rgb(51, 51, 51); font-family: &amp;quot;Microsoft YaHei&amp;quot;, Helvetica, &amp;quot;Meiryo UI&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Trebuchet MS&amp;quot;, Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;wenquanyi micro hei&amp;quot;, FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 16px; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;输入学生名称、名次,添加分数&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="400" y="-5" width="100" height="60" as="geometry"/>
</mxCell>
<mxCell id="13" value="Y" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="170" y="80" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="14" value="N" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="320" y="-5" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="25" value="end" style="whiteSpace=wrap;html=1;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="140" y="190" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="29" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="27" target="5">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="27" value="输入学号" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="140" y="-110" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="30" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="380" y="200" as="sourcePoint"/>
<mxPoint x="200" y="160" as="targetPoint"/>
<Array as="points">
<mxPoint x="450" y="160"/>
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

@ -0,0 +1,58 @@
<mxfile host="65bd71144e">
<diagram id="zc0ZgzD_S0VL_faU3Ea_" name="第 1 页">
<mxGraphModel dx="1072" dy="568" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="6" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="5">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="2" value="delete_data" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="190" y="40" width="100" height="60" as="geometry"/>
</mxCell>
<mxCell id="8" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="5" target="7">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="5" value="输入学生学号" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="180" y="180" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="10" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="7" target="9">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="12" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="7" target="11">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="7" value="是否查找成功" style="rhombus;whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="165" y="310" width="150" height="70" as="geometry"/>
</mxCell>
<mxCell id="18" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="9" target="17">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="9" value="删除信息" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="180" y="465" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="11" value="学生不存在" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="410" y="315" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="13" value="Y" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="195" y="395" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="14" value="N" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="345" y="305" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="17" value="结束" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="190" y="600" width="100" height="55" as="geometry"/>
</mxCell>
<mxCell id="20" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="11">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="520" as="sourcePoint"/>
<mxPoint x="240" y="560" as="targetPoint"/>
<Array as="points">
<mxPoint x="470" y="560"/>
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

@ -0,0 +1,315 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="642px" height="483px" viewBox="-0.5 -0.5 642 483" content="&lt;mxfile&gt;&lt;diagram id=&quot;TaoHyNAnXZeaeXS2y6f2&quot; name=&quot;第 1 页&quot;&gt;7VtLc9sgEP41PjZjCSPZx7yaXDqTmRzanjJUIjYTSSgIx3Z/fZEFeiA7UVKBHMeXRCywYh8fyy7yCFzG6xuG0sUPGuJo5I7D9QhcjVwXemPxNydsJMH1C8KckbAgORXhnvzFkijnzZckxFljIKc04iRtEgOaJDjgDRpijK6awx5p1Hxriua4RbgPUNSm/iQhXxTUqZIip99iMl+oNzverOiJkRosJckWKKSrGglcj8Alo5QXT/H6Eke57pReinnf9/SWC2M44V0muMWEFxQtpWwj14vE1ItHKjiIBfKNlNp7XlLV8S3b2uRcDAAwFWa9qPrF0zz/HyOSKGZiAQW/okvKXrJ2xaKE7UTjYrUgHN+nKMh7VsJ7BG3B40i0HPGYcUafSqW7+XLEzFvxPC751qWXCnnBjON1jSS1cYNpjDnbiCGydzKWlpGuOVG+uqoMPZOkRc3GvqQh6VrzknOlffEgDbDHes6srZlQeJ5sJjTBTXXgNeG/as+/c0WcQdm6Wku9bBsb2dihQmEaCTKwnZuIhZds80aNb96sGG9bm7fUzxGbY0mCBSmX61V7MBwhTl6aiNulXTn1jpKtw0o7ArdpR9eDTRYZXbIAy1majcpldDIb/G8MOfswxDAKH0LEUVcgif0kzR+FEVAU4YjOGYrFwBQzIkTCTO+7qzrewt4jWWO1Ge/BYuVI7ljDZiFtXzB1dPPCNkwdsAOnoBecTo8fp9NhcAocYzidmsNphl7wCacdcArGVnHqHz9OHWcgoJoLqEqkGlJTJthKhB0qlBxoF0p2Q97kC0AJDAOlibmYp0SqQel5iVmwOWGpYQG7YQkcP5agNxCWDOZ5nrkDJApPeV4noNoNeu4XAOpAiR40F/SgwUxvmQqYnnK9LliFdoOqc/xYVbVo61g1F1SVSDWshjjCJcQOFUuWD6jQbtwbtxR/fFhyh8GSZy7uKZFqWMooO5VNmvq3GZWm773QGxgU/kC3c565AOO3r+di9HQKL0392wwv035uz3xT4cXvB0oDFUB8nUWPUGoXQJ6XhJ9QpFRvNbS0D85tWCXhef650wdDzV4VvenTNQXAHfIrWu+ur+l1j+t3+FhEY1QAu5eCvDKTQbuVG9t41P8RoeuxeRgXmMy6HSRajCZ6wqX7Uo8u4H2B9MoBlvIr6GseYPIyrY1dknyqABgShgNOaJLzxhnvPSZ6QDOH1SIgmOzYXHuq/IYkSyO0eYhxslRM/7Cq6vvZi8H2XcNqTUsVR45707WUdOibrsHLnFImE5jeVgKCBSUCUScAvxfAdi94vC/w1YQDLN3GtgBs8Gs+0L6ODWjySFh8uOAa/uBk98Zn55W5oazUBHAOKytt5SQfzUqhozOanGms9uSlwlJoUxuW5gOyV5asH87KN1UuVPD88D4AZ8Z9bK+vHKhjQP1nY50do5X1GixXvLde39VOmlF2GM58tUCv9HU1QCuZ6a1kKJrV7z+L4dWPaMH1Pw==&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<ellipse cx="326" cy="246" rx="45" ry="35" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 246px; margin-left: 282px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
<font style="font-size: 35px;">
main
</font>
</div>
</div>
</div>
</foreignObject>
<text x="326" y="250" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
main
</text>
</switch>
</g>
<path d="M 201 16 L 139.24 16" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 16 L 141.24 12 L 139.24 16 L 141.24 20 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 31 L 1 1 L 131 1 L 131 31 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 16px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
<font style="font-size: 15px;">
read_data
</font>
</div>
</div>
</div>
</foreignObject>
<text x="66" y="22" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="20px" text-anchor="middle">
read_data
</text>
</switch>
</g>
<path d="M 201 66 L 139.24 66" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 66 L 141.24 62 L 139.24 66 L 141.24 70 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 81 L 1 51 L 131 51 L 131 81 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 66px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
<font style="font-size: 15px;">
save_data
</font>
</div>
</div>
</div>
</foreignObject>
<text x="66" y="72" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="20px" text-anchor="middle">
save_data
</text>
</switch>
</g>
<path d="M 201 116 L 139.24 116" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 116 L 141.24 112 L 139.24 116 L 141.24 120 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 131 L 1 101 L 131 101 L 131 131 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 116px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
print_data
</div>
</div>
</div>
</foreignObject>
<text x="66" y="121" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle">
print_data
</text>
</switch>
</g>
<path d="M 201 166 L 139.24 166" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 166 L 141.24 162 L 139.24 166 L 141.24 170 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 181 L 1 151 L 131 151 L 131 181 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 166px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
quercy_data
</div>
</div>
</div>
</foreignObject>
<text x="66" y="171" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle">
quercy_data
</text>
</switch>
</g>
<path d="M 201 216 L 139.24 216" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 216 L 141.24 212 L 139.24 216 L 141.24 220 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 231 L 1 201 L 131 201 L 131 231 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 216px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
<font style="font-size: 15px;">
add_data
</font>
</div>
</div>
</div>
</foreignObject>
<text x="66" y="222" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="20px" text-anchor="middle">
add_data
</text>
</switch>
</g>
<path d="M 201 266 L 139.24 266" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 266 L 141.24 262 L 139.24 266 L 141.24 270 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 281 L 1 251 L 131 251 L 131 281 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 266px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
<font style="font-size: 15px;">
update_data
</font>
</div>
</div>
</div>
</foreignObject>
<text x="66" y="272" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="20px" text-anchor="middle">
update_data
</text>
</switch>
</g>
<path d="M 201 316 L 139.24 316" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 316 L 141.24 312 L 139.24 316 L 141.24 320 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 331 L 1 301 L 131 301 L 131 331 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 316px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
delete_data
</div>
</div>
</div>
</foreignObject>
<text x="66" y="321" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle">
delete_data
</text>
</switch>
</g>
<path d="M 201 366 L 139.24 366" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 366 L 141.24 362 L 139.24 366 L 141.24 370 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 381 L 1 351 L 131 351 L 131 381 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 366px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
sort_data
</div>
</div>
</div>
</foreignObject>
<text x="66" y="371" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle">
sort_data
</text>
</switch>
</g>
<path d="M 201 416 L 139.24 416" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 416 L 141.24 412 L 139.24 416 L 141.24 420 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 431 L 1 401 L 131 401 L 131 431 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 416px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
make_data
</div>
</div>
</div>
</foreignObject>
<text x="66" y="421" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle">
make_data
</text>
</switch>
</g>
<path d="M 201 472 L 139.23 473.32" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 133.24 473.45 L 141.15 469.28 L 139.23 473.32 L 141.32 477.28 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1 481 L 1 451 L 131 451 L 131 481 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 466px; margin-left: 2px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
quit
</div>
</div>
</div>
</foreignObject>
<text x="66" y="471" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle">
quit
</text>
</switch>
</g>
<path d="M 201 471 L 201 11" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 201 246 L 281 246" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 451 166 L 502.76 166" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 508.76 166 L 500.76 170 L 502.76 166 L 500.76 162 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 511 181 L 511 151 L 641 151 L 641 181 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" transform="rotate(180,576,166)" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 166px; margin-left: 512px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
init
</div>
</div>
</div>
</foreignObject>
<text x="576" y="171" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle">
init
</text>
</switch>
</g>
<path d="M 511 231 L 511 201 L 641 201 L 641 231 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" transform="rotate(180,576,216)" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 216px; margin-left: 512px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
<font style="font-size: 15px;">
display_menu
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="576" y="222" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="20px" text-anchor="middle">
display_menu
</text>
</switch>
</g>
<path d="M 451 266 L 502.76 266" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 508.76 266 L 500.76 270 L 502.76 266 L 500.76 262 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 511 281 L 511 251 L 641 251 L 641 281 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" transform="rotate(180,576,266)" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 266px; margin-left: 512px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
<font style="font-size: 15px;">
make_choice
</font>
</div>
</div>
</div>
</foreignObject>
<text x="576" y="272" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="20px" text-anchor="middle">
make_choice
</text>
</switch>
</g>
<path d="M 451 316 L 502.76 316" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 508.76 316 L 500.76 320 L 502.76 316 L 500.76 312 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 511 331 L 511 301 L 641 301 L 641 331 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" transform="rotate(180,576,316)" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 316px; margin-left: 512px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
confirm
</div>
</div>
</div>
</foreignObject>
<text x="576" y="321" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle">
confirm
</text>
</switch>
</g>
<path d="M 451 246 L 421 245.62 Q 411 245.5 401 245.62 L 371 246" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 451 321 L 451 161" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 451 211 L 502.76 211" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 508.76 211 L 500.76 215 L 502.76 211 L 500.76 207 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

@ -0,0 +1,25 @@
<mxfile host="65bd71144e">
<diagram id="0uuTY4-XFXE3oc_kBmGN" name="第 1 页">
<mxGraphModel dx="1072" dy="568" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="4" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="3">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="2" value="make_chart" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="260" y="50" width="110" height="70" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3" target="5">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;span style=&quot;color: rgb(51, 51, 51); font-family: &amp;quot;Microsoft YaHei&amp;quot;, Helvetica, &amp;quot;Meiryo UI&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Trebuchet MS&amp;quot;, Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;wenquanyi micro hei&amp;quot;, FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 16px; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;以图表方式显示库存记录&lt;/span&gt;" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="255" y="205" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="5" value="结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="267.5" y="340" width="95" height="55" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.6 KiB

@ -0,0 +1,25 @@
<mxfile host="65bd71144e">
<diagram id="sSdlW-A8PZKlWb_nUc6-" name="第 1 页">
<mxGraphModel dx="560" dy="527" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="4" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="3">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="2" value="print_data" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="120" y="80" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3" target="5">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="3" value="遍历打印学生成绩" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="120" y="170" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="5" value="结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="120" y="260" width="120" height="60" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="121px" height="241px" viewBox="-0.5 -0.5 121 241" content="&lt;mxfile&gt;&lt;diagram id=&quot;sSdlW-A8PZKlWb_nUc6-&quot; name=&quot;第 1 页&quot;&gt;zVXBcoMgFPyad1dJDBxjNO2lpxx67DBKlRkUh5Bo+vUFRY1j0ulMp2kvCvv2CbsuCmhXtk+K1sWLzJiAwMtaQDEEwTr0zNUCFwcEmx7IFc96yJ+AA/9gDnR9+Yln7DgjaimF5vUcTGVVsVTPMKqUbOa0dynmq9Y0ZwvgkFKxRF95posexYMKiz8znhfDyn5I+kpJB7JTcixoJpsrCCWAdkpK3Y/KdseE9W7wpe/b36mOG1Os0t9pWPUNZypOTpvbl74MYllmtLtpJStziwpdCjPzzbCnW87dHTjoKE8qdSy3iqYqZ46FRvUmNUyWTKuLoSgmqObn+dOpe3/5yJskmoFTeVtxsFBcK17pt4xqutQuhMmUldwUXLNDTTsFjUn1LRvOTGnWfm3EUuLQMGTCHQrsps2UsJFSXKVrOEw/MSX8mxigZQzWD4oBWipOCGAfcAzJGnACOIQkBEyAoA6JIfLsYBvD1pQ2QFZA9h0HA/EsEkWwJQvnHh8df/PA7KxvONlZYX0LgcTWpf90sEbVv+COmU4f76529QdEySc=&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><path d="M 60 60 L 60 83.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 88.88 L 56.5 81.88 L 60 83.63 L 63.5 81.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="60" cy="30" rx="60" ry="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">print_data</div></div></div></foreignObject><text x="60" y="34" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">print_data</text></switch></g><path d="M 60 150 L 60 173.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 178.88 L 56.5 171.88 L 60 173.63 L 63.5 171.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="90" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">遍历打印学生成绩</div></div></div></foreignObject><text x="60" y="124" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">遍历打印学生成绩</text></switch></g><ellipse cx="60" cy="210" rx="60" ry="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 210px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">结束</div></div></div></foreignObject><text x="60" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">结束</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

@ -0,0 +1,61 @@
<mxfile host="65bd71144e">
<diagram id="jYJfybgj_iSbBnIaVfk1" name="第 1 页">
<mxGraphModel dx="560" dy="527" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="4" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="3">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="2" value="query_data" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" y="50" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="170" y="230" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="3" value="输入学生学号" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" y="140" width="120" height="50" as="geometry"/>
</mxCell>
<mxCell id="9" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="7" target="8">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="13" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="7" target="12">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="7" value="是否查找成功" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" y="230" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="11" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="8" target="10">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="8" value="输出记录编号" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" y="320" width="120" height="50" as="geometry"/>
</mxCell>
<mxCell id="10" value="结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" y="400" width="120" height="50" as="geometry"/>
</mxCell>
<mxCell id="14" style="edgeStyle=none;html=1;" edge="1" parent="1" source="12">
<mxGeometry relative="1" as="geometry">
<mxPoint x="170" y="390" as="targetPoint"/>
<Array as="points">
<mxPoint x="440" y="260"/>
<mxPoint x="440" y="320"/>
<mxPoint x="440" y="390"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="12" value="输出学生不存在" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="280" y="235" width="120" height="50" as="geometry"/>
</mxCell>
<mxCell id="15" value="N" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="220" y="235" width="60" height="30" as="geometry"/>
</mxCell>
<mxCell id="16" value="Y" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="120" y="285" width="60" height="30" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

@ -0,0 +1,91 @@
<mxfile host="65bd71144e">
<diagram id="i68sKa4qSy_DR3-xR5vY" name="第 1 页">
<mxGraphModel dx="560" dy="527" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="4" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="2" target="3">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="2" value="sava_data" style="ellipse;whiteSpace=wrap;html=1;align=center;" vertex="1" parent="1">
<mxGeometry x="90" y="90" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="330" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="20" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="320" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="3" value="输入文件名" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="75" y="210" width="150" height="80" as="geometry"/>
</mxCell>
<mxCell id="7" style="edgeStyle=none;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="5">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="330" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="5" target="8">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="11" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="5" target="10">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="5" value="打开文件" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="75" y="320" width="150" height="80" as="geometry"/>
</mxCell>
<mxCell id="24" style="edgeStyle=none;html=1;" edge="1" parent="1" source="8">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="640" as="targetPoint"/>
<Array as="points">
<mxPoint x="470" y="360"/>
<mxPoint x="470" y="640"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="8" value="提示打开文件失败" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="280" y="330" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="13" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;startArrow=none;" edge="1" parent="1" source="14">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="590" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="16" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="10">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="550" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="10" value="将所有成绩记录写入文件" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="70" y="440" width="160" height="80" as="geometry"/>
</mxCell>
<mxCell id="15" value="" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=none;" edge="1" parent="1" source="10" target="14">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="520" as="sourcePoint"/>
<mxPoint x="150" y="590" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="17" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="14" target="18">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="660" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="14" value="关闭文件" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="65" y="550" width="170" height="80" as="geometry"/>
</mxCell>
<mxCell id="18" value="结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="90" y="660" width="120" height="70" as="geometry"/>
</mxCell>
<mxCell id="22" value="Y" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="140" y="400" width="60" height="30" as="geometry"/>
</mxCell>
<mxCell id="23" value="N" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="220" y="330" width="60" height="30" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

@ -0,0 +1,25 @@
<mxfile host="65bd71144e">
<diagram id="ID9VlrPP0GZXrZxrXAXf" name="第 1 页">
<mxGraphModel dx="1072" dy="568" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="4" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="3">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="2" value="sort_data" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="240" y="60" width="110" height="70" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3" target="5">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;span style=&quot;color: rgb(51, 51, 51); font-family: &amp;quot;Microsoft YaHei&amp;quot;, Helvetica, &amp;quot;Meiryo UI&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Trebuchet MS&amp;quot;, Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;wenquanyi micro hei&amp;quot;, FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 16px; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;对学生成绩按学生学号从小到大排序&lt;/span&gt;" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="235" y="215" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="5" value="结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="255" y="345" width="80" height="45" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.6 KiB

@ -0,0 +1,52 @@
<mxfile host="65bd71144e">
<diagram id="XrmENeajpscoQa9QB7--" name="第 1 页">
<mxGraphModel dx="1072" dy="568" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="4" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="3">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="2" value="update_data" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="190" y="40" width="110" height="70" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3" target="5">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="8" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3" target="7">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="3" value="输入学号" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="185" y="195" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="10" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="5" target="9">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="5" value="输入姓名,成绩" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="185" y="370" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="7" value="学生不存在" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="425" y="195" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="9" value="结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="192.5" y="550" width="105" height="60" as="geometry"/>
</mxCell>
<mxCell id="11" value="Y" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="215" y="285" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="12" value="N" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="345" y="185" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="13" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="7">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="450" as="sourcePoint"/>
<mxPoint x="250" y="490" as="targetPoint"/>
<Array as="points">
<mxPoint x="490" y="490"/>
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.6 KiB

@ -0,0 +1,354 @@
#define NAME_LEN 31
#define MAX_PARTS 100
//保存学生成绩信息的结构
struct students
{
int number;
char name[NAME_LEN + 1];
int score;
};
static struct students stu[MAX_PARTS];
static int num_parts = 0;
#include <stdio.h>
#include <stdlib.h>
//定义常量
#define CMD_QUIT 0
#define CMD_QUERY 4
#define CMD_INSERT 5
#define CMD_UPDATE 6
#define CMD_DELETE 7
#define CMD_READ 1
#define CMD_SAVE 2
#define CMD_PRINT 3
#define CMD_SORT 8
#define CMD_CHART 9
// 菜单命令的编号
// 函数声明
void init(void);
void quit(void);
void display_menu(void);
int make_choice(void);
void read_data(void); // 读取
void save_data(void); // 保存
void print_data(void); // 打印
void query_data(void); // 查询
void add_data(void); // 添加
void update_data(void); // 修改
void delete_data(void); // 删除
void sort_data(void); // 排序
void make_chart(void); // 图表
int confirm(const char *msg);
// 主程序
int main(void)
{
init(); // 程序启动
while (1)
{
display_menu();
int c = make_choice();
switch (c)
{
case CMD_QUERY:
query_data();
break;
case CMD_INSERT:
add_data();
break;
case CMD_UPDATE:
update_data();
break;
case CMD_DELETE:
delete_data();
break;
case CMD_READ:
read_data();
break;
case CMD_SAVE:
save_data();
break;
case CMD_PRINT:
print_data();
break;
case CMD_SORT:
sort_data();
break;
case CMD_CHART:
make_chart();
break;
default:
puts("命令错误,请重新选择");
break;
case CMD_QUIT:
if (confirm("确定要退出吗?"))
quit(); // 仅在确认后退出
break;
}
}
return 0;
}
// 函数定义
void init(void)
{
puts("程序启动");
}
void quit(void)
{
puts("程序退出");
exit(EXIT_SUCCESS);
}
void display_menu(void)
{
printf("\n%d 读取 | %d 保存 | %d 打印 | %d 查询 | %d 添加\n%d 修改 | %d 删除 | %d 排序 | %d 图表 | %d 退出\n\n", CMD_READ, CMD_SAVE, CMD_PRINT, CMD_QUERY, CMD_INSERT, CMD_UPDATE, CMD_DELETE, CMD_SORT, CMD_CHART, CMD_QUIT);
}
int make_choice(void)
{
int c; // 用户输入
int n = 0; // 正确读入的数据项个数
while (n == 0)
{
printf("请选择:");
n = scanf("%d", &c); // 尝试读入整数 c
scanf("%*[^\n]"); // 跳过一行中剩余的字符
}
return c;
}
//查询
void query_data(void)
{
int num;
printf("输入学生学号: ");
scanf("%d", &num);
int f = -1;
for (int i = 0; i < num_parts; i++)
{
if (num == stu[i].number)
{
f = i;
break;
}
}
if (f == -1)
{
printf("学生不存在");
}
else
{
printf("学生学号:%d\n", stu[f].number);
printf("学生姓名:%s\n", stu[f].name);
printf("学生成绩:%d\n", stu[f].score);
}
}
//打印
void print_data(void)
{
printf("NUMBER | NAME score\n");
for (int i = 0; i < num_parts; i++)
{
printf("%d | %s %d\n", stu[i].number, stu[i].name, stu[i].score);
}
}
//添加
void add_data(void)
{
int num;
printf("输入学生学号:");
scanf("%d", &num);
int f = 0;
for (int i = 0; i < num_parts; i++)
{
if (num == stu[i].number)
{
f = 1;
break;
}
}
if (f == 0)
{
stu[num_parts].number = num;
printf("输入学生姓名:");
scanf("%s", &stu[num_parts].name);
printf("输入学生成绩:");
scanf("%d", &stu[num_parts].score);
num_parts++;
printf("学生 %d 添加成功\n", num);
}
else
{
printf("学生已存在");
}
}
//修改
void update_data(void)
{
int num;
printf("输入学生学号:");
scanf("%d", &num);
int f = 0;
for (int i = 0; i < num_parts; i++)
{
if (num == stu[i].number)
{
f = 1;
break;
}
}
if (f == 0)
{
printf("学生不存在");
}
else
{
printf("输入学生学号:");
scanf("%d", &stu[num].number);
printf("输入学生姓名:");
scanf("%s", stu[num].name);
printf("输入学生成绩:");
scanf("%d", &stu[num].score);
printf("学生 %d 已更新", num);
}
}
//删除
void delete_data(void)
{
int num;
printf("输入学生学号:");
scanf("%d", &num);
int f = 0, i, j;
for (i = 0; i < num_parts; i++)
{
if (num == stu[i].number)
{
f = 1;
break;
}
}
if (f == 0)
{
printf("学生不存在");
}
else
{
for (j = i; j < num_parts - 1; j++)
{
stu[j] = stu[j + 1];
}
num_parts--;
printf("删除成功");
}
}
void read_data(void)
{
puts("读取数据");
printf("请输入文件名");
char filename[256];
scanf("%s", filename);
FILE *fp = fopen(filename, "r");
if (fp == NULL)
{
perror(filename);
return;
}
int i = 0;
while (fscanf(fp, "%d,%[^,],%d", &stu[i].number, stu[i].name, &stu[i].score) == 3)
{
i++;
}
fclose(fp);
num_parts = i;
printf("读取 %d 记录\n", num_parts);
}
void save_data(void)
{
puts("保存数据");
printf(" 请输入文件名");
char filename[256];
scanf("%s", filename);
FILE *fp = fopen(filename, "r");
if (fp == NULL)
{
perror(filename);
return;
}
for (int i = 0; i < num_parts; i++)
{
fprintf(fp, "%d,%s,%d\n", stu[i].number, stu[i].name, stu[i].score);
}
fclose(fp);
printf("保存%d 成功", num_parts);
}
//排序
void sort_data(void)
{
printf("排序\n");
for (int i = 0; i < num_parts; i++)
{
int change = 0;
static struct students t;
for (int j = 0; j < num_parts - i - 1; j++)
{
if (stu[j].number > stu[j + 1].number)
{
t = stu[j + 1];
stu[j + 1] = stu[j];
stu[j] = t;
change = 1;
}
}
if (!change)
break;
}
for (int i = 0; i < num_parts; i++)
{
int change = 0;
static struct students t;
for (int j = 0; j < num_parts - i - 1; j++)
{
if (stu[j].score > stu[j + 1].score)
{
t = stu[j + 1];
stu[j + 1] = stu[j];
stu[j] = t;
change = 1;
}
}
if (!change)
break;
}
printf("排序已完成");
}
void make_chart(void)
{
printf("NUMBER | NAME score\n");
for (int i = 0; i < num_parts; i++)
{
printf("%d | %s ", stu[i].number, stu[i].name);
for (int j = 0; j < stu[i].score; j++)
{
printf("*");
}
printf("\n");
}
printf("图表\n");
}
int confirm(const char *msg)
{
char c = 'n'; // 默认选择是 no
printf("%s(Y/N): ", msg); // 提示输入 yes/no 进行确认
scanf(" %c%*[^\n]", &c); // 读取第一个字符,忽略剩余字符
return c == 'y' || c == 'Y'; // 返回确认结果
}
Loading…
Cancel
Save