




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京信息工程大学 实验(实习)报告实验(实习)名称 详细设计 实验(实习)日期 2011.5.20 得分 指导教师 李振宏 滨江学院 专业 网络工程 年级 大三 班次 二班 姓名 杨武 学号 20102346066一、实验目的1通过对所选题目进行详细设计,掌握算法的设计方法与算法的描述;2掌握常用算法描述工具的使用;3. 完成一个小型软件系统的算法设计。二、实验准备1. 熟悉算法描述工具的使用三、实验要求完成可换肤MP3播放器的设计与实现的详细设计,提交实验报告。四、实验内容:1. 背景多媒体技术的概念和应用出现于20世纪80年代初期,经过十余年的发展,随着计算机科学网络的普及和多媒体技术的发展,已成为计算机领域发展的热点技术,针对目前各种媒体格式,如何简单方便的播放各类媒体已成为人们普遍关注的问题,而媒体播放器的开发也变得十分重要。本课程设计就是基于面向对象的, 利用vc+6.0开发出适合AVI的多媒体播放器。该播放器是基于MFC集成开发环境,利用系统的MCI(media controller interface)命令接口来编程,具有体积小,支持的播放格式多、系统资源占用少、支持播放列表编辑等功能优势。2. 程序(模块)系统的组织结构 3. 界面设计要求图形界面mp3播放器。根据常识来看,打开软件后,会出现图形界面,然后点击图形界面,选择mp3文件,点击开始,即可播放了。程序编写完毕,编译、运行,用户即可看到一个美观大方的简单MP3播放器。当程序运行时,Mp3播放起将会实现其播放功能,它能实现播放WAV、MID、MP3、VCD、AVI、CD、MPEG等全部Windows音频格式的文件,运行界面。4 本软件系统中各程序(模块)的设计说明 1、处理“打开”按钮 单击“打开”按钮后,在OnButtonOpen()函数中,首先对文件类型进行过滤,调用DoModa() 函数打开对话框选择一个媒体文件,通过GetPathName()函数获取文件路径,通过 GetFileName()函数获取文件名后,调用DisplayInfo()函数在Static Text控件上显示“你选择的歌曲是(文件名)”,然后利用GetDlgItem()函数设置“暂停”按钮以及“停止”按钮不可用。 先点击打开按钮,弹出如下图对话框: void CActiveMovie3:OnOpen() char szFileFilter= Mp3 File(*.mp3)|*.mp3| Wma File(*.wma)|*.wma| Video File(*.dat)|*.dat| Wave File(*.wav)|*.wav| AVI File(*.avi)|*.avi| Movie File(*.mov)|*.mov| Media File(*.mmm)|*.mmm| Mid File(*.mid;*,rmi)|*.mid;*.rmi| MPEG File(*.mpeg)|*.mpeg| All File(*.*)|*.*|;/文件类型过滤CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); if(dlg.DoModal()=IDOK) CString PathName=dlg.GetPathName(); PathName.MakeUpper(); m_ActiveMovie.SetFileName(PathName); 打开文件以及对文件的处理之类的函数控制 #if !defined(AFX_PLAYERDLG_H_FE3B843D_BE0F_46C6_9038_4AA6AA8032A8_INCLUDED_) #define AFX_PLAYERDLG_H_FE3B843D_BE0F_46C6_9038_4AA6AA8032A8_INCLUDED_ #if _MSC_VER 1000 #pragma once #endif / _MSC_VER 1000 / / CPlayerDlg dialog #includemmsystem.h class CPlayerDlg : public CDialog / Construction public: int hour,minute,second;/时间变量:小时、分钟、秒钟 DWORD cdlen;/某个音频文件的总时间长度 DWORD m_count;/设备型号 void Tplay(); Void Thide(); void Tdehide(); void forfor(); void forfor1(); DWORD getinfo(DWORD item); CString aa;/当前播放文件的路径 CString file255;/存放所有待播放文件路径名的字符串数组 CString file1255;/存放所有待播放文件路径名的字符串数组1 int fi,fr;/歌曲文件列表中,当前歌曲所在位置及最后一首歌曲所在的位置 DWORD cdfrom,cdto; /歌曲的起点和终点 CBitmapButton m_bexit; CBitmapButton m_bmim; CBitmapButton m_bhelp; CBitmapButton m_play; CBitmapButton m_stop; CBitmapButton m_open; CBitmapButton m_rp; CBitmapButton m_pop; CBitmapButtonm_next; CBitmapButtonm_sdel; CBitmapButtonm_per; CBitmap m_bg,m_bg1; BOOL m_flag,m_flag1,m_flag2,m_flag3;/各个控件的状态标志 CPlayerDlg(CWnd* pParent = NULL);/ standard constructor 对播放器的整体结构进行模块的总体设计 / CAboutDlg dialog used for App About /进行程序主界面的初始化,并向控件中添加Bitmap图 BOOL CPlayerDlg:OnInitDialog() . SetWindowText(MCI播放器); /程序主界面在屏幕中的位置,及主界面的大小 MoveWindow(200,200,303,103); /加载程序背景图片 m_bg.LoadBitmap(IDB_BITMAPBG); /以下部分是在控件上加载图片 m_play.LoadBitmaps(IDB_BITMAPPLAY1,IDB_BITMAPPLAY3); m_stop.LoadBitmaps(IDB_BITMAPSTOP1,IDB_BITMAPSTOP3); m_open.LoadBitmaps(IDB_BITMAPOPEN1,IDB_BITMAPOPEN3); m_bhelp.LoadBitmaps(IDB_BITMAPHELP1,IDB_BITMAPHELP2); m_bmim.LoadBitmaps(IDB_BITMAPMIM1,IDB_BITMAPMIM2); m_bexit.LoadBitmaps(IDB_BITMAPEXIT1,IDB_BITMAPEXIT2); m_rp.LoadBitmaps(IDB_BITMAPRP1,IDB_BITMAPRP2); m_pop.LoadBitmaps(IDB_BITMAPC,IDB_BITMAPD); m_pop.LoadBitmaps(IDB_BITMAPA,IDB_BITMAPB); m_per.LoadBitmaps(IDB_BITMAPPER1,IDB_BITMAPPER2); m_next.LoadBitmaps(IDB_BITMAPNEXT1,IDB_BITMAPNEXT2); m_sdel.LoadBitmaps(IDB_BITMAPDEL1,IDB_BITMAPDEL2); . /在程序的主界面上显示控件 void CPlayerDlg:OnPaint() if (IsIconic()/ 判断是否为程序的主界面 /以下部分有Visual C+自动生成 CPaintDC dc(this); SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); 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; dc.DrawIcon(x, y, m_hIcon); else /画笔工作区 CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); BITMAP bitMap; m_bg.GetBitmap(&bitMap); CBitmap *pbmpOld=dcMem.SelectObject(&m_bg); dc.StretchBlt(0,0,502,rect.Height(),&dcMem,0,0,bitMap.bmWidth, bitMap.bmHeight,SRCCOPY);/利用位图填充应用程序的界面 /添加控件,设定主界面上控件的位置和大小 m_bexit.MoveWindow(284,0,19,19,false); m_bmim.MoveWindow(263,0,19,19,false); m_bhelp.MoveWindow(242,0,19,19,false); m_play.MoveWindow(13,60,40,40,false); m_stop.MoveWindow(55,68,30,30,false); m_open.MoveWindow(93,65,30,30,false); m_rp.MoveWindow(133,68,30,30,false); m_pop.MoveWindow(282,22,20,78,false); m_per.MoveWindow(170,60,40,40,false); m_next.MoveWindow(200,60,40,40,false); m_sdel.MoveWindow(484,30,18,40,false); CPlayerDlg:CPlayerDlg(CWnd* pParent /*=NULL*/) : CDialog(CPlayerDlg:IDD, pParent) (10) 实现弹出关于对话框的功能void CActiveMovie3:About() CAboutDlg aboutDlg; /定义变量 aboutDlg.DoModal(); /弹出关于对话框 2 处理“播放”按钮 单击“播放”按钮后,在OnButtonPlay()函数中,通过调用MCIMP3类的MCIOpen()函数获 取刚才选择的文件路径以及文件名,调用该类的MCIPlay()函数播放歌曲,此时调用 DisplayInfo()函数在Static Text控件上显示“正在播放的歌曲是(文件名)”,进行歌曲的播 放,然后利用GetDlgItem()函数设置“播放”按钮不可用。 为了循环播放,我们利用定时器来工作,采用OnTimer()函数来激活定时器: void CActiveMovie3:OnTimer(UINT nIDEvent) CString m_filename; /定义文件变量 double CurPos=m_ActiveMovie.GetCurrentPosition(); /获得播放位置 if(CurPos= = 0) m_list.SetCurSel(0); /选择列表框的第一个文件 m_list.GetText(0,m_filename); m_ActiveMovie.SetAutoStart(1); /设置自动播放 m_ActiveMovie.SetFileName(m_filename); /设置文件 m_ActiveMovie.Run(); /播放 m_list.GetCurSel(); /获得播放文件 m_list.InsertString(-1,m_filename); /插入列表框最后 m_list.DeleteString(0); /删除用过的文件 CDialog:OnTimer(nIDEvent); (3)循环控制函数oid CMediaPlayerDlg:OnRepeat() /循环控制函数,实现对循环的控制功能 if(!isRepeat) /判断是否正在循环 SetTimer(1,2000,NULL); /设置循环的标志为1,循环间隔为2秒 isRepeat=TRUE; /将循环变量设为TURE SetDlgItemText(IDC_STATIC2,模式:循环); /将静态文本显示为循环模式 else KillTimer(1); /停止标志为1的循环 isRepeat=FALSE; /将循环变量设为FALSE SetDlgItemText(IDC_STATIC2,模式:普通); /将静态文本显示为普通模式 (4)全屏播放功能调用了m_ActiveMovie.SetMovieWindowSize函数,代码如下: void CActiveMovie3:OnFulscreeen() /全屏函数,实现全屏播放视频的功能 m_ActiveMovie.Pause(); /暂停播放 m_ActiveMovie.SetFullScreenMode(true); /设置全屏播放属性为真,即开启全屏播放 m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED); /设置播放窗口大 小为最大 m_ActiveMovie.Run(); /继续播放 (5)查询歌曲代码如下: void CActiveMovie3:OnChaxun() CSongSet cSet; UpdateData(); m_Edit1.TrimLeft(); if(m_Edit1.IsEmpty() MessageBox(要查询的歌曲不能为空!); return; CSongDlg dlg; cSet.m_strFilter.Format(歌曲名称=%s,m_Edit1); cSet.Open(); if(!cSet.IsEOF()/如果打开的记录集有记录 CSongDlg dlg; dlg.m_Gequ =cSet.m_GeQu; dlg.m_Geshou =cSet.m_GeShou; dlg.m_Zuoci =cSet.m_ZuoCi; dlg.m_Zuoqu =cSet.m_ZuoQu; dlg.m_Zhuanji =cSet.m_ZhuanJi; dlg.DoModal(); UpdateData(FALSE);/自动更新表单中控件显示的内容 else MessageBox(没有查到你要找的歌曲记录!); if(cSet.IsOpen()cSet.Close(); void CActiveMovie3:OnTianjia() / TODO: Add your control notification handler code here CSongDlg dlg; CSongSet pSet; if(dlg.DoModal()=IDOK) pSet.Open(); pSet.AddNew(); pSet.m_GeQu =dlg.m_Gequ; pSet.m_GeShou =dlg.m_Geshou; pSet.m_ZhuanJi =dlg.m_Zhuanji; pSet.m_ZuoCi =dlg.m_Zuoci; pSet.m_ZuoQu =dlg.m_Zuoqu; pSet.Update(); pSet.Requery(); (6)循环控制函数 void CActiveMovie3:OnRepeat() /循环控制函数,实现对循环的控制功能 if(!isRepeat) /判断是否正在循环 SetTimer(1,2000,NULL); /设置循环的标志为1,循环间隔为2秒 isRepeat=TRUE; /将循环变量设为TURE SetDlgItemText(IDC_STATIC2,模式:循环); /将静态文本显示为循环模式 else KillTimer(1); /停止标志为1的循环 isRepeat=FALSE; /将循环变量设为FALSE SetDlgItemText(IDC_STATIC2,模式:普通); /将静态文本显示为普通模式 3 处理“暂停”按钮 单击“暂停”按钮后,在OnButtonPause()函数中,首先通过调用MCIMP3类的MCIPause() 函数暂停正在播放的歌曲,然后调用DisplayInfo()函数在Static Text控件上显示“暂停播 放歌曲(文件名)”,此时的歌曲处于暂停时的进度上,利用GetDlgItem()函数设置“播 放”按钮可用。 增加按钮 “播放” void CActiveMovie3:OnPlay() m_ActiveMovie.Run();/播放文件 SetTimer(0,20,NULL);/设置定时器 void CActiveMovie3:OnStop() m_ActiveMovie.Stop();/停止播放文件 KillTimer(0);/关掉定时器 4 处理“停止”按钮 单击“停止”按钮后,在OnButtonStop()函数中,首先
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025房地产项目认筹合作开发与分成协议
- 2025标准托盘租赁与智能化调度服务合同
- 2025版私人餐厅连锁经营区域代理承包合同
- 2025年不良资产投资分析与风险评估服务合同范本
- 2025年新型防雷设施维护与保养服务合同
- 贵州省剑河县2025年上半年事业单位公开遴选试题含答案分析
- 2025版水电工程水电材料采购与运输服务合同范本
- 2025版汽车油箱配件供应协议
- 2025版创新科技行业员工劳动合同模板
- 2025版连锁便利店店铺承包合作协议书
- 2025年北京高端商务车租赁及全程安全保障合同
- 2025版电商平台入驻及佣金分成合作协议
- 中国黄金集团招聘面试经典题及答案
- 2025年智能家居产业互联互通标准与产业发展现状及问题研究报告
- 感染性心内膜炎术后护理查房
- 家校携手同行砥砺奋进未来高二下学期期中家长会
- 2025年领导干部政治理论知识必考题库及答案
- 2025年提取公积金租房合同范本
- 推理能力题目及答案
- 2025年湖南省社区工作者招聘考试(公共基础知识和写作)历年参考题库含答案详解(5套)
- 2025年部编版新教材语文七年级上册教学计划(含进度表)
评论
0/150
提交评论