



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中原工学院软件职业技术学院一级实践环节报告课题名称:宾馆客房管理系统专业:NET 软件班级:NET104学号:36学生姓名:李新辉指导教师:罗菁年月日专业资料一、题目宾馆客房管理系统二、流程分析宾馆客房管理系统客房登记客户查询房间查询退房结算房间数客姓选 择房名类型号查查询询空查房询间所查有询房房间号确定退房订金查询所有客户日期客户基本信息登记结算专业资料三、源代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>/ 将字符转化为小写字母函数#def
2、ine Z 50/ 宾馆的房间数#define AY 800#define BY 600#define CY 300#define AJ 15#define BJ 20#define CJ (Z-AJ-BJ)struct hotleunsigned int num;char dj;/ 各种等级类型unsigned int money;int fk; / 判断房间的空闲状况0 为空,为有人roomZ;struct dateint month;int day;struct peoplechar name20;char ID15;unsigned int num0; / 房间号unsigned in
3、t money0; / 客人交的订金struct date ru;struct date chu;kehuZ;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+)roomi.num=(a0+)+601);roomi.
4、dj ='A'roomi.money =AY;roomi.fk=0;for (i=AJ;i<(BJ+AJ);i+)roomi.num=(b0+)+501);roomi.dj ='B'roomi.money =BY;roomi.fk=0;for (i=(AJ+BJ);i<Z;i+)roomi.num=(c0+)+401);roomi.dj ='C'roomi.money =CY;roomi.fk=0;saveroom();void saveroom() / 储存房间信息FILE *fp;fp=fopen("my hotle.t
5、ext" ,"wb" );for (int i=0;i<Z;i+)/专业资料if(fwrite(&roomi,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<
6、Z;i+)if(fread(&roomi,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%-15dn",roomi.num,roomi.dj,
7、roomi.money,roomi.fk);/输出各类型空房间的信息/void printkong( char ch)loadroom();int i;switch (ch)case'a':printf( "A类 (豪华套房 )空房间信息客房号客房价格n" );专业资料for (i=0;i<AJ;i+)if(roomi.fk=0)printf( "ttt%11d%15dn",roomi.num,roomi.money);break ;case'b':printf( "B类(中档套房 )空房间信息客房号客房价
8、格n" );for (i=AJ;i<(AJ+BJ);i+)if(roomi.fk=0)printf( "ttt%11d%15dn",roomi.num,roomi.money);break ;case'c':printf( "C类 (单人公寓 ) 空房间信息客房号客房价格n" );for (i=(AJ+BJ);i<Z;i+)if(roomi.fk=0)printf( "ttt%11d%15dn",roomi.num,roomi.money);break ;/选房间号 /unsigned int p
9、anduan( unsigned int num1, char ch)int temp; / 记录房间号int i;loadroom();专业资料for (i=0;i<Z;i+)if(roomi.num=num1&&(tolower(roomi.dj)=ch) return temp=i;printf( "请检查您选择的房间号是否有误!n" );return (Z+2);/订房登记 /int n; / 已订的房间数void dengji()int s;/ 每次所订的房间数n=loadn();/ 读取每次文件中已订房间数的值int flag=0; / 真
10、假判断char ch; / 用来选取房间等级unsigned int money1; / 预付金额FILE *fp;unsigned int t; /printf( "请输入您要订的房间数n" );scanf("%d" ,&s);dogetchar(); / 接收输入中的回车printf( "请选择您所订房间的类型A(豪华套房)B(中档套房)C(单人公寓) n" );ch=getchar();while (!(tolower(ch)= 'a'|tolower(ch)= 'b'|tolower(c
11、h)= '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&&roomt.fk!=0)printf( "此房间已经被订,请重新选择n&qu
12、ot; );flag=1;else if (t>Z)flag=1;elseflag=0;while (flag); / 当选择房间错误或者所选房间有人时重新输入。roomt.fk=1;saveroom(); / 存取房间信息;kehui.num0=num1;doprintf( "请交付订金(不得低于房价的倍)n");scanf("%d" ,&money1);while (money1<(2*roomt.money);/ 预付的订金不得低于房间价格的两倍kehui.money0=money1;break;case'b':
13、unsigned int num1; / 选择的房间号;printkong(tolower(ch);printf( "请您正确选择以上房间号:n" );doscanf("%d" ,&num1);t=panduan(num1,tolower(ch);专业资料if(t!=0&&roomt.fk!=0)printf( "此房间已经被订,请重新选择n" );flag=1;else if (t>Z)flag=1;elseflag=0;while (flag); / 当选择房间错误或者所选房间有人时重新输入。room
14、t.fk=1;saveroom(); / 存取房间信息;kehui.num0=num1;doprintf( "请交付订金(不得低于房价的倍)n");scanf("%d" ,&money1);while (money1<(2*roomt.money);/ 预付的订金不得低于房间价格的两倍kehui.money0=money1;break;case'c':unsigned int num1; / 选择的房间号;printkong(tolower(ch);printf( "请您正确选择以上房间号:n" );do
15、scanf("%d" ,&num1);t=panduan(num1,tolower(ch);if(t!=0&&roomt.fk!=0)printf( "此房间已经被订,请重新选择n" );flag=1;专业资料else if (t>Z)flag=1;elseflag=0;while (flag); / 当选择房间错误或者所选房间有人时重新输入。roomt.fk=1;saveroom(); / 存取房间信息;kehui.num0=num1;doprintf( "请交付订金(不得低于房价的倍)n");scan
16、f("%d" ,&money1);while (money1<(2*roomt.money);/ 预付的订金不得低于房间价格的两倍kehui.money0=money1;break;/saveroom();printf( "请输入客户的姓名 n" );getchar(); / 接收gets();printf( "请输入客户的身份证号");gets(kehui.ID);printf( "请输入入住日期 (月、日 )n" );scanf("%d%d" ,&k
17、ehui.ru.month,&kehui.ru.day);printf( "订房成功,欢迎您的光临n" );if(fp=fopen("kehuxinxi.text" ,"rb" )=NULL)save1(s);elsesave(s);n=n+s; /n 为以订房间的人数。saven(n);专业资料/存取已订房间人数n的值 /void saven(int n)FILE *fp;fp=fopen("n.text" ,"w" );fprintf(fp, "%5d" ,n);
18、fclose(fp);/读取 n的值 /int loadn()int m;FILE *fp;if(fp=fopen("n.text" ,"r")=NULL)return 0;elsefscanf(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&
19、quot;);return ;for (i=0;i<s;i+)fwrite(&kehui,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(&kehui,sizeof(people),1,fp);fclose(fp);/读取客户信息文件/void loadkehu()int m,i;m=loadn();FILE
20、 *fp;if(fp=fopen("kehuxinxi.text" ,"rb" )=NULL)printf( "打开文件失败或者客户信息为空n" );return ;for (i=0;i<m;i+)if(fread(&kehui,sizeof(people),1,fp)!=1)printf( "读取文件失败 /n" );return ;/输出客户信息 /void printkehu()loadkehu();int m,i;m=loadn();/ 读取现在总共有多少个客人printf( "客房
21、号客户姓名ID入住日期预付金额 n" );专业资料for (i=0;i<m;i+)printf( "%-3dtt%-3st%-3stt%5d 月 %2d 日tt%-dn" ,kehui.num0,,kehui.ID,kehui.ru.month,kehui.ru.day,keh ui.money0);/输出一个客户信息/void printkehu2( int i)/i 是客户的下标printf( "客房号客户姓名ID入住日期预付金额 n" );printf( "%3dtt%3st%-3stt%-5d月%-2
22、d日tt%dn" ,kehui.num0,,kehui.ID,kehui.ru.month,kehui.ru.day,kehu i.money0);/查询客户信息 /void chaxun()int k;unsigned int numk; / 查询的客房号int flag; / 判断作用char namek20; / 查询的客户姓名loadkehu();printf( "1.客房号查询2. 客户姓名查询n" );doprintf( "请选择:");scanf("%d" ,&k);while (!
23、(k=1|k=2);switch (k)case 1:flag=1; /int i;printf( "请输入您要查询的客房号:");scanf("%d" ,&numk);for (i=0;i<Z;i+)专业资料if(kehui.num0=numk)flag=0;break ;if(flag=1)/ 没查到时取初值printf( "没有找到您要查询的客户n" );return ;printkehu2(i);break ;case 2:flag=1; /int i;printf( "请输入您要查询的客户姓名:&qu
24、ot;);getchar(); / 接收scanf("%s" ,namek);for (i=0;i<Z;i+)if(strcmp(,namek)=0)flag=0;break ;if(flag=1)/ 没查到时取初值printf( "没有找到您要查询的客户n");return ;printkehu2(i);break;专业资料/时间 (一年的第几天 )/int shijian( int month, int day)int a12=31,28,31,30,31,30,31,31,30,31,30,31;int s=0;for (
25、int i=0;i<month-1;i+)s=s+ai;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=
26、0;i<m;i+)if(kehui.num0=num9)t1=i; / 记住客户的位置flag=1; / 证明有这个客户break ;专业资料for (i=0;i<Z;i+)if(roomi.num=num9)t2=i; / 记住房间的位置if(flag)printf( " 客房号客户姓名(请检查是否正确!) n " );printf( "%5dt%15sn",kehut1.num0,);elseprintf( "您的客房号输入有误n" );return ;dogetchar(); / 接收print
27、f( "确认退房请按 Y否则请按 N( 不分大小写 )n" );ch=getchar();while (!(tolower(ch)='y'|tolower(ch)='n');if(tolower(ch)='y')/ 退房时printf( "请您输入客户的退房日期(月、日)");scanf("%d%d" ,&kehut1.chu.month,&kehut1.chu.day);s1=shijian(kehut1.ru.month,kehut1.ru.day);/ 入住的时间s
28、2=shijian(kehut1.chu.month,kehut1.chu.day);/ 退房时间s=s2-s1;/ 住了多少天;money9=s*roomt2.money;printf( "应收取的人民币为:%d元 n" ,money9);if(kehut1.money0-money9)>=0)printf( "应找您人民币 %d元 n" ,(kehut1.money0-money9);else专业资料printf( "您的预付金额不足,请您再交取人民币%d元!n" ,(money9-kehut1.money0);roomt2
29、.fk=0;saveroom();m=m-1;savekehu2(t1,m);saven(m); / 存储剩余已订房的客户总数printf( "欢迎您下次光临 !n" );elsereturn ;/客户退房后存储/void savekehu2( int t,int m)/t 为退房客户的下标,m 为剩余订房客户的人数FILE *fp;if(fp=fopen("kehuxinxi.text" ,"wb" )=NULL)return ;for (t;t<m;t+)kehut.num0=kehut+1.num0;strcpy(kehu
30、,kehut+1.name);strcpy(kehut.ID,kehut+1.ID);kehut.money0=kehut+1.money0;kehut.ru.month=kehut+1.ru.month;kehut.ru.day=kehut+1.ru.day;for (int i=0;i<m;i+)if(fwrite(&kehui,sizeof(people),1,fp)!=1)专业资料printf( "存取失败 n"); break ;fclose(fp);void mulu() / 首页提示信息printf( "1. 客人入住登记
31、n");printf( "2. 客户信息查询 n" );printf( "3. 查询房间信息 n" );printf( "4. 退房结算 n");printf( "0. 退出 n" );void main()/luru();/重新录入房间信息/printkong('b');/getchar();/return;char ch50="* * * * * welcome to * * * * *"printf( "* *nn" );printf( "%snn" ,ch);printf( "* * *欢迎您进入宾馆管理系统* * *nn");printf( "*nnn");mulu();for (;)char ch2;int c,k;专业
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 计算机一级WPS考试疑难解答试题及答案
- 工业互联网平台SDN在智慧工厂生产进度监控中的实施与优化案例报告
- Excel数据分析的高级技巧试题及答案
- 叙述方式对人物塑造的影响文学概论试题及答案
- 计算机一级WPS的重要内容回顾试题及答案
- 2025年计算机一级编辑与排版技巧试题及答案
- 教育游戏化在职业教育中的应用与教学策略报告
- 2025年逻辑知识点的全面总结与试题及答案
- 开启2025年现代汉语考试试题及答案之旅
- 税法考试准备 试题及答案总结
- 2024年四川省南充市名校中考物理模拟试卷
- JBT 14682-2024 多关节机器人用伺服电动机技术规范(正式版)
- 改进工作作风自查报告(11篇)
- 24春国家开放大学《机械CADCAM》形考任务1-3参考答案
- 山东省烟台市牟平区(五四制)2023-2024学年九年级下学期期中考试数学试题
- 2024年咸阳职业技术学院单招职业技能测试题库及答案解析
- 2020年10月自考00445中外教育管理史试题及答案含解析
- 国际关系史智慧树知到期末考试答案2024年
- 上海中考英语语法专项练习题集和参考答案
- 《重选的基本原理》课件
- 云系统安全运维
评论
0/150
提交评论