C++C客房管理系统含源代码docx.docx
- 文档编号:6307644
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:26
- 大小:24.49KB
C++C客房管理系统含源代码docx.docx
《C++C客房管理系统含源代码docx.docx》由会员分享,可在线阅读,更多相关《C++C客房管理系统含源代码docx.docx(26页珍藏版)》请在冰豆网上搜索。
C++C客房管理系统含源代码docx
课程设计(论文)说明书
题目:
简易客房管理系统
学院:
计算机科学与工程学院
专业:
计算机科学与技术
姓名:
学号:
指导教师:
2014年09月30日
引言
随着我国经济的迅速发展,人们的生活水平有了显着的提高,宾馆酒店业的竞争也愈来愈激烈。
如何在激烈的竞争中生从发展,是每一个宾馆酒店必须面临的问题。
因此,采用全新的计算机网络和宾馆管理系统,已成为提高宾馆的管理效率,改善服务的水准备的重要手段之一。
在某种意义上,宾馆客房管理方面的信息话已成为现代化宾馆的重要标志。
是国家发展必要的软件管理基础。
所以,本着这样的需求。
此次C++语言课程设计我选择的是简易客房管理系统设计,系统设计采用c++语言在microsoftvisualc++下编译而成。
通过本课程设计,使我能更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用C++语言实现所设计的算法,能够
利用所学的基本知识和技能,分析和解决简单的程序设计问题,为后续其它课程的学习和应用打下良好基础。
1系统概述
客房管理系统具有
1.建立数据文件(客房信息文件、住客信息文件)功能;
2.具有数据输入功能;
3.具有数据修改功能;
4.具有数据删除功能;
5.能查询(查找)一些基本信息(如按房号查询、按姓名查询、空余客房查询等);
6.具有多种统计功能
(如、某住客应付多少费用等)
本系统开发由分析、设计、实施、调试和测试等阶段组成。
通过一个菜单界面,提示用户进行信息输入输出,提供客房信息录入,客户入住登记,客房信息修改,客房信息删除,退房结算,查询空房,已住房相关信息的功能,并在最后具有通过文件的形式保存客房信息、住客信息的功能。
由此构成一个简单的,供客房工作人员进行客房管理、住客登记、查询一体化的客房管理系统。
2需求分析
系统需求
根据题目要求,要求对客户信息进行输入、输出等操作;在程序中需要浏览客户的信息,应提供显示、统计、查询、修改等操作;另外还应提供键盘式选择菜单实现功能选择。
开发环境
系统开发平台:
中文windowsxp
系统开发工具:
MicrosoftVisualC++。
系统开发语言:
C++
3详细设计
按照需求分析所得,客房信息系统有以下几个功能模块:
1.新建两个类;
分别为Customer和Room,其中Customer类中包含住客姓名、身份证号、年龄、入住日期等相关信息,Room类包含房间号,类型,价格等相关信息。
2.录入客房信息;
先判断是否已存在客房信息,如果已存在,则提示选择是否再次添加;若不存在,则添加客房信息。
3.住客登记模块;
页面首先显示目前剩余客房信息,后提示客户选择入住房号,登记相关客户信
息,登记入住成功。
4.修改客房信息;客房管理系统
读取保存的客房信息数据,根据客房编号查找所需修改的客房信息,然后根据具体所需,修改成员参数。
5.退房结算模块;
页面首先显示目前已住客房信息,后提示客户选择退房房号,确认退房后,解
除客户与客房关联,并提示需要缴纳房费金额,退房成功。
6.查询客房函数;
住客
客房
退房
查询
删除
客房
分按编号、类型、客户姓名查找客房信息,同时可以查看当日所有客房、已住客房、剩录余客入房信息,登这样记可以更具修有人改性化来选结择所算剩余的客信房,息从而进信行日息常安排。
7.删除客房信息模块;
从保存中的文件中读取信息,删除需要删除的信息,完善现在的客房运作。
8.退出系统函数;
房号
姓名
类型
所有
已住
所有
在退出系统的同时,进行文件保存,方便日后再次读取客房信息。
根据需求分析,可以对这个系统的设计分为以下几个模块:
空房
查询
查询
查询
客房
客房
类的设计
输入choose判,断choose是否是1-7
根据需求分析,有客房类和客户类。
(1)客户类
Y
客户类中的主要成员有:
name为客户姓名,id为客户身份证号码,
age为年龄,roomnum为入住房号。
开始初始化。
具体如下:
根据choose的值调用各功能模块函数
显示各功能选项
stringname;
xt",ios_base:
:
trunc);
ofstreamC("客户信息.txt",ios_base:
:
trunc);
if(!
Str||!
C)
{cout<<"文件存入失败!
";return}
for(inti=0;i<30;i++)
{if(room[i].num!
=0)
{Str< room[i].yajin< }} for(intj=0;j<30;j++) {if(customer[j].roomnum! =0) { C< <<"\t"< <<"\t"< dl; } } (); (); 4所遇到的问题和分析解决 1、在最初开始,我先把客房信息和客户信息设置成结构体,但是后来发现,结构体数组初始化有点麻烦,需要用到for循环,于是用了类,然后构造函数初始化客房类和客户类里的相关信息。 然后在保存文件函数和读入文件函数模块,我运用 了read和write函数直接读取文件和存入文件。 但是在存入的时候导致了一系列问题,在保存文件里出现了很多“烫”字,之后上网查了很多信息,但是一直没查到解决的方案,一直调试都没有成功。 最后,我不得已用了<<,>>两个读取符,一个一个把数组中的字符(串)存入文件中。 在存入文件的时候,存入的时候字符与字符之间没有间隔,导致读取的时候,出现一整片读取错误的状况。 后来,修改了存入文件中,用‘\t’设置字符跳格之后,读取文件成功。 2、在客房录入函数模块中,我设置了客房录入从房间号300开始。 但是这样子, 遇到了一些问题。 比如,虽然在第一次的时候,能正确录入。 但是当再次录入的时 候,也依旧从房间号300开始录入,相当于前面录入的客房信息已经被抹掉了。 经 过我从网上查询后,运用了static函数。 因为static函数有这样的作用,平时无static 定义的变量的含义是由程序自动控制变量的生存周期,通常指的就是变量在进入其 作用域的时候被分配,离开其作用域的时候被释放;而static不一样,变量在程序初始化时被分配,直到程序退出前才被释放;也就是static是按照程序的生命周期来分配释放变量的,而不是变量自己的生命周期。 所以我在客房录入函数模块中, 运用了static函数定义房间号number变量,使其成为静态局部变量。 这样就可以在每次退出系统后,都记录之前最后一次录入的房间号了。 3、在程序编译时常常会出现各种或多或少的错误提示,其原因往往是程序代码 出现了一些细节上的简单错误,或是分号缺失,或是大括号不对应,或是未定义变量等各种常见错误。 这些错误虽不是致命性的严重失误但却影响了程序的编译和连接,最终仍不能使程序正常执行。 为了能够消除这些错误,必须不断地、反复地修改程序代码,并且不断的调试运行。 5系统特色及关键技术 本系统在设计之初,有很多可圈可点的想法点子,让系统有一定的特色。 但在实际操作过程中,却出现各种各样的问题,包括时间问题,个人水平问题等等,导致有些功能不能得以实现。 故在系统完成后,我审阅了程序,没有很大的特色。 但是小特色还是有以下几点的。 1、在房间录入函数模块,如果之前已经录入了房间,会有提示说之前已经录入客房信息,是否再次录入。 这是比较人性化的一方面。 这个主要是在录入客房信息时,运用了for函数循环查找是否之前已经录入了客房信 息,然后用if语句在已经录入和未录入之间选择,组成了以上的可以提示信息的功能。 2、在住客入住登记模块,在开始的界面,会首先提示当日剩余的客房信息,包括类型、价格等等,以便供客户更好的选择房间。 这里没有用到多大的技术,主要是在该函数模块里面,调用了剩余客房函数模块,使其先显示剩余客房信息,让客户有更好的选择权。 关键代码如下: cout<<"今日本酒店剩余空房如下: "< for(inti=0;i<30;i++) { if(room[i].renshu==0&&room[i].num! =0) { cout<<"房间号码: "; cout< cout<<"房间类型: "; cout< cout<<"房间价格: "; cout< p++; } 3、在退房结算模块,在提示客户确认需要退掉的房间后,还会自动显示当前应该缴纳的房费。 这一功能主要通过调用该客户的信息以及入住的天数,房间的价格等,进行一个四则运算后得出来的。 关键代码如下。 cout<<"房客信息如下: "< cout<<"客户姓名: "; cout< cout<<"客户身份证号码: "; cout< cout<<"客户共入住: "< "< 整。 "< cout<<"确定要退掉客房? (Y/N)"; 6结论 (一)系统完成情况 本次课程设计,大体上完成了老师对客房管理系统的要求。 该系统能简单实现对客栈的住宿情况进行管理。 客房包括以下信息: 房号、房型、单价(每床)、已住人数; 客户包括以下信息: 住客姓名、性别、年龄、身份、身份证号码,房号,床号,入住日期、入住时间、离店日期、离店时间。 并且我把这些信息应存放在两个文件中,分别是客房信息文件、客户信息文件。 在系统退出后,可以以TXT的形式保存客房和客户信息。 同时,在登陆系统的时候,可以读入已经保存的客房和客户信息。 这样可以避免每次登陆和退出系统时信息的丢失。 本系统具有以下的功能: 1.具有建立数据文件(客房信息文件、住客信息文件)功能; 2.具有数据输入功能; 3.具有数据修改功能; 4.具有数据删除功能; 5.能查询(查找)一些基本信息(如按房号查询、按姓名查询、空余客房查询等); 6.具有多种统计功能(要求有一定的实用性) (如某客房当前有那些空床、某住客应付多少费用等) 7、在系统界面,比如客房录入、入住登记等界面,都有比较人性化的功能,能显示已经录入或者该房是否已经入住等等提示。 (二)未能完成和有待改进之处 由于本人的技术水平问题和时间问题,本系统有不少不足之处。 比如没有排序功 能。 虽然在登记入住过程中,能显示剩余客房的情况,但是只能按照房间号来排序,没有能进行房间类型或者房间价格来排序,这是不足的地方。 还有,没能统计当天到底一共入住了多少个客房,只能显示所有的已住客房数。 这也是不足之处。 (三)课程设计期间的收获 通过此次课程设计,我更加理解和懂得运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C++语言进行程序设计的能力。 在课程设计中遇到了许多的调试不出结果出乎意料的问题。 在调试的过程中,得到了许多以后可以避免错误的经验。 也得到了很多没有接触过的知识。 这些都使我获益匪浅。 最大的收获是,编写程序时一定要有信心和勇气,要相信自己一定可以把这个程序编写出来。 分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写下的东西认真整理,查缺补漏,把一些细节的地方补上,就这样一个貌似很难的程序就写出来了(其实编程并不难,关键是要投 入,要钻到里面去)。 下一步就是读程序了,读程序时一定要小心仔细,一条语句、一条语句的读,看是否能输出自己想要输出的结果,如果发现错误要马上改过来, 再接着向下读,直到把程序调试的完美无缺为至。 附: 源代码: #include #include #include usingnamespacestd; /*问题描述: 该系统能简单实现对客栈的住宿情况进行管理。 至少包括以下信息: 房号、房型、单价(每床)、已住人数; 住客姓名、性别、年龄、身份、身份证号码,房号,床号,入住日期、入住时间、离店日期、离店时间。 这些信息应存放在两个文件中,分别是客房信息文件、住客信息文件。 "房型"可取 值1-3,分别表示单人间、双人间、通铺(可以住很多人的房间)功能要求: 1.具有建立数据文件(客房信息文件、住客信息文件)功能; 2.具有数据输入功能; 3.具有数据修改功能; 4.具有数据删除功能; 5.能查询(查找)一些基本信息(如按房号查询、按姓名查询、空余客房查询等); 6.具有多种统计功能(要求有一定的实用性) (如某客房当前有那些空床、某住客应付多少费用、某天住店总人数和总收入等) 说明: (1)功能各方面越完善越好 (2)自定义的数据结构可以使用数组,链表,树等,可以使用多种数据结构来存放数据,然后在其上使用不同的排序算法。 (3)若用数组,必须动态分配空间(文本文件中最好有一行来表示数组应该有多大,这样便于动态分配空间) */ um==0) { intsize; staticintNumber=300; cout<<"目前暂无房间信息,请添加! "< "; cin>>size; for(inti=0;i { room[i].num=Number++; cout<<"房间号码: "< cout<<"房间类型: "; cin>>room[i].type; cout<<"房间价格: "; cin>>room[i].price; cout< }; cout<<"客房信息录入成功! "< } else { stringP; cout<<"客房信息已有,是否还要添加房间? (Y/N)"; cin>>P; if(P=="Y") room_luru2(room); elseif(P=="N") cout<<"已取消房间添加."< elsecout<<"此操作非法! "< }; system("pause"); system("cls"); }; um==0) { room[i].num=Number++; cout<<"房间号码: "< cout<<"房间类型: "; cin>>room[i].type;cout< cout<<"房间价格: "; cin>>room[i].price; cout< cout<<"房间添加成功,是否继续添加? (Y/N): ";cin>>P;break; } elseNumber++; }; }while(P=="Y"); if(P=="N") cout<<"已取消添加。 "< elsecout<<"此操作非法! "< }; enshu==0&&room[i].num! =0) { cout<<"房间号码: "; cout< cout<<"房间类型: "; cout< cout<<"房间价格: "; cout< p++; } }; if(p==0)cout<<"抱歉,今日暂无空房! "< else { cout<<"请问,需要入住吗? (Y/N)"< cin>>b; if(b=="Y") {intNum;intt=0; cout<<"请输入入住房间号码: "< cin>>Num; for(inti=0;i<30;i++) { if(Num==room[i].num&&room[i].renshu==0&&room[i].num! =0) { room[i].renshu=1; customer[i].roomnum=Num; cout<<"请输入客户信息! "< cout<<"客户姓名: "; cin>>customer[i].name; cout<<"客户身份证号码: "; cin>>customer[i].id; cout<<"年龄: "; cin>>customer[i].age; cout<<"性别: "; cin>>customer[i].sex; cout<<"客房押金: "; cin>>room[i].yajin; cout<<"入住日期: "; cin>>customer[i].ruzhum; cout<<"入住时间: "; cin>>customer[i].ruzhut; cout<<"离店日期: "; cin>>customer[i].lidianm; cout<<"离店时间: "; cin>>customer[i].lidiant; cout<<"入住天数: "; cin>>customer[i].staytime; cout< cout<<"信息录入成功! "< t++; } elseif(Num==room[i].num&&room[i].renshu! =0&&room[i].num! =0) { cout<<"抱歉,此房已住"; t++; } elseif(t==0&&i==29) cout<<"查无此房"; }; } elseif(b=="N")cout<<"订房已取消。 "; elsecout<<"查无此房! "; } system("pause"); system("cls"); }; um) { cout<<"房间号: "< 型: "< "< cout<<"房间信息已找到! "< cout<<"是否确定要修改房间信息? (Y/N)"; stringp; cin>>p; if(p=="Y") { cout<<"房间类型改为: "; cin>>_type; room[i].type=_type; cout< cout<<"房间价格改为: "; cin>>_price; room[i].price=_price; cout< um==0) cout<<"查无此房! "< }; system("pause"); system("cls"); }; um==Num&&room[i].num==customer[j].roomnum)taytime*room[i].price-room[i].yajin; cout<<"房间已找到: "< cout<<"房间类型: "; cout< cout<<"房间价格: "; cout< t++; cout<<"房客信息如下: "< cout<<"客户姓名: "; cout< cout<<"客户身份证号码: "; cout< cout<<"客户共入住: "< "< "< cout<<"确定要退掉客房? (Y/N)"; cin>>B;cout< if(B=="Y") { customer[j].name="无"; customer[j].id="0"; customer[j].sex="0"; customer[j].age=-1; customer[j].roomnum=0; customer[j].ruzhum="0"; customer[j].ruzhut="0"; customer[j].lidianm="0"; customer[j].lidiant="0"; customer[j].staytime=0; room[i].renshu=0; room[i].yajin=0; cout<<"退房成功! "< } elseif(B=="N") {cout<<"取消退房成功。 "< else{cout<<"非法的操作! "< } elseif(t==0&&i==29&&j==29){cout<<"错误,找不到客房信 息! "< } }; system("pause"); system("cls"); }; \n "; 过房号查询客房 cout<<"\n 2.通过姓名查询客房 \n "; cout<<"\n 3.通过类型查询客房 \n "; cout<<"\n 4.查询所有客房 \n"; cout<<"\n 5.查询已住客房 \n "; cout<<"\n 6.查询所有空房 \n "; cout<<"\n 7.返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客房 管理 系统 源代码 docx