📄 main.cpp
字号:
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<fstream.h>
#include"ROOM.h"
#include"Standardroom.h"
#include"Threeroom.h"
#include"VIProom.h"
#include"Tab.h"
#include"Memberguest.h"
#include"Tourguest.h"
#include"VIP.h"
#include"template.h"
void Startmenu(); /* 开始菜单函数 */
void Bookin(); /* 预定菜单函数 */
void SearchRoom(); /* 查找房间函数 */
void SearchGuest(); /* 查找客人函数 */
void Pay(); /* 结帐函数 */
void Bnormalguest(); /*普通客人预定函数*/
void Bmemberguest(); /*会员客人预定*/
void Bvipguest(); /*VIP客人*/
void Btourguest(); /*旅游团客人*/
void makeTab(char *,float,int,int,double); /* 生成帐单函数 */
int Choice(); /* 选择函数 */
Standardroom sr[20]; /* 声明标准间数组 */
VIProom vr[5]; /* 声明VIP房间数组 */
Threeroom tr[15]; /* 声明三人间数组 */
Tab tb[35];
Guest g; /* 构建普通客人对象 */
Memberguest mg; /*会员客人对象*/
Tourguest tg; /*旅游团客人对象*/
VIP vg; /*贵宾客人对象*/
double Acountprice(Guest& g,int,double); /* 计算房价的多态函数 */
void Startroom() /* 初始化房间数组 */
{
for(int i=0;i<20;i++)
{
sr[i].sdroom(201+i);
}
for(int j=0;j<5;j++)
{
vr[j].vroom(301+j);
}
for(int k=0;k<15;k++)
{
tr[k].troom(401+k);
}
}
void startTAB() /* 初始化帐单 */
{
for(int i=0;i<35;i++)
{
tb[i].tabroom(0);
}
}
void main() /* 主函数 */
{
Startroom();
startTAB();
Startmenu();
}
void Startmenu()
{
int n=0;
cout<<"宾馆住宿管理系统 "<<endl<<endl<<endl; /* 程序初始菜单 */
cout<<"1.入住登记"<<endl;
cout<<"2.房间查询"<<endl;
cout<<"3 入住者查询"<<endl;
cout<<"4 退房结帐"<<endl;
cout<<"5 退出该系统"<<endl;
cout<<endl<<"按需求输入您的选项(1-5): ";
n=Choice();
switch(n)
{
case 1:
if(tb[34].Rtabroom()!=0)
cout<<endl<<" 客房已满!! "<<endl;
else
Bookin();
case 2:
SearchRoom();
case 3:
SearchGuest();
case 4:
Pay();
case 5:
exit(0);
default:
cout<<endl<<endl<<"输入错误~!!请输入选项1~5"<<endl<<endl<<endl;
Startmenu();
}
}
void Bookin() /* 定房菜单 */
{
int n=0;
cout<<endl<<endl<<" 选择客人类型 "<<endl;
cout<<endl<<"1.普通客人 2. 会员客人(可享受九折优惠) 3.VIP贵宾 4 旅团客人(可享受八折优惠)"<<endl;
n=Choice();
switch(n)
{
case 1:
Bnormalguest();
break;
case 2:
Bmemberguest();
break;
case 3:
Bvipguest();
case 4:
Btourguest();
default:
cout<<endl<<"输入错误!!请输入1~4"<<endl;
Bookin();
}
}
void Bnormalguest() /*普通客人*/
{
float ID;
int n=0,d,doorplate;
char Name[20];
cout<<"请输入客户姓名:";
cin>>Name;
cout<<"输入证件号码 :";
cin>>ID;
cout<<"住宿天数: ";
cin>>d;
cout<<endl<<"请选择住宿类型 "<<endl<<endl;
cout<<"1 标准双人间 2 经济三人间 3 高档贵宾间"<<endl<<endl;
n=Choice();
for(;;)
{
if(n==1)
{
display(20,sr);
break;
}
else if(n==2)
{
display(15,tr);
break;
}
else if(n==3)
{
display(5,vr);
break;
}
else
{
cout<<"输入错误,请重新选择"<<endl;
n=Choice();
continue;
}
}
cout<<endl;
cout<<"您选择几号房间";
cin>>doorplate;
if(n==1)
{
makeTab(Name,ID,d,Doorplate(20,sr,doorplate),Acountprice(g,d,sr[0].Prc()));
}
else if(n==2)
{
makeTab(Name,ID,d,Doorplate(15,tr,doorplate),Acountprice(g,d,tr[0].Prc()));
}
else if(n==3)
{
makeTab(Name,ID,d,Doorplate(5,vr,doorplate),Acountprice(g,d,vr[0].Prc()));
}
cout<<"该客人已登记 "<<endl<<endl<<endl<<endl;
cout<<"1.继续登记 2.主菜单 3.退出程序 "<<endl;
int x=0;
x=Choice();
switch(x)
{
case 1:
Bookin();
case 2:
Startmenu();
case 3:
exit(0);
}
}
void Bmemberguest() /*会员客人*/
{
float ID;
int n=0,d,doorplate;
char Name[20];
cout<<"请输入客户姓名:";
cin>>Name;
cout<<"输入证件号码 :";
cin>>ID;
cout<<"住宿天数: ";
cin>>d;
cout<<endl<<"请选择住宿类型 "<<endl<<endl;
cout<<"1 标准双人间 2 经济三人间 3 高档贵宾间"<<endl<<endl;
n=Choice();
for(;;)
{
if(n==1)
{
display(20,sr);
break;
}
else if(n==2)
{
display(15,tr);
break;
}
else if(n==3)
{
display(5,vr);
break;
}
else
{
cout<<"输入错误,请重新选择"<<endl;
n=Choice();
continue;
}
}
cout<<endl;
cout<<"您选择几号房间";
cin>>doorplate;
if(n==1)
{
makeTab(Name,ID,d,Doorplate(20,sr,doorplate),Acountprice(mg,d,sr[0].Prc()));
}
else if(n==2)
{
makeTab(Name,ID,d,Doorplate(15,tr,doorplate),Acountprice(mg,d,tr[0].Prc()));
}
else if(n==3)
{
makeTab(Name,ID,d,Doorplate(5,vr,doorplate),Acountprice(mg,d,vr[0].Prc()));
}
cout<<"该客人已登记 "<<endl<<endl<<endl<<endl;
cout<<"1.继续登记 2.主菜单 3.退出程序 "<<endl;
int x=0;
x=Choice();
switch(x)
{
case 1:
Bookin();
case 2:
Startmenu();
case 3:
exit(0);
}
}
void Bvipguest() /* VIP客人 */
{
float ID;
int d,doorplate;
char Name[20];
cout<<"请输入客户姓名:";
cin>>Name;
cout<<"输入证件号码 :";
cin>>ID;
cout<<"住宿天数: ";
cin>>d;
cout<<endl<<" 当前空房间如下 "<<endl;
display(5,vr);
cout<<endl;
cout<<"您选择几号房间";
cin>>doorplate;
makeTab(Name,ID,d,Doorplate(5,vr,doorplate),Acountprice(vg,d,vr[0].Prc()));
cout<<"该客人已登记 "<<endl<<endl<<endl<<endl;
cout<<"1.继续登记 2.主菜单 3.退出程序 "<<endl;
int x=0;
x=Choice();
switch(x)
{
case 1:
Bookin();
case 2:
Startmenu();
case 3:
exit(0);
}
}
void Btourguest() /*旅游团客人*/
{
float ID;
int n=0,d,doorplate;
char Name[20];
cout<<"请输入客户姓名:";
cin>>Name;
cout<<"输入证件号码 :";
cin>>ID;
cout<<"住宿天数: ";
cin>>d;
cout<<"请选择住宿类型 "<<endl<<endl;
cout<<"1 标准双人间 2 经济三人间 "<<endl<<endl;
n=Choice();
for(;;)
{
if(n==1)
{
display(20,sr);
break;
}
else if(n==2)
{
display(15,tr);
break;
}
else
{
cout<<"输入错误,请重新选择"<<endl;
cin>>n;
continue;
}
}
cout<<endl;
cout<<"您选择几号房间";
cin>>doorplate;
if(n==1)
{
makeTab(Name,ID,d,Doorplate(20,sr,doorplate),Acountprice(tg,d,sr[0].Prc()));
}
else if(n==2)
{
makeTab(Name,ID,d,Doorplate(15,tr,doorplate),Acountprice(tg,d,tr[0].Prc()));
}
cout<<"该客人已登记 "<<endl<<endl<<endl<<endl;
cout<<"1.继续登记 2.主菜单 3.退出程序 "<<endl;
int x=0;
x=Choice();
switch(x)
{
case 1:
Bookin();
case 2:
Startmenu();
case 3:
exit(0);
}
}
double Acountprice(Guest& g,int days,double price) /*计算客户房价的多态*/
{
return g.getprice(days,price);
}
void makeTab(char *pName,float id,int d,int dp,double p) /*生成帐单*/
{
for(int i=0;i<35;i++)
{
if(tb[i].Rtabroom()!=0)
continue;
else
break;
}
char name[20];
strcpy(name,pName);
float ID=id;
int days=d;
int doorplate=dp;
double prc=p;
name[sizeof(name)-1]='\0';
tb[i].makeTab(name,ID,days,doorplate,prc);
}
void SearchRoom()
{
int doorplate;
cout<<" 请输入门牌号: "<<endl;
cin>>doorplate;
for(int i=0;i<35;i++)
{
if(doorplate==tb[i].Rtabroom())
{
tb[i].display();
break;
}
else if(doorplate!=tb[i].Rtabroom()&&i==34)
cout<<" 无此房间的住宿信息 "<<endl;
}
cout<<endl<<"1 继续查询 2 回主菜单"<<endl;
int n=0;
n=Choice();
for(;;)
{
if(n==1)
SearchRoom();
else if(n==2)
Startmenu();
else
{
cout<<"输入错误! 请重新选择1~2"<<endl;
n=Choice();
continue;
}
}
}
void SearchGuest()
{
char name[20];
char *pname;
pname=name;
cout<<"name"<<endl;
cin>>name;
for(int i=0;i<35;i++)
{
if(strcmp(pname,tb[i].tabname())==0)
{
tb[i].display();
break;
}
else if(strcmp(pname,tb[i].tabname())!=0&&i==34)
cout<<" 查无此人 "<<endl;
}
cout<<"1 继续查询 2 回主菜单"<<endl;
int n=0;
for(;;)
{
if(n==1)
SearchGuest();
else if(n==2)
Startmenu();
else
{
cout<<"输入错误! 请重新选择1~2"<<endl;
n=Choice();
continue;
}
}
}
void Pay()
{
cout<<endl<<"请输入需要结帐的房间号: ";
int doorplate,i;
cin>>doorplate;
for(i=0;i<35;i++)
{
if(doorplate==tb[i].Rtabroom())
{
tb[i].display();
break;
}
else if(doorplate!=tb[i].Rtabroom()&&i==34)
{
cout<<"此房间无人住宿"<<endl;
cout<<"请重新输入房间号"<<endl;
cin>>doorplate;
i=-1;
}
}
cout<<"确认结帐请按1 重新输入请按2 返回主菜单请按3"<<endl;
int n=0;
n=Choice();
if(n==1)
{
for(i;i<35;i++)
{
if(i==34)
tb[i].tabroom(0);
else
tb[i]=tb[i+1];
}
cout<<"该房间已结帐完毕"<<endl<<endl;
Startmenu();
}
else if(n==2)
{
Pay();
}
else if(n==3)
{
Startmenu();
}
else
{
cout<<"输入错误 程序将返回主菜单"<<endl;
Startmenu();
}
}
int Choice() /*选择查错函数,避免输入字符型时出现的死循环*/
{
int n;
char c[]="";
cin>>c;
if(strcmp("1",c)==0)
n=1;
else if(strcmp("2",c)==0)
n=2;
else if(strcmp("3",c)==0)
n=3;
else if(strcmp("4",c)==0)
n=4;
else if(strcmp("5",c)==0)
n=5;
else
n=6;
return n;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -