长包房管理系统
#include <stdio.h> //3个酒店 2个房型
#include<malloc.h>
typedef struct //长包房结构体
{
char longtermname[20]; //长包房名称
int longtermnum; //长包房数量
}LongtermRoom;
typedef struct //酒店结构体
{
int id; //酒店id
char name[20]; //酒店名称
LongtermRoom room[10]; //每个酒店最多10长包房
int roomnum; //长包房类型
}Hotel;
typedef struct LNode //链表
{
Hotel data;
struct LNode *next;
} LinkList;
//尾插法建立单链表
void CreateListR(LinkList *&L,Hotel hotel[],int n)
{
LinkList *s,*r;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(int i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=hotel[i];
r->next=s;
r=s;
}
r->next=NULL;
}
//初始化线性表
void InitList(LinkList *&L)
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL; //创建头结点,其next域置为NULL
}
//判断线性表是否为空表
bool ListEmpty(LinkList *L)
{
return L->next==NULL;
}
//求线性表的长度
int ListLength(LinkList *L)
{
int n=0;
LinkList *p=L;
while(p->next!=NULL)
{
n++;
p=p->next;
}
return n;
}
//输出线性表1
void DispList1(LinkList *L)
{
LinkList *p=L->next;
while(p!=NULL)
{
printf("酒店id:%d 酒店名称:%s\n",p->data.id,p->data.name);
p=p->next;
}
printf("\n");
}
//输出线性表2
void DispList2(LinkList *L,int i)
{
LinkList *p=L->next;
while (p!=NULL&&p->data.id!=i)
{
p=p->next;
}
if(p==NULL)
printf("操作失败!!");
else
{
printf("id:%d 酒店名称:%s 长包房类型:%d\n",p->data.id,p->data.name,p->data.roomnum);
for(int i=0;i<p->data.roomnum;i++)
printf("----%s %d\n",p->data.room[i].longtermname,p->data.room[i].longtermnum);
}
printf("\n");
}
//插入数据元素
void ListInsert(LinkList *&L,int i,Hotel hotel)
{
int j=0;
LinkList *p=L,*s;
if(i<=0)
printf("输入错误!");
while(j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
printf("未找到相关数据!");
else
{
s=(LinkList *)malloc(sizeof(LinkList));//创建新结点
s->data=hotel;
s->data.roomnum=0;
s->next=p->next;
p->next=s;
printf("添加成功!\n");
}
}
int SetLongtermRoom(LinkList *L,int i,LongtermRoom longtermRoom)
{
LinkList *p=L->next;
while(p->data.id!=i&&p!=NULL)
{
p=p->next;
}
if(p==NULL)
{
printf("操作失败!!");
}
else
{
p->data.room[p->data.roomnum++]=longtermRoom;
printf("设置成功!\n");
}
return 0;
}
int main() //主函数
{
Hotel hotel;
LinkList *L;
LongtermRoom longtermRoom;
int k=1,sel,x;
InitList(L);
while(k)
{
printf("***********************\n");
printf(" 1.增加酒店 \n");
printf(" 2.显示酒店 \n");
printf(" 3.为酒店设置长包房 \n");
printf(" 4.显示酒店长包房 \n");
printf(" 5.退出 \n");
printf("***********************\n");
printf("请选择--");
scanf("%d",&sel);
switch(sel)
{
case 1:
printf("请输入酒店id 酒店名称:");
scanf("%d %s",&hotel.id,&hotel.name);
ListInsert(L,ListLength(L)+1,hotel);
break;
case 2:DispList1(L); break;
case 3:DispList1(L);
printf("请输入要设置长包房的酒店id:");
scanf("%d",&x);
printf("请输入长包房名称:");
scanf("%s",&longtermRoom.longtermname);
printf("请输入长包房数量:");
scanf("%d",&longtermRoom.longtermnum);
SetLongtermRoom(L,x,longtermRoom);
break;
case 4:DispList1(L);
printf("请输入要显示的长包房的酒店id:");
scanf("%d",&x);
DispList2(L,x);
break;
case 5:k=0; break;
}
}
return 0;
}
本文来自博客园,作者:早晨9点,转载请注明原文链接:https://www.cnblogs.com/onesun/p/15822966.html

浙公网安备 33010602011771号