仿真程序设计面向对象程序课程设计说明精品.doc

上传人:豆**** 文档编号:17188258 上传时间:2022-05-22 格式:DOC 页数:28 大小:218.50KB
返回 下载 相关 举报
仿真程序设计面向对象程序课程设计说明精品.doc_第1页
第1页 / 共28页
仿真程序设计面向对象程序课程设计说明精品.doc_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《仿真程序设计面向对象程序课程设计说明精品.doc》由会员分享,可在线阅读,更多相关《仿真程序设计面向对象程序课程设计说明精品.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流仿真程序设计面向对象程序课程设计说明精品.精品文档.河南科技大学课 程 设 计 说 明 书课程名称 面向对象程序课程设计 题 目 DVD仿真程序设计 院 系 电子信息工程学院 课程设计任务书课程设计题目DVD仿真程序设计姓名学号专业班级计科101组别组长同组成员 指导教师课程设计目的通过本课程设计,使学生巩固面向对象程序设计的基本概念、原理和技术,学会使用C+语言进行简单程序的开发,将理论与实际相结合,完成一个小型程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。课程设计环境硬件:装有Windows操作系统的计算

2、机软件:Visual C+6.0课程设计任务和要求任务要求:1根据实际DVD的运行状况进行需求分析;2抽象DVD运行算法;3设计DVD运行程序及人机交互界面;4模块功能满足要求、界面友好、具有一定的健壮性;5撰写出符合要求的课程设计报告。参考文献1郑秋生、吴庆涛,C/C+程序设计,北京:电子工业出版社2谭浩强C+程序设计,北京:清华大学出版社时 间 进 度 安 排序号起止日期工 作 内 容13.4-3.5学生熟悉题目背景,查阅资料23.6-3.13学生进行功能模块设计、编码、测试33.14-3.15程序验收43.16根据设计内容形成课程设计文档,撰写课程设计报告53.17上交课程设计报告任课教

3、师:刘中华、张晓玲、李艳霞 时间:2013.3.3课程设计报告文档题目: DVD仿真程序设计 一引言1编写目的:实现模拟DVD的功能 需要包含数据显示区域(相当于显示类的产品),DVD模拟区域,实现模拟DVD的快进,快退,播放,暂停,菜单,上一首,下一首,音量的加,音量减的功能。此外模拟了一个接口按钮,用于DVD向显示设备的数据输入。还模拟了一个DVD的电源开关。至此,实现此次DVD仿真模拟的设计目的。 2. 定义: MFC (Microsoft Foundation Classes):是一个微软公司提供的类库(class libraries),以C+类的形式封装了Windows的API,并且

4、包含一个应用程序框架,以减少应用程序开 发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类3参考资料:1 郑秋生. c/c+程序设计教程面向对象分册. 北京:电子工业出版社,2012 2 邱勇、肖春宝、白秀玲. 可视化程序设计. 北京:清华大学出版社3 黄维通. visual c+面向对象与可视化程序设计. 北京:清华大学出版社二任务的描述1目标: 通过本课程设计,使学生巩固面向对象程序设计的基本概念、原理和技术,学会使用C+语言进行简单程序的开发,将理论与实际相结合,完成一个小型程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际

5、动手能力和创新能力。2. 功能描述: DVD的仿真模拟分为数据显示区域(相当于显示类的产品),DVD模拟区域,模拟DVD的快进,快退,播放,暂停,菜单,上一首,下一首,音量的加,音量减的功能。此外模拟了一个接口按钮,用于DVD向显示设备的数据输入。模拟了一个DVD的电源开关。光碟数据的存储区域模拟。点击按钮可以打开数据中心仓库,区域1:可以点击此按钮打开光碟数据存储仓库,打开后的界面如下图所示。区域2:点击鼠标的右键可以打开右键菜单:1.添加文件到列表 2.删除列表中文件区域3:实现DVD的模拟功能:点击快进按钮实现快进功能;点击快退按钮实现快退功能;点击播放按钮实现播放功能;点击暂停按钮实现

6、暂停功能;点击+按钮实现音量的加功能;点击-按钮实现音量减的功能;点击菜单按钮可以实现DVD光碟返回到菜单的功能;模拟了一个接口按钮,相当于DVD像显示接口插入的一条数据线,用于DVD向显示设备的数据输入;电源开关实现DVD机关闭的功能。区域1:可以点击此按钮打开光碟数据然后直接打开播放器小窗口播放,播放器的小窗口如下图。鼠标右键点击此按钮的可以弹出右键菜单,右键菜单响应的事件功能有,播放和查看文件的大小属性。区域2:点击鼠标的右键可以打开右键菜单:1.添加文件到列表 2.删除列表中文件区域3:显示当前播放文件的路径区域4:点击可以打开文件选择对话框,实现让用户选择非DVD格式的文件。这是在D

7、VD基础上对于播放的扩展。功能的增强。区域5:点击此按钮可以查看播放器支持的文件格式。区域1:可以点击对应的菜单实现对应的音影的播放功能。区域2:点击全屏按钮实现全屏播放上图播放DVD时候的小窗口播放界面。上面为DVD文件的播放菜单,DVD文件是用转换工具转换的DVD整个光碟,由于转换的速度较慢,且转换后文件较大,一个大约6G,一个大约2G,转换时间周期较长,用晚上转换的。转换后的DVD文件没法加入电子档。总计8G。在此说明一下。3性能描述 (1)数据精确度:播放的时间在毫秒级(2)时间特性:响应时间,更新处理时间,运行时间等都较短。4 运行环境:硬件:Windows7操作系统平台 软件:Vi

8、sual C+6.05条件与限制:条件是由于播放DVD的文件解码较苛刻,系统必须安装有DVD格式的解码器。三任务设计1类的划分: (1)类1:class CAaDlg : public CDialogpublic:CAaDlg(CWnd* pParent = NULL);/ standard constructorenum IDD = IDD_AA_DIALOG ;CListBoxm_list;CButtonm_Open;CButtonm_Play;CButtonm_Up;CButtonm_Stop;CButtonm_Down1;int t;bool t1;CButtonm_Slow;CBut

9、tonm_VolSmall;CButtonm_VolBig;CButtonm_Menu;CButtonm_JieKou;CButtonm_Forhead;CButtonm_Close;CWMPPlayer4m_WMPlayer;CWMPControls m_Control;CWMPDVD m_wmpDVD;CWMPSettings m_set;CWMPPlaylist m_playlist; CWMPMedia m_media;CWMPPlayer4m_WMp;CString str1;Dlg1 dlg1;int k;public:virtual BOOL PreTranslateMessag

10、e(MSG* pMsg);protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV supportvirtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);protected:HICON m_hIcon;virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon()

11、;afx_msg void OnBUTTOClose();afx_msg void OnBUTTONForhead();afx_msg void OnBUTTOSlow();afx_msg void OnBUTTONVolBig();afx_msg void OnBUTTONVolSmall();afx_msg void OnBUTTONJIeKou();afx_msg void OnBUTTONDown();afx_msg void OnBUTTOPlay();afx_msg void OnBUTTONStop();afx_msg void OnButtonup();afx_msg void

12、 OnBUTTONMenu();afx_msg void OnOpen();afx_msg void OnDblclkList1();DECLARE_MESSAGE_MAP()CAaDlg 类实现了模拟DVD的主界面的功能实现。成员函数OnBUTTOClose()实现DVD电源的关闭功能,成员函数OnBUTTOPlay()实现播放功能;成员函数OnBUTTONStop()实现音视频的暂停功能;成员函数OnBUTTONForhead()实现快进功能;成员函数OnBUTTOSlow()实现快退功能;成员函数OnBUTTONVolBig()实现音量增加功能;成员函数OnBUTTONVolSmall(

13、)实现音量减小功能等;(2)类2:class Dlg1 : public CDialogpublic:Dlg1(CWnd* pParent = NULL); enum IDD = IDD_DIALOG1 ;CListBoxm_list;CButtonm_btn5;CButtonm_btn4;CButtonm_btn3;CButtonm_btn2;CButtonm_btn1;SmallPlayer smallplayer;int p;CStringm_edit;public:virtual BOOL PreTranslateMessage(MSG* pMsg);protected:virtual

14、 void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportvirtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);protected:afx_msg void OnButton1();virtual BOOL OnInitDialog();afx_msg void OnButton3();afx_msg void OnButton2();afx_msg void OnButton5();afx_msg void OnButton4();afx_msg void OnSelchangeL

15、ist1();afx_msg void OnDblclkList1();DECLARE_MESSAGE_MAP()类Dlg1实现把DVD光碟存放区域的显示,光碟在此区域存放。(3) 类3:class SmallPlayer : public CDialogpublic:SmallPlayer(CWnd* pParent = NULL); / standard constructorenum IDD = IDD_DIALOG2 ;CButtonm_btn1;CButtonm_btn2;CWMPPlayer4m_ocx1;CWMPControls m_control;CWMPDVD m_dvd;C

16、WMPPlaylist m_playlist;CWMPSettings m_set;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportprotected:afx_msg void OnButton1();afx_msg void OnButton2();virtual BOOL OnInitDialog();DECLARE_MESSAGE_MAP()类SmallPlayer 实现把DVD光碟的小窗口播放。2类的接口设计:(1)类1:public:virtual BOOL PreTranslat

17、eMessage(MSG* pMsg);protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV supportvirtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);(2) 类2:public:virtual BOOL PreTranslateMessage(MSG* pMsg);protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportvirtual BOOL OnCom

18、mand(WPARAM wParam, LPARAM lParam);protected:afx_msg void OnButton1();virtual BOOL OnInitDialog();afx_msg void OnButton3();afx_msg void OnButton2();afx_msg void OnButton5();afx_msg void OnButton4();afx_msg void OnSelchangeList1();afx_msg void OnDblclkList1();DECLARE_MESSAGE_MAP()(3)类3:protected:afx_

19、msg void OnButton1();afx_msg void OnButton2();virtual BOOL OnInitDialog();DECLARE_MESSAGE_MAP()说明 protected是windows机制的消息函数。Windows消息机制Windows系统是一个消息驱动的OS,一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM_COMMAND消息发送,WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。

20、当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。一个消息必须由一个窗口接收。在窗口的过程(WNDPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。也相当于与用户交互的接口。3. 类之间的关系:类CAboutDlg、类SmallPlayer 、类Dlg1、类CAaDlg ,都是继承自CDialog类。类CAaDlg 和类Dlg1是包含关系,类Dlg1和类SmallPlayer 也是包含关系CDialog类SmallPl

21、ayer 类CAaDlg 类Dlg1类四编写代码1问题1 (1)问题描述:点击按钮新的窗体无法弹出。 (2)解决办法:新的窗体类没有加到父窗体的头文件中。且关于模态对话框与非模态对话框的显示机制不同。模态可以使用Domal()函数实现。非模态对话框的建立需要dlg1.Create(IDD_DIALOG1,this);即类创建显示的窗体UI;dlg1.ShowWindow(SW_SHOW);然后显示窗体。这样才完成一个非模态对话框的建立。问题得以解决。2问题2 (1)问题描述:播放文件时,列表中选中的文件播放的是列表中其他的文件 (2)解决办法:使用m_list.SetCurSel()设置列表索

22、引号,这样索引顺序正确,问题得到解决。五运行结果与分析 1程序运行的过程:程序先执行主对话框,当用户点击代开DVD数据按钮程序响应windows消息映射,通过windows机制在内存中建立新的类dlg1,此类是主窗体中包含的成员函数。2 类的构造顺序:先构造类CAaDlg ,然后构造类Dlg13 错误描述及其解决办法(1)问题1:问题描述:点击音量增加按钮音量无法增加,代码已经添加。 解决办法:没有把wmpcontrol类的头文件包含,加入头文件即可。(2)问题2 问题描述:点击list区域鼠标点击的位置和右键菜单出现的位置有距离差;解决办法:在ClientToScreen(&pt)这一句不需

23、要把坐标转换成客户区域坐标。六、 感想认识 这次课程设计对于面向对象的思想有深刻的体会。这次课程设计无论是我需找DVD格式文件的创建刻录,等等功能,自己没有接触过刚开始一头雾水自己的想法不好实现。通过网络的搜索需找,得到解决的途径。,这样不仅培养了遇到问题的思考方法,而且更培养了我编程中分析问题,解决问题的方法途径等等。更使得我对于对面向对象的封装,继承以及多态性等特点以及优点理解,也让自己对微软MFC编程有了一定的认识,通过封装类我们把想要现的功能封装起来,通过继承我们可以对已有类进行扩充,通过多态性我可以让不同对象面对同一消息有各自的响应。这次设计使我进步很大,收获颇丰。七程序代码文件Aa

24、dlg.h#include wmpplayer4.h#include wmpcontrols.h#include wmpdvd.h#include wmpplayer4.h#include wmpmedia.h#include wmpplaylist.h#include wmpsettings.h#include Dlg1.h/AFX_INCLUDES#if !defined(AFX_AADLG_H_C8019617_E9EB_4714_B667_009BB531DE6E_INCLUDED_)#define AFX_AADLG_H_C8019617_E9EB_4714_B667_009BB53

25、1DE6E_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ CAaDlg dialogclass CAaDlg : public CDialog/ Constructionpublic:CAaDlg(CWnd* pParent = NULL);/ standard constructor/ Dialog Data/AFX_DATA(CAaDlg)enum IDD = IDD_AA_DIALOG ;CListBoxm_list;CButtonm_Open;CButtonm_Play;CButtonm_Up;CButton

26、m_Stop;CButtonm_Down1;int t;bool t1;CButtonm_Slow;CButtonm_VolSmall;CButtonm_VolBig;CButtonm_Menu;CButtonm_JieKou;CButtonm_Forhead;CButtonm_Close;CWMPPlayer4m_WMPlayer;CWMPControls m_Control;CWMPDVD m_wmpDVD;CWMPSettings m_set;CWMPPlaylist m_playlist; CWMPMedia m_media;CWMPPlayer4m_WMp;CString str1;

27、Dlg1 dlg1;int k;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAaDlg)public:virtual BOOL PreTranslateMessage(MSG* pMsg);protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV supportvirtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);/AFX_VIRTUAL/ Implementati

28、onprotected:HICON m_hIcon;/ Generated message map functions/AFX_MSG(CAaDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnBUTTOClose();afx_msg void OnBUTTONForhead();afx_msg void OnBUTTOSlow();afx

29、_msg void OnBUTTONVolBig();afx_msg void OnBUTTONVolSmall();afx_msg void OnBUTTONJIeKou();afx_msg void OnBUTTONDown();afx_msg void OnBUTTOPlay();afx_msg void OnBUTTONStop();afx_msg void OnButtonup();afx_msg void OnBUTTONMenu();afx_msg void OnOpen();afx_msg void OnDblclkList1();/AFX_MSGDECLARE_MESSAGE

30、_MAP()文件aadlg.cpp#include stdafx.h#include aa.h#include aaDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX

31、_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP()CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT

32、(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CAaDlg dialogCAaDlg:CAaDlg(CWnd* pParent /*=NULL*

33、/): CDialog(CAaDlg:IDD, pParent)/AFX_DATA_INIT(CAaDlg)/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32t=1;t1=true;m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CAaDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAaDlg)DDX_Cont

34、rol(pDX, IDC_LIST1, m_list);DDX_Control(pDX, IDC_BUTTON2, m_Open);DDX_Control(pDX, IDC_BUTTOPlay, m_Play);DDX_Control(pDX, IDC_BUTTONUP, m_Up);DDX_Control(pDX, IDC_BUTTONStop, m_Stop);DDX_Control(pDX, IDC_BUTTONDown, m_Down1);DDX_Control(pDX, IDC_BUTTOSlow, m_Slow);DDX_Control(pDX, IDC_BUTTONVolSmal

35、l, m_VolSmall);DDX_Control(pDX, IDC_BUTTONVolBig, m_VolBig);DDX_Control(pDX, IDC_BUTTONMenu, m_Menu);DDX_Control(pDX, IDC_BUTTONJIeKou, m_JieKou);DDX_Control(pDX, IDC_BUTTONForhead, m_Forhead);DDX_Control(pDX, IDC_BUTTOClose, m_Close);DDX_Control(pDX, IDC_OCX1, m_WMp);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(

36、CAaDlg, CDialog)/AFX_MSG_MAP(CAaDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTOClose, OnBUTTOClose)ON_BN_CLICKED(IDC_BUTTONForhead, OnBUTTONForhead)ON_BN_CLICKED(IDC_BUTTOSlow, OnBUTTOSlow)ON_BN_CLICKED(IDC_BUTTONVolBig, OnBUTTONVolBig)ON_BN_CLICKED(IDC_BUTTONVolSmall

37、, OnBUTTONVolSmall)ON_BN_CLICKED(IDC_BUTTONJIeKou, OnBUTTONJIeKou)ON_BN_CLICKED(IDC_BUTTONDown, OnBUTTONDown)ON_BN_CLICKED(IDC_BUTTOPlay, OnBUTTOPlay)ON_BN_CLICKED(IDC_BUTTONStop, OnBUTTONStop)ON_BN_CLICKED(IDC_BUTTONUP, OnButtonup)ON_BN_CLICKED(IDC_BUTTONMenu, OnBUTTONMenu)ON_BN_CLICKED(IDC_BUTTON2

38、, OnOpen)ON_LBN_DBLCLK(IDC_LIST1, OnDblclkList1)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CAaDlg message handlersBOOL CAaDlg:OnInitDialog()HICON DVDIcon,BoxIcon;CDialog:OnInitDialog();k=0;DVDIcon=AfxGetApp()-LoadIcon(IDI_ICON1);BoxIcon=AfxGetApp()-LoadIcon(IDI_ICON2);SetIcon(DVDIcon,TRUE);m_Open.SetIcon(BoxIco

39、n);dlg1.Create(IDD_DIALOG1,this);/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dial

40、og. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CAaDlg:OnSysCommand(UINT

41、nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically do

42、ne for you by the framework.void CAaDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁