C++期末课程设计——宾馆客房管理系统(详细报告+源代码+详细注释)(另附加“25+”C++&&C语言期末课程设计系统下载地址)

宾馆客房管理系统报告 目录 宾馆客房管理系统报告 一、描述 二、设计思路及总体设计 三、详细设计 1、主函数功能实现 2、订房功能实现 3、 入住登记功能实现 4、 退房结算功能实现 5、信息查询功能实现 四、系统源代

宾馆客房管理系统报告

目录

宾馆客房管理系统报告

一、描述

二、设计思路及总体设计

三、详细设计

1、主函数功能实现

2、订房功能实现

3、 入住登记功能实现

4、 退房结算功能实现

5、信息查询功能实现

四、系统源代码

五、运行结果截图

1、系统登录界面

2、订房功能

3、入住功能

4、退房功能

5、查询功能

六、其他C/C++期末课程设计系统(完整项目+完全开源)

七、附载/下载地址

注意: 

本系统下载地址

C&C++期末课程设计

C语言期末课程设计


一、描述

        大家好!我是小浝仔,今天给大家分享C++期末课程设计——宾馆客房管理系统,这个程序是用C++程序编写的,实现了宾馆客房的订房管理,入住登记管理,结算登记管理,信息查询管理等等,是学习C++程序很好的参考资料,本系统在命令行窗口运行,没有可视化界面,也没有用到MFC类库,如果朋友们用来学习或做C++期末课程设计作业一定是可以的,我来共享给大家一些哦,另外在本博客结尾还附载了“25+”C++&&C语言期末课程设计下载地址(超详细),接下的一段时间,我都会发布出来。如果着急需要朋友们,请在评论区留言,我会参考,第一时间发布需要的文章!!!

特别记住:运行程序后输入的用户名和密码都为:123

有问题或意见,请及时联系我: 

CSDN:小浝仔_CSDN博客https://blog.csdn/m0_46843484?spm=1000.2115.3001.5343

版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处! 

二、设计思路及总体设计

        通过对C++课程的学习,我了解到了其面向对象的高级特性,我决定使用它实现一个宾馆客房管理系统,模拟一个实际宾馆客房系统的运行,下面我就将这个系统的实现思路说明一下。

        作为一个宾馆客房间管理系统,必然涉及到客房对象,顾客对象等实体。这个系统我设置了80个房间,其中房间分四个等级,每个等级的价格是不一样的,可以通过房间编号得到房间的等级。然后就是房间的分配问题,就是当有顾客要求定房或入住时,我的程序能够根据用户要求入住的等级到相应等级的房间中去查找一个还没有预定的房间和一个没有入住的空闲房间。

        当启动程序后,在Windows平台下都是从Main函数开始运行的,程序首先调用initial_room函数初始化80个房间的信息,包括房间编号,房间等级,房间价格,房间状态。其中房间编号和房间等级有直接联系,只要知道了房间编号就可以通过计算得到该房间的等级,房间状态初始化时等于0,表示该房间既没有被预定,也没有被入住。然后调用welcome函数,考虑到作为一个宾馆管理系统的安全性,对操作本系统的人员也要求认证的,其中在本函数中就要求只有通过输入了正确的用户名和密码才能操作系统哦!当通过登陆认证后,就进入宾馆管理系统了,在这里,系统给操作员显示一个操作菜单如:1->定房  2->入住  3->退房  4->查询,当操作员选择不同的数字就实现不同的功能。

三、详细设计

1、主函数功能实现

 主函数代码实现:

void main()			//程序入口从这里开始运行
{
 char choice='1';
 initial_room();	//初始化80个房间的信息,分四个等级
 welcome();			//验证用户登陆,登陆成功显示欢迎信息
 
 while(choice=='1')
 {
  enter();   //根据用户的选择执行不同的功能
  cout<<endl;
  cout<<"继续使用本系统请按\"1\",退出请按\"2\"!  ";
  cin>>choice;
  cout<<endl;
 }
}

2、订房功能实现

        作为一个宾馆管理系统,顾客可以提前到宾馆进行房间的预定,操作员能根据用户的需求查询到适合顾客的房间。在这个系统中,这个功能是在Book_Room函数中实现的,其流程图如下图所示。首先,构造一个顾客对象,然后设置该顾客预定客房的天数,设置顾客预定客房标准,根据用户需要的客放标准到相应的标准客房去查找一个一个既没有被预定也没有入住的房间,然后把该住房对象结构体的状态修改为已预定状态,同时将顾客对象的预定房间号属性,也将住房费用计算出来并显示到界面上,最后将住房顾客数加1

 订房功能代码实现:

void book_room()
{
 customer[i]=new Customer;
 int room_standard,day;
 cout<<"请您选择预定房间的标准:\n"; 
 cout<<"1.单人间/天150元\n2.双人间/天200元\n3.标准间/天300元\n4.总统套房/天600元\n"; 
 cin>>room_standard; 
 cout<<"请输入预定天数\n"; 
 cin>>day; 
 customer[i]->set_day(day);
 switch(room_standard) 
 { 
  int n;
 case 1:
  cout<<"住房费用总共为: "<<day*150<<"元\n";		//计算住房费用
  for(n=0;n<20;n++)			//从第一个级别的房间中查找一个空闲的房间
  {
   if(room[n].state==0)		//state=0表示该住房没有被预定的
   {
    cout<<"预定成功★房间号码为: "<<room[n].number<<endl;
                room[n].state=1;
    customer[i]->set_room_number(room[n].number);
    break;
   }
  }
  break; 
 case 2:
  cout<<"住房费用总共为: "<<day*200<<" 元\n"; 
  for(n=20;n<40;n++)
  {
   if(room[n].state==0)
   {
    cout<<"预定成功★房间号码为: "<<room[n].number<<endl;
                room[n].state=1;
    customer[i]->set_room_number(room[n].number);
    break;
   }
  }
  break; 
 case 3:
  cout<<"住房费用总共为: "<<day*300<<" 元\n"; 
  for(n=40;n<60;n++)
  {
   if(room[n].state==0)
   {
    cout<<"预定成功★房间号码为: "<<room[n].number<<endl;
                room[n].state=1;
    customer[i]->set_room_number(room[n].number);
    break;
   }
  }
  break; 
 case 4:
  cout<<"住房费用总共为: "<<day*600<<"元\n"; 
  for(n=60;n<80;n++)
  {
   if(room[n].state==0)
   {
    cout<<"预定成功★房间号码为: "<<room[n].number<<endl;
                room[n].state=1;
    customer[i]->set_room_number(room[n].number);
    break;
   }
  }
  break;   
 }  
 i++;  //住房的顾客数加1
}

3、 入住登记功能实现

        这个功能是在函数Check_In中实现的,程序首先判断顾客是否订房了,如果预定了房间,则要求输入顾客姓名和身份证号码,然后在所有的顾客中去查找此姓名和身份证号码的顾客,如果匹配了就取得其住房编号,然后根据住房编号计算出该住房的标准,再根据该顾客要求预定住房的天数和该住房标准的价格计算出该顾客要缴纳的房费,同时显示到界面上,这时操作员对顾客进行收费,同时设置顾客的住房费用属性,将该住房的状态修改为以入住状态(State=2);如果顾客没有来得及先预定房间,在这里可以实现先查找空房再入住的功能,同预定房间功能一样,先建立一个顾客对象代表即将入住的顾客,然后设置入住天数,选择住房标准,根据住房标准查询到一个空房,然后设置顾客的住房房间属性,同时直接修改该房间的状态为已入住状态,计算好要收的房费直接执行收费,再将顾客数加1。

 入住登记代码实现:

void check_in()
{
    char name1[10],id1[19];
 int ding_or_no,prepaid;
 cout<<"该顾客订房了吗? (1->订了  2->没订) ";
 cin>>ding_or_no;
 if(ding_or_no==1)
 {
  cout<<"请输入顾客的姓名:"<<endl;
  cin>>name1;
  cout<<"请输入顾客的身份证号码:"<<endl;
  cin>>id1;
  for(int j=0;j<=i;j++)
  {
   if((strcmp(customer[j]->get_name(),name1)==0)&&(strcmp(customer[j]->get_ID(),id1)==0))  //查找该顾客的定房信息
   {
    int num=customer[j]->get_room_number();  //取得定房的房间号
    cout<<"顾客"<<name1<<"今天入住本宾馆! 房间号码为: "<<num<<endl;
    switch(num/100)
    {
    case 6:
     prepaid=customer[j]->get_day()*150;
     customer[j]->set_prepaid(prepaid);
     cout<<"请收房费 "<<prepaid<<"元整!"<<endl; //开始收费
     room[num%100-1].state=2;                  //修改房间状态为入住状态
     break;
    case 7:
     prepaid=customer[j]->get_day()*200;
     customer[j]->set_prepaid(prepaid);
     cout<<"请收房费 "<<prepaid<<"元整!"<<endl;
     room[19+num%100].state=2;
     break;
    case 8:
     prepaid=customer[j]->get_day()*300;
     customer[j]->set_prepaid(prepaid);
     cout<<"请收房费 "<<prepaid<<"元整!"<<endl;
     room[39+num%100].state=2;
     break;
    case 9:
     prepaid=customer[j]->get_day()*600;
     customer[j]->set_prepaid(prepaid);
     cout<<"请收房费 "<<prepaid<<"元整!"<<endl;
     room[59+num%100].state=2;
     break;
     
    }
    break;
   } 
  }
  
  
 } 
 else
 {
  customer[i]=new Customer;
  int room_standard,day;
  cout<<"请您选择预定房间的标准:\n"; 
  cout<<"1.单人间/天150元\n2.双人间/天200元\n3.标准间/天300元\n4.总统套房/天600元\n"; 
  cin>>room_standard; 
  cout<<"请输入住宿天数\n"; 
  cin>>day; 
  customer[i]->set_day(day);
  switch(room_standard) 
  { 
   int n;
  case 1:
   prepaid=day*150;
   customer[i]->set_prepaid(prepaid);
   cout<<"请收房费 "<<prepaid<<"元整!\n"; 
   for(n=0;n<20;n++)
   {
    if(room[n].state==0)
    {
     cout<<"入住房间号码为: "<<room[n].number<<endl;
     room[n].state=2;
     customer[i]->set_room_number(room[n].number);
     break;
    }
   }
   break; 
  case 2:
   prepaid=day*200;
   customer[i]->set_prepaid(prepaid);
   cout<<"请收房费 "<<prepaid<<"元整!\n"; 
   for(n=20;n<40;n++)
   {
    if(room[n].state==0)
    {
     cout<<"入住房间号码为: "<<room[n].number<<endl;
     room[n].state=2;
     customer[i]->set_room_number(room[n].number);
     break;
    }
   }
   break; 
  case 3:
   prepaid=day*300;
   customer[i]->set_prepaid(prepaid);
   cout<<"请收房费 "<<prepaid<<"元整!\n"; 
   for(n=40;n<60;n++)
   {
    if(room[n].state==0)
    {
     cout<<"入住房间号码为: "<<room[n].number<<endl;
     room[n].state=2;
     customer[i]->set_room_number(room[n].number);
     break;
    }
   }
   break; 
  case 4:
   prepaid=day*600;
   customer[i]->set_prepaid(prepaid);
   cout<<"请收房费 "<<prepaid<<"元整!\n"; 
   for(n=60;n<80;n++)
   {
    if(room[n].state==0)
    {
     cout<<"入住房间号码为: "<<room[n].number<<endl;
     room[n].state=2;
     customer[i]->set_room_number(room[n].number);
     break;
    }
   }
   break;   
  }  
  i++;
 }
}

4、 退房结算功能实现

        简明:这个功能是在函数Check_Out中实现的,程序首先根据输入退房顾客的姓名和身份证号码,以及再输入顾客的实住天数,来计算顾客消费的费用。本程序利用Swithch(standard)函数,根据顾客的房间号以及该顾客预付了房费的多少,来判断是否给该顾客退费,还是请补收该顾客住房费用。        

退房结算功能代码实现:

void check_out()
{
 char name2[10],id2[19];
 int standard,j,room_number,day1,day2,day;
 cout<<"请输入要退房的顾客姓名和身份证号码:\n";
 cin>>name2>>id2; 
 cout<<"请输入该顾客实住天数:\n"; 
 cin>>day2; 
 for(j=0;j<i;j++)
 {
  if((strcmp(customer[j]->get_name(),name2)==0)&&(strcmp(customer[j]->get_ID(),id2)==0))
  {
   room_number=customer[j]->get_room_number();
   standard=room_number/100; 
   day1=customer[j]->get_day();
   day=day1-day2;
   switch(standard) 
   {
   case 6: 
    cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天150元\n";
    cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*150<<"元整!\n";
    cout<<endl;
    if(day>0)
     cout<<"请退给该顾客 "<<day*150<<" 元整!\n"; 
    if(day<0)
     cout<<"请补收该顾客住房费 "<<-day*150<<" 元整!\n";
    break; 
   case 7:
    cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天200元\n";
    cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*200<<"元整!\n";
    cout<<endl;
    if(day>0)
     cout<<"请退给该顾客 "<<day*200<<" 元整!\n"; 
    if(day<0)
     cout<<"请补收该顾客住房费 "<<-day*200<<" 元整!\n";
    break; 
   case 8:
    cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天300元\n";
    cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*300<<"元整!\n";
    cout<<endl;
    if(day>0)
     cout<<"请退给该顾客 "<<day*300<<" 元整!\n"; 
    if(day<0)
     cout<<"请补收该顾客住房费 "<<-day*300<<" 元整!\n";
    break; 
   case 9:
    cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天600元\n";
    cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*600<<"元整!\n";
    cout<<endl;
    if(day>0)
     cout<<"请退给该顾客 "<<day*600<<" 元整!\n"; 
    if(day<0)
     cout<<"请补收该顾客住房费 "<<-day*600<<" 元整!\n";
    break; 
   }
   cout<<endl;
   cout<<"退房核算清楚,请按1: ";
   char account;
   cin>>account;
   if(account=='1')
   {
    for(int k=0;k<80;k++)
    {
     if(room[k].number==customer[j]->get_room_number()) 
      room[k].state=0;
    }
    i--;
    for(;j<i;j++)
    {
     customer[j]=customer[j+1];
    }
    delete customer[i];
   }
  }
 } 
}

5、信息查询功能实现

        简明:这个功能是在函数Void inquire()函数实现的,信息查询分为房间信息查询1和顾客信息查询2对于房间信息查询会列出:那些房间还没人预定,也没人入住;那些房间已预定,那些房间有人入住;对于顾客信息查询:分为按姓名查询按1和按身份证查询按2,分别输入顾客的姓名和身份证号码,查询顾客住房信息:房间号和预付房费。

信息查询功能代码实现:

void inquire()
{
 char inquire_choice;
 cout<<"房间信息查询请按1, 顾客信息查询请按2: "<<endl;
 cin>>inquire_choice;
    if(inquire_choice=='1')
 {
  int j,k=0;
  cout<<endl;
  cout<<"下列房间还没人预订,也没人入住:"<<endl;
  for(j=0;j<80;j++)
  {
   if(room[j].state==0)
   {
    if(k%10==0) cout<<endl;
    cout<<room[j].number<<'\t';
    k++;
   }
  }
  cout<<endl;
  cout<<endl;
  k=0;
  cout<<"下列房间已预订:"<<endl;
  for(j=0;j<80;j++)
  {
   if(room[j].state==1)
   {
    if(k%10==0) cout<<endl;
    cout<<room[j].number<<'\t';
    k++;
   }
  }
  k=0;
  cout<<endl;
  cout<<endl;
  cout<<"下列房间有人入住:"<<endl;
  for(j=0;j<80;j++)
  {
   if(room[j].state==2)
   {
    if(k%10==0) cout<<endl;
    cout<<room[j].number<<'\t';
    k++;
   }
  }
  cout<<endl;
  cout<<endl;
 }
 else if(inquire_choice=='2')
 {
  cout<<"按姓名查询请按1, 按身份证查询请按2: "<<endl;
  char inquire_choice;
  cin>>inquire_choice;
  if(inquire_choice=='1')
  {
   char name3[10];
   cout<<"请输入顾客的姓名: "<<endl;
   cin>>name3;
   for(int j=0;j<=i;j++)
   {
    if(strcmp(customer[j]->get_name(),name3)==0)
    {
     cout<<name3<<"的住房信息如下:\n";
     cout<<'\t'<<"房间号为: "<<customer[j]->get_room_number()<<endl;
     cout<<"\t"<<"预付房费为: "<<customer[j]->get_prepaid()<<endl;
    }
   }
  }
  if(inquire_choice=='2')
  {
   char id3[10];
   cout<<"请输入顾客的身份证号码: "<<endl;
   cin>>id3;
   for(int j=0;j<=i;j++)
   {
    if(strcmp(customer[j]->get_ID(),id3)==0)
    {
     cout<<customer[j]->get_name()<<"的住房信息如下:\n";
     cout<<'\t'<<"房间号为: "<<customer[j]->get_room_number()<<endl;
     cout<<"\t"<<"预付房费为: "<<customer[j]->get_prepaid()<<endl;
    }
   }
  }
 }
}

四、系统源代码

#include<iostream.h> 
#include<string.h>
//***********************************************************************************
void initial_room();	//初始化80个房间信息
void welcome();			//验证用户登陆,登陆成功显示欢迎信息
void enter();
void book_room();
void check_in();
void check_out();
void inquire();
int i=0;
//***********************************************************************************
struct Room  
{
 int number;
 int dank;
 int price;
 int state; 
};

class Customer  
{
public:
 Customer();
 
 void set_name(char *n){strcpy(name,n);}
 void set_ID(char *p){strcpy(ID,p);}
 void set_room_number(int n){room_number=n;}
 void set_day(int d){day=d;}
 void set_prepaid(int p){prepaid=p;}
 char *get_name(){return name;}
 char *get_ID(){return ID;}
 int  get_room_number(){return room_number;}
 int  get_day(){return day;}
 int  get_prepaid(){return prepaid;} 
 
 virtual ~Customer();
private: 
 char name[10],ID[19]; 
 int  room_number;
 int  prepaid;
 int  change;
 int  day;
};
Customer::Customer()
{
 cout<<"请您输入顾客的姓名\n";
 cin>>name;
 cout<<"请您输入顾客的身份证号码\n"; 
 cin>>ID; 
 prepaid=change=day=0;
}
Customer::~Customer()
{
 cout<<"该顾客退房成功!"<<endl;
}
//***********************************************************************************
Room room[80];
Customer *customer[80];

void main()			//程序入口从这里开始运行
{
 char choice='1';
 initial_room();	//初始化80个房间的信息,分四个等级
 welcome();			//验证用户登陆,登陆成功显示欢迎信息
 
 while(choice=='1')
 {
  enter();   //根据用户的选择执行不同的功能
  cout<<endl;
  cout<<"继续使用本系统请按\"1\",退出请按\"2\"!  ";
  cin>>choice;
  cout<<endl;
 }
}
//系统登陆界面***********************************************************************
void welcome()		//验证用户登陆,登陆成功显示欢迎信息
{
 char name[4],code[7];
 cout<<"请输入用户名和密码(以空格隔开):\n"; 
 cin>>name>>code;
 while((strcmp(name,"123")!=0)||(strcmp(code,"123")!=0))
 {
  cout<<"用户名或密码输入有误,请重新输入!\n";
  cin>>name>>code;
 }
 cout<<endl;
 cout<<endl;
 cout<<"                      ▲***************************▲\n"; 
 cout<<"                      △ 欢迎使用宾馆客房管理系统!△\n"; 
 cout<<"                      ▲***************************▲\n"; 
 cout<<endl;
}
//系统入口***************************************************************************
void enter()
{
 int kind_of_service;
 cout<<"请选择服务类别:订房、入住、退房还是查询? \n"; 
 cout<<" 1->定房  2->入住  3->退房  4->查询:  ";
 cin>>kind_of_service; 
 if((kind_of_service>4) || (kind_of_service<1)) 
 {
  cout<<"您的输入有误,请重试!\n"; 
  cin>>kind_of_service;
 } 
 else 
  switch(kind_of_service) 
 {
case 1: book_room();
 break;
case 2: check_in();
 break;
case 3: check_out();
 break;
case 4: inquire();
 break;
 } 
}


//订房实现***************************************************************************
void book_room()
{
 customer[i]=new Customer;
 int room_standard,day;
 cout<<"请您选择预定房间的标准:\n"; 
 cout<<"1.单人间/天150元\n2.双人间/天200元\n3.标准间/天300元\n4.总统套房/天600元\n"; 
 cin>>room_standard; 
 cout<<"请输入预定天数\n"; 
 cin>>day; 
 customer[i]->set_day(day);
 switch(room_standard) 
 { 
  int n;
 case 1:
  cout<<"住房费用总共为: "<<day*150<<"元\n";		//计算住房费用
  for(n=0;n<20;n++)									//从第一个级别的房间中查找一个空闲的房间
  {
   if(room[n].state==0)								//state=0表示该住房没有被预定的
   {
    cout<<"预定成功★房间号码为: "<<room[n].number<<endl;
                room[n].state=1;
    customer[i]->set_room_number(room[n].number);
    break;
   }
  }
  break; 
 case 2:
  cout<<"住房费用总共为: "<<day*200<<" 元\n"; 
  for(n=20;n<40;n++)
  {
   if(room[n].state==0)
   {
    cout<<"预定成功★房间号码为: "<<room[n].number<<endl;
                room[n].state=1;
    customer[i]->set_room_number(room[n].number);
    break;
   }
  }
  break; 
 case 3:
  cout<<"住房费用总共为: "<<day*300<<" 元\n"; 
  for(n=40;n<60;n++)
  {
   if(room[n].state==0)
   {
    cout<<"预定成功★房间号码为: "<<room[n].number<<endl;
                room[n].state=1;
    customer[i]->set_room_number(room[n].number);
    break;
   }
  }
  break; 
 case 4:
  cout<<"住房费用总共为: "<<day*600<<"元\n"; 
  for(n=60;n<80;n++)
  {
   if(room[n].state==0)
   {
    cout<<"预定成功★房间号码为: "<<room[n].number<<endl;
                room[n].state=1;
    customer[i]->set_room_number(room[n].number);
    break;
   }
  }
  break;   
 }  
 i++;  //住房的顾客数加1
}
//入住登记***************************************************************************
void check_in()
{
    char name1[10],id1[19];
 int ding_or_no,prepaid;
 cout<<"该顾客订房了吗? (1->订了  2->没订) ";
 cin>>ding_or_no;
 if(ding_or_no==1)
 {
  cout<<"请输入顾客的姓名:"<<endl;
  cin>>name1;
  cout<<"请输入顾客的身份证号码:"<<endl;
  cin>>id1;
  for(int j=0;j<=i;j++)
  {
   if((strcmp(customer[j]->get_name(),name1)==0)&&(strcmp(customer[j]->get_ID(),id1)==0))  //查找该顾客的定房信息
   {
    int num=customer[j]->get_room_number();  //取得定房的房间号
    cout<<"顾客"<<name1<<"今天入住本宾馆! 房间号码为: "<<num<<endl;
    switch(num/100)
    {
    case 6:
     prepaid=customer[j]->get_day()*150;
     customer[j]->set_prepaid(prepaid);
     cout<<"请收房费 "<<prepaid<<"元整!"<<endl; //开始收费
     room[num%100-1].state=2;                  //修改房间状态为入住状态
     break;
    case 7:
     prepaid=customer[j]->get_day()*200;
     customer[j]->set_prepaid(prepaid);
     cout<<"请收房费 "<<prepaid<<"元整!"<<endl;
     room[19+num%100].state=2;
     break;
    case 8:
     prepaid=customer[j]->get_day()*300;
     customer[j]->set_prepaid(prepaid);
     cout<<"请收房费 "<<prepaid<<"元整!"<<endl;
     room[39+num%100].state=2;
     break;
    case 9:
     prepaid=customer[j]->get_day()*600;
     customer[j]->set_prepaid(prepaid);
     cout<<"请收房费 "<<prepaid<<"元整!"<<endl;
     room[59+num%100].state=2;
     break;
     
    }
    break;
   } 
  }
  
  
 } 
 else
 {
  customer[i]=new Customer;
  int room_standard,day;
  cout<<"请您选择预定房间的标准:\n"; 
  cout<<"1.单人间/天150元\n2.双人间/天200元\n3.标准间/天300元\n4.总统套房/天600元\n"; 
  cin>>room_standard; 
  cout<<"请输入住宿天数\n"; 
  cin>>day; 
  customer[i]->set_day(day);
  switch(room_standard) 
  { 
   int n;
  case 1:
   prepaid=day*150;
   customer[i]->set_prepaid(prepaid);
   cout<<"请收房费 "<<prepaid<<"元整!\n"; 
   for(n=0;n<20;n++)
   {
    if(room[n].state==0)
    {
     cout<<"入住房间号码为: "<<room[n].number<<endl;
     room[n].state=2;
     customer[i]->set_room_number(room[n].number);
     break;
    }
   }
   break; 
  case 2:
   prepaid=day*200;
   customer[i]->set_prepaid(prepaid);
   cout<<"请收房费 "<<prepaid<<"元整!\n"; 
   for(n=20;n<40;n++)
   {
    if(room[n].state==0)
    {
     cout<<"入住房间号码为: "<<room[n].number<<endl;
     room[n].state=2;
     customer[i]->set_room_number(room[n].number);
     break;
    }
   }
   break; 
  case 3:
   prepaid=day*300;
   customer[i]->set_prepaid(prepaid);
   cout<<"请收房费 "<<prepaid<<"元整!\n"; 
   for(n=40;n<60;n++)
   {
    if(room[n].state==0)
    {
     cout<<"入住房间号码为: "<<room[n].number<<endl;
     room[n].state=2;
     customer[i]->set_room_number(room[n].number);
     break;
    }
   }
   break; 
  case 4:
   prepaid=day*600;
   customer[i]->set_prepaid(prepaid);
   cout<<"请收房费 "<<prepaid<<"元整!\n"; 
   for(n=60;n<80;n++)
   {
    if(room[n].state==0)
    {
     cout<<"入住房间号码为: "<<room[n].number<<endl;
     room[n].state=2;
     customer[i]->set_room_number(room[n].number);
     break;
    }
   }
   break;   
  }  
  i++;
 }
}
//退房结算***************************************************************************
void check_out()
{
 char name2[10],id2[19];
 int standard,j,room_number,day1,day2,day;
 cout<<"请输入要退房的顾客姓名和身份证号码:\n";
 cin>>name2>>id2; 
 cout<<"请输入该顾客实住天数:\n"; 
 cin>>day2; 
 for(j=0;j<i;j++)
 {
  if((strcmp(customer[j]->get_name(),name2)==0)&&(strcmp(customer[j]->get_ID(),id2)==0))
  {
   room_number=customer[j]->get_room_number();
   standard=room_number/100; 
   day1=customer[j]->get_day();
   day=day1-day2;
   switch(standard) 
   {
   case 6: 
    cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天150元\n";
    cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*150<<"元整!\n";
    cout<<endl;
    if(day>0)
     cout<<"请退给该顾客 "<<day*150<<" 元整!\n"; 
    if(day<0)
     cout<<"请补收该顾客住房费 "<<-day*150<<" 元整!\n";
    break; 
   case 7:
    cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天200元\n";
    cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*200<<"元整!\n";
    cout<<endl;
    if(day>0)
     cout<<"请退给该顾客 "<<day*200<<" 元整!\n"; 
    if(day<0)
     cout<<"请补收该顾客住房费 "<<-day*200<<" 元整!\n";
    break; 
   case 8:
    cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天300元\n";
    cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*300<<"元整!\n";
    cout<<endl;
    if(day>0)
     cout<<"请退给该顾客 "<<day*300<<" 元整!\n"; 
    if(day<0)
     cout<<"请补收该顾客住房费 "<<-day*300<<" 元整!\n";
    break; 
   case 9:
    cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天600元\n";
    cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*600<<"元整!\n";
    cout<<endl;
    if(day>0)
     cout<<"请退给该顾客 "<<day*600<<" 元整!\n"; 
    if(day<0)
     cout<<"请补收该顾客住房费 "<<-day*600<<" 元整!\n";
    break; 
   }
   cout<<endl;
   cout<<"退房核算清楚,请按1: ";
   char account;
   cin>>account;
   if(account=='1')
   {
    for(int k=0;k<80;k++)
    {
     if(room[k].number==customer[j]->get_room_number()) 
      room[k].state=0;
    }
    i--;
    for(;j<i;j++)
    {
     customer[j]=customer[j+1];
    }
    delete customer[i];
   }
  }
 } 
}
//信息查询***************************************************************************
void inquire()
{
 char inquire_choice;
 cout<<"房间信息查询请按1, 顾客信息查询请按2: "<<endl;
 cin>>inquire_choice;
    if(inquire_choice=='1')
 {
  int j,k=0;
  cout<<endl;
  cout<<"下列房间还没人预订,也没人入住:"<<endl;
  for(j=0;j<80;j++)
  {
   if(room[j].state==0)
   {
    if(k%10==0) cout<<endl;
    cout<<room[j].number<<'\t';
    k++;
   }
  }
  cout<<endl;
  cout<<endl;
  k=0;
  cout<<"下列房间已预订:"<<endl;
  for(j=0;j<80;j++)
  {
   if(room[j].state==1)
   {
    if(k%10==0) cout<<endl;
    cout<<room[j].number<<'\t';
    k++;
   }
  }
  k=0;
  cout<<endl;
  cout<<endl;
  cout<<"下列房间有人入住:"<<endl;
  for(j=0;j<80;j++)
  {
   if(room[j].state==2)
   {
    if(k%10==0) cout<<endl;
    cout<<room[j].number<<'\t';
    k++;
   }
  }
  cout<<endl;
  cout<<endl;
 }
 else if(inquire_choice=='2')
 {
  cout<<"按姓名查询请按1, 按身份证查询请按2: "<<endl;
  char inquire_choice;
  cin>>inquire_choice;
  if(inquire_choice=='1')
  {
   char name3[10];
   cout<<"请输入顾客的姓名: "<<endl;
   cin>>name3;
   for(int j=0;j<=i;j++)
   {
    if(strcmp(customer[j]->get_name(),name3)==0)
    {
     cout<<name3<<"的住房信息如下:\n";
     cout<<'\t'<<"房间号为: "<<customer[j]->get_room_number()<<endl;
     cout<<"\t"<<"预付房费为: "<<customer[j]->get_prepaid()<<endl;
    }
   }
  }
  if(inquire_choice=='2')
  {
   char id3[10];
   cout<<"请输入顾客的身份证号码: "<<endl;
   cin>>id3;
   for(int j=0;j<=i;j++)
   {
    if(strcmp(customer[j]->get_ID(),id3)==0)
    {
     cout<<customer[j]->get_name()<<"的住房信息如下:\n";
     cout<<'\t'<<"房间号为: "<<customer[j]->get_room_number()<<endl;
     cout<<"\t"<<"预付房费为: "<<customer[j]->get_prepaid()<<endl;
    }
   }
  }
 }
}
//房间信息初始化*********************************************************************
void initial_room()  //对80个房间进行初始化,分4个等级
{
 int j,k=601;
 for(j=0;j<20;j++)
 {
  room[j].number=k++;
  room[j].dank=1;
  room[j].price=150;
  room[j].state=0;
 }
 k=701;
 for(j=20;j<40;j++)
 {
  room[j].number=k++;
  room[j].dank=2;
  room[j].price=200;
  room[j].state=0;
 }
 k=801;
 for(j=40;j<60;j++)
 {
  room[j].number=k++;
  room[j].dank=3;
  room[j].price=300;
  room[j].state=0;
 }
 k=901;
 for(j=60;j<80;j++)
 {
  room[j].number=k++;
  room[j].dank=4;
  room[j].price=600;
  room[j].state=0;
 }
}

五、运行结果截图

1、系统登录界面

2、订房功能

3、入住功能

4、退房功能

5、查询功能

六、其他C/C++期末课程设计系统(完整项目+完全开源)

★C++语言期末课程设计★——图书借阅系统(完整项目+源代码+详细注释)

★C/C++语言期末课程设计★——万年历显示系统(详细报告+源代码+详细注释)

★C语言期末课程设计★——教师工资管理系统(详细报告+源代码+详细注释)

★C语言期末课程设计★——成绩管理系统(源代码+详细注释)

【C语言期末课程设计】——超市管理系统(开源)

★C/C++期末课程设计★—☆产品入库管理操作系统☆【开源+详细注释】

【C&C++期末课程设计】——职工工作量统计系统(源代码+详细注释)

​​​​​​【C&C++期末课程设计】——职工资源管理系统(源代码+详细注释)

C&C++期末课程设计——个人收支管理系统(一)【源代码+详细注释】

C&C++期末课程设计——学生成绩管理源代码

C&C++期末课程设计——图书管理系统源代码

C++期末课程设计——宾馆客房管理系统(详细报告+源代码+详细注释)(另附加“25+”C++&&C语言期末课程设计系统下载地址)

C&C++期末课程设计——产品管理系统(源代码+详细注释)

七、附载/下载地址

注意: 

下面附载了“25+”C++&&C语言期末课程设计下载地址(超详细),每个系统的简介都详细介绍了本系统的实现功能,可以根据功能查找自己所需要的,接下的一段时间,我将会一一为大家发布。如果着急需要的朋友们,请在评论区留言,我会参考,第一时间发布需要的文章!!!

本系统下载地址

C/C++课程设计——课程设计宾馆客房管理系统(源代码+课设报告+详细注释).zip

C&C++期末课程设计

C&C++——文件成绩(源代码).zip

C&amp;C++课程设计——图书管理系统.zip

C&C++课程设计——学生成绩管理系统.zip

C/C++课程设计——职工工作量统计系统(源代码、注释).zip

C&C++课程设计——班级学生档案管理系统源代码(源代码+注释).zip

C&C++期末课程设计——KTV歌曲管理系统(源代码+详细注释).zip

C&amp;C++期末课程设计——产品信息管理系统(源代码+详细注释).zip

 C&C++期末课程设计——个人收支管理系统(源代码+详细注释).zip

 C&C++期末课程设计——职工资源管理系统(源代码+详细注释).zip

C&C++期末课程设计——个人收支管理系统(二)(源代码+详细注释).zip

C语言期末课程设计

C语言课程设计——教工工资管理系统(源代码+课程设计+详细注释).zip

C语言课程设计——成绩管理系统源程序.zip

C语言课程设计——超市管理系统(源代码+详细注释).zip

C语言课程设计——火车票订票管理系统(源代码+详细注释).zip

C语言课程设计——商品销售系统(源代码+详细注释).zip

C语言课程设计——通讯录管理系统(源代码+详细注释).zip

C语言课程设计——图书管理系统(源代码+详细注释).zip

C++语言课程设计——图书借阅系统(源代码+详细注释).zip

C语言课程设计——万年历系统(源代码+详细注释).zip

C语言课程设计——文本编辑器系统(源代码+详细注释).zip

C语言课程设计——学生成绩管理系统.zip

 C语言课程设计——学生成绩管理系统(源代码+详细注释).zip

C语言课程设计——学生信息系统(源代码+详细注释).zip

C语言课程设计——做的绘图板系统(源代码+详细注释).zip

 -  版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

发布者:admin,转转请注明出处:http://www.yc00.com/web/1734611394a3744840.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信