露水之余 发表于 2018-6-25 15:59:33

我需要帮忙

课程题目:餐厅管理程序
内容要求:使用文本命令行设计餐厅管理程序。要求使用文本命令行界面,用文件保存餐厅里的菜单信息、座位信息等。能实现菜单信息和座位的增、删、改、查等功能,以及座位保留和预订。
c++的

风过无痕丶 发表于 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;
                }
        }
}


露水之余 发表于 2018-6-26 22:37:23

风过无痕丶 发表于 2018-6-26 16:47
没人写吗。。。
我觉得你没有阐述清楚,我就按照我自己的理解写了一个
写的比较臃肿。。不想改了。。


谢谢!!我再看看
学校的课程就是c++
{:10_254:}

露水之余 发表于 2018-6-27 14:14:58

风过无痕丶 发表于 2018-6-25 15:59
没人写吗。。。
我觉得你没有阐述清楚,我就按照我自己的理解写了一个
写的比较臃肿。。不想改了。。


{:10_257:}可以问下你写这代码的思路么{:10_266:}

风过无痕丶 发表于 2018-6-27 15:21:05

露水之余 发表于 2018-6-27 14:14
可以问下你写这代码的思路么

思路,思路这个东西怎么讲,你这个题目又讲得太广义了。没有落到实处,应该怎么弄。 我能获取到的有价值的消息就是,菜单,座位,预定,文本保存。
页: [1]
查看完整版本: 我需要帮忙