|
发表于 2018-6-25 15:59:34
|
显示全部楼层
本楼为最佳答案
没人写吗。。。
我觉得你没有阐述清楚,我就按照我自己的理解写了一个
写的比较臃肿。。不想改了。。
- #include <iostream>
- #include <fstream>
- #include <list>
- #include <string>
- #include <vector>
- using namespace std;
- // 常量定义
- const int TABLE_MAX = 100; // 最大桌数
- const int SEAT_MAX = 10; // 每桌最大人数
- class Restaurant {
- public:
- // 默认初始化
- Restaurant():is_Destine(false), Seat_number(0), Seat_val(1), menu(){}
-
- // 增加菜品
- bool Set_menu_add(string food) {
- // 判断一下菜单里面有没有这个菜
- int count = 0;
- for (vector<string>::iterator i = menu.begin(); i != menu.end(); i++, count++) {
- if ((*i) == food) {
- return false; // 有这个菜了
- }
- }
- this->menu.push_back(food);
- return true;
- }
- // 删除菜品
- bool Set_menu_sub(string food) {
- int count = 0;
- for (vector<string>::iterator i = menu.begin(); i != menu.end(); i++,count++) {
- if ((*i) == food) {
- menu.erase(menu.begin() + count);
- return true; // 删除成功
- }
- }
- return false; // 没有找到food
- }
- // 增加座位
- bool Set_Seat_add(int val){
- if (this->Seat_number + val >= SEAT_MAX) {
- return false; // 人多了
- }
- this->Seat_number += val;
- return true;
- }
- // 减少座位
- bool Set_Seat_sub(int val){
- if ((this->Seat_number - val) < 0) {
- return false; // 人数不够减
- }
- else if (this->Seat_number == 0) {
- return false; // 空桌
- }
- this->Seat_number -= val;
- return true;
- }
- // 预定
- bool Set_Destine(int val, string Tel) {
- // 判断这一下这桌有没人
- if (this->Seat_number == 0) {
- this->is_Destine = true;
- this->Destine_Tel = Tel;
- this->Seat_number = 0;
- return true; // 预约成功
- }
- else {
- return false; // 预约失败
- }
- }
-
- vector<string> Get_menu() { return menu; } // 获取点菜信息
- int Get_Seat_val() { return this->Seat_val; } // 获取桌号
- void Set_Seat_val(int val) { this->Seat_val = val; } // 设置桌号
- bool Get_Destine() { return is_Destine; } // 是否被预定
- string Get_Destine_Tel() { return this->Destine_Tel; } // 获取预订者的手机号
- int Get_Seat_number() { return this->Seat_number; } // 获取就餐人数
- private:
- bool is_Destine; // 是否被预定
- string Destine_Tel; //预约者手机号
- int Seat_number; // 座位
- int Seat_val; // 座位号
- vector<string> menu; //菜单
- };
- bool is_val(int val) {
- return val > TABLE_MAX;
- }
- int main()
- {
- /*
- 操作指令:
- 增加菜品: SMA
- 删除菜品: SMS
- 增加座位: SSA
- 查询是否被预定: GET_DT
- 查看指定桌的就餐情况: GET
- 保存到文本: KEEP;
- 退出: EXIT
- 预定: DS
- */
- list<Restaurant> Restaurant_list;
- string CMD;
- Restaurant R;
- // 先把餐厅搞出来
- for (int i = 0; i < TABLE_MAX; i++) {
- R.Set_Seat_val(i);
- Restaurant_list.push_back(R);
- }
- // 触发事件
- while (true) {
- cout << "请输入操作指令: ";
- cin >> CMD;
- if ((CMD != "SMA") && (CMD != "SMS") && (CMD != "SSA") && (CMD != "GET") && (CMD != "SD") && (CMD != "KEEP") && (CMD != "EXIT") && (CMD != "GET_DT")) {
- cout << "请正确填写命令!" << endl;
- }
-
- if (CMD == "SMA") { //增加菜品
- string menu;
- int val;
- cout << "请输入你要增加的菜品名称和桌号: ";
- cin >> menu >> val;
- while (is_val(val)) {
- cout << "请正确填写桌号" << endl;
- cin >> val;
- }
- for (list<Restaurant>::iterator i = Restaurant_list.begin(); i != Restaurant_list.end(); i++) {
- if (i->Get_Seat_val() == val) {
- if (i->Set_menu_add(menu)) {
- cout << "操作成功!" << endl;
- }
- else {
- cout << "操作失败!" << endl;
- }
- }
- }
- }
- else if (CMD == "SMS") { //删除菜品
- string menu;
- int val;
- cout << "请输入你要增加的菜品名称和桌号: ";
- cin >> menu >> val;
- while (is_val(val)) {
- cout << "请正确填写桌号" << endl;
- cin >> val;
- }
- for (list<Restaurant>::iterator i = Restaurant_list.begin(); i != Restaurant_list.end(); i++) {
- if (i->Get_Seat_val() == val) {
- if (R.Set_menu_sub(menu)) {
- cout << "操作成功!" << endl;
- }
- else {
- cout << "操作失败!" << endl;
- }
- }
- }
- }
- else if (CMD == "SSA") { // 增加座位
- cout << "请输入要增加座位的人数和桌号: ";
- int val,menu;
- cin >> menu >> val;
- while (is_val(val)) {
- cout << "请正确填写桌号" << endl;
- cin >> val;
- }
- for (list<Restaurant>::iterator i = Restaurant_list.begin(); i != Restaurant_list.end(); i++) {
- if (i->Get_Seat_val() == val) {
- if (i->Set_Seat_add(menu)) {
- cout << "操作成功!" << endl;
- break;
- }
- else {
- cout << "操作失败!" << endl;
- break;
- }
- }
- }
- }
- else if (CMD == "GET") { // 查询指定桌的情况
- int val;
- cout << "请输如你要查询的桌号: " << endl;
- cin >> val;
- while (is_val(val)) {
- cout << "请正确填写桌号" << endl;
- cin >> val;
- }
- for (list<Restaurant>::iterator i = Restaurant_list.begin(); i != Restaurant_list.end(); i++) {
- if (i->Get_Seat_val() == val) {
- // 判断一下被预定没有
- if (i->Get_Destine()) {
- cout << "当前桌被预定,预定者的手机号为: " << i->Get_Destine_Tel() << endl;
- }
- else {
- cout << "当前桌" << i->Get_Seat_number() << "人就餐"
- << "空余座位" << SEAT_MAX - i->Get_Seat_number() << "个" << endl;
- }
- }
- }
- }
- else if (CMD == "GET_DT") { // 查询是否被预定
- int val;
- cout << "请输如你要查询的桌号: ";
- cin >> val;
- while (is_val(val)) {
- cout << "请正确填写桌号: ";
- cin >> val;
- }
- for (list<Restaurant>::iterator i = Restaurant_list.begin(); i != Restaurant_list.end(); i++) {
- if (i->Get_Seat_val() == val) {
- // 判断一下被预定没有
- if (i->Get_Destine()) {
- cout << "当前桌被预定,预定者的手机号为: " << i->Get_Destine_Tel() << endl;
- break;
- }
- else {
- cout << "没有被预约" << endl;
- break;
- }
- }
- }
- }
- else if (CMD == "SD") { // 预定
- cout << "请输入欲预定的桌号和预订者的手机号: ";
- string Tel;
- int val;
- cin >> val >> Tel;
- while (is_val(val)) {
- cout << "请正确填写桌号" << endl;
- cin >> val;
- }
- // 检查一下手机号是否合法
- while (Tel.size() != 11) {
- cout << "请正确填写手机号码: " << endl;
- cin >> Tel;
- }
- for (list<Restaurant>::iterator i = Restaurant_list.begin(); i != Restaurant_list.end(); i++) {
-
- if (i->Get_Seat_val() == val) {
- // 检查指定桌号被其他人预定没有
- if (i->Get_Destine()) {
- cout << "你来晚了,这一桌已经被其他人预定了!" << endl;
- }
- else {
- if (i->Set_Destine(val, Tel)) {
- cout << "预约成功" << endl;
- }
- else {
- cout << "这一桌好像有人正在吃饭哦" << endl;
- }
- }
- }
- }
- }
- else if (CMD == "KEEP") { // 保存信息
- ofstream f("d:\\Test.txt", ios::out);
-
- int count = 0;
- for (list<Restaurant>::iterator i = Restaurant_list.begin(); i != Restaurant_list.end(); i++,count++) {
- f << "第" << count << "桌:"
- << i->Get_Seat_number() << "人就餐" << '\n'
- << "点菜:";
- vector<string> menu = i->Get_menu();
- for (vector<string>::iterator j = menu.begin(); j != menu.end(); j++) {
- f << *j << " ";
- }
- f << endl;
- f << "========================" << endl;
-
- }
- cout << "操作成功" << endl;
- f.close();
- }
- else if (CMD == "EXIT") { // 退出
- return 0;
- }
- }
- }
复制代码
|
|