收藏 分销(赏)

c语言课设电影院售票系统.docx

上传人:仙人****88 文档编号:12024610 上传时间:2025-08-29 格式:DOCX 页数:25 大小:308.23KB 下载积分:10 金币
下载 相关 举报
c语言课设电影院售票系统.docx_第1页
第1页 / 共25页
c语言课设电影院售票系统.docx_第2页
第2页 / 共25页


点击查看更多>>
资源描述
沈 阳 航 空 航 天 大 学 课程设计 学 号 _153407020324 班 级 _1534070203 姓 名 _ 李蕴琪__ 指导教师 孙玉霞 2015年 9 月 21 日 沈阳航空航天大学 课程设计任务书 学院:自动化学院 专业:自动化 班级:1534070203 学号:153407020324 题目:电影院售票系统 一、课程设计时间 二、课程设计内容 用C语言编写软件完成以下任务: 某电影院共有A、B、C、D四个场次在放映,具体的数据如下: 场次 电影名称 放映时间 座位数量 已售票数 A 钢铁侠3 18:30 150 0 B 致青春 19:30 150 0 C 姜戈 20:00 150 0 D 生化危机4 20:20 100 0 请写程序模拟这个售票过程(电影开场10分钟内允许退票,时间函数见参考资料),将所有的信息保存到文件中。 三、课程设计要求 程序质量: ² 贯彻结构化的程序设计思想。 ² 用户界面友好,功能明确,操作方便。 ² 用户界面中的菜单至少应包括“售票”、“退票”、“统计满座率”、“退出”4项。 ² 代码应适当缩进,并给出必要的注释,以增强程序的可读性。 课程设计说明书: ² 课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。 四、指导教师和学生签字 指导教师:________ 学生签名:________ 五、成绩 六、教师评语 沈阳航空航天大学设计用纸 目录 一、需求分析 2 二、设计分析 3 三、主要界面截图 8 四、技术要点 10 五、个人总结 11 六、参考文献 12 七、源程序 12 21 一、需求分析 根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。 该系统是一个较典型的售票操作系统,其使用者为工作人员和广大消费者,系统应该具有安全、稳定、功能齐全的特点。 1. 安全性分析 该系统管理的数据直接对电影院的收入产生影响,数据量较大且是一种基础性数据,能够为电影院管理提供重要参考,该程序简洁明了,无赘余语句,增加了程序运行的安全性。 2. 稳定性分析 指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。 3. 主要功能分析 (1)显示售票系统:这个程序可以模拟电影院售票系统,可以供顾客参考,另外这个系统简单明了,可以让顾客在选择看电影时更容易。 (2)显示满座率:这个系统可以统计电影院的满座率,给管理人员提供了方便,可以更快的计算利润。 (3)显示退票系统:这个程序可以模拟电影院退票系统,可以供顾客参考,另外这个系统方便快捷,可以让顾客在退票时更加容易方便。 二、设计分析 主要有四个功能模块,每个模块对应一个C语言自定义函数。这些函数原型及其功能简述如下: (1) 添加票据信息函数: 将各个场次的电影名称、放映时间、总票数以及剩余票数添加到函数中,用户在进行买票时对当前数据进行参考,最后决定自己购买哪场电影,为顾客带来方便。 (2) 售票函数: 在该功能模块中,顾客可根据提示信息,选择自己想要购买的电影票,选择适合自己的时间段,自己喜欢的电影以及购买的数量,同时,系统会根据当前票据信息对所买的票数进行判断,如不符合实际情况,会给出提示。 (3) 退票函数: 在该功能模块中,顾客可根据提示信息,选择自己想要 退掉的电影票,选择退票的电影以及退票的数量,同时, 系统会根据当前票据信息及时间信息对所退的票据进行 判断,如不符合实际情况,会给出提示不予退票。 (4)计满座率函数: 该部分里,每场电影售出票时都会进行累加,得出总票数,用售出的票数除上总座位数,即可得出该场的满场率。 1. 程序总体结构图(N-S框图) 打开文件movie_information.txt if(fp==NULL) 图1文件读取程序图 关闭文件 读取至文件末尾 读取文件内容 “打开文件失败” 返回exit(0) 否 是 图2 买票系统程序图 剩余座位数减一 卖票数加一 输入票数 输出此电影已播放 是 否 电影未播放 输出电影信息 输出无此电影 否 是 if(strcmp(inf[i].name,s)==0) 输入要观看的电影名称 输入想要退票的电影 if(strcmp(inf[i].name,s)==0) 是 否 输 输出电影信息 出 无 此 电影未播出 电 是 否 影 输出 无法 输入票数 退票 座数加一 卖票数减一 图3 退票系统程序图 图3 主程序程序图 Stime( ) Menu( ) Read( ) 输入选项choice Choice=1? 是 否 buy_ choice=2? ticket() 是 否 quit_ choice=3? ticket() 是 否 manzuo() choice=4? 是 否 exit(0) 三、 主要界面截图 图1 菜单界面 图2 买票界面 图3 退票界面 图4 满座率界面 四、技术要点 (对本程序贡献较大的C语言知识点;重要算法的设计与实现) 1.结构体的应用: 定义了结构体用来描述电影票的放映时间、座位数量、已售票数、满场率、票价,具体定义如下: struct inf { char rate[20]; char name[20]; int time_hour; int time_min; int seat; int sell; 所定义的结构体主要用于定义数组 2.部分函数的说明: 售票函数buy( ): 在该函数部分,加了一个判断语句,判断顾客所输入的 购买票数是否符合当前情况,若不符合,将给出相应的 提示具体程序如下: printf("请输入你要观看的电影名称:"); scanf("%s",s); for(i=0;i<p;i++) if(strcmp(inf[i].name,s)==0) 五、个人总结 通过一周课设,我的课程设计基本达到要求。 在这为期一星期的C程序课程设计中,让我学到了很多,了解到了自身的不足。我深刻的体会到细心的重要性。C语言程序设计是一个繁琐,需要投入很多的心思和精力的活。有时它会因为一个标点符号,让所有的心血白费。因而我们需要的不仅仅是平日知识的积累,还要养成良好的习惯,才能保证我们的路可以越走越远!同时我也明白,当我们面临困难时,我们应该正面迎击! 让我增加了对c语言的兴趣和对程序的了解,同时增加了我的自信。让我更熟练的编写程序和理解程序。C语言程序也算是对我们耐心的考验,只有不懈的追求,才能迎向胜利的曙光! 六、参考文献 1 谭浩强.C程序设计.北京:清华大学出版社,2005 2刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,2006 七、 源程序 #include<stdio.h> #include<malloc.h> #include<string.h> #include<conio.h> #include<stdlib.h> #include<time.h> struct inf { char rate[20]; char name[20]; int time_hour; int time_min; int seat; int sell; }inf[10]; char n[20]; int p; struct tm *ptr; void menu() { printf("*******************menu******************\n"); printf("* 1 买票\n\r"); printf("* 2 退票\n\r"); printf("* 3 满座率\n\r"); printf("* 4 退出\n\r"); printf("*****************************************\n"); } void read() { int i,re; FILE *fp; fp=fopen("movie_information.txt","r"); if(fp==NULL) { printf("文件打开失败!"); exit(0); } for(i=0;;i++) { re=fscanf(fp,"%s %s %d %d %d %d\n",inf[i].rate,inf[i].name,&inf[i].time_hour,&inf[i].time_min,&inf[i].seat,&inf[i].sell); if(re==EOF) break; } p=i; for(i=0;i<10;i++) { if(inf[i].rate=='\0') break; } printf("读取成功!\n"); fclose(fp); } void baocun() { int i; FILE *fp; fp=fopen("file08.txt","w"); if(fp==NULL) { printf("文件打开失败!"); exit(0); } for(i=0;i<p;i++) { fprintf(fp,"%s %s %d %d %d %d\n",inf[i].rate,inf[i].name,&inf[i].time_hour,&inf[i].time_min,&inf[i].seat,&inf[i].sell); } printf("数据保存完毕!\n"); fclose(fp); } void stime() { time_t it; it=time(NULL); ptr=localtime(&it); printf("现在的时间是%4d年%02d月%02d日 %d:%d:%d\n",ptr->tm_year+1900,ptr->tm_mon+1,ptr->tm_mday,ptr->tm_hour,ptr->tm_min,ptr->tm_sec); } int minate(int q,int p)//将时间全部转换为分钟 { int time_sum; time_sum=60*q+p; return time_sum; } void buy_ticket() { int i,a; char s[20]; printf("请输入你要观看的电影名称:"); scanf("%s",s); for(i=0;i<p;i++) if(strcmp(inf[i].name,s)==0) { printf("您想要观看的电影信息如下:\n"); printf("%s %s %d:%d %d %d\n",inf[i].rate,inf[i].name,inf[i].time_hour,inf[i].time_min,inf[i].seat,inf[i].sell); if(minate(inf[i].time_hour,inf[i].time_min) > minate(ptr->tm_hour,ptr->tm_min)) { printf("请输入你要购买的票数:"); scanf("%d",&a); inf[i].seat-=a; inf[i].sell+=a; } else printf("此电影在今日%d:%d已经开始播放,已经无票\n",inf[i].time_hour,inf[i].time_min); } baocun(); } void quit_ticket() { int i,m; char s[20]; printf("请输入你退票电影名称:"); scanf("%s",s); printf("请输入你要退票的数目:"); scanf("%d",&m); for(i=0;i<p;i++) if(strcmp(inf[i].name,s)==0) { printf("退票成功!\n退票后的电影信息如下:\n"); printf("%s %s %d:%d %d %d\n",inf[i].rate,inf[i].name,inf[i].time_hour,inf[i].time_min,inf[i].seat+m,inf[i].sell-m); } baocun(); } void manzuo() { int i; double m; for(i=0;i<p;i++) { m=inf[i].sell*1.0/(inf[i].seat+inf[i].sell)*1.0; printf("电影%s的满座率为%f:",inf[i].name,m); } } void main () { int choice; stime(); menu(); read(); system("color f5"); while(1) { printf("\n输入你要选择的选项:"); scanf("%d",&choice); switch (choice) { case 1: buy_ticket();break; case 2: quit_ticket();break; case 3:manzuo();break; case 4:exit(0);break; } } }
展开阅读全文

开通  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 

客服