《电影院自动售票机 课程设计》由会员分享,可在线阅读,更多相关《电影院自动售票机 课程设计(25页珍藏版)》请在金锄头文库上搜索。
1、 面向对象程序面向对象程序课程设计课程设计 (2013/2014 学年第学年第一一学期学期第第 17 周周) 指导教师:指导教师: 庄巧莉庄巧莉、肖荣、肖荣 班级:班级:12 计科(计科(2)班)班 学号:学号:2012329620050 姓名:姓名:谢文倩谢文倩 面向对象程序课程设计任务书面向对象程序课程设计任务书 【题目】【题目】电影院自动售票机 【目的】【目的】 通过设计一个小型电影院的自动售票系统,训练综合运用所学知识处理实际问题的能力, 强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。 【要求】【要求】 1、每个学生必须独立完成; 2、课程设计时间为 1 周;
2、 3、设计语言采用 C+; 4、学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一 以上者,未按规定上交实验报告的学生,其成绩按不及格处理。 【内容简介内容简介】 有一个小型的电影院,这个电影院只有一个放映厅,厅里有 10 排座位,每排 10 个座位。 这个电影院从早上 8:00 开始营业,每 2 小时放映一部电影,营业至次日凌晨 2 点结束。这 个电影院现在打算使用自动售票机,来让观众自己购票。现在请你为这个自动售票机编写 一个程序,使得这个自动售票机能够正确工作。 【考核标准考核标准】 1、能够正确出售某一场次,某一座位的票,成绩60; 2、能够统计每一场次的出票情
3、况,成绩70; 3、能够统计每一天每一场次的出票情况,成绩80; 4、能够考虑不同场次的票价,不同座位的票价,界面设计友好,成绩90。 请仔细考虑这个题目中出现的各个实体,考虑如何保存数据考虑如何保存数据。 【工作内容及工作内容及工作计划工作计划】 时间时间 地点地点 工作内容工作内容 指导教师指导教师 12 月 23 日 上午 10-306 任务布置,需求分析 庄巧莉、肖荣 下午 10-306 系统功能划分 庄巧莉、肖荣 12 月 24 日 上午 10-306 类的整体设计 庄巧莉、肖荣 下午 10-306 类的详细设计 庄巧莉、肖荣 12 月 25 日 上午 10-306 编写代码 庄巧莉
4、、肖荣 下午 10-306 编写代码 庄巧莉、肖荣 12 月 26 日 上午 10-306 程序测试 庄巧莉、肖荣 下午 10-306 程序测试 庄巧莉、肖荣 12 月 27 日 上午 10-306 上机检查、答辩 庄巧莉、肖荣 下午 10-306 上机检查、答辩 庄巧莉、肖荣 面向对象程序面向对象程序课程设计课程设计 目目 录录 一、 题目 二、 需求分析 三、 系统结构图 四、 类的设计 五、 程序代码与说明 六、 运行结果与分析 七、 心得与体会 一、 题目:电影院自动售票机 二、 需求分析 电影院自动售票机分为两种不同的系统,有管理员系统,进入管理员系统需要密码才能进入,密码为“123
5、456” ,所以只有拥有管理员密码才能进入管理员板块进行管理。管理员录入的信息将保存在二进制文件中。其中每一个文件对应相应的文件,比如:场次 1对应“1.dat”文件,而用户模块,实现购票和退票功能。 管理员模块拥有最高权限,可对电影系统实现任何修改。包括录入(input) 、显示(show) 、 查找 (find) 、 修改 (change)、 删除 (delet) 功能; 而售票系统则只进行售票 (buytickets)和退票(backtickets)功能。 三、 系统结构图 欢迎界面欢迎界面 管理员系管理员系 统统 购 票购 票 系系 统统 电电 影影 录录 入入 显显 示示 影影 片片
6、 修修 改改 影影 片片 删删 除除 影影 片片 查查 找找 影影 片片 购购 票票 退退 票票 首先运行程序会跳到欢迎界面,用以让用户选择管理员系统还是用户系统。 当选择进入管理系统的时候,需要输入管理员密码(123456) ,否则不能进入,这样才能保证数据的安全性,相应的电影院信息只有管理员才能将其改变。 电影录入功能:输入电影的相关信息,场次,时间,票价等,并保存到文件当中; 显示影片功能:将显示所有的录入的电影信息; 修改影片功能:通过选择某一场次来进行更改,可以更改影片的任何信息; 删除影片功能:可任意选择某一场次,删除该场次的所有信息; 查找影片功能:输入某一影片的名字,用来查找相
7、同名字的电影场次; 退出:用来退出当前管理员系统,重新到欢迎界面。 当退出到欢迎界面的时候,选择进入购票系统。 购票:用户可以选择买哪一场的电影票,加入了时间比较系统,用于判断影片是否已经播放; 还可以自己选择不同的座位, 但是不同的座位价格是不一样的, 靠中间的会贵20%,边缘的将会便宜 20%,相应场次的的余票会减一; 退票:用户自己退掉自己买过的票,但是如果没有购买的票将不会支持退票,退票后相应的余票会加一; 退出:退出当前的购票系统,重新到欢迎界面。 四、 类的设计 首先设计一个 tickets 类用来保存每场电影的信息作为基类: class tickets protected: ch
8、ar moviename20; double price; int num; bool map1010; int rest; int month; int day; int hour; char minutes3; ; 包含了影片所有的信息,以便被 manager 类和 customer 类继承; 管理员 manager 类: class manager:public tickets public: manager()rest=100;strcpy(minutes,“);strcat(minutes,“:00“); void input(); void show(); void change(
9、); void find(); void delet(); friend ostream #define size sizeof(tickets) /宏定义,令 size 保存 tickets 类的内存大小 class tickets /定义 tickets 类,用来保存电影信息 protected: char moviename20; /电影名称 double price; /价格 int num; bool map1010; /电影的座位情况 int rest; /余票 int month; int day; int hour; char minutes3; /因为时间都是整数,所以下面的
10、构造函数默认把它初始化为“:00”即可 ; class manager:public tickets public: manager()rest=100;strcpy(minutes,“);strcat(minutes,“:00“); /构造函数 void input(); /电影录入 void show(); /电影显示 void change(); /更改 void find(); /查找 void delet(); /删除 friend ostream switch(choose) case 1:boss.input();break; /电影录入 case 2:boss.show();b
11、reak; /影片显示 case 3:boss.change();break; case 4:boss.delet();break; case 5:boss.find();break; /查找影片 case 6:break; /退出 default:coutchoose; switch(choose) case 1:cus.buytickets();break; /买票 case 2:cus.backtickets();break; /退票 case 3:break; /退出 default:coutT.num; char f10=“; /将不同的电影场次和相应的文件相对应 f0=T.num+
12、0; strcat(f,“.dat“); /将 f保存为相应的文件 fstream out(f,ios:out|ios:binary); /电影信息输入 coutT.monthT.day; T.hour=6+T.num*2; coutT.moviename; coutT.price; out.write(char*) coutb; if(b!=y)break; out.close(); coutn; char f10=“; f0=n+0; strcat(f,“.dat“); fstream out(f,ios:out|ios:binary); T.num=n; /输入新的电影场次信息 cout
13、T.monthT.day; T.hour=6+T.num*2; coutT.moviename; coutT.price; out.write(char*) out.close(); coutn; char f10=“; f0=n+0; strcat(f,“.dat“); remove(f); /直接删除相应的保存电影的文件 couttempname; coutm; char e10=“; int a,b; /赋以相应的权值,便于比较系统时间和播放时间的大小 e0=m+0; strcat(e,“.dat“); fstream in(e,ios:in|ios:binary); in.read(c
14、har*) in.close(); /将时间比较转换成数值比较 a=(timeinfo-tm_mon+1)*10000+timeinfo-tm_mday*100+timeinfo-tm_hour; /给系 统时间赋权值 b=P.month*10000+P.day*100+P.hour; if(aij; while(P.mapi-1j-1=0) /判断座位是否已经被购买 coutij; if(5m; char f10=“; f0=m+0; strcat(f,“.dat“); fstream in(f,ios:in|ios:binary); in.read(char*) in.close(); c
15、outij; while(P.mapi-1j-1!=0) /判断退票的座位是否被购票 coutij; couttm_hourtm_minchoose; switch(choose) case 1:char password10=“; /进入管理员系统 coutpassword; if(!strcmp(password,“123456“) me.manageraction();break; else coutendl“密码错误! ! !“endl; break; case 2: /用户购票系统 me.customeraction();break; default:cout“输入错误,重新输入!“;break; system(“pause“); 六、 运行结果与分析 1.欢迎界面 2.进入管理员系统 输入密码方能进入管理员系统。 3管理员界面 4.电影录入 5.显示电影 6.修改影片 4.删除影片 5.查找影片 输入电影的名字,查找需要