用C#开发的简单MP3播放器.docx_第1页
用C#开发的简单MP3播放器.docx_第2页
用C#开发的简单MP3播放器.docx_第3页
用C#开发的简单MP3播放器.docx_第4页
用C#开发的简单MP3播放器.docx_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、软件说明:功能说明:一个简易小巧的MP3播放器,可以播放已经下载好的MP3格式的音乐。解决什么样的实际问题:市场上的音乐播放器大都占用资源比较大,而且需要联网,即使播放本地音乐,也会占用较多的网速,而这款播放器解决了这些问题。(虽然还是有很多缺陷,但用起来还是比较方便的。)性能说明:可以播放单首或多首歌曲,可以保存或清空当前播放列表,支持列表循环,顺序播放,单曲循环。(但目前只支持MP3格式。)程序类型说明:这个播放器是winform应用程序。二、软件设计软件整体结构图及模块划分:软件整体结构图:控制模块:歌曲列表显示区:在VS的“解决方案资源管理器”中的文件说明:整个项目的文件如下:其中,Properties中所包含的的文件有:这里包含的是定义程序集属性的文件,用来设定生成的有关程序集的常规信息dll文件的一些参数。引用中包含的文件有:这里包含的是这个项目所用的的一些类库信息。Form1.cs中包含有:这些是窗体的设计信息,而Program.cs是整个源程序的入口。各模块对应的主要对象或方法:控制模块中主要用到的是axWindowsmediaPlayer 控件以及MenuStrip控件。其中Windows media Player 控件用到的方法属性主要有:axWindowsMediaPlayer1.BeginInit(); /初始化 axWindowsMediaPlayer1.settings.autoStart; /自动播放 axWindowsMediaPlayer1.settings.setMode(shuffle, false); /顺序播放 axWindowsMediaPlayer1.settings.enableErrorDialogs; axWindowsMediaPlayer1.settings.balance; axWindowsMediaPlayer1.settings.mute; axWindowsMediaPlayer1.settings.volume;MenuStrip控件用到的方法事件有:private void 打开文件ToolStripMenuItem1_Click(object sender, EventArgs e);private void 添加歌曲ToolStripMenuItem_Click(object sender, EventArgs e);private void 添加文件夹ToolStripMenuItem_Click(object sender, EventArgs e);private void 退出ToolStripMenuItem_Click(object sender, EventArgs e);private void 清空列表ToolStripMenuItem1_Click(object sender, EventArgs e);private void 顺序播放ToolStripMenuItem_Click(object sender, EventArgs e);private void 单曲循环ToolStripMenuItem_Click(object sender, EventArgs e);private void 随机播放ToolStripMenuItem_Click(object sender, EventArgs e); 数据库设计或数据文件说明:由于播放器使用数据量较小,故采用TXT保存歌曲文件列表。使用的是文件处理。设计思路:播放器模块的设计结构如下:MP3播放器 播放窗体列表窗体打开歌曲歌曲的播放歌曲的暂停歌曲的停止音量设置进度条控制歌曲列表显示播放点击歌曲三、测试:测试用例列表:F:MusicA Little Love.mp3F:MusicChristmas In My Heart.mp3F:MusicEverytime.mp3F:MusicLiving To Love You.mp3F:MusicLove Paradise.mp3F:MusicLucky Twice - Me And You.mp3F:MusicMorning.mp3F:MusicTraveling Light.mp3F:MusicTrouble Is A Friend.mp3F:MusicWish You Were Here.mp3F:MusicYou and Me.mp3F:Music.mp3F:Music一直很安静.mp3F:Music一首简单的歌.mp3F:Music七里香.mp3F:Music下一个天亮.mp3F:Music不再犹豫.mp3F:Music不完整的旋律.mp3F:Music东风破.mp3F:Music依恋.mp3F:Music依然爱你.mp3F:Music光辉岁月.mp3F:Music兰若词.mp3F:Music再见理想.mp3F:Music分手快乐.mp3F:Music勇气.mp3F:Music匿名的好友.mp3F:Music单身美好.mp3F:Music喜欢两个人.mp3F:Music围巾.mp3F:Music在树上唱歌.mp3F:Music夜曲.mp3F:Music大城小爱.mp3F:Music天空.mp3F:Music如果有一天.mp3F:Music孤单北半球.mp3F:Music孩子气.mp3F:Music宁夏.mp3F:Music左边.mp3F:Music带我走.mp3软件运行截图:测试情况分析经测试,软件运行情况基本良好,但单曲循环功能有些缺陷,有待改进,总体情况还算良好。四、小结这一次的课程设计开发的这个软件是我的第一个软件,看到它能够基本实现我想要的功能,感到非常开心,尽管还有很多缺陷。在做这个软件的时候,遇到过很多问题,一开始觉得有问题上网找就是了,但在做的的时候却并不是如此,上网百度,用C#开发的播放器源码很多,教程也不少,但都讲的很乱,而且那些属性名,控件名,方法名之类的都和自己的不同,原理不懂,给你源码也没用。没办法,就只能恶补,像各种控件的属性,尤其是axWindowsmediaPlayer 控件的各种属性及使用方法(这也是我这次课程设计最大的收获。),文件处理等。通过这次课程设计,我学到了很多课堂和书本学不到的东西,我觉得最重要的一点就是注意细节以及动手之前弄懂基本原理。五、附录 用到的第三方控件或组件说明 :这个程序用到的第三方控件是axWindowsmediaPlayer 控件,这个控件是一个COM组件,是windows自带的控件,用于播放媒体文件,在开发媒体播放器时使用是非常方便的。程序的主要代码 (对应上面第二条):窗体设计代码From1.cs:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO; namespace MyMusicPlayer public partial class MusicPlayer : Form public MusicPlayer() InitializeComponent(); string musicPath = new string1000; /用于保存歌曲目录 int musicCount = 0; private void Form1_Load(object sender, EventArgs e) myPlayer.BeginInit(); /初始化 myPlayer.settings.autoStart = true; /自动播放 myPlayer.settings.setMode(shuffle, false); /顺序播放 myPlayer.settings.enableErrorDialogs = true; myPlayer.settings.balance = 0; myPlayer.settings.mute = false; myPlayer.settings.volume = 100; /声音设为最大 if (File.Exists(listbox.txt) /如果存在播放列表,那么加载播放列表 StreamReader reader = new StreamReader(listbox.txt); try while (reader.Peek() != -1) string filepath = reader.ReadLine(); if (File.Exists(filepath) musicPathmusicCount+ = filepath; string filename = Path.GetFileName(filepath); listBox1.Items.Add(filename); /listbox用来显示歌曲名 myPlayer.currentPlaylist.insertItem(myPlayer.currentPlaylist.count, myPlayer.newMedia(filepath); listBox1.SelectedIndex = 0; catch (Exception) listBox1.SelectedIndex = -1; MessageBox.Show(加载播放列表失败或者列表为空!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Error); finally reader.Close(); private void 打开文件ToolStripMenuItem1_Click(object sender, EventArgs e)/打开单首歌曲,但不加载到播放列表 DialogResult dr = openFileDialog1.ShowDialog(); if (dr = DialogResult.OK) myPlayer.URL = openFileDialog1.FileName; private void 添加歌曲ToolStripMenuItem_Click(object sender, EventArgs e)/打开单首歌曲,并加载到播放列表 DialogResult dr = openFileDialog1.ShowDialog(); if (dr = DialogResult.OK) myPlayer.URL = openFileDialog1.FileName; string filepath = openFileDialog1.FileName; string filename = Path.GetFileName(filepath); listBox1.Items.Add(filename); musicPathmusicCount+ = filepath; myPlayer.currentPlaylist.insertItem(myPlayer.currentPlaylist.count, myPlayer.newMedia(filepath); private void 添加文件夹ToolStripMenuItem_Click(object sender, EventArgs e)/打开媒体文件夹,并加载到播放列表 DialogResult dr = folderBrowserDialog1.ShowDialog(); if (dr = DialogResult.OK) string filepath = Directory.GetFiles(folderBrowserDialog1.SelectedPath); foreach (string s in filepath) if (Path.GetExtension(s) = .mp3) string filename = Path.GetFileName(s); listBox1.Items.Add(filename); musicPathmusicCount+ = s; myPlayer.currentPlaylist.insertItem(myPlayer.currentPlaylist.count, myPlayer.newMedia(s); private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)/退出播放器并保存当前播放列表 myPlayer.Ctlcontrols.stop(); myPlayer.close(); StreamWriter writer = new StreamWriter(listbox.txt, false, Encoding.Unicode); /保存播放列表 for (int i = 0; i = musicCount - 1; i+) if (musicPathi != string.Empty) writer.WriteLine(musicPathi); writer.Close(); Application.Exit(); private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) /显示播放状态 if (myPlayer.playState = WMPLib.WMPPlayState.wmppsPlaying) string s = myPlayer.currentMedia.sourceURL; for (int i = 0; i myPlayer.currentPlaylist.count; i+) if (listBox1.Itemsi.ToString() = Path.GetFileName(s) listBox1.SelectedIndex = i; break; private void 清空列表ToolStripMenuItem1_Click(object sender, EventArgs e)/清空当前播放列表 myPlayer.Ctlcontrols.stop(); /先停止播放器 listBox1.Items.Clear(); /清空listbox myPlayer.currentPlaylist.clear(); /清空播放列表 for (int j = 0; j musicCount; j+) musicPathj = ; private void Form1_KeyPress(object sender, KeyPressEventArgs e) if (char.Equals(e.KeyChar, ) if (myPlayer.playState = WMPLib.WMPPlayState.wmppsPlaying) myPlayer.Ctlcontrols.pause(); private void 顺序播放ToolStripMenuItem_Click(object sender, EventArgs e)/按列表顺序播放歌曲文件 myPlayer.settings.playCount = 1; myPlayer.currentPlaylist.clear(); for (int j = 0; j 0) int k = listBox1.SelectedIndex; for (int i = 0; i 1000; i+) myPlayer.currentPlaylist.insertItem(myPlayer.currentPlaylist.count, myPlayer.newMedia(musicPathk); myPlayer.Ctlcontrols.playItem(myPlayer.currentPlaylist.get_Item(0); private void 随机播放ToolStripMenuItem_Click(object sender, EventArgs e)/随机播放列表歌曲文件 myPlayer.settings.playCount = 1; myPlayer.Ctlcontrols.stop(); myPlayer.currentPlaylist.clear(); Random rd = new Random(DateTime.Now.Millisecond); for (int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论