长包房管理系统

#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;
}
posted @ 2022-01-19 16:36  早晨9点  阅读(586)  评论(0)    收藏  举报