1、 课程设计宾馆管理系统C语言版 44 2020年4月19日 文档仅供参考,不当之处,请联系改正。 中 原 工 学 院 软件职业技术学院 一级实践环节报告 课题名称: 宾馆客房管理系统 专 业: NET软件 班 级: NET104 学 号:
2、 36 学生姓名: 李新辉 指导教师: 罗菁 年 月 日 一、题目 宾馆客房管理系统 二、流程分析 宾 馆 客 房 管 理 系 统 客房登记 客户查询 房间查询 退房结算 房间数 选择类型 订金 客户基本信息登记 客房号查询 姓名查询 空房间查询 查询所有客户 查询所有房间 房间号 确定 退房日期 结
3、算
三、源代码
#include
4、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 printr
5、oom();
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 6、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 7、信息
{
FILE *fp;
fp=fopen("my hotle.text","wb");
for(int i=0;i 8、rn;}
for(i=0;i 9、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 10、
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,r 11、oom[i].money);
}
}
break;
}
case 'c':
{
printf("C类(单人公寓)空房间信息 客房号 客房价格 \n");
for(i=(AJ+BJ);i 12、//////////////////
unsigned int panduan(unsigned int num1,char ch)
{
int temp;//记录房间号
int i;
loadroom();
for(i=0;i 13、的房间数
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 14、");
ch=getchar();
}
while(!(tolower(ch)=='a'||tolower(ch)=='b'||tolower(ch)=='c'));
for(int i=0;i 15、anf("%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;
16、 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;///选择的房间号;
pr 17、intkong(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;
} 18、
}
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;
19、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;
}
20、 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< 21、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) 22、
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 23、的值/////////
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 24、");
return;
}
for(i=0;i 25、/////////////////////读取客户信息文件/////////////////
void loadkehu()
{
int m,i;
m=loadn();
FILE *fp;
if((fp=fopen("kehuxinxi.text","rb"))==NULL)
{
printf("打开文件失败或者客户信息为空\n");
return;
}
for(i=0;i 26、 return;
}
}
}
/////////////////////////////// 输出客户信息/////////////////////////////
void printkehu()
{
loadkehu();
int m,i;
m=loadn();//读取现在总共有多少个客人
printf("客房号 客户姓名 ID 入住日期 预付金额\n");
for(i=0;i 27、 %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 28、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.客 29、房号查询 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 30、 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 31、 if(strcmp(kehu[i].name,namek)==0)
{
flag=0;
break;
}
}
if(flag==1)//没查到时取初值
{
printf("没有找到您要查询的客户\n");
return;
}
printkehu2(i);
break;
}
}
}
//////////////////////////////////////////////////
//////////时间(一年 32、的第几天)///////////
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 33、
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 34、 break;
}
}
for(i=0;i 35、//接收
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=shiji 36、an(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[t 37、1].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=fo 38、pen("kehuxinxi.text","wb"))==NULL)
{
return;
}
for(t;t 39、day;
}
for(int i=0;i 40、退出\n");
}
void main()
{
//luru();///重新录入房间信息
//printkong('b');
//getchar();
//return;
char ch[50]={"* * * * * welcome to * * * * *"};
printf("********************************************************************\n\n");
printf(" %s\n\n",ch);
printf(" 41、 * * * 欢迎您进入宾馆管理系统* * *\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));
42、
switch(c)
{
case 1:
{
dengji();
printf("按确定键返回主菜单\n");
getchar();
getchar();
break;
}
case 2:
{
printf("1.选择性查询\n2.查询所有客户信息\n");
do
{
printf("请选择: ");
scanf("%d",&k);
}
while(!(k 43、1||k==2));
switch(k)
{
case 1:
{
chaxun();
break;
}
case 2:
{
printkehu();
break;
}
}
printf("按确定键返回主菜单\n");
getchar();
getchar();
break;
}
case 3 44、
{
printf("1.查询空房\n2.查询所有房间信息\n");
do
{
printf("请选择: ");
scanf("%d",&k);
}
while(!(k==1||k==2));
switch(k)
{
case 1:
{
do
{ getchar();//接收输入中的回车
printf("请选择您所查询空房间的类型 A(豪华套房) B(中档套 45、房) C(单人公寓)\n");
ch2=getchar();
}
while(!(tolower(ch2)=='a'||tolower(ch2)=='b'||tolower(ch2)=='c'));
printkong(tolower(ch2));
break;
}
case 2:
{
loadroom();
printroom();
break;
}
46、 }
printf("按确定键返回主菜单\n");
getchar();
getchar();
break;
}
case 4:
{
tuifang();
printf("按确定键返回主菜单\n");
getchar();
getchar();
break;
}
case 0:
{
return;
}
}
system("cls");
mulu();
}
}
四、执行结果截图
五、个人感想
经过这次课题的实践






