2021-06-28

#include
#include
#include<stdlib.h>
#include<string.h>
//原型申明
void change_name();
void change_price();
using namespace std;
//菜单类
class menu
{
private:
//基本元素
int num,price;//菜式序号、价格
char name[20];//菜式名称
//用于功能实现的元素
int mealnum,delnum,changenum,changeprice;//菜式总数目、删除序号、修改序号、修改菜式序号
char changename[20];//修改菜式名字
public:
menu();
~menu();//析构函数
void check();//查看菜单
void add();//新增菜单
void decrease();//删除菜单
void change();//修改菜单,包括修改菜式名称和菜式价格
void change_name();//修改菜式名称
void change_price();//修改菜式价格
};
//座位类
class seat
{
private:
//基本元素
int num,rest;//座位序号,座位剩余量
char size[20];//座位大小
//用于功能实现的元素
int seatnum,changenum,rerest;//座位种类数目,修改序号,剩余量

public:
seat(int);
~seat();//析构函数
void seat_check();//座位查看
void seat_change();//座位剩余量修改
};
//预定类
class booking:public seat
{
private:
//基本元素
int bnum,phone,peoplenum;
char bname[20],bmeal[100];
//功能实现的元素
int bookingnum,cancelnum;//预约信息总数目、取消的序号
public:
booking();
~booking();//析构函数
void booking_check();//预约查看功能
void booking_add();//新增预约
void booking_cancel();//预约取消
};
//福利类
class draw
{
private:
char dname[20];//名称
int dnum,dphone,dpoint,total,dchange,duse;//序号,手机尾号,积分数目,记录表的总人数,兑换人号码,兑换礼品的序号
public:
draw();
~draw();
void draw_check();//查看积分
void draw_check2();//查看奖品
void draw_main();//使用积分
};
//菜单相关功能
menu::menu()
{}
menu::~menu()
{}
void menu::check()//查看菜单
{
ifstream fin(“D:\menu.txt”);
if (!fin)
{
cout<<“文件打开失败!”<<endl;
abort();
}
char str[80];
cout<<"序号 "<<"菜名 “<<“价格”<<endl;
while(fin)
{
fin.getline(str,80);
cout<<str<<endl;
}
fin.close();
}
void menu::add()//新增菜单
{
check();//显示菜单以便修改
cout<<“请输入你需要新增的菜式(序号、菜名以及价格):”<<endl;
cin>>num>>name>>price;
ofstream fout(“D:\menu.txt”,ios::app);//打开文本文件menu.txt
if (!fout)
{//打开文件失败时,执行异常退出
cout<<“文件打开失败!”<<endl;
abort();
}
fout<<endl<<num<<” “<<name<<” “<<price;//写入文本文件
fout.close();//关闭文件
cout<<endl<<“新增成功!”<<endl;
}
void menu::decrease()//删除菜单
{//将文件的内容写入数组,进行删除,重新写入文本。
//思路:打开-复制-关闭-打开-粘贴-关闭
check();//显示菜单以便修改
cout<<“请输入菜式总数目:”;
cin>>mealnum;
menu temp[20]={};//temp用于储存文本内容,修改temp内容,最后重新写入
ifstream fin(“D:\menu.txt”);//打开文本文件
if (!fin)
{//打开文件失败时,执行异常退出
cout<<“文件读取失败!”<<endl;
abort();
}
//复制文本内容到temp
for(int i=0;i<mealnum;i++)
{
fin>>temp[i].num>>temp[i].name>>temp[i].price;
}
fin.clear();//清除文本内容
fin.close();//关闭文件
ofstream fout(“D:\menu.txt”);//重新以ofstream形式打开文件
if(!fin)
{//打开文件失败时,执行异常退出
cout<<“文件打开失败!”;
abort();
}
//修改temp内容
cout<<“请输入你需要删除的菜式序号:”;
cin>>delnum;
for(delnum;delnum<=mealnum;delnum++)
{
strcpy(temp[delnum-1].name,temp[delnum].name);
temp[delnum-1].price=temp[delnum].price;
}
//重新写入文本
for(int j=0;j<=mealnum-2;j++)
{
fout<<temp[j].num<<” “<<temp[j].name<<” "<<temp[j].price<<endl;
}
fin.close();//关闭文件
cout<<endl<<“删除成功!”<<endl;
}
void menu::change()//菜式修改(名称、价格)
{ int choose;//功能序号
cout<<endl<<“菜单修改功能:”<<endl<<“1.修改名称”<<endl<<“2.修改价格”<<endl<<“请输入你要修改的功能序号:”;
cin>>choose;
cout<<endl;
//运用switch以实现功能选择
switch(choose)
{
case 1:
change_name();
break;
case 2:
change_price();
break;
}

}
void menu::change_name()//菜式名称修改
{//思路:打开-复制-关闭-打开-粘贴-关闭
check();//显示菜单以便修改
cout<<“请输入菜式总数目:”;
cin>>mealnum;
cout<<endl;
menu temp[20]={};//temp用于储存文本内容,修改temp内容,最后重新写入
ifstream fin(“D:\menu.txt”);
if (!fin)
{//文件打开失败时,执行异常退出
cout<<“文件读取失败!”<<endl;
abort();
}
//复制文本内容到temp
for(int i=0;i<mealnum;i++)
{
fin>>temp[i].num>>temp[i].name>>temp[i].price;
}
fin.clear();//清楚文本内容
fin.close();//关闭文件
cout<<“请输入你要修改的菜式序号:”;
cin>>changenum;
cout<<endl<<“请输入你要修改的菜式名称:”;
cin>>changename;
ofstream fout(“D:\menu.txt”);
if(!fin)
{//文件打开失败时,执行异常退出
cout<<“文件打开失败!”;
abort();
}
strcpy(temp[changenum-1].name,changename);//修改菜式名称
for(int j=0;j<=mealnum-1;j++)
{//重新复制temp内容到文本中
fout<<temp[j].num<<" “<<temp[j].name<<” “<<temp[j].price<<endl;
}
fin.close();//关闭文件
cout<<endl<<“修改成功!”<<endl;
}
void menu::change_price()//修改菜式价格
{ //思路:打开-复制-关闭-打开-粘贴-关闭
check();//显示菜单以便修改
cout<<“请输入菜式总数目:”;
cin>>mealnum;
cout<<endl;
menu temp[20]={};//temp用于储存文本内容,修改temp内容,最后重新写入
ifstream fin(“D:\menu.txt”);
if (!fin)
{//文件打开失败时,执行异常退出
cout<<“文件读取失败!”<<endl;
abort();
}
//复制文本内容到temp
for(int i=0;i<mealnum;i++)
{
fin>>temp[i].num>>temp[i].name>>temp[i].price;
}
fin.clear();//清楚文本内容
fin.close();//关闭文件
cout<<“请输入你要修改的菜式序号:”;
cin>>changenum;
cout<<endl<<“请输入你要修改的菜式价格:”;
cin>>changeprice;
ofstream fout(“D:\menu.txt”);
if(!fin)
{//文件打开失败时,执行异常退出
cout<<“文件打开失败!”;
abort();
}
temp[changenum-1].price=changeprice;//修改价格
//重新写入文本
for(int j=0;j<=mealnum-1;j++)
{
fout<<temp[j].num<<” “<<temp[j].name<<” "<<temp[j].price<<endl;
}
fin.close();//关闭文件
cout<<endl<<“修改成功!”<<endl;
}
//座位相关功能
seat::seat(int sn=4)
{
seatnum=sn;
}
seat::~seat()
{}
void seat::seat_check()//查看座位剩余量
{
ifstream fin(“D:\seat.txt”);
if (!fin)
{//文件打开失败时,执行异常退出
cout<<“文件打开失败!”<<endl;
abort();
}
char str[80];
cout<<"序号 "<<"座位大小 "<<“剩余量”<<endl;
while(fin)
{
fin.getline(str,80);
cout<<str<<endl;
}
fin.close();
}

void seat::seat_change()//修改座位数目
{
seat_check();//显示座位信息以便修改
seat temp[20]={};
ifstream fin(“D:\seat.txt”);
if (!fin)
{
cout<<“文件读取失败!”<<endl;
abort();
}
for(int i=0;i<seatnum;i++)
{
fin>>temp[i].num>>temp[i].size>>temp[i].rest;
}
fin.clear();
fin.close();
//打开-复制-关闭-打开-粘贴-关闭
cout<<“请输入你要修改的座位种类序号:”;
cin>>changenum;
cout<<endl<<“请输入你要修改的座位剩余量:”;
cin>>rerest;
ofstream fout(“D:\seat.txt”);
if(!fin)
{
cout<<“文件打开失败!”;
abort();
}
temp[changenum-1].rest=rerest;
for(int j=0;j<=seatnum-1;j++)
{
fout<<temp[j].num<<" “<<temp[j].size<<” "<<temp[j].rest<<endl;
}
fin.close();
cout<<endl<<“修改成功!”<<endl;
}

//预定相关功能
booking::booking()
{}
booking::~booking()//析构函数
{}
void booking::booking_check()//查看预定清单
{
ifstream fin(“D:\booked.txt”);
if (!fin)
{
cout<<“文件打开失败!”<<endl;
abort();
}
char str[80];
cout<<"预定号 "<<"称呼 "<<"手机尾号 "<<"座位人数 “<<“预定菜式”<<endl;
while(fin)
{
fin.getline(str,80);
cout<<str<<endl;
}
fin.close();
}
void booking::booking_add()//新增预定
{
booking_check();//显示预定信息以便修改
cout<<“请输入预定号、称呼、手机尾号、座位人数(2、4、6、8)和预定菜式:”<<endl;
cin>>bnum>>bname>>phone>>peoplenum>>bmeal;
ofstream fout(“D:\booked.txt”,ios::app);
if (!fout)
{
cout<<“文件打开失败!”<<endl;
abort();
}
fout<<endl<<bnum<<” “<<bname<<” “<<phone<<” “<<peoplenum<<” "<<bmeal;
fout.close();
cout<<endl<<“请修改座位剩余量,上一次操作预定座位为:”<<peoplenum<<endl<<endl;
seat_change();
seat_check();
cout<<endl<<“预定成功!”<<endl;
}
//福利
draw::draw()//构造函数
{}
draw::~draw()//析构函数
{}
void draw::draw_check()//查看积分
{
ifstream fin(“D:\draw.txt”);
if (!fin)
{
cout<<“文件打开失败!”<<endl;
abort();
}
char str[80];
cout<<"序号 "<<"姓名 "<<"手机尾号 "<<"积分 “<<endl;
while(fin)
{
fin.getline(str,80);
cout<<str<<endl;
}
fin.close();
}
void draw::draw_check2()//查看礼品
{
ifstream fin(“D:\draw2.txt”);
if (!fin)
{
cout<<“文件打开失败!”<<endl;
abort();
}
char str[80];
cout<<endl<<“奖品及其对应消耗积分如下:”<<endl;
while(fin)
{
fin.getline(str,80);
cout<<str<<endl;
}
cout<<endl;
fin.close();
}
void draw::draw_main()//实现兑换
{
int dpointtemp=0;
draw_check2();
draw_check();
cout<<“请输入积分记录的总人数:”;
cin>>total;
draw temp[20]={};
ifstream fin(“D:\draw.txt”);
if (!fin)
{
cout<<“文件读取失败!”<<endl;
abort();
}
for(int i=0;i<total;i++)
{
fin>>temp[i].dnum>>temp[i].dname>>temp[i].dphone>>temp[i].dpoint;
}
fin.clear();
fin.close();
//打开-复制-关闭-打开-粘贴-关闭
cout<<“请输入兑换人的序号:”;
cin>>dchange;
cout<<“请输入需要兑换的礼品序号:”;
cin>>duse;
ofstream fout(“D:\draw.txt”);
if(!fin)
{
cout<<“文件打开失败!”;
abort();
}
switch(duse)
{
case 1:
if(temp[dchange-1].dpoint-200>=0){
temp[dchange-1].dpoint=temp[dchange-1].dpoint-200;
cout<<“兑换成功!”<<endl;}
else
cout<<“积分不足!”<<endl;
break;
case 2:
if(temp[dchange-1].dpoint-400>=0){
temp[dchange-1].dpoint=temp[dchange-1].dpoint-400;
cout<<“兑换成功!”<<endl;}
else
cout<<“积分不足!”<<endl;
break;
case 3:
if(temp[dchange-1].dpoint-150>=0){
temp[dchange-1].dpoint=temp[dchange-1].dpoint-150;
cout<<“兑换成功!”<<endl;}
else
cout<<“积分不足!”<<endl;
break;
case 4:
if(temp[dchange-1].dpoint-600>=0){
temp[dchange-1].dpoint=temp[dchange-1].dpoint-600;
cout<<“兑换成功!”<<endl;}
else
cout<<“积分不足!”<<endl;
break;
default:
cout<<“选择错误!”<<endl;
break;
}
for(int j=0;j<=total-1;j++)
{
fout<<temp[j].dnum<<” “<<temp[j].dname<<” “<<temp[j].dphone<<” "<<temp[j].dpoint<<endl;
}
fin.close();
cout<<endl<<“操作完成!”<<endl;

}
//主菜单
void working()
{
cout<<“餐厅管理程序”<<endl;
cout<<endl<<“菜式项目”<<endl<<"1.查看菜式 "<<"2.新增菜式 "<<"3.删减菜式 "<<“4.修改菜式”<<endl;
cout<<endl<<“桌位项目”<<endl<<"5.查看桌位 "<<"6.修改桌位剩余量 "<<endl;
cout<<endl<<“预定项目”<<endl<<"7.查看预定 "<<“8.新增预定”<<endl;
cout<<endl<<“福利项目”<<endl<<"9.查看积分 "<<“10.兑换礼品”<<endl;
cout<<endl<<“输入0退出系统”<<endl;
}
void select()
{
menu A;
seat B;
booking C;
draw D;
int chiose;
while(1)
{
system(“cls”);
working();
cout<<endl<<“请输入你要实现的功能的序号:”;
cin>>chiose;
cout<<endl;
switch(chiose)
{
case 0:
exit(0);
break;
case 1:
A.check();
break;
case 2:
A.add();
break;
case 3:
A.decrease();
break;
case 4:
A.change();
break;
case 5:
B.seat_check();
break;
case 6:
B.seat_change();
break;
case 7:
C.booking_check();
break;
case 8:
C.booking_add();
break;
case 9:
D.draw_check();
break;
case 10:
D.draw_main();
break;
default:
cout<<“输入无效请重新输入!”<<endl;
cout<<endl;
break;
}
getchar();
getchar();
}

}
void main()
{
select();
system(“pause”);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值