精品DVD仿真程序设计面向对象程序毕业论文说明书.docx

上传人:b****2 文档编号:2582694 上传时间:2023-05-04 格式:DOCX 页数:34 大小:476.57KB
下载 相关 举报
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第1页
第1页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第2页
第2页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第3页
第3页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第4页
第4页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第5页
第5页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第6页
第6页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第7页
第7页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第8页
第8页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第9页
第9页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第10页
第10页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第11页
第11页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第12页
第12页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第13页
第13页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第14页
第14页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第15页
第15页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第16页
第16页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第17页
第17页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第18页
第18页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第19页
第19页 / 共34页
精品DVD仿真程序设计面向对象程序毕业论文说明书.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

精品DVD仿真程序设计面向对象程序毕业论文说明书.docx

《精品DVD仿真程序设计面向对象程序毕业论文说明书.docx》由会员分享,可在线阅读,更多相关《精品DVD仿真程序设计面向对象程序毕业论文说明书.docx(34页珍藏版)》请在冰点文库上搜索。

精品DVD仿真程序设计面向对象程序毕业论文说明书.docx

精品DVD仿真程序设计面向对象程序毕业论文说明书

 

河南科技大学

课程设计说明书

课程名称面向对象程序课程设计

题目DVD仿真程序设计

 

院系电子信息工程学院

课程设计任务书

课程设计题目

DVD仿真程序设计

姓名

学号

专业班级

计科101

组别

组长

同组成员

指导

教师

课程设计目的

通过本课程设计,使学生巩固面向对象程序设计的基本概念、原理和技术,学会使用C++语言进行简单程序的开发,将理论与实际相结合,完成一个小型程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。

课程设计环境

硬件:

装有Windows操作系统的计算机

软件:

VisualC++6.0

课程设计任务和要求

任务要求:

1.根据实际DVD的运行状况进行需求分析;

2.抽象DVD运行算法;

3.设计DVD运行程序及人机交互界面;

4.模块功能满足要求、界面友好、具有一定的健壮性;

5.撰写出符合要求的课程设计报告。

参考

文献

1.郑秋生、吴庆涛,《CC++程序设计》,北京:

电子工业出版社

2.谭浩强 《C++程序设计》,北京:

清华大学出版社

时间进度安排

序号

起止日期

工作内容

1

3.4-3.5

学生熟悉题目背景,查阅资料

2

3.6-3.13

学生进行功能模块设计、编码、测试

3

3.14-3.15

程序验收

4

3.16

根据设计内容形成课程设计文档,撰写课程设计报告

5

3.17

上交课程设计报告

任课教师:

刘中华、张晓玲、李艳霞时间:

2013.3.3

课程设计报告文档

题目:

DVD仿真程序设计

一.引言

1.编写目的:

实现模拟DVD的功能需要包含①数据显示区域(相当于显示类的产品),②DVD模拟区域,实现模拟DVD的快进,快退,播放,暂停,菜单,上一首,下一首,音量的加,音量减的功能。

此外模拟了一个接口按钮,用于DVD向显示设备的数据输入。

还模拟了一个DVD的电源开关。

至此,实现此次DVD仿真模拟的设计目的。

2.定义:

MFC(MicrosoftFoundationClasses):

是一个微软公司提供的类库(classlibraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类

3.参考资料:

[1]郑秋生.cc++程序设计教程—面向对象分册.北京:

电子工业出版社,2012

[2]邱勇、肖春宝、白秀玲.《可视化程序设计》.北京:

清华大学出版社

[3]黄维通.visualc++面向对象与可视化程序设计.北京:

清华大学出版社

二.任务的描述

1.目标:

通过本课程设计,使学生巩固面向对象程序设计的基本概念、原理和技术,学会使用C++语言进行简单程序的开发,将理论与实际相结合,完成一个小型程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。

2.功能描述:

DVD的仿真模拟分为①数据显示区域(相当于显示类的产品),②DVD模拟区域,模拟DVD的快进,快退,播放,暂停,菜单,上一首,下一首,音量的加,音量减的功能。

此外模拟了一个接口按钮,用于DVD向显示设备的数据输入。

模拟了一个DVD的电源开关。

③光碟数据的存储区域模拟。

点击按钮可以打开数据中心仓库,

区域1:

可以点击此按钮打开光碟数据存储仓库,打开后的界面如下图所示。

区域2:

点击鼠标的右键可以打开右键菜单:

{1.添加文件到列表2.删除列表中文件}

区域3:

实现DVD的模拟功能:

点击快进按钮实现快进功能;

点击快退按钮实现快退功能;

点击播放按钮实现播放功能;

点击暂停按钮实现暂停功能;

点击+按钮实现音量的加功能;

点击--按钮实现音量减的功能;

点击菜单按钮可以实现DVD光碟返回到菜单的功能;

模拟了一个接口按钮,相当于DVD像显示接口插入的一条数据线,用于DVD向显示设备的数据输入;

电源开关实现DVD机关闭的功能。

区域1:

可以点击此按钮打开光碟数据然后直接打开播放器小窗口播放,播放器的小窗口如下图。

鼠标右键点击此按钮的可以弹出右键菜单,右键菜单响应的事件功能有,{播放和查看文件的大小属性}。

区域2:

点击鼠标的右键可以打开右键菜单:

{1.添加文件到列表2.删除列表中文件}

区域3:

显示当前播放文件的路径

区域4:

点击可以打开文件选择对话框,实现让用户选择非DVD格式的文件。

这是在DVD基础上对于播放的扩展。

功能的增强。

区域5:

点击此按钮可以查看播放器支持的文件格式。

区域1:

可以点击对应的菜单实现对应的音影的播放功能。

区域2:

点击全屏按钮实现全屏播放

上图播放DVD时候的小窗口播放界面。

上面为DVD文件的播放菜单,DVD文件是用转换工具转换的DVD整个光碟,由于转换的速度较慢,且转换后文件较大,一个大约6G,一个大约2G,转换时间周期较长,用晚上转换的。

转换后的DVD文件没法加入电子档。

总计8G。

在此说明一下。

3.性能描述

(1)数据精确度:

播放的时间在毫秒级

(2)时间特性:

响应时间,更新处理时间,运行时间等都较短。

4.运行环境:

硬件:

Windows7操作系统平台

软件:

VisualC++6.0

5.条件与限制:

条件是由于播放DVD的文件解码较苛刻,系统必须安装有DVD格式的解码器。

三.任务设计

1.类的划分:

(1)类1:

classCAaDlg:

publicCDialog

{

public:

CAaDlg(CWnd*pParent=NULL);standardconstructor

enum{IDD=IDD_AA_DIALOG};

CListBoxm_list;

CButtonm_Open;

CButtonm_Play;

CButtonm_Up;

CButtonm_Stop;

CButtonm_Down1;

intt;

boolt1;

CButtonm_Slow;

CButtonm_VolSmall;

CButtonm_VolBig;

CButtonm_Menu;

CButtonm_JieKou;

CButtonm_Forhead;

CButtonm_Close;

CWMPPlayer4m_WMPlayer;

CWMPControlsm_Control;

CWMPDVDm_wmpDVD;

CWMPSettingsm_set;

CWMPPlaylistm_playlist;

CWMPMediam_media;

CWMPPlayer4m_WMp;

CStringstr1;

Dlg1dlg1;

intk;

public:

virtualBOOLPreTranslateMessage(MSG*pMsg);

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);DDXDDVsupport

virtualBOOLOnCommand(WPARAMwParam,LPARAMlParam);

protected:

HICONm_;

virtualBOOLOnInitDialog();

afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

afx_msgvoidOnBUTTOClose();

afx_msgvoidOnBUTTONForhead();

afx_msgvoidOnBUTTOSlow();

afx_msgvoidOnBUTTONVolBig();

afx_msgvoidOnBUTTONVolSmall();

afx_msgvoidOnBUTTONJIeKou();

afx_msgvoidOnBUTTONDown();

afx_msgvoidOnBUTTOPlay();

afx_msgvoidOnBUTTONStop();

afx_msgvoidOnButtonup();

afx_msgvoidOnBUTTONMenu();

afx_msgvoidOnOpen();

afx_msgvoidOnDblclkList1();

DECLARE_MESSAGE_MAP()

};

CAaDlg类实现了模拟DVD的主界面的功能实现。

成员函数OnBUTTOClose()实现DVD电源的关闭功能,成员函数OnBUTTOPlay()实现播放功能;成员函数OnBUTTONStop()实现音视频的暂停功能;成员函数OnBUTTONForhead()实现快进功能;成员函数OnBUTTOSlow()实现快退功能;成员函数OnBUTTONVolBig()实现音量增加功能;成员函数OnBUTTONVolSmall()实现音量减小功能等;

(2)类2:

classDlg1:

publicCDialog

{

public:

Dlg1(CWnd*pParent=NULL);

enum{IDD=IDD_DIALOG1};

CListBoxm_list;

CButtonm_btn5;

CButtonm_btn4;

CButtonm_btn3;

CButtonm_btn2;

CButtonm_btn1;

SmallPlayersmallplayer;

intp;

CStringm_edit;

public:

virtualBOOLPreTranslateMessage(MSG*pMsg);

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);DDXDDVsupport

virtualBOOLOnCommand(WPARAMwParam,LPARAMlParam);

protected:

afx_msgvoidOnButton1();

virtualBOOLOnInitDialog();

afx_msgvoidOnButton3();

afx_msgvoidOnButton2();

afx_msgvoidOnButton5();

afx_msgvoidOnButton4();

afx_msgvoidOnSelchangeList1();

afx_msgvoidOnDblclkList1();

DECLARE_MESSAGE_MAP()

};

类Dlg1实现把DVD光碟存放区域的显示,光碟在此区域存放。

(3)类3:

classSmallPlayer:

publicCDialog

{

public:

SmallPlayer(CWnd*pParent=NULL);standardconstructor

enum{IDD=IDD_DIALOG2};

CButtonm_btn1;

CButtonm_btn2;

CWMPPlayer4m_ocx1;

CWMPControlsm_control;

CWMPDVDm_dvd;

CWMPPlaylistm_playlist;

CWMPSettingsm_set;

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);DDXDDVsupport

protected:

afx_msgvoidOnButton1();

afx_msgvoidOnButton2();

virtualBOOLOnInitDialog();

DECLARE_MESSAGE_MAP()

};

类SmallPlayer实现把DVD光碟的小窗口播放。

2.类的接口设计:

(1)类1:

public:

virtualBOOLPreTranslateMessage(MSG*pMsg);

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);DDXDDVsupport

virtualBOOLOnCommand(WPARAMwParam,LPARAMlParam);

(2)类2:

public:

virtualBOOLPreTranslateMessage(MSG*pMsg);

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);DDXDDVsupport

virtualBOOLOnCommand(WPARAMwParam,LPARAMlParam);

protected:

afx_msgvoidOnButton1();

virtualBOOLOnInitDialog();

afx_msgvoidOnButton3();

afx_msgvoidOnButton2();

afx_msgvoidOnButton5();

afx_msgvoidOnButton4();

afx_msgvoidOnSelchangeList1();

afx_msgvoidOnDblclkList1();

DECLARE_MESSAGE_MAP()

(3)类3:

protected:

afx_msgvoidOnButton1();

afx_msgvoidOnButton2();

virtualBOOLOnInitDialog();

DECLARE_MESSAGE_MAP()

说明protected是windows机制的消息函数。

Windows消息机制Windows系统是一个消息驱动的OS,一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。

当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。

例如当菜单转中之后会有WM_COMMAND消息发送,WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。

当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。

一个消息必须由一个窗口接收。

在窗口的过程(WNDPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理。

例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。

也相当于与用户交互的接口。

3.类之间的关系:

类CAboutDlg、类SmallPlayer、类Dlg1、类CAaDlg,都是继承自CDialog类。

类CAaDlg和类Dlg1是包含关系,类Dlg1和类SmallPlayer也是包含关系

 

四.编写代码

1.问题1

(1)问题描述:

点击按钮新的窗体无法弹出。

(2)解决办法:

新的窗体类没有加到父窗体的头文件中。

且关于模态对话框与非模态对话框的显示机制不同。

模态可以使用Domal()函数实现。

非模态对话框的建立需要dlg1.Create(IDD_DIALOG1,this);即类创建显示的窗体UI;

dlg1.ShowWindow(SW_SHOW);然后显示窗体。

这样才完成一个非模态对话框的建立。

问题得以解决。

2.问题2

(1)问题描述:

播放文件时,列表中选中的文件播放的是列表中其他的文件

(2)解决办法:

使用m_list.SetCurSel()设置列表索引号,这样索引顺序正确,问题得到解决。

五.运行结果与分析

1.程序运行的过程:

程序先执行主对话框,当用户点击代开DVD数据按钮程序响应windows消息映射,通过windows机制在内存中建立新的类dlg1,此类是主窗体中包含的成员函数。

2.类的构造顺序:

先构造类CAaDlg,然后构造类Dlg1.

3.错误描述及其解决办法

(1)问题1:

问题描述:

点击音量增加按钮音量无法增加,代码已经添加。

解决办法:

没有把wmpcontrol类的头文件包含,加入头文件即可。

(2)问题2

问题描述:

点击list区域鼠标点击的位置和右键菜单出现的位置有距离差;

解决办法:

在ClientToScreen(&pt)这一句不需要把坐标转换成客户区域坐标。

………………………………………

6、感想认识

这次课程设计对于面向对象的思想有深刻的体会。

这次课程设计无论是我需找DVD格式文件的创建刻录,等等功能,自己没有接触过刚开始一头雾水自己的想法不好实现。

通过网络的搜索需找,得到解决的途径。

,这样不仅培养了遇到问题的思考方法,而且更培养了我编程中分析问题,解决问题的方法途径等等。

更使得我对于对面向对象的封装,继承以及多态性等特点以及优点理解,也让自己对微软MFC编程有了一定的认识,通过封装类我们把想要现的功能封装起来,通过继承我们可以对已有类进行扩充,通过多态性我可以让不同对象面对同一消息有各自的响应。

这次设计使我进步很大,收获颇丰。

七.程序代码

文件Aadlg.

public:

CAaDlg(CWnd*pParent=NULL);standardconstructor

DialogData

{{AFX_DATA(CAaDlg)

enum{IDD=IDD_AA_DIALOG};

CListBoxm_list;

CButtonm_Open;

CButtonm_Play;

CButtonm_Up;

CButtonm_Stop;

CButtonm_Down1;

intt;

boolt1;

CButtonm_Slow;

CButtonm_VolSmall;

CButtonm_VolBig;

CButtonm_Menu;

CButtonm_JieKou;

CButtonm_Forhead;

CButtonm_Close;

CWMPPlayer4m_WMPlayer;

CWMPControlsm_Control;

CWMPDVDm_wmpDVD;

CWMPSettingsm_set;

CWMPPlaylistm_playlist;

CWMPMediam_media;

CWMPPlayer4m_WMp;

CStringstr1;

Dlg1dlg1;

intk;

}}AFX_DATA

ClassWizardgeneratedvirtualfunctionoverrides

{{AFX_VIRTUAL(CAaDlg)

public:

virtualBOOLPreTranslateMessage(MSG*pMsg);

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);DDXDDVsupport

virtualBOOLOnCommand(WPARAMwParam,LPARAMlParam);

}}AFX_VIRTUAL

Implementation

protected:

HICONm_;

Generatedmessagemapfunctions

{{AFX_MSG(CAaDlg)

virtualBOOLOnInitDialog();

afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

afx_msgvoidOnBUTTOClose();

afx_msgvoidOnBUTTONForhead();

afx_msgvoidOnBUTTOSlow();

afx_msgvoidOnBUTTONVolBig();

afx_msgvoidOnBUTTONVolSmall();

afx_msgvoidOnBUTTONJIeKou();

afx_msgvoidOnBUTTONDown();

afx_msgvoidOnBUTTOPlay();

afx_msgvoidOnBUTTONStop();

afx_msgvoidOnButtonup();

afx_msgvoidOnBUTTONMenu();

afx_msgvoidOnOpen();

afx_msgvoidOnDblclkList1();

}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

文件aadlg.cpp

#include"stdafx.overrides

{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);DDXDDVsupport

}}AFX_VIRTUAL

Implementation

protected:

{{AFX_MSG(CAboutDlg)

}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

{{AFX_DATA_INIT(CAboutDlg)

}}AFX_DATA_INIT

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

{{AFX_DATA_MAP(CAboutDlg)

}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

{{AFX_MSG_MAP(CAboutDlg)

NomessagedoesnotrequireasubsequentDestroyIconinWin32

t=1;

t1=true;

m_=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCAaDlg:

:

DoDataExchange(CDataExchange*pDX)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

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

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