#include "render_ui.h" #include "data.h" #include "userAuth.h" #include int show_main_menu() { int choice = 0; std::cout << endl << "[=== 主菜单 ===]" << std::endl << "1. 车辆进场" << std::endl << "2. 车辆离场" << std::endl << "3. 查看在场车辆" << std::endl << "4. 查看离场车辆" << std::endl << "5. 添加用户" << std::endl << "6. 查看已有用户" << std::endl << "7. 修改用户密码" << std::endl << "8. 删除用户" << std::endl << "9. 退出" << std::endl << "请输入选项: "; while (!(std::cin >> choice) || choice < 1 || choice > 9) { std::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); std::cout << "请重新输入。" << std::endl; } std::cin.ignore(); return choice; } void display_user_records(const std::vector &records) { if (records.empty()) { std::cout << "数据库中没有存储记录。" << std::endl; return; } std::cout << "[====== 用户记录 ======]" << std::endl; for (const auto &record : records) { std::cout << "ID: " << record.id << std::endl << "用户名称: " << record.username << std::endl << "用户密码: " << record.userpassword << std::endl << "创建时间: " << record.created_time << std::endl << "[------------------------]" << std::endl; } } void handle_show_user_records(sqlite3 *db) { auto records = get_user_inputs(db); display_user_records(records); } void display_pa_records(const std::vector &records) { if (records.empty()) { std::cout << "数据库中没有存储记录。" << std::endl; return; } std::cout << "[====== 车辆记录记录 ======]" << std::endl; for (const auto &record : records) { std::cout << "ID: " << record.id << std::endl << "车牌号: " << record.car_id << std::endl << "进场时间: " << record.in_pa_time << std::endl << "离场时间: " << record.out_pa_time << std::endl << "[------------------------]" <> target_id)) { std::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); std::cout << "无效的ID输入" << std::endl; return; } std::cin.ignore(); auto it = std::find_if( records.begin(), records.end(), [target_id](const UserStruct &u) { return u.id == target_id; }); if (it == records.end()) { std::cout << "未能找到ID为 " << target_id << " 的记录" << std::endl; return; } std::string new_content1; std::cout << "原用户名 " << it->username << std::endl; std::cout << "新用户名(直接回车取消) "; std::getline(std::cin, new_content1); std::string new_content2; std::cout << "原用户密码 " << it->userpassword << std::endl; std::cout << "新用户密码(直接回车取消) "; std::getline(std::cin, new_content2); if (new_content1.empty()) { new_content1 = it->username; } if (new_content2.empty()) { new_content2 = it->userpassword; } if (update_user(db, target_id, new_content1, new_content2)) { std::cout << "更新成功!" << std::endl; } else { std::cout << "更新失败!" << std::endl; } } void handle_delete_user_record(sqlite3 *db) { auto records = get_user_inputs(db); display_user_records(records); if (records.empty()) return; std::cout << "请输入要删除的记录ID(或输入exit取消): " << std::endl; std::string input; std::getline(std::cin, input); // 处理取消操作 if (input == "exit" || input == "EXIT") { std::cout << "已取消删除操作" << std::endl; return; } try { int target_id = std::stoi(input); auto it = std::find_if( records.begin(), records.end(), [target_id](const UserStruct &u) { return u.id == target_id; }); if (it == records.end()) { std::cout << "未找到ID为 " << target_id << " 的记录" << std::endl; return; } // 确认删除 std::cout << "确认删除以下记录吗? " << std::endl << "ID: " << it->id << std::endl << "用户名: " << it->username << std::endl << "输入 y 确认,其他取消: "; std::string confirm; std::getline(std::cin, confirm); if (confirm == "y" || confirm == "Y") { if (delete_user(db, target_id)) { std::cout << "记录删除成功! " << std::endl; } else { std::cout << "记录删除失败! " << std::endl; } } else { std::cout << "已取消删除操作。 " << std::endl; } } catch (const std::invalid_argument &) { std::cout << "无效的ID输入! " << std::endl; } catch (const std::out_of_range &) { std::cout << "ID超出有效范围! " << std::endl; } } void handle_leave_car (sqlite3* db) { auto records = get_pa_cars(db); display_pa_records(records); int choice; std::cout << "请输入要离场的车辆:" ; std::cin >> choice; if (car_leave_func(db, choice)) { std::cout << "车辆离场! " <