1一、课程设计的目的1)学习综合运用C高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。2)全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。3)掌握程序设计中的常用算法和C语言的编程技巧和上机调试程序的方法。4)在参与一系列子项目的实践过程中,提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。二、课程设计的任务按照如下要求,运用C++语言,编写一套可用的较为完善的宾馆住宿管理系统软件(两人分模块合作)1)对宾馆基本信息【房间数量、房间类别(标间、单间、套房)、收费标准等】在适当范围内自行规定。2)能够实现预定登记、入住登记、退房结算等功能;房间状态(空房、入住、预定)能够以一定方式直观地表现。3)能够录入住宿人员信息、计算客户消费总额并生成账单,账单信息存入到磁盘文件当中去。4)能够相对灵活地查询房间状态、入住情况、空房情况、预订情况等内容。5)能够产生各类报表,如房间信息、入住信息、消费表单等在磁盘文件当中可以查看它们的信息。2三、系统设计方案3.1系统详细描述3.1.1系统设计背景随着人民生活水平的提高,旅游出行的人越来越多,宾馆的客流量不断增加,普通的手写登记太过复杂经常出现信息丢失,也不适合现在的节约型社会的发展,宾馆在正常运营中需要对客房资源、顾客信息、退房信息等进行管理,利用客房管理系统及时了解各个环节中信息的变更,有利于提高管理的效率。本项目作为c++课程设计的训练项目提出,目的是为了提高同学们系统的开发,则提高大家的实践能力。所以开发一个符合自身宾馆实际情况的工作平台是十分必要的。3.1.2系统设计详细信息系统使用对象设定为百康宾馆。百康宾馆是一家乡镇中小型宾馆,三层建筑,拥有各类房间共20间。其中一层均为单人间,共9间,房号101-109;二层为均双人间,共6间,房号201-206;三层均为豪华套房,共5间,房号301-305。各类房间均设有电视、橱柜、内网电话、风扇、暖气等基础设施,24小时热水供应,可淋浴。一层前台处设有便捷商店,当时结算,不计入住宿账单。可通过内网电话购买,免费送至房间。A、收费标准:有按天计费和按小时计费两种收费标准。按天计费,标准为单人间170元/天,双人间280元/天,豪华套房500元/天。按小时计费,标准为单人间20元/小时,双人间30元/小时,豪华套房50元/小时。B、计时标准:按天计费时,从0时至次日0时计一天,不满一天按一天计算;按小时计费时,不满一小时按一小时计费。(特殊情形的优惠政策不在本设计考虑范围之3内)C、定金标准:入住定金按(预计入住时间*其单日房费+500元)收取,退房时充作房费和房屋设施折损费(抵偿损坏的房内设施),多退少补。预定定金(按预计订房时间*对应房间按天计算住宿价格*40%)收取,若到时不入住且不续订,则不再退还;若到时入住,充作入住定金,多退少补。电话预定无需缴纳定金,但不确保届时有空房间。注:定金数额可在以上标准数额之上,退房结算时多退少补。退房时,室内设施经确认无损坏情况,则不收取房屋设施折损费。3.2功能模块划分3.2.1功能模块描述根据任务内容要求及宾馆相关情况等信息,百康宾馆住宿管理系统需要实现查询功能(包括客房总体使用情况查询、已入住客房查询、已预订客房查询、闲置房间信息查询等查询方式),订房登记,入住登记,退房结算等四大基本功能。系统应实现对各类信息的灵活查找,客户信息的录入、保存与调用,自动结算并生成账单等操作。为了简化前台人员操作并提高其工作效率,还应实现开始前初始化询问,订房或入住登记时自动显示当前闲置房间,入住前询问是否已预订,输入错误信息时进行提醒等人性化功能。由以上分析,将系统主要分为以下四大功能模块,如图3.1所示:1)客房查询:包括查询客房总体使用情况、查询当前闲置房间信息、查询已入住房间信息、查询已预定房间信息等查询功能;2)订房登记:包括显示当前闲置房间信息、登记预定信息等功能;3)入住登记:包括显示当前房间总体使用情况、询问是否预定过房间、登记入住人信息等功能;4)退房结算:包括选择结算方式、输入结算时间、计算住宿费用等功能。4图3.1功能模块结构图注:我与网络工程专业102001班王维康同学合作,共同完成本次有关于宾馆住宿管理系统的程序设计,我负责实现入住登记模块、退房结算模;王维康同学负责编写客房查询和订房登记两个模块的相关内容。3.2.2输入项以下输入项均为键盘输入:num——房间号,intkongxian——房间是否空闲,intname[20]——名字定义,charname[20]ID[20]——身份证号(18位阿拉伯数字),charID[20]lianxifangshi[15]——联系方式(11位阿拉伯数字),charlianxifangshi[15]yajin——押金,intyudingriqi——预定日期(日期均为8位阿拉伯数字,格式为年月日),longruzhushijian——入住日期,long百康宾馆住宿管理系订房登记入住登记客房查询退房结算客房总体信息查询已预订房间信息查询已入住房间信息查询闲置房间信息查询5tianshu——预计天数,intjiezhiriqi——截止日期,longp——是否初始化(0或1),intchose——选择主菜单(1,2,3,4或5),intt——计费方式(1或2),inti——子菜单选择(1,2,3,4或5)(不同模块可能定义不同),inta——是否预定过房间(在ruzhudengji()定义的),int3.2.3输出项房间号,int房间类型,charleixing[10]价格(元/天),int价格(元/小时),int是否空闲,int客人姓名,charname[20]身份证,charID[20]联系方式,charlianxifangshi[15]押金(元),int预定日期,long入住时间,long预计天数,int截止日期,long四、系统实现与测试4.1主菜单模块实现64.1.1主菜单流程图开始结束输出“提示”输出“提示”输入chose值P是否为1Chose!=0调用chushihua()输出“提示”输入“按任意键”YNN输入“p值”是否为“1”调用订房登记函数调用入住登记函数调用退房结算函数调用房间查询函数Y是否为“2”Y是否为“3”调用Menu_Display()函数是否为“4”YYYNN是否为“5”NNY输出“提示”N7图4.1主菜单流程图4.1.2主菜单代码voidMenu_Display(){system(cls);cout\t\t###########################################endl;cout\t\t#@欢迎使用百康宾馆管理系统@#endl;cout\t\t#请输入您所需要的功能:#endl;cout\t\t#1.客房查询2.订房登记#endl;cout\t\t#3.入住登记4.退房#endl;cout\t\t#5.退出#endl;cout\t\t#感*谢*您*的*使*用#endl;cout\t\t###########################################endl;}voidchushihua(){inti[3]={1,0,1},k=0;for(;k20;k++){hotel[k].num=i[0]*100+i[1]*10+i[2];strcpy(hotel[k].ID,0);hotel[k].jiezhiriqi=0;hotel[k].kongxian=0;strcpy(hotel[k].lianxifangshi,0);strcpy(hotel[k].name,0);hotel[k].ruzhushijian=0;hotel[k].tianshu=0;hotel[k].yudingriqi=0;switch(i[0]){case1:{hotel[k].jiage=17020;strcpy(hotel[k].leixing,单人间);break;}case2:{hotel[k].jiage=28030;strcpy(hotel[k].leixing,双人间);break;}case3:{hotel[k].jiage=50050;strcpy(hotel[k].leixing,套房);break;}}if(k==8)i[0]++,i[2]=0;if(k==14)8i[0]++,i[2]=0;i[2]++;}fstreamxieru(宾馆房间信息.txt,ios::out);xieru房间号类型价格是否空闲姓名身份证号联系方式押金预定日期入住时间天数截止日期endl;for(intx=0;x20;x++){xieruhotel[x].num''hotel[x].leixing''hotel[x].jiage''hotel[x].kongxian''hotel[x].name''hotel[x].ID''hotel[x].lianxifangshi''hotel[x].yajin''hotel[x].yudingriqi''hotel[x].ruzhushijian''hotel[x].tianshu''hotel[x].jiezhiriqiendl;}xieru.close();}voidmain(){intp=0;cout是否要初始化房间信息?;cout(是请输入1,否请输入0)endl;cinp;if(p==1)chushihua();intchose;Menu_Display();cout请输入选项:;cinchose;while(chose!=0){switch(chose)//用switch语句判断选择菜单的功能{case1:search_message();break;//客房查询case2:dingfangdengji();break;//订房间case3:ruzhudengji();break;//入住房间case4:tuifang();break;//退房case5:exit(0);default:cout输入错误,请重新输入endl;//提示错误命令}cout\t\t###########################################endl;cout\t\t#@欢迎使用百康宾馆管理系统@#endl;cout\t\t#请输入您所需要的功能:#endl;9cout\t\t#1.客房查询2.订房登记#endl;cout\t\t#3.入住登记4.退房#endl;cout\t\t#5.退出#endl;cout\t\t#感*谢*您*的*使*用#endl;cout\t\t###########################################endl;cout请输入选项:;cinchose;while(chose==0){cout输入错误,按任意键退出程序:endl;exit(0);}}}4.1.3主菜单模块测试主菜单界面中显示客房管理系统的功能选项模块如图4.2所示:图4.2主菜单4.2入住登记模块实现104.2.1入住登记流程图a==1hotel[i].num==b开始结束输出“房间使用情况”输出“提示”输入“房间号”输出“提示”预订房客人信息输入“所要填写的信息”登记成功输出“房间信息”输入“房间号”信息存储到磁盘文件中输入客人的基本信息输出“提示”输出“提示”输出“提示”输出“提示”YNYN输入