#include <stdio.h> #include <stdlib.h> #include <iostream> 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 << "————————————————————————————————————————————————————————————————"<<endl; printf("| %d 查书 | %d 借书 | %d 还书 | %d 打印 | %d 添加 |\n| %d 删除 | %d 修改 | %d 排序 | %d 退出 |\n", CMD_QUERY,CMD_BOOROW,CMD_REPAID,CMD_PRINT,CMD_INSERT,CMD_DELETE,CMD_UPDATE,CMD_SORT,CMD_QUIT); cout << "————————————————————————————————————————————————————————————————"<<endl; } int make_choice(void) { int c; // 用户输入 int n = 0; // 正确读入的数据项个数 while (n == 0) { printf("请选择:"); n = scanf("%d", &c); // 尝试读入整数 c scanf("%*[^\n]"); // 跳过一行中剩余的字符 } return c; } int confirm(const char* msg) { char c = 'n'; // 默认选择是 no printf("%s(Y/N): ", msg); // 提示输入 yes/no 进行确认s scanf(" %c%*[^\n]", &c); // 读取第一个字符,忽略剩余字符 return c == 'y' || c == 'Y'; // 返回确认结果 }