#include "CosmeticManager.h" #include #include #include void displayMenu() { std::cout << "\n===== 化妆品管理系统 =====" << std::endl; std::cout << "当前时间: " << Cosmetic::getTime() << std::endl; std::cout << "1. 添加化妆品" << std::endl; std::cout << "2. 删除化妆品" << std::endl; std::cout << "3. 查询化妆品" << std::endl; std::cout << "4. 修改化妆品" << std::endl; std::cout << "5. 显示所有化妆品" << std::endl; std::cout << "6. 查找临期化妆品" << std::endl; std::cout << "0. 退出系统" << std::endl; std::cout << "=========================" << std::endl; std::cout << "请选择操作: " << std::endl; } // 获取并验证日期输入 bool getAndValidateDate(CosmeticManager& manager, std::string& expirationDate) { std::cout << "输入过期日期 (YYYY-MM-DD): "; std::cin >> expirationDate; if (!manager.isValidDate(expirationDate)) { std::cout << "日期格式有误!格式YYYY-MM-DD 例2000-01-01" << std::endl; manager.launchWindow("日期格式有误","格式YYYY-MM-DD 例2000-01-01"); return false; } return true; } int main() { CosmeticManager manager; manager.loadFromFile(); // 启动时加载数据 while (true) { int choice; std::string name; double price; int type; std::string expirationDate;// 过期日期 std::string msgboxTitle, msgboxContent;// 消息框标题和内容 displayMenu(); std::cin >> choice; switch (choice) { case 1: { std::cout << "输入品牌名称: "; std::cin >> name; std::cout << "输入价格: "; std::cin >> price; std::cout << "输入类型 (1-国产, 0-进口): "; std::cin >> type; if (type!=1 && type!=0) { msgboxTitle="添加失败"; msgboxContent="类型输入错误!请输入1-国产, 0-进口"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); break; } if (!getAndValidateDate(manager, expirationDate)) { break; } // 检查品牌名是否已存在 if (manager.findCosmetic(name) != nullptr) { msgboxTitle="添加失败"; msgboxContent="品牌名已存在"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); break; } if (manager.addCosmetic(Cosmetic(name, price, type, expirationDate))) { msgboxTitle="添加成功"; msgboxContent="品牌添加成功"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); } else { msgboxTitle="添加失败"; msgboxContent="品牌已存在或其他错误"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); } break; } case 2: { std::cout << "输入要删除的品牌名称: "; std::cin >> name; if (manager.deleteCosmetic(name)) { msgboxTitle="删除成功"; msgboxContent="品牌删除成功"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); } else { msgboxTitle="删除失败"; msgboxContent="未找到该品牌"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); } break; } case 3: { std::cout << "输入要查询的品牌名称: "; std::cin >> name; Cosmetic* cosmetic = manager.findCosmetic(name); if (cosmetic) { std::cout << "品牌: " << cosmetic->getName() << "\n" << "价格: " << cosmetic->getPrice() << "\n" << "类型: " << (cosmetic->getType() ? "国产" : "进口") << "\n" << "过期日期: " << cosmetic->getExpirationDate() << "\n" << std::endl; manager.launchWindow("查询成功",cosmetic->getName() + "\n" + "价格: " + std::to_string(cosmetic->getPrice()) + "\n" + "类型: " + (cosmetic->getType() ? "国产" : "进口") + "\n" + "过期日期: " + cosmetic->getExpirationDate()); msgboxTitle="查询成功"; msgboxContent=cosmetic->getName() + "\n" + "价格: " + std::to_string(cosmetic->getPrice()) + "\n" + "类型: " + (cosmetic->getType() ? "国产" : "进口") + "\n" + "过期日期: " + cosmetic->getExpirationDate(); std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); } else { msgboxTitle="查询失败"; msgboxContent="未找到该品牌"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); } // 清除输入缓冲区 std::cin.ignore(std::numeric_limits::max(), '\n'); break; } case 4: { std::cout << "输入要修改的品牌名称: "; std::cin >> name; std::cout << "输入新价格: "; std::cin >> price; std::cout << "输入新类型 (1-国产, 0-进口): "; std::cin >> type; if (type!=1 && type!=0) { msgboxTitle="类型输入错误"; msgboxContent="请输入1-国产, 0-进口"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); break; } if (!getAndValidateDate(manager, expirationDate)) { break; } if (manager.modifyCosmetic(name, price, type, expirationDate)) { msgboxTitle="修改成功"; msgboxContent="品牌修改成功"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); } else { msgboxTitle="修改失败"; msgboxContent="未找到该品牌"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); } break; } case 5: manager.displayAll(); break; case 6: { int days; std::cout << "输入临期天数: "; std::cin >> days; manager.displayExpiringCosmetics(days); break; } case 0: manager.saveToFile(); msgboxTitle="数据已保存"; msgboxContent="数据已保存,再见!"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); return 0; default: msgboxTitle="无效选项"; msgboxContent="请重新选择!"; std::cout << msgboxContent << std::endl; manager.launchWindow(msgboxTitle,msgboxContent); } } // ??? return 0; }