欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C++课程设计报告电影院售票系统.docx

    • 资源ID:1128905       资源大小:536.21KB        全文页数:96页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++课程设计报告电影院售票系统.docx

    1、C+课程设计报告电影院售票系统 【摘要】电影院售票管理系统两个模块管理系统和售票系统。1.管理系统具有如下功能:(1)录入信息:且可不定时增加数据。并根据放映时间排序。(2)浏览信息:可显示出某日期所有放映信息,如果当前系统时间超过了某电影的放映时间,则显示“此电影放映结束”的提示信息。(3)查询电影:可按日期或电影名查询。并显示目标的详细信息。 (4)修改信息:可根据电影名修改该电影的各种信息(余票除外)并简单排序。(5)删除电影:根据电影名找到该电影并删除。2.售票系统功能如下:(1)售票:售票即为影片预定。可根据输出的可预订信息选择订票,如果该影片已放映,则提示不能订票,如果售票成功,自

    2、动跟新座位数。(2)退票:影片退订即退票。根据放映时间和系统时间来判断是否能进行退票,并自动更新座位数。其他参数:程序中定义了一个node结构和一个ticket类。结构用来存信息,节点类存节点长度,和管理里面的数据。第一章 问题描述一.1 电影院售票管理系统的设计1.设计资料及参数:用C+设计一个系统,能提供下列服务:(1)录入放映信息,格式为:放映日期放映时间场次电影名称票价会员折扣剩余座位2011-11-210:301桃姐308782011-11-214:002桃姐30886可不定时地增加放映数据。(2)浏览放映信息,可显示出某日期所有放映信息,如果当前系统时间超过了某电影的放映时间,则显

    3、示“此电影放映结束”的提示信息。(3)查询电影:可按日期或电影名查询。 (4)售票和退票功能A:查询电影名。当剩余座位数大于0,并且当前系统时间小于放映时间时才能售票,计算会员折扣,售票后自动更新剩余座位数。B:退票时,输入退票的电影名和场次,当电影未放映时才能退票,如果以会员折扣购买的电影票,退票按照折扣价退款,退票后自动更新剩余座位数。2.设计要求及成果根据系统功能要求,可以将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和力一法);(4)完成类中各个成.员函数的定义;(5)完成系统的

    4、应用模块;(6)功能调试;(7)完成系统总结报告以及系统使用说明书。第二章 问题分析二.1 阐述你对问题的理解、解决问题的方案说明由设计题目知电影院售票管理系统主要可分为两个大模块:1.管理系统2.售票系统。对整个系统进行功能分析不难发现,管理系统和售票系统的权限是不一样的,管理系统具有管理员权限,可以对所有数据的信息进行操作,比如:录入(input)、显示(show)、查找(search)、修改(change)、删除(del);而售票系统则只进行售票(sell)和退票(refund)。所以需要设计一个manager和customer函数来区分权限的函数。所以,manager里包含了需要实现的

    5、input、show、search、change、del等函数来满足管理要求的功能。Customer包含sell和refund。二.2 系统功能模块的划分系统的模块图如下:欢迎界面主函数售票customer管理manager删除退票售票显示输入查找修改管理函数进入时需要管理密码:1234运行程序时,需要先输入数据,根据需要在对数据进行简单操作。录入时,每录入一个信息就会对现有信息进行插入排序。显示数据时,会先跟系统时间比较,如果小于系统当前时间,则输出提示“已播放”。查找时满足要求的按名字查找和按日期查找。找到之后与系统时间比较输出提示,如果没找到,输出提示。修改函数支持多种修改,可以避免输入

    6、的一些错误。也可以修改日期,以调整放映时间。删除函数是为防止输入错误,或是内存不够用而设计的。比如前几天已播放的,在内存中如果作用不是很大,完全是可以删除的。这样能跟有效利用资源。售票系统设计较为简单,主要是订票和退票。订票函数中会先给出可预订的提示,这样可以更有效订票。输入之后会先检查是否播放,若播放则给出提示,退出。若未找到,则同样给出提示。如果票卖光了,仍然有提示,如果电影达到预定要求,则先给出现有座位的预订情况,方便用户高效率订票。当客户输入一座位时程序会判断这个作为是否被预订,如果是,则给出提示;如果no就输出用户需要支付的金额,并记录在座位号对应的数组中。方便退票时退款。订票成功后

    7、还会输出现有座位的信息方便核实。其中订票和退票函数都是用大篇幅(一两百行)来构建起强大而有完善的提示功能,趋于人性化的设计跟拉近了与客户的距离。第三章 数据模型三.1 相关数据结构的说明类的设计程序中定义的数据:struct node int year; int month; int day; int hour; int minute; int datetime5;/装时间 ,方便比较 int num; string name; float price; float discount; int rest; float seat1010;class ticket private: node ti

    8、cN; int len; public: ticket(); ticket(); int sort(int i); void input(); void show(); void search(); void change(); void del(); void sell(); void refund();tick;对系统进行数据分析就会知道电影院售票管理系统主要处理的是基本电影信息。每个电影的基本信息放在struct node中定义,包括基本的放映日期(date),时间(time),场次(num),影片名(name),票价(price),会员折扣(discount)及余座(rest)。其中日

    9、期是包含有年、月、日,时间包含时、分,整形数据,其中还有一个数组(detetime5)是把该影片时间存储进去,方便以后的排序和与系统时间比较。还有一个而二维数组seat1010,是用来存储座位信息(初始化全为0),如果此座位被预定,则对应的座位存的就是订票时的付款,这也方便了退票时的退款。还要解决数据的组织问题,怎么才能把不同的电影存起来呢?方法目前只学了两种,数组和链表。数组和链表各有优缺点。用链表实现虽然对空间进行了充分利用,但其对数据的存储让人实在无奈,并且操作也不容易实现。剩下就是数组了,虽然需要定义一个大点的数组,但其对数据操作非常方便,这深受初学者的我们的青睐。所以在ticket类

    10、中定义了个node50。如果需要扩大直接改文件前的#define N后的数字就可以了。其实质随意选择把电影信息存在结构体而不是类中,主要考虑到,结构体存取数据的方便性,而采用类无疑会给程序很多负担存取。数据组织结构图:ticket类Input()Show()Search()Change()Del()Sell()Refund()lennode50三.2 程序结构说明,即程序各个部分之间如何协调来完成任务程序的主要实现过程是在ticket类 中定义的成员函数来实现完成,并且在类外定义。这样方便了对数据进行操作。并且定义了一个全局的比较函数timecmp,可以比较两个时间数组的大小。此函数在程序中用

    11、途很广泛,每次输入输出都需要与系统时间进行比较,所以在每个操作函数中都用到了。此外sort函数也是非常有用的,它主要用在输入和修改上。每次更新数据都会根据现有数据的时间进行排序。这也方便了读数据的客户。其中程序总很多代码是重复用到的,但是没有写成函数来调用有两点原因。首先如果写成函数调用的话会降低程序的可读性,其次写成函数的话,代码就固定下来了,使得程序不够灵活。所以在程序不必要的地方,就用代码来代替函数调用。举个例子说,在修改,删除,订票,退票中都会用到按电影名查找。可是没有单独把按电影名查找单独写成函数来调用,是因为在按电影名查找会输出很多详细的电影信息,会使客户感觉到是在浪费时间。下面是

    12、按电影名查找的代码片段: for(i=0;itick.len;i+)/遍历 if(timecmp(tick.tici.datetime,temp,3)=0)/找到 k+;/找到的记录数 if(j=1) coutn 查找结果如下:endl; cout_endl; cout日-期t时-间t场次t电影名称t票价t折扣t余票endlendl; j+; couttick.tici.year-tick.tici.month-tick.tici.dayt; couttick.tici.hour:tick.tici.minutet; couttick.tici.numttick.tici.namett; co

    13、uttick.tici.pricettick.tici.discountttm_year+1900,tim-tm_mon+1,tim-tm_mday,tim-tm_hour,tim-tm_min; int s; s=timecmp(tick.tici.datetime,array,5);/与系统时间比较 if(s=0) couta(已播放!) endl; else coutendl; coutendltttt当前预订情况; for(int m=0;m10;m+) coutendlt; for(int n=0;n10;n+) cout; if(tick.tici.seatmn!=0) cout有

    14、人; else cout无人; cout; coutendl; if(j!=1) coutendl; system(pause);/任意键继续 return; if(i=tick.len&k=0) coutnatttt未找到结果!endl; system(pause);/任意键继续 return; 而在另一些函数种植需要提示用户找没找到就可以了。下面是del函数的按电影名查找for(i=0;itick.len;i+) if(tick.tici.name=na)/找到 j+; for(int j=i+1;jtick.len;j+) tick.ticj-1=tick.ticj; coutendlt

    15、ttt删除成功!n; tick.len-; if(i=tick.len&j=0) coutnatttt未找到结果,删除失败!ntm_year+1900,tim-tm_mon+1,tim-tm_mday,tim-tm_hour,tim-tm_min;/将系统时间装入数组,方便比较11.int k=0;/标记找到的记录12.r=timecmp(tick.tici.datetime,array,5);/与系统时间比较 ,返回值给r。13.int j=0;/修改函数中标记修改数量14.string inpass;/manager函数中的管理员密码初始值123415.Flag,as,choice/是用来

    16、存接受的选择的第四章 算法描述四.1 解题算法的设计思路介绍timecmp函数是用来比较日期时间函数,它需要先把两个时间装入数组再传进来地址,然后从年月日时分进行比较。如果有大小区分,直接返回。int timecmp(int a,int b,int n) for(int i=0;ibi) return 1; if(aibi) return -1; if(i=n) return 0; /Sort函数主要是对第i个元素进行插入排序。需要先遍历数组然后插入到第一个比他大的元素前面。int ticket:sort(int i) int r,n,j; for(j=0;ji;j+)/从首元素开始比较日期

    17、r=timecmp(tick.tici.datetime,tick.ticj.datetime,5); if(r=-1)/找到第一个比他大的日期 ,插入其前面 break; if(j=tick.len-1) return j; if(j=i) for(j=i+1;jtick.len;j+)/从首元素开始比较日期 r=timecmp(tick.tici.datetime,tick.ticj.datetime,5); if(r=-1)/找到第一个比他大的日期 ,插入其前面 break; node temp=tick.tici; if(jj;n-) tick.ticn=tick.ticn-1; ti

    18、ck.ticj=temp; return j; else if(j=tick.len) for(n=i;nj-1;n+) tick.ticn=tick.ticn+1; else for(n=i;nj;n+) tick.ticn=tick.ticn+1; tick.ticn=temp; return n; 四.2 主要程序代码,加上详细的注释下面简单介绍一下程序运行结果主函数开始运行界面:do coutendlendlendlendl; couttttt欢迎使用电影售票系统; coutendlendlendl; coutntttt1.管理系统; coutntttt2.售票系统; coutchoi

    19、ce; switch(choice) case 1:manager();break; case 2:customer();break; default :exit(0); while(1);Manager系统代码及运行截图密码输入界面代码do coutendlinpass; if(inpass=password) break; else coutendlatttt密码错误!; coutendla; if(a=N|a=n) exit(0); while(1);选择菜单代码 do coutntttt欢迎进入管理系统nn; coutntttt1.录入影片; coutntttt2.显示影片; cout

    20、ntttt3.查找影片; coutntttt4.修改影片; coutntttt5.删除影片; coutntttt6.退出; coutas; switch(as) case 1:tick.input();break; case 2:tick.show();break; case 3:tick.search();break; case 4:tick.change();break; case 5:tick.del();break; case 6: default :system(pause); return;/任意键继续 while(1);选择1管理系统输入密码选择1录入void ticket:in

    21、put()/录入信息 system(cls);/清屏 char ch;/接受日期中的字符或: coutnnntttt录入模块nnnendl; for(int i=tick.len;iN;i+) couttick.tici.yearchtick.tici.monthchtick.tici.day; couttick.tici.hour; cinch; cintick.tici.minute; tick.tici.datetime0=tick.tici.year; tick.tici.datetime1=tick.tici.month; tick.tici.datetime2=tick.tici.

    22、day; tick.tici.datetime3=tick.tici.hour; tick.tici.datetime4=tick.tici.minute; couttick.tici.num; couttick.tici.name; couttick.tici.price; couttick.tici.discount; tick.tici.rest=100; for(int m=0;m10;m+) for(int n=0;n10;n+) tick.tici.seatmn=0; tick.len+;/个数加1 if(i!=0)/按时间,插入排序 int j=sort(i); coutendl; coutch; if(ch=y | ch=Y | ch=n | ch=N)


    注意事项

    本文(C++课程设计报告电影院售票系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开