1、武汉科技大学 C语言程序设计 课 程 设 计 题 目 酒店管理系统 班 级 信息和计算科学2班 姓 名 陈诚 学 号 07119043 成 绩 6 月 23 日一、 总体设计1、 程序总体设计(1) 程序总体设计思绪:酒店房间登记管理系统,实现是房间登记和管理(包含登记入住、查询)为了表现模块化设计,把全部要实现功效做成函数,采取分步实施方法逐步细化。具体分布实施有以下5步。1,编写模块2,定义实现个功效模块所要函数 3,编写各个函数 4,理清思绪,逐步修改5,调试整个程序。关键部分是各个函数:1、欢迎界面函数:经过switch进入不一样界面。2、登记入住函数:使用户在入住前登记个人信息,选择
2、房间信息3、 查询入住情况函数:用户可经过两种方法查找到自己个人信息。4、 查询目前费用函数:用户可随时查询所用费用5、 结账退房函数:全部信息清零。 2、数据结构 此系统,选择用结构体存放不一样类型数据,房间信息。在这过程中因为对指针利用和操作还不熟练,不方便修改,所以没用指针。(1)创建房间信息结构体 /*结构体hotel 房间号、房间种类、用户姓名、身份证号、入住状态、实际收房费,押金等*/struct hotel int num; /*房间号*/ int kind; /*房间种类 1(表示单人间) 2(表示双人间)*/ char name20; /*姓名*/ char ID19; /*
3、身份证号*/ int flag; /*flag 0(表示有些人入住)0(表示无人入住)*/ int dingjia; /*房间定价*/ int shiji; /*实际缴纳费用*/roomM; 3、函数原型申明void welcome(); /主界面int dengji(); /登记入住函数int now_room(); /查询目前房间入住情况int now_feiyong(); /查询目前费用int tuifang(); /结账退房int find(); /查询目前入住人数int kfxinxi(); /用户信息void jiezhang(); /结账付款int quit(); /退出函数in
4、t mima();/密码/void save(); /保留/二、具体设计1、主函数设计主函数说明:为满足用户登记入住,查询房间入住情况,查询目前费用,结账退房等功效实现,设计此函数。开始进入欢迎界面让用户选择,进入用户所选界面。开 始输入选择序号进入所选功效函数结 束主函数步骤图2、子函数步骤图(1)登记入住函数说明:登 记入 住房 间 已住 满 ?已住满未住满输入相关信息输入有误?成功登记结束返回主函数YN登记入住步骤图(2)查询房间入住情况:2种查询方法(1. 按房号查询2. 用户信息查询),最终输出查询房间入住情况选择查询方法(i)1. 按房号查询2. 按用户信息查询i=1?i=2?i=
5、3?输入房间号输入身份证号返回主函数结束否否否是是是输出个人信息结束结账退房全为空?返回主函数输入房间号 空房?显示用户信息输入相关信息结 束 结账退房步骤图三、测试出现欢迎界面测试1:选择选项1,入住登记 “1”按提醒输入信息(如:1-单人间,1-房间号,陈诚,5222257,200元,登记成功)测试2:选择选项2,查询房间入住情况“1”按房间号查询,1、房间号 出现刚登记个人信息 2、房间号 该房为空房“2” 按用户信息查询,身份证号5222257 出现个人信“3” 退出,返回欢迎界面测试3:选择选项3,查询用户目前费用 “1”号房间,目前费用100元测试4:选择选项4,结账退房 “2”号
6、房间,空房,重输 “1”号房间,应支付100元,退房成功四、小结 此程序满足课程设计要求,实现登记、查询、结账等操作,并对不一样房间实施不一样收费标准,计算总费用等功效。 程序优点:整个程序界面友好,和用户有良好界面交流。程序虽简单,但功效齐全。 程序缺点: (1)数据结构单一。关键是学习c语言时间短,知识程度不深,不够全方面,知道不多。 (2)不会调用系统时间。在做课设过程中,我对c语言有了更深入了解。它很考察逻辑严密性,思绪条理要清楚是很关键,它包含你编写程序大致方向。严谨认真态度也不可或缺。调试程序过程中也能够提升自己了解已经加深本身熟练度。碰到问题要想方设法将它处理,看书找资料,请教同
7、学,和同学讨论,从这些方面我又能够学会合作。源码:/主函数/#define M 40#include#include#include#includedingyi.h#includejiegouti.h#includefind.h#includekfxinxi.h#includezuizhongfeiyong.h#includequit.h#includezhujiemian.h#includedengji.h#includedangqianruzhu.h#includedangqianfeiyong.h#includetuifang.h#includemima.h#includesave.h#
8、includeduru.h/*主函数*/ void main() int i,j; mima(); /密码/ duru(); /读入数据/ welcome(); /载入主界面/ scanf(%d,&i); switch(i) case 1:j=dengji();break; case 2:j=now_room();break; case 3:j=now_feiyong();break; case 4:j=tuifang();break; case 5:exit(0); default:quit(); while(j!=0) /操作结束可返回主界面/ welcome(); scanf(%d,&i
9、); switch(i) case 1:j=dengji();break; case 2:j=now_room();break; case 3:j=now_feiyong();break; case 4:j=tuifang();break; case 5:exit(0); default: quit(); /*登记入住*/int dengji() int i,j,a,k,n; system(cls); printf(nn登记入住nn); printf(请选择房间类型:nn); printf(1.单人间 2.双人间nn); scanf(%d,&n); switch(n) case 1:print
10、f(现在空闲单人房间有: n); for(i=1,j=0;i=M;i=i+2) if(roomi-1.flag=0)printf(%dt,i);j+; if(j%5=0) printf(n); /控制每行输出个数/ printf(安排用户想要房间: ); scanf(%d,&k);while(k%2=0)printf(!房号输入错误,请重新输入n);scanf(%d,&k); roomk-1.kind=1; roomk-1.num=k; printf(n请输入用户姓名: ); scanf(%s,roomk-1.name); printf(n请输入用户身份证号: ); scanf(%s,room
11、k-1.ID); while(strlen(roomk-1.ID)!=18) printf(!输入有误,请重新输入n); scanf(%s,roomk-1.ID); roomk-1.dingjia=100;printf(nn应该缴纳房费%d元,roomk-1.dingjia);printf(nn实际缴纳金额为: );scanf(%d,&roomk-1.shiji);while(roomk-1.shijiroomk-1.dingjia)printf(ttnn! 输入有误,请重新输入 !nn);printf(nn实际缴纳金额: );scanf(%d,&roomk-1.shiji);printf(n
12、n是否确定入住(1-是 2-否)n);scanf(%d,&a);while(a!=1&a!=2)printf(nntt!输入有误,请重新输入: ); scanf(%d,&a);if(a=1)roomk-1.flag=1; printf(n已成功登记!nn); save(); break; case 2:printf(现在空闲双人房间有: nn); for(i=2,j=0;i=M;i=i+2) if(roomi-1.flag=0) printf(%dt,i);j+; if(j%5=0) printf(nn); /控制每行输出个数/ printf(安排用户想要房间: ); scanf(%d,&k)
13、;while(k%2!=0)printf(!房号输入错误,请重新输入:n);scanf(%d,&k); roomk-1.kind=2; roomk-1.num=k; printf(n请输入用户姓名: ); scanf(%s,roomk-1.name); printf(n请输入用户身份证号: ); scanf(%s,roomk-1.ID); while(strlen(roomk-1.ID)!=18) printf(!输入有误,请重新输入:n); scanf(%s,roomk-1.ID); roomk-1.dingjia=200; printf(nn应该缴纳房费%d元,roomk-1.dingji
14、a); printf(nn实际缴纳金额为: ); scanf(%d,&roomk-1.shiji); while(roomk-1.shijiroomk-1.dingjia)printf(ttnn!输入有误,请重新输入:nn);printf(nn实际缴纳金额为: );scanf(%d,&roomk-1.shiji);printf(nn是否确定入住(1-是 2-否)n);scanf(%d,&a);while(a!=1&a!=2)printf(nntt!输入有误,请重新输入: ); scanf(%d,&a);if(a=1)roomk-1.flag=1; printf(n已成功登记!nn); save
15、();break; default: quit(); quit();return 1;/读取函数/void duru()FILE *fp;int i;if(fp=fopen(kf_dat,rb)=NULL)printf(cannot open file n);return ;for(i=0;iM;i+)fread(&roomi,sizeof(struct hotel),1,fp);fclose(fp);/*查询入住人数*/int find()int number=0;int i; for(i=0;i4|i1)printf(nntt 输入有误,请重新输入: ); scanf(%d,&i); el
16、se if(i=1) printf(nn请输入房间号: ); /按房号查询 scanf(%d,&j);if(roomj-1.flag=0)printf(nn此房间无人住nn);elseprintf(您个人信息为: ); kfxinxi(j-1);break; else if(i=2) printf(nn请输入您身份证号: ); /按用户信息查询 scanf(%s,a); while(1)for(k=0;kM;k+) if(strcmp(a,roomk.ID)=0)break; if(k!=M) printf(nn您个人信息为: ); kfxinxi(k);break; else printf(
17、ttnn1. 输入有误,请重新输入 2.不存在此人信息,退出 nn); scanf(%d,&s);if(s=1)printf(nn请输入您身份证号: ); scanf(%s,a);else return(1);break; else if(i=3)break; elseprintf(ttnn1. 输入有误,请重新输入 nn); printf(tt1. 按房号查询nntt2. 按用户信息查询nntt3. 按入住时间查询nntt4. 退出); printf(nn请选择: ); scanf(%d,&i);quit();/*退出函数*/int quit()int y; printf(是否需要返回主界面
18、? 1-是 2-否nn); scanf(%d,&y); if(y=1) welcome(); else printf(* 欢迎下次光临武科大酒店 *!nn); return 1;/保留函数/void save()FILE *fp;int i;if(fp=fopen(kf_dat,wb)=NULL)printf(cannot open file n);return ;for(i=0;i0) printf(找还用户%d元n,yu); else printf( 用户应再支付%d元n,yu*(-1); /*结账退房*/int tuifang() char zhonglei30; int n,m; sy
19、stem(cls); printf(nn结账退房nn); if(find()=0) printf(房间全部是空!nn); else printf(请输入需要退房房号: ); scanf(%d,&n); if(nM|n1) printf(nn输入有误,请重新输入:,M); scanf(%d,&n); if(roomn-1.flag=0) printf(空房,无法办理退房!nn); switch(roomn-1.kind) case 1:strcpy(zhonglei,单人间);break;case 2:strcpy(zhonglei,双人间);break; printf(房间号: %dn房间类型
20、: %sn客人姓名: %sn身份证号: %sn,roomn-1.num,zhonglei,roomn-1.name,roomn-1.ID);printf(nt房间定价为: %dn,roomn-1.dingjia);if(roomn-1.flag=1)shoufei(roomn-1.dingjia,roomn-1.shiji);printf(nn是否退房(1.是2.否) : );scanf(%d,&m); if(m=1) roomn-1.flag=0; strcpy(roomn-1.name,0); roomn-1.shiji=0; printf(nn您已成功退房,欢迎下次光临!nn); sav
21、e(); quit();return 1; /*主界面*/void welcome()int n;n=find();system(color 4F); printf(-); printf(欢迎进入武科大酒店管理系统n); printf(t 1. 入住登记 nn);/dengji()/ printf(t 2. 查询目前房间入住情况 nn);/ now_room()/ printf(t 3. 查询用户目前费用 nn); /now_feiyong()/ printf(t 4. 结账退房 nn);/ tuifang()/ printf(t 5. 退出系统 nn);/ printf(ttttt酒店总房间
22、数: %d nttttt目前剩下数: %dn,M,M-n); printf(nn); printf(请依据序号进行下一步: n); /*结构体hotel 房间号、房间种类、用户姓名、身份证号、入住状态、实际收房费,押金等*/struct hotel int num; /*房间号*/ int kind; /*房间种类 1(表示单人间) 2(表示双人间)*/ char name20; /*姓名*/ char ID19; /*身份证号*/ int flag; /*flag 0(表示有些人入住)0(表示无人入住)*/ int dingjia; /*房间定价*/ int shiji; /*实际缴纳费用*/roomM; /头文件用来申明函数/void welcome(); /主界面int dengji(); /登记入住函数int now_room(); /查询目前房间入住情况int now_feiyong(); /查询目前费用int tuifang(); /结账退房int find(); /查询目前入住人数int kfxinxi(); /用户信息void jiezhang(); /结账付款int quit(); /退出函数int mima();/密码/void save(); /保留/