.net C#音乐播放器设计实习报告

时间:2024.5.13

《.net技术》实习报告

带智能关机和查看日历功能的音乐播放器设计

班级:电子信息工程01班             指导老师:林 * *

姓名:高乐顺                        学号:********** 

                  

设计时间:20##年12月20日 至 20##年12月30日


正文开始

设计目的:

很多人在使用播放器的时候下载的播放器软件总是比较大,一般软件较大的打开就会比较慢,运行起来也没较小的软件运行的更“流畅“。而且当我们使用播放器的时候或是只用电脑的时候我们有时会忘记关掉电脑就离开或是睡着了!虽然电脑自带的操作系统也可以设置定时关机但比较麻烦,对电脑初学者更是不知道怎么使用操作系统设置定时关机啦!还有就是我们电脑桌面下的时钟一般只显示了几点钟,并没有显示今天是多少号,所以在影月播放器中添加一个可以查看日历的功能是很必要的!

实现的功能:

在这里我就为大家设计一款小巧的音乐播放器,同时还带有智能关机功能,所谓智能关机就是你想怎么时候关机就什么时候关机,你想立刻关机就立刻关机,想定时关机就可以自己设置关机时间,设置方法非常的简单啦。同时你只需要单击一下一个“三角图标键”(在下面还将结合图示提到)就可以看到日历表了,在日历表里你也可以选择查看你需要的那个月的日历表。同时我也在播放器中添加了显示现在时钟的功能。

下面介绍一下我设计的播放器的所有功能:首先你可以通过“添加文件夹”按钮添加你选择的文件夹内的所有音频文件,你也可以通过“添加文件”按钮单个添加你所要添加的音频文件,具体方法在下面我会给出截图加以说明,保证一看就懂,就会用。添加音乐文件后你就可以在你的播放列表里看到你添加的歌曲名了。你可以通过双击列表中的歌曲名进行播放你双击的歌曲或者单击选中列表中歌曲名后再单击播放按钮进行播放。在播放时你可也看到正在播放的歌曲名和播放进度,这里的播放进度使用显示正在播放的歌曲“已经播放了多长时间”和这首歌要播放的“总时间”,还有就是上一曲、暂停、下一曲、停止,除实现播放的基本功能外,还有一个功能那就是我在上面给大家提到的“智能关机”

物体规则震动发出的声音称为“音乐”,由有组织的乐音来表达人们思想感情、反映现实生活的一种艺术就是音乐,音乐是一种符号,声音符号,表达人的所思所想,音乐能表达一个人的内心世,界音乐能是人快乐,能使人放松心情。为了方便人们能够听到美丽的音乐,音乐播放器就成为我们的音乐大师了。

设计好的播放器运行时如下图:

实现设计的过程:

播放器功能图解:

   操作流程图:

下面说明下我设计的具体步骤,我设计音乐播放器将采用Windows Media Player的编程接口和C#.NET编程技术,我使用Visual Studio2010作为开发工具。要使用首先要具有c#.net的基本编程技术,然后然后下载Visual Studio2010作为开发工具,安装好后就可以开始编程了,打开Visual Studio2010新建项目中选择新建windows窗体,创建好窗体后首先从工具箱中向窗体添加“Windows Media Player”组件具体方法如下:

(1)“工具箱”右键“选择项(I)”

(2)在弹出的“选择工具箱项”对话框中选择“COM组件”选项卡。

(3)在COM组件列表中选择Windows Media Player,单击确定。

播放音乐主要采用的的是调用Windows Media Player 接口,首先需要构造一个界面,在界面上创建如上图中的播放列表框控件(listbox)、和“上一曲”(button1)、“播放/暂停”(button2)、“下一曲”(button3)“停止”(button4)控件。

播放/暂停的代码如下:PlayAndStop();再另定义一个方法如下:

private void PlayAndStop()

        {

            index = this.listBox1.SelectedIndex;     //获得当前选定的文件的索引

            try

            {

                if (stop % 2 == 0)

                {

                    string selectname = this.listBox1.SelectedItem.ToString();   //获取选定的文件名

                    string playurl = 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;

            }

        }

停止的单击事件代码如下:

private void button4_Click(object sender, EventArgs e)

              {

                  axWindowsMediaPlayer1.Ctlcontrols.stop();

              }

接下来添加一个trackBar控件作为声音调节控件。代码如下:axWindowsMediaPlayer1.settings.volume  = this.trackBar1.Value ;

另外还要在窗体的加载事件中设定这个控件的最小值和最大值,在下面的窗体事件中还会提到其代码的。

现在在窗体中添加一个groupBox组件,再在groupBox中添加添加“添加文件”、和添加“添加文件夹”控件。在此button的cliect事件中首先调用FolderBrowserDialog创建一个实例,然后判断用户点击的按钮,如果是DialogResult.OK然后获得其绝对路径,然后创建一个FileInfo对象,然后获得该文件夹下扩展名为.mp3、.wma、、、.wMa的文件,然后把他们加载到播放列表中,部分代码如下:

在写代码之前还要记得添加一个 openFileDialog组件。

部分过程图如下:

在使用num++之前请先定义,还有上面提到的stop也要先定义,可以在class Form1 类中首先定义,

“添加文件”按钮代码:  private void button5_Click(object sender, EventArgs e)

              {

num++;//

                  openFileDialog1.Filter = "mp3格式文件|*.mp3|wma文件格式|*.wma|所有D文件t|*";

                  openFileDialog1.Multiselect = true; 

                  openFileDialog1.Title = "请选择音频文件";

                  if (openFileDialog1.ShowDialog() == DialogResult.OK)

                  {

                      string filepath = this.openFileDialog1.FileName;

                      FileInfo f = new FileInfo(filepath);

                      string filename = num.ToString() + "- " + f.Name;

                      playlist.Add(filename, filepath);

                      this.listBox1.Items.Add(filename);

                  }

“添加文件夹”按钮代码:

private void button6_Click(object sender, EventArgs e)

              {

                 folderBrowserDialog1.SelectedPath = @"d:\";                //设置文件夹的初始目录

                  folderBrowserDialog1.ShowNewFolderButton = true;           //显示新建文件夹按钮

                  folderBrowserDialog1.Description = "请选择MP3文件的路径";  //对话框的说明文字

                  folderBrowserDialog1.ShowDialog();                    //显示对话框      

                  string path = folderBrowserDialog1.SelectedPath;                 

                  string applicationaddress = Application.StartupPath;

                  stream = new FileStream(applicationaddress + "配置文件.txt", FileMode.Create);

                  StreamWriter writer = new StreamWriter(stream);

                  writer.Write(path);

                  writer.Close();

                  stream.Close();

                  NewMethod(path);

              }

上面提到的NewMethod()方法另定义其代码如下:

private void NewMethod(string path)

            {

                DirectoryInfo dir = new DirectoryInfo(path);

                //实现MP3格式的加入处理

                foreach (FileInfo f in dir.GetFiles("*.mp3"))

                {

                    string filepath = f.FullName;

                    num++;

                    string listfilename = num.ToString() + "-" + f.Name;    //显示到控件的文件的名称                      

                    playlist.Add(listfilename, filepath);       //添加到集合的文件名称

                    this.listBox1.Items.Add(listfilename);

                 }

             }

现在在窗体中添加另一个groupbox用于装入4个label控件其中两个命名为“当前进度”和“总时间”另两个命名为“空”,位置安排如图:

其中两个不去名字的原因是为了在运行的时候不影响视觉是的不适,即使界面美观,但他们的存在又是有必有的如上图中的当前时间和总时间下面显示的时间值就是那两个没有任何名字的标签显示的,它们并没不需要你输入代码但是在timer控件中的tick事件中将会用到它们,即让它们显示要显示的时间。

现在就来添加一个timer控件其默认名为timer1不需要改动,如果为了识别也可以改个名字,在后面还需要添加这种控件,这里的timer1的tick事件代码如下:

 

              private void timer1_Tick(object sender, EventArgs e)

              {

                  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来实现计算机的关闭、重启和用户注销。方法如下:

首先进行引用using System.Dinogistics;空间。

在关机键的单击事件中写入代码如下:

if ((MessageBox.Show("确实要关闭计算机?", "关闭系统",

                MessageBoxButtons.YesNo, MessageBoxIcon.Question)) ==

                  DialogResult.Yes)

                  {

                      CmdPc("Shutdown.exe -s -f");

                  }

实现这个关机的代码比较简单,当实现定时关机是就又要用到timer组件了。在定时的时候我还选用了dateTimePicker组件进行定时关机的设置的时间设置,用了这个组件用户还可以通过它查看日历方法图如下:

如果你在设置时间时误设置了错误的时间——就是你设置的时间比当前时间还小聚会弹出对话框提示你设置正确的时间,在设置好定时时间后,就单击确定按钮,然后弹出对话框提示你的定时设置成功(定时关机设置成功!),接下来就是等待关机了。到这里我的音乐播放器的设计过程已经完成了。


自我总结

首先谈谈我对.net的粗浅认识吧,.NET Framework是微软推出的一个全新概念。.NET的全称为.NET Framework,又被译为.NET框架。简单地讲,.NET代表了一个集合、一个环境、一个可以支持下一代internet可编程的平台。.NET是生成和运行应用程序所依托的基础平台。微软公司将.NET描述为“支持生成和运行下一代应用程序和XML Web Serices的内部windows组件”,主要目标是建立一种企业服务的开放机制,这种机制是面向Web Sericesde 。我用的是C#编程语言设计的播放器,C#是编写应用程序的编程语言之一;而visual studio则是一种集成开发环境,再该环境下能够方便、高效的编写、调试、生成应用程序。

.net技术 - .NET的核心技术:
Web Services是.NET的核心技术。那什么是Web Services呢?正如Web是新一代的用户与应用交互的途径,XML是新一代的程序之间通讯的途径一样,Web Services是新一代的计算机与计算机之间一种通用的数据传输格式,可让不同运算系统更容易进行数据交换。Web Services有以下几点特性:Web services允许应用之间共享数据;Web services分散了代码单元;基于XML这种internet数据交换的通用语言,实现了跨平台、跨操作系统、跨语言。那微软的ASP和Web services究竟有什么不同呢,ASP仍然是一个集中式计算模型的产物,只不过是披着一层互联网的外衣。但Web Services却是一个迥然不同的精灵,它秉承“软件就是服务”的真言,同时顺应分布式计算模式的潮流。而它的存在形式又与以往软件不同。这种组件模式,小巧、单一,对于开发人员来讲,开发成本较低。
在这里指出Web services不是微软发明的,同样也不属于微软专有。Web services是一个开放的标准,和HTTP、 XML、SOAP一样。他们是一个工业标准而非微软标准,WS-I是为了促进Web Services互通性的联盟组织,最初是由IBM和微软所发起,其它的成员包括BEA System、惠普计算机(HP)、甲骨文(Oracle)、英特尔(Intel)和SUN 计算机(Sun Microsystem)。如今网络上存在的大多Web services其实没有使用.NET构架,Web services具有互操作属性,你同样可以使用Windows开发客户端来调用运行于Linux上面的Web services的方法。
先前提到的接口规范问题,在.NET中,Web service接口通常使用Web Services Description Language (WSDL)描述。 WSDL 使用XML来定义这种接口操作标准及输入输出参数,看起来很像COM和CORBA的接口定义语言(IDLS)Interface Definition Languages。接口定义后就必须使用一些协议调用接口,如SOAP协议,SOAP源于一种叫做XML RPC(XML远程进程调用remote procedure calling)的协议,而Java则根据XML-RPC发展了自己的JAX-RPC协议用来调用Web Services。发布和访问Web Services的接口就用到UDDI了,这里我们要知道WSDL使用XML定义Web Services接口,通过SOAP访问WebServiint找Web Services使用UDDI就行了。


对于今后的学习

在今后要多关注有关编程及软件开发之类的信息,多练习编程。要成为一名高级的编程人员,首先得精通我们所学的编程语言,要对一些典型的编程例子熟悉理解,并把“它”变成我们的“编程帮手”。我想作为一名优秀的编程人员应做到以下几点:

1扎实的基础;2丰富的想象力——不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法;3最简单的是最好,的这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。

经本人允许后,他人才可在网上再上传此资料!谢谢你的支持!此资料只供参考!由于此资料用于实习报告,部分代码省略。

希望此资料对你有帮助!

更多相关推荐:
.net实习报告

月末总结这一个月在XX公司的实现我开始渐渐的熟悉了这个环境让我感觉到要作为一个真正的优秀的软件工程师我们还有很大的差距首先我感觉到困难的是在学校我们都比较注重的是理论知识的学习忽视了动手能力的培养这跟我们出来实...

.Net实验报告2

实验报告学院系名称计算机与通信工程学院第1页共9页第2页共9页第3页共9页第4页共9页第5页共9页第6页共9页第7页共9页第8页共9页第9页共9页

net实训报告

NET实训报告实验项目大棚温度控制班级嵌入式101姓名000学号20指导老师周永明欧阳欣实训日期20xx年7月16日广东轻工职业技术学院目录1前言2实验目的3实验要求4实验内容5实验过程6实验总结前言Visua...

《ASP.NET与Web程序开发》实习报告

ASPNET与Web程序开发教学实习报告1教学实习的内容随着Internet技术的发展开发基于Web的管理信息系统最大限度的利用高校现有资源提高教学质量是高等院校教学上的新研究课题目前各高校校园网络已经建成通过...

计算机系.net平台毕业实习报告

开学第一个月,是培养计划中进行毕业实习的日子。众所周知,毕业实习是理论与实践相结合的重要环节,目的是提高学生动手能力和综合实践能力,提高学生的学习兴趣,为提高学生的就业竞争力打好基础。同时,毕业设计会使学生了解…

《ASP[1].net网络编程》实训报告模板

丽水职业技术学院机电信息分院课程实训基于ASP.NET旅游导购网站的设计与开发学生学号:学生姓名:实训老师:班级信管1222专业名称计算机信息管理提交日期20XX年12月27日目录一、实训目的及要求......…

。net实验报告

实验一环境配置与sql操作学号:1020XXX姓名:XXX日期:20##/12/21、实验目的:熟悉VS2005开发环境,复习C#和SQL2000相关操作2、实验环境:WindowsXP、VS20005、SQL…

毕业综合实习报告

引言目前地理信息系统已广泛地应用于众多领域为各个相关行业提供了高效的空间信息处理能力和强大的决策支持服务为满足需求GIS开发人员需要具有构建领域专用且易于使用的应用软件的能力软件需将广泛应用的GIS技术与友好用...

.net实习报告

net实习报告这一个月在XX公司的实现我开始渐渐的熟悉了这个环境让我感觉到要作为一个真正的优秀的软件工程师我们还有很大的差距首先我感觉到困难的是在学校我们都比较注重的是理论知识的学习忽视了动手能力的培养这跟我们...

毕业实习报告

新疆大学实习实训报告实习实训名称毕业实习学院电气工程学院专业班级电气工程及其自动化电气094班指导教师报告人学号时间20xx333281毕业实习11毕业实习目的毕业实习是极为重要的实践性教学环节在学完全部的专业...

毕业实习报告模板

毕业实习报告学院名称信息科学与工程学院专业班级信息管理与信息系统20xx2班学生姓名学号王文焕20xx01050924张峰指导教师二O一O年四月评定意见毕业实习成绩指导教师对毕业实习的评语毕业实习指导小组的评定...

重庆邮电大学毕业实习报告格式

成绩重庆邮电大学自动化学院毕业实习报告专业班级姓名学号填写时间年月日重庆邮电大学自动化学院制

.net实习报告(7篇)