///程序启动 ///1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加 ///6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出 ///请选择: 0 ///确定要退出吗?(Y/N): no #include #include #include "data.h" enum { CMD_QUIT, // 退出 CMD_READ, // 读取 CMD_SAVE, // 保存 CMD_PRINT, // 打印 CMD_QUERY, // 查询 CMD_INSERT, // 添加 CMD_UPDATE, // 修改 CMD_DELETE, // 删除 CMD_SORT, // 排序 CMD_CHART, // 图表 }; // 函数声明 void init(void); // 程序启动 void quit(void); // 程序退出 void display_menu(void); // 显示命令菜单 int make_choice(void); // 选择命令 int confirm(const char* msg); // 确认 // 主函数 int main(void) { init(); // 程序启动 for(;;) { display_menu(); // int c = make_choice(); switch(c) { case CMD_READ: read_data(); break; case CMD_SAVE: save_data(); break; case CMD_PRINT: print_data(); break; 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_SORT: sort_data(); break; case CMD_CHART: make_chart(); break; case CMD_QUIT: if (confirm("确定要退出吗?")) quit(); // 仅在确认后退出 break; default: puts("命令错误,请重新选择"); break;} } quit(); // 程序退出 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; } 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'; // 返回确认结果 }