From c246bb4f18cddb7d8000a5c32c91135f054e2a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=81=AA=E9=A2=96?= <3139769854@qq.com> Date: Sun, 23 Apr 2023 19:21:21 +0800 Subject: [PATCH 01/30] okkkk --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index f01c9dd..b153d95 100644 --- a/README.md +++ b/README.md @@ -108,4 +108,17 @@ Delete Book Which book you wanna delelet? Enter book ID: 5 Not found +``` +### C8:排序书籍 +选择菜单命令:8 提示排序书籍并排序所有书籍,若没有书,提示Book data empty Sort success,若有书提示Sort success. +``` +Book data empty +***************************** +Sort success +``` +``` +Sort Books + +***************************** +Sort success ``` \ No newline at end of file From 73da6d241f6513054ec6b6cf3da72a2ef5d9d151 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Sun, 23 Apr 2023 21:58:24 +0800 Subject: [PATCH 02/30] 1 --- README.md | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 170 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index b153d95..1b67efb 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ ———————————————————————————————————————————— 请选择: ``` -#### C0: 退出程序 +### C0: 退出程序 选择菜单命令:0 再输入:y,确认,则退出程序。若输入:n,则继续程序。 ``` 请选择:0 @@ -60,6 +60,40 @@ 确定要退出吗?(Y/N): n 程序退出 ``` + +### C3:归还图书 +选择菜单命令:3 提示归还图书 和 你想要归还哪一本书?输入图书编号,若在系统中没有该图书,则添加图书并输入图书的编号,数量和数目,显示相关信息并归还成功,否则直接退出。 +````` +请选择:3 + +Repaid Book + +Which book you wanna repaid ? +2 + + +Add Book + +ID : 1 +TITLE : 1 +Number : 1 +Book + +**************** id: 1 **************** +**** title: 《 1 》**** +************** Number: 1 ************** +````` + + +````` +请选择:3 + +Repaid Book + +Which book you wanna repaid ? +1 +````` + ### C4:打印书籍 选择菜单命令:4 提示打印书籍并打印图书信息,若没有书,则输出Total: 0 books,若有书,则输出书籍信息 ``` @@ -82,6 +116,26 @@ Book Total: 1 books ``` + +### C5:添加图书 +选择菜单命令:5 提示添加图书,提示输入想添加的图书编号,标题和数目并输出Book,输出添加完后图书的相关信息和“Added”。 +``` +请选择:5 + +Add Book + +ID : 1 +TITLE : 4 +Number : 6 +Book + +**************** id: 1 **************** +**** title: 《 4 》**** +************** Number: 6 ************** + +*******Added******** +``` + ### C6:删除书籍 选择菜单命令:6 提示删除书籍、你想要删除哪本书籍?和请输入图书编号,则输入图书编号。若找到输出书籍的信息并提示Delele,若没找到则提示Not Found. ``` @@ -109,16 +163,123 @@ Which book you wanna delelet? Enter book ID: 5 Not found ``` -### C8:排序书籍 -选择菜单命令:8 提示排序书籍并排序所有书籍,若没有书,提示Book data empty Sort success,若有书提示Sort success. +### C7:修改图书 +选择菜单命令: 7,提示修改和输入图书编号,输入图书编号,再次提示图书数量,输出你要在该图书编号下修改的图书数量,并提示完成;如果输入的图书编号不存在,则提示没有这样的书。 +````` +请选择:7 + +Revise Book + +Which book you wanna revise ? +1 +Original book number : 1 +Revised number :2 +********************** +Revise success +````` + + +`````` +请选择:7 + +Revise Book + +Which book you wanna revise ? +2 +No such book +`````` +# 概要设计 +系统主要分为用户界面和数据处理两大模块。 + +用户界面模块包括系统初始化(init),显示菜单(display_menu),选择菜单命令 +(make_choice)、确认(confirm)、退出(quit)等子模块。 +数据处理模块包括 添加图书( DoAddBook ) 、查找图书( DoFindBook ) 、删除图书( DoDeleteBook ) 、打印所有图书( DoPrintBook ) 、归还图书( DoRepaidBook ) 、借用图书 ( DoBoorowBook ) 、修改图书( DoReviseBook ) 、排序图书( DoSortBook )等子模块。 + +其中查询、添加、修改和删除数据还会用到根据编号查询数据的方法(find)。 +上述各模块通过主程序(main)进行调用,系统模块图如下。 ``` -Book data empty -***************************** -Sort success + + + + + + + + +``` +各模块的主要功能如下: +## main +系统主函数模块,显示菜单,根据用户选择的菜单命令,执行相关操作。 +## init +系统初始化。 +## display_menu +显示菜单命令。 +# 详细设计 +针对概要设计 +## main ``` +Step 1: 初始化 +Step 2: 根据用户选择的命令执行对应的操作 +Step 2.1: 显示菜单 +Step 2.2: 选择菜单命令 c +Step 2.3: if c == CMD_PRINT then 打印数据 +Step 2.4: ``` -Sort Books +``` + + + + + + + + + + + + + + + + + + +``` + + +## DoAddBook +``` +Step 1: if 数据库满 then 提示数据库满并结束 +Step 2: 输入图书编号 +Step 3: 输入图书名和书籍数量 +Step 4: 添加新书籍 +Step 5: 提示添加成功 +``` +``` + + + + + + + + + + + + + + + + + + + + + + + + + -***************************** -Sort success ``` \ No newline at end of file From 97ae647984e740b9d8725d0140b759756ff4b99c Mon Sep 17 00:00:00 2001 From: yangtengze Date: Sun, 23 Apr 2023 22:01:39 +0800 Subject: [PATCH 03/30] 1 --- .vscode/launch.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..5c7247b --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,7 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [] +} \ No newline at end of file From e9870a3c9f46b225cfaccbb6dc45f91a3306bf83 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Sun, 23 Apr 2023 22:06:05 +0800 Subject: [PATCH 04/30] 1 --- .vscode/launch.json | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 5c7247b..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [] -} \ No newline at end of file From b70004871fc7baa59de3b69b598f033c6f10b203 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Mon, 24 Apr 2023 12:30:43 +0800 Subject: [PATCH 05/30] 1 --- data.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/data.h b/data.h index bb0eb95..cabc5de 100644 --- a/data.h +++ b/data.h @@ -85,8 +85,6 @@ bool bookempty() template void DoAddBook() { - if (books.length == MAXSIZE) { - cout << "books full" << endl;} cout << endl << "Add Book"<< endl< Date: Mon, 24 Apr 2023 12:52:56 +0800 Subject: [PATCH 06/30] 1 --- .vscode/tasks.json | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 .vscode/tasks.json diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index ccfcfb2..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "tasks": [ - { - "type": "cppbuild", - "label": "C/C++: g++.exe build active file", - "command": "C:\\mingw64\\bin\\g++.exe", - "args": [ - "-fdiagnostics-color=always", - "-g", - "${file}", - "-o", - "${fileDirname}\\${fileBasenameNoExtension}.exe" - ], - "options": { - "cwd": "${fileDirname}" - }, - "problemMatcher": [ - "$gcc" - ], - "group": { - "kind": "build", - "isDefault": true - }, - "detail": "Task generated by Debugger." - } - ], - "version": "2.0.0" -} \ No newline at end of file From d94e2c50736874999db2c964bfdcfea04be3fd74 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Mon, 24 Apr 2023 12:54:41 +0800 Subject: [PATCH 07/30] change --- .vscode/tasks.json | 28 ++++++++++++++++++++++++++++ data.h | 1 - 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 .vscode/tasks.json diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..ccfcfb2 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: g++.exe build active file", + "command": "C:\\mingw64\\bin\\g++.exe", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}\\${fileBasenameNoExtension}.exe" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/data.h b/data.h index cabc5de..f05e2a5 100644 --- a/data.h +++ b/data.h @@ -82,7 +82,6 @@ bool bookempty() } // 添加图书 -template void DoAddBook() { cout << endl << "Add Book"<< endl< Date: Mon, 24 Apr 2023 19:17:32 +0800 Subject: [PATCH 08/30] change --- README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ data.h | 2 ++ 2 files changed, 50 insertions(+) diff --git a/README.md b/README.md index 1b67efb..034a8b5 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,54 @@ 确定要退出吗?(Y/N): n 程序退出 ``` +### C1: 查找图书 +选择菜单命令: 1 ,提示Find Book 和 Enter book ID: 字样,则继续输入图书编号。若没找到,提示Not found;若找到,提示Found 并 打印书籍信息。 +``` +请选择:1 + +Find Book + +Enter book ID: 1 +Not found +``` +``` +请选择:1 + +Find Book + +Enter book ID: 1 +Found +************ +Book + +**************** id: 1 **************** +**** title: 《 2 》**** +************** Number: 3 ************** +``` +### C2:借用图书 +选择菜单命令:2,提示Boorow Book和Which book you wanna boorow ?,则继续输入图书编号。若该书本身不存在,则提示NOT FOUND THIS BOOK;如图书存在,则提示OK。 +``` +请选择:2 + +Boorow Book + +Which book you wanna boorow ? +2 + +NOT FOUND THIS BOOK +``` +``` +请选择:2 + +Boorow Book + +Which book you wanna boorow ? +1 +********* +OK +********* +``` ### C3:归还图书 选择菜单命令:3 提示归还图书 和 你想要归还哪一本书?输入图书编号,若在系统中没有该图书,则添加图书并输入图书的编号,数量和数目,显示相关信息并归还成功,否则直接退出。 ````` @@ -188,6 +235,7 @@ Which book you wanna revise ? 2 No such book `````` + # 概要设计 系统主要分为用户界面和数据处理两大模块。 diff --git a/data.h b/data.h index f05e2a5..5a3bfb0 100644 --- a/data.h +++ b/data.h @@ -161,6 +161,7 @@ void DoRepaidBook() cout << endl << "Repaid Book" << endl<> id; cout << endl; if (find(id)){ @@ -178,6 +179,7 @@ void DoBoorowBook() cout << endl << "Boorow Book" << endl <> id; cout << endl; if (find(id)){ From 6bd52249f8467755408defb7cd7e650e5f4f2721 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Mon, 24 Apr 2023 19:19:55 +0800 Subject: [PATCH 09/30] change --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 034a8b5..0c99a32 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # 图书管理系统 -2023年4月22日 +2023年5月1日 杨腾泽,孙英皓,李聪颖,刘彩月 ## 项目简介 @@ -9,8 +9,8 @@ 项目开发过程中采用 Kanban(看板)进行任务管理和分工协作,并使用 Git 对程序代码和文档进行版本管理。任务分工情况如下: |任务 |设计 |开发 |测试 |文档 | |------ |-------|-------|--------|-------| -|Ca-Cb | | | | 杨腾泽 | -|C0-C2 | | | | 孙英皓 | +|Ca-Cb | | | | 孙英皓 | +|C0-C2 | | | | 杨腾泽 | |C3-C5 | | | | 刘彩月 | |C6-C8 | | | | 李聪颖 | @@ -22,6 +22,7 @@ ## 关于图书管理系统 设计一个图书管理系统,要求采用命令行菜单界面进行交互,具备查书、借书、还书、打印书籍 、添加、删除等基本功能,能够以表格和图表形式展示数据,采用 CSV 格式保存数据。 +\ 系统的功能性需求: - 数据的查书、借书、还书、打印书籍、添加、删除展示。 From 291d41d6476f13dcc183afca54a9460cbade8d66 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Mon, 24 Apr 2023 19:30:08 +0800 Subject: [PATCH 10/30] change folder --- data.h => code/data.h | 464 ++++++++++++++++++------------------ sqlist.h => code/sqlist.h | 352 +++++++++++++-------------- title.cpp => code/title.cpp | 252 ++++++++++---------- 3 files changed, 534 insertions(+), 534 deletions(-) rename data.h => code/data.h (95%) rename sqlist.h => code/sqlist.h (95%) rename title.cpp => code/title.cpp (96%) diff --git a/data.h b/code/data.h similarity index 95% rename from data.h rename to code/data.h index 5a3bfb0..e931257 100644 --- a/data.h +++ b/code/data.h @@ -1,233 +1,233 @@ -#ifndef DATA_H_INCLUDED -#define DATA_H_INCLUDED - -#include -#include "sqlist.h" - - -struct Book { - int id; // 编号 - string title; // 标题 - int number; // 数量 - }; - -SqList books; - -// 函数声明 -bool bookempty(); // 书籍库判空 -void input(Book& b); // 输入一本书的信息 -void print(const Book& b);// 打印一本书的信息 -int find(int id); // 根据 id 查找图书 || 若找到,返回元素的位序,找不到时返回 0 - -void DoAddBook(); // 添加图书 -void DoFindBook(); // 查找图书 -void DoDeleteBook(); // 删除图书 -void DoPrintBook(); // 打印所有图书 -void DoRepaidBook(); // 归还图书 -void DoBoorowBook(); // 借用图书 -void DoReviseBook(); // 修改图书 -void DoSortBook(); // 排序图书 - - -// 输入一本书的信息 -void input(Book& b) -{ - cout << "ID : "; - cin >> b.id; - cin.ignore(1024, '\n'); // skip rest chars of the line - cout << "TITLE : "; - getline(cin, b.title); - cout << "Number : "; - while (1){ - cin >> b.number; - if (b.number>0) break; - cout << "Number ERROR" << endl; - cout << "Input again" << endl; - } -} - -// 打印一本书的信息 -void print(const Book& b) -{ - cout << "Book " << endl << endl - <<"**************** id: " << b.id << " ****************" << endl - << "**** title: 《 " << b.title << " 》****" << endl - << "************** Number: " << b.number << " **************" << endl << endl; -} - -// 根据 id 查找图书 -// 若找到,返回元素的位序,找不到时返回 0 -int find(int id) -{ - - for (int i = 1; i <= books.length; i++) - { - if (id == books.elem[i].id){ - return i; - } - } - return 0; // not found -} - -// 书籍库判空 -bool bookempty() -{ - int a=0; - for (int i=1;i<=books.length;i++) - { - if (find(i)==0) a++; - } - if (a==books.length) return true; - else return false; -} - -// 添加图书 -void DoAddBook() -{ - cout << endl << "Add Book"<< endl<> id; - - Book book; - if (find(id) == 0) - cout << "Not found" << endl; - else - { - book = books.elem[find(id)]; - cout << "Found" << endl; - cout << "************" << endl; - print(book); - } -} - -// 删除图书 -void DoDeleteBook() -{ - cout << endl << "Delete Book" << endl << endl; - int id; - cout << "Which book you wanna delelet?"<> id; - Book e; - if (find(id) == 0) - cout << "Not found" << endl; - else - { - e = books.elem[find(id)]; - print(e); - for (int i = find(id); i < books.length; i++) - { - books.elem[i] = books.elem[i + 1]; - } - --books.length; - cout << "************************" << endl; - cout << "Deleted" << endl; - } -} - -// 打印所有图书 -void DoPrintBook() -{ - cout << endl << "Print All Books" << endl <> id; - cout << endl; - if (find(id)){ - Book e; - e = books.elem[find(id)]; - ++books.elem[find(id)].number; - }else{ - DoAddBook(); - } -} - -// 借用图书 -void DoBoorowBook() -{ - cout << endl << "Boorow Book" << endl <> id; - cout << endl; - if (find(id)){ - if (books.elem[find(id)].number>0) { - Book e; - e = books.elem[find(id)]; - cout<< "*********"<< endl << "OK" << endl << "*********"<> id; - - if ( find(id)!=0 ) { - printf ( "Original book number : %d\n", books.elem[id].number ); - printf ( "Revised number :" ); - int xiugai; - scanf ( "%d", &xiugai ); - books.elem[id].number+=xiugai; - cout << "**********************" << endl; - printf ( "Revise success \n" ); - } - else printf ( "No such book\n"); -} - -// 排序图书 -void DoSortBook() -{ - cout << endl << "Sort Books" << endl << endl; - int a=0; - if (bookempty()) cout << "Book data empty"<< endl; - else { - for (int i=1;i0;j--) - { - if (books.elem[i].id>books.elem[j].id) { - Book temp=books.elem[i];books.elem[i]=books.elem[j];books.elem[j]=temp;} - } - } - cout << "*****************************" < +#include "sqlist.h" + + +struct Book { + int id; // 编号 + string title; // 标题 + int number; // 数量 + }; + +SqList books; + +// 函数声明 +bool bookempty(); // 书籍库判空 +void input(Book& b); // 输入一本书的信息 +void print(const Book& b);// 打印一本书的信息 +int find(int id); // 根据 id 查找图书 || 若找到,返回元素的位序,找不到时返回 0 + +void DoAddBook(); // 添加图书 +void DoFindBook(); // 查找图书 +void DoDeleteBook(); // 删除图书 +void DoPrintBook(); // 打印所有图书 +void DoRepaidBook(); // 归还图书 +void DoBoorowBook(); // 借用图书 +void DoReviseBook(); // 修改图书 +void DoSortBook(); // 排序图书 + + +// 输入一本书的信息 +void input(Book& b) +{ + cout << "ID : "; + cin >> b.id; + cin.ignore(1024, '\n'); // skip rest chars of the line + cout << "TITLE : "; + getline(cin, b.title); + cout << "Number : "; + while (1){ + cin >> b.number; + if (b.number>0) break; + cout << "Number ERROR" << endl; + cout << "Input again" << endl; + } +} + +// 打印一本书的信息 +void print(const Book& b) +{ + cout << "Book " << endl << endl + <<"**************** id: " << b.id << " ****************" << endl + << "**** title: 《 " << b.title << " 》****" << endl + << "************** Number: " << b.number << " **************" << endl << endl; +} + +// 根据 id 查找图书 +// 若找到,返回元素的位序,找不到时返回 0 +int find(int id) +{ + + for (int i = 1; i <= books.length; i++) + { + if (id == books.elem[i].id){ + return i; + } + } + return 0; // not found +} + +// 书籍库判空 +bool bookempty() +{ + int a=0; + for (int i=1;i<=books.length;i++) + { + if (find(i)==0) a++; + } + if (a==books.length) return true; + else return false; +} + +// 添加图书 +void DoAddBook() +{ + cout << endl << "Add Book"<< endl<> id; + + Book book; + if (find(id) == 0) + cout << "Not found" << endl; + else + { + book = books.elem[find(id)]; + cout << "Found" << endl; + cout << "************" << endl; + print(book); + } +} + +// 删除图书 +void DoDeleteBook() +{ + cout << endl << "Delete Book" << endl << endl; + int id; + cout << "Which book you wanna delelet?"<> id; + Book e; + if (find(id) == 0) + cout << "Not found" << endl; + else + { + e = books.elem[find(id)]; + print(e); + for (int i = find(id); i < books.length; i++) + { + books.elem[i] = books.elem[i + 1]; + } + --books.length; + cout << "************************" << endl; + cout << "Deleted" << endl; + } +} + +// 打印所有图书 +void DoPrintBook() +{ + cout << endl << "Print All Books" << endl <> id; + cout << endl; + if (find(id)){ + Book e; + e = books.elem[find(id)]; + ++books.elem[find(id)].number; + }else{ + DoAddBook(); + } +} + +// 借用图书 +void DoBoorowBook() +{ + cout << endl << "Boorow Book" << endl <> id; + cout << endl; + if (find(id)){ + if (books.elem[find(id)].number>0) { + Book e; + e = books.elem[find(id)]; + cout<< "*********"<< endl << "OK" << endl << "*********"<> id; + + if ( find(id)!=0 ) { + printf ( "Original book number : %d\n", books.elem[id].number ); + printf ( "Revised number :" ); + int xiugai; + scanf ( "%d", &xiugai ); + books.elem[id].number+=xiugai; + cout << "**********************" << endl; + printf ( "Revise success \n" ); + } + else printf ( "No such book\n"); +} + +// 排序图书 +void DoSortBook() +{ + cout << endl << "Sort Books" << endl << endl; + int a=0; + if (bookempty()) cout << "Book data empty"<< endl; + else { + for (int i=1;i0;j--) + { + if (books.elem[i].id>books.elem[j].id) { + Book temp=books.elem[i];books.elem[i]=books.elem[j];books.elem[j]=temp;} + } + } + cout << "*****************************" < // for std::out_of_range -using std::out_of_range; // 导入名称 -using std::length_error; - -/////////////////////////////////////// -/// 存储结构 - -/// -/// 线性表的顺序存储结构 -/// -template -struct SqList -{ - E elem[MAXSIZE]; - int length; -}; - -/////////////////////////////////////// -/// 基本操作 - -/// -/// 构造空的顺序表 L -/// -template -void InitList(SqList &L) -{ - L.length = 0; // 空表长度为 0 -} - -/// -/// 销毁顺序表 L -/// -template -void DestroyList(SqList &L) -{ - // do nothing -} - -/// -/// 将顺序表 L 置为空表 -/// -template -void ClearList(SqList &L) -{ - L.length = 0; -} - -/// -/// 若 L 为空表,则返回 true,否则返回 false -/// -template -bool ListEmpty(const SqList &L) -{ - return L.length == 0; -} - -/// -/// 返回顺序表 L 中数据元素个数 -/// -template -int ListLength(const SqList &L) -{ - return L.length; -} - -/// -/// 用 e 返回顺序表 L 中第 i 个数据元素,1<=i<=length -/// -template -bool GetElem(const SqList &L, int i, E &e) -{ - // 若 i 值不合法,则返回 false - if (i < 1 || i > L.length) - return false; - - // 取第 i 个元素 - e = L.elem[i - 1]; - - // 返回 true 表示操作成功 - return true; -} - -/// -/// 取顺序表 L 中第 i 个元素 -/// -template -const E &GetElem(const SqList &L, int i) -{ - // 若 i 值不合法,不能取元素 - if (i < 1 || i > L.length) - throw out_of_range("i out of range"); - - // 返回第 i 个元素 - return L.elem[i - 1]; -} - -/// -/// 在顺序表 L 中第 i 个位置之前插入新的数据元素 e -/// -template -void ListInsert(SqList &L, int i, E e) -{ - // 若表满,则不能插入 - if (L.length == MAXSIZE) - throw length_error("L is full"); - // 若 i 值不合法,则不能插入 - if (i < 1 || i > L.length + 1) - throw out_of_range("i out of range"); - - // 插入位置及之后的元素后移 - for (int j = L.length - 1; j >= i - 1; j--) - { - L.elem[j + 1] = L.elem[j]; - } - // 插入元素 - L.elem[i - 1] = e; - // 表长增 1 - L.length++; -} - -/// -/// 在顺序表 L 中删除第 i 个元素,用 e 返回 -/// -template -void ListDelete(SqList &L, int i, E &e) -{ - // 若 i 值不合法,则不能删除 - if (i < 1 || i > L.length) - throw out_of_range("i out of range"); - - // 取出被删除元素 - e = L.elem[i - 1]; - // 被删除元素之后的元素前移 - for (int j = i; j < L.length; j++) - { - L.elem[j - 1] = L.elem[j]; - } - // 表长减 1 - L.length--; -} - -/// -/// 返回顺序表 L 中第一个与 e 满足关系 compare 的数据元素的位序 -/// 若这样的数据元素不存在,则返回 0。 -/// -template -int LocateElem(const SqList &L, const E &e, Cmp compare) -{ - // 逐个取出元素与 e 比较 - for (int i = 0; i < L.length; i++) - { - // 若满足条件,则返回位序 - if (compare(L.elem[i], e)) - return i + 1; - } - - return 0; // 不存在 -} - -/// -/// 遍历顺序表,依次对 L 中的每个数据元素调用函数 visit -/// -template -void ListTraverse(const SqList &L, Func visit) -{ - for (int i = 0; i < L.length; i++) - { - visit(L.elem[i]); - } +/////////////////////////////////////// +/// file: sqlist.h +/// Sequential list +/////////////////////////////////////// + +#pragma once + +#include // for std::out_of_range +using std::out_of_range; // 导入名称 +using std::length_error; + +/////////////////////////////////////// +/// 存储结构 + +/// +/// 线性表的顺序存储结构 +/// +template +struct SqList +{ + E elem[MAXSIZE]; + int length; +}; + +/////////////////////////////////////// +/// 基本操作 + +/// +/// 构造空的顺序表 L +/// +template +void InitList(SqList &L) +{ + L.length = 0; // 空表长度为 0 +} + +/// +/// 销毁顺序表 L +/// +template +void DestroyList(SqList &L) +{ + // do nothing +} + +/// +/// 将顺序表 L 置为空表 +/// +template +void ClearList(SqList &L) +{ + L.length = 0; +} + +/// +/// 若 L 为空表,则返回 true,否则返回 false +/// +template +bool ListEmpty(const SqList &L) +{ + return L.length == 0; +} + +/// +/// 返回顺序表 L 中数据元素个数 +/// +template +int ListLength(const SqList &L) +{ + return L.length; +} + +/// +/// 用 e 返回顺序表 L 中第 i 个数据元素,1<=i<=length +/// +template +bool GetElem(const SqList &L, int i, E &e) +{ + // 若 i 值不合法,则返回 false + if (i < 1 || i > L.length) + return false; + + // 取第 i 个元素 + e = L.elem[i - 1]; + + // 返回 true 表示操作成功 + return true; +} + +/// +/// 取顺序表 L 中第 i 个元素 +/// +template +const E &GetElem(const SqList &L, int i) +{ + // 若 i 值不合法,不能取元素 + if (i < 1 || i > L.length) + throw out_of_range("i out of range"); + + // 返回第 i 个元素 + return L.elem[i - 1]; +} + +/// +/// 在顺序表 L 中第 i 个位置之前插入新的数据元素 e +/// +template +void ListInsert(SqList &L, int i, E e) +{ + // 若表满,则不能插入 + if (L.length == MAXSIZE) + throw length_error("L is full"); + // 若 i 值不合法,则不能插入 + if (i < 1 || i > L.length + 1) + throw out_of_range("i out of range"); + + // 插入位置及之后的元素后移 + for (int j = L.length - 1; j >= i - 1; j--) + { + L.elem[j + 1] = L.elem[j]; + } + // 插入元素 + L.elem[i - 1] = e; + // 表长增 1 + L.length++; +} + +/// +/// 在顺序表 L 中删除第 i 个元素,用 e 返回 +/// +template +void ListDelete(SqList &L, int i, E &e) +{ + // 若 i 值不合法,则不能删除 + if (i < 1 || i > L.length) + throw out_of_range("i out of range"); + + // 取出被删除元素 + e = L.elem[i - 1]; + // 被删除元素之后的元素前移 + for (int j = i; j < L.length; j++) + { + L.elem[j - 1] = L.elem[j]; + } + // 表长减 1 + L.length--; +} + +/// +/// 返回顺序表 L 中第一个与 e 满足关系 compare 的数据元素的位序 +/// 若这样的数据元素不存在,则返回 0。 +/// +template +int LocateElem(const SqList &L, const E &e, Cmp compare) +{ + // 逐个取出元素与 e 比较 + for (int i = 0; i < L.length; i++) + { + // 若满足条件,则返回位序 + if (compare(L.elem[i], e)) + return i + 1; + } + + return 0; // 不存在 +} + +/// +/// 遍历顺序表,依次对 L 中的每个数据元素调用函数 visit +/// +template +void ListTraverse(const SqList &L, Func visit) +{ + for (int i = 0; i < L.length; i++) + { + visit(L.elem[i]); + } } \ No newline at end of file diff --git a/title.cpp b/code/title.cpp similarity index 96% rename from title.cpp rename to code/title.cpp index bcff6b6..5822cb3 100644 --- a/title.cpp +++ b/code/title.cpp @@ -1,126 +1,126 @@ - #include - #include - #include - using namespace std; - - - #include "data.h" - #include "sqlist.h" - - enum { - CMD_QUIT, // 退出程序 - CMD_QUERY, // 查书(数量) - CMD_BOOROW, // 借用书籍 - CMD_REPAID, // 归还书籍 - CMD_PRINT, // 打印书籍 - CMD_INSERT, // 添加书籍 - CMD_DELETE, // 删除书籍 - CMD_UPDATE, // 修改书籍 - CMD_SORT, // 排序书籍 - }; - - - // 函数声明 - void init(void); // 程序启动 - void quit(void); // 程序退出 - void display_menu(void); // 显示命令菜单 - - int make_choice(void); // 选择命令 - int confirm(const char* msg); // 确认 - - - - // 主函数 - int main(void) - { - init(); // 程序启动 - - InitList(books); - - for(;;) { - display_menu(); // - int c = make_choice(); - switch(c) { - case CMD_REPAID:// 还书 - {DoRepaidBook(); - break;} - case CMD_BOOROW:// 借书 - {DoBoorowBook(); - break;} - case CMD_PRINT:// 打印所有书籍 - {DoPrintBook(); - break;} - case CMD_QUERY:// 查找书籍 - {DoFindBook(); - break;} - case CMD_INSERT:// 添加书籍 - {DoAddBook(); - break;} - case CMD_DELETE:// 删除书籍 - {DoDeleteBook(); - break;} - case CMD_UPDATE:// 修改书籍 - {DoReviseBook(); - break;} - case CMD_SORT: // 排序书籍 - {DoSortBook(); - break;} - case CMD_QUIT:// 退出程序 - {if (confirm("确定要退出吗?")) quit(); // 仅在确认后退出 - break;} - default: - puts("命令错误,请重新选择"); - break;} - } - quit(); // 程序退出 - - DestroyList(books); - return 0; - } - - - - - - - void init(void) - { - puts("*******图书管理系统启动*******"); - } - void quit(void) - { - puts("系统退出"); - exit(EXIT_SUCCESS); - } - - - - void display_menu(void) - { - cout << "————————————————————————————————————————————————————————————————"< + #include + #include + using namespace std; + + + #include "data.h" + #include "sqlist.h" + + enum { + CMD_QUIT, // 退出程序 + CMD_QUERY, // 查书(数量) + CMD_BOOROW, // 借用书籍 + CMD_REPAID, // 归还书籍 + CMD_PRINT, // 打印书籍 + CMD_INSERT, // 添加书籍 + CMD_DELETE, // 删除书籍 + CMD_UPDATE, // 修改书籍 + CMD_SORT, // 排序书籍 + }; + + + // 函数声明 + void init(void); // 程序启动 + void quit(void); // 程序退出 + void display_menu(void); // 显示命令菜单 + + int make_choice(void); // 选择命令 + int confirm(const char* msg); // 确认 + + + + // 主函数 + int main(void) + { + init(); // 程序启动 + + InitList(books); + + for(;;) { + display_menu(); // + int c = make_choice(); + switch(c) { + case CMD_REPAID:// 还书 + {DoRepaidBook(); + break;} + case CMD_BOOROW:// 借书 + {DoBoorowBook(); + break;} + case CMD_PRINT:// 打印所有书籍 + {DoPrintBook(); + break;} + case CMD_QUERY:// 查找书籍 + {DoFindBook(); + break;} + case CMD_INSERT:// 添加书籍 + {DoAddBook(); + break;} + case CMD_DELETE:// 删除书籍 + {DoDeleteBook(); + break;} + case CMD_UPDATE:// 修改书籍 + {DoReviseBook(); + break;} + case CMD_SORT: // 排序书籍 + {DoSortBook(); + break;} + case CMD_QUIT:// 退出程序 + {if (confirm("确定要退出吗?")) quit(); // 仅在确认后退出 + break;} + default: + puts("命令错误,请重新选择"); + break;} + } + quit(); // 程序退出 + + DestroyList(books); + return 0; + } + + + + + + + void init(void) + { + puts("*******图书管理系统启动*******"); + } + void quit(void) + { + puts("系统退出"); + exit(EXIT_SUCCESS); + } + + + + void display_menu(void) + { + cout << "————————————————————————————————————————————————————————————————"< Date: Mon, 24 Apr 2023 19:34:15 +0800 Subject: [PATCH 11/30] drawio --- code.drawio | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 code.drawio diff --git a/code.drawio b/code.drawio new file mode 100644 index 0000000..e69de29 From a27fa75acd9d967c58824262cce9c9afe9221bca Mon Sep 17 00:00:00 2001 From: yangtengze Date: Mon, 24 Apr 2023 20:30:13 +0800 Subject: [PATCH 12/30] change --- README.md | 22 ++++- code.drawio | 277 ++++++++++++++++++++++++++++++++++++++++++++++++++++ code/data.h | 2 + 3 files changed, 297 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0c99a32..4e46874 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,14 @@ 程序退出 ``` ### C1: 查找图书 -选择菜单命令: 1 ,提示Find Book 和 Enter book ID: 字样,则继续输入图书编号。若没找到,提示Not found;若找到,提示Found 并 打印书籍信息。 +选择菜单命令: 1 ,提示Find Book 和 Enter book ID: 字样,若本身书籍库为空,则提示Book data empty。继续输入图书编号。若没找到,提示Not found;若找到,提示Found 并 打印书籍信息。 +``` +请选择:1 + +Find Book + +Book data empty +``` ``` 请选择:1 @@ -86,7 +93,14 @@ Book ************** Number: 3 ************** ``` ### C2:借用图书 -选择菜单命令:2,提示Boorow Book和Which book you wanna boorow ?,则继续输入图书编号。若该书本身不存在,则提示NOT FOUND THIS BOOK;如图书存在,则提示OK。 +选择菜单命令:2,提示 Boorow Book,若本身书籍库为空,则提示Book data empty。提示 Which book you wanna boorow ?,则继续输入图书编号。若该书本身不存在,则提示NOT FOUND THIS BOOK;如图书存在,则提示OK。 +``` +请选择:2 + +Boorow Book + +Book data empty +``` ``` 请选择:2 @@ -110,7 +124,7 @@ OK ********* ``` ### C3:归还图书 -选择菜单命令:3 提示归还图书 和 你想要归还哪一本书?输入图书编号,若在系统中没有该图书,则添加图书并输入图书的编号,数量和数目,显示相关信息并归还成功,否则直接退出。 +选择菜单命令:3,提示归还图书 和 你想要归还哪一本书?输入图书编号,若在系统中没有该图书,则添加图书并输入图书的编号,数量和数目,显示相关信息并归还成功,否则直接退出。 ````` 请选择:3 @@ -143,7 +157,7 @@ Which book you wanna repaid ? ````` ### C4:打印书籍 -选择菜单命令:4 提示打印书籍并打印图书信息,若没有书,则输出Total: 0 books,若有书,则输出书籍信息 +选择菜单命令:4,提示打印书籍并打印图书信息,若没有书,则输出Total: 0 books,若有书,则输出书籍信息 ``` 请选择:4 diff --git a/code.drawio b/code.drawio index e69de29..7adb46e 100644 --- a/code.drawio +++ b/code.drawio @@ -0,0 +1,277 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/code/data.h b/code/data.h index e931257..813dc33 100644 --- a/code/data.h +++ b/code/data.h @@ -97,6 +97,7 @@ void DoAddBook() void DoFindBook() { cout << endl << "Find Book" << endl <> id; @@ -178,6 +179,7 @@ void DoBoorowBook() { cout << endl << "Boorow Book" << endl <> id; From 76ed91640d4cf4c980731bfc19a09d3a9a906f02 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Mon, 24 Apr 2023 20:33:09 +0800 Subject: [PATCH 13/30] change --- code.drawio => 系统模块图.drawio | 96 +++++++++++++-------------- 1 file changed, 48 insertions(+), 48 deletions(-) rename code.drawio => 系统模块图.drawio (87%) diff --git a/code.drawio b/系统模块图.drawio similarity index 87% rename from code.drawio rename to 系统模块图.drawio index 7adb46e..3c0aa7e 100644 --- a/code.drawio +++ b/系统模块图.drawio @@ -1,16 +1,16 @@ - + - + - + - + @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -43,10 +43,10 @@ - + - + @@ -55,7 +55,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -105,25 +105,25 @@ - + - + - + - + - + - + - + @@ -131,10 +131,10 @@ - + - + @@ -143,10 +143,10 @@ - + - + @@ -154,7 +154,7 @@ - + @@ -163,10 +163,10 @@ - + - + @@ -174,7 +174,7 @@ - + @@ -183,7 +183,7 @@ - + @@ -192,10 +192,10 @@ - + - + @@ -203,7 +203,7 @@ - + @@ -213,10 +213,10 @@ - + - + @@ -224,7 +224,7 @@ - + @@ -233,10 +233,10 @@ - + - + @@ -244,31 +244,31 @@ - + - + - + - + - + - + - + - + - + From 8ecfd5b1bbc5c4ed6241561d03c7269be41d637d Mon Sep 17 00:00:00 2001 From: yangtengze Date: Mon, 24 Apr 2023 20:34:14 +0800 Subject: [PATCH 14/30] change --- 系统模块图.drawio => Graph/系统模块图.drawio | 0 图书管理系统.txt | 6 ++++++ 2 files changed, 6 insertions(+) rename 系统模块图.drawio => Graph/系统模块图.drawio (100%) diff --git a/系统模块图.drawio b/Graph/系统模块图.drawio similarity index 100% rename from 系统模块图.drawio rename to Graph/系统模块图.drawio diff --git a/图书管理系统.txt b/图书管理系统.txt index e69de29..12721bf 100644 --- a/图书管理系统.txt +++ b/图书管理系统.txt @@ -0,0 +1,6 @@ +*******图书管理系统启动******* +———————————————————————————————————————————————————————————————— +| 1 查书 | 2 借书 | 3 还书 | 4 打印 | 5 添加 | +| 6 删除 | 7 修改 | 8 排序 | 0 退出 | +———————————————————————————————————————————————————————————————— +请选择: \ No newline at end of file From 8f691070c4a1a08a7f5d30b839b9bb36b34bf6e5 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Mon, 24 Apr 2023 20:37:50 +0800 Subject: [PATCH 15/30] change --- Graph/系统模块图.drawio | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Graph/系统模块图.drawio b/Graph/系统模块图.drawio index 3c0aa7e..ce59098 100644 --- a/Graph/系统模块图.drawio +++ b/Graph/系统模块图.drawio @@ -1,6 +1,6 @@ - + @@ -265,12 +265,6 @@ - - - - - - From 7b0824c9d50e0179c419958c4185f650f13e0b7e Mon Sep 17 00:00:00 2001 From: yangtengze Date: Tue, 25 Apr 2023 15:25:12 +0800 Subject: [PATCH 16/30] change --- Graph/{系统模块图.drawio => 系统模块图.drawio.svg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Graph/{系统模块图.drawio => 系统模块图.drawio.svg} (100%) diff --git a/Graph/系统模块图.drawio b/Graph/系统模块图.drawio.svg similarity index 100% rename from Graph/系统模块图.drawio rename to Graph/系统模块图.drawio.svg From 7cbdbfb1146731daf3d7d373770e19c85b74beb5 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Tue, 25 Apr 2023 16:30:54 +0800 Subject: [PATCH 17/30] 111 --- Graph/MAIN.drawio.svg | 546 +++++++++++++++++++++++++++++++ Graph/系统模块图.drawio.svg | 271 --------------- README.md | 11 +- 3 files changed, 547 insertions(+), 281 deletions(-) create mode 100644 Graph/MAIN.drawio.svg delete mode 100644 Graph/系统模块图.drawio.svg diff --git a/Graph/MAIN.drawio.svg b/Graph/MAIN.drawio.svg new file mode 100644 index 0000000..c856f58 --- /dev/null +++ b/Graph/MAIN.drawio.svg @@ -0,0 +1,546 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

+ main +

+
+
+
+
+ + main + +
+
+ + + + + + +
+
+
+

+ make_choice +

+
+
+
+
+ + make_choice + +
+
+ + + + + + +
+
+
+

+ display_menu +

+
+
+
+
+ + display_menu + +
+
+ + + + + + +
+
+
+

+ init +

+
+
+
+
+ + init + +
+
+ + + + + + +
+
+
+

+ confirm +

+
+
+
+
+ + confirm + +
+
+ + + + + + +
+
+
+

+ quit +

+
+
+
+
+ + quit + +
+
+ + + + + + + + + + + +
+
+
+

+ + DoRepaidBook + +

+
+
+
+
+ + DoRepaidBook + +
+
+ + + + + + + + + + + +
+
+
+

+ + DoPrintBook + +

+
+
+
+
+ + DoPrintBook + +
+
+ + + + + + + + + + + + + + + + +
+
+
+

+ + DoDeleteBook + +

+
+
+
+
+ + DoDeleteBook + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+

+ + DoFindBook + +

+
+
+
+
+ + DoFindBook + +
+
+ + + + + + + + + + + + + + + + +
+
+
+

+ + DoAddBook + +

+
+
+
+
+ + DoAddBook + +
+
+ + + + + + + + + + + + + + + + +
+
+
+

+ DoBoorowBook +

+
+
+
+
+ + DoBoorowBook + +
+
+ + + + + + + + + + + +
+
+
+

+ + DoReviseBook + +

+
+
+
+
+ + DoReviseBook + +
+
+ + + + + + + + + + + +
+
+
+

+ DoSortBook() +

+
+
+
+
+ + DoSortBook() + +
+
+ + + + + + +
+
+
+

+ + find + +

+
+
+
+
+ + find + +
+
+ + + + + + +
+
+
+

+ input +

+
+
+
+
+ + input + +
+
+ + + + + + +
+
+
+

+ print +

+
+
+
+
+ + print + +
+
+ + + + + + + + +
+
+
+
+

+ + bookempty + +

+
+
+
+
+
+ + bookemp... + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/Graph/系统模块图.drawio.svg b/Graph/系统模块图.drawio.svg deleted file mode 100644 index ce59098..0000000 --- a/Graph/系统模块图.drawio.svg +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 4e46874..f898a8c 100644 --- a/README.md +++ b/README.md @@ -260,17 +260,8 @@ No such book 其中查询、添加、修改和删除数据还会用到根据编号查询数据的方法(find)。 上述各模块通过主程序(main)进行调用,系统模块图如下。 -``` - - - - - - - - -``` 各模块的主要功能如下: +![GRAPH](MAIN.drawio.svg) ## main 系统主函数模块,显示菜单,根据用户选择的菜单命令,执行相关操作。 ## init From fe8a798236f9a18d82b8a0f8e22ee3d7fafef68d Mon Sep 17 00:00:00 2001 From: yangtengze Date: Tue, 25 Apr 2023 16:53:54 +0800 Subject: [PATCH 18/30] change --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f898a8c..f7def0f 100644 --- a/README.md +++ b/README.md @@ -261,7 +261,7 @@ No such book 其中查询、添加、修改和删除数据还会用到根据编号查询数据的方法(find)。 上述各模块通过主程序(main)进行调用,系统模块图如下。 各模块的主要功能如下: -![GRAPH](MAIN.drawio.svg) +![GRAPH](Graph\MAIN.drawio.svg) ## main 系统主函数模块,显示菜单,根据用户选择的菜单命令,执行相关操作。 ## init From 85165a50d49cf2394ce1271e8ce07bb1f46b1a3c Mon Sep 17 00:00:00 2001 From: yangtengze Date: Tue, 25 Apr 2023 19:15:38 +0800 Subject: [PATCH 19/30] map change --- Graph/MAIN.drawio.svg | 586 ++++++++++++++++++++---------------------- 1 file changed, 283 insertions(+), 303 deletions(-) diff --git a/Graph/MAIN.drawio.svg b/Graph/MAIN.drawio.svg index c856f58..d2f7349 100644 --- a/Graph/MAIN.drawio.svg +++ b/Graph/MAIN.drawio.svg @@ -1,83 +1,87 @@ - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
+

@@ -87,18 +91,18 @@

- + main - - - + + + -
+

@@ -108,18 +112,18 @@

- + make_choice - - - + + + -
+

@@ -129,18 +133,18 @@

- + display_menu - - - + + + -
+

@@ -150,18 +154,18 @@

- + init - - - + + + -
+

@@ -171,18 +175,18 @@

- + confirm - - - + + + -
+

@@ -192,345 +196,321 @@

- + quit - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
+
-
-

- - DoRepaidBook +
+

+ + print

- - DoRepaidBook + + print - - - - - - - - + + + -
+
-
-

- - DoPrintBook +
+

+ + find

- - DoPrintBook + + find - - - - - - - - - - - - - + + + -
+
-
-

- - DoDeleteBook +
+

+ + input

- - DoDeleteBook + + input - - - - - - - - - - - - - - - - - - + + + -
+
-
-

- - DoFindBook - -

+
+ DoAddBook
- - DoFindBook + + DoAddBook - - - - - - - - - - - - - + + + -
+
-
-

- - DoAddBook - -

+
+ DoFindBook
- - DoAddBook + + DoFindBook - - - - - - - - - - - - - + + + -
+
-
-

- DoBoorowBook -

+
+ + DoDeleteBook +
- - DoBoorowBook + + DoDeleteBook - - - - - - - - + + + -
+
-
-

- - DoReviseBook - -

+
+ DoPrintBook
- - DoReviseBook + + DoPrintBook - - - - - - - - + + + -
+
-
-

- DoSortBook() -

+
+ + DoRepaidBook +
- - DoSortBook() + + DoRepaidBook - - - + + + -
-
-
-

- - find - -

+
+
+
+ + DoBoorowBook +
- - find + + DoBoorowBook - - - + + + -
-
-
-

- input -

+
+
+
+ + DoReviseBook +
- - input + + DoReviseBook - - - + + + -
+
-
-

- print -

+
+ DoSortBook
- - print + + DoSortBook - - - - - + + + -
+
-
-
-

- - bookempty - -

-
+
+ bookempty
- - bookemp... + + bookempty From 08efea66bce093499ed02556411e505f45831b9a Mon Sep 17 00:00:00 2001 From: yangtengze Date: Tue, 25 Apr 2023 19:16:44 +0800 Subject: [PATCH 20/30] 1 --- Graph/MAIN.drawio.svg | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Graph/MAIN.drawio.svg b/Graph/MAIN.drawio.svg index d2f7349..bdfb53f 100644 --- a/Graph/MAIN.drawio.svg +++ b/Graph/MAIN.drawio.svg @@ -1,4 +1,4 @@ - + - - - + + +
-
+
bookempty
- + bookempty From c6f58c6e353207cc64520e0b5b39db2256f1cf78 Mon Sep 17 00:00:00 2001 From: yangtengze Date: Tue, 25 Apr 2023 19:20:05 +0800 Subject: [PATCH 21/30] 1 --- Graph/MAIN.drawio.svg | 526 --------------------------------------- Graph/Outline.drawio.svg | 526 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 526 insertions(+), 526 deletions(-) create mode 100644 Graph/Outline.drawio.svg diff --git a/Graph/MAIN.drawio.svg b/Graph/MAIN.drawio.svg index bdfb53f..e69de29 100644 --- a/Graph/MAIN.drawio.svg +++ b/Graph/MAIN.drawio.svg @@ -1,526 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-

- main -

-
-
-
-
- - main - -
-
- - - - - - -
-
-
-

- make_choice -

-
-
-
-
- - make_choice - -
-
- - - - - - -
-
-
-

- display_menu -

-
-
-
-
- - display_menu - -
-
- - - - - - -
-
-
-

- init -

-
-
-
-
- - init - -
-
- - - - - - -
-
-
-

- confirm -

-
-
-
-
- - confirm - -
-
- - - - - - -
-
-
-

- quit -

-
-
-
-
- - quit - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-

- - print - -

-
-
-
-
- - print - -
-
- - - - - - -
-
-
-

- - find - -

-
-
-
-
- - find - -
-
- - - - - - -
-
-
-

- - input - -

-
-
-
-
- - input - -
-
- - - - - - -
-
-
- DoAddBook -
-
-
-
- - DoAddBook - -
-
- - - - - - -
-
-
- DoFindBook -
-
-
-
- - DoFindBook - -
-
- - - - - - -
-
-
- - DoDeleteBook - -
-
-
-
- - DoDeleteBook - -
-
- - - - - - -
-
-
- DoPrintBook -
-
-
-
- - DoPrintBook - -
-
- - - - - - -
-
-
- - DoRepaidBook - -
-
-
-
- - DoRepaidBook - -
-
- - - - - - -
-
-
- - DoBoorowBook - -
-
-
-
- - DoBoorowBook - -
-
- - - - - - -
-
-
- - DoReviseBook - -
-
-
-
- - DoReviseBook - -
-
- - - - - - -
-
-
- DoSortBook -
-
-
-
- - DoSortBook - -
-
- - - - - - -
-
-
- bookempty -
-
-
-
- - bookempty - -
-
-
- - - - - Text is not SVG - cannot display - - - -
\ No newline at end of file diff --git a/Graph/Outline.drawio.svg b/Graph/Outline.drawio.svg new file mode 100644 index 0000000..bdfb53f --- /dev/null +++ b/Graph/Outline.drawio.svg @@ -0,0 +1,526 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

+ main +

+
+
+
+
+ + main + +
+
+ + + + + + +
+
+
+

+ make_choice +

+
+
+
+
+ + make_choice + +
+
+ + + + + + +
+
+
+

+ display_menu +

+
+
+
+
+ + display_menu + +
+
+ + + + + + +
+
+
+

+ init +

+
+
+
+
+ + init + +
+
+ + + + + + +
+
+
+

+ confirm +

+
+
+
+
+ + confirm + +
+
+ + + + + + +
+
+
+

+ quit +

+
+
+
+
+ + quit + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

+ + print + +

+
+
+
+
+ + print + +
+
+ + + + + + +
+
+
+

+ + find + +

+
+
+
+
+ + find + +
+
+ + + + + + +
+
+
+

+ + input + +

+
+
+
+
+ + input + +
+
+ + + + + + +
+
+
+ DoAddBook +
+
+
+
+ + DoAddBook + +
+
+ + + + + + +
+
+
+ DoFindBook +
+
+
+
+ + DoFindBook + +
+
+ + + + + + +
+
+
+ + DoDeleteBook + +
+
+
+
+ + DoDeleteBook + +
+
+ + + + + + +
+
+
+ DoPrintBook +
+
+
+
+ + DoPrintBook + +
+
+ + + + + + +
+
+
+ + DoRepaidBook + +
+
+
+
+ + DoRepaidBook + +
+
+ + + + + + +
+
+
+ + DoBoorowBook + +
+
+
+
+ + DoBoorowBook + +
+
+ + + + + + +
+
+
+ + DoReviseBook + +
+
+
+
+ + DoReviseBook + +
+
+ + + + + + +
+
+
+ DoSortBook +
+
+
+
+ + DoSortBook + +
+
+ + + + + + +
+
+
+ bookempty +
+
+
+
+ + bookempty + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file From 69b73bdc10491b9d91428ad08be41072c86fc7aa Mon Sep 17 00:00:00 2001 From: yangtengze Date: Tue, 25 Apr 2023 19:47:11 +0800 Subject: [PATCH 22/30] 2 --- Graph/MAIN.drawio.svg | 865 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 865 insertions(+) diff --git a/Graph/MAIN.drawio.svg b/Graph/MAIN.drawio.svg index e69de29..0d278c9 100644 --- a/Graph/MAIN.drawio.svg +++ b/Graph/MAIN.drawio.svg @@ -0,0 +1,865 @@ + + + + + + + + + + + +
+
+
+ main +
+
+
+
+ + main + +
+
+ + + + + + + +
+
+
+ init +
+
+
+
+ + init + +
+
+ + + + + + + +
+
+
+ display_menu +
+
+
+
+ + display_menu + +
+
+ + + + + + + +
+
+
+ c=display_menu +
+
+
+
+ + c=display_menu + +
+
+ + + + + + + + +
+
+
+ + c=CMD_QUERY + +
+
+
+
+ + c=CMD_QUERY + +
+
+ + + + + + + + +
+
+
+ + c= + + + CMD_BOOROW + +
+
+
+
+ + c=CMD_BOOROW + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + + + + + +
+
+
+ + c= + + + CMD_REPAID + +
+
+
+
+ + c=CMD_REPAID + +
+
+ + + + + + + + +
+
+
+ + c= + + + CMD_PRINT + +
+
+
+
+ + c=CMD_PRINT + +
+
+ + + + + + + + +
+
+
+ + c= + + + CMD_INSERT + +
+
+
+
+ + c=CMD_INSERT + +
+
+ + + + + + + + +
+
+
+ + c=CMD_DELETE + +
+
+
+
+ + c=CMD_DELETE + +
+
+ + + + + + + + +
+
+
+ + c=CMD_UPDATE + +
+
+
+
+ + c=CMD_UPDATE + +
+
+ + + + + + + + +
+
+
+ + c=CMD_SORT + +
+
+
+
+ + c=CMD_SORT + +
+
+ + + + + + + + +
+
+
+ + c=CMD_QUIT + +
+
+
+
+ + c=CMD_QUIT + +
+
+ + + + + + + + +
+
+
+ + 确定退出 + +
+
+
+
+ + 确定退出 + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ + + + + + + +
+
+
+ quit +
+
+
+
+ + quit + +
+
+ + + + + + + +
+
+
+ DoFindBook +
+
+
+
+ + DoFindBook + +
+
+ + + + + + +
+
+
+ DoBoorowBook +
+
+
+
+ + DoBoorowBook + +
+
+ + + + + + +
+
+
+ DoRepaidBook +
+
+
+
+ + DoRepaidBook + +
+
+ + + + + + +
+
+
+ DoPrintBook +
+
+
+
+ + DoPrintBook + +
+
+ + + + + + +
+
+
+ DoAddBook +
+
+
+
+ + DoAddBook + +
+
+ + + + + + +
+
+
+ DoDeleteBook +
+
+
+
+ + DoDeleteBook + +
+
+ + + + + + +
+
+
+ DoReviseBook +
+
+
+
+ + DoReviseBook + +
+
+ + + + + + +
+
+
+ DoSortBook +
+
+
+
+ + DoSortBook + +
+
+ + + + + + +
+
+
+ 命令错误 +
+ 请重新选择 +
+
+
+
+ + 命令错误 +请重新选择 + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + + +
+
+
+ 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 3e1c7d77cae1d3f46e54bdf7d66427b8cd6078fc Mon Sep 17 00:00:00 2001 From: yangtengze Date: Tue, 25 Apr 2023 19:54:30 +0800 Subject: [PATCH 23/30] 1 --- README.md | 38 ++++++++++++-------------------------- 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index f7def0f..c6f78a0 100644 --- a/README.md +++ b/README.md @@ -261,7 +261,7 @@ No such book 其中查询、添加、修改和删除数据还会用到根据编号查询数据的方法(find)。 上述各模块通过主程序(main)进行调用,系统模块图如下。 各模块的主要功能如下: -![GRAPH](Graph\MAIN.drawio.svg) +![Outline](Graph\Outline.drawio.svg) ## main 系统主函数模块,显示菜单,根据用户选择的菜单命令,执行相关操作。 ## init @@ -276,31 +276,17 @@ Step 1: 初始化 Step 2: 根据用户选择的命令执行对应的操作 Step 2.1: 显示菜单 Step 2.2: 选择菜单命令 c -Step 2.3: if c == CMD_PRINT then 打印数据 -Step 2.4: -``` -``` - - - - - - - - - - - - - - - - - - -``` - - +Step 2.3: if c == CMD_QUERY then 查找书籍 +Step 2.4: if c == CMD_BOOROW then 借用书籍 +Step 2.5: if c == CMD_REPAID then 归还书籍 +Step 2.6: if c == CMD_PRINT then 打印书籍 +Step 2.7: if c == CMD_INSERT then 添加书籍 +Step 2.8: if c == CMD_DELETE then 删除书籍 +Step 2.9: if c == CMD_UPDATE then 修改书籍 +Step 2.10: if c == CMD_SORT then 排序书籍 +Step 2.11: if c == CMD_QUIT then 选择退出 +``` +![main](Graph\Main.drawio.svg) ## DoAddBook ``` Step 1: if 数据库满 then 提示数据库满并结束 From 90c29323cf316b312117e41b8e6d0e1157b200db Mon Sep 17 00:00:00 2001 From: yangtengze Date: Tue, 25 Apr 2023 22:06:04 +0800 Subject: [PATCH 25/30] 1 --- Graph/MAIN.drawio.svg | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Graph/MAIN.drawio.svg b/Graph/MAIN.drawio.svg index 0d278c9..5d0e409 100644 --- a/Graph/MAIN.drawio.svg +++ b/Graph/MAIN.drawio.svg @@ -1,8 +1,7 @@ - + @@ -32,7 +31,7 @@ -
+
init @@ -40,7 +39,7 @@
- + init @@ -52,7 +51,7 @@ -
+
display_menu @@ -60,7 +59,7 @@
- + display_menu @@ -487,7 +486,7 @@ -
+
quit @@ -495,7 +494,7 @@
- + quit From 1d8956047b5e4239639c63795d8ded3fce316c4c Mon Sep 17 00:00:00 2001 From: pkcs2aq9m Date: Wed, 26 Apr 2023 09:26:53 +0800 Subject: [PATCH 26/30] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c6f78a0..a73e24b 100644 --- a/README.md +++ b/README.md @@ -286,7 +286,7 @@ Step 2.9: if c == CMD_UPDATE then 修改书籍 Step 2.10: if c == CMD_SORT then 排序书籍 Step 2.11: if c == CMD_QUIT then 选择退出 ``` -![main](Graph\Main.drawio.svg) +![main](file:///C:/Users/yangt/Desktop/text1/Graph/Main.drawio.svg) ## DoAddBook ``` Step 1: if 数据库满 then 提示数据库满并结束 From fdd93dad0b45ffbd43629f469e23d747bf13538f Mon Sep 17 00:00:00 2001 From: yangtengze Date: Wed, 26 Apr 2023 10:00:31 +0800 Subject: [PATCH 27/30] change --- Graph/DoAddBook.drawio.svg | 186 ++++++++++++++++++++++++++++++++++++ Graph/DoFindBook.drawio.svg | 154 +++++++++++++++++++++++++++++ README.md | 64 +++++-------- code/data.h | 1 + 4 files changed, 367 insertions(+), 38 deletions(-) create mode 100644 Graph/DoAddBook.drawio.svg create mode 100644 Graph/DoFindBook.drawio.svg diff --git a/Graph/DoAddBook.drawio.svg b/Graph/DoAddBook.drawio.svg new file mode 100644 index 0000000..439f356 --- /dev/null +++ b/Graph/DoAddBook.drawio.svg @@ -0,0 +1,186 @@ + + + + + + + + + +
+
+
+ DoAddBook +
+
+
+
+ + DoAddBook + +
+
+ + + + + + + + +
+
+
+ 数据库满? +
+
+
+
+ + 数据库满? + +
+
+ + + + + + +
+
+
+ 显示:数据库满 +
+
+
+
+ + 显示:数据库满 + +
+
+ + + + + + +
+
+
+ 输入图书编号 +
+
+
+
+ + 输入图书编号 + +
+
+ + + + + + +
+
+
+ 输入图书名 +
+
+
+
+ + 输入图书名 + +
+
+ + + + + + +
+
+
+ 输入图书数量 +
+
+
+
+ + 输入图书数量 + +
+
+ + + + + + +
+
+
+ 显示图书信息 +
+ 和***Added*** +
+
+
+
+ + 显示图书信息 +和***Added*** + +
+
+ + + + +
+
+
+ N +
+
+
+
+ + N + +
+
+ + + + +
+
+
+ Y +
+
+
+
+ + Y + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/Graph/DoFindBook.drawio.svg b/Graph/DoFindBook.drawio.svg new file mode 100644 index 0000000..e11edcc --- /dev/null +++ b/Graph/DoFindBook.drawio.svg @@ -0,0 +1,154 @@ + + + + + + + + + +
+
+
+ DoFindBook +
+
+
+
+ + DoFindBook + +
+
+ + + + + + + + +
+
+
+ 图书库空? +
+
+
+
+ + 图书库空? + +
+
+ + + + + + +
+
+
+ 显示:图书库空 +
+
+
+
+ + 显示:图书库空 + +
+
+ + + + + + +
+
+
+ 输入图书编号 +
+
+
+
+ + 输入图书编号 + +
+
+ + + + + + + + +
+
+
+ 图书存在? +
+
+
+
+ + 图书存在? + +
+
+ + + + + + +
+
+
+ 显示Not Found +
+
+
+
+ + 显示Not Found + +
+
+ + + + + + +
+
+
+ 显示图书信息 +
+ 提示Found +
+
+
+
+ + 显示图书信息 +提示Found + +
+
+ +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/README.md b/README.md index a73e24b..67ffd8e 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ ## 需求分析 分析系统的功能需求和界面需求,编制用户手册如下。 -### Ca: 启动程序 +### Ca:启动程序 命令行中执行命令,系统启动,显示提示信息,然后显示功能菜单,等待用户输入命令。 ``` *******图书管理系统启动******* @@ -41,7 +41,7 @@ ———————————————————————————————————————————— 请选择: ``` -### Cb: 显示命令菜单 +### Cb:显示命令菜单 ``` ———————————————————————————————————————————— | 1 查书 | 2 借书 | 3 还书 | 4 打印 | 5 添加 | @@ -49,7 +49,7 @@ ———————————————————————————————————————————— 请选择: ``` -### C0: 退出程序 +### C0:退出程序 选择菜单命令:0 再输入:y,确认,则退出程序。若输入:n,则继续程序。 ``` 请选择:0 @@ -61,7 +61,7 @@ 确定要退出吗?(Y/N): n 程序退出 ``` -### C1: 查找图书 +### C1:查找图书 选择菜单命令: 1 ,提示Find Book 和 Enter book ID: 字样,若本身书籍库为空,则提示Book data empty。继续输入图书编号。若没找到,提示Not found;若找到,提示Found 并 打印书籍信息。 ``` 请选择:1 @@ -92,7 +92,7 @@ Book **** title: 《 2 》**** ************** Number: 3 ************** ``` -### C2:借用图书 +### C2:借用图书 选择菜单命令:2,提示 Boorow Book,若本身书籍库为空,则提示Book data empty。提示 Which book you wanna boorow ?,则继续输入图书编号。若该书本身不存在,则提示NOT FOUND THIS BOOK;如图书存在,则提示OK。 ``` 请选择:2 @@ -123,7 +123,7 @@ Which book you wanna boorow ? OK ********* ``` -### C3:归还图书 +### C3:归还图书 选择菜单命令:3,提示归还图书 和 你想要归还哪一本书?输入图书编号,若在系统中没有该图书,则添加图书并输入图书的编号,数量和数目,显示相关信息并归还成功,否则直接退出。 ````` 请选择:3 @@ -179,8 +179,12 @@ Book Total: 1 books ``` -### C5:添加图书 -选择菜单命令:5 提示添加图书,提示输入想添加的图书编号,标题和数目并输出Book,输出添加完后图书的相关信息和“Added”。 +### C5:添加图书 +选择菜单命令:5 提示添加图书,若图书库满,提示Books full.提示输入想添加的图书编号,标题和数目并输出Book,输出添加完后图书的相关信息和“Added”。 +``` +请选择:5 +Books full +``` ``` 请选择:5 @@ -286,40 +290,24 @@ Step 2.9: if c == CMD_UPDATE then 修改书籍 Step 2.10: if c == CMD_SORT then 排序书籍 Step 2.11: if c == CMD_QUIT then 选择退出 ``` -![main](file:///C:/Users/yangt/Desktop/text1/Graph/Main.drawio.svg) +![main](Graph\Main.drawio.svg) ## DoAddBook ``` -Step 1: if 数据库满 then 提示数据库满并结束 +Step 1: if 图书库满 then 提示图书库满 Step 2: 输入图书编号 -Step 3: 输入图书名和书籍数量 +Step 3: 输入图书名 +Step 4: 输入图书数量 Step 4: 添加新书籍 Step 5: 提示添加成功 ``` +![add](Graph\DoAddBook.drawio.svg) +## DoFindBook ``` - - - - - - - - - - - - - - - - - - - - - - - - - - -``` \ No newline at end of file +Step 1: 提示添加书籍 +Step 2: if 图书库空 then 提示库空 +Step 3: 提示输入图书编号 +Step 4: 输入图书编号 +Step 5: if 找到图书 then 输出图书信息 并提示Found +Step 6: if 没找到 then 提示Not found +``` +![find](Graph\DoFindBook.drawio.svg) \ No newline at end of file diff --git a/code/data.h b/code/data.h index 813dc33..59329a7 100644 --- a/code/data.h +++ b/code/data.h @@ -84,6 +84,7 @@ bool bookempty() // 添加图书 void DoAddBook() { + if (books.length == 256) cout << "Books full" << endl; cout << endl << "Add Book"<< endl< Date: Wed, 26 Apr 2023 10:39:51 +0800 Subject: [PATCH 28/30] 1 --- Graph/MAIN.drawio.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Graph/MAIN.drawio.svg b/Graph/MAIN.drawio.svg index 5d0e409..5991129 100644 --- a/Graph/MAIN.drawio.svg +++ b/Graph/MAIN.drawio.svg @@ -1,4 +1,4 @@ - +