您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 基于VC++MP3播放器的课程设计
MP3仿真程序设计报告书2013-3-171河南科技大学课程设计说明书课程名称面向对象程序课程设计题目MP3仿真程序设计院系电子信息工程学院班级学生姓名指导教师刘中华、张晓玲、李艳霞日期2013.3.3~2013.3.17MP3仿真程序设计报告书2013-3-172课程设计任务书课程设计题目MP3仿真程序设计姓名学号专业班级组别组长同组成员指导教师刘中华、张晓玲、李艳霞课程设计目的通过本课程设计,使学生巩固面向对象程序设计的基本概念、原理和技术,学会使用C++语言进行简单程序的开发,将理论与实际相结合,完成一个小型程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。课程设计环境硬件:装有Windows操作系统的计算机软件:VisualC++6.0课程设计任务和要求任务要求:1.根据实际MP3的运行状况进行需求分析;2.抽象MP3运行算法;3.设计MP3运行程序及人机交互界面;4.模块功能满足要求、界面友好、具有一定的健壮性;5.撰写出符合要求的课程设计报告。参考文献1.郑秋生、吴庆涛,《C/C++程序设计》,北京:电子工业出版社2.谭浩强《C++程序设计》,北京:清华大学出版社时间进度安排序号起止日期工作内容13.4-3.5学生熟悉题目背景,查阅资料23.6-3.13学生进行功能模块设计、编码、测试33.14-3.15程序验收43.16根据设计内容形成课程设计文档,撰写课程设计报告53.17上交课程设计报告任课教师:刘中华、张晓玲、李艳霞时间:2013.3.3MP3仿真程序设计报告书2013-3-173课程设计报告文档题目:MP3仿真程序设计一.引言1.编写目的:通过本课程设计,巩固面向对象程序设计的基本概念、原理和技术,学会使用C++语言进行简单程序的开发,将理论与实际相结合,完成一个小型程序的设计与实现,并在此基础上强化自己的实践意识,提高其实际动手能力和创新能力。2.定义:对话框控件ID、所用及其描述控件ID描述IDC_SLIDERSLIDER控件,用来显示歌曲播放进度IDC_STATICStaticText控件,用来显示歌曲总时间IDC_BTDrop按钮控件,单击它用来删除选中歌曲IDC_BTAdd按钮控件,单击它用来选择歌曲IDC_BTPlay按钮控件,单击它用来播放歌曲IDC_BTPaust按钮控件,单击它用来暂停、继续播放歌曲IDC_BTStop按钮控件,单击它用来停止播放歌曲IDC_SLIDER_VOLUME按钮控件,单击它用来设定音量IDC_BTRead按钮控件,单击它用来保存歌曲播放列表IDC_OUT按钮控件,单击它用来退出程序IDC_BTNext按钮控件,单击它用来播放下一曲IDC_BTUp按钮控件,单击它用来播放上一曲IDC_ListLISTBOX控件,显示添加的歌曲mciSendCommand(DeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&mcistatusparms)向多媒体设备发送指令,获取当前的状态参数3.参考资料:《可视化程序设计》邱勇、肖春宝、白秀玲2011清华出版社《c/c++程序设计》郑秋生、王黎明2009电子工业出版社二.任务的描述1.目标:根据实际MP3的运行状况进行需求分析,抽象MP3运行算法,设计MP3运行程序及人机交互界面。2.功能描述:MP3仿真程序设计报告书2013-3-1743.性能描述(1)数据精确度:比较精确(2)时间特性:等待时间为0.5秒左右4.运行环境:装有Windows操作系统的计算机5.条件与限制:只能在装有Windows操作系统的计算机,VisualC++6.0或更高版本以上运行。三.任务设计1.类的划分:(1)类1:File主要功能是得到音乐文件的信息CStringGetTitle()获得歌曲的名称CStringGetArtist()获得歌曲的作者CStringGetAlbum()获得歌曲的专辑名称intGetYear()MP3播放器主控模块输入模块处理模块输出模块选择文件打开文件播放暂停/继续上一首下一首停止显示进度播放列表MP3仿真程序设计报告书2013-3-175获得歌曲发行年份CStringGetComment()获得歌曲的备注(2)类2:MP3voidOnBTStop()停止当前播放的歌曲voidPlay(CStringStrName,CStringstrPathName)播放当前选中的歌曲voidOnBTNext()播放下一曲歌曲voidOnBTUp()播放上一曲歌曲voidOnBTPause()暂停当前播放的歌曲voidOnBTDrop()删除当前选中的歌曲2.类的接口设计:(1)类1:CStringGetTitle()获得歌曲的名称CStringGetArtist()获得歌曲的作者CStringGetAlbum()获得歌曲的专辑名称intGetYear()获得歌曲发行年份CStringGetComment()获得歌曲的备注(2)类2:播放音乐voidPlay();关闭设备voidStop();暂停设备voidPause();重启设备voidResume();3.类之间的关系:CMP3Dlg需要依赖Mp3类来进行音乐的播放,暂停,上一曲,下一曲等的操作。CMP3Dlg类需要依赖于File类来获取音乐文件的信息四.编写代码1.问题1(1)问题描述:如何让时间显示走动,控制滑动条的随着歌曲滚动(2)解决办法:增加一个OnTimer()的事件2.问题2(1)问题描述:直接向ListCtrl使用SetItemText的属性向ListCtrl的列种赋值(2)解决办法:应该在要先使用InsertItem属性五.运行结果与分析MP3仿真程序设计报告书2013-3-1761.程序运行的过程:初始化界面:打开文件界面:播放界面:MP3仿真程序设计报告书2013-3-1772.类的构造顺序:初始化先构造Dlg类,然后构造File类点击添加文件时完成时构造CMP3类接着构造CMusic类,双击鼠标构造CMP3类关闭界面时构造fileOperate类,后构造CMusic类3.错误描述及其解决办法(1)问题1:问题描述:删除当前播放的音乐后仍在继续播放解决办法:删除后调用OnStop()停止播放。(2)问题2问题描述:播放完一首歌曲后不能自动播放下一曲解决办法:在OnTimer()函数中添调用OnNext()函数六、感想认识经过两周的面向对象程序课程设计,我学到了很多。在这两周的实际动手学习中,我对VC++这门课程有了更深刻的认识,掌握了用MFC创建基于对话框的应用程序,同时了解了MCI相关知识。这次课程设计我做了MP3播放器的设计,MP3播放器主要对常用Windows音频格式的文件实现播放控制:播放歌曲、暂停播放、停止播放等;实现音量控制:静音、声音放大以及声音减小的功能。本次课程设计中虽然可以实现播放、暂停、停止以及音量等功能,但仍然存MP3仿真程序设计报告书2013-3-178在着放多不足,比如列表管理的功能以及循环播放功能始终无法实现,如果有时间一定会好好研究。课设是辛苦劳累的,但是收获同样是巨大的,在课设中每解决一个问题,那种成就感是无法言语的,课设中第一次调试程序时出现了逻辑错误,编译能通过,运行始终无法通过,后来经过思考,进行了多次修改调试之后得到了运行结果,虽然以前在程序中未曾见到过,但是经过改正调试最终达到了目的。七、程序代码#includememory.h#includestdio.h#includestdlib.h#includestdafx.h#includeMP3Player.h#includeMP3PlayerDlg.h#includemmsystem.h#pragmacomment(lib,winmm.lib)#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;intn=0;//控制是否停止上一曲#endif///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutHMIXERm_hmx;HMIXERm_hMixer;MIXERCAPSm_mxcaps;DWORDm_curvalue;DWORDm_controlid;classCAboutDlg:publicCDialog{public:CAboutDlg();MP3仿真程序设计报告书2013-3-179//DialogData//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_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)//Nomessagehandlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()MP3仿真程序设计报告书2013-3-1710///////////////////////////////////////////////////////////////////////////////CMP3PlayerDlgdialogCMP3PlayerDlg::CMP3PlayerDlg(CWnd*pParent/*=NULL*/):CDialog(CMP3PlayerDlg::IDD,pParent){//{{AFX_DATA_INIT(CMP3PlayerDlg)m_time=_T();//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);}voidCMP3PlayerDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMP3PlayerDlg)DDX_Control(pDX,IDC_BTRead,m_Read);DDX_Control(pDX,IDC_BTPause,m_pause);DDX_Control(pDX,IDC_SLIDER2,m_voice);DDX_Control(pDX,IDC_List,m_list);DDX_Control(pDX,IDOut,m_out);DDX_Control(pDX,IDC_SLIDER1,m_slider);DDX_Control(pDX,IDC_BTUp,m_up);DDX_Control(pDX,IDC_BT
本文标题:基于VC++MP3播放器的课程设计
链接地址:https://www.777doc.com/doc-5864159 .html