收藏 分销(赏)

C语言课程设计酒店房间登记与计费管理系统源代码.doc

上传人:精**** 文档编号:2931645 上传时间:2024-06-11 格式:DOC 页数:17 大小:76KB 下载积分:8 金币
下载 相关 举报
C语言课程设计酒店房间登记与计费管理系统源代码.doc_第1页
第1页 / 共17页
C语言课程设计酒店房间登记与计费管理系统源代码.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
酒店房间登记与计费管理系统源代码 #define M 80 #include<stdlib.h> #include<stdio.h> #include<string.h> /*函数声明*/ void check_in(); /*登记入住函数*/ void chamber(); /*入住情况函数*/ void price(); /*当前费用函数*/ void fee(); /*结账退房函数*/ void infor(); /*信息查询函数*/ void save(int); /*保存信息函数*/ void read(int); /*读取信息函数*/ void choice(); /*功能选择函数*/ int judge_year(int); /*判断闰年函数*/ void information(); /*输出全部房间信息*/ /*结构体*/ struct time {int year; int mon; int date; int hour; }; struct room /*定义各房间信息的结构体*/ {char name[40]; char ID[18]; int flag; /* 0-无人入住,1-按小时计费,2-按天计费 */ long int deposit; time t[2]; /* 0-入住时间,1-当前时间 */ }room[M]; char c1[40]={0}; char c2[18]={0}; /*主函数(主界面)*/ void main() {system("cls"); /*清屏*/ system("color 4E"); int n; printf("********************************************************************************"); printf("** **"); printf("**\t\t ---------- 欢迎光临万豪酒店 ---------- **"); printf("** **"); printf("********************************************************************************\n\n"); printf("\t\t\t [ 1. 登记入住 ]\n\n"); printf("\t\t\t [ 2. 入住情况 ]\n\n"); printf("\t\t\t [ 3. 当前费用 ]\n\n"); printf("\t\t\t [ 4. 结账退房 ]\n\n"); printf("\t\t\t [ 5. 信息查询 ]\n\n"); printf("\t\t\t [ 6. 全部信息 ]\n\n"); printf("\t\t\t [ 7. 退出系统 ]\n\n"); printf("请输入您需要的服务的代码:"); scanf("%d",&n); while(n<1||n>7) {printf("\n\n代码输入有误,请您重新输入:"); scanf("%d",&n); } switch(n) /*根据输入数字选择功能*/ {case 1:check_in();break; /*调用登记入住函数*/ case 2:chamber();break; /*调用房间情况函数*/ case 3:price();break; /*调用当前费用函数*/ case 4:fee();break; /*调用结账退房函数*/ case 5:infor();break; /*调用信息查询函数*/ case 6:information();break; /*调用全部信息函数*/ case 7:exit(0); /*调用退出系统函数*/ } } /*查看房间使用情况函数*/ void chamber() {system("cls"); /*清屏*/ system("color 4E"); printf("\n**********************************房间使用情况**********************************\n"); int count=0; int i; int j; int k; int m; for(i=1;i<=80;i++) /*统计未入住房间总数*/ {read(i); if(room[i-1].flag==0) count++;} printf("当前未使用房间数:%d\n\n\n",count); chaxun: printf("请输入你要查询的房间号(1-40:单人间,41-80:双人间):"); /*输入房间号查询房间入住情况*/ scanf("%d",&m); while(m<1||m>80) {printf("\n\n房间号输入有误,请您重新输入:"); scanf("%d",&m); } read(m); while(room[m-1].flag!=0) {printf("\n\n对不起,该房间已有客人入住,请输入其他房间号:"); scanf("%d",&m); read(m);} printf("\n\n该房间没有客人入住,您要入住该房间吗?(1-是,2-否):"); scanf("%d",&j); while(j<1||j>2) {printf("\n\n您的选择输入有误,请您重新输入:"); scanf("%d",&j); } if(j==1) check_in(); else {printf("\n\n您需要继续查询吗?(1-是,2-否):"); scanf("%d",&k); while(k<1||k>2) {printf("\n\n您的选择输入有误,请您重新输入:"); scanf("%d",&k); } if(k==1) goto chaxun; else {printf("\n\n"); main();} } } /*登记入住函数*/ void check_in() {system("cls"); /*清屏*/ system("color 4E"); int i; int j; int l; int k; int tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; printf("\n************************************登记入住************************************\n"); printf("请输入您将入住的房间号:"); scanf("%d",&i); while(i<1||i>80) {printf("\n\n房间号输入有误,请您重新输入:"); scanf("%d",&i); } read(i); while(room[i-1].flag!=0) /*判断房间是否入住*/ {printf("\n\n对不起,该房间已有客人入住,请输入其他房间号:"); scanf("%d",&i); read(i);} printf("\n\n请输入您的姓名:"); /*客人信息登记*/ scanf("%s",room[i-1].name); j=strlen(room[i-1].name); while(j<0) {printf("\n\n您的姓名输入有误,请您重新输入:\n"); scanf("%s",room[i-1].name); j=strlen(room[i-1].name); } printf("\n\n请输入您的证件号码:"); scanf("%s",room[i-1].ID); j=strlen(room[i-1].ID); while(j!=18) {printf("\n\n您的证件号码输入有误,请您重新输入:\n"); scanf("%s",room[i-1].ID); j=strlen(room[i-1].ID); } if(i<=40) {printf("\n\n您选择的是单人间,该房间148元/天,8元/小时。\n\n\n"); /*选择计费方式*/ printf("请选择您的计费方式(1:按小时计费,2:按天计费):"); } else {printf("\n\n您选择的是双人间,该房间128元/天,7元/小时。\n\n\n"); printf("请选择您的计费方式(1:按小时计费,2:按天计费):"); } scanf("%d",&room[i-1].flag); while(room[i-1].flag<0||room[i-1].flag>2) {printf("\n\n您的计费方式输入有误,请您重新输入:"); scanf("%d",&room[i-1].flag); } printf("\n\n请按所示格式输入您的入住时间(年-月-日-时,时为24小时制):"); scanf("%d-%d-%d-%d",&room[i-1].t[0].year,&room[i-1].t[0].mon,&room[i-1].t[0].date,&room[i-1].t[0].hour); l=judge_year(room[i-1].t[0].year); while((room[i-1].t[0].year<=0)||(room[i-1].t[0].mon<=0||room[i-1].t[0].mon>12)||(room[i-1].t[0].date<=0||room[i-1].t[0].date>tab[l][room[i-1].t[0].mon-1])||(room[i-1].t[0].hour<0||room[i-1].t[0].hour>=24)) {printf("\n\n您的入住时间输入有误,请按照格式重新输入:"); scanf("%d-%d-%d-%d",&room[i-1].t[0].year,&room[i-1].t[0].mon,&room[i-1].t[0].date,&room[i-1].t[0].hour); l=judge_year(room[i-1].t[0].year); } printf("\n\n请输入您的押金数额:"); scanf("%ld",&room[i-1].deposit); while(room[i-1].deposit<=0) {printf("\n\n您的押金数额输入有误,请您重新输入:\n"); scanf("%ld",&room[i-1].deposit); } printf("\n\n您是否确定您的信息:(1-是,2-否):"); scanf("%d",&k); while(k<1||k>2) {printf("\n\n您的选择输入有误,请您重新输入:\n"); scanf("%d",&k); } if(k==1) {printf("\n\n您已登记入住成功,祝您在本店住得愉快!\n\n"); save(i); choice(); } else check_in(); } /*费用查询函数*/ void price() {system("cls"); /*清屏*/ system("color 4E"); printf("\n************************************费用查询************************************\n"); int i; int j; int k; int tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int day=0; int hr=0; int total_hour; int total_day; long int price; printf("请输入您的房间号:"); scanf("%d",&i); while(i<1||i>80) {printf("\n\n您的房间号输入有误,请您重新输入:"); scanf("%d",&i); } read(i); while(room[i-1].flag==0) /*判断房间是否已有客人入住*/ {printf("\n\n该房间无人入住,请重新输入您的房间号:"); scanf("%d",&i); read(i); } printf("\n\n请按所示格式输入当前时间(年-月-日-时,时为24小时制):"); /*输入当前时间*/ shuru: scanf("%d-%d-%d-%d",&room[i-1].t[1].year,&room[i-1].t[1].mon,&room[i-1].t[1].date,&room[i-1].t[1].hour); j=judge_year(room[i-1].t[1].year); while((room[i-1].t[1].year<=0)||(room[i-1].t[1].mon<=0||room[i-1].t[1].mon>12)||(room[i-1].t[1].date<=0||room[i-1].t[1].date>tab[j][room[i-1].t[1].mon-1])||(room[i-1].t[1].hour<0||room[i-1].t[1].hour>=24)) {printf("\n\n您的入住时间输入有误,请按照格式重新输入:"); scanf("%d-%d-%d-%d",&room[i-1].t[1].year,&room[i-1].t[1].mon,&room[i-1].t[1].date,&room[i-1].t[1].hour); j=judge_year(room[i-1].t[1].year); } if(room[i-1].t[0].mon!=room[i-1].t[1].mon) {for(k=room[i-1].t[0].mon+1;k<room[i-1].t[1].mon;k++) {day+=tab[j][k-1]; } day+=tab[j][room[i-1].t[0].mon-1]-room[i-1].t[0].date+room[i-1].t[1].date; } else {day+=room[i-1].t[1].date-room[i-1].t[0].date;} hr=room[i-1].t[1].hour-room[i-1].t[0].hour; if(room[i-1].flag==1) /*根据房间类型和计费方式计算费用*/ {if(hr<0) {total_hour=day*24-hr;} else {total_hour=day*24+hr;} if(i<=40) price=8*total_hour; else price=7*total_hour; } if(room[i-1].flag==2) {while(hr<0) {day=day-1;hr=hr+24;} if(hr<8) {total_day=day;} else {total_day=day+1;} if(i<=40) price=148*total_day; else price=128*total_day; } while(price<0) {printf("您的时间输入有误,请重新输入:"); goto shuru; } printf("\n\n当前费用为:%ld元.\n\n",price); /*输出当前费用*/ choice(); } /*结账退房函数*/ void fee() {system("cls"); system("color 4E"); printf("\n************************************结账退房************************************\n"); int i; int j; int k; int tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int day=0; int hr=0; int total_hour; int total_day; long int price; long int fee; printf("请输入您的房间号:"); scanf("%d",&i); while(i<1||i>80) {printf("\n\n您的房间号输入有误,请您重新输入:"); scanf("%d",&i); } read(i); while(room[i-1].flag==0) /*判断房间是否有客人入住*/ {printf("\n\n该房间无人入住,请重新输入您的房间号:"); scanf("%d",&i); read(i); } printf("\n\n请按所示格式输入当前时间(年-月-日-时,时为24小时制):"); /*输入当前时间*/ shuru: scanf("%d-%d-%d-%d",&room[i-1].t[1].year,&room[i-1].t[1].mon,&room[i-1].t[1].date,&room[i-1].t[1].hour); j=judge_year(room[i-1].t[1].year); while((room[i-1].t[1].year<=0)||(room[i-1].t[1].mon<=0||room[i-1].t[1].mon>12)||(room[i-1].t[1].date<=0||room[i-1].t[1].date>tab[j][room[i-1].t[1].mon-1])||(room[i-1].t[1].hour<0||room[i-1].t[1].hour>=24)) {printf("\n\n您的入住时间输入有误,请按照格式重新输入:"); scanf("%d-%d-%d-%d",&room[i-1].t[1].year,&room[i-1].t[1].mon,&room[i-1].t[1].date,&room[i-1].t[1].hour); j=judge_year(room[i-1].t[1].year); } if(room[i-1].t[0].mon!=room[i-1].t[1].mon) {for(k=room[i-1].t[0].mon+1;k<room[i-1].t[1].mon;k++) {day+=tab[j][k-1]; } day+=tab[j][room[i-1].t[0].mon-1]-room[i-1].t[0].date+room[i-1].t[1].date; } else {day+=room[i-1].t[1].date-room[i-1].t[0].date;} hr=room[i-1].t[1].hour-room[i-1].t[0].hour; if(room[i-1].flag==1) /*根据房间类型和计费方式计算费用*/ {if(hr<0) {total_hour=day*24-hr;} else {total_hour=day*24+hr;} if(i<=40) price=8*total_hour; else price=7*total_hour; } if(room[i-1].flag==2) {while(hr<0) {day=day-1;hr=hr+24;} if(hr<8) {total_day=day;} else {total_day=day+1;} if(i<=40) price=148*total_day; else price=128*total_day; } while(price<0) {printf("您的时间输入有误,请重新输入:"); goto shuru; } fee=price-room[i-1].deposit; if(fee>0) /*输出最后的总费用*/ {printf("\n\n扣除押金后,您另需支付费用%ld元。",fee);} else if(fee==0) {printf("\n\n您所交纳的押金恰好能够支付您的住房费用,您无需另行交钱。");} else {printf("\n\n您所交纳的押金还未使用完,本宾馆应支付您余额%ld元。",-fee);} printf("\n\n\n您已退房成功,感谢您的光临,我们下次再见!\n\n"); room[i-1].flag=0; strcpy(room[i-1].name,c1); strcpy(room[i-1].ID,c2); room[i-1].deposit=0; room[i-1].t[0].year=0; room[i-1].t[0].mon=0; room[i-1].t[0].date=0; room[i-1].t[0].hour=0; room[i-1].t[1].year=0; room[i-1].t[1].mon=0; room[i-1].t[1].date=0; room[i-1].t[1].hour=0; save(i); choice(); } /*信息查询函数*/ void infor() {system("cls"); system("color 4E"); printf("\n************************************信息查询************************************\n"); int i; printf("请输入您的房间号:"); scanf("%d",&i); while(i<1||i>80) {printf("\n\n您的房间号输入有误,请您重新输入:"); scanf("%d",&i); } read(i); while(room[i-1].flag==0) /*判断房间是否有客人入住*/ {printf("\n\n该房间无人入住,请重新输入您的房间号:"); scanf("%d",&i); read(i); } printf("\n\n您的信息如下:\n\n\n"); /*输出客人信息*/ printf("姓名:"); puts(room[i-1].name); printf("\n\n"); printf("证件号码:"); puts(room[i-1].ID); printf("\n\n"); printf("房间类型:"); if(i<=40) {printf("单人间\n\n\n");} else {printf("双人间\n\n\n");} printf("计费方式:"); if(room[i-1].flag==1) {printf("按小时计费\n\n\n");} else {printf("按天计费\n\n\n");} printf("入住时间:"); printf("%d年%d%月%d日%d时\n\n\n",room[i-1].t[0].year,room[i-1].t[0].mon,room[i-1].t[0].date,room[i-1].t[0].hour); printf("押金数额:"); printf("%ld元\n\n",room[i-1].deposit); choice(); } /*功能选择函数*/ void choice() {printf("\n************************************功能选择************************************\n"); printf("\t\t\t [ 1. 入住情况 ]\n"); printf("\t\t\t [ 2. 登记入住 ]\n"); printf("\t\t\t [ 3. 当前费用 ]\n"); printf("\t\t\t [ 4. 结账退房 ]\n"); printf("\t\t\t [ 5. 信息查询 ]\n"); printf("\t\t\t [ 6. 回主界面 ]\n"); printf("\t\t\t [ 7. 全部信息 ]\n"); printf("\t\t\t [ 8. 退出系统 ]\n"); int k; printf("请选择您需要的服务:"); /*服务选择*/ scanf("%d",&k); while(k<1||k>8) {printf("\n\n代码输入有误,请您重新输入:"); scanf("%d",&k); } switch(k) { case 1:chamber();break; /*调用房间情况函数*/ case 2:check_in();break; /*调用登记入住函数*/ case 3:price();break; /*调用当前费用函数*/ case 4:fee();break; /*调用结账退房函数*/ case 5:infor();break; /*调用信息查询函数*/ case 6:main();break; /*调用主函数*/ case 7:information();break; /*调用全部信息函数*/ case 8:exit(0); /*调用退出系统函数*/ } } /*判断闰年函数*/ int judge_year(int x) {if((x%4==0)&&(x%100!=0)||(x%400==0)) return(1); else return(0); } /*全部信息查询*/ void information() {system("cls"); printf("\n************************************全部信息************************************\n"); int i; int j; int k; int year; int month; int date; int hour; int year1; int month1; int day1; int hour1; int tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int day=0; int hr=0; int total_hour; int total_day; long int price; printf("\n\n请按所示格式输入当前时间(年-月-日-时,时为24小时制):"); /*输入当前时间*/ scanf("%d-%d-%d-%d",&year,&month,&date,&hour); j=judge_year(year); for(i=1;i<=80;i++) {read(i); if(room[i-1].flag==0) {printf("房间%d无人入住。\n",i); if(i<=40) {printf("房间类型:单人间。\n"); printf("单价:148元/天,8元/小时。\n");} else {printf("房间类型:双人间。\n"); printf("单价:128元/天,7元/小时。\n");} } else {year1=year-room[i-1].t[0].year; month1=month-room[i-1].t[0].mon; day1=date-room[i-1].t[0].date; hour1=hour-room[i-1].t[0].hour; while(hour1<0) {day1=day1-1;hour1=hour1+24;} printf("房间%d客户信息如下:\n",i); printf("姓名:"); puts(room[i-1].name); printf("证件号码:"); puts(room[i-1].ID); printf("房间类型:"); if(i<=40) {printf("单人间\n"); printf("单价:148元/天,8元/小时。\n"); } else {printf("双人间\n"); printf("单价:128元/天,7元/小时。\n"); } printf("计费方式:"); if(room[i-1].flag==1) {printf("按小时计费\n");} else {printf("按天计费\n");} printf("入住时间:"); printf("%d年%d%月%d日%d时\n",room[i-1].t[0].year,room[i-1].t[0].mon,room[i-1].t[0].date,room[i-1].t[0].hour); printf("已入住时间:%d年%d月%d天%d小时。\n",year1,month1,day1,hour1); printf("押金数额:"); printf("%ld元",room[i-1].deposit); if(room[i-1].t[0].mon!=month) {for(k=room[i-1].t[0].mon+1;k<month;k++) {day+=tab[j][k-1]; } day+=tab[j][room[i-1].t[0].mon-1]-room[i-1].t[0].date+date; } else {day+=date-room[i-1].t[0].date;} hr=hour-room[i-1].t[0].hour; if(room[i-1].flag==1) /*根据房间类型和计费方式计算费用*/ {if(hr<0) {total_hour=day*24-hr;} else {total_hour=day*24+hr;} if(i<=40) price=8*total_hour; else price=7*total_hour; } if(room[i-1].flag==2) {while(hr<0) {day=day-1;hr=hr+24;} if(hr<8) {total_day=day;} else {total_day=day+1;} if(i<=40) price=148*total_day; else price=128*total_day; } printf("\n当前费用为:%ld元.\n",price); /*输出当前费用*/ } day=0;hr=0; /*时间清零*/ } choice(); } /*保存信息函数*/ void save(int x) {int i; char c; FILE *fp; if((fp=fopen("酒店房间登记与计费管理系统信息存储文件.txt","wb+"))==NULL) {printf("无法打开文件。\n\n\n"); printf("请按任意键返回主菜单,并选择“退出系统”选项,在修改错误后再运行此系统。\n\n"); scanf("%s",&c); main(); } for(i=1;i<=x;i++) if(fwrite(&room[i-1],sizeof(struct ro
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服