C语言酒店管理系统设计.docx
《C语言酒店管理系统设计.docx》由会员分享,可在线阅读,更多相关《C语言酒店管理系统设计.docx(10页珍藏版)》请在冰豆网上搜索。
C语言酒店管理系统设计
《C++程序设计》课程设计报告
班级计科101班学号37姓名毛翔得分
一目的
加深对C++/C语言知识的理解,扩大相关知识面,培养对这些知识的应用能力。
通过一个实际问题的C++/C语言源程序的编写和调试,提高综合运用C++/C语言、程序设计技术的能力,并为后续相关课程的学习打下基础。
二题目及要求
题目:
酒店房间登记与计费管理系统
功能:
1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。
2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。
3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2、完成最低要求:
建立房间列表,完成登记入住、查询房间入住情况功能。
3、进一步要求:
完成计费和费用查询功能。
要求:
1、用C语言实现系统;
2、函数功能要划分好(结构化程序设计);
3、界面友好(良好的人机交互),加必要的注释;
4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
三程序设计思想及流程图
正确定义所要用到的变量,运用结构体存放房间的信息,用函数实现各个功能,对不同标准的房间实施不同的收费标准用,在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用,用switch语句实现旅客对所需要的操作的选择,其他具体操作的实现用循环、顺序、选择结构语句实现。
四源程序
#include"stdafx.h"
#include
usingnamespacestd;
#defineROOMNUM10
#defineDAYFEE100
#defineHOURFEE10
typedefstructroom
{
intid;//房间编号
intnum;//床位数
floatfee;//费率
inttype;//0代表按天,1代表安小时
floattime;//时间
charstartTime[50];//入住时间
charname[30];//旅客姓名
boolstatus;//房间状态false代表空闲true代表已经有旅客
}ROOM;
boolInitRoom(ROOM*roomList,intlen)
{
//printf("请分别输入编号床位数");
for(inti=0;i{
//cin>>roomList[i].id>>roomList[i].num;
roomList[i].id=100+i;
roomList[i].num=2;
roomList[i].type=0;
roomList[i].status=false;
roomList[i].time=0;
roomList[i].fee=DAYFEE;
}
returntrue;
}
voidInitRoom(ROOM&r)//重载
{
r.type=0;
r.status=false;
r.time=0;
r.fee=DAYFEE;
}
intRegRoom(ROOM*roomList,intlen)
{
boolflag=false;
for(inti=0;i{
if(!
roomList[i].status)
{
flag=true;
break;
}
}
if(flag)
{
cout<<"请分别输入:
客户名称起始时间租住方式(0/1)\n";
cin>>roomList[i].name>>roomList[i].startTime>>roomList[i].type;
if(roomList[i].type==1)
{
roomList[i].fee=HOURFEE;
}
roomList[i].status=true;
}
if(flag)
returni;
else
return-1;
}
boolSearchRoom(ROOM*roomList,intlen,introomId)
{
boolflag=false;
for(inti=0;i{
if(roomList[i].id==roomId)
{
flag=true;
break;
}
}
if(flag)
{
if(roomList[i].status)
{
cout<<"该房间已经被旅客:
"<"<}
else
{
cout<<"该房间还是空闲的!
"<}
}
else
{
cout<<"该房号不存在!
"<}
returnflag;
}
voidDispalyCountInfo(ROOM&r)
{
cout<<"房号:
"<"<"<"<}
voidDispalyAllRoom(ROOM*roomList,intlen)
{
cout<<"房号"<<"状态"<<"客户名"<<"入住时间"<for(inti=0;i{
cout<if(roomList[i].status)
{
cout<<"入住"<}
else
{
cout<<"空闲";
}
cout<}
}
boolCountRoom(ROOM*roomList,intlen,introomId)
{
boolflag=false;
for(inti=0;i{
if(roomList[i].id==roomId)
{
flag=true;
break;
}
}
if(flag)
{
if(roomList[i].status)
{
if(roomList[i].type==0)
{
cout<<"该旅客按天租住:
\n";
}
else
{
cout<<"该旅客按小时租住:
\n";
}
cout<<"请输入入住时间:
";
cin>>roomList[i].time;
DispalyCountInfo(roomList[i]);//显示结账信息
InitRoom(roomList[i]);//初始化该房间
}
else
{
cout<<"该房间还是空闲的,不能结账!
"<}
}
else
{
cout<<"该房号不存在!
"<}
returnflag;
}
boolRequireRoom(ROOM*roomList,intlen,introomId,floattime)
{
boolflag=false;
for(inti=0;i{
if(roomList[i].id==roomId)
{
flag=true;
break;
}
}
if(flag)
{
if(roomList[i].status)
{
if(roomList[i].type==0)
{
cout<<"该旅客按天租住:
\n";
}
else
{
cout<<"该旅客按小时租住:
\n";
}
floatt=roomList[i].time;
roomList[i].time=time;
DispalyCountInfo(roomList[i]);//显示结账信息
roomList[i].time=t;
}
else
{
cout<<"该房间还是空闲的,不能结账!
"<}
}
else
{
cout<<"该房号不存在!
"<}
returnflag;
}
intmain(intargc,char*argv[])
{
ROOMroomList[ROOMNUM];
InitRoom(roomList,ROOMNUM);
introomId;
floattime;
intret=-1;
intregId=0;
while(ret!
=0)
{
cout<<"请输入一个整数:
\n1.登记入住;\n2.查询房间;\n3.查询当前费用;\n4.结账退房;\n5.显示所有房间信息\n0.退出系统。
\n";
cout<<"请输入:
";
cin>>ret;
switch(ret)
{
case1:
regId=RegRoom(roomList,ROOMNUM);
if(regId>=0)
{
cout<<"登记成功!
房间号为:
"<}
else
{
cout<<"房间已经满!
"<}
break;
case2:
cout<<"请输入房间ID:
";
cin>>roomId;
SearchRoom(roomList,ROOMNUM,roomId);
break;
case3:
cout<<"请输入旅客房间ID以及已经入住时间长度:
";
cin>>roomId>>time;
RequireRoom(roomList,ROOMNUM,roomId,time);
break;
case4:
cout<<"请输入旅客房间ID:
";
cin>>roomId;
CountRoom(roomList,ROOMNUM,roomId);
break;
case5:
DispalyAllRoom(roomList,ROOMNUM);
break;
}
cout<}
return0;
}
五设计体会
经过这次课程设计,我发现我们所学的知识还是远远不够的.我们不仅要牢牢掌握课本上的知识,还要进行课外探索,对知识点进行深入研究,加深对知识点的理解.还有更重要的一点是,在学好知识的同时,多去实践一下,做到学以致用,这样才能更好的提高自己的能力,真正成为这方面的人才.
(报告以此为模板,打印装订后上交)