pm3播放器信息工程课程设计说明书大学毕设论文.docx

上传人:b****5 文档编号:7161552 上传时间:2023-01-21 格式:DOCX 页数:15 大小:136.50KB
下载 相关 举报
pm3播放器信息工程课程设计说明书大学毕设论文.docx_第1页
第1页 / 共15页
pm3播放器信息工程课程设计说明书大学毕设论文.docx_第2页
第2页 / 共15页
pm3播放器信息工程课程设计说明书大学毕设论文.docx_第3页
第3页 / 共15页
pm3播放器信息工程课程设计说明书大学毕设论文.docx_第4页
第4页 / 共15页
pm3播放器信息工程课程设计说明书大学毕设论文.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

pm3播放器信息工程课程设计说明书大学毕设论文.docx

《pm3播放器信息工程课程设计说明书大学毕设论文.docx》由会员分享,可在线阅读,更多相关《pm3播放器信息工程课程设计说明书大学毕设论文.docx(15页珍藏版)》请在冰豆网上搜索。

pm3播放器信息工程课程设计说明书大学毕设论文.docx

pm3播放器信息工程课程设计说明书大学毕设论文

xx大学

课程设计说明书

 

学生姓名:

xx学号:

37

学院:

信息与通信工程学院

专业:

信息工程

题目:

mp3播放器

 

xx

指导教师:

职称:

副教授

 

 

年月日

下达任务书日期:

2016年5月27日

课程设计任务书

1.设计目的:

通过设计,明确音频机的设计思想和设计过程,扎实掌握VC、C++或C语言编程的整体框架和步骤,使学生具有一定综合分析问题和解决问题的能力。

2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):

功能说明:

具有播放MP3音乐的功能。

设计要求:

课程设计的目的在于培养学生的综合素质,要求学生做到:

(1)根据题目要求查阅有关资料,确定方案,写出设计方案;

(2)根据对选题的理解,消化查阅资料,给出相关设计的流程图;

(3)在C语言、C++或VC环境下,实现各项功能;

(4)对结果进行分析总结。

3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:

设计工作任务:

(1)了解课题背景,掌握基本技术,制定程序设计框架。

(2)完成设计内容:

包括程序流程图和完成实现功能的程序代码,写出设计说明书。

(3)设计答辩。

工作量的要求:

(1)通过查阅资料了解与音频播放程序设计相关的基本理论、原理以及背景知识,理解选题意义;

(2)掌握与音频播放程序相关的设计思想、原理、设计框架和步骤;

(3)完成音频播放程序的功能和程序代码的实现;

(4)通过实验验证程序代码的可行性;

(5)给出设计总结。

 

课程设计任务书

4.主要参考文献:

VisualC++课程设计案例精编(第二版)

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.摘要---------------------------------------------------1

1.1)设计内容--------------------------------------------1

1.2)MCI简介--------------------------------------------1

1.2-①任务-----------------------------------------------2

1.2-②各模块功能设计-------------------------------------3

1.2-③操作步骤------------------------------------------4

1.2-④函数代码------------------------------------------5

2.课程设计分析与结果------------------------------------13

3.总结--------------------------------------------------14

参考文献------------------------------------------------14

1.摘要

利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个MP3播放器。

要求能够播放常用Windows音频格式的文件;实现播放控制:

播放、暂停、停止等;实现音量控制:

静音、声音放大减小;实现播放列表管理:

加入文件、加入目录、删除文件等功能

关键词:

MP3播放器的设计

设计目的利用VC++开发一个支持wav、mp3、wma等不同音频格式的媒体播放器。

通过课程设计掌握多媒体编程的基本原理。

 

1)设计内容

MP3播放器的设计是利用MFC应用程序、媒体控制接口MIC的基本知识而设计的。

(MFC简介)MFC是VisualC++是核心。

MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFCAppWizard向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。

每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。

这些函数,必须通过类定义对象才能使用

2)MCI简介

MCI(MediaControlInterface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。

它所支持的媒体格式包括mp3、avi、wav、mpeg等等[2]。

音频技术发展较早,几年前一些技术已经成熟并产品化,音频技术主要包括四个方面:

音频数字化、语音处理、语音合成及语音识别。

音频文件包括多种格式的文件,MP3就是其中的一种。

MP3的全称是MovingPictureExpertsGroup,AudioLayerⅢ,它所使用的技术是在VCD(MPEG-1)的音频压缩技术上发展出的第三代,而不是MPEG-3。

MP3是一种音频压缩的国际技术标准,它一般需要MP3播放器来读取

 

1 任务:

1)编程实现一个可支持多种音频格式的媒体播放器,其基本功能包括媒体播放、音量调节、播放进度选择、暂停、停止以及歌曲信息的查询与添加等;

2)给出程序的总体设计和详细设计,要求程序总体架构

3)图详细设计的流程图说明等

表一

 

2 各模块功能设计

2.1处理“打开”按钮

单击“打开”按钮后,在onfilechoice()函数中,首先对文件类型进行过滤,调用GetSystemMene()函数打开对话框选择一个媒体文件,通过GetPathName()函数获取文件路径,通过onfilechoice()函数获取文件名后,调用DisplayInfo()函数在StaticText控件上显示“你选择的歌曲是(文件名)”,然后利用pause()函数设置“暂停”按钮以及“停止”按钮不可用。

 

2.2处理“播放”按钮

单击“播放”按钮后,在onplay()函数中,通过调用CMP3Dlg类的GetPathName函数获取刚才选择的文件路径以及文件名,调用该类的voidplay()函数播放歌曲,此时调用GetDlgItemText(IDC_pause,strtemp)获取按钮状态,然后利用SetDlgItemText()函数设置“播放”按钮不可用。

2.3处理“暂停”按钮

单击“暂停”按钮后,在Onstop()函数中,首先通过调用CMP3Dlg类的pause()函数暂停正在播放的歌曲,GetDlgItem(IDC_play)->EnableWindow(false),当暂停按钮按下时,通过GetDlgItemText(IDC_pause,strtemp)获取按钮状态,此时歌曲处于暂停的进度条上,利用GetDlgItem(IDC_stop)->EnableWindow(true)函数设置“播放”按钮可用。

2.4处理“停止”按钮

单击“停止”按钮后,首先通过调用CMP3Dlg类的stop()函数暂停正在播放的歌曲,GetDlgItem(IDC_play)->EnableWindow(false)当stop按钮按下时,播放和暂停应该均不可用,此时的歌曲处于暂停时的进度上,利用GetDlgItem(IDC_stop)->EnableWindow(true)函数设置“播放”按钮可用。

10将停止正在播放歌曲,利用GetDlgItem()函数设置“暂停”按钮和“停止”按钮不可用。

2.5处理“音量”滑块

拉动“音量”滑块后,在m_slider.SetRange(0,1000)中,设置滑块的移动范围为0~1000。

在启动程序时,通过m_slider.SetPos(500)函数设置滑块指针的初始位置设为500且代表初始音量为50。

2.6处理“退出”按钮单击“退出”按钮后,在Onexitbt()函数中,调用CDialog类的OnCancel()函数将退出对话框,结束程序的运行

 

3 操作步骤

1)先在VS环境下建立好一个基于对话框的工程。

2)打开资源视图,在对话框内按照布局图布局,步好后根据表-1来设置属性。

添加相应的变量和函数。

3)进行程序初始化。

4)为各个按钮添加消息处理函数,并添加相应的代码。

5)全部完成后进行测试和调试。

 

④函数代码

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg :

 public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg() :

 CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg:

:

DoDataExchange(CDataExchange* pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CMP3Dlg dialog

CMP3Dlg:

:

CMP3Dlg(CWnd* pParent /*=NULL*/)

:

 CDialog(CMP3Dlg:

:

IDD, pParent)

{

//{{AFX_DATA_INIT(CMP3Dlg)

m_int = 0;

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);

}

void CMP3Dlg:

:

DoDataExchange(CDataExchange* pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMP3Dlg)

DDX_Control(pDX, IDC_SLIDER, m_slider);

DDX_Text(pDX, IDC_vol, m_int);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CMP3Dlg, CDialog)

//{{AFX_MSG_MAP(CMP3Dlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(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

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CMP3Dlg message handlers

BOOL CMP3Dlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

// 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 < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu !

= NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!

strAboutMenu.IsEmpty())

{

pSysMenu->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 is not a dialog

SetIcon(m_hIcon, TRUE);// Set big icon

SetIcon(m_hIcon, FALSE);// Set small icon

m_slider.SetRange(0,1000);//滑块的移动范围0~1000

    m_slider.SetPos(500);//滑块指针的初始位置设为500代表初始音量为50

    GetDlgItem(IDC_play)->EnableWindow(false);//文件没有读取时所有按钮应该是不可选的

    GetDlgItem(IDC_pause)->EnableWindow(false);

    GetDlgItem(IDC_stop)->EnableWindow(false);

// TODO:

 Add extra initialization here

return TRUE;  // return TRUE  unless you set the focus to a control

}

void CMP3Dlg:

:

OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog:

:

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

iew model,

//  this is automatically done for you by the framework.

void CMP3Dlg:

:

OnPaint() 

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int 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 icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog:

:

OnPaint();

}

}

// The system calls this to obtain the cursor to display while the user drags

//  the minimized window.

HCURSOR CMP3Dlg:

:

OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CMP3Dlg:

:

Onabout() 

{

// TODO:

 Add your control notification handler code here

CAboutDlg dlg;

dlg.DoModal(); 

}

void CMP3Dlg:

:

Onexitbt() 

{

// TODO:

 Add your control notification handler code here

CDialog:

:

OnCancel();

}

void CMP3Dlg:

:

OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult) 

{

// TODO:

 Add your control notification handler code here

UpdateData(true);

    m_int=m_slider.GetPos()/10;

    setvolume(m_slider.GetPos());

    UpdateData(false);

*pResult = 0;

}

void CMP3Dlg:

:

Onfilechoice() 

{

// TODO:

 Add your control notification handler code here

char szFileFilter[]="mp3文件(*.mp3)|*.mp3|"

                        "wma文件(*.wma)|*.wma|"

                        "wav文件(*.wav)|*.wav|"

                        "所有文件(*.*)|*.*|";

    CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);

    if(dlg.DoModal()==IDOK)

    {

        CString strFilepath=dlg.GetPathName();

        CString strFilename=dlg.GetFileName();

        SetDlgItemText(IDC_filename,strFilename);

        Load(this->m_hWnd,strFilepath);

        GetDlgItem(IDC_play)->EnableWindow(true);//文件读取成功时所有按钮变可选的

        GetDlgItem(IDC_pause)->EnableWindow(true);

        GetDlgItem(IDC_stop)->EnableWindow(true);

}

}

void CMP3Dlg:

:

Onplay() 

{

// TODO:

 Add your control notification handler code here

    play();

    SetDlgItemText(IDC_pause,"暂停");

}

void CMP3Dlg:

:

Onpause() 

{

// TODO:

 Add your control notification handler code here

CString strtemp;

GetDlgItemText(IDC_pause,strtemp);//获取按钮状态

if(strtemp.Compare("暂停")==0)

{

    pause();

    SetDlgItemText(IDC_pause,"恢复");

}  

if(strtemp.Compare("恢复")==0)

{

    resume();

    SetDlgItemText(IDC_pause,"暂停");

}  

}

void CMP3Dlg:

:

Onstop() 

{

// TODO:

 Add your control notification handler code here

stop();

SetDlgItemText(IDC_pa

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1