软件工程课程设计酒店客房管理系统_第1页
软件工程课程设计酒店客房管理系统_第2页
软件工程课程设计酒店客房管理系统_第3页
软件工程课程设计酒店客房管理系统_第4页
软件工程课程设计酒店客房管理系统_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数学与计算机学院课程设计说明书课 程 名 称: 软件工程 课 程 代 码: 8404131 题 目: 酒店客房管理系统 年级/专业/班: 09软件工程4班 学 生 姓 名: 学 号: 开 始 时 间: 2011 年 05 月 23 日完 成 时 间: 2011 年 06 月 06 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总 分(100)指导教师签名: 年 月 日学院名称: 数学与计算机学院 课程代码:_8404131_专业: 软件工程 年级: 09级 一、设计题目 客房管理系统二、主要内容本课程设计要求为某酒

2、店开发一个客房管理系统,主要实现登记、预定、结帐、取消预定、续房、转房、预定转入住等功能。三、具体要求及应提交材料具体要求:本课程设计要求学生运用软件工程的思想,严格按照软件生命周期各阶段的目的和任务,完成对系统的分析、设计、编码、及测试。1完成系统的需求分析2完成系统的设计: 针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。(1)导出系统的数据流程图和功能模块图。(2)设计数据库。使用microsoft access创建数据库。确定数据库中数据表的组成。确定数据表中字段的构成、主键字段和有关字段的约束条件等。依靠数据表中主键字段建立数据表之间的关系,并由此建立数据表之间的参照完整

3、性约束。(3)根据功能确定软件模块组成及调用关系。(4)确定每个模块的数据结构及算法。3编码建造模块,在可视化编程环境下,按照软件设计要求制作界面和完成对模块的编码,由此使软件设计具体化为软件作品。4. 测试编写合适的测试用例完成系统的测试工作并分析结果。5编写课程设计报告应提交材料:1上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);2课程设计报告的打印稿和电子稿;四、主要技术路线提示1认真阅读相关知识,完成系统的功能分析和系统设计。2选用access作为dbms。五、进度安排序号设计内容天数1分析设计内容,给出解决方案32创建数据库及建表33可视化界面设计3

4、4对所建数据库进行设计,整理设计思路,编码、测试,写出课程设计报告35指导老师检查设计结果并做成绩评定2总 计14六、参考资料1 张海藩. 软件工程导论. 北京:清华大学出版社,20042 陈明. 实用软件工程基础. 北京:清华大学出版社,20033 殷人昆. 实用软件工程. 北京:清华大学出版社,2003 指导教师 签名日期 年 月 日 系 主 任 审核日期 年 月 日目 录1. 前言 12. 需求分析 22.1. 功能分析 22.2. 方案分析 23. 概要设计 33.1. 数据结构 33.2. 逻辑结构与物理结构 33.3. 功能模块划分 43.3.1结构框图53.3.2程序流图73.3

5、.3模块功能分析及外部设计84. 详细设计 94.1. 数据类型定义 94.2. 主要模块内部设计 104.2.1预订管理功能模块设计 114.2.1.1模块算法 124.2.1.2流程图 134.3.1.3源代码 144.2.2. 入住管理功能模块设计 154.2.2.1. 模块算法 164.2.2.2. 流程图 164.2.2.3. 源代码 164.2.3. 退房管理功能模块16 4.2.3.1. 模块算法 16 4.2.3.2. 流程图 16 4.2.3.3. 源代码 164.2.4. 查询管理功能模块16 4.2.4.1. 模块算法16 4.2.4.2. 流程图16 4.2.4.3.

6、源代码165实现与调试分析165.1实现环境165.2语言选择165.3调试分析166测试分析176.1测试用例及测试结果176.2性能分析187用户手册 18总结 20参考文献 20附录 源程序文件名清单:1.前言酒店,是为客人提供住宿、餐饮、娱乐和其它服务的综合性服务企业,它所接待的客来自世界各地,而且这些客人的生活习惯、消费水平、宗教信仰等各不相同。随着我国旅游业的飞速发展,以及社会生活水平的普遍提高,人们对于酒店消费不断地提出更高、更多样性的要求。如何以酒店企业所拥有的有限的人力、物力、财力和信息资源服务于住店客人,满足客人的各种消费需求,在当今竞争日趋激烈的酒店行业中,是经营好酒店企

7、业的重要问题。酒店经营管理人员不但要掌握科学的管理思想和管理方法来综合的运用酒店资源,还应该采用先进的计算机管理手段处理日益复杂的信息资源,正确、及时地对客源市场信息作出反应和正确的指定经营决策,这样才有可能保证酒店企业在如今激烈的竞争中求得生存和发展。成功的应用先进的计算机管理手段辅助酒店企业的经营管理,不但要求酒店的日常操作模式要符合计算机信息处理的要求,而且需要有相应的管理体系和人员配合。作为酒店的经营管理人员只有充分的掌握酒店的各职能岗位的信息流程和计算机处理的要求,并善于结合两者的要求和长处,才能使想进的计算信息处理技术有效的服务与酒店的经营管理。本课程设计主要解决的是在一个酒店的客

8、房管理中,实现计算机对来客的订房情况,消费情况的统计与登记,实现对酒店住房费用的一次性结算服务,为酒店管理人员关于一定时间段里酒店的住房管理情况与酒店的经营情况提供快捷方便高效的管理手段。在本课程设计中,系统开发平台为windows xp,程序设计设计语言采用vc+,程序运行平台为windows xp。在vc+中可以实现的功能有预定客户管理,客户日常事务登记,住房管理等。通过本课程设计,主要实现对的是对酒店的客房进行管理,使用户能轻松地找到所需要的客房信息,提供订房和退房服务,并对酒店客房的业绩进行统计,以实现服务管理的电子化,自动化,提高酒店客房管理的办公效率,为提高和改善酒店的服务质量提供

9、保证。2.需求分析2.1功能分析经过综合分析,确定了系统应该包括如下功能: 客房信息管理;用户可对酒店客房的相关信息进行管理,包括对客房的基本信息(如客房号,客房价格等)进行检索,录入和修改u 客房订房管理;实现客户对酒店客房的预定要求。酒店客户在可选择预订方式或者是到达酒店后再订的方式进行订房选择,系统用户根据客户的选择,为客户登记订房消息,并将客户的相关信息记录在案。为客户分配合适的客房后,将相应的客房信息更改后也记录在案。订房时,根据客户的类型,信息记录,以及订房方式,所选房间类型,用户作出相应处理。u 客房入住管理;实现客户对酒店客房的预订转入住要求。u 客房退房管理;实现客户的退房要

10、求,并进行费用结算。u 客户信息管理;用户可对入住过酒店的客户信息进行查询,包括对客户的基本信息(如身份证号、客户姓名、联系电话)进行检索。2.2方案分析该系统的最终用户有两种类型:一是顾客,二是客房管理人员。顾客只在宾馆的网站部分有权限,可以预定宾馆房间,对宾馆进行评价等。客房管理人员拥有输入顾客预定、入住和修改客房等信息的权限。此客房管理系统将会对这两种不同类型的用户做不同的功能需求分析并满足其需求。系统需对用户登录进行管理。使用各功能模块时,系统应验证用户身份的有效性,否则要求用户登录。另外,允许用户对自己的密码进行修改。3.概要设计 3.1.数据结构 分析可画出客房管理系统的d层数据流

11、图。由图可知此系统的终端用户酒店顾客和酒店管理人员。其中,酒店用户通过此系统可查询客房信息。而酒店管理人员可以对客户信息、客房信息和房卡账单等进行查询和更新操作。图3.1 总体数据流程图详细说明:u 酒店客户在可选择预订方式或者是到达酒店后再订的方式进行订房选择,系统用户根据客户的选择,为客户登记订房消息,并将客户的相关信息记录在案。为客户分配合适的客房后,将相应的客房信息更改后也记录在案。订房时,根据客户的类型,信息记录,以及订房方式,所选房间类型,用户作出相应处理。u 酒店客户在退房时,系统用户对客户应付金额进行结算后开出发票,并更新相应客房信息。e-r图设计:交易记录入住时间订房时间房间

12、号码身份证号消费总额订房数入住天数退房时间 图3.2交易记录实体顾客身份证号联系电话房间号码姓名消费统计订房时间号图3.3 客户记录实体 客房房间号码客房类型使用状态床位数价格 图3.4 客房实体用户用户名联系电话密码 图3.5 管理人员实体111111n111mnmn用户管理客房客户消费记录交易记录住宿产生交易查询核算账单 图3.6 实体间的联系图3.2逻辑结构和物理结构 通过对上述数据结构的分析,根据酒店管理系统的需求,将以上的e-r图转换为关系模式:u 顾客(身份证号,姓名,电话,订房时间,房间号码,消费统计);u 房间(房间号码,房间类型,床位数,价格,使用状态);u 管理人员(用户名

13、,密码,联系电话);u 交易记录(房间号码,身份证号,订房时间,入住时间,退房时间,入住天数,订房数,消费总额)。3.3. 功能模块划分 3.3.1结构框图 客房管理系统退房管理模块客户信息管理模块客房信息管理模块入住管理模块订房管理模块 图3.7 酒店客房管理系统结构方框图以下为各功能模块的主要功能描述:u 客房信息管理:用户可对酒店客房的相关信息进行管理,包括对客房的基本信息(如客房号,客房价格等)进行检索,录入和修改。u 客房预订管理:实现客户对酒店客房的预定要求。u 客房订房及入住管理:实现客户对酒店客房的订房以及预订转入住要求。u 客房退房管理:实现客户的退房要求,并进行费用结算。u

14、 顾客信息管理:用户可对入住过酒店的客户信息进行查询,包括对客户的基本信息(如身份证号、客户姓名、联系电话)进行检索。3.3.2程序流图412132开始输入用户名和密码输入服务类型预 定入 住退 房查 询退 出 系 统返回用户界面 图3.8 系统流程图3.3.3模块功能分析及外部设计u 订房管理功能:酒店顾客可通过这个功能在未到达酒店之前先在酒店中预订住房,预订方式可通过电话或者请求他人,但应带有相关证件。顾客在预订房间之后须在系统设定期限内入住,否则取消预订。u 入住管理功能:顾客在预订转登记或者已登记好后,就进入本环节,顾客在交纳定金后可获得所订房间的房卡并入住房间。u 退房管理功能:本系

15、统对结账方式如下规定:每个房间的消费总额由登记身份证号的顾客结账。结账方式为现金及银行卡结合的方式,不接受挂账。u 信息查询功能:本模块实现的是管理人员对顾客消费信息以及酒店内客房的基本信息进行管理的操作,基本操作为查询,录入和修改,客房的基本信息包括:客房的房间号,房间类型,房间状态。顾客信息包括顾客当前所住的房间号码和其姓名,身份证号等信息。4. 详细设计4.1. 数据类型定义struct room int number; int dank; int price; int state; ;class customer public:customer();void set_name(char

16、 *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;v

17、irtual customer();private: char name10,id19; int room_number;int prepaid;int change;int day;4.2. 主要模块内部设计 4.2.1预订管理功能模块 4.2.1.1模块算法 顾客输入其信息并选择了房间类型时,系统对顾客所选的房间类型逐一检查其房间状态,寻找到第一个房间状态为空(即0)的房间,则取出房间号码告知顾客预定成功并对其进行消费金额计算。最后将取出的房间的状态改为1(即已订),并将该顾客的个人信息存入系统中。 4.2.1.2流程图客户信息登记酒店可用房间分配计算消费总额提交数据酒店是否有充足空房告知

18、客户并取消服务yesno 图4.1 顾客预定流程图4.2.1.3源代码void book_room()customeri=new customer;int room_standard,day;cout请您选择预定房间的标准:n; coutroom_standard; coutday; customeri-set_day(day);switch(room_standard) int n;case 1:cout住房费用总共为: day*150元n; /计算住房费用for(n=0;n20;n+) /从第一个级别的房间中查找一个空闲的房间if(roomn.state=0) /state=0表示该住房没

19、有被预定的cout预定成功!您的房间号码为: roomn.numberset_room_number(roomn.number);break; else cout”此类型房间已满!n”;break; case 2:cout住房费用总共为: day*200 元n; for(n=20;n40;n+)if(roomn.state=0)cout预定成功!您的房间号码为: roomn.numberset_room_number(roomn.number);break; else cout”此类型房间已满!n”;break; case 3:cout住房费用总共为: day*300 元n; for(n=40

20、;n60;n+)if(roomn.state=0)cout预定成功!您的房间号码为: roomn.numberset_room_number(roomn.number);break; else cout”此类型房间已满!n”;break; case 4:cout住房费用总共为: day*600元n; for(n=60;n80;n+)if(roomn.state=0)cout预定成功!您的房间号码为: roomn.numberset_room_number(roomn.number);break; else cout”此类型房间已满!n”;break; i+; /住房的顾客数加4.2.2入住管理

21、功能模块 4.2.2.1模块算法首先判断顾客是预订转入住还是直接订房入住。若该顾客是预订转入住则提示顾客输入相关信息,并判断是否存在该顾客的预订信息。若存在则计算其欲消费总额收取定金并将房间卡交给顾客,最后将该房间的状态由已订改为已入住。并将入住的信息存入系统中。 4.2.2.2流程图该顾客是否已订房间yesno按客户要求查询酒店客房顾客输入姓名和身份证号yes顾客身份确认顾客缴纳定金分给顾客房间钥匙提交数据告知顾客无预定信息no客户信息登记酒店是否有充足空房告知客户并取消服务酒店可用房间分配计算消费总额提交数据yes 图4.2 顾客入住流程图 4.2.2.3源代码/入住登记*void che

22、ck_in() char name110,id119; int ding_or_no,prepaid; cout订了 2-没订) ; cinding_or_no; if(ding_or_no=1)cout请输入顾客的姓名:name1;cout请输入顾客的身份证号码:id1;for(int j=0;jget_name(),name1)=0)&(strcmp(customerj-get_id(),id1)=0) /查找该顾客的定房信息int num=customerj-get_room_number(); /取得定房的房间号cout顾客name1今天入住本宾馆! 房间号码为: numget_day

23、()*150;customerj-set_prepaid(prepaid);cout请收房费prepaid元整!get_day()*200;customerj-set_prepaid(prepaid);cout请收房费prepaid元整!get_day()*300;customerj-set_prepaid(prepaid);cout请收房费prepaid元整!get_day()*600;customerj-set_prepaid(prepaid);cout请收房费prepaid元整!endl;room59+num%100.state=2;break;break; else cout预订信息不

24、存在!入住失败!n; else customeri=new customer;int room_standard,day;cout请您选择预定房间的标准:n; coutroom_standard; coutday; customeri-set_day(day);switch(room_standard) int n;case 1:prepaid=day*150;customeri-set_prepaid(prepaid);cout请收房费prepaid元整!n; for(n=0;n20;n+)if(roomn.state=0)cout入住房间号码为: roomn.numberset_room_

25、number(roomn.number);break;break; case 2:prepaid=day*200;customeri-set_prepaid(prepaid);cout请收房费prepaid元整!n; for(n=20;n40;n+)if(roomn.state=0)cout入住房间号码为: roomn.numberset_room_number(roomn.number);break;break; case 3:prepaid=day*300;customeri-set_prepaid(prepaid);cout请收房费prepaid元整!n; for(n=40;n60;n+

26、)if(roomn.state=0)cout入住房间号码为: roomn.numberset_room_number(roomn.number);break;break; case 4:prepaid=day*600;customeri-set_prepaid(prepaid);cout请收房费prepaid元整!n; for(n=60;n80;n+)if(roomn.state=0)cout入住房间号码为: roomn.numberset_room_number(roomn.number);break;break; i+;4.2.3.退房管理功能模块4.2.2.1模块算法 顾客提出结账要求时

27、输入其姓名和身份证号,此时系统内部自动查询该顾客所住的房间号码和该房间的类型,输入其实际住房时间,系统自动结算其消费总额输出其房号和房间类型和计算后实际应收的费用,自动和顾客的预交金额做比较,若实际消费低于预收金额则退还顾客多收的费用,若少于则输出顾客应补交的费用,最后确认核算清楚,退出该功能。4.2.2.2流程图客户提出结账要求结算客户消费金额客房状态检查收取相应金额或退出多余定金更新相应信息提交数据 图4.4 顾客退房流程图4.2.3.3源代码void check_out()char name210,id219;int standard,j,room_number,day1,day2,da

28、y;coutname2id2; coutday2; for(j=0;jget_name(),name2)=0)&(strcmp(customerj-get_id(),id2)=0)room_number=customerj-get_room_number();standard=room_number/100; day1=customerj-get_day();day=day1-day2;switch(standard) case 6: cout顾客的房间号是room_number :为单人间,每天150元n;cout该顾客预付了房费 get_prepaid()元, 实际消费 day2*150元

29、整!n;cout0)cout请退给该顾客 day*150 元整!n; if(day0)cout请补收该顾客住房费 -day*150 元整!n;break;case 7:cout顾客的房间号是room_number :为单人间,每天200元n;cout该顾客预付了房费 get_prepaid()元, 实际消费 day2*200元整!n;cout0)cout请退给该顾客 day*200 元整!n; if(day0)cout请补收该顾客住房费 -day*200 元整!n;break; case 8:cout顾客的房间号是room_number :为单人间,每天300元n;cout该顾客预付了房费 g

30、et_prepaid()元, 实际消费 day2*300元整!n;cout0)cout请退给该顾客 day*300 元整!n; if(day0)cout请补收该顾客住房费 -day*300 元整!n;break; case 9:cout顾客的房间号是room_number :为单人间,每天600元n;cout该顾客预付了房费 get_prepaid()元, 实际消费 day2*600元整!n;cout0)cout请退给该顾客 day*600 元整!n; if(day0)cout请补收该顾客住房费 -day*600 元整!n;break; coutendl;coutaccount;if(acco

31、unt=1)for(int k=0;kget_room_number() roomk.state=0;i-;for(;ji;j+)customerj=customerj+1;delete customeri; 4.2.4信息查询功能模块4.2.4.1模块算法顾客查询:当选择了顾客查询时会出现按照姓名查询和按照身份证号查询两项。无论选择哪种查询方式均要输入系统所提示的输入信息,输入后系统内部对顾客姓名或者身份证号进行匹配,匹配成功时将输出所匹配结果,其中包括该顾客的姓名,身份证号和所住房间号码。客房查询: 当选择了客房查询时系统内部自动从第一个客房开始搜索,搜索每个客房的状态,最后根据客房的三个

32、不同状态将客房分类输出。 4.2.4.2流程图 顾客信息查询客房信息查询按姓名查询身份证号查询输入查询目标输出顾客入住信息输出房间号码及其状态1212 图4.5 信息查询功能模块流程图 4.2.4.3源代码/信息查询*void inquire() char inquire_choice; cout* 1. 房间查询 *n;cout* 2. 顾客查询 *n; coutinquire_choice; if(inquire_choice=1) int j,k=0; coutendl; cout下列房间还没人预订,也没人入住:endl; for(j=0;j80;j+) if(roomj.state=0

33、) if(k%10=0) coutendl; coutroomj.numbert; k+; coutendl; coutendl; k=0; cout下列房间已预订:endl; for(j=0;j80;j+) if(roomj.state=1) if(k%10=0) coutendl; coutroomj.numbert; k+; k=0; coutendl; coutendl; cout下列房间有人入住:endl; for(j=0;j80;j+) if(roomj.state=2) if(k%10=0) coutendl; coutroomj.numbert; k+; coutendl; c

34、outendl; else if(inquire_choice=2) cout*1. 按姓名查询 *n; cout*2. 按身份证号查询*n; coutinquire_choice; if(inquire_choice=1) char name310; cout请输入顾客的姓名: name3; for(int j=0;jget_name(),name3)=0) coutname3的住房信息如下:n; coutt房间号为: get_room_number()endl; coutt预付房费为: get_prepaid()endl; if(inquire_choice=2) char id310;

35、cout请输入顾客的姓名: id3; for(int j=0;jget_id(),id3)=0) coutget_name()的住房信息如下:n; coutt房间号为: get_room_number()endl; coutt预付房费为: get_prepaid()endl; 5.实现与调试分析5.1. 实现环境 硬件: 装有windowsxp的微型计算机。软件: microsoft visual c+6.0。5.2语言选择此系统的源代码编写采用的c+语言,因为c+是面向对象的程序语言,具有良好的封装性,使用起来方便,一般不会牵一发而动全身。5.3调试分析 调试时发现此程序中有很多地方没有输入

36、错误的提示。具体如下:l 在void book_room()预定房间函数中,因为初始化了80个房间,不存在房间不足的问题,但若放在酒店中使用时则会有此情况发生,这时就应该有提示信息,告诉用户,所选类型的房间已满。改进方式:在void book_room()中每个case中if语句下添加else 输出提示信息“此类型房间已满!”。l 在void check_in()入住函数中,选择已订,输入顾客信息有误的情况下未出现错位提示信息,使用户退出的原因不明确。 改进方式:在void check_in()中顾客姓名匹配的if语句结束后,添加else 输出提示信息“预定信息不存在!入住失败”。6.测试分析 6.1测试用例及测试结果功能模块 合法等价类非

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论