酒店管理系统 C++课程设计报告Word文件下载.docx
《酒店管理系统 C++课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《酒店管理系统 C++课程设计报告Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
选课题的时候心高气傲觉得自己能编出来,而正要着手编的时候才知道题目并不简单。
看到这个课题的时候觉得题目要求并不高,而且函数名及功能都给出来了,只需把它填满就行。
处于心理作用而且老师也说了课程设计是要把整本书的知识都融合在一起的,于是我开始想如何用类、如何把程序写得简单明了,但是想了好久也想不出来,于是自己搜了一些有关这一课题的程序,想从中获得一些灵感,找到一些好的方法。
事与愿违,网上的程序好多,大都用到了数据库,看不懂,我选了一个C程序来看,发现里面好多头文件都不认识,而它用的是struct和class相结和,多文件的编程,包括的知识广泛,感觉很复杂。
我后面就模范他的结构,用简单的语句编出框架,然后在一步步深入细化,最后用fstream类输入输出文本,然而简单的程序也有出错的时候,经过反复的修改、调试终于写出了这个程序!
5、参考书目:
[1]谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.
[2]詹红霞、侯思颖、陶永红,《VisualC++程序设计教程》,北京,清华大学出版社,2007年
附录:
#include<
iostream>
fstream>
usingnamespacestd;
intn;
charb[5]="
kong"
;
structdate//时间结构体
{
intyear;
intmonth;
intday;
}in,out;
structhotell//客房结构体
intnum;
//房号
charleixing[5];
//房间类型
intprice;
//房间价格
charnoman[5];
//房间是否空闲
charname[20];
//客户姓名
datein;
//用结构体定义的入住时间
dateout;
//用结构体定义的退房时间
intpay;
//预付金额
intshenfen;
//身份证号
intshu;
//客房数目
intinput;
//客房收入
}room[100];
voidluru()//客房信息录入函数
{inti,j;
ofstreamkefang("
kefang.txt"
ios:
:
binary);
//打开二进制文件
if(!
kefang)
cerr<
<
"
文件没有打开!
endl;
abort();
}
cout<
您选择了客房信息录入功能\n"
现在进行客房信息的录入\n"
总客房数为100间,请输入您要录入的客房数。
\n\n"
cout<
请输入房间数"
"
cin>
>
n;
if(n>
100||n<
=0)
您的输入有误,请重试\n\n"
luru();
for(i=0;
i<
i++)
客房号"
cin>
room[i].num;
客房类型(1、2、3、)\n请在1-3中进行选择"
room[i].leixing;
客房价格"
room[i].price;
for(j=0;
j<
5;
j++)
{
room[i].noman[j]=b[j];
//此时客房为kong
}
room[i].shu=n;
//录入的客房数目
本客房信息录入结束\n\n"
kefang.write((char*)&
room[i],sizeof(room[i]));
kefang.close();
voiddengji()//客人入住登记函数
{chara[5]="
man"
intk,j,i;
fstreamkefang("
in|ios:
out|ios:
if(!
kefang)
cerr<
文件打开失败!
abort();
请输入客人人数"
k;
for(intx=0;
x<
x++)
cout<
请输入客人的房号"
i;
room[i-1].num=i;
kefang.seekg(i-1*sizeof(a[i-1]));
kefang.read((char*)&
room[i-1],sizeof(room[i-1]));
请输入客人的姓名"
room[i-1].name;
请输入客人的身份证号"
room[i-1].shenfen;
请输入客人入住时间,年/月/日"
年:
room[i-1].in.year;
月:
cin>
room[i-1].in.month;
日:
room[i-1].in.day;
请输入客人的预付金额(单位:
元)"
room[i-1].pay;
for(j=0;
j++)
{
room[i-1].noman[j]=a[j];
//此时客房为man
}
客人入住登记结束,按回车键返回主菜单!
voidtuifang()//客人退房结算
inta,i,j,pay1,pay2;
请输入客人住的房间号"
for(i=0;
a;
if(a==room[i].num)
{kefang.seekg(i*sizeof(room[i]));
客人的房间号"
客人的入住时间为:
room[i].in.year<
年"
<
room[i].in.month<
月"
room[i].in.day;
请输入客人的退房时间年/月/日"
年:
room[i].out.year;
月:
room[i].out.month;
日:
room[i].out.day;
客人的退房时间为"
room[i].out.year<
room[i].out.month<
room[i].out.day<
日"
pay1=room[i].pay-((room[i].out.year-room[i].in.year)*365+(room[i].out.month-room[i].in.month)*30+(room[i].out.day-room[i].in.day))
*room[i].price;
pay2=((room[i].out.year-room[i].in.year)*365+(room[i].out.month-room[i].in.month)*30+(room[i].out.day-room[i].in.day))*room[i].price
-room[i].pay;
if(pay1>
总的住宿费用为"
((room[i].out.year-room[i].in.year)*365+(room[i].out.month-room[i].in.month)*30+
(room[i].out.day-room[i].in.day))*room[i].price<
元,\n"
入住时预付费用为:
room[i].pay<
剩余费用为:
pay1<
if(pay1<
0)
还须付:
pay2<
元"
room[i].noman[j]=b[j];
//初始化客房为空
room[i].name[j]=0;
//初始化客人名字为空
room[i].input=room[i].input+((room[i].out.year-room[i].in.year)*365+(room[i].out.month-room[i].in.month)*30+
(room[i].out.day-room[i].in.day))*room[i].price;
elseif(a!
=room[i].num)
输入房号不存在!
请确认后重试。
break;
kefang.close();
按回车键返回主菜单返回主菜单!
voidfind()//客房信息的查询
inti=0;
intk=0;
charname[20];
ifstreamkefang("
您选择要查询方式:
1.按空房间查询2.按姓名查询房间\n3.按房号查询4.所有客房信息\n\n"
intchaxun;
chaxun;
switch(chaxun)
case1:
空房间查询,"
//按空房间查询
查询结果如下"
room[0].shu;
kefang.seekg(i*sizeof(room[i]));
kefang.read((char*)&
if(strcmp(room[i].noman,b)==0)
{
cout<
空客房号"
room[i].num<
客房类型"
room[i].leixing;
客房价格"
room[i].price<
k+=1;
}
现有空房为"
k<
间"
endl<
查询结束"
按回车键返回主菜单"
case2:
请输入您所查询的姓名:
//按姓名查询
name;
if(strcmp(name,room[i].name)==0)
此客人入住的房间号"
room[i].num<
kefang.close();
cout<
按回车键返回主菜单!
case3:
请输入房间号:
//按客房号查询
intc;
c;
if(room[i].num==c)
房间号"
入住客人姓名"
room[i].name<
case4:
所有房间信息如下"
//列出所有客房信息
for(inti=0;
room[i].shu;
kefang.seekg(i*sizeof(room[i]));
客房类型"
room[i].leixing<
空闲情况"
room[i].noman<
\n"
;
if(room[i].noman=="
)
客人姓名"
room[i].name<
客人身份证号"
room[i].shenfen<
入住时间"
room[i].in.day<
预付费用"
elseif(room[i].noman=="
此房空"
浏览功能结束,请您选择其他功能"
\n查询结束\n按回车键返回主菜单!
voidxiugai()//客房信息的删除与修改
hotell*p=room;
charh[20]="
intc,d,e,j;
请输入要修改或删除的客房号."
for(inti=0;
请您选择要修改或删除的该客房的信息。
1.客房价格修改"
2.客房信息的删除"
d;
switch(d)
case1:
客房价格修改"
//客房价格的修改
e;
(p+c-1)->
price=e;
room[c-1],sizeof(room[c-1]));
修改成功!
\n按回车键返回主菜单!
break;
case2:
客房信息的删除"
//客房信息的删除
1.删除类型2.删除价格"
intg;
g;
switch(g)
for(j=0;
20;
{(p+c-1)->
leixing[j]=h[j];
该房类型已删除\n按回车键返回主菜单"
(p+c-1)->
price=NULL;
该房价格已删除\n按回车键返回主菜单"
voidjiesuan()//本月结算
{
intk=0;
for(intj=0;
room[j],sizeof(room[j]));
100;
k=k+room[i].input;
本月收入为:
\n按回车键返回主菜单"
intmain()//宾馆客房系统主界面函数
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"
$************************************$\n"
$**$\n"
$*欢迎使用客房管理系统*$\n"
\n"
请选择您要使用的功能\n"
1.客房信息录入2.客人入住登记3.客人退房结算\n"
4.客房信息查询5.客房信息删除和修改6.本月结算\n"
0.退出系统\n"
inta;
switch(a)
luru();
按回车键返回主菜单!
syst