收藏 分销(赏)

面向对象课程设计要求A.doc

上传人:仙人****88 文档编号:9410586 上传时间:2025-03-25 格式:DOC 页数:12 大小:103.50KB
下载 相关 举报
面向对象课程设计要求A.doc_第1页
第1页 / 共12页
面向对象课程设计要求A.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述
面向对象程序课程设计 (2015/2011学年第一学期第17周) 指导教师: 庄巧莉、杨东鹤 班级:14电信实验班 学号:2014339960002 姓名:李君艳 面向对象程序课程设计任务书 【题目】电影院自动售票机 【目的】 通过设计一个小型电影院的自动售票系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。 【要求】 1、每个学生必须独立完成; 2、课程设计时间为1周; 3、设计语言采用C++; 4、学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,未按规定上交实验报告的学生,其成绩按不及格处理。 【内容简介】 有一个小型的电影院,这个电影院有2个放映厅,厅里有10排座位,每排10个座位。这个电影院从早上8:00开始营业,营业至次日凌晨2点结束。这个电影院现在打算使用自动售票机,来让观众自己购票。现在请你为这个自动售票机编写一个程序,使得这个自动售票机能够正确工作。 【考核标准】 1、能够正确出售某一场次,某一座位的票,成绩≥60; 2、能够实现对每天放映的电影信息的管理(增加、删除、修改),成绩≥70; 3、能够根据当前购买时间自动排除已经放映过的场次,成绩≥80; 4、能够统计每一天每一场次的出票情况,界面设计友好,成绩≥90。 请仔细考虑这个题目中出现的各个实体,考虑如何保存数据,使得即使在程序窗口关闭后,再次运行程序时之前的售票信息仍然有效。 【工作内容及工作计划】 时间 地点 工作内容 指导教师 12月 28日 上午 10-306 任务布置,需求分析 庄巧莉、杨东鹤 下午 10-306 系统功能划分 庄巧莉、杨东鹤 12月 29日 上午 10-306 类的整体设计 庄巧莉、杨东鹤 下午 10-306 类的详细设计 庄巧莉、杨东鹤 12月 30日 上午 10-306 编写代码 庄巧莉、杨东鹤 下午 10-306 编写代码 庄巧莉、杨东鹤 12月 31日 上午 10-306 程序测试 庄巧莉、杨东鹤 下午 10-306 程序测试 庄巧莉、杨东鹤 1月 1日 上午 10-306 上机检查、答辩 庄巧莉、杨东鹤 下午 10-306 上机检查、答辩 庄巧莉、杨东鹤 面向对象程序课程设计 目 录 一、 题目 二、 需求分析 三、 系统结构图 四、 类的设计 五、 程序代码与说明 六、 运行结果与分析 七、 心得与体会 一. 题目 有一个小型的电影院,这个电影院有2个放映厅,厅里有10排座位,每排10个座位。这个电影院从早上8:00开始营业,营业至次日凌晨2点结束。这个电影院现在打算使用自动售票机,来让观众自己购票。现在请你为这个自动售票机编写一个程序,使得这个自动售票机能够正确工作 二. 需求分析 有一个电影院,有两个电影厅,每两小时播放一部电影。每个电影有不同的票价,观众可以根据自己的喜好选择观看哪部电影,也可选择购买普通票或情侣票,完成交易。并且可以查看当前出票情况等 三. 系统结构图 Movie类 重置函数 统计函数 信息函数 输出电影 函数读取文件 Sell函数 菜单 票房统计 系统重置 购票 四. 类的设计 建立一个Moive类,包括电影序号、名称、播放时间、普通票价、情侣票价、余票信息、座位表等。然后设计成员函数,把9个对象的信息从文件里传进来,用一个sell函数实现自动售票功能。 五.程序代码与说明 #include<iostream> #include<iomanip> #include<string> #include<fstream> #include<stdio.h> #include<time.h> using namespace std; class Moive{ private: int seat[10][10]; int n; string moivename; string moivetime; int count;//每场电影的余票统计 static int total;//总售票的统计,每个对象共用 int price[2];//票价数组 public: Moive(){ n=0; for(int i=0;i<10;i++) for(int j=0;j<10;j++) seat[i][j]=0; count=100; price[0]=0; // price[1]=0; // } void printseat(){//输出座位表信息 for(int i=0;i<10;i++){ for(int j=0;j<10;j++) cout<<setw(3)<<seat[i][j]; cout<<endl; } } void sell(){ if(count==0)//判断是否有余票 cout<<"\t\t\t-------对不起,该电影票已售完------"<<endl; else{ cout<<"\t\t-------请输入您要购买的票数----"<<endl; int n;int sum=0; cin>>n; cout<<"请选择您要的座位“如 X Y 表示第X排,第Y列”,0为未售出,1为已售出。普通座(1-9排)票价"<<price[0]<<",情侣座(第10排)票价"<<price[1]<<endl; printseat();//调用函数,输出座位表 for(int t=1;t<=n;t++){ cout<<"请选择座位:"<<endl; int i,j; cin>>i>>j; if(seat[i-1][j-1]==0){//顾客购票后,更改座位表信息 seat[i-1][j-1]=1; if(i==10)//判断是否选择情侣座 sum=sum+price[1]; else sum=sum+price[0]; count--;total++; //余票减1,总票加1 cout<<"\t\t\t您选择了第"<<i<<"排,第"<<j<<"座。"<<endl;//输出选择的座位信息 } else{ cout<<"\t\t\t该座位已有人,请重新选择座位"<<endl; cin>>i>>j; if(seat[i-1][j-1]==0){ seat[i-1][j-1]=1; if(i==10) sum=sum+price[1]; else sum=sum+price[0]; count--;total++; cout<<"\t\t\t您选择了第"<<i<<"排,第"<<j<<"座。"<<endl; } } } cout<<"\t\t\t总价为"<<sum<<"元,请确认。"<<endl;//付款 int m; cout<<"\t\t\t请投入所要支付的金额。"<<endl; cin>>m; if(m>=sum) cout<<"\t\t\t购买成功,找零"<<m-sum<<"元。"<<endl; else cout<<"\t\t\t对不起,金额不足。"<<endl; while(m<sum){ cout<<"\t\t\t请投入所要支付的金额。"<<endl; cin>>m; if(m>=sum) cout<<"\t\t\t购买成功,找零"<<m-sum<<"元。谢谢使用!"<<endl; else cout<<"\t\t\t对不起,金额不足。"<<endl; } } } void getdate(int p,string name,string time ,int p1,int p2) //传参,把文件中读入的数据存到对象 { n=p; moivename=name; moivetime=time; price[0]=p1; price[1]=p2; } void pdate()//把对象的信息输出 { cout<<"\t"<<setw(2)<<n<<setw(15)<<moivename<<setw(14)<<moivetime<<setw(5)<<price[0]<<setw(9)<<price[1]<<setw(7)<<count<<endl; } void pdate2()//把对象中的信息输出 { cout<<"\t\t"<<setw(2)<<n<<setw(15)<<moivename<<setw(14)<<moivetime<<setw(7)<<count<<endl; } void static ptotal()//用静态成员函数统计总售票 { cout<<"\t\t 已售票:"<<total<<"。谢谢使用!"<<endl; } void setcount()//重置每日票数 { for(int i=0;i<10;i++) for(int j=0;j<10;j++) seat[i][j]=0; count=100; } }; int Moive::total;//静态成员变量的声明 size_t strftime(char *strDest,size_t maxsize,const char *format,const struct tm *timeptr);//获取当前时间 struct tm *localtime(const time_t *timer); int main() { system("cls");//页面变色 system("mode con cols=80 lines=30 &color B"); time_t t=time(0);//获取系统时间 char tmp[64]; Moive moives[10];//建立9个Moive对象 int p; string name; string time; int p1,p2; ifstream fin;//定义ifstream类(输入文件流类)对象fin fin.open("moive.txt");//使文件流与movie.txt文件建立关联 fin>>p; while(!fin.eof()) { fin>>name>>time>>p1>>p2; moives[p-1].getdate(p,name,time,p1,p2);//调用函数,传参 fin>>p; } fin.close();//关闭文件 int choice=0; do { cout<<endl<<endl<<"\t 欢迎使用光影流年影院自动售票系统\n\n";//页面设计 strftime(tmp,sizeof(tmp), "---%Y/%m/%d %X %A 本年第%j天%z---",localtime(&t)); puts(tmp); cout<<"\n\n\t\t1 购 票\n\n\t\t2 票 房 查 询\n\n\t\t3 系 统 重 置\n\n\t\t0 退 出"<<endl; int a; cin>>choice;//功能选择 if(choice==1)//购票 { cout<<setw(2)<<"\t 序 号"<<setw(13)<<"电 影 名 称"<<setw(10)<<"时间" <<setw(9)<<"普通票"<<setw(8)<<"情侣票"<<setw(6)<<"余票"<<endl; for(int t=0;t<9;t++) moives[t].pdate();//打印票务信息 cout<<"\t\t -----请输入您要观看的电影序号------"<<endl; cin>>a; moives[a-1].sell();//调用购票函数 } else if(choice==2)//票房统计 { cout<<endl<<setw(2)<<"\t\t 序号"<<setw(13)<<"电影名称"<<setw(10)<<"时间"<<setw(12)<<"余票"<<endl; for(int t=0;t<9;t++) moives[t].pdate2(); cout<<endl; Moive::ptotal();//今日总售票 } else if(choice==3) { for(int t=0;t<9;t++) moives[t].setcount(); cout<<"重置成功"<<endl; } else if(choice==0) return 0; else { cout<<"输入有误,请重新输入"<<endl; cin>>choice; } }while(choice!=0);//判断是否继续执行程序 return 0; } 五. 运行结果与分析 考核成绩评定表 平时成绩 答辩成绩 总成绩
展开阅读全文

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


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

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

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

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

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服