赞
踩
1.main.cpp文件
- #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;
- }

2.Menus.txt文件
1 水煮肉片 18
2 鱼香肉丝 25
3 鱼头 16
4 刀拍黄瓜 16
5 鲍鱼 20
3.Menus_renew.txt
1 水煮肉片 18
2 鱼香肉丝 25
3 鱼头 16
4 刀拍黄瓜 16
5 鲍鱼 20
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。