您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页电影票订票

电影票订票

来源:意榕旅游网


电影票订票

#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

printf(\"输入新增影片,以#结束:\\n\");

scanf(\"%s\

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\

}

//输出初始影片链表

START: printf(\"目前已有影片:\\n\");

printf(\"放映厅 影片名 空座位数\\n\");

p=L;

while(p->next!=NULL)

{

p=p->next;

printf(\"%3d %13s %7d\\n\

}

//程序主界面

printf(\"\\n\\n\");

printf(\" 电影院订票系统\\n\");

printf(\"------------------------------------\\n\");

printf(\" 订票---------1\\n\");

printf(\" 取消---------2\\n\");

printf(\" 查找---------3\\n\");

printf(\" 退出---------4\\n\");

printf(\"------------------------------------\\n\");

//输入选择选项

scanf(\"%d\

//订票功能(选项1)

if(select==1)

{

ListNodeViewer *s0=(ListNodeViewer *)malloc(sizeof(ListNodeViewer));

printf(\"\\n请输入您所选电影的放映厅编号:\\n\");

scanf(\"%d\请输入您订购电影票的张数:\\n\");

scanf(\"%d\

//检查订购票数是否大于5

if(s0->setSeat>5)

{

printf(\"对不起,每人限购5张以下票\\n\");

printf(\"重输票数---------1\\n\");

printf(\"返回系统---------2\\n\");

scanf(\"%d\

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\

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\

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\

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\

if(selectError==1)

goto REINPUT;

else if(selectError==2)

goto START;

}

}

//没有错误,订票成功

printf(\"请输入您的名字:\\n\");

scanf(\"%s\

//创建观众链表p1

s0->next=NULL;

p1->next=s0;

p1=p1->next;

printf(\"恭喜您,%s,您成功的在第%d放映厅订购了%d张票

\\n\

goto START;

}

//取消功能(选项2)

else if(select==2)

{

printf(\"请输入您的姓名:\\n\");

scanf(\"%s\

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\

//定位影片链表并将退票数加到对应放映厅空座位数

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\

p=L;

//根据输入影片名输出对应影片信息

while(p!=NULL)

{

if(strcmp(a,p->name)==0)

{

printf(\"影片%s在第%d放映厅,有%d个空座位

\\n\

flag1=1;

}

p=p->next;

}

//根据标记flag判断是否退票成功

if(flag1!=1)

printf(\"没有这部电影~\\n\");

goto START;

}

//退出功能(选项4)

else

{

printf(\"欢迎下次再来~\\n\");

exit(0);

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务