1、C语言实验分析报告酒店管理系统C语言实验报告-酒店管理系统 作者: 日期: 武汉科技大学 C语言程序设计 课 程 设 计 题 目 酒店管理系统 班 级 信息与计算科学2班 姓 名 陈诚 学 号 201407119043 成 绩 2015年 6 月 23 日一、 总体设计1、 程序的总体设计(1) 程序总体设计思路:酒店房间登记管理系统,实现的是房间登记与管理(包括登记入住、查询)为了体现模块化设计,把所有要实现的功能做成函数,采用分步实施的方法逐步细化。具体分布实施有以下5步。1,编写模块2,定义实现个功能模块所要函数 3,编写各个函数 4,理清思路,逐步修改5,调试整个程序。核心部分是各个函
2、数:1、欢迎界面函数:通过switch进入不同界面。2、登记入住函数:使用户在入住前登记个人信息,选择房间信息3、 查询入住情况函数:顾客可通过两种方式查找到自己的个人信息。4、 查询当前费用函数:顾客可随时查询所用费用5、 结账退房函数:所有信息清零。 2、数据结构 此系统,选择用结构体存放不同类型的数据,房间信息。在这过程中由于对指针的运用与操作还不熟练,不方便修改,所以没用指针。(1)创建房间信息结构体 /*结构体hotel 房间号、房间种类、客户姓名、身份证号、入住状态、实际收房费,押金等*/struct hotel int num; /*房间号*/ int kind; /*房间种类
3、1(表示单人间) 2(表示双人间)*/ char name20; /*姓名*/ char ID19; /*身份证号*/ 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 kfxin
4、xi(); /客户信息void jiezhang(); /结账付款int quit(); /退出函数int mima();/密码/void save(); /保存/二、详细设计1、主函数设计主函数说明:为满足顾客登记入住,查询房间入住情况,查询当前费用,结账退房等功能的实现,设计此函数。开始进入欢迎界面让顾客选择,进入顾客所选界面。主函数流程图2、子函数流程图(1)登记入住函数说明:登记入住流程图(2)查询房间入住情况:2种查询方式(1. 按房号查询2. 客户信息查询),最终输出 结账退房流程图三、测试出现欢迎界面测试1:选择选项1,入住登记 “1”按提示输入信息(如:1-单人间,1-房间号,
5、陈诚,522225*,200元,登记成功)测试2:选择选项2,查询房间入住情况“1”按房间号查询,1、房间号 出现刚登记的个人信息 2、房间号 该房为空房“2” 按客户信息查询,身份证号522225199609230037 出现个人信“3” 退出,返回欢迎界面测试3:选择选项3,查询客户当前费用 “1”号房间,当前费用100元测试4:选择选项4,结账退房 “2”号房间,空房,重输 “1”号房间,应支付100元,退房成功四、小结 此程序满足课程设计要求,实现登记、查询、结账等操作,并对不同房间实施不同收费标准,计算总费用等功能。 程序优点:整个程序界面友好,与顾客有良好的界面交流。程序虽简单,但
6、功能齐全。 程序缺点: (1)数据结构单一。主要是学习c语言时间短,知识程度不深,不够全面,知道的不多。 (2)不会调用系统时间。在做课设的过程中,我对c语言有了更深入的了解。它很考察逻辑的严密性,思路条理要清晰是很重要的,它包含你编写程序的大致方向。严谨认真的态度也不可或缺。调试程序过程中也可以提升自己的理解已经加深自身熟练度。遇到问题要想方设法将它解决,看书找资料,请教同学,与同学讨论,从这些方面我又可以学会合作。源码:/主函数/#define M 40#include#include#include#includedingyi.h#includejiegouti.h#includefin
7、d.h#includekfxinxi.h#includezuizhongfeiyong.h#includequit.h#includezhujiemian.h#includedengji.h#includedangqianruzhu.h#includedangqianfeiyong.h#includetuifang.h#includemima.h#includesave.h#includeduru.h/*主函数*/ void main() int i,j; mima(); /密码/ duru(); /读入数据/ welcome(); /载入主界面/ scanf(%d,&i); switch(i
8、) 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); switch(i) case 1:j=dengji();break; case 2:j=now_room();break; case 3:j=now_feiyong();break; case 4:j=tuifang
9、();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:printf(现在空闲的单人房间有: 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); /控制每行输出个数/ p
10、rintf(安排客户想要的房间: ); 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,roomk-1.ID); while(strlen(roomk-1.ID)!=18) printf(!输入有误,请重新输入n); scanf(%s,roomk-1.ID); roomk-1.dingjia=100;
11、 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(nn是否确认入住(1-是 2-否)n);scanf(%d,&a);while(a!=1&a!=2) printf(nntt!输入有误,请重新输入: ); scanf(%d,&a);if(a
12、=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); while(k%2!=0) printf(!房号输入错误,请重新输入:n); scanf(%d,&k); roomk-1.kind=2; roomk-1.num=k; pri
13、ntf(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.dingjia); printf(nn实际缴纳的金额为: ); scanf(%d,&roomk-1.shiji); while(roomk-1.shijiroomk-1.dingj
14、ia) 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();break; default: quit(); quit();return 1;/读取函数/void duru() FILE *fp; int i;
15、 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); else if(i=1) printf(nn请输入房间号: ); /按房号查询 scanf(%d,&j); if(roomj-1.flag=0
16、) printf(nn此房间无人住nn); else printf(您的个人信息为: ); 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(ttnn1. 输入有误,请重新输入 2.不存在此人信息,退出 nn); scanf(%d,&s); if(s=1) pr
17、intf(nn请输入您的身份证号: ); scanf(%s,a); else return(1);break; else if(i=3)break; else printf(ttnn1. 输入有误,请重新输入 nn); printf(tt1. 按房号查询nntt2. 按客户信息查询nntt3. 按入住时间查询nntt4. 退出); printf(nn请选择: ); scanf(%d,&i); quit();/*退出函数*/int quit()int y; printf(是否需要返回主界面? 1-是 2-否nn); scanf(%d,&y); if(y=1) welcome(); else pr
18、intf(* 欢迎下次光临武科大酒店 *!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; system(cls); printf(nn结账退房nn); if(find()=0) printf
19、(房间都是空的!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房间类型: %sn客人姓名: %sn身份证号: %sn,roomn-1.num,zhonglei,r
20、oomn-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); save(); quit();return 1; /*主界面*/void welcome() int n; n=find(); system(color 4F); printf(-); printf(欢迎进入武科大酒店管理系统n); printf(t 1. 入住登记 nn);/dengji()/ printf(t 2. 查询当前房
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1