C语言 宾馆客房管理系统

举报
肥学 发表于 2022/03/28 00:53:23 2022/03/28
【摘要】 别忘了在文件里面建立这两个文件其他的应该没问题 #include<stdio.h> #include<stdlib.h> #include<string.h> #i...

别忘了在文件里面建立这两个文件其他的应该没问题在这里插入图片描述

#include<stdio.h>
#include<stdlib.h> 
#include<string.h>
#include<malloc.h>
typedef struct
{
	char name[50];  
	char sex[50]; 
	char ID[50];
	char come[50];  
	char day[50];
	char number[50]; 
	char type[50];
	char price[50];  
	char yushou[50];
	char yajin[50];  
	char leave[50];
}datatype;
typedef struct node//定义链表节点
{
	datatype data;  //数域
	struct node *next;//指针区域 指向后继元素(链表节点的结构体声明) 
}listnode; 
typedef listnode *linklist;//结构体指针
linklist head;
listnode *p;
void Output_allInfo(linklist head);//输出所有客户信息  
void Delete_info(linklist head);//客户信息的删除 
void Info_Modify(linklist head);//按客户姓名的信息修改 
listnode *Name_Search(linklist head); //按姓名查找宾馆信息 
listnode *Sex_Search(linklist head);//按性别查找宾馆信息  
listnode *Roomnum_Search(linklist head);//按房间号查找宾馆信息
listnode *Cometime_Search(linklist head) ;//按入住时间查找 
char Display_Menu();//菜单输出函数 
listnode* Add(linklist head,int b);//增加客户信息
linklist Create(int a);//宾馆客户信息的建立  
void SaveInfoToFile(linklist head);//保存顾客信息到文件中
listnode *ReadInfoFromFile();//信息从文件读出
int main()//主函数 
{ 
	system("color 0a");
	int i,a;
	for(;;) //while(1)
	{ 
		switch(Display_Menu())  
		{
		case 1: printf("**2.宾馆信息的建立**\n");           
			printf("输入你想输入的数目:");         
			scanf("%d",&i);       head=Create(i); break;  
		case 2: printf("**1.从文件读入客户信息!**\n");        
			ReadInfoFromFile();             break;      
		case 3: printf("**3.宾馆信息的添加**\n");          
			printf("输入你想添加的人数:");       
			scanf("%d",&a);       
			Add(head,a); break; 
		case 4:  printf("**4.客户姓名的查询**\n");        
			p=Name_Search(head);             if(p!=NULL)       
			{       
				printf("姓名\t 性别\t 证件\t\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");     
				printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID,      
					p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );      
				printf("\n");  
			} 
			else printf("该用户不存在!");break;       
		case 5: printf("**5.客户性别的查询**\n");    
			p=Sex_Search(head);          
			if(p!=NULL)         
			{
				printf("姓名\t 性别\t 证件\t\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");   
				printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID,    
					p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );      
				printf("\n");   
			}
			else
				printf("该用户不存在!");break;  
		case 6: 
			printf("**6.客户房号的查询**\n");     
			p=Roomnum_Search(head);     
			if(p!=NULL)  
			{
				printf("姓名\t 性别\t 证件\t\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");   
				printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID, 
					p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );   
				printf("\n");     
			}
			else printf("该房间信息不存在!");break; 
		case 7:
			printf("**7.客户时间的查询**\n");    
			p=Cometime_Search(head);
			if(p!=NULL)   
			{
				printf("姓名\t 性别\t 证件\t\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");    
				printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID,
					p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );    
				printf("\n");  
			}    
			else printf("该房间信息不存在!");break;
		case 8: printf("**8.宾馆信息的修改**\n");         
			Info_Modify(head);break; 
		case 9: printf("**9.宾馆信息的删除**\n"); 
			Delete_info(head);break;   
		case 10: printf("**10.宾馆信息的输出**\n");    
			Output_allInfo(head); break;  
		case 11:printf("11.保存顾客信息");      
			SaveInfoToFile(head); break;
			//保存顾客信息到文件中   
		case 0:printf("**0.退出**\n");     
			exit(0);   
		default: break; 
		} 
	}
	return 0; 
}
//菜单函数 
char Display_Menu() 
{  
	int  i;  
	FILE *fp;
	char ch; 
	printf("\n\n\n\n\n\n");
	printf("                        *** 欢迎使用宾馆信息管理系统!***\n\n\n\n                                   **菜单**\n\n\n1.客房信息录入\n2.客人入住登记\n3.客人信息添加\n4.客人姓名查询\n5.客户性别查询\n6.宾馆房号查询\n7.入住时间查询\n8.客户信息修改\n9.宾馆信息删除\n10.信息显示\n11.保存信息\n0.退出") ;   
	if((fp=fopen("D:\\宾馆\\menu.txt","r"))==NULL) 
	{
		printf("菜单文件打开失败!");  
		exit(0);  
	} 
	ch=fgetc(fp);//从文件指针fp指向的文件中读取一个字符并返回
	while(ch!=EOF)//当信息没结束 
	{
		putchar(ch); //写到屏幕上
		ch=fgetc(fp);
	}
	printf("\n");
	for(;;)  
	{ 
		scanf("%d",&i); 
		printf("\n");  
		if(i<0||i>11) 
			printf("选择错误,重新选择:\n");   
		else break;
	}   
	return i;
}
listnode *ReadInfoFromFile() 
{ 
	FILE *fp;  
	int b; 
	fp=fopen("D:\\宾馆\\customer.txt","r");  
	listnode *p=NULL,*q=NULL,*head=NULL;
	p=(listnode *)malloc(sizeof(listnode));//将返回的指针(void*)强制转换成ListNode*   
	head=p;//打开等读的文件。分配一个表结点空间。头结点的下一结点为p     
	b=1;
	if(!fp)  
	{
		printf("文件打开失败!");  
		exit(0); 
	}
	else printf("文件打开成功");  
	while(!feof(fp)) //含有信息
	{  
		/*fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->next->data.name,p->next->data.se x,p->next->data.ID,          p->next->data.come,p->next->data.day,p->next->data.number,p->next->data.price,p->next->data. yajin,p->next->data.leave );*/  
		q=(listnode *)malloc(sizeof(listnode));   
		fscanf(fp,"%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,   
			p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave); 
		p->next=q;
		q=p ;
		b++;
	}
	head=Add(head,b); 
	printf("\n"); 
	fclose(fp);  
	return head; 
}
//宾馆客户信息的建立 
linklist Create(int a)
{
	linklist head=(listnode *)malloc(sizeof(listnode));//结构体变量
	listnode *p,*q;  
	q=head;
	while(a--) 
	{
		p=(listnode *)malloc(sizeof(listnode)); 
		printf("姓名\t 性别\t 证件\t \t入住\t 天数\t 房号\t 价格\t 押金\t 离开\n "); 
		scanf("%s%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,   
			p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave);//通过p访问p所指向属对象的数据成员data的数据成员 
		q->next=p;   
		q=p; 
	} 
	q->next=NULL; 
	return head; 
}
listnode* Add(linklist head,int b)//增加顾客信息 
{
	listnode *m,*n,*p;
	m=head;
	n=m->next;  
	while(n->next!=NULL)//判断返回值是否为空
	{
		m=n;  
		n=n->next; 
	}
	while(b--) 
	{
		p=(listnode *)malloc(sizeof(listnode));   
		printf("姓名\t 性别\t 证件\t \t入住\t 天数\t 房号\t 价格\t 押金\t 离开\n "); 
		printf("***************************\n"); 
		scanf("%s%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,        
			p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );  
		n->next=p;//把p的地址送给n的指针与即是n的下一节点
		n=p; 
	}
	n->next=NULL; 
	return head; 
}
//按姓名查找宾馆信息 
listnode *Name_Search(linklist head) 
{
	listnode *p;  
	char name[10];
	int i;  
	printf("按 1 表示姓名查找:");  
	p=head->next ;//头结点 
	scanf("%d",&i);  
	if(i==1) 
	{
		printf("输入要查询的姓名:");  
		scanf("%s",&name);
		while(p&&strcmp(p->data.name,name)>0)   
			p=p->next;   
		if(p==NULL||strcmp(p->data.name,name)<0)
			p=NULL;
	}
	else
		printf("输入错误!");  
	return p;
}
//按性别查找宾馆信息  
listnode *Sex_Search(linklist head)
{
	listnode *p; 
	char sex[10];
	int i;  
	printf("按 1 表示性别查找:");  
	scanf("%d",&i);
	p=head->next ;//头结点  
	if(i==1)  
	{
		printf("输入要查询的性别:");  
		scanf("%s",&sex); 
		while(p&&strcmp(p->data.sex,sex)>0)
			p=p->next; 
		if(p==NULL||strcmp(p->data.sex,sex)<0) 
			p=NULL;  
	}
	return p; 
}
//按房间号查找宾馆信息  
listnode *Roomnum_Search(linklist head)
{
	listnode *p;
	char number[10]; 
	int i;
	printf("按 1 表示房间号查找:");  
	p=head->next ;
	scanf("%d",&i);
	if(i==1)  
	{
		printf("输入要查询的房间号:");   
		scanf("%s",&number);
		while(p&&strcmp(p->data.number,number)>0)  
			p=p->next; 
		if(p==NULL||strcmp(p->data.number,number)<0)  
			p=NULL; 
	}
	return p; 
}
//按入住时间查找 
listnode *Cometime_Search(linklist head) 
{
	listnode *p; 
	char come[10]; 
	int i;  
	printf("按 1 表示入住时间查找:");  
	p=head->next ;
	scanf("%d",&i); 
	if(i==1) 
	{
		printf("输入要查询的入住时间:");  
		scanf("%s",&come); 
		while(p&&strcmp(p->data.come,come)>0) 
			p=p->next;  
		if(p==NULL||strcmp(p->data.come,come)<0)
			p=NULL; 
	}
	return p; 
}
//按客户姓名的信息修改  
void Info_Modify(linklist head) 
{  
	listnode *p;
	p=Name_Search(head);
	if(p==NULL)
	{ 
		printf("宾馆信息不存在!\n");  
	}  
	else
	{
		printf("姓名\t 性别\t 证件\t \t入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");
		printf("***************************\n");   
		scanf("%s%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,       
			p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );  printf("宾馆信息已修改!");    
	}
}
//客户信息的删除
void Delete_info(linklist head) 
{
	int i;  
	listnode *p,*q; 
	p=Name_Search(head);  
	if(p==NULL) 
	{
		printf("信息不存在!\n");   
		return;  
	}  
	else 
	{
		printf("按 1 删除:");   
		scanf("%d",&i);
		if(i==1) 
		{
			q=head;
			while(q!=NULL&&q->next!=p)  
				q=p->next;
			q->next=p->next; 
			free(p); 
			printf("信息已删除!");    
		}
	}
}
//宾馆信息的输出 
void Output_allInfo(linklist head) 
{
	listnode *p; 
	p=head;  
	printf("姓名\t 性别\t 证件\t \t入住\t 天数\t 房号\t 价格\t 押金\t 离开\n "); 
	while(p->next!=NULL)  { 
		
		printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->next->data.name,p->next->data.sex,p-> next->data.ID,      
			p->next->data.come,p->next->data.day,p->next->data.number,p->next->data.price,p->next->data. yajin,p->next->data.leave ); 
		p=p->next ;
	}
}
void SaveInfoToFile(linklist head) 
{ 
	FILE *fp;
	listnode *p; 
	p=head->next; 
	if(p==NULL) 
	{ 
		printf("现在没有顾客信息,请先输入顾客信息!\n\n"); 
		return; 
	}
	fp=fopen("D:\\宾馆\\customer.txt","w");  
	if(!fp) 
	{ 
		printf("文件不存在!\n");
		return;
	}
	while(p)  
	{
		fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID,      p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );     
		p=p->next; 
	}  
	fclose(fp);  
	printf("文件保存成功!\n"); 
} 


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377

文章来源: blog.csdn.net,作者:肥学,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jiahuiandxuehui/article/details/110677286

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。