本文阐述了音乐网站的设计与实现,本系统采用ASP+SQL Sever 2000作为开发工具。前台主要实现歌曲的分类显示及分类查询、歌曲的在线试听及下载、会员注册、登录以及最新音乐的新闻介绍,并且还为用户提供了在线交流的平台等功能;后台主要用于数据库的管理,管理员对影视歌曲的添加、删除、更新及对注册会员和音乐新闻的管理、系统的维护等功能。本系统操作简单,界面友好。
在数字化的网络环境下,人们希望在忙碌工作后能有闲暇时间听音乐放松一下心情,根据自己的情况听到想听的音乐,而不会再为了能听一首歌翻箱倒柜或者四处奔波找寻;服务企业也希望能给人们提供全面的灵活的服务,同时希望人们能在网站上找到自己喜欢的音乐。所以音乐网站下载软件正是迎合这一市场需求而开发的,它旨在探索一种以互联网为基础的音乐交流平台。通过这种模式,为网民创造一种享受音乐的环境,使音乐突破时空限制,让音乐更加贴近,充实生活。本课题设计实现了用户在线收听,下载,搜索音乐及提供交流平台等功能,具有操作简便,界面友好等特性。贴近现实需求。
该流程图描述了后台管理员对网站的管理,管理员可以对歌曲进行添加,修改,删除。具体的添加功能是通过本地浏览把歌曲上传到网站;修改歌曲信息或者删除点击率低的歌曲等功能。如图3.1所示。
本系统设计的初衷是会员可以享受网站的功能,未注册的游客只能浏览网站,不能进行其他操作。因此当用户在进入网站的一开始便会对用户的身份和权限进行验证,反馈不同的页面给不痛的用户而用户,从而实现对权限的划分功能。注册后成为会员,就可在网站上在线视听音乐、在线看电影、搜索歌曲、在线留言(音乐论坛)、享受专辑的在线视听以及实现下载歌曲等功能。也可以在论坛上和其他会员进行交流。管理员身份除了享有普通会员的权限以外,还可以对歌曲的添加、删除、修改以及上传文件、管理个人资料、修改登陆账号和密码等操作。该流程图描述了音乐网站的整个流程,如图3.2所示。
4.1.1 系统主要功能
- 用户注册登录功能:只有登录注册后才能使用本网站功能;
- 在线视听:会员能在线收听音乐,在线收看电影;
- 下载功能:会员能下载音乐;
- 网站对歌曲进行分类,使会员根据自己喜爱试听或下载歌曲;
- 网站提供新歌推荐和音乐排行榜项目,使会员能第一时间找到热门歌曲;
- 搜索功能:会员能通过输入歌手或者歌曲名找到自己想听的音乐;
- 论坛:提供会员交流的平台;
- 管理员对歌曲的添加,修改,删除;
- 系统支持多种格式的音乐上传;
- 管理员账号管理。
4.1.2主要功能模块
- 后台管理模块
该模块只对管理员开放,管理员可以对歌曲进行添加,修改,删除。具体的添加功能是通过浏览把歌曲上传到网站;修改歌曲信息或者删除点击率的歌曲等功能。如图4.1所示。
- 前台管理模块
该模块用户注册后即成为会员,就可在网站上在线试听音乐,在线看电影,搜索歌曲以及下载歌曲。也可以在论坛上和其他会员进行交流。在线试听主要采用在用户端调用windows默认播放器media player从服务器数据库查询播放歌曲的路径,赋予播放器来实现的.而下载的功能是利用stream组件的读写操作,从服务器端打开并读取文件向浏览器端的stream写入数据,用户端再保存文件到本地计算机来实现的.搜索功能,主要采取的三模糊查询和精确查询两种.在搜索歌手的时候三用的精确查询,换句话说就是必须要正确输入想要查询的歌手的名字才能够查询到相应的歌曲,而对歌曲名称的搜索三模糊查询,用户可以输入相关的字段便可以从数据库里面找到相近或相似的歌曲.音乐论坛用到的计算就相对较简单一点,主要是对数据库执行插入、更新和查询的操作。详细模块的介绍如图4.2所示。
4.2数据库的分析与设计
4.2.1数据库的需求分析
本课题开发的数据库包括三个方面。
- 论坛信息数据表:存储论坛有关数据及论坛留言,即论坛基本参数信息数据、论坛留言主题信息数据表。
- 歌曲数据表:存储歌曲基本参数信息,包括歌曲单曲存储表及歌曲专集存储表。
- 用户数据表:存储注册用户有关数据,包括注册用户信息数据表、用户登录账号管理存储表。
4.2.2数据库结构设计
本课题使用SQL Sever 2000作为数据库管理系统,现将数据库中包含的数据表及相应功能如下表4.1所示:
表4.1 数据库包含的数据库表及其功能
数据表 | 功能 |
BBS | 存放用户论坛留言基本信息 |
information | 存放歌曲的基本信息 |
movie | 存放电影的基本信息 |
vip | 存放用户注册基本信息 |
zhuanji | 存放歌曲专集信息 |
zhuce | 存放用户登录的基本信息 |
- 数据库包含的数据表的关系视图:
- 注册用户信息表vip
注册用户信息表用于存放注册用户的基本信息,包括用户名(name)、个人密码(pass)、邮箱地址(mail)、用户性别(sex)、注册时间(date)、用户类型(admin)。其中,name(用户姓名)字段作为该表的主关键字(primary key)。如表4.2所示:
表4.2 vip表设计
字段名 | 数据类型及长度 | 说明 | 备注 |
name | char(100) | 用户姓名 | 主关键字 |
pass | char(100) | 用户密码 | not null |
| char(200) | 电子邮件 | null |
sex | char(50) | 用户性别 | null |
[date] | datetime(8) | 注册时间 | not null |
admin | text(16) | 用户类型 | null |
- 用户登录信息表 zhuce
该表用于记录用户登录的基本信息,包括用户名(name)、密码(password)及注册时间([date])。其中,name(用户姓名)做为该表的主关键字。如表4.3所示:
表4.3zhuce表设计
字段名 | 数据类型及长度 | 说明 | 备注 |
name | char | 用户姓名 | 主关键字 |
password | char | 用户密码 | not null |
[date] | datetime | 注册时间 | not null |
- 歌曲基本信息表 information
该表存放歌曲的基本信息,包括歌曲ID(id)、歌手名字(singer)、歌曲名(song)、歌曲类型(type)、新歌推荐(class)、歌曲介绍(introduce)、点击率(hit)、歌曲URL(url)。其中id字段作为该表的主关键字,标识为“是”,标识种子为“1”,标识增量为“1”,惟一标识了一个歌曲基本信息。如表4.4所示:
表4.4 information表设计
字段名 | 数据类型及长度 | 说明 | 备注 |
id | int(4) | 歌曲ID | 主关键字 |
singer | char(100) | 歌手姓名 | null |
song | char(500) | 歌曲名字 | null |
type | char(100) | 歌曲类型 | null |
class | char(100) | 新歌推荐 | null |
introduce | char(1000) | 歌曲介绍 | null |
hit | int(4) | 点击率 | null |
url | char(3000) | 歌曲url | null |
4. 电影基本信息表 movie
该表存放电影的基本信息,包括主要电影ID(id)、演员姓名(name)、电影名字(moviename)、电影图片(moviephoto)、电影URL(movieurl)、电影简介(movieinform)、电影类型(type)、上传时间([date])。其中电影ID为主关键字。如下表所示:
表4.5 movie表设计
字段名 | 数据类型及长度 | 说明 | 备注 |
id | int(4) | 电影ID | 主关键字 |
name | char(1000) | 演员姓名 | null |
moviename | char(1000) | 电影名字 | null |
moviephoto | char(1500) | 电影图片 | null |
moveurl | char(2000) | 电影URL | null |
movieinform | char(1000) | 电影简介 | null |
type | char(500) | 电影类型 | null |
[date] | int(8) | 上传时间 | null |
5. 专集基本信息表 zhuanji
该表存放歌曲专集的基本信息,包括专集ID(id)、专集类型(type)、专集名称(song)、点击率(hit)、专集介绍(introduce)、专集URL(url)、专集图片(photo)。其中专集ID为主关键字。如下4.6表所示:
表4.6zhuanji表设计
字段名 | 数据类型及长度 | 说明 | 备注 |
id | int(4) | 专集ID | 主关键字 |
type | char(100) | 专集类型 | null |
song | char(700) | 专集名称 | null |
hit | char(100) | 点击率 | null |
introduce | char(5000) | 专集介绍 | null |
url | char(1000) | 专集URL | null |
photo | char(1000) | 专集图片 | null |
- 论坛数据信息表BBS
该表存放论坛留言功能具体信息。包括论坛ID(id)、用户名(username)、留言(message)和留言时间([date])。其中论坛ID为主关键字。
表4.7 BBS表设计
字段名 | 数据类型及长度 | 说明 | 备注 |
id | int(4) | 论坛ID | 主关键字 |
username | char(50) | 用户名 | null |
message | varchar(5000) | 留言 | null |
[date] | int(8) | 留言时间 | not null |
4.3系统主要功能实现
4.3.1网站主页的实现
用户注册后登录网站,便进入主页,即可在首页上点相应导航链接,进行所需操作。未经注册的会员也能登录主页,但不能进行试听歌曲等其他操作。
主页是通过对其他页面进行链接实现的,本系统还实现各种分类功能,如:华语男歌手、华语女歌手、国外歌曲、动漫歌曲、音乐排行榜、新歌推荐等,还提供搜索功能,根据歌曲或歌手来实现搜索功能,主页页面如下图所示。
登录功能的实现我们采用第一个表单页面让用户输入自己的会员账号和密码,然后发送到check.asp页面上查询数据库中保存的账号和密码进行身份验证,因为每一个用户登录系统都会自动分配一个session,所以我们把验证后的信息存储到session里面,方便后续页面的调用和认证:
<!--#include file="conn.asp"-->
<center>
<img src="img/error.GIF" /><span class="STYLE1">
<%
username=request.form("name")
password=request.form("pass")
exec="select * from vip where( name='"&username&"' and pass='"&password&"' )"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
if not rs.eof then
rs.close
conn.close
session("check")="checked"
session("name")=username
response.Redirect "index.asp"
else
session("check")=""
response.write ("出错拉,请你重新登录! 特别提醒: 账号和密码是您登录本系统的唯一认证,希望您妥善保管! ")
end if
%>
<%conn.close
set conn=nothing
%>
</span>
</center>
前台主页面显示了几个大块:一,音乐分类导航 二,专集列表 三,歌曲列表 四,会员登录信息 五,音乐搜索 六,新歌推荐 七,歌曲排行榜以及合作伙伴的链接。
主要代码如下:
<!--#include file="conn.asp"-->
<td height="25"><div align="center" ><a href="./index.asp" >首页</a></div></td>
……
<td><div align="center"><a href="./login.asp" target="_parent">用户登录</a></div></td>
<td><div align="center">
<%
if session("name")="admin" then
%>
<a href="http://localhost/biyesheji/admain/windowns.asp">
<%response.Write("管理")%>
</a></div>
<%else%>
<span class="STYLE19">
<%response.write("你是游客身份!")
end if
%>
- 会员信息代码:
<tr>
<td bordercolor="#FFFFFF">会员信息:欢迎您:
<%response.write(">>") & session("name")%>
<br>
你的登录时间:<br>
<%response.write(now)%></td>
</tr>
- 音乐搜索代码:
<form action="search1.asp" method="post">
歌手:
<input name="singer" type="text" style="width:120px" />
<br />
歌曲:
<input type="text" name="song"style="width:120px" />
<br />
<input type="submit" value="ok.." />
</form>
- 新歌推荐代码:
<ul>
<%
exec0="select * from information where class='new'"
set rs0=server.CreateObject("adodb.recordset")
rs0.open exec0,conn,1,1
do while not rs0.eof
%>
<li><a href="<%=rs0("url")%>"><%=rs0("song")%>----<%=rs0("singer")%></a></li>
<%
rs0.movenext
loop
%>
</ul>
- 歌曲列表模块代码:
<%
exec="select * from information where type='华语男歌手' order by hit desc"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
do while not rs.eof
%>
</span> </td>
</tr>
<tr>
<td><span class="STYLE25"><%=rs("singer")%></span> </td>
<td><span class="STYLE25"><%=rs("song")%></span> </td>
<td><span class="STYLE25"><%=rs("hit")%></span> </td>
<td><span class="STYLE9"></span> <a href="music.asp?filename=<%=rs("song")%>" target="_blank">试听</a></td>
<td><a href="download.asp?filename=<%=rs("song")%>" target="_blank"><span class="STYLE25">下载</span></a>
<%rs.movenext
loop
%>
- 数据库关闭并且释放内存代码:
<%
rs.close
set rs=nothing
rs0.close
set rs0=nothing
rs1.close
set rs1=nothing
conn.close
set conn=nothing
%>
未完待续。。。