电影票订票电影票订票
#include
#include
#include
#include
#define seat 10
//影片结构
typedef struct nodeMovie
{
int number;
char name[20];
int totalSeat;
int freeSeat;
struct nodeMovie *next;
}ListNodeMovie,*LinkListMovie;
//观众结构
typedef struct nodeViewer
{
char name...
电影票订票
#include
#include
#include
#include
#define seat 10
//影片结构
typedef struct nodeMovie
{
int number;
char name[20];
int totalSeat;
int freeSeat;
struct nodeMovie *next;
}ListNodeMovie,*LinkListMovie;
//观众结构
typedef struct nodeViewer
{
char name[10];
int number;
int setSeat;
struct nodeViewer *next;
}ListNodeViewer,*LinkListViewer;
void main()
{
char a[20];
int n=4,select,selectError,s0Temp,flag=0,flag1=0;
//初始化影片链
LinkListMovie L;
ListNodeMovie *p;
L=(ListNodeMovie *)malloc(sizeof(ListNodeMovie));
p=L;
//初始化观众链表
LinkListViewer L1;
ListNodeViewer *p1,*p2;
L1=(ListNodeViewer *)malloc(sizeof(ListNodeViewer));
p1=L1;
ListNodeMovie *s1=(ListNodeMovie *)malloc(sizeof(ListNodeMovie));
ListNodeMovie *s2=(ListNodeMovie *)malloc(sizeof(ListNodeMovie));
ListNodeMovie *s3=(ListNodeMovie *)malloc(sizeof(ListNodeMovie));
ListNodeMovie *s=(ListNodeMovie *)malloc(sizeof(ListNodeMovie));
//初始化三部影片链表
s1->number=1;
s1->freeSeat=seat;
strcpy(s1->name,"蝙蝠侠");
s1->next=NULL;
p->next=s1;
p=p->next;
s2->number=2;
s2->freeSeat=seat;
strcpy(s2->name,"超人");
s2->freeSeat=seat;
s2->next=NULL;
p->next=s2;
p=p->next;
s3->number=3;
s3->freeSeat=seat;
strcpy(s3->name,"指环王");
s3->freeSeat=seat;
s3->next=NULL;
p->next=s3;
p=p->next;
p->next=NULL;
//输出初始影片链表
printf("目前已有影片:\n");
printf("放映厅 影片名 空座位数\n");
p=L;
while(p->next!=NULL)
{
p=p->next;
printf("%3d %13s %7d\n",p->number,p->name,p->freeSeat);
}
//输入新增影片,加至影片链表p
printf("输入新增影片,以#结束:\n");
scanf("%s",a);
while(strcmp(a,"#")!=0)
{
ListNodeMovie *s=(ListNodeMovie *)malloc(sizeof(ListNodeMovie));
s->number=n;
n++;
s->freeSeat=seat;
strcpy(s->name,a);
s->next=NULL;
p->next=s;
p=p->next;
scanf("%s",a);
}
//输出初始影片链表
START: printf("目前已有影片:\n");
printf("放映厅 影片名 空座位数\n");
p=L;
while(p->next!=NULL)
{
p=p->next;
printf("%3d %13s %7d\n",p->number,p->name,p->freeSeat);
}
//程序主界面
printf("\n\n");
printf(" 电影院订票系统\n");
printf("------------------------------------\n");
printf(" 订票---------1\n");
printf(" 取消---------2\n");
printf(" 查找---------3\n");
printf(" 退出---------4\n");
printf("------------------------------------\n");
//输入选择选项
scanf("%d",&select);
//订票功能(选项1)
if(select==1)
{
ListNodeViewer *s0=(ListNodeViewer *)malloc(sizeof(ListNodeViewer));
printf("\n请输入您所选电影的放映厅编号:\n");
scanf("%d",&s0->number); REINPUT: printf("请输入您订购电影票的张数:\n");
scanf("%d",&s0->setSeat);
//检查订购票数是否大于5
if(s0->setSeat>5)
{
printf("对不起,每人限购5张以下票\n");
printf("重输票数---------1\n");
printf("返回系统---------2\n");
scanf("%d",&selectError);
if(selectError==1)
goto REINPUT;
else if(selectError==2)
goto START;
}
//检查订购票数是否超出放映厅空座位数(3部初始影片)
else if(s0->number==1)
{
//如果不超出则对应空座位数=空座位数-订购票数
s1->freeSeat=s1->freeSeat - s0->setSeat;
if(s1->freeSeat<0)
{
//如果超出则把刚才减的再加上
s1->freeSeat=s1->freeSeat + s0->setSeat;
printf("对不起,票数不够\n");
printf("重输票数---------1\n");
printf("返回系统---------2\n");
scanf("%d",&selectError);
if(selectError==1)
goto REINPUT;
else if(selectError==2)
goto START;
}
}
else if(s0->number==2)
{
s2->freeSeat=s2->freeSeat - s0->setSeat;
if(s2->freeSeat<0)
{
s2->freeSeat=s2->freeSeat + s0->setSeat;
printf("对不起,票数不够\n");
printf("重输票数---------1\n");
printf("返回系统---------2\n");
scanf("%d",&selectError);
if(selectError==1)
goto REINPUT;
else if(selectError==2)
goto START;
}
}
else if(s0->number==3)
{
s3->freeSeat=s3->freeSeat - s0->setSeat;
if(s3->freeSeat<0)
{
s3->freeSeat=s3->freeSeat + s0->setSeat;
printf("对不起,票数不够\n");
printf("重输票数---------1\n");
printf("返回系统---------2\n");
scanf("%d",&selectError);
if(selectError==1)
goto REINPUT;
else if(selectError==2)
goto START;
}
}
else
{
//通过输入的观众链表中的放映厅编号定位影片链表(新增影片)
p=L;
s0Temp=s0->number;
while(s0Temp>0)
{
p=p->next;
s0Temp--;
}
p->freeSeat=p->freeSeat - s0->setSeat;
if(p->freeSeat<0)
{
p->freeSeat=p->freeSeat + s0->setSeat;
printf("对不起,票数不够\n");
printf("重输票数---------1\n");
printf("返回系统---------2\n");
scanf("%d",&selectError);
if(selectError==1)
goto REINPUT;
else if(selectError==2)
goto START;
}
}
//没有错误,订票成功
printf("请输入您的名字:\n");
scanf("%s",&s0->name);
//创建观众链表p1
s0->next=NULL;
p1->next=s0;
p1=p1->next;
printf("恭喜您,%s,您成功的在第%d放映厅订购了%d张票
\n",p1->name,p1->number,p1->setSeat);
goto START;
}
//取消功能(选项2)
else if(select==2)
{
printf("请输入您的姓名:\n");
scanf("%s",a);
p1=L1;
//如果姓名在观众链表中查找不到且链表未结束,则移至下一结点
while(strcmp(a,p1->name)!=0&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
//查找到姓名
if(strcmp(a,p1->name)==0)
{
//如果查找的姓名是头结点,则头结点链至下一结点
if(p1==L1)
L1=p1->next;
//不是头结点
else
p2->next=p1->next;
//退票成功,标记flag
flag=1;
printf("恭喜您%s,成功的在第%d放映厅退票%d张
\n",p1->name,p1->number,p1->setSeat);
//定位影片链表并将退票数加到对应放映厅空座位数
p=L;
s0Temp=p1->number;
while(s0Temp>0)
{
p=p->next;
s0Temp--;
}
p->freeSeat=p->freeSeat + p1->setSeat;
}
//根据标记flag判断是否退票成功
if(flag!=1)
printf("查无此人~\n");
goto START;
}
//查找功能(选项3)
else if(select==3)
{
printf("请输入您要查找的影片名称:\n");
scanf("%s",a);
p=L;
//根据输入影片名输出对应影片信息
while(p!=NULL)
{
if(strcmp(a,p->name)==0)
{
printf("影片%s在第%d放映厅,有%d个空座位
\n",p->name,p->number,p->freeSeat);
flag1=1;
}
p=p->next;
}
//根据标记flag判断是否退票成功
if(flag1!=1)
printf("没有这部电影~\n");
goto START;
}
//退出功能(选项4)
else
{
printf("欢迎下次再来~\n");
exit(0);
}
}
本文档为【电影票订票】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。