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

宾馆客房管理系统报告

目录

宾馆客房管理系统报告

一、描述

二、设计思路及总体设计

三、详细设计

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.net/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

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

  • 51
    点赞
  • 323
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
"软件工程课程设计"报告 题目:酒店管理系统 指导教师: 成员: 完成日期: 目 录 一.概述 1.1工程背景 随着国家经济的开展人们的生活水平有了很大的提高。旅游度假和商务旅行已经成为 人们的一种生活需求。国家也把旅游业作为一个**支柱产业来扶持。各地的宾馆酒店越 来越多,行业间竞争越来越剧烈。传统的酒店管理模式已经不能适应现代酒店开展。利 用高科技的电脑网络技术来处理宾馆酒店经营数据,已经成为提高企业管理效率,改善 效劳质量的关键。 1.2编写目的 现代化的酒店组织庞大、效劳工程多、信息量大,要想提高劳动生产、降低本钱、提 高效劳质量和管理水平,促进经济效益,但凭原始的手工记录管理,不仅效率低,还很 容易出错,因此必须借助计算机来进展现代化的信息管理。所以酒店管理系统正是为此 而设计的,优秀的酒店客房管理系统操作方便,灵活性好,系统平安性高,运行稳定, 效劳快捷方便,让宾客感受到一种顾客至上的享受。 1.3工程名称 酒店管理系统。 1.4 开发环境 开发软件:Microsoft Visual Studio 2010 高级语言:C# 使用技术:.Net/JS/JQuery 数据库:Microsoft SQL Server 2008 二.需求分析 2.1 问题的提出 该系统的具体任务就是设计一个酒店客房管理系统,由计算机来代替人工执行一系列 诸如增加新客房、删除客房客房修改、查询、客户管理等操作,这样就使办公人员可 以轻松快捷地完成酒店客房管理任务,了解整个酒店客房信息。 2.2需完成的功能 数据流图如下列图1和2所示: 图1 顶层数据流图 图2 0层数据流图 酒店管理系统 .1宾客登记 登记酒店宾客入住情况,包括宾客的**及**号的登记,以及入住房间信息。 2.2.1.2退房登记 当宾客离开时,需要办理退房结账手续。 2.2.1.3入住情况查询 对于一定时间段内,每个宾客入住情况可以实现根本查询。 .4客房类型管理 管理员可以在管理平台上增添、修改、删除客房类型〔豪华双人房、VIP房、普通单人 房等〕。 .5 客房管理 管理员可以在管理平台上增添、修改、删除各种客房类型的客房。 .6 客房信息查询 管理员可以通过各个客房的房间来查询该客房详细情况〔是否已有宾客入住、客房 的设备是否完好等〕。 .7 经营情况管理 管理员可以通过宾客的入住情况得知目前哪种客房类型更受欢送,哪个时间段宾客入 住数量更多,入住宾客的年龄段、目前收入的金额来调整经营状况。 三.数据库设计 3.1概念模型设计 图3 概念模型设计 3.2逻辑模型设计 数据构造名称:管理员 含义说明:主要用于记录管理员的相关信息 数据项: "属性名 "数据类型 "数据描述 " "管理员标识 "int "主键,自增,唯一标识该管理 " " " "员 " "管理员** "varchar(50) " " "管理员密码 "varchar(50) " " "管理员 "varchar(50) " " "管理员地址 "varchar(50) " " "管理员 "varchar(50) " " 数据构造名称:顾客信息 含义说明:主要用于记录客户的相关信息 数据项: "属性名 "数据类型 "数据描述 " "客户标识 "varchar(50) "主键,自增,唯一标识该客户 " "客户** "varchar(50) " " "客户 "varchar(50) " " "顾客地址 "varchar(50) " " 数据构造名称:房间入住历史记录 含义说明:主要用于记录房间的使用历史信息 数据项: "属性名 "数据类型 "数据描述 " "订房时间 "datetime "主键,自增 " "退房时间 "varchar(50) " " "房间标识 "varchar(50) "主键,指明所属房间 " "总计价格 "money " " "顾客标识 "varchar(50) "外键,指明所属客户 " "顾客** "varchar(50) "外键,指明客户** " 顾客 varchar(50) 外键,指明客户 数据构造名称:房间类型 含义说明:主要用于记录房间的名称、面积等相关信息。 数据项: "属性名 "数据类型 "数据描述 " "房间类型标识"int "主键,自增,唯一标识该类型 " "房间类型名称"varchar(50) " " "房间面积 "float " " "床位 "int " " "价格 "money " " "空调 "int " " "电视 "int " " 数据构造名称:房间入住信息 含义说明:主要用于记录订房时间、消费者标识等信息 数据项: "属性名 "数据类型 "数据描述 " "房间标识 "int "主键,自增,唯一标识该房间 " "订房时间 "datatime " " 消费者标识 va
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小浝仔(๑>؂<๑)

您的鼓励将是我创作的最大激励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值