今天打算把网站功能的具体实现给总结一下,如果你想了解整个小项目,建议你先看看前面2篇博客。

1.在线音乐网站(1)需求和功能结构

2.在线音乐网站(2)数据库和开发环境

项目源码:https://git.oschina.net/LanboEx/online-music.git

7.网站主要模块实现

a.在线音乐前台

由于在线音乐网站要提供用户在线音乐的相关服务,当用户打开网站时,引入眼帘的是首页,所以首页的对于整个网站来说是非常重要的一个页面,首页排版和设计的美观与否将直接影响到游客的浏览和用户的注册。首页不仅要实现各种功能的展示,而且还要着眼于系统整体风格,能让首页做到功能完善,页面简洁美观。

网站前台有歌曲排行榜展示、专辑排行榜展示、歌手排行榜展示、用户登录和注册、系统歌曲搜索、试听排行榜歌曲和下载排行榜歌曲、我的收藏等功能。程序运行结果如图7.1所示。

 
图7.1 前台主界面图

实现过程:

1)在进入音乐排行榜、专辑排行榜、歌手排行榜、我的收藏等功能时,实现AJAX技术效果,不刷新整个页面,只是异步刷新相应的排行表格数据,这样在增强用户体验的同时,也最大化的保证了已经登录的用户信息的安全,关键代码如下:

$(function () {
l();
})
function l(m) {
$.ajax({
type: "post",
url: "ajaxmlist.aspx",
data: "id=" + m,
success: function (msg) {
if (m == "") {
$("#ltitle").html("音乐排行榜")
}
if (m == "") {
$("#ltitle").html("专辑排行榜")
}
if (m == "") {
$("#ltitle").html("歌手排行榜")
}
if (m == "") {
$("#ltitle").html("我的收藏")
}
//将数据放入LIST中
$("#mlist").html(msg);
}
})
}

2)首页的登录区,可以在用户提交登录信息后,将信息与用户数据表中对比,并判断是用户还是管理员,并做出不同的页面跳转动作,关键代码如下:

 Session["type"] = "";
Session["userId"] = "";
string sql = "select password,[type] from [user] where userId=@userId";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@userId",SqlDbType.NChar).Value = userId.Text.Trim();
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
string passwd = "";
if (dr.Read())
{
passwd = dr.GetString();
if(passwd.Trim().ToString() == Password.Text.Trim().ToString())
{
Session["userId"] = userId.Text.ToString();
if (dr.GetString().Trim().ToString() == "admin")
Response.Redirect("~/musicChange.aspx?userId=" + userId.Text.ToString() + "");
else
Response.Redirect("Default.aspx");
}
}
else {
Session["userId"] = null;
Session.Clear();
FailureText.Text = "账号或密码错误,登录失败!";
}

b.歌曲的试听和下载 

当用户进入在线音乐网站时,可以试听歌曲排行榜的任何一首歌曲,如下图7.2,同时也可以把它下载到本地电脑上面如图7.3。

图7.2 歌曲试听界面

图7.3 歌曲下载界面

1)试听功能的实现过程

在音乐排行榜数据表格中,定义如下代码:

<a href='playlist.aspx?id="+ dt.Rows[i]["id"].ToString() + "' target='_blank' >"

用户点击歌曲名称是进入歌曲试听界面,程序将通过歌曲ID,获取歌曲文件路径,并传递给播放器,关键代码如下:

string path = new DirectoryInfo(Server.MapPath("")).FullName.ToString() + @"\file\" + updateMusic();
string str = path.Replace('\\', '/');
fileUrl = str;
update_album();
update_singer();
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
string sql = "select * from [music]";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
ListItem listItem = new ListItem { Value = dr.GetString(), Text = dr.GetString() };
Select1.Items.Add(listItem);
}
Select1.Items[].Selected = true;
dr.Close();
cmd.Connection.Close();

2)下载功能的实现过程

在音乐排行榜数据表格中,定义如下代码:

<a href='downLoadList.aspx?id=" + dt.Rows[i]["id"].ToString() + "'>下载</a>

当用户点击下载按钮后,程序将通过歌曲ID,获取到歌曲的文件路径,并通过Response对象将文件写出,关键代码如下:

string m_name = downMusic();
string path = new DirectoryInfo(Server.MapPath("")).FullName.ToString() + @"\file\" + m_name;
string str = path.Replace('\\', '/');
update_album();
update_singer();
System.IO.FileInfo file = new System.IO.FileInfo(str); if (file.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(m_name)));
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Filter.Close();
Response.WriteFile(file.FullName);
Response.End();
} else
{
Response.Write("This file does not exist.");
}
Response.Redirect("Default.aspx");

c. 歌曲模糊搜索功能

当用户只记得歌曲名、专辑、歌手的一部分的时候,在线音乐网站采用了模糊搜索,同样可以搜到你想听的歌曲,如图7.4所示。

图7.4 搜索

实现过程:

用户在搜索框中输出文本时,当点击搜索按钮时,会触发search_btn_Click事件,同时会将文本和搜索类型传入搜索页面的dataBind方法中,通过使用查询数据库含有like '%'的语句,可以实现对歌曲的模糊搜索,关键代码如下:

if (type.Equals("music"))
{
cmd.CommandText = "SELECT * FROM [music] WHERE(musicName like '%'+@musicName+'%') ORDER BY count DESC";
cmd.Parameters.Add("@musicName", SqlDbType.NChar).Value = name;
}
else if(type.Equals("singer"))
{
cmd.CommandText = "SELECT * FROM [music] WHERE(singer like '%'+@singer+'%') ORDER BY count DESC";
cmd.Parameters.Add("@singer", SqlDbType.NChar).Value = name;
}
else
{
cmd.CommandText = "SELECT * FROM [music] WHERE(album like '%'+@album+'%') ORDER BY count DESC";
cmd.Parameters.Add("@album", SqlDbType.NChar).Value = name;
}
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
SqlCommandBuilder sqlcb = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "music");
if (ds.Tables["music"].Rows.Count > )
{
dg.DataSource = ds;
dg.DataBind();
}
else
{
dg.Visible = false;
msg.Text ="没有找到相关文件!";
}
}

在线音乐网站【03】Part one 功能实现的更多相关文章

  1. 在线音乐网站【04】Part two 功能实现

       上一篇博客里面已近总结了三个功能的具体实现,今天把剩余功能的具体实现补充总结,如果你想对整个小项目有清楚的了解,建议去看下前几篇博客. 1.在线音乐网站(1)需求和功能结构 2.在线音乐网站(2 ...

  2. Vue2全家桶+Element搭建的PC端在线音乐网站

    目录 1,前言 2,已有功能 3,使用 4,目录结构 5,页面效果 登录页 首页 排行榜 歌单列表 歌单详情 歌手列表 歌手详情 MV列表 MV详情 搜索页 播放器 1,前言 项目基于Vue2全家桶及 ...

  3. 玩转Django2.0---Django笔记建站基础十一(二)((音乐网站开发))

    11.5 歌曲排行榜 歌曲排行榜是通过首页的导航链接进入的,按照歌曲的播放次数进行降序显示.从排行榜页面的设计图可以看到,网页实现三个功能:网页顶部搜索.歌曲分类筛选和歌曲信息列表,其说明如下: 1. ...

  4. 玩转Django2.0---Django笔记建站基础十一(一)(音乐网站开发)

    第十一章 音乐网站开发 本章以音乐网站项目为例,介绍Django在实际项目开发中的应用,该网站共分为6个功能模块分别是:网站首页.歌曲排行榜.歌曲播放.歌曲点评.歌曲搜索和用户管理. 11.1 网站需 ...

  5. Maven+JSP+SSM+Mysql实现的音乐网站

    项目简介 项目来源于:https://gitee.com/coder_ze/iMusic 本系统基于Maven+JSP+SSM+Mysql实现的音乐网站.主要实现的功能有音乐播放.下载.上传等几个模块 ...

  6. Andriod小项目——在线音乐播放器

    转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...

  7. 我是怎么开发一个小型java在线学习网站的

    2016/1/27 11:55:14 我是怎么开发一个小型java在线学习网站的 一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,就萌发了开发一个在线ja ...

  8. iOS在线音乐播放SZKAVPlayer(基于AVPlayer的封装)

    由于最近闲着没事,想找有关在线音乐播放的demo学习一下,在gitHub跟code4APP上面查找了很多帖子,结果很多在线音乐都是基于AudioStream实现的,我感觉用起来不太方便.后来突然发现, ...

  9. HTML5初学者福利!11个在线学习网站推荐

    HTML5初学者福利!11个在线学习网站推荐 HTML5的强大及流行趋势,让更多的人想要系统的对它进行学习.而大多数人获取HTML5知识的重要途径都是网络,不过面对五花八门的搜索结果,是不是觉得摸不着 ...

随机推荐

  1. MongoDB 安装(Window/Linux)

    MongoDB安装在Windows上 在 Windows上,首先要安装 MongoDB下载最新发布的MongoDB: http://www.mongodb.org/downloads 确保得到正确的版 ...

  2. (转)教你记住ASP.NET WebForm页面的生命周期

    对于ASP.NET Webform的开发者,理解ASP.NET Webform的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特定的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供 ...

  3. JavaScript Patterns 5.7 Object Constants

    Principle Make variables shouldn't be changed stand out using all caps. Add constants as static prop ...

  4. JavaScript Patterns 5.3 Private Properties and Methods

    All object members are public in JavaScript. var myobj = { myprop : 1, getProp : function() { return ...

  5. MySQL运行状态show status中文详解(转)

    要查看MySQL运行状态,要优化MySQL运行效率都少不了要运行show status查看各种状态,下面是参考官方文档及网上资料整理出来的中文详细解释: 状态名 作用域 详细解释 Aborted_cl ...

  6. IO系统性能之一:衡量性能的几个指标

    作为一个数据库管理员,关注系统的性能是日常最重要的工作之一,而在所关注的各方面的性能只能IO性能却是最令人头痛的一块,面对着各种生涩的参数和令人眼花缭乱的新奇的术语,再加上存储厂商的忽悠,总是让我们有 ...

  7. OpenStack Austin 峰会观察:OpenStack as IaaS 已是过去,Solutions on OpenStack 才是未来

    虽然搞 OpenStack 前后也有几年,但是今年在美国 Austin 举办的 OpenStack Summit 我还是第一次参加.回来之后,一直还在回味,觉得要写点东西,将我在这次峰会上的观察和思考 ...

  8. 2014 UESTC暑前集训动态规划专题解题报告

    A.爱管闲事 http://www.cnblogs.com/whatbeg/p/3762733.html B.轻音乐同好会 C.温泉旅馆 http://www.cnblogs.com/whatbeg/ ...

  9. jQuery UI常用插件使用

    一.什么是插件 ①是遵循一定接口规范编写的程序 ②是原有系统平台功能的扩展和补充 ③只能运行在规定的系统平台下,而不能单独运行 注:由于jQuery插件是基于jQuery脚本库的扩展,所以所有jQue ...

  10. Guava 是个风火轮之函数式编程(3)——表处理

    云栖社区> 博客列表> 正文 Guava 是个风火轮之函数式编程(3)--表处理 潘家邦 2016-01-26 13:19:21 浏览1062 评论0 java Guava 摘要: 早先学 ...