diff --git a/README.md b/README.md
index 4b0287d..0e38836 100644
--- a/README.md
+++ b/README.md
@@ -238,4 +238,81 @@ a: No such file or directory
数据(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: 关闭文件
+```
+
+### print_data
+```
+Step 1: for 0 to num_part-1
+Step 2: 打印学生成绩
+```
+
+### query_data
+```
+Step 1: for 0 to num_part-1 查询
+Step 2: 输入查询学号
+Step 3: 根据查询结果输出
+```
+
+### add_data
+```
+Step 1: for 0 to num_part-1 添加
+Step 2: 输入添加学号
+Step 3: if 成立则结束 else 输入学生名称、名次,添加分数, 并提示完成
+```
+
+### update_data
+```
+Step 1: for 0 to num_part-1 修改
+Step 2: 输入修改学号
+Step 3: if 不成立则结束 else 输出学生信息
+```
+
+### delete_data
+```
+Step 1: for 0 to num_part-1 删除
+Step 2: 输入删除学号
+Step 3: if 不成立则结束 else 删除
+```
+
+### sort_data
+```
+Step 1: for 0 to num_part-1 排序
+Step 2: 按学生学号从小到大排序
+```
+
+### make_chart
+```
+Step 1: Step 1: for 0 to num_part-1 图表
+Step 2: 以图表方式显示库存记录
+```
+
\ No newline at end of file
diff --git a/delete_data.drawio.svg b/delete_data.drawio.svg
new file mode 100644
index 0000000..39f91ed
--- /dev/null
+++ b/delete_data.drawio.svg
@@ -0,0 +1,180 @@
+
\ No newline at end of file
diff --git a/delete_data.svg b/delete_data.svg
new file mode 100644
index 0000000..d965db4
--- /dev/null
+++ b/delete_data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/make_chart.drawio.svg b/make_chart.drawio.svg
new file mode 100644
index 0000000..a93a739
--- /dev/null
+++ b/make_chart.drawio.svg
@@ -0,0 +1,87 @@
+
\ No newline at end of file
diff --git a/make_chart.svg b/make_chart.svg
new file mode 100644
index 0000000..a21d0de
--- /dev/null
+++ b/make_chart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/sort_data.drawio.svg b/sort_data.drawio.svg
new file mode 100644
index 0000000..9718941
--- /dev/null
+++ b/sort_data.drawio.svg
@@ -0,0 +1,87 @@
+
\ No newline at end of file
diff --git a/sort_data.svg b/sort_data.svg
new file mode 100644
index 0000000..61a476f
--- /dev/null
+++ b/sort_data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/update_data.drawio b/update_data.drawio
new file mode 100644
index 0000000..eb57ba4
--- /dev/null
+++ b/update_data.drawio
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/update_data.svg b/update_data.svg
new file mode 100644
index 0000000..5c215c8
--- /dev/null
+++ b/update_data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file