📄 71.cpp
字号:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#define N 10
FILE* fp ; //用文件来记录房间的安排情况
char filename[N];
struct Room{
int roomgrade; //房间等级
int roomprice;
int roomnumber;
int bed[N]; //每个等级i的每个房间有对应等级i铺床
int sex;
int peoplein;
int arrtime;
int price;
}room[100];
void creat(){
int i,number=0,j,k=0,m,t;
i=1;
for(i=1;i<=N;i++){
for(j=1;j<=i;j++){ //每个等级i对应有i房间
t=i;
room[k].roomgrade=t;
room[k].roomprice=-20*(t-11);
room[k].roomnumber=k+1;
room[k].arrtime=0;
for(m=0;m<t;m++) //等级i的每个房间i有铺床
room[k].bed[m]=0;
room[k].sex=-1;
room[k].peoplein=0;
k++;
}
}
if((fp=fopen(filename,"wb"))==NULL){
printf("cannot open file\n");
exit(0);
}
for(k=0;k<100;k++)
if(fwrite(&room[k],sizeof(struct Room),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void zhusu(struct Room room[100]){
int number,sex,grade,arrtime,b,grade1,bednumber,k;
printf("请输入性别:1为男,0为女\n");
fflush(stdin);
scanf("%d",&sex);
printf("请输入房间等级\n");
fflush(stdin);
scanf("%d",&grade);
k=0;
while(k<100){
if(room[k].roomgrade==grade&&(room[k].sex==-1||room[k].sex==sex)){ //房间里没有住人或者住的人性别相同
for(b=0;b<grade;b++) { //每个房间有对应等级grade铺床
if(room[k].bed[b]==0){
room[k].bed[b]=1;
fflush(stdin);
printf("请输入入住房间的时间:\n");
scanf("%d",&arrtime); //客人入住时间
room[k].arrtime=arrtime;
number=room[k].roomnumber;
bednumber=b+1; //床位号
printf("分配成功!\n");
printf("性别%d,房间等级%d,房间号码%d,床号%d,房间单价%d\n",sex,room[k].roomgrade,room[k].roomnumber,bednumber,room[k].roomprice);
if(b<grade)
break;
if(b==grade){
printf("该等级房间客满,是否愿意更换房间等级\n");
fflush(stdin);
scanf("%d",&grade1);
if(grade1==grade)
printf("房间分配失败\n");
}
}
}
}
if(room[k].roomgrade==grade&&b<grade) //表示成功分配旅客想住的房间
break;
k++;
}
if(k==100)
printf("所有等级房间客满,分配失败\n");
for(k=0;k<100;k++)
fwrite(&room[k],sizeof(struct Room),1,fp);
}
void tuifang(struct Room room[100]){
int number,leatime,b,i,k;
printf("输入房间号码:\n");
fflush(stdin);
scanf("%d",&number);
printf("请输入床位号\n");
fflush(stdin);
scanf("%d",&b);
printf("请输入退房日期:\n");
fflush(stdin);
scanf("%d",&leatime);
k=0;
while(k<100){
if(room[k].roomnumber==number)
printf("住宿费用为%d元\n",room[k].roomprice*(leatime-room[k].arrtime));
for(i=0;i<room[k].roomgrade;i++)
if(i+1==b){
room[k].bed[i]=0;
break;
}
k++;
}
for(k=0;k<100;k++)
fwrite(&room[k],sizeof(struct Room),1,fp);
}
void main(){
int t=1,s;
printf("请输入文件名\n");
fflush(stdin);
scanf("%s", filename);
printf("\n************************************************************************\n");
printf("初始化房间信息,开始执行创建房间信息函数\n");
printf("\n***********************************************************************\n");
creat();
printf("为保证程序的顺利进行,第一次输入s的值请输入非0的数\n");
while(t!=0){ //如果输入t不为0,则一直可以进行服务
printf("请输入s的值\n");
fflush(stdin);
scanf("%d",&s);
while(s!=0){
printf("进行订房登记服务\n");
zhusu(room);
printf("\n***********************************************************************\n");
printf("请输入s的值以判断是否要继续进行订房登记服务\n");
fflush(stdin);
scanf("%d",&s);
}
printf("进行退房结帐服务\n");
tuifang(room);
printf("\n***********************************************************************\n");
printf("请输入t的值以判断是否要继续进行服务:\n");
fflush(stdin);
scanf("%d",&t);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -