代码:
#include#include #include using namespace std; struct Food { string name; // 菜名 double price; // 价格 int food_num; // 数量 int love; // 点赞数 }; struct Order { string user_name; // 订餐人姓名 Food food; // 菜品 string date_time; // 送餐时间 string address; // 送餐地址 int state; // 订单状态(0:派送中,1:已签收) double total_price; // 总金额 }; void showMenu(); void init(vector & F); void printFood(vector & F); void printOrder(vector & Or); bool signForOrder(vector & Or, int num); bool deleteOrder(vector & Or, int num); void add_food_love(vector & F, int num); int main() { // 初始化 vector F; // 菜品容器 vector Or; // 订单容器 init(F); int flag = 0; // 菜单选项 Order order; // 订餐信息容器 Food food; // 菜品信息容器 int no; // 菜品编号容器 bool res; // 返回结果容器(判断成功与否) string msg; // 提示语句 while (flag!=6) { showMenu(); cin >> flag; switch (flag) { case 1: cout << "***我要订餐***" << endl; cout << "请输入订餐人姓名:"; cin >> order.user_name; printFood(F); cout << "请选择菜品(请输入编号):"; cin >> no; food = F.at(no-1); cout << "请输入菜品数量:"; cin >> food.food_num; cout << "请输入送餐时间:"; cin >> order.date_time; cout << "请输入送餐地址:"; cin >> order.address; order.food = food; order.state = 0; order.total_price = food.price * food.food_num; Or.push_back(order); cout << "提示:订餐成功!" << endl; break; case 2: cout << "***查看餐袋***" << endl; printOrder(Or); break; case 3: cout << "***签收订单***" << endl; printOrder(Or); if (Or.size() > 0) { cout << "请选择要签收的订单编号:"; cin >> no; res = signForOrder(Or, no); msg = res ? "提示:订单签收成功!" : "提示:订单签收失败(已签收或订单编号不存在)"; cout << msg << endl; } break; case 4: cout << "***删除订单***" << endl; printOrder(Or); if (Or.size() > 0) { cout << "请选择要删除的订单编号:"; cin >> no; res = deleteOrder(Or, no); msg = res ? "提示:订单删除成功!" : "提示:订单删除失败(订单可能未签收或不存在)!"; cout << msg << endl; } break; case 5: cout << "***我要点赞***" << endl; printFood(F); cout << "请选择要点赞的菜品编号:"; cin >> no; add_food_love(F, no); cout << "提示:点赞成功!" << endl; break; case 6: cout << "***退出系统***" << endl; break; default: // ps:只能判断整数类型 cout << "***没有该选项***" << endl; break; } } return 0; } void init(vector & F) { Food f1 = { "鱼香肉丝",28 ,0,0}; Food f2 = { "红烧排骨",32 ,0,0 }; Food f3 = { "醋溜土豆丝",15 ,0,0 }; Food f4 = { "时令小菜",15 ,0,0 }; Food f5 = { "酸菜鱼hot",98 ,0,0 }; Food f6 = { "茄子豆角",22 ,0,0 }; Food f7 = { "蚂蚁上树",26 ,0,0 }; Food f8 = { "虎皮扣肉",58 ,0,0 }; Food f9 = { "西红柿炒蛋",18 ,0,0 }; F.push_back(f1); F.push_back(f2); F.push_back(f3); F.push_back(f4); F.push_back(f5); F.push_back(f6); F.push_back(f7); F.push_back(f8); F.push_back(f9); } void printFood(vector & F) { int num = 1; cout << "序号 t菜名名字 " << "t价格" << "t点赞人数" << endl; for (vector ::iterator it = F.begin(); it != F.end(); it++) { cout << num << ".t" << it->name << "t" << it->price << "t " << it->love << endl; num++; } } void showMenu() { cout << "n欢迎使用“吃货联盟系统”~" << endl; cout << "***********************************" << endl; cout << "1、我要订餐" << endl; cout << "2、查看餐袋" << endl; cout << "3、签收订单" << endl; cout << "4、删除订单" << endl; cout << "5、我要点赞" << endl; cout << "6、退出系统" << endl; cout << "***********************************" << endl; cout << "请选择:"; } void printOrder(vector & Or) { if (Or.size() > 0) { int num = 1; cout << "序号t订餐人姓名t菜品名称t菜品数量t送餐时间t送餐地址t订单状态t总金额" << endl; for (vector ::iterator it = Or.begin(); it != Or.end(); it++) { cout << num << ".t" << it->user_name << " tt" << it->food.name << "t" << it->food.food_num << "tt" << it->date_time << "t" << it->address << "t" << ((it->state) == 0 ? "派送中" : "已签收") << "tt" << it->total_price << endl; num++; } } else { cout << "提示:当前暂无订单信息" << endl; } } bool signForOrder(vector & Or, int num) { if (Or.size() > 0 && num <= Or.size() && num > 0 && Or.at(--num).state == 0) { Or.at(num).state = 1; return true; } return false; } bool deleteOrder(vector & Or, int num) { if (Or.size() > 0 &&num <= Or.size() && num > 0 && Or.at(--num).state == 1) { int index = 0; for (vector ::iterator it = Or.begin(); it != Or.end(); it++) { if (index == num) { Or.erase(it); return true; } } } return false; } void add_food_love(vector & F, int num) { num--; F.at(num).love++; }



