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