收藏 分销(赏)

电影票订票.doc

上传人:pc****0 文档编号:7418620 上传时间:2025-01-03 格式:DOC 页数:7 大小:51KB 下载积分:10 金币
下载 相关 举报
电影票订票.doc_第1页
第1页 / 共7页
电影票订票.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
#include<stdio.h> #include<malloc.h> #include<string.h> #include <stdlib.h> #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); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服