酒店房间登记与计费管理系统
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
程序设计说明
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
《程序设计》
课程设计说明书 课程名称 《程序设计》 设计题目 酒店房间登记与计费管理系统设计
专业班级
学生姓名
指导教师
起止日期7>2013年6月8日至2013年6月14日 福建林业职业技术学院自
动化工程系
目录
摘 要 ……2
1 软件需求分析说明书 3 1.1登记入住系统 3 1.2客房状态查询 3 1.3住户信息查询 3 1.4结账退房系统 3 2 系统分析与设计 4 2.1软件界面设计 4 2.2软件的数据(结构)设计 8
2.3软件的算法设计 9 2.3.1软件模块图 9 2.3.2程序流程图 9 3 软件的实现 12 3.1使用的结构数组及函数的定义 12
3.2登记入住模块 12 3.3查询房间模块 15 3.4查询房客模块 16 4 软件测试 21
5软件使用说明书 22
1 软件需求分析说明书 1.1登记入住系统
登记并记录顾客姓名
登记并记录顾客的证件类型及号码
显示现有空置房间
选择所需要的房间并更改房间状态信息
计算并记录住房费及押金
由于本软件针对操作员设计,所以界面应尽可能简单明了。住房及顾客信息
由于涉及多种类型的数据,因此应用结构数组处理。用文件记录相关数据。 1.2客房状态查询
分别显示已入住客房与空置客房
读取住房信息文件的内容并判断分类,借此可以清晰明了的显示客房状态。 1.3住户信息查询
查询顾客所租房房号
查询顾客住房费用
顾客可以通过输入自己的姓名来查询个人的住房信息。
1.4结账退房系统
退房
更新所退房间状态
删除退房用户记录
显示账单
顾客可以输入姓名来完成退房操作,房间状态将更改为未入住。系统将删除
该用户信息记录并读取生成账单。 2 系统分析与设计 2.1软件界面设计
运行程序后进入主界面,可以进行登记入住、查询房间、查询顾客、退出程序等几项操作: 图2.1.1
选择“1.登记入住”进入登记入住界面: 图2.1.2
输入相关信息,之后选择计费类型: 图2.1.3
选择“1.按天入住”按天数计费,会显示目前空置的房间。输入所选房间已进行下一步操作: 图2.1.4
如选择“2.按小时入住”则按小时计费,操作同理。 图2.1.5 之后会进入下一界面并提示登记成功。 图2.1.6
如在主界面选择“2.查询房间的入住情况”则会进入查询房间状况界面,程序将分别依次显示已入住的房间和空置房间。 图2.1.7 如在主界面选择“3.查询当前费用”则会进入用户查询界面,输入顾客姓名即可进行查询 图2.1.8
程序会显示该客人的相关信息 图2.1.9
如在主界面选择“4.结账退房”则会进入用户退房界面,输入顾客姓名即可进行退房操作 图2.1.10 输入成功后会显示退房成功。 图2.1.11
在主界面选择“5.退出程序”会进入退出界面。 图2.1.12
2.2软件的数据(结构)设计
本软件运用了C语言文件的读取与写入功能,各文件的作用如下:
count.txt:用于存储房客数量,内部存储一个int*数据。
room.txt:用于存储房间信息,内部依次存储:
房间状态char*(1位) 房间号char*(4位) 房间类型char*(1位)
房间描述char*(6位) 房间日租金int* 房间月租金int*。
customer.txt:用于存储房客信息,内部依次存储:
姓名char* 证件类型char* 证件号码int* 房间号char*(4位) 房租int*
押金int* 2.3软件的算法设计
2.3.1软件模块图 2.3.2程序流程图 客房查询模块: 顾客查询模块: 结
账退房模块: 3 软件的实现 3.1使用的结构数组及函数的定义
结构体定义:
typedef struct room //客房信息
char FID[5];//房间号
char type[2];//客房类型
char describe[7];//该客房类型的描述
int cost_d;//日收费
int cost_h;//时收费
char statu[2]; //入住情况
room;
typedef struct customer //入住记录
char FID[5]; //房间号
char name[20];//名字
char type[14];//证件类型
int ID;//证件号
int pay;//房费
int cp; //押金
customer;
函数定义:
void rent room *p ;//登记入住模块
void search_room room *p ;//客房查询模块
void search_customer room *p, int l ;//费用查询模块 void pay room *p, int l ;//结账模块
3.2登记入住模块
源文件:
void rent room *p
int i,count,n,m 2; struct room rm[] 0 ;//定义结构数组 struct customer cs;
char search[2] 'Y' ,stu[2] 'N' ,dill[5] 0 ; FILE
*fpin,*fpout;
fpout fopen "customer.txt","a" ;
assert fpout ! NULL ;
printf "请输入姓名:" ;
scanf "%s",&cs.name ;
fprintf fpout,"%s ",cs.name ;
printf "请填入证件类型:" ;
scanf "%s",&cs.type ;
fprintf fpout,"%s ",cs.type ;
printf "请输入证件号码:" ;
scanf "%d",&cs.ID ;
fprintf fpout,"%d ",cs.ID ;
printf "请选择入住方式:\n1.按天入住\n2.按小时入住\n" ;
scanf "%d",&count ; fpin fopen "room.txt","r+" ;
assert fpin ! NULL ;
printf "以下是现有的空房\n" ;
for i 0;i ;i++ //对结构数组赋值,录入房间
信息
fscanf fpin,"%s ",rm[i].statu ;
fscanf fpin,"%s ",rm[i].FID ;
fscanf fpin,"%s ",rm[i].type ;
fscanf fpin,"%s ",rm[i].describe ;
fscanf fpin,"%d ",&rm[i].cost_d ;
fscanf fpin,"%d ",&rm[i].cost_h ;
fclose fpin ;
for i 0;i ;i++
if strcmp search,rm[i].statu 0
printf "%s号%s型%s日收费:%d时收
费:%d\n",rm[i].FID,rm[i].type,rm[i].describe,rm[i].cost_d,rm[i].cost
_h ;
printf "请输入要入住的房屋" ;
scanf "%s",&dill ;
for i 0;i ;i++
if strcmp dill,rm[i].FID 0 //所选房间号与房间数据对比
strcpy rm[i].statu,stu ; //更改数组中的房间
状态
fprintf fpout,"%s ",rm[i].FID ;
if count 1
printf "请选择天数:" ;
scanf "%d",&n ;
fprintf fpout,"%d ",rm[i].cost_d*n ;
fprintf fpout,"%d ",rm[i].cost_d*n*m ;
system "cls" ;
printf "\004已成功登记房间!\n" ;
printf "\004您的房号为:%s\n",rm[i].FID ;
printf "\004请支付%d元的房费以及押金%d元。
\n",rm[i].cost_d*n,rm[i].cost_d*n*m ;
else
printf "请选择小时数:" ;
scanf "%d",&n ;
fprintf fpout,"%d ",rm[i].cost_h*n ;
fprintf fpout,"%d ",rm[i].cost_h*n*m ;
system "cls" ;
printf "\004已成功登记房间!\n" ;
printf "\004您的房号为:%s\n",rm[i].FID ;
printf "\004请支付%d元的房费以及押金%d元。
\n",rm[i].cost_h*n,rm[i].cost_h*n*m ;
fpin fopen "room.txt","w" ;
for i 0;i ;i++ //将更改录入文件
fprintf fpin,"%s ",rm[i].statu ;
fprintf fpin,"%s ",rm[i].FID ;
fprintf fpin,"%s ",rm[i].type ;
fprintf fpin,"%s ",rm[i].describe ;
fprintf fpin,"%d ",rm[i].cost_d ;
fprintf fpin,"%d\n",rm[i].cost_h ;
fclose fpout ;
fclose fpin ;
3.3查询房间模块
void search_room room *p
int i,h,k;
struct room rm[] 0 ;
char search[2] 'Y' ; FILE *fpin;
fpin fopen "room.txt","r" ;
assert fpin ! NULL ; for i 0;i ;i++ //对
结构数组赋值,即录入房间信息
fscanf fpin,"%s ",rm[i].statu ;
fscanf fpin,"%s ",rm[i].FID ; fscanf fpin,"%s ",rm[i].type ;
fscanf fpin,"%s ",&rm[i].describe ;
fscanf fpin,"%d ",&rm[i].cost_d ;
fscanf fpin,"%d ",&rm[i].cost_h ;
printf "目前的空置房间有:\n" ;//查询空客房
for h 0;h ;h++ //显示结果
if strcmp search,rm[h].statu 0
printf "%s 号%s 型房间\n",rm[h].FID,rm[h].type ;
printf "有顾客入住的房间:\n" ;//查询满客房
for k 0;k ;k++ //显示结果
if strcmp search,rm[k].statu ! 0
printf "%s 号%s 型房间\n",rm[k].FID,rm[k].type ;
fclose fpin ;
3.4查询房客模块
void search_customer room *p,int l // 参数l的值 即为主函数所读取
的客人数量
char name[20];
int a;
int i;
struct customer cs[20] 0 ;
FILE *fpin,*fp1; printf "请输入要查询的用户姓名:" ;
scanf "%s",&name ;
fpin fopen "customer.txt","r" ;
assert fpin ! NULL ;
fp1 fopen "count.txt","r" ;
assert fp1 ! NULL ;
for i 0;i l;i++ //读取顾客数据
fscanf fpin,"%s ",&cs[i].name ;
fscanf fpin,"%s ",&cs[i].type ;
fscanf fpin,"%d ",&cs[i].ID ;
fscanf fpin,"%s ",&cs[i].FID ;
fscanf fpin,"%d",&cs[i].pay ;
fscanf fpin,"%d",&cs[i].cp ;
for a 0;a l;a++
if strcmp name,cs[a].name 0 //比较与所输入字符串与是否
一致
printf "%s ",cs[a].name ;
printf "%s ",cs[a].type ;
printf "%d ",cs[a].ID ;
printf "%s ",cs[a].FID ;
printf "%d ",cs[a].pay ;
printf "%d\n",cs[a].cp ;
fclose fpin ;
fclose fp1 ;
3.5结账退房模块
void pay room *p, int l
int i,j;
char name[20];
char FID[5];
char stu[2] 'Y' ;
struct room rm[] 0 ;
struct customer cs[20] 0 ;
FILE *fp1,*fp2; printf "请输入客人姓名:" ;
scanf "%s",&name ; fp1 fopen "room.txt","r" ;
assert fp1 ;
fp2 fopen "customer.txt","r" ;
assert fp2 ; for i 0;i ;i++ //对结构数组赋值
fscanf fp1,"%s ",&rm[i].statu ;
fscanf fp1,"%s ",&rm[i].FID ;
fscanf fp1,"%s ",&rm[i].type ;
fscanf fp1,"%s ",&rm[i].describe ;
fscanf fp1,"%d ",&rm[i].cost_d ;
fscanf fp1,"%d ",&rm[i].cost_h ;
fclose fp1 ;
for j 0;j l;j++
fscanf fp2,"%s ",&cs[j].name ;
fscanf fp2,"%s ",&cs[j].type ;
fscanf fp2,"%d ",&cs[j].ID ;
fscanf fp2,"%s ",&cs[j].FID ;
fscanf fp2,"%d",&cs[j].pay ;
fscanf fp2,"%d",&cs[j].cp ;
fclose fp2 ;
for j 0;j l;j++
if strcmp name, cs[j].name 0
strcpy FID,cs[j].FID ;
for ;j l-1;j++
cs[j] cs[j+1]; //为数组重新赋值
以完成删除操作
fp2 fopen "customer.txt","w" ;
assert fp2 ;
for j 0;j l-1;j++
printf "%s ",cs[j].name ;
printf "%s ",cs[j].type ;
printf "%d ",cs[j].ID ;
printf "%s ",cs[j].FID ;
printf "%d ",cs[j].pay ;
printf "%d\n",cs[j].cp ;
for j 0;j l-1;j++
fprintf fp2,"%s ",cs[j].name ;
fprintf fp2,"%s ",cs[j].type ;
fprintf fp2,"%d ",cs[j].ID ;
fprintf fp2,"%s ",cs[j].FID ;
fprintf fp2,"%d ",cs[j].pay ;
fprintf fp2,"%d\n",cs[j].cp ;
fclose fp2 ;
for i 0;i ;i++
if strcmp FID, rm[i].FID 0
strcpy rm[i].statu,stu ;
fp1 fopen "room.txt","w" ; //打开并清空文件
assert fp1 ;
for i 0;i ;i++ //重新录入全部信息来完成更改
fprintf fp1,"%s ",rm[i].statu ;
fprintf fp1,"%s ",rm[i].FID ;
fprintf fp1,"%s ",rm[i].type ;
fprintf fp1,"%s ",rm[i].describe ;
fprintf fp1,"%d ",rm[i].cost_d ;
fprintf fp1,"%d\n",rm[i].cost_h ;
fclose fp1 ;
4 软件测试 1、 void rent room *p //登记入住函数
用例:input: room a[20] output: 请输入姓名
input: DANNY output: 请输入证件类型
input: id output: 请输入证件号码
input: 10086 output: 请选择入住方式:1.按天入住
2.按小时入住
input: 2 output: 以下是现有的空房:
A101号A型SINGLE日租金150时租金20
请输入要入住的房屋
input: A101 output: 请选择小时数
input: 5 output: 已成功登记房间
您的房号为:A101
请支付100元的房租及押金200元
2、 void search_room room *p //住房查询函数
用例:input: room a[20] output: 目前的空置房间有:
A102号B型SINGLE日租金150时租金20
A105号C型SINGLE日租金300时
租金40
有顾客入住的房间:
B104号C型SINGLE日租金300时租金40
3、 void search_customer room *p,int l //房客查询函数
用例:input: room a[20] j 3 output: 请输入要查询的用户姓名:
input: DANNY output: DANNY id 10086 A101 100 200
4、 void pay room *p, int l //结账退房函数
用例:input: room a[20] j 3 output: 请输入姓名
input: DANNY output: 已成功退房 5软件使用说明书 本程序是专门为酒店设计的管理系统,方便操作员的操作。
通过主界面,我们可以进行登记、查询房间、查询费用、退房及退出等操作。 通过登记界面,可以实现用户登记及住房登记、调整等功能。 通过费用查询界面,可以通过姓名查找顾客的入住信息。 通过房间查询界面,可以查找房间的使用情况。 通过退房界面,仅通过输入姓名就可以完成退房。 致谢 此次的程序设计题目做的很是辛苦。由于本人基础很差,所以花费了大量的时间,但最后总算成功完成。这与老师的耐心指导是分不开的,同时我也在老师身上学到不少东西。因此特在此对我的任课老师
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示感谢~同时也要感谢所有帮助过我的同学。 修改房间不为空 判断房间是否为空 判断房号与读入数据是否相符 文件 显示 录
记 记录
文件 客人 息信人个 输入房号 读取房间信息 是 记录入文件 结账退房模
块 顾客查询模块 客房查询模块 登记入住模块 酒店房间管理系统 读取房间信息 2显示 1显示 判断房间是否为空 文件 是 否 判断姓名是否相同 文件 显示 操作 顾客数据 输入姓名 是 输出并显示账单 判断姓名是否一致 房间信息文件 顾客信息文件 客人 删除对应信息 是 读取信息 输入姓名 更改对应房
间状态