欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    《C课程设计·酒店客房管理系统》.docx

    • 资源ID:2032344       资源大小:256.45KB        全文页数:30页
    • 资源格式: DOCX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《C课程设计·酒店客房管理系统》.docx

    课程设计报告课程设计题目:宾馆客房管理系统 学生学号:201220180620 学生姓名:李恒专 业:软件工程(嵌入式)班 级:1221806指导教师:魏振华 2013年 6月 27日 目录1.课题简介03 2.设计方案033.具体设计及截图·044.关键代码分析085.测试13 6.课题总结与体会147.参考文献158.源代码161.课题简介客房管理系统是根据客房管理的实际情况进行编写的,主要目的是为了方便对客房的实际情况进行集中的查询与管理工作,以提高整个酒店的工作。经过电脑及生活中的调查研究,根据客人的经济水平和生活理念,客房的类型已趋向于多样化,有标准房,单人房,VIP间,甚至总统套房。而初步设定通过客房的编号、类型、价格来定位一个客房的管理系统。客房是一个对外服务的内容,为了客人的住宿要求,所以系统需要实现客房信息的录入、修改和删除功能。客人对剩余客房需要进行选择,系统必须实现相应的查询、排序和输出功能,使客人择优而居。本次课程设计需要实现的是客房管理系统的链表实现。主要实现的功能包括:客房信息的录入、修改、删除、剩余客房信息查询、排序、输出。客房信息可写入文件,也可从文件中读取。客房信息涉及的数据有客房编号、客房类型、定房日期、客房内容(设施)、定房有效期等。2设计方案按照需求分析所得,客房信息系统有以下几个功能模块:1添加录入信息模块;编写指针摸板,定义临时的客房间数,包括其各项类的成员,编号,类型,定房日期,价格,客房内容,入住天数。3修改客房信息模块;读取保存的客房信息数据,根据客房编号查找所需修改的客房信息,然后根据具体所需,修改成员参数,并保存。4删除客房信息模块;从保存中的文件中读取信息,删除需要删除的信息,完善现在的客房运作。5查询剩余客房函数;分按编号、类型、价格查询,这样可以更具有人性化来选择所剩余的客房,从而进行日常安排。6排序剩余客房模块;根据具体所需排序,可以是编号、价格或者类型,本系统中根据的是客房入住的天数来排序。7输出剩余客房函数;输出根据系统所需排序后的客房信息,本系统中是根据了客人入住的有效期即天数来及时了解空出的房间。由上述需求分析可得,系统的功能模块图如图1所示。 录入客房信息客房的信息管理系统查询剩余客房信息排序剩余客房信息输出剩余客房信息保存客房信息修改客房信息删除客房信息退出系统图1 2.具体设计及截屏图1、类的设计根据上述需求分析,有客房类和链表类。(1)客房类系统研究客房cGuestroom类中成员: IDSIZE是客房编号,TypeSIZE是客房类型,BookSIZE是定房日期,PriceSIZE是每间客房的价格,StayTimeSIZE是定房的有效期,FunctionSIZE是客房的主要内容(如浴室、卫生间、网线等设施),标志flag和构造函数cGuestroom()。客房类的UML图如(图2)所示:class cGuestroom+ IDBUFSIZE:char/ 客房编号+ TypeBUFSIZE:char/客房类型+ BookBUFSIZE:char/定房日期+ FunctionBUFSIZE:char/客房内容+StayTime :int/定房有效期+ flay :bool/标志+ cGuestroom()/构造函数初始化图2(2)链表类在tList类中,有成员:构造函数tList(),创建链表Create(),判断链表是否为空的函数Empty() const,从尾部插入一个元素的函数Insert(const T e),返回第i个节点的函数GetcNode(int i),在链表中查询某个值的函数bool Find(const T e),析构函数tList(),头节点head。链表类的UML图如(图3)所示:tList+tList();+ Create():void +Empty() const:bool +Insert(conste:T):void +*GetcNode(i:int):cNode<T> +Find(const e:T):bool +tList(); + *head:cNode<T>图32界面设计:(1) 主界面的设计主界面中显示客房管理系统的全部信息,客房信息的录入,客房信息的保存,客房信息的修改,客房信息的删除,剩余客房的查询,剩余客房的排序,剩余客房的输出,客房信息管理系统如图4所示。图4 主界面(2)分界面:客房信息的录入的设计提示输入客房编号,客房类型,客人定房日期,客房价格,客房中的主要内容,客房定房的有效期。客房信息录入如图5所示。图5 录入客房信息的分界面(3)分界面:客房信息的保存的设计针对第一步客房信息的输入及以后信息的修改、删除做一个文件保存。客房信息保存如图6所示。图6 保存客房信息的分界面(4)分界面:客房信息的修改的设计提示根据编号进行客房信息修改,输入要修改的内容,如不修改的项目就远洋输出。客房信息修改界面如图7所示。图7 修改客房信息的分界面(5)分界面:客房信息的删除的设计提示进入删除截面,根据客房编号查找所需删除的客房信息。客房信息的删除界面如图8所示。图8 删除客房信息的分界面(6)分界面:剩余客房信息的查询的设计在保存完所修改或删除的客房信息,查询剩余的客房信息,按提示进入剩余客房查询界面,有按编号、类型、价格查询,根据拥护自主选择。查询剩余客房的信息界面如图9所示。图9 查询客房信息的分界面(7)剩余客房信息的排序的设计按提示进行剩余客房的排序,本系统中是以客人的入住天数排序,显示屏幕如图10所示。(8)分界面:剩余客房信息的输出的设计在排序完后的剩余客房中,输出所有客房的信息,以检验客房的经营情况。剩余客房信息输出界面如图10所示。图10 输出剩余客房的信息4.关键代码分析(1)系统的登录在主函数中,输出客房信息系统的各功能提示。选择需要执行功能的序号,由switch判断和选择所需要执行的功能。选择1:执行客房信息的录入;选择2:执行保存客房的信息;选择3:执行教工基本信息的保存;选择4:执行教工基本信息的删除;选择5:执行教工工资按从高到低排序;选择6:执行教工基本信息的修改;选择7:执行教工基本信息的查询;选择8:退出;主函数:int main() tList<cGuestroom> tListMedic; tListMedic.Create(); /创建链表 ReadData(&tListMedic);while(1) cout<<"nn 客房管理系统 nn" cout<<" - nn"cout<<" 1.客房信息的录入 nn"cout<<" 2:客房信息保存nn"cout<<" 3.客房信息的修改 nn"cout<<" 4.客房信息的删除 nn"cout<<" 5.剩余客房信息的查询 nn" cout<<" 6.剩余客房信息的排序 nn"cout<<" 7.剩余客房信息的输出 nn"cout<<" 8.退 出 系 统 nn"cout<<" 请选择:"int choose=0;cin>>choose; switch (choose) /用户选择 case 1:AddtheGuestroom(&tListMedic); break; /输入客房信息case 2:SaveData(&tListMedic);break; /客房信息信息保存 case 3:ModifytheGuestroom(&tListMedic); break; /修改客房信息 case 4:DeletetheGuestroom(&tListMedic); break; /删除客房信息 case 5:FindtheremainGuestroom(&tListMedic); break; /查询剩余客房信息 case 6:RanktheremainGuestroom(&tListMedic); break; /排序剩余客房信息 case 7:OutputtheremainGuestroom(&tListMedic); break; /输出剩余客房信息 case 8:exit(0); /退出 default : break; return 0; 在读取数据库中,可以从以有的文件中读取数据到程序中,避免了程序的重复输入数据,有利于后面的信息修改、删除等功能。读取数据库:void ReadData(tList<cGuestroom> *tListMedic) /读取数据库char bufBUFSIZE; ifstream ifile("Guestroom.txt",ios_base:in);/创建一个输出文件流对象if (!ifile) cerr << "读取时打开文件出错!" << endl; cGuestroom Guestroom;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); /读取提前定房日期strcpy(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<<"读取数据成功!nn"ifile.close(); /关闭文件return;(2)信息的添加客房信息的录入,创建cGuestroom类和tempGuestroom对象,调用构造函数,输入客房的房间编号、房间类型、定房日期、房间价格、房间内容及个人的入住有效期,通过Insert函数实现。void AddtheGuestroom(tList<cGuestroom> *tListMedic) / 输入客房函数 cGuestroom tempGuestroom; /定义临时客房cout<<"下面开始添加客房信息n"cout<<"请输入入住的客房编号:"cin>>tempGuestroom.ID; /读入客房编号cout<<"请输入客房类型:"cin>>tempGuestroom.Type; /读入客房类型cout<<"请输入客人定房日期:"cin>>tempGuestroom.Book; /读入定房日期cout<<"请输入客房价格:"cin>>tempGuestroom.Price; /读入价格cout<<"请输入客房的主要内容:"cin>>tempGuestroom.Function; /读入主要内容cout<<"请输入客房入住有效期:"cin>>tempGuestroom.StayTime; /读入入住有效期tempGuestroom.flag=true;tListMedic->Insert(tempGuestroom);cout<<"添加成功!n"system("pause");system("cls");(3)信息的删除删除客房信息,按要求提示输入要删除客房的房间编号,定义一个指向链表第一个节点的指针p。如果指针创建成功,开始用while和if语句实现p指向的节点的客房编号与存在的客房编号的比较。如果相同,输出该客房的信息并删除;如果没有相同的,提示没有所查询的房间。void DeletetheGuestroom(tList<cGuestroom> *tListMedic) /删除客房信息 char idBUFSIZE;cout<<"n请输入你要查找的客房编号:"cin>>id; /读取客房编号bool flag=false;int count=0; cNode<cGuestroom> *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"cout<<"nn客房编号:"<<(p->data).ID<<"t客房类型:"<<(p->data).Type<<"ntt定房日期:"<<(p->data).Book<<"ntt价格:"<<(p->data).Price;cout<<"ntt客房的主要内容:"<<(p->data).Function<<"ntt入住有效期:"<<(p->data).StayTime;cout<<endl;(p->data).flag=false;cout<<"该客房的信息删除成功!n" cout<<endl;system("pause");system("cls");return;(4)信息的修改按提示输入要修改的客房的客房编号,定义一个指向链表第一个节点的指针p。如果指针创建成功,开始用while和if语句实现p指向的节点的客房编号与存在的客房编号的比较。如果相同,提示输入房间的各个信息;如果没有相同,提示没有所查询的客房。void ModifytheGuestroom(tList<cGuestroom> *tListMedic) /修改客房信息 char idBUFSIZE; cout<<"n请输入你要查找的客房编号:"cin>>id; /读取客房编号bool flag=false; cNode<cGuestroom> *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"cout<<"nn客房编号:"<<(p->data).ID<<"t客房类型:"<<(p->data).Type<<"ntt定房日期:"<<(p->data).Book<<"ntt价格:"<<(p->data).Price;cout<<"ntt客房的主要内容:"<<(p->data).Function<<"ntt入住有效期:"<<(p->data).StayTime;cout<<"n下面开始修改该客房的信息:n"cGuestroom tempGuestroom; /定义临时客房cout<<"请输入客房的客房编号:"cin>>tempGuestroom.ID; /读入客房编号cout<<"请输入客房的客房类型:"cin>>tempGuestroom.Type; /读入客房类型cout<<"请输入客人的定房日期:"cin>>tempGuestroom.Book; /读入定房日期cout<<"请输入客房的客房价格:"cin>>tempGuestroom.Price; /读入价格cout<<"请输入客房的客房主要内容:"cin>>tempGuestroom.Function; /读入客房的主要内容cout<<"请输入客人入住客房有效期:"cin>>tempGuestroom.StayTime; /读入入住有效期tempGuestroom.flag=true;p->data=tempGuestroom;cout<<"修改成功!"cout<<endl;system("pause");system("cls");return;5.测试程序测试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。原程序:void RanktheremainGuestroom(tList<cGuestroom> *tListMedic) /排序剩余客房cNode<cGuestroom> *p,*q;cGuestroom remainGuestroom;for (p=tListMedic->head->next; p!= NULL; p=p->next)for (q=p; q!= NULL; q=q->next) if (p->data.Price > q->data.Price) 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);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.Function);strcpy(q->data.ID, remainGuestroom.ID);strcpy(q->data.Type, remainGuestroom.Type);strcpy(q->data.Book, remainGuestroom.Book); q->data.StayTime = remainGuestroom.StayTime; 编译成功后开始运行,信息录入后,不能在文档中正确排序输出,经Debug调试,发现,以客人的入住天数排序来及时调出空余客房为最佳选择。void RanktheremainGuestroom(tList<cGuestroom> *tListMedic) /排序剩余客房cNode<cGuestroom> *p,*q;cGuestroom remainGuestroom;for (p=tListMedic->head->next; p!= NULL; p=p->next) for (q=p; q!= NULL; q=q->next) if (p->data.StayTime > q->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);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.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+的认识,也对现代客房的基本运作管理有了初步了解。在这次课程设计中,我还懂得了程序开发中的一些比较重要的步骤并且学会了一些没有接触过的知识,比如需求分析、类的设计以及类与类之间的关系,UML图形的表示方法等。面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。C语言相对于C语言来更具有优越性,它不仅兼容C,还有一个非常重要的特点就是面向对象(具体来讲就是类),另外模板技术的频繁引用,也使整个程序看起来更清晰,更有条理化,所以,对模块的掌握,在C+学习中是非常重要的。 在本次的应用程序的设计和创建过程中,我遇到了许多问题,有些是自己没有在教科书中学过的,但是却是系统所必须的,我通过在网上查找资料、查找书本、请教老师,一步步的把这些问题搞懂了,所以,课程设计也培养了我们探索实践的能力。总之,我觉得,我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才能更好的去应用。以前上C+课程,只是零散被动地接受知识,而不是主动地去吸收渗透,而此次的课程设计却让我对编程产生了兴趣,习惯独立自主地完成任务,在困难中寻求帮助,加强和同学间的互帮互助,相信自己会在以后的学习和工作更加有经验。通过课程设计,我既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。 7.参考文献【1】陈维兴,林小茶.C+面向对象程序设计教程.北京.清华大学出版社2010,10【2】谭浩强.C语言程序设计.北京:清华大学出版社.2010,5【3】www.51CTO.com8.源代码/客房管理系统主要实现的功能包括:客房信息的录入、修改、删除、剩余客房信息查询、排序、输出。客房信息可写入文件,也可从文件中读取。/* 系统的登录 信息的添加 信息的删除 信息的修改 */#include <iostream> /指示编译器将文件iostream中的代码嵌入到该程序中该指令所在的地方using namespace std;#include<fstream>/包含文件流头文件#define BUFSIZE 50class cGuestroom;void FindTheGuestroom(); /查找客房void FindTheGuestroomById(); /按照编号找客房void FindTheGuestroomByType(); /按照类型找客房void FindTheGuestroomByPrice(); /按照价格找客房void DeleteTheGuestroom(); /删除客房void AddTheGuestroom(); /客房添加void ModifyTheGuestroom(); /修改客房 template <class T> /template:模板,样板class cNode /节点public: T data; cNode *next;template <class T>class tList public: /定义成员函数tList();void Create(); /创建链表bool Empty() const; /判断链表是否为空void Insert(const T e); /从尾部插入一个元素cNode<T>* GetcNode(int i); /返回第i个节点bool Find(const T e); /在链表中查找某个值tList(); /销毁链表,析构 cNode<T> *head; /头节点;template <class T>tList<T>:tList() /类的成员函数的实现head=new cNode<T>head->next=NULL;template <class T>void tList<T>:Create() cNode<T> *p;p=head;p->next=NULL;template <class T>bool tList<T>:Empty() const return (head->next=NULL);template <class T>void tList<T>:Insert(const T e) /insert:插入 cNode<T> *p,*q;p=head;q=new cNode<T>q->data=e;while(p->next)p=p->next;p->next=q;q->next=NULL;template <class T>cNode<T>* tList<T>:GetcNode(int i) /返回第i个节点int k=0; cNode<T> *p;p=head;while(p && k<i)p=p->next;+k;return p;template <class T>bool tList<T>:Find(const T e) /在链表中查找某个值bool flag=false; cNode<T> *p;p=head->next;while(p)if(p->data=e)flag=true;break;p=p->next;return flag;template <class T>tList<T>:tList()cNode<T> *p;while(head)p=head->next;delete head;head=p;class cGuestroompublic:char IDBUFSIZE; /客房编号char TypeBUFSIZE; /客房类型char BookBUFSIZE;

    注意事项

    本文(《C课程设计·酒店客房管理系统》.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开