桂林电子科技大学综合设计说明书用纸1课程设计(论文)说明书题目:简易客房管理系统学院:计算机科学与工程学院专业:计算机科学与技术姓名:学号:指导教师:2014年09月30日目录引言.................................................31系统概述..........................................32需求分析..........................................32.1系统需求..........................................................32.2开发环境..........................................................43详细设计..........................................43.1类的设计..........................................................53.2主函数设计:......................................................63.3客房录入函数设计..................................................73.4入住登记模块设计..................................................83.5客房信息修改模块设计..............................................93.6退房结算模块设计..................................................93.7查询模块设计.....................................................103.8客房信息删除模块设计.............................................113.9保存文件和读入文件功能模块设计...................................114所遇到的问题和分析解决...........................125系统特色及关键技术...............................126结论.............................................14桂林电子科技大学综合设计说明书用纸3引言随着我国经济的迅速发展,人们的生活水平有了显著的提高,宾馆酒店业的竞争也愈来愈激烈。如何在激烈的竞争中生从发展,是每一个宾馆酒店必须面临的问题。因此,采用全新的计算机网络和宾馆管理系统,已成为提高宾馆的管理效率,改善服务的水准备的重要手段之一。在某种意义上,宾馆客房管理方面的信息话已成为现代化宾馆的重要标志。是国家发展必要的软件管理基础。所以,本着这样的需求。此次C++语言课程设计我选择的是简易客房管理系统设计,系统设计采用c++语言在microsoftvisualc++6.0下编译而成。通过本课程设计,使我能更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用C++语言实现所设计的算法,能够利用所学的基本知识和技能,分析和解决简单的程序设计问题,为后续其它课程的学习和应用打下良好基础。1系统概述客房管理系统具有1.建立数据文件(客房信息文件、住客信息文件)功能;2.具有数据输入功能;3.具有数据修改功能;4.具有数据删除功能;5.能查询(查找)一些基本信息(如按房号查询、按姓名查询、空余客房查询等);6.具有多种统计功能(如、某住客应付多少费用等)本系统开发由分析、设计、实施、调试和测试等阶段组成。通过一个菜单界面,提示用户进行信息输入输出,提供客房信息录入,客户入住登记,客房信息修改,客房信息删除,退房结算,查询空房,已住房相关信息的功能,并在最后具有通过文件的形式保存客房信息、住客信息的功能。由此构成一个简单的,供客房工作人员进行客房管理、住客登记、查询一体化的客房管理系统。2需求分析2.1系统需求根据题目要求,要求对客户信息进行输入、输出等操作;在程序中需要浏览客户的信息,应提供显示、统计、查询、修改等操作;另外还应提供键盘式选择菜单实现功能选择。桂林电子科技大学综合设计说明书用纸42.2开发环境系统开发平台:中文windowsxp系统开发工具:MicrosoftVisualC++6.0。系统开发语言:C++3详细设计按照需求分析所得,客房信息系统有以下几个功能模块:1.新建两个类;分别为Customer和Room,其中Customer类中包含住客姓名、身份证号、年龄、入住日期等相关信息,Room类包含房间号,类型,价格等相关信息。2.录入客房信息;先判断是否已存在客房信息,如果已存在,则提示选择是否再次添加;若不存在,则添加客房信息。3.住客登记模块;页面首先显示目前剩余客房信息,后提示客户选择入住房号,登记相关客户信息,登记入住成功。4.修改客房信息;读取保存的客房信息数据,根据客房编号查找所需修改的客房信息,然后根据具体所需,修改成员参数。5.退房结算模块;页面首先显示目前已住客房信息,后提示客户选择退房房号,确认退房后,解除客户与客房关联,并提示需要缴纳房费金额,退房成功。6.查询客房函数;分按编号、类型、客户姓名查找客房信息,同时可以查看当日所有客房、已住客房、剩余客房信息,这样可以更具有人性化来选择所剩余的客房,从而进行日常安排。7.删除客房信息模块;从保存中的文件中读取信息,删除需要删除的信息,完善现在的客房运作。8.退出系统函数;在退出系统的同时,进行文件保存,方便日后再次读取客房信息。根据需求分析,可以对这个系统的设计分为以下几个模块:桂林电子科技大学综合设计说明书用纸53.1类的设计根据需求分析,有客房类和客户类。(1)客户类客户类中的主要成员有:name为客户姓名,id为客户身份证号码,age为年龄,roomnum为入住房号。开始初始化。具体如下:stringname;//姓名stringid;//身份证号stringsex;//性别intage;//年龄introomnum;//入住房号stringruzhum;//入住日期stringruzhut;//入住时间stringlidianm;//离店日期stringlidiant;//离店时间intstaytime;//入住天数(2)客房类客房管理系统客房录入住客登记客房修改退房结算查询信息删除信息房号查询姓名查询类型查询所有客房已住客房所有空房桂林电子科技大学综合设计说明书用纸6客房类中的主要成员有:num是客房编号,type是客房类型,price是客房价格,具体如下:intnum;//房号intprice;//价格stringtype;//类型intrenshu;//入住人数intyajin;//客房押金3.2主函数设计:主界面中显示客房管理系统的全部信息,客房信息的录入,客人入住登记,客房信息的修改,客人退房结算,查询(包括按房间号,按房间类型,按客户姓名查询,同时还有输出所有空房信息,所有客房信息,已住客房信息),删除客房信息。最开始先读入客房、住客文件中的信息,然后通过switch函数调用其它函数实现其它功能。[流程图]:酒店客房管理系统如图1所示。根据choose的值调用各功能模块函数Y输入choose,判断choose是否是1-7显示各功能选项桂林电子科技大学综合设计说明书用纸73.3客房录入函数设计调用该函数模块时,先利用for循环查找是否已经有客房信息,如果已有客房信息,提示是否再次添加,然后依次录入房型、价格等信息。最后通过if,elseif函数实现继续添加客房的功能。如图2所示。桂林电子科技大学综合设计说明书用纸83.4入住登记模块设计入住登记时,先显示当日剩余未住客房情况,供客户选择,后通过cin、cout提示用户,读入客户信息,与客房信息相关联。如图3所示。桂林电子科技大学综合设计说明书用纸93.5客房信息修改模块设计提示根据编号寻找到客房并输出该客房内容,然后询问用户是否要修改客房信息,修改界面如图4所示。图4修改客房信息的分界面3.6退房结算模块设计一个好的客房管理系统,必然要有退房结算功能。该功能通过显示已住客房信息,提示客户输入入住的客房号,搜索客房号,找到房号后,会显示应该收取的房费金额,确认退房后,该客房号信息重新初始化,达到退房目的。如图5所示:桂林电子科技大学综合设计说明书用纸103.7查询模块设计分别实现按房间号、按姓名,和按房间类型查询客房信息的功能,还可实现输出所有客房信息、空房信息、已住房信息的功能。如图6所示。桂林电子科技大学综合设计说明书用纸113.8客房信息删除模块设计提示根据编号寻找到客房并输出该客房内容,然后询问用户是否要删除客房信息通过IF语句,如果该客房下仍有住客,提示是否仍要删除客房、住客信息。,删除界面如图7所示。图7删除客房信息的界面3.9保存文件和读入文件功能模块设计为了方便之后进行维护,应该具备保存客户和客房信息的功能,所以进行该模块设计。在主函数模块中,开始先读入客房、客户信息文件中的信息,分门别类的存进数组中,再进行增加、查找、修改等,后在选择主界面中退出系统选项时,保存已经存入数组的信息。关键代码如下:voidwrite(Room*room,Customer*customer)//保存房间信息{ofstreamStr(客房信息.txt,ios_base::trunc);ofstreamC(客户信息.txt,ios_base::trunc);if(!Str||!C){cout文件存入失败!;return}for(inti=0;i30;i++){if(room[i].num!=0){Strroom[i].num\troom[i].type\troom[i].price\troom[i].renshu\troom[i].yajinendl;}}for(intj=0;j30;j++){if(customer[j].roomnum!=0){Ccustomer[j].roomnum\tcustomer[j].name\tcustomer[j].id\tcustomer[j].sex\tcustomer[j].age\tcustomer[j].ruzhum\tcustomer[j].ruzhut桂林电子科技大学综合设计说明书用纸12\tcustomer[j].lidianm\tcustomer[j].lidiant\tcustomer[j].staytimeendl;}}Str.close();C.close();4所遇到的问题和分析解决1、在最初开始,我先把客房信息和客户信息设置成结构体,但是后来发现,结构体数组初始化有点麻烦,需要用到for循环,于是用了类,然后构造函数初始化客房类和客户类里的相关信息。然后在保存文件函数和读入文件函数模块,我运用了read和write函数直接读取文件和存入文件。但是在存入的时候导致了一系列问题,在保存文件里出现了很多“烫”字,之后上网查了很多信息,但是一直没查到解决的方案,一直调试都没有成功。最后,我不得已用了,两个读取符,一个一个把数组中的字符(串)存入文件中。在存入文件的时候,存入的时候字符与字符之间没有间隔,导致读取的时候,出现一整片读取错误的状况。后来,修改了存入文件中,用‘\t’设置字符跳格之后,读取文件成功。2、在客房录入函数模块中,我设置了客房录入从房间号300开始。但是这样子,遇到了一些问题。比如,虽然在第一次的时候,能正确录入。但是当再