1、 面向对象程序课程设计 (2015/2011学年第一学期第17周) 指导教师: 庄巧莉、杨东鹤 班级:14电信实验班 学号:2014339960002 姓名:李君艳 面向对象程序课程设计任务书 【题目】电影院自动售票机 【目的】 通过设计一个小型电影院的自动售票系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。 【要求】 1、每个学生必须独立完成; 2、课程设计时间为1周; 3、设计语言采用C++; 4、学生有事离校必须请假。课程设
2、计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,未按规定上交实验报告的学生,其成绩按不及格处理。 【内容简介】 有一个小型的电影院,这个电影院有2个放映厅,厅里有10排座位,每排10个座位。这个电影院从早上8:00开始营业,营业至次日凌晨2点结束。这个电影院现在打算使用自动售票机,来让观众自己购票。现在请你为这个自动售票机编写一个程序,使得这个自动售票机能够正确工作。 【考核标准】 1、能够正确出售某一场次,某一座位的票,成绩≥60; 2、能够实现对每天放映的电影信息的管理(增加、删除、修改),成绩≥70; 3、能够根据当前购买时间自动排除已经放映过的场次,成绩
3、≥80; 4、能够统计每一天每一场次的出票情况,界面设计友好,成绩≥90。 请仔细考虑这个题目中出现的各个实体,考虑如何保存数据,使得即使在程序窗口关闭后,再次运行程序时之前的售票信息仍然有效。 【工作内容及工作计划】 时间 地点 工作内容 指导教师 12月 28日 上午 10-306 任务布置,需求分析 庄巧莉、杨东鹤 下午 10-306 系统功能划分 庄巧莉、杨东鹤 12月 29日 上午 10-306 类的整体设计 庄巧莉、杨东鹤 下午 10-306 类的详细设计 庄巧莉、杨东鹤 12月 30日 上午 10-306 编写代
4、码 庄巧莉、杨东鹤 下午 10-306 编写代码 庄巧莉、杨东鹤 12月 31日 上午 10-306 程序测试 庄巧莉、杨东鹤 下午 10-306 程序测试 庄巧莉、杨东鹤 1月 1日 上午 10-306 上机检查、答辩 庄巧莉、杨东鹤 下午 10-306 上机检查、答辩 庄巧莉、杨东鹤 面向对象程序课程设计 目 录 一、 题目 二、 需求分析 三、 系统结构图 四、 类的设计 五、 程序代码与说明 六、 运行结果与分析 七、 心得与体会 一. 题目 有
5、一个小型的电影院,这个电影院有2个放映厅,厅里有10排座位,每排10个座位。这个电影院从早上8:00开始营业,营业至次日凌晨2点结束。这个电影院现在打算使用自动售票机,来让观众自己购票。现在请你为这个自动售票机编写一个程序,使得这个自动售票机能够正确工作 二. 需求分析 有一个电影院,有两个电影厅,每两小时播放一部电影。每个电影有不同的票价,观众可以根据自己的喜好选择观看哪部电影,也可选择购买普通票或情侣票,完成交易。并且可以查看当前出票情况等 三. 系统结构图 Movie类 重置函数 统计函数 信息函数 输出电影
6、
函数读取文件
Sell函数
菜单
票房统计
系统重置
购票
四. 类的设计
建立一个Moive类,包括电影序号、名称、播放时间、普通票价、情侣票价、余票信息、座位表等。然后设计成员函数,把9个对象的信息从文件里传进来,用一个sell函数实现自动售票功能。
五.程序代码与说明
#include
7、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++)
8、 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< 9、eat[i][j];
cout< 10、<",情侣座(第10排)票价"< 11、
count--;total++; //余票减1,总票加1
cout<<"\t\t\t您选择了第"<>i>>j;
if(seat[i-1][j-1]==0){
seat[i-1][j-1]=1;
if(i==10)
sum=sum+price[1];
12、 else sum=sum+price[0];
count--;total++;
cout<<"\t\t\t您选择了第"<>m; 13、
if(m>=sum)
cout<<"\t\t\t购买成功,找零"< 14、 else
cout<<"\t\t\t对不起,金额不足。"< 15、
price[1]=p2;
}
void pdate()//把对象的信息输出
{
cout<<"\t"< 16、vetime< 17、ount=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 18、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( 19、p,name,time,p1,p2);//调用函数,传参
fin>>p;
}
fin.close();//关闭文件
int choice=0;
do
{
cout< 20、 查 询\n\n\t\t3 系 统 重 置\n\n\t\t0 退 出"< 21、/打印票务信息
cout<<"\t\t -----请输入您要观看的电影序号------"< 22、
cout<






