You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
text1/code/title.cpp

127 lines
3.4 KiB

2 years ago
#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'; // 返回确认结果
}