• 701.00 KB
  • 26页

MFC简单音乐播放器项目报告

  • 26页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------软件学院项目报告书课  程:专业实训二项目名称:自制音乐播放器专业年级:软件工程Java2级姓名:******学号:*********指导教师:马飞2011年12月25---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------目录1问题定义与可行性研究31.1问题定义31.2可行性研究32需求分析42.1功能需求42.1.1功能描述42.1.2功能示意图52.2性能需求63概要设计与详细设计73.1概要设计73.2详细设计74系统实现与单元测试94.1源程序代码94.2单元测试效果图164.2.1MFC组件的使用164.2.2文件的读写操作194.2.3动态数据连接库的使用204.2.4多线程的使用215总结22致谢23参考文献24---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------1问题定义与可行性研究本章分两部分,问题定义和可行性研究。问题定义阶段主要研究我们所学的知识能做什么项目,而可行性研究给出了制作音乐播放器可行性。1.1问题定义通过开发音乐播放器,来练习本学期所学知识,如:文件的创建、读写等操作,存取系统所需要的数据;使用DLL软件开发理念,实现软件的升级功能;将所有的功能函数代码尽量写到dll文件中,而在主界面程序中只是调用这些功能函数;使用多线程进行大规模运算或定时提醒等。1.2可行性研究本学期,主要学习了MFC编程、动态链接库、以及多线程的相官知识,在学习的过程中复习了文件的读写操作。该音乐播放器应具备文件的读写操作、动态链接库的更新以及多线程的功能。通过本学期的知识,已经具备开发该软件的能力。---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------2需求分析本章给出了音乐播放器应该具备的功能,并给出了功能示意图,最后提出了实现该播放器应该具备的条件。2.1功能需求2.1.1功能描述本播放器主要有三种功能:第一、对文件进行操作;第二、对按钮的处理;第三、定时关闭文件。①对文件的操作通过文件的读写知识,实现了对文件的浏览,在窗口中删除已经选取的歌曲,清空原有的列表框,对已经选中的mp3格式的文件进行播放,以及通过双击列表框中的歌曲来播放相应的文件。②对按键的处理对各种按键创建了类向导,并添加了事件处理,可以处理基本的浏览、播放、删除、清空等操作。③定时关闭播放器本播放器通过多线程的知识,创建一个Timer线程,当按下定时关闭的按键的时候,定时关闭该音乐播放器。④动态数据库的使用播放器要能够包含动态数据库的知识---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------2.1.2功能示意图各模块间的调用关系如下图:各种按键及事件播放器组件计时器线程删除后调用文件打开MFC的使用文件操作音乐播放器动态链接库线程使用添加文件菜单清空后调用---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------2.2性能需求本项目是一个普通的音乐播放器,运行环境为VC++6.0,项目运行速率正常,可以满足用户需求。1、时间特性要求:响应时间要低于5秒2、便捷性:运用了可视化编程,更有助于人机交互,更人性化。程序的运行,符合正常的操作习惯,程序功能明了简洁!3、通过线程的控制,当用户长时间不使用播放器时,定时关闭音乐播放器,更适合用户的习惯,并达到节省内存的目的。---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------3概要设计与详细设计本章通过传统软件工程方法学的模块化的理论,首先概要设计出该软件应该具备的各种主要功能,然后详细的设计出各个独立模块应有的功能。3.1概要设计运用传统软件工程方法学的知识将音乐播放器软件的开发分成四大块:一、MFC的使用以及实现方法二、文件的读写操作三、动态数据连接库的使用四、多线程机制的使用3.2详细设计根据概要设计所划分的四个模块,该阶段应详细的完成这四个模块的任务:一、MFC的实现通过MFC窗口以及函数的使用,创建出播放器的主界面,主界面应包括文件的打开、添加、---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------播放以及线程按键。另外,还要各种函数应该实现相应组件上的各种事件。一、文件读写操作的实现通过以前的学过的文件读写操作知识,实现对音乐文件的读以及写操作,使用读写操作函数时应该注意C语言与MFC语法的相似性以及相异性。二、动态数据连接库的实现当删除列表中的某一歌曲或者清空列表时,调用原有的数据连接库,从而实现动态链接库的使用。三、线程的实现通过计时器线程Timer类,定时监视界面,并在规定的时间内自动关闭程序,达到定时关闭的目的---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------4系统实现与单元测试4.1源程序代码//初始类classCPlayerDlg:publicCDialog{//Constructionpublic:CPlayerDlg(CWnd*pParent=NULL);//standardconstructorCMenumenu;CStringpathnames[100];inttop;CToolTipCtrlm_tool;HMODULEm_hMod;//Timer线程intCurTime;intStopTime;//DialogData//{{AFX_DATA(CPlayerDlg)enum{IDD=IDD_PLAYER_DIALOG};CButtonm_delete;CCheckListBoxm_list;CWMPPlayer4m_player;//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CPlayerDlg)public:virtualBOOLPreTranslateMessage(MSG*pMsg);protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------//Implementationprotected:HICONm_hIcon;//Generatedmessagemapfunctions//{{AFX_MSG(CPlayerDlg)virtualBOOLOnInitDialog();afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);afx_msgvoidOnPaint();afx_msgHCURSOROnQueryDragIcon();afx_msgvoidOnMenuitem32771();afx_msgvoidOnMenuitem32772();afx_msgvoidOnButton1();afx_msgvoidOnButton2();afx_msgvoidOnButton3();afx_msgvoidOnButton4();afx_msgvoidOnDblclkList1();afx_msgvoidOnButton5();afx_msgvoidOnOpenStateChangeOcx1(longNewState);afx_msgvoidOnButton6();afx_msgvoidOnTimer(UINTnIDEvent);DECLARE_EVENTSINK_MAP()//}}AFX_MSGDECLARE_MESSAGE_MAP()};CPlayerDlg::CPlayerDlg(CWnd*pParent/*=NULL*/):CDialog(CPlayerDlg::IDD,pParent){//{{AFX_DATA_INIT(CPlayerDlg)//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCPlayerDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CPlayerDlg)DDX_Control(pDX,IDC_BUTTON3,m_delete);DDX_Control(pDX,IDC_LIST1,m_list);DDX_Control(pDX,IDC_OCX1,m_player);//}}AFX_DATA_MAP---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------}//打开按键voidCPlayerDlg::OnButton1(){CFileDialogFD(true,"","",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"mp3|*.mp3;avi|*.avi;ape|*.ape||");if(FD.DoModal()==IDOK){CStringpathname=FD.GetPathName();pathnames[top]=pathname;m_list.AddString(pathnames[top]);top++;m_list.SetItemHeight(top,20);FILE*fp1=NULL;fp1=fopen("pathnames.txt","w");for(inti=0;iSetTimer(1,1000,NULL);//设置一秒一次的Timer}//列表框voidCPlayerDlg::OnDblclkList1(){CStringstr;m_list.GetText(m_list.GetCurSel(),str);m_player.SetUrl(str);//GetDlgItem().SetBkColor(RGB(255,0,0));}//列表框双击事件:voidCPlayerDlg::OnDblclkList1(){CStringstr;m_list.GetText(m_list.GetCurSel(),str);---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------m_player.SetUrl(str);}//播放器组件BOOLCPlayerDlg::PreTranslateMessage(MSG*pMsg){//TODO:Addyourspecializedcodehereand/orcallthebaseclassm_tool.RelayEvent(pMsg);returnCDialog::PreTranslateMessage(pMsg);}有关菜单的代码:voidCPlayerDlg::OnMenuitem32771(){//TODO:AddyourcommandhandlercodehereCFileDialogFD(true,"","",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"mp3|*.mp3;avi|*.avi;ape|*.ape||");if(FD.DoModal()==IDOK){CStringpathname=FD.GetPathName();pathnames[top]=pathname;m_list.AddString(pathnames[top]);top++;m_list.SetItemHeight(top,20);FILE*fp1=NULL;fp1=fopen("pathnames.txt","w");for(inti=0;ithis->StopTime)ExitProcess(0);CDialog::OnTimer(nIDEvent);}4.2单元测试效果图本节主要通过运行自制播放器后弹出的窗口以及在窗口上的各种操作来测试软件的功能。通过各种操作前后效果图的变化来测试软件。4.2.1MFC组件的使用初始界面:初始界面由一个菜单条、一个播放器组件、六个按键、和一个列表框组成。---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------菜单的使用:菜单项主要包括三个菜单:文件、关于、帮助。文件菜单有三个菜单项:打开、添加、退出;关于菜单有两个菜单项:开发时间、开发人员信息;帮助菜单有两个菜单项:操作说明、帮助文档。---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------系统播放器组件:播放按键---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------双击事件---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------4.2.2文件的读写操作文件打开或添加时弹出文件对话框---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------4.2.3动态数据连接库的使用删除列表框中的某一歌曲清空列表---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------4.2.4多线程的使用点击定时关闭按键后,播放器会在一定的时间内自动关闭---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------5总结自制音乐播放器是运行于VasualC++6.0的一款MFC应用程序,该软件通过运用平时所学的知识,把文件的创建、读写操作,DLL软件开发理念以及多线程的知识系统地联系在了一起。---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------播放器通过文件的读写知识,实现了对音乐文件的添加、删除等操作;通过动态链接库的知识,将功能函数代码写到dll文件中,而在主界面程序中只是调用这些功能函数,有助于对软件进行更新操作;通过多线程的知识,创建了Timer类,实现定时关闭播放器的操作。另外,该软件运用了MFC的知识,实现了菜单条、菜单以及菜单项的使用,通过使用事件处理机制,实现了各种按键上的动作事件。因此,该播放器能够更好地练习本学期所学的各种知识,通过该播放器的开发,回顾了文件的各种操作,加深了对MFC的认识,并且更深刻的理解到使用动态链接库的重要性以及多线程机制的优越性。致谢经过两周多的努力,项目即将完成,本学期专业实训的课程也走近尾声。这段时间是短暂的,但在这段时间里我受益匪浅。在开发项目的过程中,各种问题接踵而至,如系统播放器的调用、---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有----------------------------------------------------------------------------------------------------------------------------------------------------------计时器线程的使用以及文件的读写操作等等等;这些问题虽然最终都在马老师的指导和同学的帮助下得到了解决,但不可否认的是我在C语言的理解和应用上还只处于表层阶段,不能深层次的理解C语言的精髓进而熟练应用。通过此次音乐播放器的编写,我进一步理解了C语言功能的强大性,自己的编程能力、团体意识也得到了大幅的提高,我的知识领域也得到了扩展,专业技能大幅提高,分析和解决实际问题的综合能力也有了很大的发展。正因为如此,我谨诚挚地向给予我帮助和支持的老师、同学表示深深的谢意。首先要感谢马飞老师。马老师学识渊博,治学严谨,一直是我学习的榜样。一年来,马老师的鼓励和谆谆教导给了我极大的信心,让我在面对困难时应刃而上,不屈不挠。不断地学习,增加自己的知识储备,让我充实的度过了本学期。同时,我也要感谢我的同学,他们在我最需要帮助的时候,主动伸出了援助之手,给了我莫大的帮助,让我有信心继续努力下去。参考文献C程序设计(第三版)(谭浩强著)C语言程序设计案例教程(沈大林主编张晓蕾杨旭王锦朱立编著)C++语言程序设计(第4版)(郑莉董渊何江舟编著)C语言开发宝典---------------------------------------------------------精品文档--------------------------------------------------------------------- 精品文档就在这里-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------精品文档---------------------------------------------------------------------'