《c++电影院管理系统的设计》由会员分享,可在线阅读,更多相关《c++电影院管理系统的设计(41页珍藏版)》请在金锄头文库上搜索。
1、 内蒙古科技大学 课程设计论文题 目:C+课程设计电影院售票管理系统学生姓名:张雪婉学 号:1167119224专 业:通信工程 班 级:2011-2指导教师:郝斌【摘要】1第一章 问题描述1.1 电影院售票管理系统的设计第二章 问题分析2.1 阐述你对问题的理解、解决问题的方案说明2.2 系统功能模块的划分第三章 数据模型3.1 相关数据结构的说明类的设计3.2 程序结构说明,即程序各个部分之间如何协调来完成任务第四章 算法描述4.1 解题算法的设计思路介绍4.2 主要程序代码,加上详细的注释第五章 设计总结第六章 附录【摘要】电影院售票管理系统实现的功能:1、录入信息:且可不定时增加数据。
2、并根据放映时间排序。2、浏览信息:可显示出某日期所有放映信息,如果当前系统时间超过了某电影的放映时间,则显示“此电影放映结束”的提示信息。3、查询电影:可按日期或电影名查询。并显示目标的详细信息。 4、售票:售票即为影片预定。可根据输出的可预订信息选择订票,如果该影片已放映,则提示不能订票,如果售票成功,自动跟新座位数。5、退票:影片退订即退票。根据放映时间和系统时间来判断是否能进行退票,并自动更新座位数。其他参数:程序中定义了一个moive结构和一个ticket类,在结构体和类外还定义了seat()和putout()两个函数。moive结构用来存放电影的数据(属性)信息;ticket类实现管
3、理moive结构体里面的数据和系统功能模块;seat()和putout()函数用来辅助结构体和类,简化程序。第一章: 问题描述1.1、设计资料及参数用C+设计一个系统,能提供下列服务:(1)录入放映信息,格式为:放映日期放映时间场次电影名称票价会员折扣剩余座位2011-11-210:301桃姐308782011-11-214:002桃姐30886可不定时地增加放映数据。(2)浏览放映信息,可显示出某日期所有放映信息,如果当前系统时间超过了某电影的放映时间,则显示“此电影放映结束”的提示信息。(3)查询电影:可按日期或电影名查询。 (4)售票和退票功能A:查询电影名。当剩余座位数大于0,并且当前
4、系统时间小于放映时间时才能售票,计算会员折扣,售票后自动更新剩余座位数。 B:退票时,输入退票的电影名和场次,当电影未放映时才能退票,如果以会员折扣购买的电影票,退票按照折扣价退款,退票后自动更新剩余座位数。1.2、设计要求及成果根据系统功能要求,可以将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和方法);(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;(6)功能调试;(7)提交课程设计报告:完成系统总结报告以及系统使用说明书第二章:问题分析2.1、对问题理解的阐述、解决方案
5、的说明由设计题目知电影院售票管理系统主要由1、录入(input)2、显示(show)3、查询(search)4、售票(sell)5、退票(refund)五个模块组成。对整个系统进行功能分析不难发现,电影院管理系统可以对所有数据的信息进行操作,比如:录入(input)、显示(show)、查询(search)、售票(sell)和退票(refund)。所以需要设计一个moive结构体和ticket类来实现对基本数据的储存和模块功能的实现。考虑到程序实现程序的尽量简洁明了,又增加了时间比较函数(timecmp)、座位判断函数(seat)和信息输出函数(putout)三个函数,对程序实现一定程度的简化。
6、2.2、系统的模块功能流程图如下:运行程序时,需要先输入数据。并定义了时间的输入格式。如(2013-6-21 22:00)。显示数据时,会先跟系统时间比较,如果小于系统当前时间,则输出提示“已播放”。查找时满足要求的按名字查找和按日期查找。找到之后与系统时间比较输出提示,如果没找到,输出提示。查询时分为按电影名和日期两种查询功能。查询时将会出现界面来供操作者选择。订票函数中会先给出可预订的提示,这样可以更有效订票。输入之后会先检查是否播放,若播放则给出提示,退出。若未找到,则同样给出提示。如果票卖光了,仍然有提示,如果电影达到预定要求,则先给出现有座位的预订情况,方便用户高效率订票。当客户输入
7、一座位时程序会判断这个作为是否被预订,如果是,则给出提示;如果no就输出用户需要支付的金额,并记录在座位号对应的数组中。方便退票时退款。订票成功后还会输出现有座位的信息方便核实。退票时,操作者要先输入电影名,若电影名不存在或时间以过,会提示“输入错误”或“电影已播放,无法退票”。若在预定的电影中,还会要求输入退订的座位号,以便进一步确认是否真正该电影。若两道确认都成功通过,就会输出要腿还的金额。其中订票和退票函数都是用大篇幅(一两百行)来构建起强大而有完善的提示功能,已完成快捷而又便利操作。第三章:数据模型3.1相关数据结构和类的说明struct moive /定义moive结构体,存放数据i
8、nt year;/年int month;/月int day;/日int hour;/时int minute;/分int datetime5;/装电影放映时间,方便比较与系统时间比较 int num;/场次string name;/电影名float price;/票价float discount;/折扣int rest;/余票float seat1010;/初始值都为0,只在预定后改变其值;class ticket/定义ticket类private:moive ticN;/存电影数据的数组int len;/现有电影数量public:ticket();/构造函数ticket();/析构函数frie
9、nd void seat(int i);/把seat函数定义为类ticket的友元函数friend void putout(int i);/把putout函数定义为类ticket的友元函数void input();/录入void show();/显示void search();/查找void sell();/订票void refund();/退票;tick;在类中把seat()和putout()函数定义为类的友元函数,实现类外的函数访问类内的成员,这样可以源代码的篇章幅度,实现在一定程度上简化程序。私有数据成员moive ticN,便于操作数据。数据组织结构图:3.2 程序结构说明,即程序各个
10、部分之间如何协调来完成任务程序的主要实现过程是在ticket类 中定义的成员函数和友元函数来实现完成,并且在类外实现。这样方便了对数据进行操作。并且定义了一个全局的比较函数timecmp,可以比较两个时间数组的大小;函数seat实现判断某一座位是否被预定;函数putout实现对电影信息的输出。这三个函数在程序中用途很广泛,在整个程序中多次有时间的比较,座位的检索,电影的信息的输出,当用到某一函数时,直接在模块调用即可,不必多次编写,实现程序的简化。其中程序总很多代码是重复用到的,但是没有写成函数来调用有两点原因。首先如果写成函数调用的话会降低程序的可读性,其次写成函数的话,代码就固定下来了,使
11、得程序不够灵活。所以在程序不必要的地方,就用代码来代替函数调用。举个例子说,在修改,删除,订票,退票中都会用到按电影名查找。可是没有单独把按电影名查找单独写成函数来调用,是因为在按电影名查找会输出很多详细的电影信息和提示信息。这样也不便于调用函数。第四章:算法的描述4.1 解题算法的设计思路介绍timecmp函数是用来比较日期时间函数,它需要先把两个时间装入数组再传进来地址,然后从年月日时分进行比较。如果有大小区分,直接返回。int timecmp(int a,int b,int n)int i; for(i=0;ibi)return 1;if(aibi)return -1;if(i=n)re
12、turn 0;Seat函数作为检索某一座位是否已被预订,因为seatmn=0,即初始化都为0。二当该座位被预订后就会赋予座位号,所以用两层for循环,把所有的座位都检索了一遍。在输出,就一下子看出那些座位被预定,那些没有。因为seat函数是类外函数,不能直接操作类ticket的成员,所以要在类中写入“friend voidseat(int i);”即定义为类的友元函数。若不加,编译将会出错。void seat(int i) for(int m=0;m10;m+) coutendlt;for(int n=0;n10;n+) cout; if(tick.tici.seatmn!=0) cout有人
13、; else cout无人; cout; putout函数是便于把电影的属性(数据信息)输出,因为tic是类中的数据成员且又是结构体moive类型的变量,故要用两层引用。但putout函数也是全局的类外函数,要想访问类ticket中的成员,也需把其定义为类的友元函数。不然编译阶段会出错。void putout(int i) couttick.tici.year-tick.tici.month-tick.tici.dayt; couttick.tici.hour:tick.tici.minutet; couttick.tici.numttick.tici.namett; couttick.tici.pricettick.tici.discountttick.tici.restendl;4.2 主要程序代码和运行结果图主函数,即选择菜单:char as; while(1) coutntttt欢迎进入管理系统nn; coutntttt1.录入影片; coutntttt2.显示影片; coutntt