最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

MP3音乐播放器软件课程设计报告(MFC)

来源:动视网 责编:小OO 时间:2025-09-28 12:44:19
文档

MP3音乐播放器软件课程设计报告(MFC)

课程设计说明书课程设计名称:软件综合课程设计课程设计题目:音频播放器程序的设计与实现学院名称:信息工程学院电子信息工程专业课程设计任务书题目内容及要求1、设计题目:MP3播放器的设计2、设计内容及要求:利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个MP3播放器。要求能够播放常用Windows音频格式的文件;实现播放控制:播放、暂停、停止等;实现音量控制:静音、声音放大减小;实现播放列表管理:加入文件、加入目录、删除文件等功能。进度安排2月17日:完成需求分析,确定程序功能,确立程序
推荐度:
导读课程设计说明书课程设计名称:软件综合课程设计课程设计题目:音频播放器程序的设计与实现学院名称:信息工程学院电子信息工程专业课程设计任务书题目内容及要求1、设计题目:MP3播放器的设计2、设计内容及要求:利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个MP3播放器。要求能够播放常用Windows音频格式的文件;实现播放控制:播放、暂停、停止等;实现音量控制:静音、声音放大减小;实现播放列表管理:加入文件、加入目录、删除文件等功能。进度安排2月17日:完成需求分析,确定程序功能,确立程序
   课程设计说明书

课程设计名称:       软件综合课程设计         

课程设计题目:   音频播放器程序的设计与实现   

学 院 名 称:          信息工程学院           

   电子信息工程专业 课程设计任务书

题目
内容及要求

1、设计题目:MP3播放器的设计

2、设计内容及要求:

利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个MP3播放器。要求能够播放常用Windows音频格式的文件;实现播放控制:播放、暂停、停止等;实现音量控制:静音、声音放大减小;实现播放列表管理:加入文件、加入目录、删除文件等功能。

进度安排

2月17日:完成需求分析,确定程序功能,确立程序设计思想;

2月18日~2月19日:进行详细设计,实现编码;

2月20日:进行程序测试,完善编码;撰写设计说明书,准备验收;

2月21日:验收。

学生姓名: 

指导时间       第一周: 周一至周五

指导地点: 

任务下达 任务完成
考核方式1.评阅 □  2.答辩 □      3.实际操作□     4.其它□

指导教师系(部)主任

正文:

引言…………………………………………………..5

一、设计程序的目的与要求………………….........6

   目的…………………………………………….......6

   要求…………………………………………………6

二、方案实现与调试………………………………6

总体设计………………………………………….6

  1、实现功能………………………………………6

      2、功能模块图…………………………………..7

    详细设计………………………………………….7

     1、界面布局………………………………………7

     2、各模块功能设计………………………………8

        2.1处理“打开”按钮………………………………..9

        2.2处理“播放”按钮……………………………….9

        2.3处理“暂停”按钮………………………………..9

       2.4处理“停止”按钮………………………………..9

         2.5处理“音量”按钮…………………………………10

       2.6处理“退出”按钮………………………………...10

      3 操作步骤……………………………………….10

三、课程设计分析与总结……………………….11

     分析…………………………………………..11

     总结…………………………………………...11

附录……………………………………………….13

     关键程序清单…………………………………13

     参考文献………………………………………20

    引言

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

1.1 MFC简介

MFC是Visual C++是核心。MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。这些函数,必须通过类定义对象才能使用[1]。

1.2 MCI简介

MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。它所支持的媒体格式包括mp3、avi、wav、mpeg等等[2]。

音频技术发展较早,几年前一些技术已经成熟并产品化,音频技术主要包括四个方面:音频数字化、语音处理、语音合成及语音识别。

音频文件包括多种格式的文件,MP3就是其中的一种。MP3的全称是Moving Picture Experts Group,Audio Layer Ⅲ,它所使用的技术是在VCD(MPEG-1)的音频压缩技术上发展出的第三代,而不是MPEG-3。MP3是一种音频压缩的国际技术标准,它一般需要MP3播放器来读取。

一、课程设计的目的与要求

1、目的

利用VC++开发一个支持wav、mp3、wma等不同音频格式的媒体播放器。通过课程设计掌握多媒体编程的基本原理。

2、任务

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

2)给出程序的总体设计和详细设计,要求程序总体架构图、详细设计的流程图,函数、变量说明等

3)给出程序运行、测试的详细结果。

二、方案实现与调试

 总体设计

1 实现功能

MP3播放器主要对常用Windows音频格式的文件实现播放控制:播放歌曲、暂停播放、停止播放等;实现音量控制:静音、声音放大以及声音减小的功能。

2 功能模块图

图-1 系统功能模块图

详细设计

1 界面布局设计

(1) 创建一个对话框类,类名为Mp3PlayerDlg。

(2) 向对话框中添加Group Box控件、Static Text控件以及按钮控件。

(3) 设置所添加的控件的属性。

系统界面的运行结果图如图-2所示。

图-2 系统界面运行结果图

Mp3Player对话框中所用控件的属性描述如表-1所示。

表-1 对话框控件ID及其描述

控件ID

描述
IDC_STATIC_INFO_WNDGroup Box控件,用来显示“信息窗口”

IDC_STATIC_INFOStatic Text控件,用来显示各种信息

IDC_STATIC_OPERATIONGroup Box控件,用来显示“操作面板”

IDC_BUTTON_OPEN按钮控件,单击它用来选择歌曲
IDC_BUTTON_PLAY按钮控件,单击它用来播放歌曲
IDC_BUTTON_PAUSE按钮控件,单击它用来暂停播放歌曲
IDC_BUTTON_STOP按钮控件,单击它用来停止播放歌曲
IDC_BUTTON_VOLUME按钮控件,单击它用来设定音量
IDC_BUTTON_QUIT按钮控件,单击它用来退出程序
2 各模块功能设计

2.1 处理“打开”按钮

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

2.2 处理“播放”按钮

单击“播放”按钮后,在OnButtonPlay()函数中,通过调用MCIMP3类的MCIOpen()函数获取刚才选择的文件路径以及文件名,调用该类的MCIPlay()函数播放歌曲,此时调用DisplayInfo()函数在Static Text控件上显示“正在播放的歌曲是(文件名)”,进行歌曲的播放,然后利用GetDlgItem()函数设置“播放”按钮不可用。

2.3 处理“暂停”按钮

单击“暂停”按钮后,在OnButtonPause()函数中,首先通过调用MCIMP3类的MCIPause()函数暂停正在播放的歌曲,然后调用DisplayInfo()函数在Static Text控件上显示“暂停播放歌曲(文件名)”,此时的歌曲处于暂停时的进度上,利用GetDlgItem()函数设置“播放”按钮可用。

2.4 处理“停止”按钮

单击“停止”按钮后,在OnButtonStop()函数中,首先通过调用MCIMP3类的MCIPause()函数停止正在播放的歌曲,然后调用DisplayInfo()函数在Static Text控件上显示“停止播放歌曲(文件名)”,将停止正在播放歌曲,利用GetDlgItem()函数设置“暂停”按钮和“停止”按钮不可用。

2.5 处理“音量”按钮

单击“音量”按钮后,在OnButtonVolume()函数中,首先调用WinExec()函数并且打开C:/WINDOWS/System32/sndvol32.exe,弹出“主音量”对话框,在此对话框内可以对音量进行增大或减小以及静音的设置。

2.6 处理“退出”按钮

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

3操作步骤

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

2)打开资源视图,在对话框内按照布局图布局,步好后根据表-1来设置属性。添加相应的变量和函数。

3)进行程序初始化。

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

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

三、课程设计分析与总结

分析

     按照课程设计的要求,我们用C/C++来实现功能,但由于我们在学过面向对象后,我们常用的是Visual Studio 2010版本的VS编辑器。在分析所要做的播放器时,想到的最基本的功能就是可以播放音乐,其次就是对播放过程中的操作,如:快进或快退、上一曲或下一曲、播放/暂停、音量大小、选择和添加歌曲、播放界面选择……等等功能。但是,由于学识有限,我们在这一周的时间内没有去考虑这么多功能,所以对于这样一个播放器,还是存在很多的改进方案。那么只有在以后的探索中慢慢来实现了。

                    

总结

经过一周的面向对象程序课程设计,我学到了很多。在这一周的实际动手学习中,我对VC++这门课程有了更深刻的认识,掌握了用MFC创建基于对话框的应用程序,同时了解了MCI相关知识。这次课程设计我做了MP3播放器的设计,MP3播放器主要对常用Windows音频格式的文件实现播放控制:播放歌曲、暂停播放、停止播放等;实现音量控制:静音、声音放大以及声音减小的功能。

本次课程设计中虽然可以实现播放、暂停、停止、播放界面美化以及音量等功能,但仍然存在着放多不足,比如进度条功能没有实现、列表管理的功能以及循环播放功能始终无法实现,如果有时间一定会好好研究。

课设是辛苦劳累的,但是收获同样是巨大的,在课设中每解决一个问题,那种成就感是无法言语的,课设中第一次调试程序时出现了很多错误,其中有逻辑错误,编译能通过,运行始终无法通过,后来经过思考,进行了多次修改调试之后得到了运行结果;但是还是存在兼容性问题,电脑版本和系统以及软件的版本之间存在各种兼容性问题,因为之前在程序中几乎没见到过,所以一时不知从何处检查并改进,后来在老师的帮助下,找到了问题,结果换了台电脑,经过改正调试最终达到了目的。像此类的问题还有很多,不过经过查询资料,咨询老师,与同学探讨最终得到了理想的程序。此外,我还得到了一个结论,在课程设计中,老师的作用有时是不可或缺的,可以在关键时刻给我们一些重要的提示,从而方便我们解决各种问题。这就是我对这次软件课程设计的总结。

附录 

关键程序清单

  BOOL CMp3PlayerDlg::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

        // TODO: Add extra initialization here    

    DisplayInfo(0,_T("欢迎使用Mp3Player!"),_T(""));

GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);

GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(FALSE);

GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE);

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

}

void CMp3PlayerDlg::OnButtonOpen()    //打开

{

    // TODO: Add your control notification handler code here

    char szFileFilter[]="All Music Files(*.*)|*.*||"; 

    CFileDialog FileOpenDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter/*, this*/);

    if( FileOpenDlg.DoModal() == IDOK )

    {

        m_csPathName = FileOpenDlg.GetPathName();

        m_csSongName = FileOpenDlg.GetFileName();

        DisplayInfo(1,_T("你选择的歌曲是:"),m_csSongName);

        m_bIsOpened = TRUE;    

        m_bIsNoSelectFile = FALSE;

    }

    else

    {

        m_bIsNoSelectFile = TRUE;

    }

    if (m_bIsOpened && m_mcimp3.MCIIsPlaying())

    {

        m_mcimp3.MCIClose();        

        m_mcimp3.MCIStop();

    }

    if (m_bIsOpened && m_mcimp3.MCIIsPlaying() 

        && m_bIsNoSelectFile)

    {        

        m_mcimp3.MCIResume();

    }

    if (m_bIsOpened && m_bIsPressPauseBtn)

    {

        m_bIsPauseOpen = TRUE;

    }

BOOL bIsPlayBtnEnabled = GetDlgItem(IDC_BUTTON_PLAY)->IsWindowEnabled();

    if (!bIsPlayBtnEnabled)

    {

        GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(TRUE);

    }    

}

void CMp3PlayerDlg::OnButtonPlay()    //播放

{

    // TODO: Add your control notification handler code here            

    if (m_bIsPauseOpen)

{

        if (m_bIsNoSelectFile)

        {

            m_mcimp3.MCIResume();

            DisplayInfo(1,_T("继续播放歌曲:"),m_csSongName);

            m_bIsPressPauseBtn = FALSE;

        }

        else

        {

            m_mcimp3.MCIOpen(m_csPathName);

            m_mcimp3.MCIPlay();    

            DisplayInfo(1,_T("正在播放的歌曲是:"),m_csSongName);            

            GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);

            m_bIsNoSelectFile = TRUE;

        }

    }

    else if (m_bIsOpened && m_bIsPressPauseBtn)

    {

        m_mcimp3.MCIPlay();

        DisplayInfo(1,_T("继续播放歌曲:"),m_csSongName);

        m_bIsPressPauseBtn = FALSE;

        GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);

    }

    else

    {

        if (m_bIsNoSelectFile)

        {

            DisplayInfo(0,_T("你还没有选择歌曲,点击播放没有意义!"),_T(""));

            return;

        }

        m_mcimp3.MCIOpen(m_csPathName);

        m_mcimp3.MCIGetLength(&m_dwLen);

        m_mcimp3.MCIPlay();    

        SetTimer(1, 1000, NULL);

        DisplayInfo(1,_T("正在播放的歌曲是:"),m_csSongName);

        m_bIsPressStopBtn = FALSE;

        GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);

    } 

        BOOL bIsPauseBtnEnabled = GetDlgItem(IDC_BUTTON_PAUSE)->IsWindowEnabled();

    if (!bIsPauseBtnEnabled)

    {

        GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(TRUE);

    }

BOOL bIsStopBtnEnabled = GetDlgItem(IDC_BUTTON_STOP)->IsWindowEnabled();

    if (!bIsStopBtnEnabled)

    {

        GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(TRUE);

    }

}

void CMp3PlayerDlg::OnButtonPause()        //暂停

{

    // TODO: Add your control notification handler code here

    BOOL bIsPlaying = m_mcimp3.MCIIsPlaying();

    if (bIsPlaying)

    {

        m_mcimp3.MCIPause();

        DisplayInfo(1,_T("暂停播放歌曲:"),m_csSongName);

    m_bIsPressPauseBtn = TRUE;

    }

BOOL bIsPlayBtnEnabled = GetDlgItem(IDC_BUTTON_PLAY)->IsWindowEnabled();

    if (!bIsPlayBtnEnabled)

    {

        GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(TRUE);

    }

}

void CMp3PlayerDlg::OnButtonStop()       //停止

{

    // TODO: Add your control notification handler code here

    if (m_mcimp3.MCIStop()==0)    //停止播放

    {    

        m_bIsPressStopBtn = TRUE;

        m_bIsPressPauseBtn = FALSE;

        GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE);

        DisplayInfo(1,_T("停止播放歌曲:"),m_csSongName);

        m_mcimp3.MCIClose();

        GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(FALSE);

    }

        BOOL bIsPlayBtnEnabled = GetDlgItem(IDC_BUTTON_PLAY)->IsWindowEnabled();

    if (!bIsPlayBtnEnabled)

    {

        GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(TRUE);

    }

}

void CMp3PlayerDlg::OnButtonQuit()       //退出

{

    // TODO: Add your control notification handler code here

CDialog::OnCancel();

}

void CMp3PlayerDlg::OnButtonVolume()      //音量

{

    // TODO: Add your control notification handler code here

    WinExec( "C:\\\\WINDOWS\\\\System32\\\\sndvol32.exe", SW_NORMAL );    

}

void CMp3PlayerDlg::DisplayInfo(bool bOPInfo,CString csInfo,CString csSongName)

{

    if (!bOPInfo)

    {

        m_csInfo = csInfo;

    }

    else

    {

        m_csInfo = csInfo;

        m_csInfo += csSongName;

    }

        GetDlgItem(IDC_STATIC_INFO)->SetWindowText(m_csInfo);

}

void CMp3PlayerDlg::OnTimer(UINT nIDEvent) 

{

    // TODO: Add your message handler code here and/or call default

    if ( nIDEvent == 1)

    {        

        if ( 0 == m_dwLen )

        {

            KillTimer(1);

            DisplayInfo(1,_T("已经播放完歌曲:"),m_csSongName);  

            GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(FALSE);

            GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE);

            return;

        }

        m_dwLen--;

    }

        CDialog::OnTimer(nIDEvent);

}

参考文献

[1] 黄维通.Visual C++面向对象编程教程.第三版.北京:清华大学出版社,2011

[2] 侯俊杰.深入浅出MFC.第2版.广东:南方出版社,2007

[3] 严华峰等.Visual C++课程设计案例精编.北京:中国水利水电出版社,2004

[4] 王维玉等.Visual C++高级编程技术精粹.北京:科学出版社,2008

[5]陈国建等.Visual C++范例开发大全.北京:清华大学出版社,2010

文档

MP3音乐播放器软件课程设计报告(MFC)

课程设计说明书课程设计名称:软件综合课程设计课程设计题目:音频播放器程序的设计与实现学院名称:信息工程学院电子信息工程专业课程设计任务书题目内容及要求1、设计题目:MP3播放器的设计2、设计内容及要求:利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个MP3播放器。要求能够播放常用Windows音频格式的文件;实现播放控制:播放、暂停、停止等;实现音量控制:静音、声音放大减小;实现播放列表管理:加入文件、加入目录、删除文件等功能。进度安排2月17日:完成需求分析,确定程序功能,确立程序
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top