酒店管理系统(c语言课程设计)

#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);
    }
}

看到此篇博文的小伙伴们如发现有什么问题,欢迎在下方留言指正,博主一定虚心接受并改正!如果对你有所帮助,可以给博主留个赞!

  • 31
    点赞
  • 181
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
酒店管理系统c语言课程设计全文共10页,当前为第1页。酒店管理系统c语言课程设计全文共10页,当前为第1页。#include <stdio.h> 酒店管理系统c语言课程设计全文共10页,当前为第1页。 酒店管理系统c语言课程设计全文共10页,当前为第1页。 #include <conio.h> #include<string.h> #include<stdlib.h> /*定义客户结构体*/ struct guest ( char no[20]; char Name[20]; char sex[2]; char id[20]; }; /*声明客户数组及客户数量*/ struct guest guests[200]; int num=0; /*通过客户返回数组下标*/ int guest_SearchByIndex(char no[]) ( int i; for (i=0;i<num;i ) ( if (strcmp(guests[i].no,no)==0) ( return 0;//i; } } return -1; } /*通过姓名返回数组下标*/ int guest_SearchByName(char name[]) ( int i; for (i=0;i<num;i ) ( if (strcmp(guests[i].Name,name)==0) return i; else return -1; } return 0; } /*显示单条客户记录*/ void guest_DisplaySingle(int index) 酒店管理系统c语言课程设计全文共10页,当前为第2页。酒店管理系统c语言课程设计全文共10页,当前为第2页。( printf("ssss\n"," 房间编号","姓名","性另F,"身份号码) 酒店管理系统c语言课程设计全文共10页,当前为第2页。 酒店管理系统c语言课程设计全文共10页,当前为第2页。 printf(" -——\n"); printf(" %- 10s%9s%9ss\n",guests[index].no,guests[index].Name,guests[index].sex,gues ts[index].id); } /*插入客户信息*/ void guest_Insert() {— while(1) { printf(- 请输入房间编号:"); scanf("%s",guests[num].no); getchar(); printf(- 请输入姓名:"); scanf("%s",guests[num].Name); getchar(); printf(- 请输入性别:"); scanf("%s",guests[num].sex); getchar(); printf(" 请输入身份号码:"); scanf("%s",guests[num].id); while(strlen(guests[num].id)!=18) { printf(" 请输入18位身份证号码"); scanf("%s",guests[num].id); } getchar(); num ; printf(" 是否继续?(y/n)"); if (getchar()=='n'""getchar()=='N') { break; } } } /*修改客户信息*/ void guest_Modify() { 酒店管理系统c语言课程设计全文共10页,当前为第3页。酒店管理系统c语言课程设计全文共10页,当前为第3页。( 酒店管理系统c语言课程设计全文共10页,当前为第3页。 酒店管理系统c语言课程设计全文共10页,当前为第3页。 char no[20]; int index; printf(- 请输入要修改的客户的房号:"); scanf("%s",no); getchar(); index=guest_SearchByIndex(no); if (index==-1) ( printf(" 该客户不存在!\n"); } else ( printf(- 你要修改的客户信息为:\n"); guest_DisplaySingle(index); printf("-- 请输入新值--\n"); printf(- 请输入房间编号:"); scanf("%s",guests[index].no); getchar(); printf(- 请输入姓名:"); scanf("%s",guests[index].Name); getchar(); printf(- 请输入性别:"); scanf("%s",guests[index].sex); getchar(); printf(" 请输入您的身份证号码"); scanf("%s",

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Astronaut Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值