课程设计宾馆管理系统C语言版.docx
- 文档编号:14610140
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:33
- 大小:236.01KB
课程设计宾馆管理系统C语言版.docx
《课程设计宾馆管理系统C语言版.docx》由会员分享,可在线阅读,更多相关《课程设计宾馆管理系统C语言版.docx(33页珍藏版)》请在冰点文库上搜索。
课程设计宾馆管理系统C语言版
中原工学院
软件职业技术学院
一级实践环节报告
课题名称:
宾馆客房管理系统
专业:
NET软件
班级:
NET104
学号:
36
学生姓名:
李新辉
指导教师:
罗菁
年月日
一、题目
宾馆客房管理系统
二、流程分析
三、源代码
#include
#include
#include
#include
#defineZ50//宾馆的房间数
#defineAY800
#defineBY600
#defineCY300
#defineAJ15
#defineBJ20
#defineCJ(Z-AJ-BJ)
structhotle
{
unsignedintnum;
chardj;//各种等级类型
unsignedintmoney;
intfk;//判断房间的空闲状况0为空,为有人
}room[Z];
structdate
{
intmonth;
intday;
};
structpeople
{
charname[20];
charID[15];
unsignedintnum0;//房间号
unsignedintmoney0;//客人交的订金
structdateru;
structdatechu;
}kehu[Z];
voidsaveroom();
voidloadroom();
voidprintroom();
voidsave(ints);
voidsave1(ints);
intloadn();
voidsaven(intn);
voidsavekehu2(intt,intm);
///////录入宾馆房间信息//////////////
voidluru()
{
inta0,b0,c0;
a0=b0=c0=0;
inti;
for(i=0;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 { room[i].num=((c0++)+401); room[i].dj='C'; room[i].money=CY; room[i].fk=0; } saveroom(); } voidsaveroom()//储存房间信息 { FILE*fp; fp=fopen("myhotle.text","wb"); for(inti=0;i { if(fwrite(&room[i],sizeof(structhotle),1,fp)! =1) {printf("文件写入失败\n");break;} } fclose(fp); } voidloadroom() { FILE*fp; inti; if((fp=fopen("myhotle.text","rb"))==NULL) {printf("打开文件失败\n");return;} for(i=0;i { if(fread(&room[i],sizeof(structhotle),1,fp)! =1) {printf("读取文件失败\n");break;} } printf("读取成功! \n"); fclose(fp); } voidprintroom()/////输出各个房间的信息////////// { //loadroom(); printf("客房号客房等级客房价格客房空闲(为空)\n"); for(inti=0;i { printf("%-18d%-12c%-18d%-15d\n",room[i].num,room[i].dj,room[i].money,room[i].fk); } } ///////////////输出各类型空房间的信息/////////////// voidprintkong(charch) { loadroom(); inti; switch(ch) { case'a': { printf("A类(豪华套房)空房间信息客房号客房价格\n"); for(i=0;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 { if(room[i].fk==0) { printf("\t\t\t%11d%15d\n",room[i].num,room[i].money); } } break; } } } //////////////////选房间号//////////////////// unsignedintpanduan(unsignedintnum1,charch) { inttemp;//记录房间号 inti; loadroom(); for(i=0;i {if(room[i].num==num1&&(tolower(room[i].dj))==ch) returntemp=i; } printf("请检查您选择的房间号是否有误! \n"); return(Z+2); } /////////订房登记////////// intn;//已订的房间数 voiddengji() { ints;//每次所订的房间数 n=loadn();//读取每次文件中已订房间数的值 intflag=0;///真假判断 charch;//用来选取房间等级 unsignedintmoney1;//预付金额 FILE*fp; unsignedintt;// 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(inti=0;i { //loadroom(); switch(tolower(ch)) { case'a': { unsignedintnum1;///选择的房间号; 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; } elseif(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': { unsignedintnum1;///选择的房间号; 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; } elseif(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': { unsignedintnum1;///选择的房间号; 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; } elseif(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的值//////// voidsaven(intn) { FILE*fp; fp=fopen("n.text","w"); fprintf(fp,"%5d",n); fclose(fp); } //////////读取n的值///////// intloadn() { intm; FILE*fp; if((fp=fopen("n.text","r"))==NULL) return0; else { fscanf(fp,"%d",&m); returnm; } } ////存取客户信息(追加)///// voidsave(ints) { FILE*fp; inti,m; m=loadn(); if((fp=fopen("kehuxinxi.text","ab"))==NULL) { printf("打开文件失败\n"); return; } for(i=0;i { fwrite(&kehu[i],sizeof(people),1,fp); } fclose(fp); } ////////存取(当文件为空时)///////// voidsave1(ints) { FILE*fp; fp=fopen("kehuxinxi.text","wb"); for(inti=0;i { fwrite(&kehu[i],sizeof(people),1,fp); } fclose(fp); } ////////////////////////读取客户信息文件///////////////// voidloadkehu() { intm,i; m=loadn(); FILE*fp; if((fp=fopen("kehuxinxi.text","rb"))==NULL) { printf("打开文件失败或者客户信息为空\n"); return; } for(i=0;i { if(fread(&kehu[i],sizeof(people),1,fp)! =1) { printf("读取文件失败/n"); return; } } } ///////////////////////////////输出客户信息///////////////////////////// voidprintkehu() { loadkehu(); intm,i; m=loadn();//读取现在总共有多少个客人 printf("客房号客户姓名ID入住日期预付金额\n"); for(i=0;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); } } ///////////////////////////输出一个客户信息////////////// voidprintkehu2(inti)//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); } ////////////////////////查询客户信息//////////////// voidchaxun() { intk; unsignedintnumk;//查询的客房号 intflag;//判断作用 charnamek[20];//查询的客户姓名 loadkehu(); printf("1.客房号查询2.客户姓名查询\n"); do { printf("请选择: "); scanf("%d",&k); } while(! (k==1||k==2)); switch(k) { case1: { flag=1;//// inti; printf("请输入您要查询的客房号: "); scanf("%d",&numk); for(i=0;i { if(kehu[i].num0==numk) { flag=0; break; } } if(flag==1)//没查到时取初值 { printf("没有找到您要查询的客户\n"); return; } printkehu2(i); break; } case2: { flag=1;//// inti; printf("请输入您要查询的客户姓名: "); getchar();//接收 scanf("%s",namek); for(i=0;i { if(strcmp(kehu[i].name,namek)==0) { flag=0; break; } } if(flag==1)//没查到时取初值 { printf("没有找到您要查询的客户\n"); return; } printkehu2(i); break; } } } ////////////////////////////////////////////////// //////////时间(一年的第几天)/////////// intshijian(intmonth,intday) { inta[12]={31,28,31,30,31,30,31,31,30,31,30,31}; ints=0; for(inti=0;i { s=s+a[i]; } s=s+day; returns; } /////////////////////////退房结算///////////////////////////// voidtuifang() { inti,m,t1,t2,s1,s2,s; intflag=0; unsignedintmoney9; charch; m=loadn();///客人总数 getchar();//接收 printf("请输入您要退的客房号\n"); unsignedintnum9;//退的房间号 scanf("%d",&num9); loadkehu();//读取客户信息 loadroom();//读取房间信息 for(i=0;i { if(kehu[i].num0==num9) { t1=i;//记住客户的位置 flag=1;//证明有这个客户 break; } } for(i=0;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);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 宾馆 管理 系统 语言版