diff --git a/README.md b/README.md
index 4b0287d..3f1ef5d 100644
--- a/README.md
+++ b/README.md
@@ -238,4 +238,53 @@ a: No such file or directory
数据(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 输出学生信息
\ 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