⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 71.cpp

📁 某旅馆有n个等级的房间
💻 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 + -