版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中北大学课 程 设 计 说 明 书学生姓名: 李衍朋 学 号: 37 学 院: 信息与通信工程学院 专 业: 信息工程 题 目: mp3播放器 陈平指导教师: 职称: 副教授 年 月 日下达任务书日期: 2016 年 5 月 27 日课 程 设 计 任 务 书1设计目的:通过设计,明确音频机的设计思想和设计过程,扎实掌握VC、C+或C语言编程的整体框架和步骤,使学生具有一定综合分析问题和解决问题的能力。2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):功能说明:具有播放MP3音乐的功能。设计要求:课程设计的目的在于培养学生的综合素质,要求学生做到:(1)根据题目要求查阅有关资料,确
2、定方案,写出设计方案;(2)根据对选题的理解,消化查阅资料,给出相关设计的流程图;(3) 在C语言、C+或VC环境下,实现各项功能;(4) 对结果进行分析总结。3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:设计工作任务:(1) 了解课题背景,掌握基本技术,制定程序设计框架。(2) 完成设计内容:包括程序流程图和完成实现功能的程序代码,写出设计说明书。(3) 设计答辩。工作量的要求:(1) 通过查阅资料了解与音频播放程序设计相关的基本理论、原理以及背景知识,理解选题意义;(2) 掌握与音频播放程序相关的设计思想、原理、设计框架和步骤;(3) 完成音频播放程序的功能
3、和程序代码的实现;(4) 通过实验验证程序代码的可行性;(5) 给出设计总结。课 程 设 计 任 务 书4主要参考文献:Visual C+课程设计案例精编(第二版)5设计成果形式及要求:程序运行结果;课程设计说明书。6工作计划及进度:2016年5月30日 2016年6月1日:查资料 2016年6月2日 2016年6月7日:在指导教师指导下设计方案及程序2016年6月8日 2016年6月15日:学生上机调试程序,指导教师辅导2016年6月16日 2016年6月18日:完成课程设计说明书2016年6月19日:答辩系主任审查意见: 签字: 年 月 日目录1.摘要-11.1)设计内容-11.2)MCI
4、简介-11.2-任务-21.2-各模块功能设计-312-操作步骤-412-函数代码-52.课程设计分析与结果-133.总结-14参考文献-141. 摘要 利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个MP3播放器。要求能够播放常用Windows音频格式的文件;实现播放控制:播放、暂停、停止等;实现音量控制:静音、声音放大减小;实现播放列表管理:加入文件、加入目录、删除文件等功能 关键词:MP3播放器的设计 设计目的 利用VC+开发一个支持wav、mp3、wma等不同音频格式的媒体播放器。通过课程设计掌握多媒体编程的基本原理。 1) 设计内容 MP3播放器的设计是利用MFC应用程序、
5、媒体控制接口MIC 的基本知识而设计的。(MFC 简介) MFC是Visual C+是核心。MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。每个MFC类都包括了一些函数,函数放到类中,符合C+编程方法。这些函数,必须通过类定义对象才能使用2) MCI简介 MCI(Media Contro
6、l Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。它所支持的媒体格式包括mp3、avi、wav、mpeg等等2。 音频技术发展较早,几年前一些技术已经成熟并产品化,音频技术主要包括四个方面:音频数字化、语音处理、语音合成及语音识别。 音频文件包括多种格式的文件,MP3就是其中的一种。MP3的全称是Moving Picture Experts Group,Audio Layer ,它所使用的技术是在VCD(MPEG-1)的音频压缩技术上发
7、展出的第三代,而不是MPEG-3。MP3是一种音频压缩的国际技术标准,它一般需要MP3播放器来读取1 任务: 1) 编程实现一个可支持多种音频格式的媒体播放器,其基本功能包括媒体播放、音量调节、播放进度选择、暂停、停止以及歌曲信息的查询与添加等; 2) 给出程序的总体设计和详细设计,要求程序总体架构 3)图详细设计的流程图说明等 表一2 各模块功能设计2.1 处理“打开”按钮 单击“打开”按钮后,在onfilechoice()函数中,首先对文件类型进行过滤,调用GetSystemMene()函数打开对话框选择一个媒体文件,通过GetPathName()函数获取文件路径,通过onfilechoi
8、ce()函数获取文件名后,调用DisplayInfo()函数在Static Text控件上显示“你选择的歌曲是(文件名)”,然后利用pause()函数设置“暂停”按钮以及“停止”按钮不可用。 2.2 处理“播放”按钮 单击“播放”按钮后,在onplay()函数中,通过调用CMP3Dlg类的GetPathName函数获取刚才选择的文件路径以及文件名,调用该类的void play()函数播放歌曲,此时调用GetDlgItemText(IDC_pause,strtemp)获取按钮状态,然后利用SetDlgItemText()函数设置“播放”按钮不可用。 2.3 处理“暂停”按钮 单击“暂停”按钮后,
9、在Onstop ()函数中,首先通过调用CMP3Dlg类的pause()函数暂停正在播放的歌曲,GetDlgItem(IDC_play)->EnableWindow(false),当暂停按钮按下时,通过GetDlgItemText(IDC_pause,strtemp)获取按钮状态,此时歌曲处于暂停的进度条上,利用GetDlgItem(IDC_stop)->EnableWindow(true)函数设置“播放”按钮可用。 2.4 处理“停止”按钮 单击“停止”按钮后,首先通过调用CMP3Dlg类的stop()函数暂停正在播放的歌曲,GetDlgItem(IDC_play)->En
10、ableWindow(false)当stop按钮按下时,播放和暂停应该均不可用,此时的歌曲处于暂停时的进度上,利用GetDlgItem(IDC_stop)->EnableWindow(true)函数设置“播放”按钮可用。 , 10 将停止正在播放歌曲,利用GetDlgItem()函数设置“暂停”按钮和“停止”按钮不可用。 2.5 处理“音量”滑块 拉动“音量”滑块后,在m_slider.SetRange(0,1000)中,设置滑块的移动范围为01000。在启动程序时,通过m_slider.SetPos(500)函数设置滑块指针的初始位置设为500且代表初始音量为50 。 2.6 处理“退
11、出”按钮 单击“退出”按钮后,在Onexitbt()函数中,调用CDialog类的OnCancel()函数将退出对话框,结束程序的运行3 操作步骤1) 先在VS环境下建立好一个基于对话框的工程。 2) 打开资源视图,在对话框内按照布局图布局,步好后根据 表-1来设置属性。添加相应的变量和函数。3) 进行程序初始化。4) 为各个按钮添加消息处理函数,并添加相应的代码。5) 全部完成后进行测试和调试。 函数代码/ CAboutDlg dialog used for App Aboutclass CAboutDlg :&
12、#160;public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX /AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExch
13、ange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchan
14、ge* 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()/ CMP3Dlg dialogCMP3Dlg:CMP3Dlg(CWnd* pParent /*=NULL*/): CDialog(C
15、MP3Dlg:IDD, pParent)/AFX_DATA_INIT(CMP3Dlg)m_int = 0;/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);void CMP3Dlg:DoDataExchange(CDa
16、taExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMP3Dlg)DDX_Control(pDX, IDC_SLIDER, m_slider);DDX_Text(pDX, IDC_vol, m_int);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMP3Dlg, CDialog)/AFX_MSG_MAP(CMP3Dlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(
17、IDC_about, Onabout)ON_BN_CLICKED(IDC_exitbt, Onexitbt)ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER, OnCustomdrawSlider)ON_BN_CLICKED(IDC_filechoice, Onfilechoice)ON_BN_CLICKED(IDC_play, Onplay)ON_BN_CLICKED(IDC_pause, Onpause)ON_BN_CLICKED(IDC_stop, Onstop)/AFX_MSG_MAP
18、END_MESSAGE_MAP()/ CMP3Dlg message handlersBOOL CMP3Dlg:OnInitDialog()CDialog:OnInitDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_
19、ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->
20、;AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the application's main window
21、 is not a dialogSetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small iconm_slider.SetRange(0,1000);/滑块的移动范围01000 m_slider.SetPos(500);/滑块指针的初始位置设为500代表初始音量为50 GetDlgItem(ID
22、C_play)->EnableWindow(false);/文件没有读取时所有按钮应该是不可选的 GetDlgItem(IDC_pause)->EnableWindow(false); GetDlgItem(IDC_stop)->EnableWindow(false);/ TODO: Add extra initialization herereturn TRUE; / return
23、TRUE unless you set the focus to a controlvoid CMP3Dlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lP
24、aram);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the documentiew model,/ &
25、#160;this is automatically done for you by the framework.void CMP3Dlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0
26、);/ 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;in
27、t 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 display while the
28、160;user drags/ the minimized window.HCURSOR CMP3Dlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CMP3Dlg:Onabout() / TODO: Add your control notification handler code hereCAboutDlg dlg;dlg.DoModal();
29、60;void CMP3Dlg:Onexitbt() / TODO: Add your control notification handler code hereCDialog:OnCancel();void CMP3Dlg:OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notificat
30、ion handler code hereUpdateData(true); m_int=m_slider.GetPos()/10; setvolume(m_slider.GetPos(); UpdateData(false);*pResult = 0;void CMP3Dlg:Onfilechoice() / TODO: Add your cont
31、rol notification handler code herechar szFileFilter="mp3文件(*.mp3)|*.mp3|" "wma文件(*.wma)|*.wma|"
32、; "wav文件(*.wav)|*.wav|"
33、0;"所有文件(*.*)|*.*|" CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); if(dlg.DoModal()=IDOK) CString strFilepath=dlg.GetPathName();
34、160; CString strFilename=dlg.GetFileName(); SetDlgItemText(IDC_filename,strFilename); Load(this->m_hWnd,strFilepath); GetDlgItem
35、(IDC_play)->EnableWindow(true);/文件读取成功时所有按钮变可选的 GetDlgItem(IDC_pause)->EnableWindow(true); GetDlgItem(IDC_stop)->EnableWindow(true);void CMP3Dlg:Onplay() / TODO: Add your
36、160;control notification handler code here play(); SetDlgItemText(IDC_pause,"暂停");void CMP3Dlg:Onpause() / TODO: Add your control notification handler code hereCString s
37、trtemp;GetDlgItemText(IDC_pause,strtemp);/获取按钮状态if(strtemp.Compare("暂停")=0) pause(); SetDlgItemText(IDC_pause,"恢复"); if(strtemp.Compare("恢复")=0) resume(); SetDlgItemTe
38、xt(IDC_pause,"暂停"); void CMP3Dlg:Onstop() / TODO: Add your control notification handler code herestop();SetDlgItemText(IDC_pause,"暂停");GetDlgItem(IDC_play)->EnableWindow(false);/当stop按钮按下时,播放和暂停应该均不可用GetDlgItem(IDC_p
39、ause)->EnableWindow(false);/ MP3音乐播放器.cpp : Defines the class behaviors for the application./#include "stdafx.h"#include "MP3音乐播放器.h"#include "MP3音乐播放器Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#
40、undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMP3AppBEGIN_MESSAGE_MAP(CMP3App, CWinApp)/AFX_MSG_MAP(CMP3App)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO&
41、#160;NOT EDIT what you see in these blocks of generated code!/AFX_MSGON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CMP3App constructionCMP3App:CMP3App()/ TODO: add construction code here,/ Place
42、60;all significant initialization in InitInstance/ The one and only CMP3App objectCMP3App theApp;/ CMP3App initializationBOOL CMP3App:InitInstance()AfxEnableControlContainer();/ Standard initialization/ If you&
43、#160;are not using these features and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines
44、;you do not need.#ifdef _AFXDLLEnable3dControls(); / Call this when using MFC in a shared DLL#elseEnable3dControlsStatic(); / Call this when linking to MFC statically#endifCMP3Dlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: Place code here to
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 德宏公务员考试语言试题及答案
- 2025年及未来5年市场数据中国油墨树脂行业市场调研及投资战略规划报告
- 鲍奕希浙江公务员考试试题及答案
- 安乡县公务员考试试题及答案
- 城市道路环境整治提升改造项目初步设计
- xx市垃圾无害化处理及综合利用项目建议书
- 2026年蔬菜种植公司财务报表编制与报送管理制度
- 2025福建仙游县食品公司遴选正式职工22人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年建筑装饰公司指纹考勤精准管理制度
- 地下水及不良地质地段隧道施工技术与方案
- 卡通小蝌蚪找妈妈儿童绘本
- 《ESD紧急停车系统》课件
- 《AI技术入门讲座》课件
- 海洋工程类专业大学生职业生涯发展
- DB43-T 3090-2024水运工程交(竣)工检测规范
- 化学教学论-第三章-化学教材的设计与内容建构
- 制药研发未来5年规划
- 【MOOC】倾听-音乐的形式与审美-武汉大学 中国大学慕课MOOC答案
- 退款协议书(模板)
- 一年级拼音纸练习(部编版)
- 《GIS应用案例》课件
评论
0/150
提交评论