多媒体播放器 课程设计报告.docx
- 文档编号:11134699
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:14
- 大小:157.69KB
多媒体播放器 课程设计报告.docx
《多媒体播放器 课程设计报告.docx》由会员分享,可在线阅读,更多相关《多媒体播放器 课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
多媒体播放器课程设计报告
(设计标题)
多媒体播放器
用户签名:
开发成员:
孟凡林
开发时间:
2010—12-23
目录
0引言3
1工作计划3
1.1主要工作阶段划分3
1.2工作任务分工3
2需求分析3
2.1概述3
2.2用户分析4
2.3约束条件4
2.4功能需求4
2.5用户界面需求4
3设计与实现4
3.1概述4
3.2详细设计5
3.1.1类的抽象及设计5
3.3主要程序文件5
3.4开发环境以及部署环境要求6
3.5主要源码6
4测试10
4.1概述10
4.2测试环境10
4.3测试计划10
4.4测试项目及结果10
5、工作总结11
5.1工作成果11
5.2过程分析12
5.3经验教训及其分析12
0引言
现在人们娱乐的方式多种多样,已经有了很明显的变化,以前的户外运动现在已经在锐减,换而之的是网络游戏与网上聊天,而在同时听听音乐看看电影也成为了巨大的需求,所以很多多媒体播放软件出现了,形形色色各种都有,而我也赶下时髦,体验一下编写的过程,现在才发现这并不难,重要的是插件的插入,而其他的功能实现只需调用相应函数就行了!
1工作计划
1.1主要工作阶段划分
12月20—21
搜索相关资料,学习基础知识,大致设计框架
12月22—23
考虑所用到的数据结构,函数及其作用,做较为细致的分析
12月24日
设计开始,仔细设计!
12月26
写报告
(用表格或图表的形式列出你们小组各个阶段的时间进度大致安排)
1.2工作任务分工
阶段名称
任务名称
任务描述
负责人
协助人
1234
全部
编写软件
孟凡林
孟凡林
2需求分析
2.1概述
1)到网上或图书馆查找相关系统函数实现相应的功能;
2)使用MFC构建相应的用户界面
2.2用户分析
1)要求有稳定的性能,可实现要求的功能;
2)拥有较好的界面,很方便人操作!
2.3约束条件
(作为开发人员的,通常你的小组的工作时间和人员是一个明显约束;另外站在用户的角度,他们对你有什么约束要求,请从这两个角度进行陈述。
)
2.4功能需求
能够打开文件放进播放列表,点击播放键使其播放,暂停键暂停,停止键停止,重播键重新播放,全屏键全屏播放,退出键退出程序,增大键增大音量,减小键减小音量!
2.5用户界面需求
3设计与实现
3.1概述
使用MFC构建相应的用户界面,实现相应的功能----------能够打开文件放进播放列表,点击播放键使其播放,暂停键暂停,停止键停止,重播键重新播放,全屏键全屏播放,退出键退出程序,增大键增大音量,减小键减小音量,然后向其中加入各个函数实现相应的功能!
3.2详细设计
3.1.1类的抽象及设计
1)控件activemovie3类,主要用来播放各种类型的文件,其封装的各种成员函数使其成为MFC设计播放器必不可少的控件类;
2)对话框基类cDlg类,及其派生类:
(a)控件repeatbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时再次播放打开的文件;
(b)控件copenbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时提供资源管理器供用户选择文件;
(c)控件playbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时播放打开的文件;
(d)控件pausebtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时暂停播放打开的文件;
(e)控件lowerbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时减小播放音量;
(f)控件upperbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时增大播放音量
(g)控件stopbtn类,作为播放器打开文件的消息响应媒介,能够做到被点击时停止播放打开的文件;
(h)控件fullscreen类,作为播放器打开文件的消息响应媒介,能够做到被点击时全屏播放打开的文件;
至于其他的,当我们使用MFC编程时,会有很多封装的类供我们使用,所以就不一一列举了!
3.3主要程序文件
1)头文件(为类加入相应的标准流,库):
Activemovie3.h-------控件;
stdafx.h-----框架构成;
多媒体.h-----多媒体的应用;
多媒体Dlg.h------对话框;
resourse.h-----为多媒体.rc服务!
2)源文件(完成各种类的定义与实现):
Activemovie3.cpp-------控件;
stdafx.cpp-----框架构成;
多媒体.cpp----多媒体的应用;
多媒体Dlg.cpp------对话框;
多媒体.rc-----运行过的效果!
3.4开发环境以及部署环境要求
1)
Vs2010;
2)
3.5主要源码
1)打开文件
voidCMyDlg:
:
OnOpenButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringstrFilter="Mp3File(*.mp3)|*.mp3|";
strFilter+="MPEGFile(*.mpg;*.mpeg)|*.mpg;*.mpeg|";
strFilter+="WaveFile(*.wav)|*.wav|";
strFilter+="AVIFile(*.avi)|*.avi|";
strFilter+="AllFile(*.*)|*.*|";//过滤适当的文件必须以0区分,以00结束,否则会出现参数不正确
CFileDialogdlgOpen(TRUE,NULL,NULL,OFN_PATHMUSTEXIST|OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,strFilter,this);//为CFileDialog定义对象
DWORDMAXFILE=2412;//分配足够空间
dlgOpen.m_ofn.nMaxFile=MAXFILE;//设置buffer的大小
CStringstrFileName;
char*buf=newchar[MAXFILE];//分配空间
dlgOpen.m_ofn.lpstrFile=buf;
dlgOpen.m_ofn.lpstrFile[0]=NULL;//赋值
if(IDOK==dlgOpen.DoModal())
{
POSITIONpos=dlgOpen.GetStartPosition();
while(pos!
=NULL)
{
strFileName=dlgOpen.GetNextPathName(pos);
//获取独立文件名
m_list1.InsertString(m_list1.GetCount(),strFileName);//加至播放列表
}
}
delete[]buf;//释放空间
}
2)播放文件
voidCMyDlg:
:
OnPlayButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_ActiveMovie.Run();//播放文件
SetTimer(0,20,NULL);//设置定时器
}
3)暂停播放
voidCMyDlg:
:
OnPauseButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_ActiveMovie.Pause();
}
4.停止播放
voidCMyDlg:
:
OnStopButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_ActiveMovie.Stop();//停止播放文件
KillTimer(0);//关掉定时器
}
5.重复播放
voidCMyDlg:
:
OnReapetButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(!
isRepeat)
{
isRepeat=TRUE;
SetDlgItemText(IDC_STATIC2,"Status:
Repeat");
}
else{
isRepeat=FALSE;
SetDlgItemText(IDC_STATIC2,"Status:
Normal");
}
}
6.增大声音
voidCMyDlg:
:
OnUpperButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
longVolume=m_ActiveMovie.GetVolume();
m_ActiveMovie.Pause();
m_ActiveMovie.SetVolume(Volume+100);
m_ActiveMovie.Run();
}
7.减小声音
voidCMyDlg:
:
OnLowerButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
longVolume=m_ActiveMovie.GetVolume();
m_ActiveMovie.Pause();
m_ActiveMovie.SetVolume(Volume-100);
m_ActiveMovie.Run();
}
8.全屏播放
voidCMyDlg:
:
OnFullButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_ActiveMovie.Pause();
m_ActiveMovie.SetFullScreenMode(true);
m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);
m_ActiveMovie.Run();
}
9.关闭窗口
voidCMyDlg:
:
OnCloseButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_ActiveMovie.CloseWindow();²
}
10.退出
voidCMyDlg:
:
OnClickedExitButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
PostQuitMessage(0);//;
}
4测试
4.1概述
1)打开文件(从曲库中找出歌曲加入列表中)
2)播放,暂停,停止,全屏显示,停止,重播(activemovie实现功能)
4.2测试环境
1)
2)vs2010
4.3测试计划
1)打开文件
2)播放及各种键的使用
3)多次运行,检查稳定性
4.4测试项目及结果
1)打开文件
2)
5、工作总结
5.1工作成果
工作成果不是很明显,因为我自作自受,霉运连连让我乱了阵脚,最后的一个大悲剧直接把我将死了!
我没有编写出来一个成功的程序,以失败告终!
我完了,Oh,myGod!
5.2过程分析
唉!
因为自己眼光不够敏锐,没有选择正确的题目,一开始选择了邮件收发程序,当框架做好以后,开始实现各种功能了,才发现自己并不明白MAPI是怎么一回事,到处查也不是很会用,协议更没搞清楚,而且也不知道应该调用哪个系统函数来实现附件的添加,并且第三步由于协议问题也没头绪,联想到上学期做了好久也没搞出个好程序的经验,我就果断放弃了,改做文件编辑,结果又是因为搞不清怎么调出资源管理器搞的头皮发麻,最后又是悲剧的放弃了,现在一想都后悔啊!
意志太不坚定了,就那么个小困难就把我给吓到了,唉!
折腾了两天半已经是星期三的下午了,眼看期限快到了,我没办法,急得要命,没办法,这时候想起来老师曾经说过网上的媒体播放器很多,于是就到网上去搜了一个,结果一弄。
唉!
问题又出来了,我的机子里没装那个activemovie控件,又搜了一下,找到插入控件的方法,使用运行命令插入了控件,但还是没有,又一搜,哎呀,真悲剧,2010版中找不到插入那个控件的方法。
怎么办,怎么办?
可急死我了,最后无奈到机房插入了那个控件,一点一点的加入了各个按钮,然后添加上了各种函数,谁知这时桌面突然显示,请输入用户名和密码,咋回事?
唉!
又悲剧了,钱用完了?
Oh,myGod,不是吧?
我还没保存那!
然后,一翻衣兜,哎,没钱,怎么办?
没办法,第二天,再次走入机房,这次聪明了,只弄了个插件,回到宿舍,因为高版本肯定能兼容低版本,所以继续用2010版的完善其它工作,最后大功告成,一运行,不行,参数数目不对。
这时,我们班回来了一个人,说老师在为我们开了一教室2402,于是我下午就去问老师您,结果老师您一下子来了句抄的,一下子把我给弄晕了!
哎呀,老师真厉害呀,一眼就看出来了,但是当我回来以后又运行还是无效的参数数目,
并没有那个错误,还是不行啊!
我彻底无奈了,仔细查找各种可能,但始终解决不了,最后只得放弃,听取命运的宣判,最后竟然还是让我找出来错误在哪,我要崩溃了,不过还是强忍着回到宿舍,继续我的寻错之旅!
唉,加油!
哈哈!
找到了,原来使用VS2010之后再用VC++6.0会出现缺少文件,不能兼容。
而其中有一段
CStringPathName=dlgOpen.GetPathName();
PathName.MakeUpper();
m_ActiveMovie.SetFileName(PathName);
中有非法字符很难运行,所以会出现参数数目不正确!
5.3经验教训及其分析
(1)真是不经历不知道,我现在才发现自己的基础是那么的薄弱,MFC的各种控件的使用方法都不是很熟,尤其是列表框,无论怎么学,使用什么方法,都弄不了,真是愁煞我也。
本来在文件编辑放弃以后,做了多媒体播放器,我突然发现了调出资源管理器并选择的方法,但是因为listbox不太会用,不能使用它打开文件,所以只得放弃,今天一个上午的努力也白费了!
以后一定要极爱按基础的扎实,为以后的编程提供巨大的方便!
(2)以后做事要做好全局的规划,决定好了之后就不要轻易的改变,否则会误了大事,这让我想到了那个挖井的故事,这儿挖一点挖不出水就不挖了,那儿挖不出水也不挖了,最后挖了好多地方,还是没有挖出来一滴水,所以做什么事都是浅尝辄止的话,最后是成不了大事的!
就比如说我这次,做了很多却一个也没做成,最后老师还不满意。
还不如一直做第一个那,起码来说不会去抄啊!
(3)还有,以后千万不能从网上直接拷代码了,或者说一旦复制就不能做丝毫的改动,否则会出现好多错误,只得一顶一点改回去!
(4)通过这次课设,我学会了很多,应该说很熟练的掌握了MFC控件的添加与使用,也对使用MFC的各种控件驾轻就熟了,外也学会了一定的调试技巧,感觉收获颇丰,而遗憾的是自己未能独立的完成一个项目!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多媒体播放器 课程设计报告 多媒体 播放 课程设计 报告