C语言旅馆信息管理系统.docx
《C语言旅馆信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言旅馆信息管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
C语言旅馆信息管理系统
/*
*
*题目:
旅店信息管理系统
*
*小组成员:
闫若琳戴雨晨马渊沐张子飞李闯
王浩崔以博孙浩浩李春普温健成
*/
#include<>
#include<>
#include<>
#include<>
#defineMIN1
#defineMAX30
#defineLENsizeof(structHotel)看旅店信息\n2.查看某一房间信息\n3.查看旅客信息\n");
printf("4.查找某一旅客信息\n5.旅客入住\n6.旅客换房\n7.旅客退房\n8.退出\n");
printf("\n-----------------------------------------------------------------------------\n");
choice=getch();
switch(choice)
{
case'1':
out_information();break;
case'2':
search_number();break;
case'3':
show_all();break;
case'4':
search_name();break;
case'5':
regeist();break;
case'6':
change();break;
case'7':
fire();break;
case'8':
exit(0);break;
default:
printf("Error!
");break;
}
printf("\n\n请按任意键继续!
\n");
getch();
system("cls");
}while
(1);
return0;
}
voidout_information()//张子飞:
定义out_information函数,完成查看旅店信息功能
{
FILE*fp;
charch;
if((fp=fopen("","r"))==NULL)
{
printf("无法打开文件!
\n");
getch();
exit(0);
}
ch=fgetc(fp);
system("cls");
printf("\n\n\t\t\t旅店信息介绍:
(若没有信息请返回创建)");
printf("\n-------------------------------------------------------------------------------\n\n\t");
while(ch!
=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
voidsearch_number()//李春普、温健成:
定义search_number函数,用来完成查看某一房间的信息
{
charch[2];
introom_number;
structHotel*head,*pa;
head=load();
printf("\n请输入需要查看的房间序号:
(%d~%d):
",MIN,MAX);
scanf("%d",&room_number);
pa=head->next;
if(room_numberMAX)
{
printf("\a\nError!
");
return;
}
do
{
if(pa)
{
if(room_number==pa->room_number)//如果找到相应信息,则输出
{
printf("\n");
printf("roomnumber:
\t%d",pa->room_number);
printf("\n");
printf("name:
\t\t%s",pa->name);
printf("\n");
printf("sex:
\t\t%s",pa->sex);
printf("\n");
printf("ID:
\t\t%s",pa->ID);
printf("\n");
printf("paid:
\t\t%s",pa->paid);
printf("\n");
printf("%d%d%d",pa->inyear,pa->inmonth,pa->inday);
printf("\n");
printf("\n请选择是否继续查看信息(y/n):
\n");
scanf("%s",ch);
if((strcmp(ch,"Y")!
=0)&&(strcmp(ch,"y")!
=0))
{
return;
}
else
{
printf("\n请输入需要查看的房间序号:
(%d~%d):
",MIN,MAX);
scanf("%d",&room_number);
pa=head->next;
if(room_numberMAX)
{
printf("无此房间!
");
return;
}
continue;
}
}
pa=pa->next;
}
else
{
printf("\n该房间还没有旅客入住");
return;
}
}while
(1);
}
voidshow_all()//戴雨晨:
定义是show_all函数,用来显示所有旅客信息
{
structHotel*head,*pa;
head=load();
pa=head->next;
printf("\n所有入住旅客的信息如下:
\n");
while(pa)//显示所有的旅客信息
{
printf("\n");
printf("roomnumber:
\t%d",pa->room_number);
printf("\n");
printf("name:
\t\t%s",pa->name);
printf("\n");
printf("sex:
\t\t%s",pa->sex);
printf("\n");
printf("ID:
\t\t%s",pa->ID);
printf("\n");
printf("paid:
\t\t%s",pa->paid);
printf("\n");
printf("date:
\t\t%d%d%d",pa->inyear,pa->inmonth,pa->inday);
printf("\n");
pa=pa->next;
}
}
voidsearch_name()//马渊沐:
定义search_name函数,用来完成查看某一旅客的信息
{
charch[2];
charinname[20];//用数组inname[20]来储存需要查询的旅客name
structHotel*head,*pa;
head=load();
printf("\n请输入需要查看的旅客姓名:
");
scanf("%s",inname);
pa=head->next;
do
{
if(pa)
{
if(strcmp(inname,pa->name)==0)
{
printf("\n");
printf("roomnumber:
\t%d",pa->room_number);
printf("\n");
printf("name:
\t\t%s",pa->name);
printf("\n");
printf("sex:
\t\t%s",pa->sex);
printf("\n");
printf("ID:
\t\t%s",pa->ID);
printf("\n");
printf("paid:
\t\t%s",pa->paid);
printf("\n");
printf("date:
\t\t%d%d%d",pa->inyear,pa->inmonth,pa->inday);
printf("\n");
printf("\n请选择是否继续查看信息(y/n):
\n");
scanf("%s",ch);
if((strcmp(ch,"Y")!
=0)&&(strcmp(ch,"y")!
=0))
{
return;
}
else
{
printf("\n请输入需要查看的旅客姓名:
");
scanf("%s",inname);
pa=head->next;
continue;
}
}
pa=pa->next;
}
else
{
printf("\n没有查到该旅客的信息");
return;
}
}while
(1);
}
voidregeist()//闫若琳:
定义regeist函数实现入住功能
{
charch[2];
intnumber;
structHotel*head,*p1,*p2,*pa;
head=load();
pa=head->next;
printf("\n已入住房间:
\n");
while(pa)
{
printf("\n");
printf("roomnumber:
\t%d",pa->room_number);
pa=pa->next;
}
fclose(fp);
if((fp=fopen("","a+"))==NULL)
{
printf("无法打开文件!
\n");
getch();
exit(0);
}
head=NULL;
p1=(structHotel*)malloc(LEN);
p2=(structHotel*)malloc(LEN);
if((p1==NULL)||(p2==NULL))
{
printf("动态内存分配失败!
\n");
getch();
exit(0);
}
printf("\n请登记入住信息!
\n");
printf("请选择房间号(%d~%d):
",MIN,MAX);
scanf("%d",&number);
if(numberMAX)
{
printf("无此房间!
");
return;
}
p1->room_number=number;//在该房间没有旅客时,登记入住
printf("name:
\t");
scanf("%s",&p1->name);
printf("sex:
\t");
scanf("%s",&p1->sex);
printf("ID:
\t");
scanf("%s",&p1->ID);
printf("paid:
\t");
scanf("%s",&p1->paid);
printf("date(年月日空格隔开):
");
scanf("%d%d%d",&p1->inyear,&p1->inmonth,&p1->inday);
p1->next=NULL;
if(head==NULL)//将输入的信息保存到链表
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
fwrite(p2,LEN,1,fp);
fclose(fp);//将链表信息保存到磁盘文件
printf("\n请选择是否继续登记信息(y/n):
");//判断是否继续登记旅客信息
scanf("%s",ch);
if((strcmp(ch,"y")!
=0))
{
printf("\n登记旅客入住信息成功!
");
return(0);
}
elseregeist();
return;//登记完成后返回头链表指针
}
voidchange()//李创:
定义change函数实现换房功能
{
introom_number;
intnewroom_number;
structHotel*head,*pa,*L;
head=load();
printf("\n请输入需要换房的房间序号:
(%d~%d):
",MIN,MAX);
scanf("%d",&room_number);
if(room_numberMAX)
{
printf("无此房间!
");
getch();
return;
}
pa=head->next;
do
{
if(pa)
{
if(room_number==pa->room_number)
{
printf("\n");
printf("roomnumber:
\t%d",pa->room_number);
printf("\n");
printf("name:
\t\t%s",pa->name);
printf("\n");
printf("sex:
\t\t%s",pa->sex);
printf("\n");
printf("ID:
\t\t%s",pa->ID);
printf("\n");
printf("paid:
\t\t%s",pa->paid);
printf("\n");
printf("date:
\t\t%d%d%d",pa->inyear,pa->inmonth,pa->inday);
printf("\n");
printf("\n请输入需要换到的房间序号:
(%d~%d):
",MIN,MAX);
scanf("%d",&newroom_number);
if(newroom_numberMAX)
{
printf("无此房间!
");
getch();
return;
}
pa->room_number=newroom_number;
break;
}
pa=pa->next;
}
else
{
printf("\n该房间还没有旅客入住!
\n");
getch();
return;
}
}while
(1);
fclose(fp);
if((fp=fopen("","wb"))==NULL)
{
printf("无法打开文件!
\n");
getch();
exit(0);
}
L=head->next;
while(L)
{
fwrite(L,LEN,1,fp);
L=L->next;
}
fclose(fp);
printf("\n换房成功!
");
return;
}
voidfire()//王浩:
定义fire函数实现退房功能
{
charinname[20];//用数组inname[20]来储存需要退房旅客name
structHotel*head,*qian,*pa,*L;
head=load();
qian=(structHotel*)malloc(LEN);//开辟新的节点
if(qian==NULL)
{
printf("动态内存分配失败!
\n");//如果动态内存分配失败,返回失败信息
getch();
exit(0);
}
printf("\n请输入需要退房的旅客姓名:
");
scanf("%s",inname);
pa=head->next;
do
{
if(pa)
{
if(strcmp(inname,pa->name)==0)
{
printf("\n");
printf("roomnumber:
\t%d",pa->room_number);
printf("\n");
printf("name:
\t\t%s",pa->name);
printf("\n");
printf("sex:
\t\t%s",pa->sex);
printf("\n");
printf("ID:
\t\t%s",pa->ID);
printf("\n");
printf("paid:
\t\t%s",pa->paid);
printf("\n");
printf("date:
\t\t%d%d%d",pa->inyear,pa->inmonth,pa->inday);
printf("\n");
qian=head;
while(qian->next!
=pa)//找到需要查找节点的前一个节点
qian=qian->next;
if(pa->next==NULL)
qian->next=NULL;
else
qian->next=pa->next;
break;
}
pa=pa->next;
}
else
{
printf("\n没有查找到该旅客的信息!
\n");
getch();
exit(0);
}
}while
(1);
L=head->next;
if((fp=fopen("","wb"))==NULL)
{
printf("无法打开文件!
\n");
getch();
exit(0);
}
while(L)
{
fwrite(L,LEN,1,fp);
L=L->next;
}
fclose(fp);
printf("\n退房成功!
");
}