《.net技术》实习报告带智能关机和查看日历功能的音乐播放器设计班级:指导老师:姓名:学号:设计时间:正文开始设计目的:很多人在使用播放器的时候下载的播放器软件总是比较大,一般软件较大的打开就会比较慢,运行起来也没较小的软件运行的更“流畅“。
而且当我们使用播放器的时候或是只用电脑的时候我们有时会忘记关掉电脑就离开或是睡着了!虽然电脑自带的操作系统也可以设置定时关机但比较麻烦,对电脑初学者更是不知道怎么使用操作系统设置定时关机啦!还有就是我们电脑桌面下的时钟一般只显示了几点钟,并没有显示今天是多少号,所以在影月播放器中添加一个可以查看日历的功能是很必要的!实现的功能:在这里我就为大家设计一款小巧的音乐播放器,同时还带有智能关机功能,所谓智能关机就是你想怎么时候关机就什么时候关机,你想立刻关机就立刻关机,想定时关机就可以自己设置关机时间,设置方法非常的简单啦。
同时你只需要单击一下一个“三角图标键”(在下面还将结合图示提到)就可以看到日历表了,在日历表里你也可以选择查看你需要的那个月的日历表。
同时我也在播放器中添加了显示现在时钟的功能。
下面介绍一下我设计的播放器的所有功能:首先你可以通过“添加文件夹”按钮添加你选择的文件夹内的所有音频文件,你也可以通过“添加文件”按钮单个添加你所要添加的音频文件,具体方法在下面我会给出截图加以说明,保证一看就懂,就会用。
添加音乐文件后你就可以在你的播放列表里看到你添加的歌曲名了。
你可以通过双击列表中的歌曲名进行播放你双击的歌曲或者单击选中列表中歌曲名后再单击播放按钮进行播放。
在播放时你可也看到正在播放的歌曲名和播放进度,这里的播放进度使用显示正在播放的歌曲“已经播放了多长时间”和这首歌要播放的“总时间”,还有就是上一曲、暂停、下一曲、停止,除实现播放的基本功能外,还有一个功能那就是我在上面给大家提到的“智能关机”物体规则震动发出的声音称为“音乐”,由有组织的乐音来表达人们思想感情、反映现实生活的一种艺术就是音乐,音乐是一种符号,声音符号,表达人的所思所想,音乐能表达一个人的内心世,界音乐能是人快乐,能使人放松心情。
为了方便人们能够听到美丽的音乐,音乐播放器就成为我们的音乐大师了。
设计好的播放器运行时如下图:实现设计的过程:播放器功能图解:操作流程图:播放器所具有的功能智能关机!显示当前时间拖动播放器窗体显示播放歌曲信息添加音频文件双击列表中歌曲名拖动播放播放进度滑块控制播放位播放暂停停上曲下曲自动保存列表现在关机定时关机下面说明下我设计的具体步骤,我设计音乐播放器将采用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() + "- " + ; 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() + "-" +; //显示到控件的文件的名称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{bel3.Text =axWindowsMediaPlayer1.currentMedia.getItemInfo("title");bel4.Text =axWindowsMediaPlayer1.Ctlcontrols.currentPositionString;bel6.Text =axWindowsMediaPlayer1.currentMedia.durationString;}catch (Exception){return;}}现在在窗体的右下角有加入两个标签控件其中一个命名为“当前时间”另一个不需要任何命名,用于显示但前时间,而命名的那个只是为了在显示当前时间时在前面起个说明作用,让用户看起来好理解而已,也适合人们视觉上的习惯。