【C++例程】:宾馆客房管理系统
目录
- 宾馆客房管理系统
- 1 设计思路及总体设计
- 2 订房功能的c++实现:
- 3 入住登记功能的c++实现:
宾馆客房管理系统
1 设计思路及总体设计
通过对c++课程的学习,我了解到了其面向对象的高级特性,我决定使用它实现一个宾馆客房管理系统,模拟一个实际宾馆客房系统的运行,下面我就将这个系统的实现思路说明一下。
作为一个宾馆客房间管理系统,必然涉及到客房对象,顾客对象等实体。这个系统我设置了80个房间,其中房间分四个等级,每个等级的价格是不一样的,可以通过房间编号得到房间的等级。然后就是房间的分配问题,就是当有顾客要求定房或入住时,我的程序能够根据用户要求入住的等级到相应等级的房间中去查找一个还没有预定的房间和一个没有入住的空闲房间。
当启动程序后,在windows平台下都是从main函数开始运行的,程序首先调用initial_room函数初始化80个房间的信息,包括房间编号,房间等级,房间价格,房间状态。其中房间编号和房间等级有直接联系,只要知道了房间编号就可以通过计算得到该房间的等级,房间状态初始化时等于0,表示该房间既没有被预定,也没有被入住。然后调用welcome函数,考虑到作为一个宾馆管理系统的安全性,对操作本系统的人员也要求认证的,其中在本函数中就要求只有通过输入了正确的用户名和密码才能操作系统哦!当通过登陆认证后,就进入宾馆管理系统了,在这里,系统给操作员显示一个操作菜单如:1->定房 2->入住 3->退房 4->查询,当操作员选择不同的数字就实现不同的功能。而这些功能的具体实现我就在详细设计中一一介绍了。
主函数流程图
主函数实现代码:
void main() //程序入口从这里开始运行
{char choice='1';initial_room(); //初始化80个房间的信息,分四个等级welcome(); //验证用户登陆,登陆成功显示欢迎信息while(choice=='1'){enter(); //根据用户的选择执行不同的功能cout<<endl;cout<<"继续使用本系统请按\"1\",退出请按\"2\"! ";cin>>choice;cout<<endl;}
}
2 订房功能的c++实现:
作为一个宾馆管理系统,顾客可以提前到宾馆进行房间的预定,操作员能根据用户的需求查询到适合顾客的房间。在这个系统中,这个功能是在book_room函数中实现的,其流程图如下所示。首先,构造一个顾客对象,然后设置该顾客预定客房的天数,设置顾客预定客房标准,根据用户需要的客放标准到相应的标准客房去查找一个一个既没有被预定也没有入住的房间,然后把该住房对象结构体的状态修改为已预定状态,同时将顾客对象的预定房间号属性,也将住房费用计算出来并显示到界面上,最后将住房顾客数家1。
订房功能流程图
订房功能c++代码实现:
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 入住登记功能的c++实现:
这个功能是在函数check_in中实现的,程序首先判断顾客是否订房了,如果预定了房间,则要求输入顾客姓名和身份证号码,然后在所有的顾客中去查找此姓名和身份证号码的顾客,如果匹配了就取得其住房编号,然后根据住房编号计算出该住房的标准,再根据该顾客要求预定住房的天数和该住房标准的价格计算出该顾客要缴纳的房费,同时显示到界面上,这时操作员对顾客进行收费,同时设置顾客的住房费用属性,将该住房的状态修改为以入住状态(state=2);如果顾客没有来得及先预定房间,在这里可以实现先查找空房再入住的功能,同预定房间功能一样,先建立一个顾客对象代表即将入住的顾客,然后设置入住天数,选择住房标准,根据住房标准查询到一个空房,然后设置顾客的住房房间属性,同时直接修改该房间的状态为已入住状态,计算好要收的房费直接执行收费了,将顾客数加1。
入住登记功能流程图
入住登记c++代码实现:
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++;}
}
【C++例程】:宾馆客房管理系统相关推荐
- [附源码]SSM计算机毕业设计宾馆客房管理系统JAVA
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 计算机毕设Python+Vue业俊宾馆客房管理系统(程序+LW+部署)
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- jsp+ssm计算机毕业设计宾馆客房管理系统【附源码】
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 基于c++课程设计-宾馆客房管理系统(附源码)
文章目录 前言 项目简介 涉及知识点 源码获取方法: 系统登陆界面 系统入口 订房实现 入住登记 源码获取方法: 前言 基于c&c++课程设计-宾馆客房管理系统(附源码+可执行程序) 非常完整 ...
- PHP-MYSQL宾馆客房管理系统(附源码)
PHP-MYSQL宾馆客房管理系统(附源码) 主要功能 主要语言 部分界面 获取方式 分为 前台用户和 后台管理员两个角色,功能完善,界面优美,运行良好. (文末有获取源代码方式) 主要功能 用户: ...
- [附源码]java+ssm计算机毕业设计业俊宾馆客房管理系统【源码+数据库+LW+部署】
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 宾馆客房管理系统正文
宾馆客房管理系统正文 1 引言 随着人员流动规模的不断扩大,宾馆数量的急剧增加,有关客房管理的各种信息量也在不断成倍增长.面对庞大的信息量,就需要有客房信息管理系统来提高客房管理工作的效率.通过这样 ...
- 基于宾馆客房管理系统数据库实现
文章只截取部分代码,想要完整源码的小伙伴在评论区留言 目录 1 概述 1.2相关技术分析 2 系统功能设计 3数据库设计 3.1 概念结构设计 3.2逻辑结构设计 3.2.1 E-R图向关系模式的转换 ...
- 宾馆客房管理系统的概述
酒店客房管理系统(Hotel Room Management System)是一种用于管理酒店房间的计算机软件.该系统可以帮助酒店管理人员实现对客房信息的统一管理,包括客房预订.入住.退房.结账等操作 ...
最新文章
- LinearLayout增加divider分割线
- Java命名规范和代码风格
- C++ Templates之模板元编程
- 大数据思维是企业互联网化的思维内核
- java interface 默认_Java8 接口interface默认方法
- “中国工程设计大师”俞加康:为地铁耕耘“时不我待,只争朝夕”
- C++从文件中查找特定的字符串,并提取该字符串
- Python 工匠: 异常处理的三个好习惯
- cp命令显示进度条_教程 | Linux常用命令大全
- 极客大学产品经理训练营 产品思维和产品意识(下) 第5课总结
- 《冰河的渗透实战笔记》电子书,442页,37万字,正式发布!!
- abaqus算出来的转角单位是什么_abaqus中后处理中U的单位是什么?
- 音频功放的失真的原因分析及测量
- 区块链是什么,如何简单易懂地介绍区块链?
- html间超链接怎么做,超链接怎么做
- paas平台_paas平台排名
- 基于C++实现(WinForm)家谱管理系统【100010033】
- macbook air 卸载java,macbook air如何删除程序
- 【Linux】无法读取/挂载U盘
- ftp登录成功,无法取得列表