#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Cmenu //创建Cmenu类
{
int num; //菜的编号
string name; //菜名
float price; //菜的单价
string kind; //菜的种类
int sort; //菜的数量
public:
void getnum(int i); //录入菜的编号
void getname(string Name); //录入菜的名字
void getprice(float Price); //录入菜的单价
void getkind(string Kind); //录入菜的类别
void getsort(int SORT); // 录入所点菜的数量
void menudisplay(); //菜谱显示
void selectdisplay(); //对所点的菜进行输出
float returnnum() {return num;} //返回菜的编号
string returnname() { return name;} //返回菜名
float returnprice() { return price;} // 返回菜的单价
string returnkind() {return kind;} //返回菜的类别
int returnsort() { return sort;} //返回菜的数量
};
void Cmenu::getnum(int i) //录入菜的编号函数
{ num=i; }
void Cmenu::getname(string Name) //录入菜的名字
{ name=Name;}
void Cmenu::getprice(float Price) //录入菜的单价
{ price=Price;}
void Cmenu::getkind(string Kind) //录入菜的类别
{ kind=Kind; }
void Cmenu::getsort(int SORT) // 录入所点菜的数量
{ sort=SORT; }
void Cmenu::menudisplay() //菜单的信息显示
{cout<<num<<"\t "<<name<<"\t "<<kind<<"\t "<<price<<endl; }
void Cmenu::selectdisplay() //对所点的菜进行输出
{cout<<num<<"\t "<<name<<"\t "<<kind<<"\t "<<price<<"\t "<<sort<<endl; }
float youhui(float sum,float point) //函数计算有优惠卷时的价格
{
if(point>1.0)
{ sum=sum-point;}
if(point<=1.0)
{
sum=sum*point;}
return sum;
}
class array //创建一个array数组
{
public:
void getnum(int NUM); //初始化num的函数
void getsort(int SORT); //初始化sort的函数
int returnnum() { return num; } //返回num的函数
int returnsort() { return sort;} //返回sort的函数
private: int sort,num;
};
void array::getnum(int NUM) //初始化num的函数体
{ num=NUM;}
void array::getsort(int SORT) //初始化sort的函数体
{sort=SORT;}
void main() //主函数
{
int i,j,id,m,q,z,sort,b;
int geshu;
int NUM;
string NAME,KIND;
float PRICE,POINT,sum=0;
Cmenu food[40]; //创建Cmenu类的对象数组
ifstream f1("menu.txt"); //文件输入菜单信息
for(j=0;j<40;j++)
{
f1>>NUM>>KIND;
f1>>NAME;
f1>>PRICE;
food[j].getnum(NUM);
food[j].getkind(KIND);
food[j].getname(NAME);
food[j].getprice(PRICE);
}
f1.close();
cout<<" "<<endl;
cout<<" *━*━*━*━*━*━*━*━*━欢迎光临本餐厅━*━*━*━*━*━*━*━*━*━*"<<endl<<endl<<endl; //菜单
for(;;)
{ cout<<"================================================================================"<<endl;
cout<<" 请选择您需要的功能 "<<endl;
cout<<"================================================================================"<<endl;
cout<<endl;
cout<<" == ┏━━━━━━━━━━━━━━━━━━━━━━━━┓ == "<<endl;
cout<<" == ┃ ┃ == "<<endl;
cout<<" == ┃ ┃ == "<<endl;
cout<<" == ┃ 0-----显示菜单里所有的菜的信息 ┃ == "<<endl;
cout<<" == ┃ ┃ == "<<endl;
cout<<" == ┃ 1-----在菜单里按类查找。 ┃ == "<<endl;
cout<<" == ┃ ┃ == "<<endl;
cout<<" == ┃ 2-----点菜。 ┃ == "<<endl;
cout<<" == ┃ ┃ == "<<endl;
cout<<" == ┗━━━━━━━━━━━━━━━━━━━━━━━━┛ == "<<endl<<endl;
cout<<endl;
cout<<"================================================================================"<<endl;
cin>>q;
if(q>2) {system("cls");
cout<<"请输入正确序号"<<endl;}
if(q==0) //显示菜单里所有的菜名
{
cout<<"-------------------------------菜单---------------------------"<<endl;
cout<<"菜的编号 菜名 类别 单价/元 "<<endl;
for(j=0;j<40;j++)
food[j].menudisplay();
cout<<"-------------------------------------------------------------"<<endl;
}
if(q==1) // 在菜单里按类查找
{
cout<<"1--------------炒菜"<<endl;
cout<<"2--------------炒饭"<<endl;
cout<<"3--------------面类"<<endl;
cin>>z;
if(z>3) {system("cls");cout<<"请输入正确序号"<<endl;}
switch(z)
{
case 1: for(j=0;j<40;j++) //输出炒菜类
if(food[j].returnkind()=="炒菜") food[j].menudisplay();break;
case 2: for(j=0;j<40;j++) //输出炒饭类
if(food[j].returnkind()=="炒饭") food[j].menudisplay();break;
case 3: for(j=0;j<40;j++) //输出面类
if(food[j].returnkind()=="面类") food[j].menudisplay();break;
}
}
if(q==2) break; //退出进入点菜环节
}
cout<<"你要点多少个菜?"<<endl; //点菜
cin>>i;
array *a=new array[i] ; //动态创建i个array类的数组来储存菜的编号和数量
for(j=0;j<i;j++)
{
cout<<"请选择第"<<j+1<<"个菜的编号:"<<endl;
cin>>id; //输入每个菜的编号
cout<<"请输入数量:"<<endl;
cin>>sort; //输入每个菜的数量
a[j].getnum(id);
a[j].getsort(sort);
}
for(;;) //对定的菜进行操作
{
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" ┏━━━━━━━━━━━━━━━━━━━━━┓ "<<endl;
cout<<" ┃ ┃ "<<endl;
cout<<" ┃ ┃ "<<endl;
cout<<" ┃ 1--------增加点菜 ┃ "<<endl;
cout<<" ┃ 2--------删除一个菜 ┃ "<<endl;
cout<<" ┃ 3--------输出点菜信息并保存 ┃ "<<endl;
cout<<" ┃ 4--------计算消费金额 ┃ "<<endl;
cout<<" ┃ 5--------退出系统 ┃ "<<endl;
cout<<" ┃ ┃ "<<endl;
cout<<" ┃ ┃ "<<endl;
cout<<" ┗━━━━━━━━━━━━━━━━━━━━━┛ "<<endl;
cin>>b;
if(b<1||b>4) {system("cls");cout<<"请输入正确序号"<<endl;}
if(b==1)
{
cout<<"你要增加多少个菜?"<<endl; //增加多少个菜
cin>>geshu;
array *p=new array[i];
for(j=0;j<i;j++)
{ p[j].getnum(a[j].returnnum());
p[j].getsort(a[j].returnsort());
}
delete [] a;
i=i+geshu;
a=new array[i];
for(j=0;j<i-geshu;j++)
{ a[j].getnum(p[j].returnnum());
a[j].getsort(p[j].returnsort());
}
delete [] p;
for(j=i-geshu;j<i;j++)
{
cout<<"请输入增加的一个菜的编号和数量:"<<endl;
cin>>id;
cin>>sort;
a[j].getnum(id);
a[j].getsort(sort);
}
cout<<"增加点菜成功。"<<endl;
}
if(b==2)
{
cout<<"请输入要删除的菜的编号:"<<endl; //删除菜的操作
cin>>id;
for(j=0;j<i;j++)
{
if(a[j].returnnum()==id)
{
m=j;
for(j=m;j<i;j++) { a[j]=a[j+1];}
i--;
cout<<"删除点菜成功。"<<endl;break;
}
}
if(j==i)
{cout<<"你没有点这个菜!!错误。"<<endl;
}
}
if(b==3) //输出所点菜的信息
{ char baocun;
cout<<"菜的编号 菜名 类别 单价/元 数量"<<endl;
for(m=0;m<i;m++)
{
for(j=0;j<40;j++)
{
if(a[m].returnnum()==food[j].returnnum())
{ food[j].getsort(a[m].returnsort());
food[j].selectdisplay();
}
}
}
cout<<"是否保存并退出?"<<endl;
cout<<"请按y(是)或n(否)"<<endl;
cin>>baocun;
if(baocun=='y')
{ ofstream file("select.txt");
file<<"菜的编号 菜名 类别 单价/元 数量"<<endl;
for(m=0;m<i;m++)
{
for(j=0;j<40;j++)
{
if(a[m].returnnum()==food[j].returnnum())
{ file<<food[j].returnnum()<<" "<<food[j].returnname()<<" "<<food[j].returnkind()<<
" "<<food[j].returnprice()<<" "<<food[j].returnsort()<<endl;
}
}
}
file.close();
cout<<"已成功保存!"<<endl;
break;}
}
if(b==4) {
sum=0;
cout<<"你是否拥有优惠券?"<<endl; //优惠券的操作
cout<<"0----------是"<<endl;
cout<<"1----------否"<<endl;
cin>>q;
for(m=0;m<i;m++)
{
for(j=0;j<40;j++)
{
if(a[m].returnnum()==food[j].returnnum())
{ food[j].getsort(a[m].returnsort());
sum=sum+food[j].returnprice()*food[j].returnsort(); //计算所点菜的总金
}
}
}
if(q>1) {system("cls");cout<<"请输入正确序号"<<endl;} //清屏函数
if(q==0)
{
cout<<"请输入优惠券的优惠金额(大于1)或者是优惠的折扣比:"<<endl; //输入优惠券的折扣比
cin>>POINT;
cout<<"打折后的总的金额是:"<<youhui(sum,POINT)<<"元"<<endl;
}
if(q==1)
{
cout<<"总的金额是:"<<sum<<"元"<<endl;}
}
if(b==5)
{system("cls"); //退出
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"*********************************谢谢您的光临***********************************"<<endl;
cout<<endl;
cout<<endl;
break;}
}
}
效果截图如下:
这里出现了问题!
老师,这个系统有参考别人的,暂时只能做到这样,很多都还是不会,考完试有时间会慢慢地自学一下,越来越发现对C++的兴趣越来越浓厚了!