⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 宾馆住宿管理系统,包括住宿登记,计费,退房,查看当前空房等功能.
💻 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 + -