From ae1c9a46ad00368c8078748938c3149d8055ae79 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 09:03:02 +0800 Subject: [PATCH 01/65] =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 65b4fbb..5d9d8d6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,51 @@ -# text4 +# 实现学生成绩管理系统 + +2023年4月17日 + +董函铄 胡煜男 于博 袁楷昊 + +## 项目简介 + +本系统是程序设计与问题求解课程设计项目,是为教师提供管理班级成绩的工具,该系统可以实现的对学生的成绩进行增、删、改、查、信息保存和信息导入等基本功能,以及对学生成绩排序和分段的扩展功能,有利于对学生成绩管理。项目采用 C 语言编程实现,在 VS Code 集成开发环境(IDE)中用 GCC 进行编译。系统采用模块化设计,程序结构清晰,采用菜单驱动的命令行界面,操作便捷,能够用 CSV 格式读取和保存数据,通用性强,能够用图表展示数据,直观清楚。 + +下载地址:https://code.educoder.net/plebkff6w/text4 + +项目开发过程中采用 Kanban(看板)进行任务管理和分工协作,并使用 Git 对程序代码和文档进行版 +本管理。任务分工情况如下: + +| 任务 | 设计 | 开发 | 测试 | 文档 | +|---|---|---|---|---| +| C1-C3 菜单驱动的用户界面 | 董函铄 | 董函铄 | 胡煜男 | 董函铄 | +| C4 添加学生信息及成绩 | 胡煜男 | 胡煜男 | 于博 | 胡煜男 | +| C5: 查询学生信息及成绩 | 于博 | 于博 | 袁楷昊 | 于博 | +| C6: 打印学生信息及成绩 | 袁楷昊 | 袁楷昊 | 董函铄 | 袁楷昊 | +| C7: 修改学生信息及成绩 | 董函铄 | 董函铄 | 于博 | 董函铄 | +| C8: 删除学生信息及成绩 | 胡煜男 | 胡煜男 | 袁楷昊 | 胡煜男| +| C9: 学生信息及成绩记录排序 | 于博 | 于博 | 董函铄 | 于博 | +| C10: 从文件中读取学生信息及成绩记录 | 袁楷昊 | 袁楷昊 | 胡煜男 | 袁楷昊 | +| C11: 将学生信息及成绩保存保存到文件 | 董函铄 | 于博 | 胡煜男 | 董函铄 | +| C12: 以图表方式显示学生信息及成绩 | 董函铄 | 袁楷昊 | 于博 | 胡煜男 | + +每个成员的工作量(百分比): + +| 董函铄 | 胡煜男 | 于博 | 袁楷昊 | +|---|---|---|---| +| 30 | 20 | 30 | 20 | + +## 关于实现学生成绩管理系统 + +设计一个学生成绩管理系统,要求采用命令行菜单界面进行交互,具备读取、保存、打印、查询、修改、插入、删除和排序等基本功能,能够以表格和图表形式展示数据,采用 CSV 格式保存数据。 + +系统的功能性需求: + +- 数据的读取、保存、打印、查询、修改、插入、删除、排序和图表展示。 + +系统的非功能性需求: + +- 菜单驱动的命令行交互界面。 + +## 需求分析 + +分析系统的功能需求和界面需求,编制用户手册如下。 + From 7fa53b3a4c730762e7371ea8304d4ee1f68e964b Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 09:04:27 +0800 Subject: [PATCH 02/65] C1-C3 --- README.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d9d8d6..21d10f4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 实现学生成绩管理系统 -2023年4月17日 +2023年5月21日 董函铄 胡煜男 于博 袁楷昊 @@ -48,4 +48,35 @@ 分析系统的功能需求和界面需求,编制用户手册如下。 +#### 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 +程序退出 +``` From 6d81acf0fc34e7e45247ea66db05c9cf0a71c642 Mon Sep 17 00:00:00 2001 From: huyunan <3313842905@qq.com> Date: Sun, 21 May 2023 09:11:44 +0800 Subject: [PATCH 03/65] c4 --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index 21d10f4..d42856c 100644 --- a/README.md +++ b/README.md @@ -80,3 +80,21 @@ 程序退出 ``` +#### C4: 添加库存记录 + +选择菜单命令 `5`,提示输入学号,若该学生不存在,则继续输入学号、姓名、成绩,添加学号,并提示完成;若学号已存在,则提示学号已存在,并结束。 + +``` +请选择:5 +输入学号:101 +输入姓名:小米 +输入成绩:80 +学生 101 已添加 + +1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 +6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 + +请选择:5 +输入学号:101 +学号已存在. +``` \ No newline at end of file From 43719154292b2b7e660a9a809e4c5f2fdc97b80f Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 09:17:04 +0800 Subject: [PATCH 04/65] src --- src | 357 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 357 insertions(+) create mode 100644 src diff --git a/src b/src new file mode 100644 index 0000000..3f5f843 --- /dev/null +++ b/src @@ -0,0 +1,357 @@ +#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 +#include + +//定义常量 +#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'; // 返回确认结果 +} From 8e2ffd371a44c42716fb9fb66c0c408f9c7528b5 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 09:57:57 +0800 Subject: [PATCH 05/65] app.c --- app.c | 357 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 357 insertions(+) create mode 100644 app.c diff --git a/app.c b/app.c new file mode 100644 index 0000000..3f5f843 --- /dev/null +++ b/app.c @@ -0,0 +1,357 @@ +#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 +#include + +//定义常量 +#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'; // 返回确认结果 +} From 19a00d2baafb8fa017764fe183451d8efb785b1a Mon Sep 17 00:00:00 2001 From: plebkff6w <1844263540@qq.com> Date: Sun, 21 May 2023 09:59:01 +0800 Subject: [PATCH 06/65] Delete 'src' --- src | 357 ------------------------------------------------------------ 1 file changed, 357 deletions(-) delete mode 100644 src diff --git a/src b/src deleted file mode 100644 index 3f5f843..0000000 --- a/src +++ /dev/null @@ -1,357 +0,0 @@ -#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 -#include - -//定义常量 -#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'; // 返回确认结果 -} From 5ec48b7ac066f48f0278cc2a2bd2aa4d6830bb65 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 10:02:36 +0800 Subject: [PATCH 07/65] yubo --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d42856c..3169bfc 100644 --- a/README.md +++ b/README.md @@ -97,4 +97,19 @@ 请选择:5 输入学号:101 学号已存在. -``` \ No newline at end of file +``` + +#### C5: 查询学生信息及成绩 + +选择菜单命令 4,提示输入学号,若该学号存在,则输出学号、姓名、成绩;否则提示学生不存在并结束。 + +请选择:4 +输入学号:101 +学号:101 +名字:小米 +成绩:80 +1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 +6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 +请选择:4 +输入学号:101 +学号不存在. \ No newline at end of file From 5d96a397b8c6785ab96a2b3698954db914e485d1 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 10:05:18 +0800 Subject: [PATCH 08/65] C5 --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3169bfc..854e8dd 100644 --- a/README.md +++ b/README.md @@ -101,15 +101,20 @@ #### C5: 查询学生信息及成绩 -选择菜单命令 4,提示输入学号,若该学号存在,则输出学号、姓名、成绩;否则提示学生不存在并结束。 +选择菜单命令 `4`,提示输入学号,若该学号存在,则输出学号、姓名、成绩;否则提示学生不存在并结束。 +``` 请选择:4 输入学号:101 学号:101 名字:小米 成绩:80 + 1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 + 请选择:4 输入学号:101 -学号不存在. \ No newline at end of file +学号不存在. + +``` \ No newline at end of file From 8d76a2fbdb100db1488ad42e608d5ac8a139116e Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 10:15:04 +0800 Subject: [PATCH 09/65] chart --- chart | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 chart diff --git a/chart b/chart new file mode 100644 index 0000000..e69de29 From e7a12fa1fe2fd062ba22ac51b68409a4f3e8a988 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 10:18:16 +0800 Subject: [PATCH 10/65] C6 --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 854e8dd..85b3e5c 100644 --- a/README.md +++ b/README.md @@ -117,4 +117,18 @@ 输入学号:101 学号不存在. -``` \ No newline at end of file +``` + +#### C6: 打印学生信息及成绩 + +选择菜单命令 `3`,打印 + +``` +请选择:3 +------------------------------------------------------- +| NUMBER | NAME | ON HAND | +------------------------------------------------------- +| 101 | 小李 | 80 | +------------------------------------------------------- + +``` From c1f7b5b07d79a2cd99a20ffd9377cc86523067b0 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 10:18:26 +0800 Subject: [PATCH 11/65] C9 --- README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README.md b/README.md index 854e8dd..60b2f47 100644 --- a/README.md +++ b/README.md @@ -117,4 +117,37 @@ 输入学号:101 学号不存在. +``` + +#### C9: 学生信息及成绩排序 + +选择菜单命令 `8`,对学生按学号从小到大排序。 + +``` +请选择:3 +------------------------------------------------------- +| NUMBER | NAME | ON HAND | +------------------------------------------------------- +| 101 | 小米 | 80 | +| 100 | 小明 | 70 | +------------------------------------------------------- + +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 | 小明 | 70 | +| 101 | 小米 | 80 | +------------------------------------------------------- + ``` \ No newline at end of file From 2aa99db0530c2c3da73e4e63ccfa95e475c75f92 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 10:21:19 +0800 Subject: [PATCH 12/65] C9 --- README.md | 79 ------------------------------------------------------- 1 file changed, 79 deletions(-) diff --git a/README.md b/README.md index da00a69..8466b7c 100644 --- a/README.md +++ b/README.md @@ -119,82 +119,3 @@ ``` -#### C9: 学生信息及成绩排序 - -选择菜单命令 `8`,对学生按学号从小到大排序。 - -``` -请选择:3 -------------------------------------------------------- -| NUMBER | NAME | ON HAND | -------------------------------------------------------- -| 101 | 小米 | 80 | -| 100 | 小明 | 70 | -------------------------------------------------------- - -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 | 小明 | 70 | -| 101 | 小米 | 80 | -------------------------------------------------------- - -``` - -#### C9: 学生信息及成绩排序 - -选择菜单命令 `8`,对学生按学号从小到大排序。 - -``` -请选择:3 -------------------------------------------------------- -| NUMBER | NAME | ON HAND | -------------------------------------------------------- -| 101 | 小米 | 80 | -| 100 | 小明 | 70 | -------------------------------------------------------- - -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 | 小明 | 70 | -| 101 | 小米 | 80 | -------------------------------------------------------- - -``` - -#### C6: 打印学生信息及成绩 - -选择菜单命令 `3`,打印 - -``` -请选择:3 -------------------------------------------------------- -| NUMBER | NAME | ON HAND | -------------------------------------------------------- -| 101 | 小李 | 80 | -------------------------------------------------------- - -``` From 1c4a829cb6a61c89f5f2681faa758febf1c56128 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 10:23:12 +0800 Subject: [PATCH 13/65] C6 --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 8466b7c..85b3e5c 100644 --- a/README.md +++ b/README.md @@ -119,3 +119,16 @@ ``` +#### C6: 打印学生信息及成绩 + +选择菜单命令 `3`,打印 + +``` +请选择:3 +------------------------------------------------------- +| NUMBER | NAME | ON HAND | +------------------------------------------------------- +| 101 | 小李 | 80 | +------------------------------------------------------- + +``` From 3d3c5a0bc1e84664726dfa3b62aa0b5c8b25feb3 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 10:24:43 +0800 Subject: [PATCH 14/65] C9 --- README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README.md b/README.md index 85b3e5c..ff3d144 100644 --- a/README.md +++ b/README.md @@ -132,3 +132,36 @@ ------------------------------------------------------- ``` + +#### C9: 学生信息及成绩排序 + +选择菜单命令 `8`,对学生按学号从小到大排序。 + +``` +请选择:3 +------------------------------------------------------- +| NUMBER | NAME | ON HAND | +------------------------------------------------------- +| 101 | 小米 | 80 | +| 100 | 小明 | 70 | +------------------------------------------------------- + +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 | 小明 | 70 | +| 101 | 小米 | 80 | +------------------------------------------------------- + +``` \ No newline at end of file From 4522d711ee34d01bc5b6359a0cd336f49a60892a Mon Sep 17 00:00:00 2001 From: plebkff6w <1844263540@qq.com> Date: Sun, 21 May 2023 10:25:50 +0800 Subject: [PATCH 15/65] Delete 'chart' --- chart | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 chart diff --git a/chart b/chart deleted file mode 100644 index e69de29..0000000 From b74210052d66cf1e8c7ad4da3119f8df5de497d4 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 10:26:01 +0800 Subject: [PATCH 16/65] C10 --- README.md | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ff3d144..ac8c5b8 100644 --- a/README.md +++ b/README.md @@ -164,4 +164,48 @@ | 101 | 小米 | 80 | ------------------------------------------------------- -``` \ No newline at end of file +``` + +#### C10: 从文件中读取学生信息及成绩 + +选择菜单命令 `1`,提示输入文件名,若文件存在,则打开文件读取 CSV 格式保存的所有库存记录;否则,若文件不存在,则给出错误信息并结束。 + +假设文件 `a.csv` 中,以 CSV (Comma-Separated Values)格式保存了如下记录: + +``` +103,小红,80 +104,小光,100 +101,小米,80 +102,小明,70 +``` + +则读取记录的过程如下: + +``` +请选择:1 +读取数据 +请输入文件名:a.csv +读取 4 记录 + +1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 +6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 + +请选择:3 +------------------------------------------------------- +| NUMBER | NAME | ON HAND | +------------------------------------------------------- +| 103 | 小红 | 80 | +| 104 | 小光 | 100 | +| 101 | 小米 | 80 | +| 102 | 小明 | 70 | +------------------------------------------------------- + +1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 +6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 + +请选择:1 +读取数据 +请输入文件名:a +a: No such file or directory + +``` From 35be4bc7372176f5582bcf993de1680021644e90 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 10:28:19 +0800 Subject: [PATCH 17/65] C7 --- README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README.md b/README.md index ac8c5b8..871eb7b 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,36 @@ ``` +#### C7: 修改学生信息及成绩 + +选择菜单命令 `7`,根据提示输入学号,若学号存在,则继续输入学号、姓名、成绩,并修改库存记录;否则,提示学号不存在并结束。 + +``` +请选择:7 +输入学号:104 +输入姓名:小刘 +输入成绩:96 +学生 104 已更新 + +1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 +6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 + +请选择:3 +------------------------------------------------------- +| NUMBER | NAME | ON HAND | +------------------------------------------------------- +| 104 | 小刘 | 96 | +------------------------------------------------------- + +1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 +6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 + +请选择:7 +输入学号:104 +学生不存在. + +``` + #### C9: 学生信息及成绩排序 选择菜单命令 `8`,对学生按学号从小到大排序。 From e7f5539241c86b024813fe4221054420785f7a47 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 10:28:54 +0800 Subject: [PATCH 18/65] c11-c12 --- README.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/README.md b/README.md index 871eb7b..254d410 100644 --- a/README.md +++ b/README.md @@ -239,3 +239,30 @@ a: No such file or directory ``` +#### C11: 将学生信息及成绩保存到文件 + +选择菜单命令 `2`,提示输入文件名,将所有库存记录以 CSV 格式保存到指定的文件中。 + +``` +请选择:2 +保存数据 +请输入文件名:b.csv +保存 4 记录 + +``` +#### C12: 以图表方式显示学生信息及成绩 + +选择菜单命令 `9`,以图表方式显示库存记录。 + +``` +请选择:9 +图表 + 103 : 小红 | ******** (80) + 104 : 小光 | ************ (100) + 101 : 小米 | ******************** (80) + 102 : 小明 | ********** (70) + +1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 +6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 + +``` From ec7cfa2bb0d301ab94d447d85ca592fc57f82833 Mon Sep 17 00:00:00 2001 From: huyunan <3313842905@qq.com> Date: Sun, 21 May 2023 10:31:39 +0800 Subject: [PATCH 19/65] c8 --- README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/README.md b/README.md index 254d410..7cfc18a 100644 --- a/README.md +++ b/README.md @@ -162,7 +162,32 @@ 学生不存在. ``` +#### 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`,对学生按学号从小到大排序。 From 568fcdb1f7ea1bfaa8ecbd572f78d76c5a191364 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 10:57:28 +0800 Subject: [PATCH 20/65] main_chart --- pictures/main_chart.drawio.svg | 720 +++++++++++++++++++++++++++++++++ 1 file changed, 720 insertions(+) create mode 100644 pictures/main_chart.drawio.svg diff --git a/pictures/main_chart.drawio.svg b/pictures/main_chart.drawio.svg new file mode 100644 index 0000000..2c00f92 --- /dev/null +++ b/pictures/main_chart.drawio.svg @@ -0,0 +1,720 @@ + + + + + + + +
+
+
+ main +
+
+
+
+ + main + +
+
+ + + + + +
+
+
+ init +
+
+
+
+ + init + +
+
+ + + + + +
+
+
+ display_menu +
+
+
+
+ + display_menu + +
+
+ + + + + +
+
+
+ c==make_chioice +
+
+
+
+ + c==make_chioice + +
+
+ + + + + +
+
+
+ read_data +
+
+
+
+ + read_data + +
+
+ + + + +
+
+
+ c==CMD_READ +
+
+
+
+ + c==CMD_READ + +
+
+ + + + +
+
+
+ c==CMD_SAVE +
+
+
+
+ + c==CMD_SAVE + +
+
+ + + + +
+
+
+ c==CMD_PRINT +
+
+
+
+ + c==CMD_PRINT + +
+
+ + + + +
+
+
+ c==CMD_QUERY +
+
+
+
+ + c==CMD_QUERY + +
+
+ + + + +
+
+
+ c==CMD_INSERT +
+
+
+
+ + c==CMD_INSERT + +
+
+ + + + +
+
+
+ c==CMD_UPDATE +
+
+
+
+ + c==CMD_UPDATE + +
+
+ + + + +
+
+
+ c==CMD_DELETE +
+
+
+
+ + c==CMD_DELETE + +
+
+ + + + +
+
+
+ c==CMD_SORT +
+
+
+
+ + c==CMD_SORT + +
+
+ + + + +
+
+
+ c==CMD_CHART +
+
+
+
+ + c==CMD_CHART + +
+
+ + + + +
+
+
+ c==CMD_QUIT +
+
+
+
+ + c==CMD_QUIT + +
+
+ + + + +
+
+
+ 确定退出 +
+
+
+
+ + 确定退出 + +
+
+ + + + + +
+
+
+ quit +
+
+
+
+ + quit + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ save_data +
+
+
+
+ + save_data + +
+
+ + + + + +
+
+
+ peint_data +
+
+
+
+ + peint_data + +
+
+ + + + + +
+
+
+ query_data +
+
+
+
+ + query_data + +
+
+ + + + + +
+
+
+ add_data +
+
+
+
+ + add_data + +
+
+ + + + + +
+
+
+ update_data +
+
+
+
+ + update_data + +
+
+ + + + + +
+
+
+ delete_data +
+
+
+
+ + delete_data + +
+
+ + + + + +
+
+
+ sort_data +
+
+
+
+ + sort_data + +
+
+ + + + + +
+
+
+ make_chart +
+
+
+
+ + make_chart + +
+
+ + + + +
+
+
+ 命令错误,请重新选择 +
+
+
+
+ + 命令错误,请重新选择 + +
+
+ + + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From d8eda4c6ee1a738e3014cd299d7a5fba9e717ba7 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 11:01:47 +0800 Subject: [PATCH 21/65] zhu --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 7cfc18a..f72b677 100644 --- a/README.md +++ b/README.md @@ -291,3 +291,11 @@ a: No such file or directory 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)进行调用,系统模块图如下。 From f2fcc0d0749131b0712af02d0c0ce27721cb7342 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 11:01:59 +0800 Subject: [PATCH 22/65] zhu --- .vscode/extensions.json | 5 +++++ xitongmoban.drawio.svg | 0 2 files changed, 5 insertions(+) create mode 100644 .vscode/extensions.json create mode 100644 xitongmoban.drawio.svg diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..ca9e6a0 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "hediet.vscode-drawio" + ] +} \ No newline at end of file diff --git a/xitongmoban.drawio.svg b/xitongmoban.drawio.svg new file mode 100644 index 0000000..e69de29 From 3dd42e1a1253d10f68533073b7330535bd1cae80 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 11:05:48 +0800 Subject: [PATCH 23/65] x --- xitongmoban.drawio.svg | 318 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 318 insertions(+) create mode 100644 xitongmoban.drawio.svg diff --git a/xitongmoban.drawio.svg b/xitongmoban.drawio.svg new file mode 100644 index 0000000..d9fba8e --- /dev/null +++ b/xitongmoban.drawio.svg @@ -0,0 +1,318 @@ + + + + + + + +
+
+
+ init +
+
+
+
+ + init + +
+
+ + + + +
+
+
+ display_menu +
+
+
+
+ + display_menu + +
+
+ + + + +
+
+
+ make_choice +
+
+
+
+ + make_choice + +
+
+ + + + +
+
+
+ confirm +
+
+
+
+ + confirm + +
+
+ + + + +
+
+
+ quit +
+
+
+
+ + quit + +
+
+ + + + + + + + +
+
+
+ main +
+
+
+
+ + main + +
+
+ + + + +
+
+
+ read_data +
+
+
+
+ + read_data + +
+
+ + + + +
+
+
+ save_data +
+
+
+
+ + save_data + +
+
+ + + + +
+
+
+ print_data +
+
+
+
+ + print_data + +
+
+ + + + + + +
+
+
+ query_data +
+
+
+
+ + query_data + +
+
+ + + + +
+
+
+ add_data +
+
+
+
+ + add_data + +
+
+ + + + +
+
+
+ update_data +
+
+
+
+ + update_data + +
+
+ + + + +
+
+
+ delete_data +
+
+
+
+ + delete_data + +
+
+ + + + +
+
+
+ sort_data +
+
+
+
+ + sort_data + +
+
+ + + + +
+
+
+ make_data +
+
+
+
+ + make_data + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ find +
+
+
+
+ + find + +
+
+ + + +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From c10dcae6088424dba84bbb14ec4a6258ba6a3b5d Mon Sep 17 00:00:00 2001 From: pxm3swffk <1131672768@qq.com> Date: Sun, 21 May 2023 11:07:25 +0800 Subject: [PATCH 24/65] Delete 'xitongmoban.drawio.svg' --- xitongmoban.drawio.svg | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 xitongmoban.drawio.svg diff --git a/xitongmoban.drawio.svg b/xitongmoban.drawio.svg deleted file mode 100644 index e69de29..0000000 From 83c1e729de6596224a779416ec49f00eedcff7cc Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 11:08:15 +0800 Subject: [PATCH 25/65] =?UTF-8?q?=E6=8F=92=E5=85=A5=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/README.md b/README.md index 7cfc18a..7670351 100644 --- a/README.md +++ b/README.md @@ -291,3 +291,28 @@ a: No such file or directory 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 + +伪代码: +``` + +``` +流程图: + +![](pictures/main_chart.drawio.svg) From 9c56b9152acfb93165932a314f47a4562fc5a09b Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 11:14:21 +0800 Subject: [PATCH 26/65] xitong --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f72b677..954213c 100644 --- a/README.md +++ b/README.md @@ -299,3 +299,4 @@ a: No such file or directory 数据处理模块包括读取数据(read_data)、保存数据(save_data)、打印数据(print_data)、查询数据(query_data)、添加数据(add_data)、更新数据(update_data)、删除数据(delete_data)、数据排序(sort_data)和生成图表(make_chart)等子模块。其中查询、添加、更新和删除数据还会用到根据编号查询数据的方法(find)。 上述各模块通过主程序(main)进行调用,系统模块图如下。 +![](pictures/xitongmoban.drawio.svg) \ No newline at end of file From 8c0a0c3e4be2872e9d20926706cb4de187c47f3d Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 11:14:30 +0800 Subject: [PATCH 27/65] xitong --- xitongmoban.drawio.svg => pictures/xitongmoban.drawio.svg | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename xitongmoban.drawio.svg => pictures/xitongmoban.drawio.svg (100%) diff --git a/xitongmoban.drawio.svg b/pictures/xitongmoban.drawio.svg similarity index 100% rename from xitongmoban.drawio.svg rename to pictures/xitongmoban.drawio.svg From 4b2e24c0c1dd678ef4325982c90c3ba73a75f0db Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 11:15:38 +0800 Subject: [PATCH 28/65] =?UTF-8?q?=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7670351..834f9e6 100644 --- a/README.md +++ b/README.md @@ -304,15 +304,40 @@ a: No such file or directory +各模块的主要功能如下: + +#### 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: if c == CMD_QUERY then 查询数据 +Step 2.7: if c == CMD_ADD then 添加数据 +Step 2.8: if c == CMD_UPDATE then 修改数据 +Step 2.9: if c == CMD_DELETE then 删除数据 +Step 2.10: if c == CMD_SORT then 排序数据 +Step 2.11: if c == CMD_MAKE then 显示图表 +Step 2.12: if c == CMD_QUIT then 退出 -``` -流程图: ![](pictures/main_chart.drawio.svg) From 14e5d26e1173e63e1388f1bb1c8ddebb8ac0ee7e Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 11:24:40 +0800 Subject: [PATCH 29/65] make-chart --- pictures/make_chart.drawio.svg | 71 ++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 pictures/make_chart.drawio.svg diff --git a/pictures/make_chart.drawio.svg b/pictures/make_chart.drawio.svg new file mode 100644 index 0000000..43a66b3 --- /dev/null +++ b/pictures/make_chart.drawio.svg @@ -0,0 +1,71 @@ + + + + + + + +
+
+
+ make_chart +
+
+
+
+ + make_chart + +
+
+ + + + +
+
+
+ 读取文件 +
+
+
+
+ + 读取文件 + +
+
+ + + + +
+
+
+ 显示文件 +
+
+
+
+ + 显示文件 + +
+
+ + + + + + + +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From ba11fdf95fc02c38925254b34f17182a8a64b374 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 11:26:59 +0800 Subject: [PATCH 30/65] make_chart --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index e90139f..e25ac18 100644 --- a/README.md +++ b/README.md @@ -342,3 +342,13 @@ Step 2.12: if c == CMD_QUIT then 退出 ![](pictures/main_chart.drawio.svg) + + + + +#### make_chart + +Step 1: 读取文件 +Step 2: 显示图表 + +![](pictures/make_chart.drawio.svg) \ No newline at end of file From 36f81db900c68afc0a3621a1fd9f9a98a33dadf3 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 14:59:02 +0800 Subject: [PATCH 31/65] confirm --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 834f9e6..2c307c0 100644 --- a/README.md +++ b/README.md @@ -341,3 +341,9 @@ Step 2.12: if c == CMD_QUIT then 退出 ![](pictures/main_chart.drawio.svg) + +#### confirm + +Step 1: 输出 确定要退出吗 +Step 2: if 确认 then 退出 + From ba7b0174ecebb8417d4aa45c6fdc9150d2c12263 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:02:39 +0800 Subject: [PATCH 32/65] C10 --- .vscode/extensions.json | 5 ++ query_data.drawio.svg | 143 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 .vscode/extensions.json create mode 100644 query_data.drawio.svg diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..8b3d6e9 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "mhutchie.git-graph" + ] +} \ No newline at end of file diff --git a/query_data.drawio.svg b/query_data.drawio.svg new file mode 100644 index 0000000..fa4a66d --- /dev/null +++ b/query_data.drawio.svg @@ -0,0 +1,143 @@ + + + + + + + + + +
+
+
+ query_data +
+
+
+
+ + query_data + +
+
+ + + + + + +
+
+
+ 输入学号 +
+
+
+
+ + 输入学号 + +
+
+ + + + + +
+
+
+ Label +
+
+
+
+ + Label + +
+
+ + + + + + +
+
+
+ 学号存在? +
+
+
+
+ + 学号存在? + +
+
+ + + + + + +
+
+
+ 显示:学号不存在 +
+
+
+
+ + 显示:学号不存在 + +
+
+ + + + + +
+
+
+ Label +
+
+
+
+ + Label + +
+
+ + + + +
+
+
+ 输出姓名学号成绩 +
+
+
+
+ + 输出姓名学号成绩 + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From 952f5eff251f7fea48c916cc3d063d78cf73a925 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 15:04:11 +0800 Subject: [PATCH 33/65] confirm --- pictures/confirm.drawio.svg | 90 +++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 pictures/confirm.drawio.svg diff --git a/pictures/confirm.drawio.svg b/pictures/confirm.drawio.svg new file mode 100644 index 0000000..8dc9893 --- /dev/null +++ b/pictures/confirm.drawio.svg @@ -0,0 +1,90 @@ + + + + + + + +
+
+
+ confirm +
+
+
+
+ + confirm + +
+
+ + + + +
+
+
+ 提示确定要退出吗 +
+
+
+
+ + 提示确定要退出吗 + +
+
+ + + + +
+
+
+ 退出? +
+
+
+
+ + 退出? + +
+
+ + + + +
+
+
+ 确认 +
+
+
+
+ + 确认 + +
+
+ + + + + + + + + +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From 5df5344798939af790bace7c656ec4bc47c5bc42 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 15:04:45 +0800 Subject: [PATCH 34/65] confirm --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2c307c0..157f9ff 100644 --- a/README.md +++ b/README.md @@ -347,3 +347,4 @@ Step 2.12: if c == CMD_QUIT then 退出 Step 1: 输出 确定要退出吗 Step 2: if 确认 then 退出 +![](pictures/confirm.drawio.svg) From e93fbab44e3ea3c16f47b9f776b32b357cf50fe9 Mon Sep 17 00:00:00 2001 From: huyunan <3313842905@qq.com> Date: Sun, 21 May 2023 15:12:18 +0800 Subject: [PATCH 35/65] data --- README.md | 18 +++-- data.drawio.svg | 170 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+), 10 deletions(-) create mode 100644 data.drawio.svg diff --git a/README.md b/README.md index 7b0c3e6..b60fcfa 100644 --- a/README.md +++ b/README.md @@ -343,20 +343,18 @@ Step 2.12: if c == CMD_QUIT then 退出 ![](pictures/main_chart.drawio.svg) +#### save_data +Step 1: 输入文件名 +Step 2: 打开文件 +Step 3: if 打开文件失败 then 提示打开文件失败并结束 +Step 4: 将所有库存记录写入文件 +Step 5: 关闭文件 - +![](pictures/data.drawio.svg) #### make_chart Step 1: 读取文件 Step 2: 显示图表 -![](pictures/make_chart.drawio.svg) - - -#### confirm - -Step 1: 输出 确定要退出吗 -Step 2: if 确认 then 退出 - -![](pictures/confirm.drawio.svg) +![](pictures/make_chart.drawio.svg) \ No newline at end of file diff --git a/data.drawio.svg b/data.drawio.svg new file mode 100644 index 0000000..ce072f3 --- /dev/null +++ b/data.drawio.svg @@ -0,0 +1,170 @@ + + + + + + + + + +
+
+
+ + save_data + +
+
+
+
+ + save_data + +
+
+ + + + + + +
+
+
+ + 输入文件名 + +
+
+
+
+ + 输入文件名 + +
+
+ + + + + + +
+
+
+ + 打开文件 + +
+
+
+
+ + 打开文件 + +
+
+ + + + + + +
+
+
+ + 打开文件成功? + +
+
+
+
+ + 打开文件成功? + +
+
+ + + + + + +
+
+
+
+ + 把 + + + 所有库存记录写入文档 + +
+
+
+
+
+ + 把所有库存记录写入文档 + +
+
+ + + + + + + + +
+
+
+ + 关闭文件 + +
+
+
+
+ + 关闭文件 + +
+
+ + + + + + + + +
+
+
+ + 提示打开文件失败 + +
+
+
+
+ + 提示打开文件失败 + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From a22c4c334ea5153d55d8e15ab1a1149dd233a210 Mon Sep 17 00:00:00 2001 From: huyunan <3313842905@qq.com> Date: Sun, 21 May 2023 15:12:33 +0800 Subject: [PATCH 36/65] data --- data.drawio.svg => pictures/data.drawio.svg | 125 +++++++++-------- pictures/read.drawio.svg | 144 ++++++++++++++++++++ 2 files changed, 205 insertions(+), 64 deletions(-) rename data.drawio.svg => pictures/data.drawio.svg (56%) create mode 100644 pictures/read.drawio.svg diff --git a/data.drawio.svg b/pictures/data.drawio.svg similarity index 56% rename from data.drawio.svg rename to pictures/data.drawio.svg index ce072f3..ae0dab7 100644 --- a/data.drawio.svg +++ b/pictures/data.drawio.svg @@ -1,13 +1,13 @@ - + - - - + + + -
+
@@ -17,147 +17,144 @@
- + save_data - - - + + + + + + + -
+
- 输入文件名 + 打开文件成功?
- - 输入文件名 + + 打开文件成功? - - - + + + + + + + -
+
- - 打开文件 + + 关闭文件
- - 打开文件 + + 关闭文件 - - - + + + + + -
+
- 打开文件成功? + 提示打开文件失败
- - 打开文件成功? + + 提示打开文件失败 - - - + + + + -
+
-
- - 把 - - - 所有库存记录写入文档 - -
+ + 输入文件名 +
- - 把所有库存记录写入文档 + + 输入文件名 - - - - - + + + -
-
+
+
- - 关闭文件 - + 打开文件夹
- - 关闭文件 + + 打开文件夹 - - - - - + -
+
- 提示打开文件失败 + 把所有库存记录写入文件
- - 提示打开文件失败 + + 把所有库存记录写入文件 - diff --git a/pictures/read.drawio.svg b/pictures/read.drawio.svg new file mode 100644 index 0000000..1ef4a42 --- /dev/null +++ b/pictures/read.drawio.svg @@ -0,0 +1,144 @@ + + + + + + + + + +
+
+
+ + read_data + +
+
+
+
+ + read_data + +
+
+ + + + + + + + +
+
+
+ + 打开文件 + +
+
+
+
+ + 打开文件 + +
+
+ + + + + + + + +
+
+
+ + 文件为空? + +
+
+
+
+ + 文件为空? + +
+
+ + + + + + +
+
+
+ + 读取文件 + +
+
+
+
+ + 读取文件 + +
+
+ + + + + + +
+
+
+ + 显示数据,记录 + +
+
+
+
+ + 显示数据,记录 + +
+
+ + + + + + + +
+
+
+ + 输入文件名 + +
+
+
+
+ + 输入文件名 + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From 016902f583a53d148bf443db9d0bafd7742bc629 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 15:14:08 +0800 Subject: [PATCH 37/65] 1 --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b60fcfa..de559bc 100644 --- a/README.md +++ b/README.md @@ -352,9 +352,11 @@ Step 4: 将所有库存记录写入文件 Step 5: 关闭文件 ![](pictures/data.drawio.svg) + #### make_chart Step 1: 读取文件 Step 2: 显示图表 -![](pictures/make_chart.drawio.svg) \ No newline at end of file +![](pictures/make_chart.drawio.svg) + From 97652a292de652e725da30ac7e1e2f0d29639af6 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 15:15:28 +0800 Subject: [PATCH 38/65] confirm --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index de559bc..71898dc 100644 --- a/README.md +++ b/README.md @@ -360,3 +360,9 @@ Step 2: 显示图表 ![](pictures/make_chart.drawio.svg) +#### confirm + +Step 1: 输出 确定要退出吗 +Step 2: if 确认 then 退出 + +![](pictures/confirm.drawio.svg) \ No newline at end of file From 3e3b6c0b5327c1e2dbc401b2712e6798ea48b992 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:17:06 +0800 Subject: [PATCH 39/65] ykh --- pictures/query_data.drawio.svg | 143 +++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 pictures/query_data.drawio.svg diff --git a/pictures/query_data.drawio.svg b/pictures/query_data.drawio.svg new file mode 100644 index 0000000..fa4a66d --- /dev/null +++ b/pictures/query_data.drawio.svg @@ -0,0 +1,143 @@ + + + + + + + + + +
+
+
+ query_data +
+
+
+
+ + query_data + +
+
+ + + + + + +
+
+
+ 输入学号 +
+
+
+
+ + 输入学号 + +
+
+ + + + + +
+
+
+ Label +
+
+
+
+ + Label + +
+
+ + + + + + +
+
+
+ 学号存在? +
+
+
+
+ + 学号存在? + +
+
+ + + + + + +
+
+
+ 显示:学号不存在 +
+
+
+
+ + 显示:学号不存在 + +
+
+ + + + + +
+
+
+ Label +
+
+
+
+ + Label + +
+
+ + + + +
+
+
+ 输出姓名学号成绩 +
+
+
+
+ + 输出姓名学号成绩 + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From 02d627a5eb34d7043058c6f8f89f9abc5797e258 Mon Sep 17 00:00:00 2001 From: huyunan <3313842905@qq.com> Date: Sun, 21 May 2023 15:19:23 +0800 Subject: [PATCH 40/65] save --- pictures/data.drawio.svg | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pictures/data.drawio.svg b/pictures/data.drawio.svg index ae0dab7..403fb87 100644 --- a/pictures/data.drawio.svg +++ b/pictures/data.drawio.svg @@ -1,4 +1,4 @@ - + @@ -24,8 +24,6 @@ - - From bb86b9e28701ada92cc5c84868391366306a8e11 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:20:22 +0800 Subject: [PATCH 41/65] ykh --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index a135774..d13a869 100644 --- a/README.md +++ b/README.md @@ -360,6 +360,13 @@ Step 2: 显示图表 ![](pictures/make_chart.drawio.svg) +#### query_data + +Step 1: 输入学生学号 +Step 2: if学号不存在 then 提示学生不存在并结束 +Step 3: else 学号存在 then 输出学号、姓名、成绩 + +![](pictures/query_data.drawio.svg) #### confirm From 59101191ab155c5ac76a73c6725b47cb9912bb73 Mon Sep 17 00:00:00 2001 From: huyunan <3313842905@qq.com> Date: Sun, 21 May 2023 15:21:49 +0800 Subject: [PATCH 42/65] save --- README.md | 2 +- pictures/{data.drawio.svg => save.drawio.svg} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename pictures/{data.drawio.svg => save.drawio.svg} (100%) diff --git a/README.md b/README.md index a135774..d15842c 100644 --- a/README.md +++ b/README.md @@ -351,7 +351,7 @@ Step 3: if 打开文件失败 then 提示打开文件失败并结束 Step 4: 将所有库存记录写入文件 Step 5: 关闭文件 -![](pictures/data.drawio.svg) +![](pictures/save.drawio.svg) #### make_chart diff --git a/pictures/data.drawio.svg b/pictures/save.drawio.svg similarity index 100% rename from pictures/data.drawio.svg rename to pictures/save.drawio.svg From bc4710398c1b30cf5274ad99f12857efeb035589 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:23:21 +0800 Subject: [PATCH 43/65] ykh --- README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d13a869..7dfbb7d 100644 --- a/README.md +++ b/README.md @@ -353,13 +353,6 @@ Step 5: 关闭文件 ![](pictures/data.drawio.svg) -#### make_chart - -Step 1: 读取文件 -Step 2: 显示图表 - -![](pictures/make_chart.drawio.svg) - #### query_data Step 1: 输入学生学号 @@ -368,6 +361,14 @@ Step 3: else 学号存在 then 输出学号、姓名、成绩 ![](pictures/query_data.drawio.svg) +#### make_chart + +Step 1: 读取文件 +Step 2: 显示图表 + +![](pictures/make_chart.drawio.svg) + + #### confirm Step 1: 输出 确定要退出吗 From 398b7eb014b4f7a26283e2a01af46cc2eefd9fbb Mon Sep 17 00:00:00 2001 From: huyunan <3313842905@qq.com> Date: Sun, 21 May 2023 15:23:25 +0800 Subject: [PATCH 44/65] save --- README.md | 2 +- pictures/{save.drawio.svg => save_data.drawio.svg} | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) rename pictures/{save.drawio.svg => save_data.drawio.svg} (88%) diff --git a/README.md b/README.md index d491cac..4ee21e5 100644 --- a/README.md +++ b/README.md @@ -351,7 +351,7 @@ Step 3: if 打开文件失败 then 提示打开文件失败并结束 Step 4: 将所有库存记录写入文件 Step 5: 关闭文件 -![](pictures/save.drawio.svg) +![](pictures/save_data.drawio.svg) #### make_chart diff --git a/pictures/save.drawio.svg b/pictures/save_data.drawio.svg similarity index 88% rename from pictures/save.drawio.svg rename to pictures/save_data.drawio.svg index 403fb87..47de788 100644 --- a/pictures/save.drawio.svg +++ b/pictures/save_data.drawio.svg @@ -1,4 +1,4 @@ - + @@ -22,8 +22,6 @@
- - From 162a3eddb4e3531179e27d8d6e4187f93097a7e1 Mon Sep 17 00:00:00 2001 From: huyunan <3313842905@qq.com> Date: Sun, 21 May 2023 15:26:04 +0800 Subject: [PATCH 45/65] read --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index ae57e64..53c82fc 100644 --- a/README.md +++ b/README.md @@ -361,6 +361,16 @@ Step 3: else 学号存在 then 输出学号、姓名、成绩 ![](pictures/query_data.drawio.svg) +#### read_data + +Step 1: 输入文件名 +Step 2: 打开文件 +Step 3: if 文件为空 then 结束 +Step 4: else 读取文件 +Step 5: 提示读取并记录 + +![](pictures/read.drawio.svg) + #### make_chart Step 1: 读取文件 From 8ebd13b35152edefc47cef2a63ef055836749a8e Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 15:28:32 +0800 Subject: [PATCH 46/65] save --- pictures/save_data.drawio.svg | 36 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/pictures/save_data.drawio.svg b/pictures/save_data.drawio.svg index 47de788..9028fcf 100644 --- a/pictures/save_data.drawio.svg +++ b/pictures/save_data.drawio.svg @@ -1,4 +1,4 @@ - + @@ -43,17 +43,13 @@ - - - - - + -
+
@@ -63,20 +59,16 @@
- + 关闭文件 - - - - - + -
+
@@ -86,12 +78,12 @@
- + 提示打开文件失败 - + @@ -113,8 +105,6 @@ - - @@ -151,6 +141,16 @@ + + + + + + + + + + From 37feb417beac7ccb84257a255834557b858a1539 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 15:30:27 +0800 Subject: [PATCH 47/65] 1 --- README.md | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 53c82fc..d0dc332 100644 --- a/README.md +++ b/README.md @@ -343,6 +343,18 @@ Step 2.12: if c == CMD_QUIT then 退出 ![](pictures/main_chart.drawio.svg) + +#### read_data + +Step 1: 输入文件名 +Step 2: 打开文件 +Step 3: if 文件为空 then 结束 +Step 4: else 读取文件 +Step 5: 提示读取并记录 + +![](pictures/read.drawio.svg) + + #### save_data Step 1: 输入文件名 @@ -361,15 +373,6 @@ Step 3: else 学号存在 then 输出学号、姓名、成绩 ![](pictures/query_data.drawio.svg) -#### read_data - -Step 1: 输入文件名 -Step 2: 打开文件 -Step 3: if 文件为空 then 结束 -Step 4: else 读取文件 -Step 5: 提示读取并记录 - -![](pictures/read.drawio.svg) #### make_chart From 4d79672080509fed73dde7bb138b3a864640500f Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 15:32:29 +0800 Subject: [PATCH 48/65] delete --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 53c82fc..3e0b5df 100644 --- a/README.md +++ b/README.md @@ -379,6 +379,15 @@ Step 2: 显示图表 ![](pictures/make_chart.drawio.svg) +#### delete_data + +Step 1: 输入学号 +Step 2: if 不存在 then 提示学生不存在并结束 +Step 3: else 删除学生信息 +Step 4: 提示删除成功 +![](pictures/delete.drawio.svg) + + #### confirm Step 1: 输出 确定要退出吗 From fa6a49a57690acd94e0e7c46fd2bf4af23bad870 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 15:32:44 +0800 Subject: [PATCH 49/65] delete --- pictures/delete.drawio.svg | 129 +++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 pictures/delete.drawio.svg diff --git a/pictures/delete.drawio.svg b/pictures/delete.drawio.svg new file mode 100644 index 0000000..dc8fc3d --- /dev/null +++ b/pictures/delete.drawio.svg @@ -0,0 +1,129 @@ + + + + + + + +
+
+
+ delete_data +
+
+
+
+ + delete_data + +
+
+ + + + +
+
+
+ 输入学号 +
+
+
+
+ + 输入学号 + +
+
+ + + + + + + + +
+
+
+ 学号存在? +
+
+
+
+ + 学号存在? + +
+
+ + + + + + +
+
+
+ 学号不存在 +
+
+
+
+ + 学号不存在 + +
+
+ + + + +
+
+
+ 删除学生信息 +
+
+
+
+ + 删除学生信息 + +
+
+ + + + + + +
+
+
+ 已更新 +
+
+
+
+ + 已更新 + +
+
+ + + + + + +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From dbea8e4559cc7d9a91341f8aeb0c8f0be9527bb6 Mon Sep 17 00:00:00 2001 From: huyunan <3313842905@qq.com> Date: Sun, 21 May 2023 15:33:52 +0800 Subject: [PATCH 50/65] print --- README.md | 7 ++++++ pictures/print.drawio.svg | 52 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 pictures/print.drawio.svg diff --git a/README.md b/README.md index 53c82fc..5e0a801 100644 --- a/README.md +++ b/README.md @@ -361,6 +361,13 @@ Step 3: else 学号存在 then 输出学号、姓名、成绩 ![](pictures/query_data.drawio.svg) + +#### print_data + +Step 1: 输出学号、姓名、成绩 + +![](pictures/print.drawio.svg) + #### read_data Step 1: 输入文件名 diff --git a/pictures/print.drawio.svg b/pictures/print.drawio.svg new file mode 100644 index 0000000..88d7442 --- /dev/null +++ b/pictures/print.drawio.svg @@ -0,0 +1,52 @@ + + + + + + + + + +
+
+
+ print_data +
+
+
+
+ + print_data + +
+
+ + + + + + +
+
+
+ 输出学号姓名成绩 +
+
+
+
+ + 输出学号姓名成绩 + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From 5494469c66f49934fc2791c21cc03647e6ba7e31 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 15:36:53 +0800 Subject: [PATCH 51/65] 12 --- README.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index b278375..8c275a6 100644 --- a/README.md +++ b/README.md @@ -299,10 +299,9 @@ a: No such file or directory 数据处理模块包括读取数据(read_data)、保存数据(save_data)、打印数据(print_data)、查询数据(query_data)、添加数据(add_data)、更新数据(update_data)、删除数据(delete_data)、数据排序(sort_data)和生成图表(make_chart)等子模块。其中查询、添加、更新和删除数据还会用到根据编号查询数据的方法(find)。 上述各模块通过主程序(main)进行调用,系统模块图如下。 -![](pictures/xitongmoban.drawio.svg) +![](pictures/xitongmoban.drawio.svg) -## 详细设计 各模块的主要功能如下: @@ -373,15 +372,6 @@ Step 3: else 学号存在 then 输出学号、姓名、成绩 ![](pictures/query_data.drawio.svg) - -#### make_chart - -Step 1: 读取文件 -Step 2: 显示图表 - -![](pictures/make_chart.drawio.svg) - - #### delete_data Step 1: 输入学号 @@ -390,6 +380,13 @@ Step 3: else 删除学生信息 Step 4: 提示删除成功 ![](pictures/delete.drawio.svg) +#### make_chart + +Step 1: 读取文件 +Step 2: 显示图表 + +![](pictures/make_chart.drawio.svg) + #### confirm From 9a277f26c2e85861c4fca4184d6849b9864d4eef Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 15:39:12 +0800 Subject: [PATCH 52/65] sort --- pictures/sort.drawio.svg | 90 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 pictures/sort.drawio.svg diff --git a/pictures/sort.drawio.svg b/pictures/sort.drawio.svg new file mode 100644 index 0000000..49e9efd --- /dev/null +++ b/pictures/sort.drawio.svg @@ -0,0 +1,90 @@ + + + + + + + + + +
+
+
+ sort_data +
+
+
+
+ + sort_data + +
+
+ + + + + + +
+
+
+ 读取文件 +
+
+
+
+ + 读取文件 + +
+
+ + + + + + +
+
+
+ 排序 +
+
+
+
+ + 排序 + +
+
+ + + + + + +
+
+
+ 提示排序已完成 +
+
+
+
+ + 提示排序已完成 + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From 84aafedb31f779bf29ab88f9c5e1274db4ba78fc Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 15:39:20 +0800 Subject: [PATCH 53/65] sort --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index b278375..a201841 100644 --- a/README.md +++ b/README.md @@ -391,6 +391,13 @@ Step 4: 提示删除成功 ![](pictures/delete.drawio.svg) +sort_data +Step 1: 读取文件 +Step 2: 进行排序 +Step 3: 提示排序已完成 +![](pictures/sort.drawio.svg) + + #### confirm Step 1: 输出 确定要退出吗 From 353b48d18a7b3e44fc217060d344286f76231ce5 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:40:16 +0800 Subject: [PATCH 54/65] ykh --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index b278375..bc7da43 100644 --- a/README.md +++ b/README.md @@ -373,6 +373,16 @@ Step 3: else 学号存在 then 输出学号、姓名、成绩 ![](pictures/query_data.drawio.svg) +#### add_data + +Step 1: if 数据库满 then 提示数据库满并结束 +Step 2: 输入学号 +Step 3: if 学生已存在 then 提示学生已存在并结束 +Step 4: 输入学生名字和成绩 +Step 5: 添加学生到数据 +Step 6: 提示添加成功 +![](pictures/add_data.drawio.svg) + #### make_chart From 76e360be7d0fffbffcedb802227f0fe41a59be84 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 15:40:30 +0800 Subject: [PATCH 55/65] sort --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a201841..4bd8fec 100644 --- a/README.md +++ b/README.md @@ -391,7 +391,7 @@ Step 4: 提示删除成功 ![](pictures/delete.drawio.svg) -sort_data +#### sort_data Step 1: 读取文件 Step 2: 进行排序 Step 3: 提示排序已完成 From f90163ca9fd953de762b341ab919243fd5a91040 Mon Sep 17 00:00:00 2001 From: bo yu <1131672768@qq.com> Date: Sun, 21 May 2023 15:42:34 +0800 Subject: [PATCH 56/65] sort --- README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 5907161..7c57884 100644 --- a/README.md +++ b/README.md @@ -388,13 +388,6 @@ Step 3: else 删除学生信息 Step 4: 提示删除成功 ![](pictures/delete.drawio.svg) -#### make_chart - -Step 1: 读取文件 -Step 2: 显示图表 - -![](pictures/make_chart.drawio.svg) - #### sort_data Step 1: 读取文件 @@ -403,6 +396,14 @@ Step 3: 提示排序已完成 ![](pictures/sort.drawio.svg) +#### make_chart + +Step 1: 读取文件 +Step 2: 显示图表 + +![](pictures/make_chart.drawio.svg) + + #### confirm Step 1: 输出 确定要退出吗 From d92c83346d59d338121be2abfc28605aa06adee1 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:43:04 +0800 Subject: [PATCH 57/65] ykh --- pictures/add_data.drawio.svg | 259 +++++++++++++++++++++++++++++++++++ 1 file changed, 259 insertions(+) create mode 100644 pictures/add_data.drawio.svg diff --git a/pictures/add_data.drawio.svg b/pictures/add_data.drawio.svg new file mode 100644 index 0000000..d688a9e --- /dev/null +++ b/pictures/add_data.drawio.svg @@ -0,0 +1,259 @@ + + + + + + + + + +
+
+
+ add_data +
+
+
+
+ + add_data + +
+
+ + + + + + + + +
+
+
+ 数据库满? +
+
+
+
+ + 数据库满? + +
+
+ + + + + + +
+
+
+ 显示:数据库满,不能添加 +
+
+
+
+ + 显示:数据库满,不能添加 + +
+
+ + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + + + +
+
+
+ 输入学号 +
+
+
+
+ + 输入学号 + +
+
+ + + + + + + + +
+
+
+ 学号存在? +
+
+
+
+ + 学号存在? + +
+
+ + + + + + +
+
+
+ 显示:学号已存在 +
+
+
+
+ + 显示:学号已存在 + +
+
+ + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + + +
+
+
+ 输入姓名 +
+
+
+
+ + 输入姓名 + +
+
+ + + + + + +
+
+
+ 输入成绩 +
+
+
+
+ + 输入成绩 + +
+
+ + + + + + +
+
+
+ 添加到学生数据科 +
+
+
+
+ + 添加到学生数据科 + +
+
+ + + + + + +
+
+
+ 显示:零件已添加 +
+
+
+
+ + 显示:零件已添加 + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From f121cc66798ec9cdd56c0ba0f2fb76f26469ce25 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:43:55 +0800 Subject: [PATCH 58/65] ykh --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index bc7da43..01981b9 100644 --- a/README.md +++ b/README.md @@ -383,7 +383,6 @@ Step 5: 添加学生到数据 Step 6: 提示添加成功 ![](pictures/add_data.drawio.svg) - #### make_chart Step 1: 读取文件 From 1c8303978db382330595fc1c68fb4cae2cf58e95 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:51:33 +0800 Subject: [PATCH 59/65] ykh --- README.md | 9 +- pictures/updata_data.drawio.svg | 164 ++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 pictures/updata_data.drawio.svg diff --git a/README.md b/README.md index be780df..2e42cee 100644 --- a/README.md +++ b/README.md @@ -388,7 +388,14 @@ Step 1: 输出学号、姓名、成绩 ![](pictures/print.drawio.svg) -#### read_data +#### update_data + +Step 1: 输入学号 +Step 2: if 不存在 then 提示学生不存在并结束 +Step 3: else 输入学号、姓名、成绩 +Step 4: 已更新 +![](pictures/updata_data.drawio.svg) + #### delete_data Step 1: 输入学号 diff --git a/pictures/updata_data.drawio.svg b/pictures/updata_data.drawio.svg new file mode 100644 index 0000000..a6472a4 --- /dev/null +++ b/pictures/updata_data.drawio.svg @@ -0,0 +1,164 @@ + + + + + + + + + +
+
+
+ updata_data +
+
+
+
+ + updata_data + +
+
+ + + + + + +
+
+
+ 输入学号 +
+
+
+
+ + 输入学号 + +
+
+ + + + + + + + +
+
+
+ 学号存在? +
+
+
+
+ + 学号存在? + +
+
+ + + + + + +
+
+
+ 输出学号姓名成绩 +
+
+
+
+ + 输出学号姓名成绩 + +
+
+ + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + + +
+
+
+ 已更新 +
+
+
+
+ + 已更新 + +
+
+ + + + + + +
+
+
+ 学号不存在 +
+
+
+
+ + 学号不存在 + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From ef309fb94347fa97d3d8b92781ea5a8901fd2fc7 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 15:53:57 +0800 Subject: [PATCH 60/65] over --- README.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2e42cee..11a82dc 100644 --- a/README.md +++ b/README.md @@ -364,6 +364,12 @@ Step 5: 关闭文件 ![](pictures/save_data.drawio.svg) +#### print_data + +Step 1: 输出学号、姓名、成绩 + +![](pictures/print.drawio.svg) + #### query_data Step 1: 输入学生学号 @@ -380,13 +386,9 @@ Step 3: if 学生已存在 then 提示学生已存在并结束 Step 4: 输入学生名字和成绩 Step 5: 添加学生到数据 Step 6: 提示添加成功 -![](pictures/add_data.drawio.svg) -#### print_data - -Step 1: 输出学号、姓名、成绩 +![](pictures/add_data.drawio.svg) -![](pictures/print.drawio.svg) #### update_data @@ -394,6 +396,7 @@ Step 1: 输入学号 Step 2: if 不存在 then 提示学生不存在并结束 Step 3: else 输入学号、姓名、成绩 Step 4: 已更新 + ![](pictures/updata_data.drawio.svg) #### delete_data @@ -402,6 +405,7 @@ Step 1: 输入学号 Step 2: if 不存在 then 提示学生不存在并结束 Step 3: else 删除学生信息 Step 4: 提示删除成功 + ![](pictures/delete.drawio.svg) @@ -409,6 +413,7 @@ Step 4: 提示删除成功 Step 1: 读取文件 Step 2: 进行排序 Step 3: 提示排序已完成 + ![](pictures/sort.drawio.svg) From 8f769292666661e0ecf041105d30ae5706741beb Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:54:04 +0800 Subject: [PATCH 61/65] ykh --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2e42cee..4b686ef 100644 --- a/README.md +++ b/README.md @@ -364,6 +364,12 @@ Step 5: 关闭文件 ![](pictures/save_data.drawio.svg) +#### print_data + +Step 1: 输出学号、姓名、成绩 + +![](pictures/print.drawio.svg) + #### query_data Step 1: 输入学生学号 @@ -382,12 +388,6 @@ Step 5: 添加学生到数据 Step 6: 提示添加成功 ![](pictures/add_data.drawio.svg) -#### print_data - -Step 1: 输出学号、姓名、成绩 - -![](pictures/print.drawio.svg) - #### update_data Step 1: 输入学号 From 050eedc687d79adc78ed303978e950f50d80db40 Mon Sep 17 00:00:00 2001 From: ykhao <2649400527@qq.com> Date: Sun, 21 May 2023 15:55:38 +0800 Subject: [PATCH 62/65] ykh --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index bed49b7..b4ab839 100644 --- a/README.md +++ b/README.md @@ -389,12 +389,6 @@ Step 6: 提示添加成功 ![](pictures/add_data.drawio.svg) -#### print_data - -Step 1: 输出学号、姓名、成绩 - -![](pictures/print.drawio.svg) - #### update_data Step 1: 输入学号 From 6c05a2d3e5bb9ead30609a6da17e1ec003bc5b26 Mon Sep 17 00:00:00 2001 From: plebkff6w <1844263540@qq.com> Date: Sun, 21 May 2023 16:23:21 +0800 Subject: [PATCH 63/65] Delete '.vscode/extensions.json' --- .vscode/extensions.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index e69de29..0000000 From 79dc6797c2f873c269d3d2088270d85d69448752 Mon Sep 17 00:00:00 2001 From: xiao dong <1844263540@qq.com> Date: Sun, 21 May 2023 16:33:14 +0800 Subject: [PATCH 64/65] 1 --- README.md | 433 +----------------------------------------------------- 1 file changed, 1 insertion(+), 432 deletions(-) diff --git a/README.md b/README.md index 11a82dc..65b4fbb 100644 --- a/README.md +++ b/README.md @@ -1,433 +1,2 @@ -# 实现学生成绩管理系统 +# text4 -2023年5月21日 - -董函铄 胡煜男 于博 袁楷昊 - -## 项目简介 - -本系统是程序设计与问题求解课程设计项目,是为教师提供管理班级成绩的工具,该系统可以实现的对学生的成绩进行增、删、改、查、信息保存和信息导入等基本功能,以及对学生成绩排序和分段的扩展功能,有利于对学生成绩管理。项目采用 C 语言编程实现,在 VS Code 集成开发环境(IDE)中用 GCC 进行编译。系统采用模块化设计,程序结构清晰,采用菜单驱动的命令行界面,操作便捷,能够用 CSV 格式读取和保存数据,通用性强,能够用图表展示数据,直观清楚。 - -下载地址:https://code.educoder.net/plebkff6w/text4 - -项目开发过程中采用 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 -输入学号:101 -学号不存在. - -``` - -#### C6: 打印学生信息及成绩 - -选择菜单命令 `3`,打印 - -``` -请选择:3 -------------------------------------------------------- -| NUMBER | NAME | ON HAND | -------------------------------------------------------- -| 101 | 小李 | 80 | -------------------------------------------------------- - -``` - -#### C7: 修改学生信息及成绩 - -选择菜单命令 `7`,根据提示输入学号,若学号存在,则继续输入学号、姓名、成绩,并修改库存记录;否则,提示学号不存在并结束。 - -``` -请选择:7 -输入学号:104 -输入姓名:小刘 -输入成绩:96 -学生 104 已更新 - -1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 -6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 - -请选择:3 -------------------------------------------------------- -| NUMBER | NAME | ON HAND | -------------------------------------------------------- -| 104 | 小刘 | 96 | -------------------------------------------------------- - -1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 -6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 - -请选择:7 -输入学号:104 -学生不存在. - -``` -#### 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 | 小明 | 70 | -------------------------------------------------------- - -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 | 小明 | 70 | -| 101 | 小米 | 80 | -------------------------------------------------------- - -``` - -#### C10: 从文件中读取学生信息及成绩 - -选择菜单命令 `1`,提示输入文件名,若文件存在,则打开文件读取 CSV 格式保存的所有库存记录;否则,若文件不存在,则给出错误信息并结束。 - -假设文件 `a.csv` 中,以 CSV (Comma-Separated Values)格式保存了如下记录: - -``` -103,小红,80 -104,小光,100 -101,小米,80 -102,小明,70 -``` - -则读取记录的过程如下: - -``` -请选择:1 -读取数据 -请输入文件名:a.csv -读取 4 记录 - -1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 -6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 - -请选择:3 -------------------------------------------------------- -| NUMBER | NAME | ON HAND | -------------------------------------------------------- -| 103 | 小红 | 80 | -| 104 | 小光 | 100 | -| 101 | 小米 | 80 | -| 102 | 小明 | 70 | -------------------------------------------------------- - -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 : 小光 | ************ (100) - 101 : 小米 | ******************** (80) - 102 : 小明 | ********** (70) - -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)进行调用,系统模块图如下。 - -![](pictures/xitongmoban.drawio.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: if c == CMD_QUERY then 查询数据 -Step 2.7: if c == CMD_ADD then 添加数据 -Step 2.8: if c == CMD_UPDATE then 修改数据 -Step 2.9: if c == CMD_DELETE then 删除数据 -Step 2.10: if c == CMD_SORT then 排序数据 -Step 2.11: if c == CMD_MAKE then 显示图表 -Step 2.12: if c == CMD_QUIT then 退出 - - -![](pictures/main_chart.drawio.svg) - - -#### read_data - -Step 1: 输入文件名 -Step 2: 打开文件 -Step 3: if 文件为空 then 结束 -Step 4: else 读取文件 -Step 5: 提示读取并记录 - -![](pictures/read.drawio.svg) - - -#### save_data - -Step 1: 输入文件名 -Step 2: 打开文件 -Step 3: if 打开文件失败 then 提示打开文件失败并结束 -Step 4: 将所有库存记录写入文件 -Step 5: 关闭文件 - -![](pictures/save_data.drawio.svg) - -#### print_data - -Step 1: 输出学号、姓名、成绩 - -![](pictures/print.drawio.svg) - -#### query_data - -Step 1: 输入学生学号 -Step 2: if学号不存在 then 提示学生不存在并结束 -Step 3: else 学号存在 then 输出学号、姓名、成绩 - -![](pictures/query_data.drawio.svg) - -#### add_data - -Step 1: if 数据库满 then 提示数据库满并结束 -Step 2: 输入学号 -Step 3: if 学生已存在 then 提示学生已存在并结束 -Step 4: 输入学生名字和成绩 -Step 5: 添加学生到数据 -Step 6: 提示添加成功 - -![](pictures/add_data.drawio.svg) - - -#### update_data - -Step 1: 输入学号 -Step 2: if 不存在 then 提示学生不存在并结束 -Step 3: else 输入学号、姓名、成绩 -Step 4: 已更新 - -![](pictures/updata_data.drawio.svg) - -#### delete_data - -Step 1: 输入学号 -Step 2: if 不存在 then 提示学生不存在并结束 -Step 3: else 删除学生信息 -Step 4: 提示删除成功 - -![](pictures/delete.drawio.svg) - - -#### sort_data -Step 1: 读取文件 -Step 2: 进行排序 -Step 3: 提示排序已完成 - -![](pictures/sort.drawio.svg) - - -#### make_chart - -Step 1: 读取文件 -Step 2: 显示图表 - -![](pictures/make_chart.drawio.svg) - - -#### confirm - -Step 1: 输出 确定要退出吗 -Step 2: if 确认 then 退出 - -![](pictures/confirm.drawio.svg) \ No newline at end of file From 40a47a64ecf054b2d68520191dbbdc30918a906e Mon Sep 17 00:00:00 2001 From: plebkff6w <1844263540@qq.com> Date: Sun, 21 May 2023 16:35:42 +0800 Subject: [PATCH 65/65] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9caa66a..5da9e10 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# text4 +# 实现学生成绩管理系统 2023年5月21日