音乐播放器设计实习报告.docx
《音乐播放器设计实习报告.docx》由会员分享,可在线阅读,更多相关《音乐播放器设计实习报告.docx(14页珍藏版)》请在冰豆网上搜索。
音乐播放器设计实习报告
《.net技术》实习报告
带智能关机和查看日历功能的音乐播放器设计
班级:
电子信息工程01班指导老师:
林**
姓名:
高乐顺学号:
**********
设计时间:
2010年12月20日至2010年12月30日
正文开始
设计目的:
很多人在使用播放器的时候下载的播放器软件总是比较大,一般软件较大的打开就会比较慢,运行起来也没较小的软件运行的更“流畅“。
而且当我们使用播放器的时候或是只用电脑的时候我们有时会忘记关掉电脑就离开或是睡着了!
虽然电脑自带的操作系统也可以设置定时关机但比较麻烦,对电脑初学者更是不知道怎么使用操作系统设置定时关机啦!
还有就是我们电脑桌面下的时钟一般只显示了几点钟,并没有显示今天是多少号,所以在影月播放器中添加一个可以查看日历的功能是很必要的!
实现的功能:
在这里我就为大家设计一款小巧的音乐播放器,同时还带有智能关机功能,所谓智能关机就是你想怎么时候关机就什么时候关机,你想立刻关机就立刻关机,想定时关机就可以自己设置关机时间,设置方法非常的简单啦。
同时你只需要单击一下一个“三角图标键”(在下面还将结合图示提到)就可以看到日历表了,在日历表里你也可以选择查看你需要的那个月的日历表。
同时我也在播放器中添加了显示现在时钟的功能。
下面介绍一下我设计的播放器的所有功能:
首先你可以通过“添加文件夹”按钮添加你选择的文件夹内的所有音频文件,你也可以通过“添加文件”按钮单个添加你所要添加的音频文件,具体方法在下面我会给出截图加以说明,保证一看就懂,就会用。
添加音乐文件后你就可以在你的播放列表里看到你添加的歌曲名了。
你可以通过双击列表中的歌曲名进行播放你双击的歌曲或者单击选中列表中歌曲名后再单击播放按钮进行播放。
在播放时你可也看到正在播放的歌曲名和播放进度,这里的播放进度使用显示正在播放的歌曲“已经播放了多长时间”和这首歌要播放的“总时间”,还有就是上一曲、暂停、下一曲、停止,除实现播放的基本功能外,还有一个功能那就是我在上面给大家提到的“智能关机”
物体规则震动发出的声音称为“音乐”,由有组织的乐音来表达人们思想感情、反映现实生活的一种艺术就是音乐,音乐是一种符号,声音符号,表达人的所思所想,音乐能表达一个人的内心世,界音乐能是人快乐,能使人放松心情。
为了方便人们能够听到美丽的音乐,音乐播放器就成为我们的音乐大师了。
设计好的播放器运行时如下图:
实现设计的过程:
播放器功能图解:
操作流程图:
下面说明下我设计的具体步骤,我设计音乐播放器将采用WindowsMediaPlayer的编程接口和C#.NET编程技术,我使用VisualStudio2010作为开发工具。
要使用首先要具有c#.net的基本编程技术,然后然后下载VisualStudio2010作为开发工具,安装好后就可以开始编程了,打开VisualStudio2010新建项目中选择新建windows窗体,创建好窗体后首先从工具箱中向窗体添加“WindowsMediaPlayer”组件具体方法如下:
(1)“工具箱”右键“选择项(I)”
(2)在弹出的“选择工具箱项”对话框中选择“COM组件”选项卡。
(3)在COM组件列表中选择WindowsMediaPlayer,单击确定。
播放音乐主要采用的的是调用WindowsMediaPlayer接口,首先需要构造一个界面,在界面上创建如上图中的播放列表框控件(listbox)、和“上一曲”(button1)、“播放/暂停”(button2)、“下一曲”(button3)“停止”(button4)控件。
播放/暂停的代码如下:
PlayAndStop();再另定义一个方法如下:
privatevoidPlayAndStop()
{
index=this.listBox1.SelectedIndex;//获得当前选定的文件的索引
try
{
if(stop%2==0)
{
stringselectname=this.listBox1.SelectedItem.ToString();//获取选定的文件名
stringplayurl=playlist[selectname].ToString();
axWindowsMediaPlayer1.URL=playurl;
axWindowsMediaPlayer1.Ctlcontrols.currentPosition=currentPosition;//当前播放的进度
stop=stop+1;
axWindowsMediaPlayer1.Ctlcontrols.play();
currentPosition=0;
}
else
{
currentPosition=axWindowsMediaPlayer1.Ctlcontrols.currentPosition;//暂停时的进度
axWindowsMediaPlayer1.Ctlcontrols.pause();
stop=stop-1;
}
}
catch(Exception)
{
return;
}
}
停止的单击事件代码如下:
privatevoidbutton4_Click(objectsender,EventArgse)
{
axWindowsMediaPlayer1.Ctlcontrols.stop();
}
接下来添加一个trackBar控件作为声音调节控件。
代码如下:
axWindowsMediaPlayer1.settings.volume=this.trackBar1.Value;
另外还要在窗体的加载事件中设定这个控件的最小值和最大值,在下面的窗体事件中还会提到其代码的。
现在在窗体中添加一个groupBox组件,再在groupBox中添加添加“添加文件”、和添加“添加文件夹”控件。
在此button的cliect事件中首先调用FolderBrowserDialog创建一个实例,然后判断用户点击的按钮,如果是DialogResult.OK然后获得其绝对路径,然后创建一个FileInfo对象,然后获得该文件夹下扩展名为.mp3、.wma、、、.wMa的文件,然后把他们加载到播放列表中,部分代码如下:
在写代码之前还要记得添加一个openFileDialog组件。
部分过程图如下:
在使用num++之前请先定义,还有上面提到的stop也要先定义,可以在classForm1类中首先定义,
“添加文件”按钮代码:
privatevoidbutton5_Click(objectsender,EventArgse)
{
num++;//
openFileDialog1.Filter="mp3格式文件|*.mp3|wma文件格式|*.wma|所有D文件t|*";
openFileDialog1.Multiselect=true;
openFileDialog1.Title="请选择音频文件";
if(openFileDialog1.ShowDialog()==DialogResult.OK)
{
stringfilepath=this.openFileDialog1.FileName;
FileInfof=newFileInfo(filepath);
stringfilename=num.ToString()+"-"+f.Name;
playlist.Add(filename,filepath);
this.listBox1.Items.Add(filename);
}
“添加文件夹”按钮代码:
privatevoidbutton6_Click(objectsender,EventArgse)
{
folderBrowserDialog1.SelectedPath=@"d:
\";//设置文件夹的初始目录
folderBrowserDialog1.ShowNewFolderButton=true;//显示新建文件夹按钮
folderBrowserDialog1.Description="请选择MP3文件的路径";//对话框的说明文字
folderBrowserDialog1.ShowDialog();//显示对话框
stringpath=folderBrowserDialog1.SelectedPath;
stringapplicationaddress=Application.StartupPath;
stream=newFileStream(applicationaddress+"配置文件.txt",FileMode.Create);
StreamWriterwriter=newStreamWriter(stream);
writer.Write(path);
writer.Close();
stream.Close();
NewMethod(path);
}
上面提到的NewMethod()方法另定义其代码如下:
privatevoidNewMethod(stringpath)
{
DirectoryInfodir=newDirectoryInfo(path);
//实现MP3格式的加入处理
foreach(FileInfofindir.GetFiles("*.mp3"))
{
stringfilepath=f.FullName;
num++;
stringlistfilename=num.ToString()+"-"+f.Name;//显示到控件的文件的名称
playlist.Add(listfilename,filepath);//添加到集合的文件名称
this.listBox1.Items.Add(listfilename);
}
}
现在在窗体中添加另一个groupbox用于装入4个label控件其中两个命名为“当前进度”和“总时间”另两个命名为“空”,位置安排如图:
其中两个不去名字的原因是为了在运行的时候不影响视觉是的不适,即使界面美观,但他们的存在又是有必有的如上图中的当前时间和总时间下面显示的时间值就是那两个没有任何名字的标签显示的,它们并没不需要你输入代码但是在timer控件中的tick事件中将会用到它们,即让它们显示要显示的时间。
现在就来添加一个timer控件其默认名为timer1不需要改动,如果为了识别也可以改个名字,在后面还需要添加这种控件,这里的timer1的tick事件代码如下:
privatevoidtimer1_Tick(objectsender,EventArgse)
{
try
{
this.label3.Text=axWindowsMediaPlayer1.currentMedia.getItemInfo("title");
this.label4.Text=axWindowsMediaPlayer1.Ctlcontrols.currentPositionString;
this.label6.Text=axWindowsMediaPlayer1.currentMedia.durationString;
}
catch(Exception)
{
return;
}
}
现在在窗体的右下角有加入两个标签控件其中一个命名为“当前时间”另一个不需要任何命名,用于显示但前时间,而命名的那个只是为了在显示当前时间时在前面起个说明作用,让用户看起来好理解而已,也适合人们视觉上的习惯。
现在已经实现了播放器的基本功能了。
需要块进的时候可以拖动窗体上的播放位置控件吗,这个空间按是windows控件上自带的所以我就没有另外添加了,调节播放位置的方法如下图:
在控制播放音量的时候方法和控制播放位置方法一样只不过调节播放器位置控件是我另外添加的而已。
接下来就是智能关机的事了
直接调用系统的shutdown.exe来实现计算机的关闭、重启和用户注销。
方法如下:
首先进行引用usingSystem.Dinogistics;空间。
在关机键的单击事件中写入代码如下:
if((MessageBox.Show("确实要关闭计算机?
","关闭系统",
MessageBoxButtons.YesNo,MessageBoxIcon.Question))==
DialogResult.Yes)
{
CmdPc("Shutdown.exe-s-f");
}
实现这个关机的代码比较简单,当实现定时关机是就又要用到timer组件了。
在定时的时候我还选用了dateTimePicker组件进行定时关机的设置的时间设置,用了这个组件用户还可以通过它查看日历方法图如下:
如果你在设置时间时误设置了错误的时间——就是你设置的时间比当前时间还小聚会弹出对话框提示你设置正确的时间,在设置好定时时间后,就单击确定按钮,然后弹出对话框提示你的定时设置成功(定时关机设置成功!
),接下来就是等待关机了。
到这里我的音乐播放器的设计过程已经完成了。
自我总结
首先谈谈我对.net的粗浅认识吧,.NETFramework是微软推出的一个全新概念。
.NET的全称为.NETFramework,又被译为.NET框架。
简单地讲,.NET代表了一个集合、一个环境、一个可以支持下一代internet可编程的平台。
.NET是生成和运行应用程序所依托的基础平台。
微软公司将.NET描述为“支持生成和运行下一代应用程序和XMLWebSerices的内部windows组件”,主要目标是建立一种企业服务的开放机制,这种机制是面向WebSericesde。
我用的是C#编程语言设计的播放器,C#是编写应用程序的编程语言之一;而visualstudio则是一种集成开发环境,再该环境下能够方便、高效的编写、调试、生成应用程序。
.net技术-.NET的核心技术:
WebServices是.NET的核心技术。
那什么是WebServices呢?
正如Web是新一代的用户与应用交互的途径,XML是新一代的程序之间通讯的途径一样,WebServices是新一代的计算机与计算机之间一种通用的数据传输格式,可让不同运算系统更容易进行数据交换。
WebServices有以下几点特性:
Webservices允许应用之间共享数据;Webservices分散了代码单元;基于XML这种internet数据交换的通用语言,实现了跨平台、跨操作系统、跨语言。
那微软的ASP和Webservices究竟有什么不同呢,ASP仍然是一个集中式计算模型的产物,只不过是披着一层互联网的外衣。
但WebServices却是一个迥然不同的精灵,它秉承“软件就是服务”的真言,同时顺应分布式计算模式的潮流。
而它的存在形式又与以往软件不同。
这种组件模式,小巧、单一,对于开发人员来讲,开发成本较低。
在这里指出Webservices不是微软发明的,同样也不属于微软专有。
Webservices是一个开放的标准,和HTTP、XML、SOAP一样。
他们是一个工业标准而非微软标准,WS-I是为了促进WebServices互通性的联盟组织,最初是由IBM和微软所发起,其它的成员包括BEASystem、惠普计算机(HP)、甲骨文(Oracle)、英特尔(Intel)和SUN计算机(SunMicrosystem)。
如今网络上存在的大多Webservices其实没有使用.NET构架,Webservices具有互操作属性,你同样可以使用Windows开发客户端来调用运行于Linux上面的Webservices的方法。
先前提到的接口规范问题,在.NET中,Webservice接口通常使用WebServicesDescriptionLanguage(WSDL)描述。
WSDL使用XML来定义这种接口操作标准及输入输出参数,看起来很像COM和CORBA的接口定义语言(IDLS)InterfaceDefinitionLanguages。
接口定义后就必须使用一些协议调用接口,如SOAP协议,SOAP源于一种叫做XMLRPC(XML远程进程调用remoteprocedurecalling)的协议,而Java则根据XML-RPC发展了自己的JAX-RPC协议用来调用WebServices。
发布和访问WebServices的接口就用到UDDI了,这里我们要知道WSDL使用XML定义WebServices接口,通过SOAP访问WebServiint找WebServices使用UDDI就行了。
对于今后的学习
在今后要多关注有关编程及软件开发之类的信息,多练习编程。
要成为一名高级的编程人员,首先得精通我们所学的编程语言,要对一些典型的编程例子熟悉理解,并把“它”变成我们的“编程帮手”。
我想作为一名优秀的编程人员应做到以下几点:
1扎实的基础;2丰富的想象力——不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法;3最简单的是最好,的这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:
E=mc2。
简单的方法更容易被人理解,更容易实现,也更容易维护。
遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
经本人允许后,他人才可在网上再上传此资料!
谢谢你的支持!
此资料只供参考!
由于此资料用于实习报告,部分代码省略。
希望此资料对你有帮助!