程序设计:食堂菜品管理系统

编写程序,包含以下功能
1增加菜品信息(编号、菜品名、类别、价格、受欢迎程度(0-10分))
2更新菜品信息(价格,受欢迎程度等)
3删除某个类别(类别删除后,此类别下的所有菜品都删除)
4删除某个菜品
5查找某个类别下的所有菜品
6统计评分最高的10个菜品,作为推荐菜显示。

已帮你完成所有代码实现,望采纳


下面是代码实现。这个代码实现包含上述功能,并且使用了一个简单的类来存储菜品信息,一个 map 来保存每个类别下的菜品,以及一个 vector 来存储所有菜品:

#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;
class Dish {
  public:
    // 构造函数
  Dish(int id, const string& name, const string& category, double price,
         int rating)
        : id_(id),
          name_(name),
          category_(category),
          price_(price),
          rating_(rating) {
  }
  // 获取菜品 id
  int getId() const {
    return id_;
  }
  // 获取菜品名
  string getName() const {
    return name_;
  }
  // 获取菜品类别
  string getCategory() const {
    return category_;
  }
  // 获取菜品价格
  double getPrice() const {
    return price_;
  }
  // 获取菜品评分
  int getRating() const {
    return rating_;
  }
  // 设置菜品价格
  void setPrice(double price) {
    price_ = price;
  }
  // 设置菜品评分
  void setRating(int rating) {
    rating_ = rating;
  }
  private:
    int id_;
  string name_;
  string category_;
  double price_;
  int rating_;
}
;
class Menu {
  public:
    // 构造函数
  Menu() : next_id_(1) {
  }
  // 增加菜品信息
  void addDish(const string& name, const string& category, double price,
                 int rating) {
    dishes_[next_id_] = Dish(next_id_, name, category, price, rating);
    category_dishes_[category].push_back(next_id_);
    next_id_++;
  }
  // 更新菜品信息
  void updateDish(int id, double price, int rating) {
    // 找到菜品
    auto it = dishes_.find(id);
    if (it == dishes_.end()) {
      // 没有找到菜品
      return;
    }
    // 更新价格和评分
    it->second.setPrice(price);
    it->second.setRating(rating);
  }
  // 删除某个类别(类别删除后,此类别下的所有菜品都删除)
  void deleteCategory(const string& category) {
    // 找到类别
    auto it = category_dishes_.find(category);
    if (it == category_dishes_.end()) {
      // 没有找到类别
      return;
    }
    Copy code
    // 删除所有属于该类别的菜品
    for (int id : it->second) {
      dishes_.erase(id);
    }
    // 删除该类别
    category_dishes_.erase(it);
  }
  // 删除某个菜品
  void deleteDish(int id) {
    // 找到菜品
    auto it = dishes_.find(id);
    if (it == dishes_.end()) {
      // 没有找到菜品
      return;
    }
    // 从类别中删除该菜品
    auto& category_dish = category_dishes_[it->second.getCategory()];
    for (int i = 0; i < category_dish.size(); i++) {
      if (category_dish[i] == id) {
        category_dish.erase(category_dish.begin() + i);
        break;
      }
    }
    // 删除该菜品
    dishes_.erase(it);
  }
  // 查找某个类别下的所有菜品
  vector<Dish> findCategory(const string& category) const {
    vector<Dish> result;
    // 找到类别
    auto it = category_dishes_.find(category);
    if (it == category_dishes_.end()) {
      // 没有找到类别
      return result;
    }
    // 查找该类别下的所有菜品
    for (int id : it->second) {
      result.push_back(dishes_.at(id));
    }
    return result;
  }
  // 统计评分最高的10个菜品,作为推荐菜显示
  vector<Dish> top10Dishes() const {
    vector<Dish> result;
    // 按评分排序所有菜品
    vector<pair<int, int>> dishes_by_rating;
    for (const auto& p : dishes_) {
      dishes_by_rating.emplace_back(p.second.getRating(), p.first);
    }
    sort(dishes_by_rating.rbegin(), dishes_by_rating.rend());
    // 取前 10 个
    for (int i = 0; i < 10 && i < dishes_by_rating.size(); i++) {
      result.push_back(dishes_.at(dishes_by_rating[i].second));
    }
    return result;
  }
  private:
  int next_id_;
  map<int, Dish> dishes_;
  map<string, vector<int>> category_dishes_;
}
;
int main() {
  // 创建菜单
  Menu menu;
  // 添加菜品
  menu.addDish("牛排", "肉类", 38.0, 8);
  menu.addDish("鱼香肉丝", "家常菜", 22.0, 9);
  menu.addDish("水煮鱼", "川菜", 28.0, 8);
  // 更新菜品信息
  menu.updateDish(1, 40.0, 9);
  // 删除某个类别
  menu.deleteCategory("家常菜");
  // 删除某个菜品
  menu.deleteDish(3);
  // 查找某个类别下的所有菜品
  auto dishes = menu.findCategory("肉类");
  cout << "肉类菜品:" << endl;
  for (const auto& dish : dishes) {
    cout << dish.getName() << endl;
  }
  // 统计评分最高的10个菜品,作为推荐菜显示
  auto top10 = menu.top10Dishes();
  cout << "推荐菜品:" << endl;
  for (const auto& dish : top10) {
    cout << dish.getName() << endl;
  }
  return 0;
}

可以参考一下,改一下关键字就ok了:
https://blog.csdn.net/weixin_60154963/article/details/123783365

c语言食堂菜谱管理系统,基于C语言的食堂菜谱管理系统
如有帮助,望采纳
https://blog.csdn.net/weixin_28709649/article/details/117213892


#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
using namespace std;
class Restaurant
{
private:
    char location[50];
    char phone_number[20];
    char evaluates[200];

public:
    void Search();
    void Set();
    void evaluate();
};
class Customer
{
private:
    int desk;
    char dishes[20];
    int queues;
    char write_evaluate[200];
    static int total;
public:
    Customer();
    void order();
    void write();

};
class Waiter
{
private:
    int job_number;
    char name[25];
    char sex[5];
    char phone_number[20];
public:
    void Search();
    void Set();

};
class Menus
{
private:
    static int sums;
    int number;
    int price;
    char dish_name[30];
public:
    friend void Customer::order();
    void Search();
    void Set();
    void show();
};
int Customer::total=0;
int Menus::sums=0;

//****全局函数***//
void Menu()
{
    cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;
    cout<<setw(40)<<"餐饮业管理系统"<<endl;
    cout<<endl;
    cout<<setw(50)<<"1**************信息查询*************"<<endl;
        cout<<endl;
    cout<<setw(50)<<"2**************信息录入*************"<<endl;
        cout<<endl;
    cout<<setw(50)<<"3**************顾客点餐*************"<<endl;
    cout<<endl;
    cout<<setw(50)<<"4**************顾客评价*************"<<endl;
    cout<<endl;
    cout<<setw(50)<<"0*************退出程序*************"<<endl;
    cout<<endl;
}

void Search()
{
   system("cls");
    cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;

   cout<<"         1   查询餐厅信息"<<endl;
       cout<<endl;

   cout<<"         2   查询服务员信息"<<endl;
       cout<<endl;

   cout<<"         3   查询菜单"<<endl;
       cout<<endl;
       cout<<"         4    查看评价"<<endl;
       cout<<endl;

   cout<<"         5   返回上一级菜单"<<endl;
       cout<<endl;

   cout<<" "<<"请选择:"<<endl;
   int choice;
   Restaurant restaurant;
   Waiter waiter;
   Menus dish;
   cin>>choice;
   switch(choice)
   {
       case 1: restaurant.Search();break;
       case 2: waiter.Search();break;
       case 3: dish.Search();break;
       case 4: restaurant.evaluate();break;
       case 5: Menu();break;
   }
}
void Set()
{
    system("cls");
    cout<<endl<<endl<<endl<<endl;
    cout<<"              1 添加菜品"<<endl<<endl;
    cout<<"              2 添加服务员"<<endl<<endl;
    cout<<"              3 添加餐厅信息"<<endl<<endl;
    cout<<"              4 返回上一级菜单"<<endl<<endl;
    cout<<"         请选择:"<<endl;
    Menus dish;
    int choice;
    Waiter waiter;
    Restaurant restaurant;
    cin>>choice;
   switch(choice)
   {
       case 1:dish.Set();break;
       case 2:waiter.Set();break;
       case 3:restaurant.Set();break;
       case 4: Menu();break;
   }
}
void orderdish()
{
    Customer customer;
    customer.order();
    //system("cls");
    Menu();
}
void customer_evaluate()
{
    char evaluate[200];
    cout<<"请评价:"<<endl;
    cin>>evaluate;
    ofstream out("evaluate.txt",ios::app);
    out<<evaluate<<endl;
    out.close();
    Menu();
}
int main()
{

    Menu();
    do
    {
        cout<<"请输入你的选择:"<<endl;
        int choice;
        cin>>choice;
        switch(choice)
        {
           case 1:Search();break;
           case 2:Set();break;
            case 3:orderdish();break;
           case 4:customer_evaluate();break;
           case 0:exit(1);break;
        }

    }while(1);
    return 0;
}
Customer::Customer()
{
    system("cls");
    total++;
    cout<<"            你当前排队号码为:"<<total<<endl<<endl;
}

void Customer::order()
{
    int temp[50];
    int j=0;
    int sum =0;
    char flag ='y';
    int num =0;

    Menus menu[50];
    cout<<"         菜单"<<endl<<endl;

    ifstream in ("Menus.txt");
    int i=0;
    while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
    {
    cout<<"  "<<menu[i].number<<setw(10)<<menu[i].dish_name<<setw(10)<<menu[i].price<<endl;
    i++;
    }
    in.close();

        while(flag == 'y')
        {
            cout<<"请点餐,选择相应编号:"<<endl;
           cin>>temp[num];
           num++;
           cout<<"是否继续y or n"<<endl;
           cin>>flag;
        }
         for(j=0;j<num;j++)
        {
            for(i=0;i<10;i++)
            {
               if(temp[j]==menu[i].number)
               {
                  sum = sum + menu[i].price;
               }
            }
        }
    cout<<"总价钱:"<<sum<<endl;

}


void Waiter::Set()
{
    system("cls");
    char flag ='y';
    do
    {
    cout<<"输入服务员的工号,姓名,性别,电话号码:"<<endl;
    cin>>job_number>>name>>sex>>phone_number;
    ofstream out("Waiter.txt",ios::app);
    out<<job_number<<" "<<name<<" "<<sex<<" "<<phone_number<<endl;
    out.close();
    cout<<"是否继续是(y)否(n)"<<endl;
    cin>>flag;
    }while(flag == 'y');
    Menu();
}
void Menus::Set()
{
    system("cls");
    char flag = 'y';
    do
    {
    sums++;
    cout<<"输入编号,菜名,价格"<<endl;
    cin>>number>>dish_name>>price;
    ofstream out("Menus.txt",ios::app);
    out<<number<<"  "<<dish_name<<"  "<<price<<"  "<<endl;
    out.close();
    cout<<"是否继续是(y)否(n)"<<endl;
    cin>>flag;
    }while(flag == 'y');
    Menu();
}
void Restaurant::Set()
{
    cout<<"输入餐厅位置,电话号码"<<endl;
    cin>>location>>phone_number;
    ofstream out("Restaurant.txt");
    out<<location<<"  "<<phone_number<<endl;
    out.close();
    Menu();
}
void Restaurant::Search()
{
    system("cls");
    cout<<endl<<endl;
    ifstream in ("Restaurant.txt");
    cout<<"地址"<<"         "<<"联系电话"<<endl;
    while(in>>location>>phone_number)
    {
    cout<<location<<"  "<<phone_number<<endl;
    }
    in.close();
    Menu();
}
void Restaurant::evaluate()
{
    system("cls");
    cout<<endl<<"       历史评价:"<<endl<<endl;
    ifstream in("evaluate.txt");
    while(in>>evaluates)
        cout<<"             "<<evaluates<<endl<<endl;
    in.close();
    Menu();
}
void Waiter::Search()
{
    system("cls");
    ifstream in("Waiter.txt");
    cout<<endl<<endl;
    cout<<"   工号"<<"  "<<"姓名"<<"    "<<"性别"<<"  "<<"电话号码"<<endl;
    while(in>>job_number>>name>>sex>>phone_number)
    {
    cout<<"    "<<job_number<<"    "<<name<<"    "<<sex<<"    "<<phone_number<<endl;
    }
    in.close();
    Menu();
}
void Menus::Search()
{
    system("cls");
    ifstream in ("Menus.txt");
    cout<<endl<<endl;
    cout<<"  编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
    while(in>>number>>dish_name>>price)
    {
    cout<<"  "<<number<<"   "<<setw(10)<<dish_name<<setw(10)<<price<<endl;
    }
    in.close();
    Menu();
}

#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
#include <string.h>
using namespace std;
 
class Customer//顾客类
{
private:
    char table[20];//桌号
    int queues;//排队号码
    char dishes[20];//菜品
    int amount;//账户余额
    static int total;//顾客总数
public:
    Customer();
    void order();//点菜函数
    void Printf();//输出顾客信息
    friend class LQueue;
};
 
class LQueue;
class Menus//菜单类
{
private:
    int number;//菜单编号
    int price;//价格
    char dish_name[30];//菜名
    static int sums;//菜品总数
public:
    void Set();//增加菜品
    void show();//显示菜品信息
    void correct_menus();//修改菜品
    void delete_menus();//删除菜品
    void renew_menus();//恢复菜单
    friend class LQueue;
    friend void Customer::order();
};
int Customer::total=0;
int Menus::sums=5;
 
struct QNode
{
    Customer data;
    QNode *next;
};
 
class LQueue//队列类
{
private:
    QNode *front,*rear;//队头和队尾
public:
    LQueue();
    void InLQueue();//增加顾客
    int EmptyLQueue();//判队空
    void OutLQueue();//删除队头元素
    void PrintQueue();//输出队伍信息
    void correct_customer(LQueue *L);//修改队伍信息
    void delete_customer(LQueue *L);//删除队伍元素
    ~LQueue();
};
 
int menu()
{
    char i;
    puts("**********************主菜单**********************\t\n");
    puts("\t\t1.增加新菜品\n");
    puts("\t\t2.增加新顾客\n");
    puts("\t\t3.顾客结账\n");
    puts("\t\t4.显示顾客信息\n");
    puts("\t\t5.显示菜品信息\n");
    puts("\t\t6.修改顾客点菜信息\n");
    puts("\t\t7.修改菜品信息\n");
    puts("\t\t8.删除顾客\n");
    puts("\t\t9.删除菜品\n");
    puts("\t\t0.退出\n");
    puts("**************************************************\t\n");
    i=getchar();
    system("cls");
    return i;
}
 
int main()
{
    LQueue L;
    Menus m;
    while(1)
    {
        switch(menu())
        {
        case'1':
            m.Set();
            break;
        case'2':
            L.InLQueue();
            break;
        case'3':
            L.OutLQueue();
            break;
        case'4':
            L.PrintQueue();
            break;
        case'5':
            m.show();
            break;
        case'6':
            L.correct_customer(&L);
            break;
        case'7':
            m.correct_menus();
            break;
        case'8':
            L.delete_customer(&L);
            break;
        case'9':
            m.delete_menus();
            break;
        case'0':
            m.renew_menus();
            return 0;
        }
    }
    return 0;
}
 
LQueue::LQueue()
{
    rear=0;
    front=0;
}
 
void LQueue::PrintQueue()
{
    QNode *p;
    p=front;
    if(p==NULL)
        {
            cout<<"队内无顾客!"<<endl;
            getchar();
            getchar();
            system("cls");
            return;
        }
    else
        cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
    while(p!=NULL)
    {
        p->data.Printf();
        p=p->next;
    }
    getchar();
    getchar();
    system("cls");
}
 
void LQueue::InLQueue()
{
    QNode *p;
    p=new QNode;
    p->next=NULL;
    p->data.order();
    if(front==0)
    {
        front=p;
        rear=p;
    }
    else
    {
        rear->next=p;
        rear=p;
    }
    getchar();
    getchar();
    system("cls");
}
 
int LQueue::EmptyLQueue()
{
    if(front==NULL&&rear==NULL)
        return 1;
    else
        return 0;
}
 
void LQueue::OutLQueue()
{
    int i=0;
    QNode *p;
    Menus menu[50];
    if(EmptyLQueue()==1)
        {
            cout<<"队内无顾客!"<<endl;
            getchar();
            getchar();
            system("cls");
            return;
        }
    else
    {
        p=front;
        front=p->next;
        ifstream in("Menus.txt");
        while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
        {
            if(strcmp(p->data.dishes,menu[i].dish_name)==0)
            {
                p->data.amount-=menu[i].price;
                break;
            }
            i++;
        }
        cout<<"首位顾客点餐之后的信息:\n"<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
        cout<<p->data.table<<setw(10)<<p->data.queues<<setw(10)<<p->data.dishes<<setw(10)<<p->data.amount<<endl;
    }
    if(front==NULL)
        rear=front;
    getchar();
    getchar();
    system("cls");
}
 
void LQueue::correct_customer(LQueue *L)
{
    int i=0,temp,numb,flag=0,flag1=0;
    QNode *p,*q;
    p=L->front;
    q=front;
    if(q==NULL)
        cout<<"队列中无顾客!"<<endl;
    else
    {
        cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
        while(q!=NULL)
        {
            q->data.Printf();
            q=q->next;
        }
        cout<<endl<<"请输入需要修改顾客的排队号码:"<<endl;
        cin>>numb;
        cout<<endl;
        Menus menu[50];
        cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
        ifstream in("Menus.txt");
        while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
        {
            cout<<"    "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
            i++;
        }
        i=i-1;
        temp=i;
        cout<<endl;
        while(p!=NULL)
        {
            if(numb==p->data.queues)
            {
                cout<<"当前顾客信息为:"<<endl;
                cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
                cout<<p->data.table<<setw(10)<<p->data.queues<<setw(10)<<p->data.dishes<<setw(10)<<p->data.amount<<endl<<endl;
                flag1=1;
                while(flag==0)
                {
                    i=temp;
                    cout<<"请输入修改后的桌号、菜品、账户余额:"<<endl;
                    cin>>p->data.table>>p->data.dishes>>p->data.amount;
                    while(i>=0)
                    {
                        if(strcmp(menu[i].dish_name,p->data.dishes)==0)
                        {
                            flag=1;
                            break;
                        }
                        else
                            flag=0;
                        i--;
                    }
                    if(flag==1)
                        cout<<"输入成功!"<<endl;
                    else
                        cout<<"菜单中没有此菜!"<<endl;
                }
                break;
            }
            else
                p=p->next;
        }
        if(flag1==0)
            cout<<"队伍中无此号码!"<<endl;
    }
    getchar();
    getchar();
    system("cls");
}
 
void LQueue::delete_customer(LQueue *L)
 
{
    int numb,flag=0;
    QNode *p,*q,*r;
    p=L->front;
    r=front;
    if(r==NULL)
        cout<<"队列中无顾客!"<<endl;
    else
    {
        cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
        while(r!=NULL)
        {
            r->data.Printf();
            r=r->next;
        }
        cout<<"请输入需要删除顾客的排队号码:"<<endl;
        cin>>numb;
        cout<<endl;
        while(p!=NULL)
        {
            if(numb==p->data.queues)
            {
                if(flag==0)
                {
                    cout<<"此顾客信息为:"<<endl;
                    cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
                    cout<<p->data.table<<setw(10)<<p->data.queues<<setw(10)<<p->data.dishes<<setw(10)<<p->data.amount<<endl<<endl;
                    L->front=p->next;
                }
                else
                {
                    cout<<"此顾客信息为:"<<endl;
                    cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
                    cout<<p->data.table<<setw(10)<<p->data.queues<<setw(10)<<p->data.dishes<<setw(10)<<p->data.amount<<endl<<endl;
                    q->next=p->next;
                }
                flag=1;
                break;
            }
            else
            {
                if(flag==0)
                    q=L->front;
                else
                    q=q->next;
                p=p->next;
            }
            flag++;
        }
        if(flag==0)
            cout<<"队伍中无此号码!"<<endl;
    }
    getchar();
    getchar();
    system("cls");
}
 
LQueue::~LQueue()
{
    delete rear;
}
 
Customer::Customer()
{
    total++;
    queues=total;
    cout<<"您当前的排队号码为:"<<queues<<endl;
}
 
void Customer::order()
{
    int i=0,temp,flag=0;
    Menus menu[50];
    cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
    ifstream in("Menus.txt");
    while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
    {
        cout<<"    "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
        i++;
    }
    i=i-1;
    temp=i;
    while(flag==0)
    {
        i=temp;
        cout<<"请输入该顾客桌号、菜品、账户余额:"<<endl;
        cin>>table>>dishes>>amount;
        while(i>=0)
        {
            if(strcmp(menu[i].dish_name,dishes)==0)
            {
                flag=1;
                break;
            }
            else
                flag=0;
            i--;
        }
        if(flag==1)
            cout<<"输入成功!"<<endl;
        else
            cout<<"菜单中没有此菜!"<<endl;
    }
}
 
void Customer::Printf()
{
    cout<<table<<setw(10)<<queues<<setw(10)<<dishes<<setw(10)<<amount<<endl;
}
 
void Menus::show()
{
    int i=0;
    Menus menu[50];
    cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
    ifstream in("Menus.txt");
    while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
    {
        cout<<"    "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
        i++;
    }
    getchar();
    getchar();
    system("cls");
}
 
void Menus::Set()
{
    sums++;
    cout<<"请分别输入所增加的菜名和价格:"<<endl;
    cin>>dish_name>>price;
    number=sums;
    ofstream out("Menus.txt",ios::app);
    out<<number<<" "<<dish_name<<" "<<price<<" "<<endl;
    cout<<"输入成功!"<<endl;
    out.close();
    getchar();
    getchar();
    system("cls");
}
 
void Menus::correct_menus()
{
    int i=0,temp;
    char name[20];
    Menus menu[50];
    cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
    ifstream in("Menus.txt");
    while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
    {
        cout<<"    "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
        i++;
    }
    cout<<endl<<"请输入想要修改的菜品名:"<<endl;
    cin>>name;
    temp=i;
    i=0;
    ofstream outf("Menus.txt",ios::trunc);
    while(1)
    {
        in>>menu[i].number>>menu[i].dish_name>>menu[i].price;
        if(strcmp(name,menu[i].dish_name)==0)
            {
                cout<<"请输入修改后的菜品编号、菜名、价格:"<<endl;
                cin>>menu[i].number>>menu[i].dish_name>>menu[i].price;
                outf<<endl;
                break;
            }
        i++;
    }
    ofstream out("Menus.txt",ios::app);
    for(i=0;i<temp;i++)
        out<<menu[i].number<<" "<<menu[i].dish_name<<" "<<menu[i].price<<endl;
    cout<<"输入成功!"<<endl;
    getchar();
    getchar();
    system("cls");
}
 
void Menus::delete_menus()
{
    int i=0,temp,tempi;
    char name[20];
    Menus menu[50];
    cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
    ifstream in("Menus.txt");
    while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
    {
        cout<<"    "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
        i++;
    }
    cout<<endl<<"请输入想要删除的菜品名:"<<endl;
    cin>>name;
    temp=i;
    i=0;
    ofstream outf("Menus.txt",ios::trunc);
    while(1)
    {
        in>>menu[i].number>>menu[i].dish_name>>menu[i].price;
        if(strcmp(name,menu[i].dish_name)==0)
            {
                tempi=i;
                outf<<endl;
                break;
            }
        i++;
    }
    ofstream out("Menus.txt",ios::app);
    for(i=0;i<temp;i++)
        {
            if(tempi==i)
                continue;
            out<<menu[i].number<<" "<<menu[i].dish_name<<" "<<menu[i].price<<endl;
        }
    cout<<"输入成功!"<<endl;
    getchar();
    getchar();
    system("cls");
}
 
void Menus::renew_menus()
{
    int i=0,temp;
    Menus menu[50];
    ifstream in("Menus_renew.txt");
    while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
        i++;
    temp=i;
    ofstream outf("Menus.txt",ios::trunc);
    ofstream out("Menus.txt",ios::app);
    for(i=0;i<temp;i++)
        out<<menu[i].number<<" "<<menu[i].dish_name<<" "<<menu[i].price<<endl;
    cout<<"谢谢使用本系统!"<<endl;
}

img