资源描述
课程设计
软件综合课程设计
班 级:
通信2班
姓 名:
闫振宇
学 号:
1306030222
指导教师:
徐维
成 绩:
电子与信息工程学院
信息与通信工程系
目录
前言.............................................................1
1 任务概述.......................................................1
1.1 设计题目.....................................................1
1.2 规则要求及目标...............................................1
1.3 运行环境.....................................................1
1.4 条件与限制...................................................1
2 功能及模板设计.................................................1
2.1 系统功能.....................................................1
2.2 模板设计.....................................................2
2.2.1 播放器界面.................................................3
2.2.2 保存.......................................................3
2.2.3 删除.......................................................5
2.2.4 操作.......................................................5
3 数据结构与算法设计.............................................5
3.1 播放器界面...................................................5
3.2 保存.........................................................6
3.2.1 多文件保存.................................................6
3.2.2 单文件保存.................................................7
3.2.3 文件处理...................................................8
3.2.4 文件件保存.................................................8
3.3 删除.........................................................9
3.3.1 清空列表...................................................9
3.3.2 删除列表...................................................9
3.3.3 删除本地文件..............................................10
3.4 操作........................................................11
3.4.1 wmp.......................................................11
3.4.2 控制......................................................11
4 程序描述......................................................12
4.1 音乐播放器的界面............................................12
4.2 保存........................................................14
4.2.1 多文件 单文件保存.........................................14
4.2.2 文件夹保存................................................16
4.3 删除........................................................17
4.3.1 清空列表..................................................17
4.3.2 删除列表..................................................17
4.3.3 删除本地文件..............................................19
4.4 操作........................................................20
4.4.1 wmp.......................................................20
4.4.2 控制......................................................21
5 设计感想......................................................22
参考文献........................................................22
前言
音乐是一种声音的符号,表达人的思想感情,是人们思想的载体之一。一款好的MP3音乐播放器不仅能够提供好的音乐播放的效果,更能为使用提供舒适的操作。
本款MP3音乐播放器利用Visual Basic 6.0对音乐播放器进行编写。同时给出了详细的系统设计过程,部分界面图及主要功能运行流程图。
该音乐播放器集播放,暂停,下一首,上一首,调节音量,等基本操作,还可以进行歌曲操作,实现全部列表循环,单曲循环,顺序播放,随机播放等功能,对于文件的添加,文件夹的添加,本地文件的删除操作都可以实现,为实现文件夹保存功能,还调用了window的API函数。
设计的指导思想是一切从问题出发,实际出发,界面简约,美观,操作尽量简明,让使用者能够轻松使用,愉快听歌。
1. 任务概述
1.1 设计题目:MP3音乐播放器
1.2 规则要求及目标:
1) 可以同时多个文件选择和文件夹选择功能(一次选择文件夹中的所有文件)。
2) 支持文件类型过滤功能。
3) 支持顺序播放、随机播放、列表循环播放和单曲循环播放。
4) 支持播放列表删除功能和本地文件删除功能。
5) 支持播放列表保存功能。
1.3 系统运行环境:
Windows 7,Window XP,Visual Basic 6.0中文版
1.4 条件与限制:
程序要在Visual Basic 6.0软件下进行,我所制作的音乐播放器未与网络连接,没有搜索文件的功能,只能播放和添加电脑中已有的歌曲曲目。
2. 功能及模块设计
2.1系统功能
1) 同时多文件选择(mand1):通过单击按钮选择文件,经过鼠标右键拖拽可选择多个文件。
2) 单文件选择(mand1):通过单击按钮选择文件,鼠标左键单击即可。
3) 文件夹选择:(mand2):通过单击按钮选择文件夹,单击打开即可。
4) 清空列表(mand3):通过单击按钮,清空list列表中的歌曲。
5) 列表清除(mand4):通过单击按钮,删除list列表中的任意歌曲。
6) 删除文件(mand5):通过单击按钮,从电脑删除list列表中歌曲本地文件。
7) Windows Media Player(form1.wmp):通过单击,实现歌曲播放,暂停,下一首,上一首,声量调整。
8) 控制播放类型:(form1.菜单编辑器):通过单击,实现歌曲全部循环,单曲循环,顺序播放,随机播放。
2.2 模板设计
关于模板设计,在设计初期,利用VB的可视化编程特性,先建立窗口(音乐播放器界面),在音乐播放器的界面上设置按钮,其中按功能可分成三个部分,分别为保存,删除,操作。保存设置按照要求有添加文件选项,添加文件夹选项,删除设置中按照要求有清空列表,删除列表,删除本地文件等按钮。保存和删除操作都是由建立的两个文档相互联系,操作也是调用文档内容进行一系列操作与控制。模板设计如图2-1所示:
音乐播放器界面
删除
操作
保存
清空列表
删除列表
删除本地文件
添加文件夹
添加文件
wmp
全部循环
文档1
Filepath.txt
文档2
music.txt
顺序播放
随机播放
单曲循环
如图2-1 模板设计图
2.2.1 音乐播放器界面:
该窗体是主窗体,整个程序只有一个窗体,其他功能都是由添加控件完成。窗体中大致分为三个模块:保存,删除,基本操作三部分。
该窗体设置了command按钮控件5个,timer时间控件2个,CommonDialog(cd)选取文件控件1个,label标签控件1个,Windows Media Player(wmp)播放器控件1个,list列表控件1个。播放器界面如图2-2所示:
图2-2 界面图
2.2.2 保存:
1)多文件保存:
鼠标单击command1控件按钮,选择歌曲存储的文件夹,选择你所选取的多首歌曲。鼠标单击打开即可,经过对于歌曲的处理,歌曲名称显示在list列表中。如图2-3所示:
图2-3 多文件保存图
2) 单文件保存:
鼠标单击command1控件按钮,选择歌曲存储的文件夹,选择你所选取的歌曲。鼠标单击打开即可,经过对于歌曲的处理,歌曲名称显示在list列表中。如图2-4所示:
图2-4 单文件保存图
经过对于文件名的处理,才能显示在list列表中。
3)文件夹保存:
文件夹保存如图2-5所示:
图2-5 文件夹保存图
文件夹选择功能利用了API函数编写的API控件操作完成的。API函数控件写在通用中, 通过调用GetFolder函数来完成文件夹选择功能。
接下来调用Showfilelist函数处理文件夹选择的文件。
通过单击按钮控件command2,选择歌曲所在的文件夹,这样不能选取文件夹中的歌曲,能整个文件夹选取,Showfilelist函数能够自动删选文件夹中歌曲。经过文件选取,才能显示在list列表中。
2.2.3 删除
1)清空列表:(command3)单击按钮控件command3,list列表中所有歌曲清除。
2)删除列表:(command4)选取list列表中的任意一首歌曲,单击按钮控件command4,此歌曲就在列表中删除了。
3)删除本地文件:(command5)选择一首你想从电脑中删除的歌曲,单击按钮控件command5,歌曲在电脑中就删除了。
2.2.4 操作
1)Wmp
wmp全称Windows Media Player,是VB中重要的控件之一,主要实现歌曲播放,暂停,下一首,上一首,调节音量大小的功能,在其他控件代码中调用wmp的方法,就可以实现wmp的基本操作。方法如:playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪,controls.next; 下一曲 controls.previous; 上一曲,controls.play; 播放 controls.pause; 暂停 controls.stop; 停止等。playState:integer;播放状态,这个属性改变的同时引发playStateChange事件和StateChange事件。
使用:在其他控件中调用方法即可。
2)控制
完成对于播放器的一系列控制操作,利用了VB中的菜单编辑器功能,在form1菜单编辑器中编辑控制按键,其中包括顺序播放,随机播放,全部循环,单曲循环。
3. 数据结构与算法设计
3.1 播放器界面
Form1代码:
在form1的载入事件中填写代码:
Dim x As String, y As String
Label1.Caption = ""
[If Dir("C:\filepath.txt") = "" Or Dir("C:\music.txt") = "" Then
Open "C:\filepath.txt" For Output As #1
Close #1
Open "C:\music.txt" For Output As #2
Close #2
End If /读取文件/]
Open "C:\filepath.txt" For Input As #1
Open "C:\music.txt" For Input As #2
[Do While Not EOF(1)
Input #1, x
Input #2, y
If Dir(x) <> "" Then
List1.AddItem (List1.ListCount + 1) & "." & y
Call wmp.currentPlaylist.insertItem(wmp.currentPlaylist.Count, wmp.newMedia(x))
End If Loop]
/Do循环,打开文件号1,文件号2,list列表中存有文件号2中的歌曲,wmp调用文件号1歌曲地址,播放文件号1歌曲/
Close #1, #2
[Timer1.Enabled = False
allloop.Checked = False
oneloop.Checked = False
rand.Checked = False
rule.Checked = True
Call wmp.settings.setMode("shuffle", False)]/初始设置为顺序播放/
Timer2.Enabled = True
3.2 保存
3.2.1 多文件保存:
在command1控件的单击事件中输入代码:
Dim strFileName As String
[cd.DialogTitle = "打开音乐文件"
cd.Filter = "mp3|*.mp3|wma|*.wma"
cd.InitDir = "D:\" /显示起始目录/
cd.Flags = cdlOFNExplorer + cdlOFNAllowMultiselect
cd.ShowOpen
strFileName = cd.FileName 'filename] /cd控件/
[If (strFileName <> "") Then
Dim sPath, tmpStr As String
Dim sFile() As String
Dim iCount As Integer
Dim I As Integer
sPath = CurDir() /表示当前路径/
tmpStr = Right$(strFileName, Len(strFileName) - Len(sPath))]
/应用if语句做一个判断,将选中的歌曲的路径与歌曲名称分开/
[If Left$(tmpStr, 1) = Chr$(0) Then
/选择了多个文件(分离后第一个字符为Chr$(0))/
For I = 1 To Len(tmpStr)
If Mid$(tmpStr, I, 1) = Chr$(0) Then
iCount = iCount + 1
ReDim Preserve sFile(iCount) /重新定义数组/
Else
sFile(iCount) = sFile(iCount) & Mid$(tmpStr, I, 1)
End If]
Next I Else
/应用for语句先做一个循环,在循环中判断多文件后,将多文件分离成为单文件/
3.2.2 单文件保存:
iCount = 1
ReDim Preserve sFile(iCount)
If Left$(tmpStr, 1) = "\" Then tmpStr = Right$(tmpStr, Len(tmpStr) - 1)
sFile(iCount) = tmpStr
End If
3.2.3 文件处理:
If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
Open "C:\filepath.txt" For Append As #1
For I = 1 To iCount
Call wmp.currentPlaylist.insertItem(wmp.currentPlaylist.Count, wmp.newMedia(sPath & sFile(I)))
Write #1, sPath & sFile(I)
Next I
Close #1
Open "C:\music.txt" For Append As #2
[For I = 1 To iCount
List1.AddItem (List1.ListCount + 1) & "." & Left(sFile(I), Len(sFile(I)) - 4)
/去掉".mp3"4个字符/
Write #2, Left(sFile(I), Len(sFile(I)) - 4)]
/应用for循环将歌曲名称后的4个字符去掉,记录在list列表中格式为“数字.歌曲名”/
Next I Close #2
End If
3.2.4 文件夹保存:
在command2控件的单击事件中输入代码:
Dim strFileName As String
strFileName = GetFolder(Me.hWnd)
If (strFileName <> "") Then Showfilelist (strFileName)
/API函数控件写在通用中, 通过调用GetFolder函数来完成文件夹选择功能。
接下来调用Showfilelist函数处理文件夹选择的文件。(与多文件单文件处理方式相同)/
Showfilelist函数代码:
Private Sub Showfilelist(folderspec)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.Files
If Right$(folderspec, 1) <> "\" Then folderspec = folderspec & "\"
For Each f1 In fc
[If (Right$(f1.Name, 3) = "mp3" Or Right$(f1.Name, 3) = "wma") ]Then
/过滤文件夹中mp3,wma歌曲文件/
Open "C:\filepath.txt" For Append As #1
Call wmp.currentPlaylist.insertItem(wmp.currentPlaylist.Count, wmp.newMedia(folderspec & f1.Name))
/文件夹文件处理方式与单文件,多文件文件处理方式相同/
3.3 删除
3.3.1 清空列表:
在command3控件的单击事件中输入代码:
List1.Clear
wmp.currentPlaylist.Clear
Kill "C:\filepath.txt"
Kill "C:\music.txt"
3.3.2 删除列表:
在command4控件的单击事件中输入代码:
Dim temp As String
Dim I As Integer
If List1.ListIndex <> -1 Then
Open "C:\music.txt" For Input As #1
Open "C:\music1.txt" For Output As #2
[Do Until EOF(1)
Input #1, temp
If I <> List1.ListIndex Then Write #2, temp
I = I + 1
Loop]
/Do语句做一个循环,处理music.txt文档,将music1.txt替代music.txt,将文件号1中歌曲复制到文件号2中,利用一个变量temp/
Close #1, #2
Kill "C:\music.txt"
Name "C:\music1.txt" As "C:\music.txt" /要求完整路径/
I = 0
Open "C:\filepath.txt" For Input As #1
Open "C:\filepath1.txt" For Output As #2
[Do Until EOF(1)
Input #1, temp
If I <> List1.ListIndex Then Write #2, temp
I = I + 1
Loop]
/同上,替代关系,将文档filepath1.txt替代filepath.txt文档/
Close #1, #2
Kill "C:\filepath.txt"
Name "C:\filepath1.txt" As "C:\filepath.txt"
Call wmp.currentPlaylist.RemoveItem(wmp.currentPlaylist.Item(List1.ListIndex))
/让歌曲在wmp中去除/
List1.RemoveItem (List1.ListIndex) /让歌曲在列表中去除/
End If
3.3.3 删除本地文件
在command5控件的单击事件中输入代码:
Do Until EOF(1)
Input #1, temp
If I <> List1.ListIndex Then
Write #2, temp
Else
Kill temp /删除本地文件/
End If
I = I + 1
Loop
/与删除文件代码相似,但也有所不同/
3.4 操作
3.4.1 wmp
Wmp中不用编写代码,调用wmp中的事件,方法就可以实现歌曲的播放,暂停,下一首,上一首,音量的调整。
3.4.2 控制
菜单编辑器是VB中重要的一种应用,是显示在窗口界面上端具有选择功能的按键。
菜单编辑器如图3-1所示:
图3-1 菜单编辑器图
1)顺序播放:
Timer1.Enabled = False
allloop.Checked = False
oneloop.Checked = False
rand.Checked = False
rule.Checked = True
Call wmp.settings.setMode("shuffle", False)/代码最后一行说明默认随机停止/
2)随机播放:
rand.Checked = True
Call wmp.settings.setMode("shuffle", True)
3)全部循环:
allloop.Checked = True
Call wmp.settings.setMode("loop", True) loop/循环,默认顺序播放/
4)单曲循环:
Timer1.Enabled = True
oneloop.Checked = True
/单曲循环中用到timer控件单曲循环设置/
If wmp.currentMedia.duration - 0.5 < wmp.Controls.currentPosition Then
Call wmp.Controls.playItem(wmp.currentPlaylist.Item(one))
End If /单曲循环设置/
4. 程序描述
4.1 音乐播放器界面:
该窗体是主窗体,整个程序只有一个窗体,其他功能都是由添加控件完成。窗体中大
致分为三个模块:保存,删除,基本操作三部分。
该窗体设置了command按钮控件5个,timer时间控件2个,CommonDialog(cd)选取文件控件1个,label标签控件1个,Windows Media Player(wmp)播放器控件1个,list列表控件1个。
1)Form代码:
Private Sub Form_Load()
Dim x As String, y As String
Label1.Caption = ""
/在主窗口载入事件中,首先设置label标签控件,当没有歌曲播放时,标签没有显示任何东西/
If Dir("C:\filepath.txt") = "" Or Dir("C:\music.txt") = "" Then
Open "C:\filepath.txt" For Output As #1
Close #1
Open "C:\music.txt" For Output As #2
Close #2
End If
Open "C:\filepath.txt" For Input As #1
Open "C:\music.txt" For Input As #2
/利用if语句判断,当建立的两个文档(路径文档,歌曲名称文档)其中一个不为空,则执行打开和载入文档操作,分别定义为文件号1,文件号2/
Do While Not EOF(1)
Input #1, x
Input #2, y
If Dir(x) <> "" Then
List1.AddItem (List1.ListCount + 1) & "." & y
Call wmp.currentPlaylist.insertItem(wmp.currentPlaylist.Count, wmp.newMedia(x))
End If
/载入歌曲后,设置list列表控件显示的内容,格式为“数字.歌曲名称”,调用wmp控件,wmp控件播放顺序设置为list列表显示的歌曲顺序/
Loop
Close #1, #2
Timer1.Enabled = False
allloop.Checked = False
oneloop.Checked = False
rand.Checked = False
rule.Checked = True
/其中allloop为全部循环,oneloop为单曲循环,rand为随机播放,rule为顺序播放/
Call wmp.settings.setMode("shuffle", False)
/设置初始的播放顺序为顺序播放True,其他播放顺序为False/
Timer2.Enabled = True
/其中Timer2是设置label控件,每当播放一个歌曲,显示当前播放歌曲名。(详细请看Timer2控件)/
End Sub
2)Timer2控件代码:
Private Sub Timer2_Timer()
If wmp.currentPlaylist.Count <> 0ThenLabel1.Caption =wmp.currentMedia.getItemInfo("title")
End Sub
/由此控制label1控件显示,只要有歌曲的播放,就会显示当前播放歌曲名称/
4.2 保存:
保存分为多文件保存,单文件保存,文件夹保存三个部分。
4.2.1 多文件,单文件保存
Private Sub Command1_Click() /添加文件/
Dim strFileName As String
cd.DialogTitle = "打开音乐文件"
cd.Filter = "mp3|*.mp3|wma|*.wma"
cd.InitDir = "D:\" /显示起始目录/
cd.Flags = cdlOFNExplorer + cdlOFNAllowMultiselect
cd.ShowOpen
strFileName = cd.FileName 'filename
打开文件夹保存歌曲,过滤文件,多文件选择都利用了CommonDialog(cd)选择文件控件,其中cd属性Filter用于过滤歌曲文件,文件类型为mp3,wma的文件自动显示。
cd属性Flags的OFNAllowMultiselect是有多文件选择的功能。filename属性就返回一个包含全部所选文件名的字符串,串中各文件名用空格隔开ctr$(0)。
1)多文件保存代码:
If (strFileName <> "") Then
Dim sPath, tmpStr As String
Dim sFile() As String
Dim iCount As Integer
Dim I As Integer
/其中iCount 文件数,sPath 路径,sFile() 文件名/
sPath = CurDir() /表示当前路径/
tmpStr = Right$(strFileName, Len(strFileName) - Len(sPath))
/将文件名与路径分离,取右部字符(全部所选文件名)/
If Left$(tmpStr, 1) = Chr$(0) Then
/选择了多个文件(分离后第一个字符为Chr$(0))/
For I = 1 To Len(tmpStr)
If Mid$(tmpStr, I, 1) = Chr$(0) Then
iCount = iCount + 1
ReDim Preserve sFile(iCount) /重新定义数组/
Else
sFile(iCount) = sFile(iCount) & Mid$(tmpStr, I, 1)
End If
Next I
/分离多文件,成为单个文件/
2) 单文件代码:
Else
iCount = 1
ReDim Preserve sFile(iCount)
If Left$(tmpStr, 1) = "\" Then tmpStr = Right$(tmpStr, Len(tmpStr) - 1)
sFile(iCount) = tmpStr
End If
If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
/此次操作使单文件路径,歌曲名彻底分开/
3)文件处理代码:
Open "C:\filepath.txt" For Append As #1
For I = 1 To iCount
Call wmp.currentPlaylist.insertItem(wmp.currentPlaylist.Count, wmp.newMedia(sPath & sFile(I)))
展开阅读全文