收藏 分销(赏)

C语言实验报告大酒店标准管理系统.doc

上传人:精*** 文档编号:2934519 上传时间:2024-06-11 格式:DOC 页数:23 大小:66.04KB 下载积分:10 金币
下载 相关 举报
C语言实验报告大酒店标准管理系统.doc_第1页
第1页 / 共23页
C语言实验报告大酒店标准管理系统.doc_第2页
第2页 / 共23页


点击查看更多>>
资源描述
武汉科技大学 C语言程序设计 课 程 设 计 题 目 酒店管理系统 班 级 信息和计算科学2班 姓 名 陈诚 学 号 07119043 成 绩 6 月 23 日 一、 总体设计 1、 程序总体设计 (1) 程序总体设计思绪: 酒店房间登记管理系统,实现是房间登记和管理(包含登记入住、查询) 为了表现模块化设计,把全部要实现功效做成函数,采取分步实施方法逐步细化。具体分布实施有以下5步。 1,编写模块 2,定义实现个功效模块所要函数 3,编写各个函数 4,理清思绪,逐步修改 5,调试整个程序。 关键部分是各个函数: 1、欢迎界面函数:经过switch进入不一样界面。 2、登记入住函数:使用户在入住前登记个人信息,选择房间信息 3、 查询入住情况函数:用户可经过两种方法查找到自己个人信息。 4、 查询目前费用函数:用户可随时查询所用费用 5、 结账退房函数:全部信息清零。 2、数据结构 此系统,选择用结构体存放不一样类型数据,房间信息。在这过程中因为对指针利用和操作还不熟练,不方便修改,所以没用指针。 (1)创建房间信息结构体 /*结构体hotel 房间号、房间种类、用户姓名、身份证号、入住状态、实际收房费,押金等*/ struct hotel { int num; /*房间号*/ int kind; /*房间种类 1(表示单人间) 2(表示双人间)*/ char name[20]; /*姓名*/ char ID[19]; /*身份证号*/ int flag; /*flag 0(表示有些人入住)0(表示无人入住)*/ int dingjia; /*房间定价*/ int shiji; /*实际缴纳费用*/ }room[M]; 3、函数原型申明 void welcome(); //主界面 int dengji(); //登记入住函数 int now_room(); //查询目前房间入住情况 int now_feiyong(); //查询目前费用 int tuifang(); //结账退房 int find(); //查询目前入住人数 int kfxinxi(); //用户信息 void jiezhang(); //结账付款 int quit(); //退出函数 int mima();//密码// void save(); //保留// 二、具体设计 1、主函数设计 主函数说明:为满足用户登记入住,查询房间入住情况,查询目前费用,结账退房等功效实现,设计此函数。开始进入欢迎界面让用户选择,进入用户所选界面。 开 始 输入选择序号 进入所选功效函数 结 束 主函数步骤图 2、子函数步骤图 (1)登记入住函数说明:登 记入 住 房 间 已住 满 ? 已住满 未住满 输入相关信息 输入有误? 成功登记 结束 返回主函数 Y N 登记入住步骤图 (2)查询房间入住情况:2种查询方法(1. 按房号查询2. 用户信息查询),最终输出查询房间入住情况 选择查询方法(i) 1. 按房号查询 2. 按用户信息查询 i=1? i=2? i=3? 输入房间号 输入身份证号 返回主函数 结束 否 否 否 是 是 是 输出个人信息 结束 结账退房 全为空? 返回主函数 输入房间号 空房? 显示用户信息 输入相关信息 结 束 结账退房步骤图 三、测试 出现欢迎界面 测试1:选择选项1,入住登记 “1”按提醒输入信息(如:1-单人间,1-房间号,陈诚,5222257,200元,登记成功) 测试2:选择选项2,查询房间入住情况 “1”按房间号查询,1、房间号 出现刚登记个人信息 2、房间号 该房为空房 “2” 按用户信息查询,身份证号5222257 出现个人信 “3” 退出,返回欢迎界面 测试3:选择选项3,查询用户目前费用 “1”号房间,目前费用100元 测试4:选择选项4,结账退房 “2”号房间,空房,重输 “1”号房间,应支付100元,退房成功 四、小结 此程序满足课程设计要求,实现登记、查询、结账等操作,并对不一样房间实施不一样收费标准,计算总费用等功效。 程序优点:整个程序界面友好,和用户有良好界面交流。程序虽简单,但功效齐全。 程序缺点: (1)数据结构单一。关键是学习c语言时间短,知识程度不深,不够全方面,知道不多。 (2)不会调用系统时间。 在做课设过程中,我对c语言有了更深入了解。它很考察逻辑严密性,思绪条理要清楚是很关键,它包含你编写程序大致方向。严谨认真态度也不可或缺。调试程序过程中也能够提升自己了解已经加深本身熟练度。碰到问题要想方设法将它处理,看书找资料,请教同学,和同学讨论,从这些方面我又能够学会合作。 源码: //主函数// #define M 40 #include<stdlib.h> #include<stdio.h> #include<string.h> #include"dingyi.h" #include"jiegouti.h" #include"find.h" #include"kfxinxi.h" #include"zuizhongfeiyong.h" #include"quit.h" #include"zhujiemian.h" #include"dengji.h" #include"dangqianruzhu.h" #include"dangqianfeiyong.h" #include"tuifang.h" #include"mima.h" #include"save.h" #include"duru.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); 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("\n\n☆☆☆☆☆☆☆登记入住☆☆☆☆☆☆☆\n\n"); printf("请选择房间类型:\n\n"); printf("1.单人间 2.双人间\n\n"); scanf("%d",&n); switch(n) { case 1:printf("现在空闲单人房间有: \n"); for(i=1,j=0;i<=M;i=i+2) if(room[i-1].flag==0) { printf("%d\t",i);j++; if(j%5==0) printf("\n"); } //控制每行输出个数// printf("安排用户想要房间: "); scanf("%d",&k); while(k%2==0) {printf("!房号输入错误,请重新输入\n"); scanf("%d",&k);} room[k-1].kind=1; room[k-1].num=k; printf("\n请输入用户姓名: "); scanf("%s",room[k-1].name); printf("\n请输入用户身份证号: "); scanf("%s",room[k-1].ID); while(strlen(room[k-1].ID)!=18) {printf("!输入有误,请重新输入\n"); scanf("%s",room[k-1].ID);} room[k-1].dingjia=100; printf("\n\n应该缴纳房费%d元",room[k-1].dingjia); printf("\n\n实际缴纳金额为: "); scanf("%d",&room[k-1].shiji); while(room[k-1].shiji<room[k-1].dingjia) {printf("\t\t\n\n! 输入有误,请重新输入 !\n\n"); printf("\n\n实际缴纳金额: "); scanf("%d",&room[k-1].shiji);} printf("\n\n是否确定入住(1-是 2-否)\n"); scanf("%d",&a); while(a!=1&&a!=2) { printf("\n\n\t\t!输入有误,请重新输入: "); scanf("%d",&a); } if(a==1) { room[k-1].flag=1; printf("\n已成功登记!\n\n"); save(); } break; case 2:printf("现在空闲双人房间有: \n\n"); for(i=2,j=0;i<=M;i=i+2) if(room[i-1].flag==0) { printf("%d\t",i);j++; if(j%5==0) printf("\n\n"); } //控制每行输出个数// printf("安排用户想要房间: "); scanf("%d",&k); while(k%2!=0) {printf("!房号输入错误,请重新输入:\n"); scanf("%d",&k);} room[k-1].kind=2; room[k-1].num=k; printf("\n请输入用户姓名: "); scanf("%s",room[k-1].name); printf("\n请输入用户身份证号: "); scanf("%s",room[k-1].ID); while(strlen(room[k-1].ID)!=18) { printf("!输入有误,请重新输入:\n"); scanf("%s",room[k-1].ID); } room[k-1].dingjia=200; printf("\n\n应该缴纳房费%d元",room[k-1].dingjia); printf("\n\n实际缴纳金额为: "); scanf("%d",&room[k-1].shiji); while(room[k-1].shiji<room[k-1].dingjia) {printf("\t\t\n\n!输入有误,请重新输入:\n\n"); printf("\n\n实际缴纳金额为: "); scanf("%d",&room[k-1].shiji);} printf("\n\n是否确定入住(1-是 2-否)\n"); scanf("%d",&a); while(a!=1&&a!=2) { printf("\n\n\t\t!输入有误,请重新输入: "); scanf("%d",&a); } if(a==1) { room[k-1].flag=1; printf("\n已成功登记!\n\n"); save(); }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;i<M;i++) { fread(&room[i],sizeof(struct hotel),1,fp); } fclose(fp); } /*查询入住人数*/ int find() { int number=0; int i; for(i=0;i<M;i++) if(room[i].flag!=0) number++; return (number); } /*用户信息*/ int kfxinxi(int k) { char zhonglei[10]; switch(room[k].kind) { case 1:strcpy(zhonglei,"单人间");break; case 2:strcpy(zhonglei,"双人间");break; } printf("\n\n\t\t----姓名: "); puts(room[k].name);printf("\n\n"); printf("\t\t----身份证号: "); puts(room[k].ID);printf("\n\n"); printf("\t\t----房间种类: "); puts(zhonglei);printf("\n\n"); printf("\t\t----房间号: "); printf("%d",k+1);printf("\n\n"); printf("\t\t----实收房费: "); printf("%d元",room[k].shiji); printf("\n\n"); return(1); } //密码// int mima() { system("color 8f"); char name[10],mima[20]; printf("进入系统前请输入用户名和密码:\n"); scanf("%s%s",name,mima); while((strcmp(name,"CC")!=0)||(strcmp(mima,"0259")!=0))//比较输入和用户密码是否一致// { printf("输入错误,重新输入!\n"); scanf("%s%s",name,mima); } system("cls"); return (1); } /*查询目前费用*/ int now_feiyong() { int money,n; int i,s; system("cls"); printf("\n\n☆☆☆☆☆☆☆查询目前用户费用☆☆☆☆☆☆☆\n\n"); if(find()==0) printf("全为空房!\n\n"); else { printf("请输入房间号: "); scanf("%d",&i); while(1) { if(room[i-1].flag==0) { printf("\n\n该房为空房,1.重输2.退出\n\n"); scanf("%d",&s); if(s==1) { printf("请输入房间号: "); scanf("%d",&i);} else break; } else { printf("\n\n查询个人信息为: "); kfxinxi(i-1); printf("\n\n目前房间定价为: %d",room[n-1].dingjia); break; } break; } } quit(); return 1; } /*查询目前房间入住情况*/ int now_room() { int i,j,k,s; char a[20]; system("cls"); printf("\n\n☆☆☆☆☆☆☆查询房间入住☆☆☆☆☆☆☆\n\n"); printf("\t\t1. 按房号查询\n\n\t\t2. 按用户信息查询\n\n\t\t3. 退出"); printf("\n\n请选择: "); scanf("%d",&i); while(1) {if(i>4||i<1){printf("\n\n\t\t 输入有误,请重新输入: "); scanf("%d",&i);} else if(i==1) { printf("\n\n请输入房间号: "); //按房号查询 scanf("%d",&j); if(room[j-1].flag==0) printf("\n\n此房间无人住\n\n"); else { printf("您个人信息为: "); kfxinxi(j-1); } break; } else if(i==2) { printf("\n\n请输入您身份证号: "); //按用户信息查询 scanf("%s",a); while(1) { for(k=0;k<M;k++) if(strcmp(a,room[k].ID)==0)break; if(k!=M) {printf("\n\n您个人信息为: "); kfxinxi(k);break; } else {printf("\t\t\n\n1. 输入有误,请重新输入 2.不存在此人信息,退出 \n\n"); scanf("%d",&s); if(s==1) { printf("\n\n请输入您身份证号: "); scanf("%s",a);} else return(1);}}break;} else if(i==3)break; else{ printf("\t\t\n\n1. 输入有误,请重新输入 \n\n"); printf("\t\t1. 按房号查询\n\n\t\t2. 按用户信息查询\n\n\t\t3. 按入住时间查询\n\n\t\t4. 退出"); printf("\n\n请选择: "); scanf("%d",&i); } }quit();} /*退出函数*/ int quit() { int y; printf("是否需要返回主界面? 1-是 2-否\n\n"); scanf("%d",&y); if(y==1) welcome(); else printf("****** 欢迎下次光临武科大酒店 ******!\n\n"); return 1; } //保留函数// void save() { FILE *fp; int i; if((fp=fopen("kf_dat","wb"))==NULL) { printf("cannot open file \n"); return ; } for(i=0;i<M;i++) if(fwrite(&room[i],sizeof(struct hotel),1,fp)!=1) printf("file write error \n"); fclose(fp); } /*最终收费用*/ void shoufei( int dingjia,int shiji) { int yu; yu=shiji-dingjia; if(yu==0) printf("费用刚刚好,不用找零或补钱\n"); else if(yu>0) printf("找还用户%d元\n",yu); else printf(" 用户应再支付%d元\n",yu*(-1)); } /*结账退房*/ int tuifang() { char zhonglei[30]; int n,m; system("cls"); printf("\n\n☆☆☆☆☆☆☆结账退房☆☆☆☆☆☆☆\n\n"); if(find()==0) printf("房间全部是空!\n\n"); else { printf("请输入需要退房房号: "); scanf("%d",&n); if(n>M||n<1) { printf("\n\n输入有误,请重新输入:",M); scanf("%d",&n); } if(room[n-1].flag==0) printf("空房,无法办理退房!\n\n"); switch(room[n-1].kind) { case 1:strcpy(zhonglei,"单人间");break; case 2:strcpy(zhonglei,"双人间");break; } printf("房间号: %d\n房间类型: %s\n客人姓名: %s\n身份证号: %s\n",room[n-1].num,zhonglei,room[n-1].name,room[n-1].ID); printf("\n\t房间定价为: %d\n",room[n-1].dingjia); if(room[n-1].flag==1) shoufei(room[n-1].dingjia,room[n-1].shiji); printf("\n\n是否退房(1.是2.否) : "); scanf("%d",&m); if(m==1) { room[n-1].flag=0; strcpy(room[n-1].name,"0"); room[n-1].shiji=0; printf("\n\n您已成功退房,欢迎下次光临!\n\n"); save(); } } quit(); return 1; } /*主界面*/ void welcome() { int n; n=find(); system("color 4F"); printf("--------------------------------------------------------------------------------"); printf("▼▼▼▼▼▼▼▼▼▼▼▼▼▼欢迎进入武科大酒店管理系统▼▼▼▼▼▼▼▼▼▼▼▼▼\n"); printf("\t ★★★ 1. 入住登记 \n\n");//dengji()// printf("\t ★★★ 2. 查询目前房间入住情况 \n\n");// now_room()// printf("\t ★★★ 3. 查询用户目前费用 \n\n"); //now_feiyong()// printf("\t ★★★ 4. 结账退房 \n\n");// tuifang()// printf("\t ★★★ 5. 退出系统 \n\n");// printf("\t\t\t\t\t酒店总房间数: %d \n\t\t\t\t\t目前剩下数: %d\n",M,M-n); printf("\n▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲\n"); printf("请依据序号进行下一步: \n"); } /*结构体hotel 房间号、房间种类、用户姓名、身份证号、入住状态、实际收房费,押金等*/ struct hotel { int num; /*房间号*/ int kind; /*房间种类 1(表示单人间) 2(表示双人间)*/ char name[20]; /*姓名*/ char ID[19]; /*身份证号*/ int flag; /*flag 0(表示有些人入住)0(表示无人入住)*/ int dingjia; /*房间定价*/ int shiji; /*实际缴纳费用*/ }room[M]; //头文件用来申明函数// void welcome(); //主界面 int dengji(); //登记入住函数 int now_room(); //查询目前房间入住情况 int now_feiyong(); //查询目前费用 int tuifang(); //结账退房 int find(); //查询目前入住人数 int kfxinxi(); //用户信息 void jiezhang(); //结账付款 int quit(); //退出函数 int mima();//密码// void save(); //保留//
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 行业资料 > 酒店餐饮

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服