diff --git a/.drawio.svg b/.drawio.svg new file mode 100644 index 0000000..70038a5 --- /dev/null +++ b/.drawio.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + update_data + + + + + + + + + + + + + + + update_data... + + + + + + + + + + + + + + 输入学生学号 + + + + + + 输入学生学号 + + + + + + + + + + + + + + 查找学生是否已经能够录入 + + + + + + 查找学生是否已经能够录入 + + + + + + + + + + + 不存在 + + + + + + 不存在 + + + + + + + + + + + 存在 + + + + + + 存在 + + + + + + + + + + + 退出 + + + + + + 退出 + + + + + + + + + + + 输出学生信息 + + + + + + 输出学生信息 + + + + + + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..5472856 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "windows-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "C:/mingw64/bin/gcc.exe", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "windows-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..3a83391 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": true, + "cwd": "c:/Users/王德沅/c/test1", + "program": "c:/Users/王德沅/c/test1/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..65c81b6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,38 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wconversion", + "-Wnull-dereference", + "-Wsign-conversion" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false +} \ No newline at end of file diff --git a/README.md b/README.md index f89a337..54c5606 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ | C4 添加库存记录 | 王凯旋 | 王德沅 | 冯国平 | 苏永涛 | | C5查询库存记录 | 冯国平 | 王德沅 | 苏永涛 | 王凯旋 | | C6打印库存列表 | 王德沅 | 苏永涛 | 冯国平 | 王凯旋 | -| C7修改库存记录 | 苏永涛 | 王凯旋 | 王凯旋 | 冯国平 | +| C7修改库存记录 | 苏永涛 | 王德沅 | 王凯旋 | 冯国平 | | C8删除库存记录 | 冯国平 | 王凯旋 | 苏永涛 | 王德沅 | -| C9库存记录排序 | 王德沅 | 苏永涛 | 王凯旋 | 苏永涛 | +| C9库存记录排序 | 王德沅 | 冯国平 | 王凯旋 | 苏永涛 | | C10从文件中读取库存记录 | 王凯旋 | 苏永涛 | 冯国平 | 王德沅 | | C11从库存保存到文件 | 苏永涛 | 王德沅 | 王凯旋 | 冯国平 | | C12以图标方式显示库存记录 | 冯国平 | 苏永涛 | 王德沅 | 王凯旋 | @@ -341,7 +341,7 @@ Step 2.4: if c == CMD_SAVE then 保存数据 Step 2.5: if c == CMD_PRINT then 打印数据 Step 2.6: -![主程序流程图](images/main.drawio.svg) +![picture-main.draw](/picture-main.drawio.svg) #### save_data @@ -351,7 +351,7 @@ Step 3: if 打开文件失败 then 提示打开文件失败并结束 Step 4: 将所有库存记录写入文件 Step 5: 关闭文件 -![保存数据流程图](images/save_data.drawio.svg) +![picture-save.draw](/picture-save.draw.svg) #### add_data @@ -362,7 +362,7 @@ Step 4: 输入零件名和库存数量 Step 5: 添加新零件到数据 Step 6: 提示添加成功 -![添加库存记录流程图](images/add_data.drawio.svg) +![picture-add.draw](/picture-add.drawio.svg) ### query_data @@ -372,7 +372,7 @@ Step 3:查询最后一个学生结束 Step 4:if未查询到提示学生不存在 Step 5:else打印学生信息 -![查询流程图](https://code.educoder.net/repo/p8rq79j4h/test1/raw/branch/master/picture.drawio.svg) +![picture.draw](/picture.drawio.svg) ### printf_data @@ -405,9 +405,19 @@ Step 4:否则提示不存在并结束 ### sort_data Step 1:对库存记录按学号从小到大排序 +<<<<<<< HEAD +<<<<<<< HEAD + +======= +Step 2:将按照学生成绩排序,若前面的比后面大,则交换 +Step 3:每次遍历记录是否交换,若没有交换,则排序结束 +Step 4:若成绩相同,则按照学号从小到大排序 +>>>>>>> 8892531498f3879c5e2a02c0346d2e14e7d0d0ff +======= Step 2:将按照学生成绩排序,若前面的比后面大,则交换 Step 3:每次遍历记录是否交换,若没有交换,则排序结束 Step 4:若成绩相同,则按照学号从小到大排序 +>>>>>>> 3aaec9cca337fd57c2c1b138e8ad7fee782cc079 ### make_chart @@ -418,10 +428,23 @@ Step 3:若存在则打开文件并读取CSV 格式保存的所有库存记录 Step 4:否则给出错误信息并结束 +<<<<<<< HEAD +<<<<<<< HEAD + +======= +### read_data +Step 1:输入文件名 +Step 2:查看输入的文件名是否和已有的文件相匹配 +======= ### read_data Step 1:输入文件名 Step 2:查看输入的文件名是否和已有的文化相匹配 +>>>>>>> 3aaec9cca337fd57c2c1b138e8ad7fee782cc079 Step 3:若匹配成功,则打开文件 Step 4:若不成功,则返回错误值 Step 5:打开后利用循环,依次输出文件里各个学生的学号,姓名和成绩; Step 6:关闭文件 +<<<<<<< HEAD +>>>>>>> 8892531498f3879c5e2a02c0346d2e14e7d0d0ff +======= +>>>>>>> 3aaec9cca337fd57c2c1b138e8ad7fee782cc079 diff --git a/daima b/daima index 8f337db..b501292 100644 --- a/daima +++ b/daima @@ -1,4 +1,73 @@ } +<<<<<<< HEAD + +// 函数定义 +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) +======= else { printf("学生已存在"); @@ -7,6 +76,7 @@ //修改 void update_data(void) +>>>>>>> 3aaec9cca337fd57c2c1b138e8ad7fee782cc079 { int num; printf("输入学生学号:"); @@ -22,6 +92,15 @@ void update_data(void) } if (f == 0) { +<<<<<<< HEAD + 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); +======= printf("学生不存在"); } else @@ -88,3 +167,4 @@ void read_data(void) num_parts = i; printf("读取 %d 记录\n", num_parts); } +>>>>>>> 3aaec9cca337fd57c2c1b138e8ad7fee782cc079 diff --git a/daima1.c b/daima1.c new file mode 100644 index 0000000..96c5def --- /dev/null +++ b/daima1.c @@ -0,0 +1,90 @@ +#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; \ No newline at end of file diff --git a/delete.drawio.svg b/delete.drawio.svg new file mode 100644 index 0000000..51710f7 --- /dev/null +++ b/delete.drawio.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + 输入学生学号 + + + + + + 输入学生学号 + + + + + + + + + + + + + 判断学号是否存在 + + + + + + 判断学号是否存在 + + + + + + + + + + + + + 删除 + + + + + + 删除 + + + + + + + + + + + + 提示不存在并结束 + + + + + + 提示不存在并结束 + + + + + + + + + + + 存在 + + + + + + 存在 + + + + + + + + + + + 不存在 + + + + + + 不存在 + + + + + + + + + + + + + + + + + delete_data + + + + + + + + + + + + + + + delete_data... + + + + + + + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/main.drawio.svg b/main.drawio.svg new file mode 100644 index 0000000..a21fedf --- /dev/null +++ b/main.drawio.svg @@ -0,0 +1,521 @@ + + + + + + + + + + + + + + main + + + + + + + main + + + + + + + + + + + + + init + + + + + + init + + + + + + + + + + + + + 显示菜单 + + + + + + 显示菜单 + + + + + + + + + + + + + 选择菜单命令 + + + + + + 选择菜单命令 + + + + + + + + + + + + + + + 读取数据 + + + + + + 读取数据 + + + + + + + + + + + + + + + 保存数据 + + + + + + 保存数据 + + + + + + + + + + + + + + + 打印数据 + + + + + + 打印数据 + + + + + + + + + + + + + + + 查询数据 + + + + + + 查询数据 + + + + + + + + + + + + + + + 添加数据 + + + + + + 添加数据 + + + + + + + + + + + + + + + 更新数据 + + + + + + 更新数据 + + + + + + + + + + + + + + + 删除数据 + + + + + + 删除数据 + + + + + + + + + + + + + + + 对数据排序 + + + + + + 对数据排序 + + + + + + + + + + + + + + + + + 生成图表报表 + + + + + + 生成图表报表 + + + + + + + + + + + + + + + 确定退出 + + + + + + 确定退出 + + + + + + + + + + + + + + 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 + + + + + + + + + + + + quit + + + + + + quit + + + + + + + + + + + + + + 命令错误,重新选择 + + + + + + 命令错误,重新选择 + + + + + + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/make_chart.drawio.svg b/make_chart.drawio.svg new file mode 100644 index 0000000..3a39675 --- /dev/null +++ b/make_chart.drawio.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + make_chart + + + + + + make_chart + + + + + + + + + + + + + 输入文件名 + + + + + + 输入文件名 + + + + + + + + + + + + 文件存在 + + + + + + 文件存在 + + + + + + + + + + + + yes + + + + + + yes + + + + + + + + + + + + + 打开文件并读取库存记录 + + + + + + 打开文件并读取库存记录 + + + + + + + + + + + else + + + + + + else + + + + + + + + + + + + 显示错误信息 + + + + + + 显示错误信息 + + + + + + + + + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/printf.drawio.svg b/printf.drawio.svg new file mode 100644 index 0000000..93e63b8 --- /dev/null +++ b/printf.drawio.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + printf_data + + + + + + + + + + + + + + + printf_data... + + + + + + + + + + + + + 打印学生学号和姓名 + + + + + + 打印学生学号和姓名 + + + + + + + + + + + + + for(i=0;i<n;i++) + + n为学生数 + + + + + + for(i=0;i<n;i... + + + + + + + + + + + 打印学生成绩 + + + + + + 打印学生成绩 + + + + + + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/picture.drawio.svg b/query.drawio.svg similarity index 77% rename from picture.drawio.svg rename to query.drawio.svg index 59e1648..56f5d2c 100644 --- a/picture.drawio.svg +++ b/query.drawio.svg @@ -1,4 +1,4 @@ - + @@ -119,6 +119,24 @@ + + + + + + + + 结束 + + + + + + + 结束 + + + diff --git a/qyery_data.drawio.svg b/qyery_data.drawio.svg new file mode 100644 index 0000000..56f5d2c --- /dev/null +++ b/qyery_data.drawio.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + query_data + + + + + + + + + + + + + query_data... + + + + + + + + + + + + for i=0 to num_parts + + + + + + for i=0 to num_parts + + + + + + + + + + + + + + 学生信息不存在 + + + + + + 学生信息不存在 + + + + + + + + + + + if 查询到 + + + + + + if 查询到 + + + + + + + + + + + else + + + + + + else + + + + + + + + + + + + 打印学生信息 + + + + + + 打印学生信息 + + + + + + + + + + + + + 结束 + + + + + + + 结束 + + + + + + + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/read_data.drawio.svg b/read_data.drawio.svg new file mode 100644 index 0000000..7f4ac0b --- /dev/null +++ b/read_data.drawio.svg @@ -0,0 +1,143 @@ + + + + + + + + + + + read_data + + + + + + read_data + + + + + + + + + + + + + 输入文件名 + + + + + + 输入文件名 + + + + + + + + + + + + 输入文件与已有文件匹配 + + + + + + 输入文件与已有文件匹配 + + + + + + + + + + + + yes + + + + + + + yes + + + + + + + + + + + + 打开文件 + + + + + + 打开文件 + + + + + + + + + + + + no + + + + + + no + + + + + + + + + + + + 显示错误值 + + + + + + 显示错误值 + + + + + + + + + + + + Text is not SVG - cannot display + + + + \ No newline at end of file diff --git a/sort.drawio.svg b/sort.drawio.svg new file mode 100644 index 0000000..953d35f --- /dev/null +++ b/sort.drawio.svg @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + sort_data + + + + + + + + + + + + + sort_data... + + + + + + + + + + + + + 将学号按照从小到大排序 + + + + + + 将学号按照从小到大排序 + + + + + + + + + + + + + 将学生成绩进行比较 + + + + + + 将学生成绩进行比较 + + + + + + + + + + + + + + + 前者大于后者 + + + + + + 前者大于后者 + + + + + + + + + + + + + 顺序交换 + + + + + + 顺序交换 + + + + + + + + + + + + + 按照学号进行排序 + + + + + + 按照学号进行排序 + + + + + + + + + + + 成绩相同 + + + + + + 成绩相同 + + + + + + + + + + + + + + 不交换 + + + + + + 不交换 + + + + + + + + + + + + 前者小于后者 + + + + + + 前者小于后者 + + + + + + + + + + + + + 直至不在交换 + + + + + + 直至不在交换 + + + + + + + + + + + + 输出最终成绩排序 + + + + + + 输出最终成绩排序 + + + + + + + + + Text is not SVG - cannot display + + + + \ No newline at end of file
+ 结束 +