#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#include<string.h>
#include<conio.h>
#define manager_name "04201143"
#define manager_name2 "1668082833"
void search();
typedef struct node
{
char name[20];
char bre[20];
int money;
int dz;
int jj;
struct node *next;
}Node,*Linklist;
typedef struct hotel
{
//char ch;
char num[20];
char dj[50]; //判断房间状态(空房,脏房还是客房)
int price;
struct hotel *next;
}HOTEL,*LL;
typedef struct
people
{
//char ch;
char num[20];
char roomname[40];
char name[40];
char sex[20];
int day;
char ID[20];
struct people *next;
}PEOPLE,*PP;
typedef struct data
{
char name[40];
char sex[50];
char ID[50];
int day;
char num[10];
float yajin[50];
struct data *next;
}datatype,*LINK;
void gettime ()//获取当前时间函数
{
time_t t;
struct tm * lt;
time (&t);//获取当前时间
lt = localtime (&t);//转为时间结构。
printf ( "%d/%d/%d %d:%d:%d\n",lt->tm_year+1900, lt->tm_mon, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec);//输出结果
}
void correct(char num[15]);
void correct2(char num[15]);
void correct3(char num[15]);
void correct4(char num[15]);
void correct5(char num[15]);
void correct6(char num[15]);
void search1();
void search2();
void search3();
void search4();
void search5();
void search6();
typedef struct bill//账单函数
{
char name[40];
char roomname[40];
int price;
char num[20];
int price2;
int amount;
} BILL;
void save(Linklist head)//选择所需住的房间
{
Node *r;
FILE *fp;
fp=fopen("d:\\code\\data.txt","wt");
for(r=head;r!=NULL;r=r->next)
{
fprintf(fp,"%s %s %d %d %d\n",r->name,r->bre,r->money,r->dz,r->jj);
}
printf("保存成功!\n");//文件保存界面
fclose(fp);
}
void save1(LL he)//选择房间号 1
{
HOTEL *rp;
FILE *ftp;
ftp=fopen("d:\\code\\data1.txt","wt");
for(rp=he;rp!=NULL;rp=rp->next)
{
fprintf(ftp,"%s %s\n",rp->num,rp->dj);
}
printf("保存成功!\n");//文件保存界面
fclose(ftp);
}
void save2(LL he)//选择房间号 2
{
HOTEL *rp;
FILE *f2p;
f2p=fopen("d:\\code\\data2.txt","wt");
for(rp=he;rp!=NULL;rp=rp->next)
{
fprintf(f2p,"%s %s\n",rp->num,rp->dj);
}
printf("保存成功!\n");//文件保存界面
fclose(f2p);
}
Linklist input()//房间类型,价格建立
{
Node *r,*s,*head;
char m;
int i;
head=(Node *)malloc(sizeof(Node));
head->next=NULL;
r=head;
do
{
s=(Node *)malloc(sizeof(Node));
printf("请输入房间类型名:\n");
scanf("%s",s->name);
printf("请输入有无早餐:\n");
scanf("%s",s->bre);
printf("请输入门市价:\n");
scanf("%d",&s->money);
printf("请输入周五打折价:\n");
scanf("%d",&s->dz);
printf("请输入员工奖金:\n");
scanf("%d",&s->jj);
r->next=s;
r=s;
printf("请选择是否继续输入,Y:继续,N:退出\n");
m=getche();
printf("\n");
}while(m=='y'||m=='Y');
r->next=NULL;
save(head);
return head;//链表的创建与保存
}
LL in()//房间号,房间状态信息建立
{
HOTEL *rp,*se,*he;
char mp;
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;//使rp代替he移动
do
{
se=(HOTEL *)malloc(sizeof(HOTEL));
printf("请输入房间号:\n");
scanf("%s",se->num);
printf("请输入房间状态:\n");
scanf("%s",se->dj);
rp->next=se;
rp=se;
printf("请选择是否继续输入,Y:继续,N:退出\n");
mp=getche();
printf("\n");
}while(mp=='y'||mp=='Y');
rp->next=NULL;
save1(he);
return he;//链表的创建与保存
}
LL in2()//房间号,房间状态信息建立 2
{
HOTEL *rp,*se,*he;
char mp;
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
do
{
se=(HOTEL *)malloc(sizeof(HOTEL));
printf("请输入房间号:\n");
scanf("%s",se->num);
printf("请输入房间状态:\n");
scanf("%s",se->dj);
rp->next=se;
rp=se;
printf("请选择是否继续输入,Y:继续,N:退出\n");
mp=getche();
printf("\n");
}while(mp=='y'||mp=='Y');
rp->next=NULL;
save2(he);
return he;//链表的创建与保存
}
//账号密码登录
int islogin()
{ int times = 0; //密码输入次数
char username[10];
int o;
char userword[10];
char mima1[10];
char mima2[10];
char mima[10]="201143";
loop:
o=0;
printf("欢迎使用酒店管理系统(限员工使用)\n");
printf("请输入您的账号密码:\n账号:");
fflush(stdin);//清除缓存区
gets(username);
printf("密码:");
while(mima1[o]=getch())
{
if(mima1[o]=='\r')break;
{
mima2[o]=mima1[o];
putchar('*');
}
o++;
}
while (!(strcmp(username, manager_name) == 0 && strcmp(mima2, mima) == 0))
{
times++; //密码输入错误 times++
if (times > 3)
{
printf("\n\n\n\n\t\t\t\t账号或密码输入错误累计达到%d次,系统将于3秒后关闭", times);
void clock_delay();
system("cls");
char shutdown[] = { "系统将于%d秒后关闭..." };
for (int i = 0; i < 3; i++)
{
printf(shutdown, 3 - i);
void clock_delay();
system("cls");
}
exit(0);
}
printf("\n\n\n\n\t\t\t\t账号或密码输入错误,你还有%d次登录机会,按任意键重新登录...", 4 - times);
getch();
system("cls");
goto loop;
}
printf("\n登陆成功!");
Sleep(1000);
system("cls");
return 1;
}
int islogin2()
{ int times = 0; //密码输入次数
char username[20];
int o;
char userword[20];
char mima1[20];
char mima2[20];
char mima[20]="123456789";
loop:
o=0;
printf("欢迎使用酒店管理系统(限管理员使用)\n");
printf("请输入您的账号密码:\n账号:");
fflush(stdin);//清除缓存区
gets(username);
printf("密码:");
while(mima1[o]=getch())
{
if(mima1[o]=='\r')break;
{
mima2[o]=mima1[o];
putchar('*');
}
o++;
}
while (!(strcmp(username, manager_name2) == 0 && strcmp(mima2, mima) == 0))
{
times++; //密码输入错误 times++
if (times > 3)
{
printf("\n\n\n\n\t\t\t\t账号或密码输入错误累计达到%d次,系统将于3秒后关闭", times);
void clock_delay();
system("cls");
char shutdown[] = { "系统将于%d秒后关闭..." };
for (int i = 0; i < 3; i++)
{
printf(shutdown, 3 - i);
void clock_delay();
system("cls");
}
exit(0);
}
printf("\n\n\n\n\t\t\t\t账号或密码输入错误,你还有%d次登录机会,按任意键重新登录...", 4 - times);
getch();
system("cls");
goto loop;
}
printf("\n登陆成功!");
Sleep(1000);
system("cls");
return 1;
}
Linklist read()//读取房间信息
{
Node *r,*s;
Linklist h;
FILE *fp;
fp=fopen("d:\\code\\data.txt","rt");
h=(Node *)malloc(sizeof(Node));
h->next=NULL;
r=h;
while(!feof(fp))
{
s=(Node *)malloc(sizeof(Node));
fscanf(fp,"%s %s %d %d %d",r->name,r->bre,&r->money,&r->dz,&r->jj);
r->next=s;
r=s;
}
r->next=NULL;
fclose(fp);
return h;
}
LL rea()//读取房间号和状态信息
{
HOTEL *rp,*se;
LL he;
FILE *ftp;
ftp=fopen("d:\\code\\data1.txt","rt");
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
while(!feof(ftp))
{
se=(HOTEL *)malloc(sizeof(HOTEL));
fscanf(ftp,"%s %s",rp->num,rp->dj);
rp->next=se;
rp=se;
}
rp->next=NULL;
fclose(ftp);
return he;
}
LL rea2()//读取房间号和状态信息 2
{
HOTEL *rp,*se;
LL he;
FILE *f2p;
f2p=fopen("d:\\code\\data2.txt","rt");
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
while(!feof(f2p))
{
se=(HOTEL *)malloc(sizeof(HOTEL));
fscanf(f2p,"%s %s",rp->num,rp->dj);
rp->next=se;
rp=se;
}
rp->next=NULL;
fclose(f2p);
return he;
}
void output(Linklist head)//打印房间类型信息
{
Node *s;
printf("房间类型\t早餐\t门市价\t周五\t奖金\n");
for(s=head;s->next!=NULL;s=s->next)
{
printf("%s\t%s\t %d\t%d\t%d\n",s->name,s->bre,s->money,s->dz,s->jj);
}
}
void out(LL he)//打印房间信息
{
HOTEL *se;
printf("\n客房号\t房间状态\n");
for(se=he;se->next!=NULL;se=se->next)
{
printf("%s\t%s\n",se->num,se->dj);
}
}
void out2(LL he)//打印房间信息 2
{
HOTEL *se;
printf("\n客房号\t房间状态\n");
for(se=he;se->next!=NULL;se=se->next)
{
printf("%s\t%s\n",se->num,se->dj);
}
}
void save3(LL he)//选择房间号 3
{
HOTEL *rp;
FILE *f3p;
f3p=fopen("d:\\code\\data3.txt","wt");
for(rp=he;rp!=NULL;rp=rp->next)
{
fprintf(f3p,"%s %s\n",rp->num,rp->dj);
}
printf("保存成功!\n");//文件保存界面
fclose(f3p);
}
LL in3()//房间号,房间状态信息建立 3
{
HOTEL *rp,*se,*he;
char mp;
int ip;
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
do
{
se=(HOTEL *)malloc(sizeof(HOTEL));
printf("请输入房间号:\n");
scanf("%s",se->num);
printf("请输入房间状态:\n");
scanf("%s",se->dj);
rp->next=se;
rp=se;
printf("请选择是否继续输入,Y:继续,N:退出\n");
mp=getche();
printf("\n");
}while(mp=='y'||mp=='Y');
rp->next=NULL;
save3(he);
return he;//链表的创建与保存
}
LL rea3()//读取房间号和状态信息 3
{
HOTEL *rp,*se;
LL he;
FILE *f3p;
f3p=fopen("d:\\code\\data3.txt","rt");
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
while(!feof(f3p))
{
se=(HOTEL *)malloc(sizeof(HOTEL));
fscanf(f3p,"%s %s",rp->num,rp->dj);
rp->next=se;
rp=se;
}
rp->next=NULL;
fclose(f3p);
return he;
}
void out3(LL he)//打印房间信息 3
{
HOTEL *se;
printf("\n客房号\t房间状态\n");
for(se=he;se->next!=NULL;se=se->next)
{
printf("%s\t%s\n",se->num,se->dj);
}
}
void save4(LL he)//选择房间号 4
{
HOTEL *rp;
FILE *f4p;
f4p=fopen("d:\\code\\data4.txt","wt");
for(rp=he;rp!=NULL;rp=rp->next)
{
fprintf(f4p,"%s %s\n",rp->num,rp->dj);
}
printf("保存成功!\n");//文件保存界面
fclose(f4p);
}
LL in4()//房间号,房间状态信息建立 4
{
HOTEL *rp,*se,*he;
char mp;
int ip;
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
do
{
se=(HOTEL *)malloc(sizeof(HOTEL));
printf("请输入房间号:\n");
scanf("%s",se->num);
printf("请输入房间状态:\n");
scanf("%s",se->dj);
rp->next=se;
rp=se;
printf("请选择是否继续输入,Y:继续,N:退出\n");
mp=getche();
printf("\n");
}while(mp=='y'||mp=='Y');
rp->next=NULL;
save4(he);
return he;//链表的创建与保存
}
LL rea4()//读取房间号和状态信息 4
{
HOTEL *rp,*se;
LL he;
FILE *f4p;
f4p=fopen("d:\\code\\data4.txt","rt");
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
while(!feof(f4p))
{
se=(HOTEL *)malloc(sizeof(HOTEL));
fscanf(f4p,"%s %s",rp->num,rp->dj);
rp->next=se;
rp=se;
}
rp->next=NULL;
fclose(f4p);
return he;
}
void out4(LL he)//打印房间信息 4
{
HOTEL *se;
printf("\n客房号\t房间状态\n");
for(se=he;se->next!=NULL;se=se->next)
{
printf("%s\t%s\n",se->num,se->dj);
}
}
void save5(LL he)//选择房间号 5
{
HOTEL *rp;
FILE *f5p;
f5p=fopen("d:\\code\\data5.txt","wt");
for(rp=he;rp!=NULL;rp=rp->next)
{
fprintf(f5p,"%s %s\n",rp->num,rp->dj);
}
printf("保存成功!\n");//文件保存界面
fclose(f5p);
}
LL in5()//房间号,房间状态信息建立 5
{
HOTEL *rp,*se,*he;
char mp;
int ip;
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
do
{
se=(HOTEL *)malloc(sizeof(HOTEL));
printf("请输入房间号:\n");
scanf("%s",se->num);
printf("请输入房间状态:\n");
scanf("%s",se->dj);
rp->next=se;
rp=se;
printf("请选择是否继续输入,Y:继续,N:退出\n");
mp=getche();
printf("\n");
}while(mp=='y'||mp=='Y');
rp->next=NULL;
save5(he);
return he;//链表的创建与保存
}
LL rea5()//读取房间号和状态信息 5
{
HOTEL *rp,*se;
LL he;
FILE *f5p;
f5p=fopen("d:\\code\\data5.txt","rt");
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
while(!feof(f5p))
{
se=(HOTEL *)malloc(sizeof(HOTEL));
fscanf(f5p,"%s %s",rp->num,rp->dj);
rp->next=se;
rp=se;
}
rp->next=NULL;
fclose(f5p);
return he;
}
void out5(LL he)//打印房间信息 5
{
HOTEL *se;
printf("\n客房号\t房间状态\n");
for(se=he;se->next!=NULL;se=se->next)
{
printf("%s\t%s\n",se->num,se->dj);
}
}
void save6(HOTEL* he)//选择房间号 6
{
HOTEL *rp;
FILE *f6p;
f6p=fopen("d:\\code\\data6.txt","wt");
for(rp=he;rp!=NULL;rp=rp->next)
{
fprintf(f6p,"%s %s\n",rp->num,rp->dj);
}
printf("保存成功!\n");//文件保存界面
fclose(f6p);
}
LL in6()//房间号,房间状态信息建立 6
{
HOTEL *rp,*se,*he;
char mp;
int ip;
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
do
{
se=(HOTEL *)malloc(sizeof(HOTEL));
printf("请输入房间号:\n");
scanf("%s",se->num);
printf("请输入房间状态:\n");
scanf("%s",se->dj);
rp->next=se;
rp=se;
printf("请选择是否继续输入,Y:继续,N:退出\n");
mp=getche();
printf("\n");
}while(mp=='y'||mp=='Y');
rp->next=NULL;
save6(he);
return he;//链表的创建与保存
}
LL rea6()//读取房间号和状态信息 6
{
HOTEL *rp,*se;
LL he;
FILE *f6p;
f6p=fopen("d:\\code\\data6.txt","rt");
he=(HOTEL *)malloc(sizeof(HOTEL));
he->next=NULL;
rp=he;
while(!feof(f6p))
{
se=(HOTEL *)malloc(sizeof(HOTEL));
fscanf(f6p,"%s %s\n",rp->num,rp->dj);
rp->next=se;
rp=se;
}
rp->next=NULL;
fclose(f6p);
return he;
}
void out6(LL he)//打印房间信息 6
{
HOTEL *se;
printf("\n客房号\t房间状态\n");
for(se=he;se->next!=NULL;se=se->next)
{
printf("%s\t%s\n",se->num,se->dj);
}
}
PP rea8()//读取客户信息
{
PEOPLE *rp,*se;
PP he;
FILE *f8p;
f8p=fopen("d:\\code\\people.txt","rt");
he=(PEOPLE *)malloc(sizeof(PEOPLE));
he->next=NULL;
rp=he;
while(!feof(f8p))
{
se=(PEOPLE *)malloc(sizeof(PEOPLE));
fscanf(f8p,"%s %s %s %s %s %d",rp->num,rp->roomname,rp->name,rp->sex,rp->ID,&rp->day);
rp->next=se;
rp=se;
}
rp->next=NULL;
fclose(f8p);
return he;
}
void out8(PP he)//打印客户信息 8
{
people *se;
printf("\n客房号\t房间类型\t客户姓名\t客户性别\tID\t入住天数\n");
for(se=he;se->next!=NULL;se=se->next)
{
printf("%-16s\t%-16s\t%-16s\t%-16s\t%-16s\t%-d\n",se->num,se->roomname,se->name,se->sex,se->ID,se->day);
}
}
void add()//增加客户入住信息
{
char itime[100];
char num[15];
int gh[10],p,n,u,sum,x,l;
datatype k[100];
PEOPLE v;
HOTEL r[100];
BILL b[100];
Linklist h;
system("cls");
printf("酒店入住客户信息建立\n");
printf("请输入预定房间的个数\n");
scanf("%d",&p);
FILE *fp;
for(n=0;n<p;n++)
{
printf("请输入入住客户的姓名\n");
scanf("%s",k[n].name);
printf("请输入入住客户的身份证号\n");
scanf("%s",k[n].ID);
printf("请输入入住客户的性别\n");
scanf("%s",k[n].sex);
printf("请输入需要入住的天数\n");
scanf("%d",&k[n].day);
printf("请您选择要入住的房间\n");
h=read();
output(h);
printf("标单(1) 标双(2) 大床(3) 总统(4) 行政(5) 商务(6)\n");
printf("请选择:");
scanf("%d",&gh[n]);
switch(gh[n])
{
case 1:
{
strcpy(b[n].roomname,"标准单人");
printf("是否可以打折?(是:1 否:2)\n");
scanf("%d",&u);
if(u==2)
{
b[n].price=100;
}
else if(u==1)
{
b[n].price=70;
}
LL he;
/*he=in();*/
he=rea();
out(he);
sum=sum+7;
printf("请选择你要入住的房间号:");
scanf("%s",b[n].num);
strcpy(num,b[n].num);
correct(num);
break;
}
case 2:
{
strcpy(b[n].roomname,"标准双人");
printf("是否可以打折?(是:1 否:2)\n");
scanf("%d",&u);
if(u==2)
{
b[n].price=120;
}
else if(u==1)
{
b[n].price=100;
}
sum=sum+10;
LL he;
he=rea2();
out2(he);
printf("请选择你要入住的房间号:\n");
scanf("%s",b[n].num);
strcpy(num,b[n].num);
correct2(num);
break;
}
case 3:
{
strcpy(b[n].roomname,"豪华大床");
printf("是否可以打折?(是:1 否:2)\n");
scanf("%d",&u);
if(u==2)
{
b[n].price=200;
}
else if(u==1)
{
b[n].price=150;
}
sum=sum+15;
LL he;
//he=in3();
he=rea3();
out3(he);
printf("请选择你要入住的房间号:\n");
scanf("%s",b[n].num);
strcpy(num,b[n].num);
correct3(num);
break;
}
case 4:
{
strcpy(b[n].roomname,"总统套房");
printf("是否可以打折?(是:1 否:2)\n");
scanf("%d",&u);
if(u==2)
{
b[n].price=500;
}
else if(u==1)
{
b[n].price=400;
}
sum=sum+40;
LL he;
he=rea4();
out4(he);
printf("请选择你要入住的房间号:\n");
scanf("%s",b[n].num);
strcpy(num,b[n].num);
correct4(num);
break;
}
case 5:
{
strcpy(b[n].roomname,"行政套间");
printf("是否可以打折?(是:1 否:2)\n");
scanf("%d",&u);
if(u==2)
{
b[n].price=250;
}
else if(u==1)
{
b[n].price=200;
}
sum=sum+20;
LL he;
//he=in5();
he=rea5();
out5(he);
printf("请选择你要入住的房间号:\n");
scanf("%s",b[n].num);
strcpy(num,b[n].num);
correct5(num);
break;
}
case 6:
{
strcpy(b[n].roomname,"商务套间");
printf("是否可以打折?(是:1 否:2)\n");
scanf("%d",&u);
if(u==2)
{
b[n].price=200;
}
else if(u==1)
{
b[n].price=180;
}
sum=sum+18;
LL he;
//he=in6();
he=rea6();
out6(he);
printf("请选择你要入住的房间号:\n");
scanf("%s",b[n].num);
strcpy(num,b[n].num);
correct6(num);
break;
}
}
strcpy(b[n].name,k[n].name);
printf("是否再添加一次性物品(每套7元)(是:1,否:2)\n");
scanf("%d",&l);
if(l==1)
{
printf("请输入你所需的个数:");
scanf("%d",&x);
}
if(l==2)
x=0;
b[n].price2=7*x;
b[n].amount=b[n].price*k[n].day+b[n].price2+10;
printf("您的账单如下:\n");
printf("姓名:%s\n",b[n].name);
printf("%s:%d元\n",b[n].roomname,b[n].price);
printf("一次性物品(%d件):%d元\n",x,b[n].price2);
printf("服务费:10元\n");
printf("合计:%d\n",b[n].amount);
gettime();
strcpy(v.roomname,b[n].roomname);
strcpy(v.num,b[n].num);
strcpy(v.name,k[n].name);
strcpy(v.ID,k[n].ID);
strcpy(v.sex,k[n].sex);
v.day=k[n].day;
FILE *frp;
frp=fopen("d:\\code\\people.txt","at");
fprintf(frp,"%s\t%s\t%s\t%s\t%s\t%d\n",v.num,v.roomname,v.name,v.sex,v.ID,v.day);
fclose(frp);
}
}
void delfilm(PP head,PP s);
PP find(PP head);
void save9(PP he)//保存客户信息
{
PEOPLE *rp;
FILE *f9p;
f9p=fopen("d:\\code\\people.txt","wt");
for(rp=he;rp!=NULL;rp=rp->next)
{
fprintf(f9p,"%s\t%s\t%s\t%s\t%s\t%d\n",rp->num,rp->roomname,rp->name,rp->sex,rp->ID,rp->day);
}
printf("保存成功!\n");//文件保存界面
fclose(f9p);
}
//菜单显示
void menu()
{
printf("********************************************************\n");
printf("*** 酒店管理系统 ***\n");
printf("*********************************************************\n");
printf("*********************系统功能菜单*************************\n");
printf(" ---------------------- ---------------------- \n");
printf(" ********************************************* \n");
printf(" * 1.增加入住信息(打印票根) * \n");
printf(" ********************************************* \n");
printf(" * 2.查询入住信息 * \n");
printf(" ********************************************* \n");
printf(" * 3.退房服务 * \n");
printf(" ********************************************* \n");
printf(" * 4.删除入住信息 * \n");
printf(" ********************************************* \n");
printf(" * 5.退出系统 * \n");
printf(" ********************************************* \n");
printf(" --------------------- ----------------------- \n");
printf("请选择:");
}
void menu2()
{
printf("********************************************************\n");
printf("*** 酒店管理系统 ***\n");
printf("*********************************************************\n");
printf("*********************系统功能菜单*************************\n");
printf(" ---------------------- ---------------------- \n");
printf(" ********************************************* \n");
printf(" * 1.重新建立房间类型 * \n");
printf(" ********************************************* \n");
printf(" * 2.重新建立房间号和房间状态 * \n");
printf(" ********************************************* \n");
printf(" * 3.对房间类型排序 * \n");
printf(" ********************************************* \n");
printf(" * 4.对同一状态的房间进行统计 * \n");
printf(" ********************************************* \n");
printf(" * 5.退出系统 * \n");
printf(" ********************************************* \n");
printf(" --------------------- ----------------------- \n");
printf("请选择:");
}
void pai()
{
Node *p1=NULL,*p2=NULL,*pend=NULL;
Linklist head;
head=read();
p1=head;
p2=head;
int n;
int temp1;
int temp2;
int temp3;
char name[20];
char bre[20];
char type[20];
printf("1.房价由低到高排序\n");
printf("2.按房间类型名排序\n") ;
scanf("%d",&n);
if(n==1)
{
while(p1 != pend) //外循环
{ //pfirst != pend 很有意思
while(p1->next != pend)//内循环
{
if(p1->money> p1->next->money)
{
temp1=p1->money;
p1->money=p1->next->money;
p1->next->money=temp1;
temp2=p1->jj;
p1->jj=p1->next->jj;
p1->next->jj=temp2;
temp3=p1->dz;
p1->dz=p1->next->dz;
p1->next->dz=temp3;
strcpy(name,p1->name);
strcpy(p1->name,p1->next->name);
strcpy(p1->next->name,name);
strcpy(bre,p1->bre);
strcpy(p1->bre,p1->next->bre);
strcpy(p1->next->bre,bre);
}
p1=p1->next;
}
pend=p1;//减少最后的已排好的循环
p1=head;
}
printf("排序成功!\n");
save(head);
}
if(n==2)
{
while(p1 != pend) //外循环
{ //pfirst != pend 很有意思
while(p1->next != pend)//内循环
{
if(strcmp(p1->name,p1->next->name)>0)
{
temp1=p1->money;
p1->money=p1->next->money;
p1->next->money=temp1;
temp2=p1->jj;
p1->jj=p1->next->jj;
p1->next->jj=temp2;
temp3=p1->dz;
p1->dz=p1->next->dz;
p1->next->dz=temp3;
strcpy(name,p1->name);
strcpy(p1->name,p1->next->name);
strcpy(p1->next->name,name);
strcpy(bre,p1->bre);
strcpy(p1->bre,p1->next->bre);
strcpy(p1->next->bre,bre);
}
p1=p1->next;
}
pend=p1;//减少最后的已排好的循环
p1=head;
}
printf("排序成功!\n");
save(head);
}
}
void choose()//进行选择
{
char num[10];
int c,d,e;
PP p,r;
scanf("%d",&c);
switch(c)
{
case 1:add();printf("\n请按任意键返回菜单栏!");getch();menu();choose();
case 2:search();printf("\n请按任意键返回菜单栏!");getch();menu();choose();
case 3:
printf("请输入要退的房间的类型:\n");
printf("标单(1) 标双(2) 大床(3) 总统(4) 行政(5) 商务(6)\n");
printf("请选择:");
scanf("%d",&d);
switch(d)
{
case 1:correct(num);
printf("是否已通知清洁该房间:1.是\t2.否\n");
scanf("%d",&e);
if(e==1)
{
correct(num);
}
else if(e==2)
{
printf("请通知清洁工清洁!");
}
break;
case 2:correct2(num);
printf("是否已通知清洁该房间:1.是\t2.否\n");
scanf("%d",&e);
if(e==1)
{
correct2(num);
}
else if(e==2)
{
printf("请通知清洁工清洁!");
}
break;
case 3:correct3(num);
printf("是否已通知清洁该房间:1.是\t2.否\n");
scanf("%d",&e);
if(e==1)
{
correct3(num);
}
else if(e==2)
{
printf("请通知清洁工清洁!");
}
break;
case 4:correct4(num);
printf("是否已通知清洁该房间:1.是\t2.否\n");
scanf("%d",&e);
if(e==1)
{
correct4(num);
}
else if(e==2)
{
printf("请通知清洁工清洁!");
}
break;
case 5:correct5(num);
printf("是否已通知清洁该房间:1.是\t2.否\n");
scanf("%d",&e);
if(e==1)
{
correct5(num);
}
else if(e==2)
{
printf("请通知清洁工清洁!");
}
break;
case 6:correct6(num);
printf("是否已通知清洁该房间:1.是\t2.否\n");
scanf("%d",&e);
if(e==1)
{
correct6(num);
}
else if(e==2)
{
printf("请通知清洁工清洁!");
}
break;
}
break;
case 4:p=rea8();r=find(p);delfilm(p,r);printf("\n请按任意键返回菜单栏!");getch();menu();choose();
case 5:exit(0);
}
}
void choose2()
{
int y,z,u;
Linklist head;
scanf("%d",&y);
switch(y)
{
case 1:input();head=read();output(head);printf("\n请按任意键返回菜单栏!");getch();menu2();choose2();
case 2:
printf("请输入要退的房间的类型:\n");
printf("标单(1) 标双(2) 大床(3) 总统(4) 行政(5) 商务(6)\n");
printf("请选择:");
scanf("%d",&z);
switch(z)
{
case 1:in();break;
case 2:in2();break;
case 3:in3();break;
case 4:in4();break;
case 5:in5();break;
case 6:in6();break;
}
printf("\n请按任意键返回菜单栏!");getch();menu2();choose2();
case 3: pai();printf("\n请按任意键返回菜单栏!");getch();menu2();choose2();
case 4:
printf("请选择你需要统计的房间类型:\n");
printf("标单(1) 标双(2) 大床(3) 总统(4) 行政(5) 商务(6)\n");
printf("请选择:");
scanf("%d",&u);
switch(u)
{
case 1:search1();break;
case 2:search2();break;
case 3:search3();break;
case 4:search4();break;
case 5:search5();break;
case 6:search6();break;
}
case 5: exit(0);
}
}
int main(void)
{
int c;
printf("请选择身份登录:\n");
printf("1.员工身份\t2.管理员身份\n");
scanf("%d",&c);
if(c==1)
{
islogin();
menu();
choose();
}
if(c==2)
{
islogin2();
menu2();
choose2();
}
}
void search()
{ //搜索客户信息
int n;
PP head;
PEOPLE *r;
head=rea8();
char name[20];
char num[20];
printf("1.姓名查询\n");
printf("2.房号查询\n");
printf("3.退出查询\n");
printf("请选择方式查询:\n");
scanf("%d",&n);
switch(n){
case 1: printf("请输入客户姓名:\n");
scanf("%s",name);
for(r=head;r->next!=NULL;r=r->next)
{
if(strcmp(name,r->name)==0)
{
printf("房号\t房间类型\t客户姓名\t客户性别\tID\t入住天数\n");
printf("%s\t%s\t%-8s\t%-8s\t%-4s\t%d\n",r->num,r->roomname,r->name,r->sex,r->ID,r->day);
}
}
if(strcmp(name,r->name)!=0&r->next->next==NULL)
{
printf("未找到信息\n");
search();
}
break;
case 2:printf("请输入房间号:\n");
scanf("%s",num);
for(r=head;r->next!=NULL;r=r->next)
{
if(strcmp(num,r->num)==0)
{
printf("房号\t房间类型\t客户姓名\t客户性别\tID\t入住天数\n");
printf("%s\t%s\t%-8s\t%-8s\t%-4s\t%d\n",r->num,r->roomname,r->name,r->sex,r->ID,r->day);
}
}
if(strcmp(num,r->num)!=0&&r->next->next==NULL)
{
printf("未找到信息\n");
search();
}
system("cls");menu();choose();break;
case 3:Sleep(1000);system("cls");menu();choose();break;
default :system("cls");search();break;
}
}
void correct(char num[15]) //修改房间状态
{
LL h;
char d[100];
HOTEL *r;
int price;
h=rea();//读取房间号和房间状态
printf("请输入你要修改状态的房号:\n");
scanf("%s",num);
for(r=h;r->next!=NULL;r=r->next)//找出需要修改的房间号
{
if(strcmp(num,r->num)==0)
{
printf("请输入修改后的房间状态:\n");
scanf("%s",d);
strcpy(r->dj,d);
printf("修改完成\n");
save1(h);//将修改完成的数据保存到文件中
break;
}
if(strcmp(num,r->num)!=0&&r->next->next==NULL)
printf("未找到信息\n");
}
}
void correct2(char num[15]) //修改房间状态 2
{
LL h;
char d[100];
HOTEL *r;
int price;
h=rea2();
printf("请输入你要修改状态的房号:\n");
scanf("%s",num);
for(r=h;r->next!=NULL;r=r->next)
{
if(strcmp(num,r->num)==0)
{
printf("请输入修改后的房间状态:\n");
scanf("%s",d);
strcpy(r->dj,d);
printf("修改完成\n");
save2(h);
break;
}
if(strcmp(num,r->num)!=0&&r->next->next==NULL)
printf("未找到信息\n");
}
}
void correct3(char num[15]) //修改房间状态 3
{
LL h;
char d[100];
HOTEL *r;
int price;
h=rea3();
printf("请输入你要修改状态的房号:\n");
scanf("%s",num);
for(r=h;r->next!=NULL;r=r->next)
{
if(strcmp(num,r->num)==0)
{
printf("请输入修改后的房间状态:\n");
scanf("%s",d);
strcpy(r->dj,d);
printf("修改完成\n");
save3(h);
break;
}
if(strcmp(num,r->num)!=0&&r->next->next==NULL)
printf("未找到信息\n");
}
}
void correct4(char num[15]) //修改房间状态 4
{
LL h;
char d[100];
HOTEL *r;
int price;
h=rea4();
printf("请输入你要修改状态的房号:\n");
scanf("%s",num);
for(r=h;r->next!=NULL;r=r->next)
{
if(strcmp(num,r->num)==0)
{
printf("请输入修改后的房间状态:\n");
scanf("%s",d);
strcpy(r->dj,d);
printf("修改完成\n");
save4(h);
break;
}
if(strcmp(num,r->num)!=0&&r->next->next==NULL)
printf("未找到信息\n");
}
}
void correct5(char num[15]) //修改房间状态 5
{
LL h;
char d[100];
HOTEL *r;
int price;
h=rea5();
printf("请输入你要修改状态的房号:\n");
scanf("%s",num);
for(r=h;r->next!=NULL;r=r->next)
{
if(strcmp(num,r->num)==0)
{
printf("请输入修改后的房间状态:\n");
scanf("%s",d);
strcpy(r->dj,d);
printf("修改完成\n");
save5(h);
break;
}
if(strcmp(num,r->num)!=0&&r->next->next==NULL)
printf("未找到信息\n");
}
}
void correct6(char num[15]) //修改房间状态 6
{
LL h;
char d[100];
HOTEL *r;
int price;
h=rea6();
printf("请输入你要修改状态的房号:\n");
scanf("%s",num);
for(r=h;r->next!=NULL;r=r->next)
{
if(strcmp(num,r->num)==0)
{
printf("请输入修改后的房间状态:\n");
scanf("%s",d);
strcpy(r->dj,d);
printf("修改完成\n");
save6(h);
break;
}
if(strcmp(num,r->num)!=0&&r->next->next==NULL)
printf("未找到信息\n");
}
}
PP find(PP head){ //查找需要删除信息的节点
char name[20];
PP r;
printf("请输入需要删除的客户姓名:\n");
scanf("%s",name);
r=head;
while(r&&strcmp(r->name,name)){
r=r->next;
}
return r;
}
void search1()
{ //统计不同状态的房间
int n;
LL head;
HOTEL *r;
head=rea();
char dj[20];
char num[20];
printf("请选择你要查询的房间状态:\n");
scanf("%s",dj);
for(r=head;r->next!=NULL;r=r->next)
{
if(strcmp(dj,r->dj)==0)
{
printf("房号\t房间状态\n");
printf("%s\t%s\n",r->num,r->dj);
}
if(strcmp(dj,r->dj)!=0&&r->next->next==NULL)
{
printf("未找到信息\n");
search1();
}
}
}
void search2()
{ //统计不同状态的房间
int n;
LL head;
HOTEL *r;
head=rea2();
char dj[20];
char num[20];
printf("请选择你要查询的房间状态:\n");
scanf("%s",dj);
for(r=head;r->next!=NULL;r=r->next)
{
if(strcmp(dj,r->dj)==0)
{
printf("房号\t房间状态\n");
printf("%s\t%s\n",r->num,r->dj);
}
if(strcmp(dj,r->dj)!=0&&r->next->next==NULL)
{
printf("未找到信息\n");
search2();
}
}
}
void search3()
{ //统计不同状态的房间
int n;
LL head;
HOTEL *r;
head=rea3();
char dj[20];
char num[20];
printf("请选择你要查询的房间状态:\n");
scanf("%s",dj);
for(r=head;r->next!=NULL;r=r->next)
{
if(strcmp(dj,r->dj)==0)
{
printf("房号\t房间状态\n");
printf("%s\t%s\n",r->num,r->dj);
}
if(strcmp(dj,r->dj)!=0&&r->next->next==NULL)
{
printf("未找到信息\n");
search3();
}
}
}
void search4()
{ //统计不同状态的房间
int n;
LL head;
HOTEL *r;
head=rea4();
char dj[20];
char num[20];
printf("请选择你要查询的房间状态:\n");
scanf("%s",dj);
for(r=head;r->next!=NULL;r=r->next)
{
if(strcmp(dj,r->dj)==0)
{
printf("房号\t房间状态\n");
printf("%s\t%s\n",r->num,r->dj);
}
if(strcmp(dj,r->dj)!=0&&r->next->next==NULL)
{
printf("未找到信息\n");
search4();
}
}
}
void search5()
{ //统计不同状态的房间
int n;
LL head;
HOTEL *r;
head=rea5();
char dj[20];
char num[20];
printf("请选择你要查询的房间状态:\n");
scanf("%s",dj);
for(r=head;r->next!=NULL;r=r->next)
{
if(strcmp(dj,r->dj)==0)
{
printf("房号\t房间状态\n");
printf("%s\t%s\n",r->num,r->dj);
}
if(strcmp(dj,r->dj)!=0&&r->next->next==NULL)
{
printf("未找到信息\n");
search5();
}
}
}
void search6()
{ //统计不同状态的房间
int n;
LL head;
HOTEL *r;
head=rea();
char dj[20];
char num[20];
printf("请选择你要查询的房间状态:\n");
scanf("%s",dj);
for(r=head;r->next!=NULL;r=r->next)
{
if(strcmp(dj,r->dj)==0)
{
printf("房号\t房间状态\n");
printf("%s\t%s\n",r->num,r->dj);
}
if(strcmp(dj,r->dj)!=0&&r->next->next==NULL)
{
printf("未找到信息\n");
search6();
}
}
}
void delfilm(PP head,PP s){//删除链表信息
if(!s){
printf("没有客户信息!请重新输入!\n");
PP find();
}
else{
PP q;
q=head;
while(q->next!=s){
q=q->next;
}
q->next=s->next;
free(s);
printf("删除完成!\n");
save9(head);
}
}
看到此篇博文的小伙伴们如发现有什么问题,欢迎在下方留言指正,博主一定虚心接受并改正!如果对你有所帮助,可以给博主留个赞!