课程设计宾馆管理系统C语言版.doc
《课程设计宾馆管理系统C语言版.doc》由会员分享,可在线阅读,更多相关《课程设计宾馆管理系统C语言版.doc(44页珍藏版)》请在咨信网上搜索。
课程设计宾馆管理系统C语言版 44 2020年4月19日 文档仅供参考,不当之处,请联系改正。 中 原 工 学 院 软件职业技术学院 一级实践环节报告 课题名称: 宾馆客房管理系统 专 业: NET软件 班 级: NET104 学 号: 36 学生姓名: 李新辉 指导教师: 罗菁 年 月 日 一、题目 宾馆客房管理系统 二、流程分析 宾 馆 客 房 管 理 系 统 客房登记 客户查询 房间查询 退房结算 房间数 选择类型 订金 客户基本信息登记 客房号查询 姓名查询 空房间查询 查询所有客户 查询所有房间 房间号 确定 退房日期 结算 三、源代码 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h>//将字符转化为小写字母函数 #define Z 50 //宾馆的房间数 #define AY 800 #define BY 600 #define CY 300 #define AJ 15 #define BJ 20 #define CJ (Z-AJ-BJ) struct hotle { unsigned int num; char dj; //各种等级类型 unsigned int money; int fk;//判断房间的空闲状况0为空,为有人 }room[Z]; struct date { int month; int day; }; struct people { char name[20]; char ID[15]; unsigned int num0;//房间号 unsigned int money0;//客人交的订金 struct date ru; struct date chu; }kehu[Z]; void saveroom(); void loadroom(); void printroom(); void save(int s); void save1(int s); int loadn(); void saven(int n); void savekehu2(int t,int m); ///////录入宾馆房间信息////////////// void luru() { int a0,b0,c0; a0=b0=c0=0; int i; for(i=0;i<AJ;i++) { room[i].num=((a0++)+601); room[i].dj ='A'; room[i].money =AY; room[i].fk=0; } for(i=AJ;i<(BJ+AJ);i++) { room[i].num=((b0++)+501); room[i].dj ='B'; room[i].money =BY; room[i].fk=0; } for(i=(AJ+BJ);i<Z;i++) { room[i].num=((c0++)+401); room[i].dj ='C'; room[i].money =CY; room[i].fk=0; } saveroom(); } void saveroom()//储存房间信息 { FILE *fp; fp=fopen("my hotle.text","wb"); for(int i=0;i<Z;i++)// { if(fwrite(&room[i],sizeof(struct hotle),1,fp)!=1) {printf("文件写入失败\n");break;} } fclose(fp); } void loadroom() { FILE *fp; int i; if((fp=fopen("my hotle.text","rb"))==NULL) {printf("打开文件失败\n");return;} for(i=0;i<Z;i++) { if(fread(&room[i],sizeof(struct hotle),1,fp)!=1) {printf("读取文件失败\n");break;} } printf("读取成功!\n"); fclose(fp); } void printroom()/////输出各个房间的信息////////// { //loadroom(); printf("客房号 客房等级 客房价格 客房空闲(为空)\n"); for(int i=0;i<Z;i++) { printf("%-18d%-12c%-18d%-15d\n",room[i].num,room[i].dj,room[i].money,room[i].fk); } } ///////////////输出各类型空房间的信息/////////////// void printkong(char ch) { loadroom(); int i; switch(ch) { case 'a': { printf("A类(豪华套房)空房间信息 客房号 客房价格 \n"); for(i=0;i<AJ;i++) { if(room[i].fk==0) { printf("\t\t\t%11d%15d\n",room[i].num,room[i].money); } } break; } case 'b': { printf("B类(中档套房)空房间信息 客房号 客房价格 \n"); for(i=AJ;i<(AJ+BJ);i++) { if(room[i].fk==0) { printf("\t\t\t%11d%15d\n",room[i].num,room[i].money); } } break; } case 'c': { printf("C类(单人公寓)空房间信息 客房号 客房价格 \n"); for(i=(AJ+BJ);i<Z;i++) { if(room[i].fk==0) { printf("\t\t\t%11d%15d\n",room[i].num,room[i].money); } } break; } } } //////////////////选房间号//////////////////// unsigned int panduan(unsigned int num1,char ch) { int temp;//记录房间号 int i; loadroom(); for(i=0;i<Z;i++) { if(room[i].num==num1&&(tolower(room[i].dj))==ch) return temp=i; } printf("请检查您选择的房间号是否有误!\n"); return (Z+2); } /////////订房登记////////// int n;//已订的房间数 void dengji() { int s;//每次所订的房间数 n=loadn();//读取每次文件中已订房间数的值 int flag=0;///真假判断 char ch;//用来选取房间等级 unsigned int money1;//预付金额 FILE *fp; unsigned int t;// printf("请输入您要订的房间数\n"); scanf("%d",&s); do { getchar();//接收输入中的回车 printf("请选择您所订房间的类型 A(豪华套房) B(中档套房) C(单人公寓)\n"); ch=getchar(); } while(!(tolower(ch)=='a'||tolower(ch)=='b'||tolower(ch)=='c')); for(int i=0;i<s;i++) { //loadroom(); switch(tolower(ch)) { case 'a': { unsigned int num1;///选择的房间号; printkong(tolower(ch)); printf("请您正确选择以上房间号:\n"); do { scanf("%d",&num1); t=panduan(num1,tolower(ch)); if(t!=0&&room[t].fk!=0) { printf("此房间已经被订,请重新选择\n"); flag=1; } else if(t>Z) {flag=1;} else { flag=0; } } while(flag);//当选择房间错误或者所选房间有人时重新输入。 room[t].fk=1; saveroom();//存取房间信息; kehu[i].num0=num1; do { printf("请交付订金(不得低于房价的倍)\n"); scanf("%d",&money1); } while(money1<(2*room[t].money));//预付的订金不得低于房间价格的两倍 kehu[i].money0=money1; break; } case 'b': { unsigned int num1;///选择的房间号; printkong(tolower(ch)); printf("请您正确选择以上房间号:\n"); do { scanf("%d",&num1); t=panduan(num1,tolower(ch)); if(t!=0&&room[t].fk!=0) { printf("此房间已经被订,请重新选择\n"); flag=1; } else if(t>Z) {flag=1;} else { flag=0; } } while(flag);//当选择房间错误或者所选房间有人时重新输入。 room[t].fk=1; saveroom();//存取房间信息; kehu[i].num0=num1; do { printf("请交付订金(不得低于房价的倍)\n"); scanf("%d",&money1); } while(money1<(2*room[t].money));//预付的订金不得低于房间价格的两倍 kehu[i].money0=money1; break; } case 'c': { unsigned int num1;///选择的房间号; printkong(tolower(ch)); printf("请您正确选择以上房间号:\n"); do { scanf("%d",&num1); t=panduan(num1,tolower(ch)); if(t!=0&&room[t].fk!=0) { printf("此房间已经被订,请重新选择\n"); flag=1; } else if(t>Z) {flag=1;} else { flag=0; } } while(flag);//当选择房间错误或者所选房间有人时重新输入。 room[t].fk=1; saveroom();//存取房间信息; kehu[i].num0=num1; do { printf("请交付订金(不得低于房价的倍)\n"); scanf("%d",&money1); } while(money1<(2*room[t].money));//预付的订金不得低于房间价格的两倍 kehu[i].money0=money1; break; } //saveroom(); } printf("请输入客户的姓名\n"); getchar();//接收 gets(kehu[i].name); printf("请输入客户的身份证号"); gets(kehu[i].ID); printf("请输入入住日期(月、日)\n"); scanf("%d%d",&kehu[i].ru.month,&kehu[i].ru.day); printf("订房成功,欢迎您的光临\n"); } if((fp=fopen("kehuxinxi.text","rb"))==NULL) {save1(s);} else {save(s);} n=n+s;//n为以订房间的人数。 saven(n); } //////////存取已订房间人数n的值//////// void saven(int n) { FILE *fp; fp=fopen("n.text","w"); fprintf(fp,"%5d",n); fclose(fp); } //////////读取n的值///////// int loadn() { int m; FILE *fp; if((fp=fopen("n.text","r"))==NULL) return 0; else { fscanf(fp,"%d",&m); return m; } } ////存取客户信息(追加)///// void save(int s) { FILE *fp; int i,m; m=loadn(); if((fp=fopen("kehuxinxi.text","ab"))==NULL) { printf("打开文件失败\n"); return; } for(i=0;i<s;i++) { fwrite(&kehu[i],sizeof(people),1,fp); } fclose(fp); } ////////存取(当文件为空时)///////// void save1(int s) { FILE *fp; fp=fopen("kehuxinxi.text","wb"); for(int i=0;i<s;i++) { fwrite(&kehu[i],sizeof(people),1,fp); } fclose(fp); } ////////////////////////读取客户信息文件///////////////// void loadkehu() { int m,i; m=loadn(); FILE *fp; if((fp=fopen("kehuxinxi.text","rb"))==NULL) { printf("打开文件失败或者客户信息为空\n"); return; } for(i=0;i<m;i++) { if(fread(&kehu[i],sizeof(people),1,fp)!=1) { printf("读取文件失败/n"); return; } } } /////////////////////////////// 输出客户信息///////////////////////////// void printkehu() { loadkehu(); int m,i; m=loadn();//读取现在总共有多少个客人 printf("客房号 客户姓名 ID 入住日期 预付金额\n"); for(i=0;i<m;i++) { printf("%-3d\t\t%-3s \t%-3s\t\t %5d月%2d日\t\t%-d\n",kehu[i].num0,kehu[i].name,kehu[i].ID,kehu[i].ru.month,kehu[i].ru.day,kehu[i].money0); } } ///////////////////////////输出一个客户信息////////////// void printkehu2(int i)//i是客户的下标 { printf("客房号 客户姓名 ID 入住日期 预付金额\n"); printf("%3d\t\t%3s\t%-3s\t\t%-5d 月%-2d 日\t\t%d\n",kehu[i].num0,kehu[i].name,kehu[i].ID,kehu[i].ru.month,kehu[i].ru.day,kehu[i].money0); } ////////////////////////查询客户信息//////////////// void chaxun() { int k; unsigned int numk;//查询的客房号 int flag;//判断作用 char namek[20];//查询的客户姓名 loadkehu(); printf("1.客房号查询 2.客户姓名查询 \n"); do { printf("请选择: "); scanf("%d",&k); } while(!(k==1||k==2)); switch(k) { case 1: { flag=1;//// int i; printf("请输入您要查询的客房号: "); scanf("%d",&numk); for(i=0;i<Z;i++) { if(kehu[i].num0==numk) { flag=0; break; } } if(flag==1)//没查到时取初值 { printf("没有找到您要查询的客户\n"); return; } printkehu2(i); break; } case 2: { flag=1;//// int i; printf("请输入您要查询的客户姓名: "); getchar();//接收 scanf("%s",namek); for(i=0;i<Z;i++) { if(strcmp(kehu[i].name,namek)==0) { flag=0; break; } } if(flag==1)//没查到时取初值 { printf("没有找到您要查询的客户\n"); return; } printkehu2(i); break; } } } ////////////////////////////////////////////////// //////////时间(一年的第几天)/////////// int shijian(int month,int day) { int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int s=0; for(int i=0;i<month-1;i++) { s=s+a[i]; } s=s+day; return s; } /////////////////////////退房结算///////////////////////////// void tuifang() { int i,m,t1,t2,s1,s2,s; int flag=0; unsigned int money9; char ch; m=loadn();///客人总数 getchar();//接收 printf("请输入您要退的客房号\n"); unsigned int num9;//退的房间号 scanf("%d",&num9); loadkehu();//读取客户信息 loadroom();//读取房间信息 for(i=0;i<m;i++) { if(kehu[i].num0==num9) { t1=i;//记住客户的位置 flag=1;//证明有这个客户 break; } } for(i=0;i<Z;i++) { if(room[i].num==num9) { t2=i;//记住房间的位置 } } if(flag) { printf(" 客房号 客户姓名 (请检查是否正确!)\n "); printf("%5d\t%15s\n",kehu[t1].num0,kehu[t1].name); } else { printf("您的客房号输入有误\n"); return; } do { getchar();//接收 printf("确认退房请按Y否则请按N(不分大小写)\n"); ch=getchar(); } while(!(tolower(ch)=='y'||tolower(ch)=='n')); if(tolower(ch)=='y') //退房时 { printf("请您输入客户的退房日期(月、日)"); scanf("%d%d",&kehu[t1].chu.month,&kehu[t1].chu.day); s1=shijian(kehu[t1].ru.month,kehu[t1].ru.day);//入住的时间 s2=shijian(kehu[t1].chu.month,kehu[t1].chu.day);//退房时间 s=s2-s1;//住了多少天; money9=s*room[t2].money; printf("应收取的人民币为:%d 元\n",money9); if((kehu[t1].money0-money9)>=0) { printf("应找您人民币%d 元\n",(kehu[t1].money0-money9)); } else { printf("您的预付金额不足,请您再交取人民币 %d 元!\n",(money9-kehu[t1].money0)); } room[t2].fk=0; saveroom(); m=m-1; savekehu2(t1,m); saven(m);//存储剩余已订房的客户总数 printf("欢迎您下次光临!\n"); } else { return; } } ////////////////客户退房后存储/////////////////// void savekehu2(int t,int m)//t为退房客户的下标,m为剩余订房客户的人数 { FILE *fp; if((fp=fopen("kehuxinxi.text","wb"))==NULL) { return; } for(t;t<m;t++) { kehu[t].num0=kehu[t+1].num0; strcpy(kehu[t].name,kehu[t+1].name); strcpy(kehu[t].ID,kehu[t+1].ID); kehu[t].money0=kehu[t+1].money0; kehu[t].ru.month=kehu[t+1].ru.month; kehu[t].ru.day=kehu[t+1].ru.day; } for(int i=0;i<m;i++) { if(fwrite(&kehu[i],sizeof(people),1,fp)!=1) { printf("存取失败\n");break; } } fclose(fp); } void mulu()//首页提示信息 { printf("1. 客人入住登记\n"); printf("2. 客户信息查询\n"); printf("3. 查询房间信息\n"); printf("4. 退房结算\n"); printf("0. 退出\n"); } void main() { //luru();///重新录入房间信息 //printkong('b'); //getchar(); //return; char ch[50]={"* * * * * welcome to * * * * *"}; printf("********************************************************************\n\n"); printf(" %s\n\n",ch); printf(" * * * 欢迎您进入宾馆管理系统* * *\n\n"); printf("********************************************************************\n\n\n"); mulu(); for(;;) { char ch2; int c,k; do { printf("请正确选择序号: "); scanf("%d",&c); } while(!(c==1||c==2||c==3||c==4||c==5||c==0)); switch(c) { case 1: { dengji(); printf("按确定键返回主菜单\n"); getchar(); getchar(); break; } case 2: { printf("1.选择性查询\n2.查询所有客户信息\n"); do { printf("请选择: "); scanf("%d",&k); } while(!(k==1||k==2)); switch(k) { case 1: { chaxun(); break; } case 2: { printkehu(); break; } } printf("按确定键返回主菜单\n"); getchar(); getchar(); break; } case 3: { printf("1.查询空房\n2.查询所有房间信息\n"); do { printf("请选择: "); scanf("%d",&k); } while(!(k==1||k==2)); switch(k) { case 1: { do { getchar();//接收输入中的回车 printf("请选择您所查询空房间的类型 A(豪华套房) B(中档套房) C(单人公寓)\n"); ch2=getchar(); } while(!(tolower(ch2)=='a'||tolower(ch2)=='b'||tolower(ch2)=='c')); printkong(tolower(ch2)); break; } case 2: { loadroom(); printroom(); break; } } printf("按确定键返回主菜单\n"); getchar(); getchar(); break; } case 4: { tuifang(); printf("按确定键返回主菜单\n"); getchar(); getchar(); break; } case 0: { return; } } system("cls"); mulu(); } } 四、执行结果截图 五、个人感想 经过这次课题的实践- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 宾馆 管理 系统 语言版
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文