版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 .课题简介032 .设计方案043 .具体设计及截屏图054 .关键代码分析105 .测试156 .课题总结与体会177 .参考文献188 .源代码191 .课题简介客房管理系统是根据某酒店对客房管理的实际情况进行编写的,主要目的是为了方便酒店对客房的实际情况进行集中的查询与管理工作,以提高整个酒店的工作。经过电脑及生活中的调查研究,根据客人的经济水平和生活理念,客房的类型已趋向于多样化,有标准房,单人房,VIP问,甚至总统套房。而初步设定通过客房的编号、类型、价格来定位一个客房的管理系统。客房是一个对外服务的内容,为了客人的住宿要求,所以系统需要实现客房信息的录入、修改和删除功能。客人对
2、剩余客房需要进行选择,系统必须实现相应的查询、排序和输出功能,使客人择优而居。本次课程设计需要实现的是一一客房管理系统的链表实现。主要实现的功能包括:客房信息的录入、修改、删除、剩余客房信息查询、排序、输出。客房信息可写入文件,也可从文件中读取。客房信息涉及的数据有客房编号、客房类型、定房日期、客房内容(设施)、定房有效期等。2 .设计方案按照需求分析所得,客房信息系统有以下几个功能模块:1.添加录入信息模块;编写指针摸板,定义临时的客房间数,包括其各项类的成员,编号,类型,定房日期,价格,客房内容,入住天数。3 .修改客房信息模块;读取保存的客房信息数据,根据客房编号查找所需修改的客房信息,
3、然后根据具体所需,修改成员参数,并保存。4 .删除客房信息模块;从保存中的文件中读取信息,删除需要删除的信息,完善现在的客房运作。5,查询剩余客房函数;分按编号、类型、价格查询,这样可以更具有人性化来选择所剩余的客房,从而进行日常安排。6 .排序剩余客房模块;根据具体所需排序,可以是编号、价格或者类型,本系统中根据的是客房入住的天数来排序。7 .输出剩余客房函数;输出根据系统所需排序后的客房信息,本系统中是根据了客人入住的有效期即天数来及时了解空出的房间。由上述需求分析可得,系统的功能模块图如图1所示。2.具体设计及截屏图1、类的设计根据上述需求分析,有客房类和链表类。(1)客房类系统研究客房
4、cGuestroom类中成员:IDSIZE是客房编号,TypeSIZE是客房类型,BookSIZE是定房日期,PriceSIZE是每间客房的价格,StayTimeSIZE是定房的有效期,FunctionSIZE是客房的主要内容(如浴室、卫生间、网线等设施),标志flag和构造函数cGuestroom()。客房类的UMLJH如(图2)所示:classcGuestroom+IDBUFSIZE:char/客房编号+TypeBUFSIZE:char/客房类型+BookBUFSIZE:char/定房日期+FunctionBUFSIZE:char/客房内容+StayTime:int/定房有效期+flay:
5、bool/标志+cGuestroom()构造函数初始化(2)链表类在tList类中,有成员:构造函数tList(),创建链表Create(),判断链表是否为空的函数Empty()const,从尾部插入一个元素的函数Insert(constTe),返回第i个节点的函数GetcNode(inti),在链表中查询某个值的函数boolFind(constTe),析构函数tList(),头节点head。链表类的UMLjffl如(图3)所示:tList+tList();+Create():void+Empty()const:bool+Insert(conste:T):void+*GetcNode(i:in
6、t):cNode+Find(conste:T):bool+tList();+*head:cNode2 .界面设计:(1)主界面的设计主界面中显示客房管理系统的全部信息,客房信息的录入,客房信息的保存,客房信息的修改,客房信息的删除,剩余客房的查询,剩余客房的排序,剩余客房的输出,客房信息管理系统如图4所示。图4王界面(2)分界面:客房信息的录入的设计提示输入客房编号,客房类型,客人定房日期,客房价格,客房中的主要内容,客房定房的有效期。客房信息录入如图5所示。匚产工潼在长口ie上125UebucXwoxkl3.n*小琴多,交+不3 .苫青情意的隹改4 .昼可二号的删峰二第除客房信息的去调百一中
7、善客游怙息的我丰7 .中鹏需肩信忌g禧出日,:良tt厚约憎蛔J量_*_ 老务mm:l要有 一 k的龙定裔A雌 SA.IH 士1.;1,-.;由“ 清卷按图5录入客房信息的分界面(3)分界面:客房信息的保存的设计针对第一步客房信息的输入及以后信息的修改、删除做一个文件保存。客房信息保存如图6所小。图6保存客房信息的分界面(4)分界面:客房信息的修改的设计提示根据编号进行客房信息修改,输入要修改的内容,如不修改的项目就远洋输出。客房信息修改界面如图7所示。nFt就曜能八上心口出klee?刷K石席佰E/韬出U-息山祭烧A S 拉容 , n 3 可交 n n A JK 8 一 a 4 完明IL; ia
8、-al k J u - R累寺工”二荀 苕:1的喜:3:dTH-士34转史客 女容k卉名片T 西位广竹的f1.人 矍一人腭唐人,. 号 溜膏普 总 布人人九“X丸 菩 下士*=*就- 1 L.uk tml- - hl IUL.-TTTT图7修改客房信息的分界面(5)分界面:客房信息的删除的设计提示进入删除截面,根据客房编号查找所需删除的客房信息。客房信息的删除界面如图8所示。4.宅莺?总的朋生晨雨市齐E信用的己闻 率金客三信归狗忖芹7.*霄广信息的猿出H-限比系或谪4择 4E后人你糕找均春跨覆号7 域工踞施解露,是二an央 1 s OJ器 ia.B内口I 工世时主数 *L9的有1 声居。Fl=
9、 事2?或 m图8删除客房信息的分界面(6)分界面:剩余客房信息的查询的设计在保存完所修改或删除的客房信息,查询剩余的客房信息,按提示进入剩余客房查询界面,有按编号、类型、价格查询,根据拥护自主选择。查询剩余客房的信息界面如图9所示。会F:1课前能廿AVilrklJAHnilmS.nrk12J.5Kft1:本客庆铜号刍酱箝麻客店本个理行型嗖肝卷查询书退出吉他你速挥力源怎赤去我的客鹿条亏:1我生了-遑客房的空比是:J i tr喋 4:22用 空flA富8 JIil-OJE rr&E . 容定研书A.;字型:blaQ j inn 1足了第;广 1力弓0 i内皆工yus hi. :再歧期:z贡别靠住
10、其唐洞上:2.-吧耳 ;亍11.|1百 7第屯丁旺m 这 曳定濡内有 音f宜.任. 容rr主. 一图9查询客房信息的分界面(7)剩余客房信息的排序的设计按提示进行剩余客房的排序,本系统中是以客人的入住天数排序,显示屏幕如图10所示。(8)分界面:剩余客房信息的输出的设计在排序完后的剩余客房中,输出所有客房的信息,以检验客房的经营情况。剩余客房信息输出界面如图10所示。可刈*F:*fl!1fs蜒*|、-口tIe12*1。1口矗KiirkI23_exe-;:居编号=图10输出剩余客房的信息4.关键代码分析(1)系统的登录在主函数中,输出客房信息系统的各功能提示。选择需要执行功能的序号,由switc
11、h判断和选择所需要执行的功能。选才1:执行客房信息的录入;选才?2:执行保存客房的信息;选才3:执行教工基本信息的保存;选才4:执行教工基本信息的删除;选才?5:执行教工工资按从高到低排序;选择6:执行教工基本信息的修改;选择7:执行教工基本信息的查询;选择8:退出;主函数:intmain()创建链表nn;tListtListMedic;tListMedic.Create();/ReadData(&tListMedic);while(1)coutnn客房管理系统coutnn;cout1.客房信息的录入nn;cout2:客房信息保存nn;cout3.客房信息的修改nn;cout4.客房信息的删除
12、nn;cout5.剩余客房信息的查询nn;cout6.剩余客房信息的排序nn;cout7.剩余客房信息的输出nn;cout8.退出系统nn;coutchoose;用户选择输入客房客房信息修改客房switch(choose)/case1:AddtheGuestroom(&tListMedic);break;/信息case2:SaveData(&tListMedic);break;/信息保存case3:ModifytheGuestroom(&tListMedic);break;/信息case4:DeletetheGuestroom(&tListMedic);break;/删除客房信息case客房信
13、息5:FindtheremainGuestroom(&tListMedic);break;/查询剩余case6:RanktheremainGuestroom(&tListMedic);break;/排序剩余客房信息case7:OutputtheremainGuestroom(&tListMedic);break;/输出剩余客房信息case 8:exit(0);/退出default:break;return0;在读取数据库中,可以从以有的文件中读取数据到程序中,避免了程序的重复输入数据,有利于后面的信息修改、删除等功能。读取数据库:voidReadData(tList*tListMedic)/c
14、harbufBUFSIZE;ifstreamifile(Guestroom.txt,ios_base:in);对象if(!ifile)cerr读取时打开文件出错!Insert(Guestroom);cout读取数据成功!nn;ifile.close();/return;读取数据库/ 创建一个输出文件流遍历文本,读取数据读取客房编号读取客房类型读取提前定房日期读取价格读取客房主要内容读取入住有效期关闭文件(2)信息的添加客房信息的录入,创建cGuestroom类和tempGuestroom对象,调用构造函数,输入客房的房间编号、房间类型、定房日期、房间价格、房间内容及个人的入住有效期,通过Ins
15、ert函数实现。voidAddtheGuestroom(tListcGuestroomtempGuestroom;cout下面开始添加客房信息n;couttempGuestroom.ID;couttempGuestroom.Type;couttempGuestroom.Book;couttempGuestroom.Price;couttempGuestroom.Function;容couttempGuestroom.StayTime;效期tempGuestroom.flag=true;tListMedic-Insert(tempGuestroom);cout添加成功!n;*tListMedic
16、) /输入客房函数 定义临时客房/读入客房编号/读入客房类型/读入定房日期/读入价格/读入主要内/读入入住有system(pause);system(cls);(3)信息的删除删除客房信息,按要求提示输入要删除客房的房间编号,第一个节点的指针p。如果指针创建成功,开始用while和定义一个指向链表if 语句实现 p 指向的节点的客房编号与存在的客房编号的比较。如果相同,输出该客房的信息并删除;如果没有相同的,提示没有所查询的房间。voidDeletetheGuestroom(tList*tListMedic)/删除客房信息cinid;编号/读取客房charidBUFSIZE;coutn请输入你
17、要查找的客房编号:boolflag=false;intcount=0;cNode*p;p=tListMedic-head-next;while(p)if(strcmp(p-data.ID,id)=0&p-data.flag)count+;flag=true;break;p=p-next;if(flag=false)cout对不起,你所查找的客房延长了住房日期!n;/如果不能删else/如果能删count-;cout找到了,该客房的原始信息是:n;coutnn客房编号:data).IDt客房类型:data).Typentt定房日期:data).Bookntt价格:data).Price;cout
18、ntt客房的主要内容:data).Functionntt入住有效期:data).StayTime;coutdata).flag=false;cout该客房的信息删除成功!n;coutendl;system(pause);system(cls);return;(4)信息的修改按提示输入要修改的客房的客房编号,定义一个指向链表第一个节点的指针p。如果指针创建成功,开始用while和if语句实现p指向的节点的客房编号与存在的客房编号的比较。如果相同,提示输入房间的各个信息;如果没有相同,提示没有所查询的客房。voidModifytheGuestroom(tList*tListMedic)/修改客房信
19、息charidBUFSIZE;coutid;/读取客房编号boolflag=false;cNode*p;p=tListMedic-head-next;while(p)if(strcmp(p-data.ID,id)=0&p-data.flag)flag=true;break;p=p-next;if(flag=true)cout找到了,该客房的原始信息是:n;coutnn客房编号:data).IDt客房类型:data).Typentt定房日期:data).Bookntt价格:data).Price;coutntt客房的主要内容:data).Functionntt入住有效期:data).StayTi
20、me;coutn下面开始修改该客房的信息:n;cGuestroomtempGuestroom;/房couttempGuestroom.ID;/编号couttempGuestroom.Type;/类型couttempGuestroom.Book;/日期couttempGuestroom.Price;/couttempGuestroom.Function;/的主要内容couttempGuestroom.StayTime;/有效期tempGuestroom.flag=true;p-data=tempGuestroom;cout修改成功!;coutendl;system(pause);system(c
21、ls);return;定义临时客读入客房读入客房读入定房读入价格读入客房读入入住5 .测试程序测试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。原程序:voidRanktheremainGuestroom(tList*tListMedic)/排序剩余客房cNode*p,*q;cGuestroomremainGuestroom;for(p=tListMedic-head-next;p!=NULL;p=p-next)for(q=p;q!=NULL;q=q-next)if(p-data.Priceq-data.Price)remainGuestroom.
22、flag=p-data.flag;strcpy(remainGuestroom.ID,p-data.ID);strcpy(remainGuestroom.Type,p-data.Type);strcpy(remainGuestroom.Book,p-data.Book);strcpy(remainGuestroom.Price,p-data.Price);strcpy(remainGuestroom.Function,p-data.Function);remainGuestroom.StayTime=p-data.StayTime;p-data.flag=q-data.flag;strcpy(
23、p-data.Function,q-data.Function);strcpy(p-data.ID,q-data.ID);strcpy(p-data.Type,q-data.Type);strcpy(p-data.Book,q-data.Book);p-data.StayTime=q-data.StayTime;q-data.flag=remainGuestroom.flag;strcpy(q-data.Function,remainGuestroom.Function);strcpy(q-data.ID,remainGuestroom.ID);strcpy(q-data.Type,remai
24、nGuestroom.Type);strcpy(q-data.Book,remainGuestroom.Book);q-data.StayTime=remainGuestroom.StayTime;编译成功后开始运行,信息录入后,不能在文档中正确排序输出,经Debug调试,发现,以客人的入住天数排序来及时调出空余客房为最佳选择。voidRanktheremainGuestroom(tList*tListMedic)/排序剩余客房cNode*p,*q;cGuestroomremainGuestroom;for(p=tListMedic-head-next;p!=NULL;p=p-next)for
25、(q=p;q!=NULL;q=q-next)if(p-data.StayTimeq-data.StayTime)remainGuestroom.flag=p-data.flag;strcpy(remainGuestroom.ID,p-data.ID);strcpy(remainGuestroom.Type,p-data.Type);strcpy(remainGuestroom.Book,p-data.Book);strcpy(remainGuestroom.Price,p-data.Price);strcpy(remainGuestroom.Function,p-data.Function);
26、remainGuestroom.StayTime=p-data.StayTime;p-data.flag=q-data.flag;strcpy(p-data.Function,q-data.Function);strcpy(p-data.ID,q-data.ID);strcpy(p-data.Type,q-data.Type);strcpy(p-data.Book,q-data.Book);p-data.StayTime=q-data.StayTime;q-data.flag=remainGuestroom.flag;strcpy(q-data.Function,remainGuestroom
27、.Function);strcpy(q-data.ID,remainGuestroom.ID);strcpy(q-data.Type,remainGuestroom.Type);strcpy(q-data.Book,remainGuestroom.Book);q-data.StayTime=remainGuestroom.StayTime;6 .课题总结与体会本次的C+解程设计虽然只是短短的两个星期,但是却令我体会很多,也学到很多东西。利用C+*设计客房管理,使我加强了对C+勺认识,也对现代客房的基本运作管理有了初步了解。在这次课程设计中,我还懂得了程序开发中的一些比较重要的步骤并且学会了一些
28、没有接触过的知识,比如需求分析、类的设计以及类与类之间的关系,UML图形的表示方法等。面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。C+语言相对于C语言来更具有优越性,它不仅兼容C,还有一个非常重要的特点就是面向对象(具体来讲就是类),另外模板技术的频繁引用,也使整个程序看起来更清晰,更有条理化,所以,对模块的掌握,在C+核习中是非常重要的。在本次的应用程序的设计和创建过程中,我遇到了许多问题,有些是自己没有在教科书中学过的,但是却是系统所必须的,我通过在网上查找资料、查找书本、请教老师,一步步的把这些问题搞懂了,所以,课程设
29、计也培养了我们探索实践的能力。总之,我觉得,我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才能更好的去应用。以前上C+解程,只是零散被动地接受知识,而不是主动地去吸收渗透,而此次的课程设计却让我对编程产生了兴趣,习惯独立自主地完成任务,在困难中寻求帮助,加强和同学间的互帮互助,相信自己会在以后的学习和工作更加有经验。通过课程设计,我既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。7 .参考文献11陈维兴,林小茶.C+面向对象程序设计教程.北京.清华大学出版社2010,102谭浩强.C语言程序
30、设计.北京:清华大学出版社.2010,5【3】www.51CTO.com8 .源代码/客房管理系统主要实现的功能包括:客房信息的录入、修改、删除、剩余客房信息查询、排序、输出。客房信息可写入文件,也可从文件中读取。/*系统的登录信息的添加信息的删除信息的修改*/#include/指示编译器将文件iostream中的代码嵌入到该程序中该指令所在的地方usingnamespacestd;#include/包含文件流头文件#defineBUFSIZE50classcGuestroom;voidFindTheGuestroom();/voidFindTheGuestroomById();/voidFi
31、ndTheGuestroomByType();/voidFindTheGuestroomByPrice();/voidDeleteTheGuestroom();/voidAddTheGuestroom();/voidModifyTheGuestroom();/查找客房按照编号找客房按照类型找客房按照价格找客房删除客房客房添加修改客房template/template:classcNode/public:Tdata;cNode*next;模板,样板节点templateclasstListpublic:/tList();voidCreate();/boolEmpty()const;/voidIns
32、ert(constTe);/cNode*GetcNode(inti);boolFind(constTe);/tList();/cNode*head;/;templatetList:tList()/定义成员函数创建链表判断链表是否为空从尾部插入一个元素/返回第i个节点在链表中查找某个值销毁链表,析构头节点类的成员函数的实现head=newcNode;head-next=NULL;templatevoidtList:Create()cNode*p;p=head;p-next=NULL;templatebooltList:Empty()constreturn(head-next=NULL);temp
33、latevoidtList:Insert(constTe)/insert:插入cNode*p,*q;p=head;q=newcNode;q-data=e;while(p-next)p=p-next;p-next=q;q-next=NULL;templatecNode*tList:GetcNode(inti)/返回第i个节点intk=0;cNode*p;p=head;while(p&knext;+k;returnp;/在链表中查找某个值templatebooltList:Find(constTe)boolflag=false;cNode*p;p=head-next;while(p)if(p-da
34、ta=e)flag=true;break;p=p-next;returnflag;templatetList:tList()cNode*p;while(head)p=head-next;deletehead;head=p;classcGuestroompublic:charIDBUFSIZE;/客房编号charTypeBUFSIZE;/客房类型charBookBUFSIZE;/提前定房日期charPriceBUFSIZE;/客房价格charFunctionBUFSIZE;/客房主要内容intStayTime;/入住天数有效期boolflag;/标志cGuestroom()/构造函数初始化mem
35、set(ID,0,BUFSIZE);memset(Type,0,BUFSIZE);memset(Book,0,BUFSIZE);memset(Function,0,BUFSIZE);memset(Price,0,BUFSIZE);StayTime=0.0;flag=false;/memset:把char类型转换成ASCII值;voidReadData(tList*tListGue)/读取数据库charbufBUFSIZE;ifstreamifile(Guestroom.txt,ios_base:in);/创建一个输出文件流对象if(!ifile)cerr读取时打开文件出错!Insert(Gue
36、stroom);cout读取数据成功!nn;ifile.close();/关闭文件return;voidAddtheGuestroom(tList*tListGue)/输入客房函数cGuestroomtempGuestroom;/定义临时客房cout下面开始添加客房信息n;couttempGuestroom.ID;/couttempGuestroom.Type;/couttempGuestroom.Book;/couttempGuestroom.Price;/couttempGuestroom.Function;/couttempGuestroom.StayTime;/tempGuestroo
37、m.flag=true;tListGue-Insert(tempGuestroom);cout添加成功!n;system(pause);/pausesystem(cls);读入客房编号读入客房类型读入定房日期读入价格读入主要内容读入入住有效期:停顿,终止voidSaveData(tList*tListGue)/inti=0;保存数据/ 创建一个输入文从内存中读取数/ 修改客房信息读取客房编ofstreamofile(Guestroom.txt,ios_base:out);件流对象if(!ofile)cerr保存时打开文件出错!endl;cNode*p;p=tListGue-head-next;
38、while(p)/据,存到外盘if(p-data.flag)ofilen;ofiledata).IDn;ofiledata).Typen;ofiledata).Bookn;ofiledata).Pricen;ofiledata).Functionn;ofiledata).StayTimenext;cout保存数据成功!n;ofile.close();system(pause);system(cls);return;voidModifytheGuestroom(tList*tListGue)charidBUFSIZE;coutid;/号boolflag=false;cNode*p;p=tList
39、Gue-head-next;while(p)if(strcmp(p-data.ID,id)=0&p-data.flag)flag=true;break;p=p-next;if(flag=true)/显示屏幕cout找到了,该客房的原始信息是:n;coutnn客房编号:data).IDt客房类型:data).Typentt定房日期:data).Bookntt价格:data).Price;coutntt客房的主要内容:data).Functionntt入住有效期:data).StayTime;coutn下面开始修改该客房的信息:n;cGuestroomtempGuestroom;/couttemp
40、Guestroom.ID;/couttempGuestroom.Type;/couttempGuestroom.Book;/couttempGuestroom.Price;/couttempGuestroom.Function;/couttempGuestroom.StayTime;/tempGuestroom.flag=true;p-data=tempGuestroom;cout修改成功!;读入入住有效期coutendl;system(pause);system(cls);return;*tListGue) / 删除客房信息voidDeletetheGuestroom(tListcharid
41、BUFSIZE;II.coutid;/读取客房编号boolflag=false;intcount=0;cNode*p;p=tListGue-head-next;while(p)if(strcmp(p-data.ID,id)=0&p-data.flag)count+;flag=true;break;p=p-next;if(flag=false)cout对不起,你所查找的客房延长了住房日期!n;/如果不能删else/如果能删count-;cout找到了,该客房的原始信息是:n;coutnn客房编号:data).IDt客房类型:data).Typentt定房日期:data).Bookntt价格:da
42、ta).Price;coutntt客房的主要内容:data).Functionntt入住有效期:data).StayTime;coutdata).flag=false;cout该客房的信息删除成功!n;coutendl;system(pause);system(cls);return;voidFindtheremainGuestroomById(tList*tListGue)/根据客房编号查找charidBUFSIZE;coutid;/读取客房编号boolflag=false;cNode*p;p=tListGue-head-next;while(p)if(strcmp(p-data.ID,id)=0&p-data.flag)flag=true;break;p=p-next;if(flag=false)cout对不起,没有该标号的客房!n;/如果找不到else/如果找到了coutn找到了,该客房的信息是:n;coutnn客房编号:data).IDt客房类型:data).Typentt定房日期:data).Bookntt价格:data).Price;coutntt主要内容:data).Functi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论