1计算机与通信学院课程设计报告课程名称:C++面向对象程序设计课题:旅行社业务管理系统专业班级:计算机与通信学院计算机科学与技术四班学号:10240415姓名:王元胤指导老师:朱红蕾日期:2011年12月15日2目录1.课题简介………………………………………032.设计方案………………………………………043.具体设计及截屏图……………………………054.关键代码分析…………………………………105.测试……………………………………………156.课题总结与体会………………………………1731.课题简介客房管理系统是根据某酒店对客房管理的实际情况进行编写的,主要目的是为了方便酒店对客房的实际情况进行集中的查询与管理工作,以提高整个酒店的工作。经过电脑及生活中的调查研究,根据客人的经济水平和生活理念,客房的类型已趋向于多样化,有标准房,单人房,VIP间,甚至总统套房。而初步设定通过客房的编号、类型、价格来定位一个客房的管理系统。客房是一个对外服务的内容,为了客人的住宿要求,所以系统需要实现客房信息的录入、修改和删除功能。客人对剩余客房需要进行选择,系统必须实现相应的查询、排序和输出功能,使客人择优而居。本次课程设计需要实现的是——客房管理系统的链表实现。主要实现的功能包括:客房信息的录入、修改、删除、剩余客房信息查询、排序、输出。客房信息可写入文件,也可从文件中读取。客房信息涉及的数据有客房编号、客房类型、定房日期、客房内容(设施)、定房有效期等。2.设计方案按照需求分析所得,客房信息系统有以下几个功能模块:1.添加录入信息模块;编写指针摸板,定义临时的客房间数,包括其各项类的成员,编号,类型,定房日期,价格,客房内容,入住天数。3.修改客房信息模块;读取保存的客房信息数据,根据客房编号查找所需修改的客房信息,然后根据具体所需,修改成员参数,并保存。4.删除客房信息模块;从保存中的文件中读取信息,删除需要删除的信息,完善现在的客房运作。5.查询剩余客房函数;分按编号、类型、价格查询,这样可以更具有人性化来选择所剩余的客房,从而进行日常安排。6.排序剩余客房模块;根据具体所需排序,可以是编号、价格或者类型,本系统中根据的是客房入住的天数来排序。7.输出剩余客房函数;输出根据系统所需排序后的客房信息,本系统中是根据了客人入住的有效期即天数来及时了解空出的房间。由上述需求分析可得,系统的功能模块图如图1所示。4图13.具体设计及截屏图1、类的设计根据上述需求分析,有客房类和链表类。(1)客房类系统研究客房cGuestroom类中成员:ID[SIZE]是客房编号,Type[SIZE]是客房类型,Book[SIZE]是定房日期,Price[SIZE]是每间客房的价格,StayTime[SIZE]是定房的有效期,Function[SIZE]是客房的主要内容(如浴室、卫生间、网线等设施),标志flag和构造函数cGuestroom()。客房类的UML图如(图2)所示:图2录入客房信息客房的信息管理系统查询剩余客房信息排序剩余客房信息输出剩余客房信息保存客房信息修改客房信息删除客房信息退出系统classcGuestroom+ID[BUFSIZE]:char//客房编号+Type[BUFSIZE]:char//客房类型+Book[BUFSIZE]:char//定房日期+Function[BUFSIZE]:char//客房内容+StayTime:int//定房有效期+flay:bool//标志+cGuestroom()//构造函数初始化5(2)链表类在tList类中,有成员:构造函数tList(),创建链表Create(),判断链表是否为空的函数Empty()const,从尾部插入一个元素的函数Insert(constTe),返回第i个节点的函数GetcNode(inti),在链表中查询某个值的函数boolFind(constTe),析构函数~tList(),头节点head。链表类的UML图如(图3)所示:图32.界面设计:(1)主界面的设计主界面中显示客房管理系统的全部信息,客房信息的录入,客房信息的保存,客房信息的修改,客房信息的删除,剩余客房的查询,剩余客房的排序,剩余客房的输出,客房信息管理系统如图4所示。图4主界面(2)分界面:客房信息的录入的设计提示输入客房编号,客房类型,客人定房日期,客房价格,客房中的主要内容,客房定房的有效期。客房信息录入如图5所示。tList+tList();+Create():void+Empty()const:bool+Insert(conste:T):void+*GetcNode(i:int):cNodeT+Find(conste:T):bool+~tList();+*head:cNodeT6图5录入客房信息的分界面(3)分界面:客房信息的保存的设计针对第一步客房信息的输入及以后信息的修改、删除做一个文件保存。客房信息保存如图6所示。图6保存客房信息的分界面(4)分界面:客房信息的修改的设计提示根据编号进行客房信息修改,输入要修改的内容,如不修改的项目就远洋输出。客房信息修改界面如图7所示。7图7修改客房信息的分界面(5)分界面:客房信息的删除的设计提示进入删除截面,根据客房编号查找所需删除的客房信息。客房信息的删除界面如图8所示。图8删除客房信息的分界面(6)分界面:剩余客房信息的查询的设计在保存完所修改或删除的客房信息,查询剩余的客房信息,按提示进入剩余客房查询界面,有按编号、类型、价格查询,根据拥护自主选择。查询剩余客房的信息界面如图9所示。图9查询客房信息的分界面(7)剩余客房信息的排序的设计按提示进行剩余客房的排序,本系统中是以客人的入住天数排序,显示屏幕如图10所示。(8)分界面:剩余客房信息的输出的设计在排序完后的剩余客房中,输出所有客房的信息,以检验客房的经营情况。剩余客房信息输出界面如图10所示。8图10输出剩余客房的信息4.关键代码分析(1)系统的登录在主函数中,输出客房信息系统的各功能提示。选择需要执行功能的序号,由switch判断和选择所需要执行的功能。选择1:执行客房信息的录入;选择2:执行保存客房的信息;选择3:执行教工基本信息的保存;选择4:执行教工基本信息的删除;选择5:执行教工工资按从高到低排序;选择6:执行教工基本信息的修改;选择7:执行教工基本信息的查询;选择8:退出;主函数:intmain(){tListcGuestroomtListMedic;tListMedic.Create();//创建链表ReadData(&tListMedic);while(1){cout\n\n客房管理系统\n\n;cout----------------------------------\n\n;cout1.客房信息的录入\n\n;cout2:客房信息保存\n\n;cout3.客房信息的修改\n\n;cout4.客房信息的删除\n\n;cout5.剩余客房信息的查询\n\n;cout6.剩余客房信息的排序\n\n;cout7.剩余客房信息的输出\n\n;cout8.退出系统\n\n;cout请选择:;intchoose=0;9cinchoose;switch(choose)//用户选择{case1:AddtheGuestroom(&tListMedic);break;//输入客房信息case2:SaveData(&tListMedic);break;//客房信息信息保存case3:ModifytheGuestroom(&tListMedic);break;//修改客房信息case4:DeletetheGuestroom(&tListMedic);break;//删除客房信息case5:FindtheremainGuestroom(&tListMedic);break;//查询剩余客房信息case6:RanktheremainGuestroom(&tListMedic);break;//排序剩余客房信息case7:OutputtheremainGuestroom(&tListMedic);break;//输出剩余客房信息case8:exit(0);//退出default:break;}return0;}}在读取数据库中,可以从以有的文件中读取数据到程序中,避免了程序的重复输入数据,有利于后面的信息修改、删除等功能。读取数据库:voidReadData(tListcGuestroom*tListMedic)//读取数据库{charbuf[BUFSIZE];ifstreamifile(Guestroom.txt,ios_base::in);//创建一个输出文件流对象if(!ifile){cerr读取时打开文件出错!endl;}cGuestroomGuestroom;while(ifile.getline(buf,BUFSIZE))//遍历文本,读取数据{ifile.getline(buf,BUFSIZE);strcpy(Guestroom.ID,buf);//读取客房编号memset(buf,0,BUFSIZE);ifile.getline(buf,BUFSIZE);//读取客房类型strcpy(Guestroom.Type,buf);memset(buf,0,BUFSIZE);ifile.getline(buf,BUFSIZE);//读取提前定房日期10strcpy(Guestroom.Book,buf);memset(buf,0,BUFSIZE);ifile.getline(buf,BUFSIZE);//读取价格strcpy(Guestroom.Price,buf);memset(buf,0,BUFSIZE);ifile.getline(buf,BUFSIZE);//读取客房主要内容strcpy(Guestroom.Function,buf);memset(buf,0,BUFSIZE);ifile.getline(buf,BUFSIZE);//读取入住有效期Guestroom.StayTime=atoi(buf);memset(buf,0,BUFSIZE);Guestroom.flag=true;tListMedic-Insert(Guestroom);}cout读取数据成功!\n\n;ifile.close();//关闭文件return;}(2)信息的添加客房信息的录入,创建cGuestroom类和tempGuestroom对象,调用构造函数,输入客房的房间编号、房间类型、定房日期、房间价格、房间内容及个人的入住有效期,通过Insert函数实现。voidAddtheGuestroom(tListcGuestroom*tListMedic)//输入客房函数{cGuestroomtempGuestroom;//定义临时客房cout下面开始添加客房信息\n;cout请输入入住的客房编号:;cintempGuestroom.ID;//读入客房编号cout请输入客房类型:;cintempGuestroom.Type;//读入客房类型cout请输入客人定房日期:;cintempGuestroom.Book;//读入定房日期cout请输入客房价格:;cintempGuestroom.Price;//读入价格cout请输入客房的主要内容:;cintempGuestroom.Function;//读入主要内容cout请输入客房入住有效期:;cintempGuestroom.StayTime;//读入入住有效期tempGuestroom.flag=true;11tListMedic-Insert(tempGuestroom);cout添加成功!\n;system(pause);system(cls);}(3)信息的删除删除客房信息,按要求提示输入要删除