You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

336 lines
5.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include<1room.h>
//保存函数
int saving()
{
FILE *fp;
int i;
char str;
printf("是否要保存修改?(Y OR N)\n");
scanf("%s",&str);
while(1)
{
if(str=='y'||str=='Y')
break;
else if(str=='n'||str=='N')
return 0;
else
printf("请重新输入:");
scanf("%s",&str);
}
fp=fopen("a","rb+");
fwrite(&inf,sizeof(inf),1,fp);
fclose(fp);
}
//读取函数
int loading()
{
FILE *fp;
int i;
fp=fopen("a","rb");
fread(&inf,sizeof(inf),1,fp);
fclose(fp);
}
//修改函数
int change1()
{
system("cls");
int m;
printf("请选择所要执行的操作\n");
printf("1.全局查询信息\n");
printf("2.单个查询信息\n");
printf("3.返回\n");
scanf("%d",&m);
while(1)
{
switch(m)
{
case 1:query_r();return 0;
case 2:query_o();return 0;
case 3:return 0;
}
printf("请重新输入:");
scanf("%d",&m);
}return 0;
}
//查询信息函数
void query_r()
{
system("cls");
FILE *fp;int i;
loading();
if(qty==0)
printf("请新建房间信息\n");
else
{
printf("房间号 单人or双人 房间类型 是否已入住 入住时间\n");
for(i=0;i<qty;i++)
printf("%s %s %s %s %d %d %d\n",inf[i].num,inf[i].human,inf[i].kind,inf[i].inout,inf[i].time[0],inf[i].time[1],inf[i].time[2]);
printf("共有%d条记录\n",qty);
}
printf("按任意键返回");
}
void query_o()//单个查询
{
system("cls");
char str[5];
int i;
printf("请输入需要查询的房间:\n");
scanf("%s",&str);
system("cls");
loading();
for(i=0;i<qty;i++)
{
if(strcmp(inf[i].num,str)==0)
{printf("房间号 单人or双人 房间类型 是否已入住 入住时间\n");
printf("%s %s %s %s %d %d %d\n",inf[i].num,inf[i].human,inf[i].kind,inf[i].inout,inf[i].time[0],inf[i].time[1],inf[i].time[2]);
}
}printf("按任意键返回");
}
//登记入住
void register_()
{
system("cls");
char str[5];
char str1[]="已入住";
FILE *fp;
int i;
printf("请选择入住的房间\n");
scanf("%s",&str);
loading();
for(i=0;i<qty;i++)
{
if(strcmp(inf[i].num,str)==0)
{
strcpy(inf[i].inout,str1);
xitongshijian(&inf[i].time[0],&inf[i].time[1],&inf[i].time[2]);
}
}
saving();
}
//修改函数
int change2()
{
system("cls");
int m;
printf("请选择所要执行的操作\n");
printf("1.新建信息\n");
printf("2.删除信息\n");
printf("3.返回\n");
scanf("%d",&m);
while(1)
{
switch(m)
{
case 1:setting();return 0;
case 2:delete_();return 0;
case 3:return 0;
}
printf("请重新输入:");
scanf("%d",&m);
}return 0;
}
void setting() //信息新建函数
{
system("cls");
int n,i,j; char str; FILE *fp;
if(qty==0)
printf("无房间信息,请新建\n");
printf("最多可建立100条记录");
while(1)
{
n=0;
printf("请问您是否要建立新记录(y or n)?");
scanf("%s",&str);
if(str=='n'||str=='N')
break;
if(str=='y'||str=='Y')
{
system("cls");
printf("请问您需要新建多少条记录?\n");
scanf("%d",&n);
system("cls");
if((qty+n)>100)
{
printf("发生错误,请重新选择");
continue; }
for(i=qty;i<(n+qty);i++)
{
scanf("%s %s %s %s %d %d %d",inf[i].num,inf[i].human,inf[i].kind,inf[i].inout,&inf[i].time[0],&inf[i].time[1],&inf[i].time[2]);
}
if(qty==0)
{
fp=fopen("a","wb");
fclose(fp);}
if(qty!=0)
saving();
qty=qty+n;
printf("现在有%d条记录",qty); } }}
//删除函数
void delete_(){
system("cls");
int i,j=0;char str1[5],str2[5];
if(qty==0)
{
printf("没有可删除的记录\n");
}
while(1)
{
printf("请输入所要删除信息的房间号:");
scanf("%s",&str1);
loading();
for(i=0;i<qty;i++)
{
if(strcmp(inf[i].num,str1)==0)
for(j=i;j<qty;j++)
{
inf[j]=inf[j+1];
}}qty--;
printf("删除成功\n");
printf("是否继续删除(y or n)\n");
scanf("%s",&str2);
if(str2[0]=='n'||str2[0]=='N')
break;
}
saving();
}
int xitongshijian(int *i,int *o,int *l)
{
time_t timep,Tim;
struct tm *p;
time(&timep);
p = localtime(&timep);
int Year = 1900 + p->tm_year;
int Month = 1 + p->tm_mon;
int Day = p->tm_mday;
int Hour = p->tm_hour;
int Minute = p->tm_min;
int Second = p->tm_sec;
char year[20];
char month[20];
char day[20];
char hour[20];
char minute[20];
char second[20];
*i=Month;*o=Day;*l=Hour;
return 0;
}
int feiyongchaxun()
{
system("cls");
printf("费用查询\n请输入房间号并按下回车\n");
int shijiancha_ri,shijiancha_xiaoshi;
char room_number[10] ;
double feiyong;
scanf("%s",room_number);
shijianshu(room_number,&shijiancha_ri,&shijiancha_xiaoshi);
feiyong=feiyongjisuan(room_number,shijiancha_ri,shijiancha_xiaoshi);
printf("%.2lf",feiyong);
return 0;
}
void shijianshu(char fangjianhao[10],int *p,int *o)
{
int yue2,ri2,xiaoshi2,shijian2[3],shijiancha_ri,shijiancha_xiaoshi,i;
xitongshijian(&yue2,&ri2,&xiaoshi2);
shijian2[0]=yue2;shijian2[1]=ri2;shijian2[2]=xiaoshi2;
loading();
for(i=0;i<qty;i++)
{
if(strcmp(inf[i].num,fangjianhao)==0)
break;
}
//fp=fopen("a","r+");
/*while(fread(&xiugai,sizeof(inf),1,fp)==1)
{
if(strcmp(xiugai.num,fangjianhao)==0)
{
int yue1,ri1,xiaoshi1,shijian1[3];
shijian1=xiugai.time;
yue1=shijian1[0];ri1=shijian1[1];xiaoshi1=shijian1[2];
}
}*/
printf("请手动算出时间差\n");
printf("入住时间:%d、%d、%d\n查询时间:%d、%d、%d\n",inf[i].time[0],inf[i].time[1],inf[i].time[2],yue2,ri2,xiaoshi2);
printf("请输入时间差\n\n第一次输入日,第二次输入小时\n\n按日计算则小时输入0按小时计算则日输入0\n\n");
printf("请输入日: ");
scanf("%d",&shijiancha_ri);
printf("\n请输入小时: ");
scanf("%d",&shijiancha_xiaoshi);
*p=shijiancha_ri;*o=shijiancha_xiaoshi;
}
int feiyongjisuan(char fangjianhao[10],int shijiancha_ri,int shijiancha_xiaoshi)
{
int feiyong,i;
/*fp=fopen("a","r+");
while(fread(&xiugai,sizeof(inf),1,fp)==1)
{
if(strcmp(xiugai.num,fangjianhao)==0)
{
printf("%s",xiugai.kind);
}
}*/
loading();
for(i=0;i<qty;i++)
{
if(strcmp(inf[i].num,fangjianhao)==0)
break;
}
if(inf[i].kind[0]=='p')
feiyong=shijiancha_xiaoshi*10+shijiancha_ri*100;
else feiyong=shijiancha_xiaoshi*100+shijiancha_ri*700;
return feiyong;
}
void reroom()
{
system("cls");
char str[5];
char str1[]="未入住";
char str3[30];
FILE *fp;
int i;
printf("请选择要退的房间\n");
scanf("%s",&str);
loading();
for(i=0;i<qty;i++)
{
if(strcmp(inf[i].num,str)==0)
{
strcpy(inf[i].inout,str1);
}
}saving();
}