今天把剩余功能的具体实现补充总结,如果你想对整个小项目有清楚的了解,建议去看下前几篇博客。

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

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

3.在线音乐网站(3)Part one 功能实现

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

d.歌曲添加功能的实现

管理员或是被管理员授权的用户可以将自己喜欢的歌曲添加到在线音乐网站的首页排行榜中。如图7.5所示。

图7.5 歌曲添加

通过在ASP.NET页面定义标签中的错误属性,如下代码:

Display="Dynamic" ErrorMessage="RequiredFieldValidator">歌手信息不为空

歌手信息不为空 在点击添加后,程序将检查各个文本框的内容是否符合要求,并显示相应提示。

在各信息无误的情况下,程序将会把信息通过SQL语言插入到各数据表中,关键代码如下:

 try
{
upload.SaveAs(path + musicname);
conn.Open();
SqlTransaction myTrans = conn.BeginTransaction();
try
{
SqlCommand cmd = new SqlCommand();
cmd.Transaction = myTrans;
insert_music(conn, musicname, cmd);
if (!isExisted("album", "album", conn, cmd))
{
insert_album(conn, cmd);
}
if (!isExisted("singer", "singer", conn, cmd))
{
insert_singer(conn, cmd);
}
myTrans.Commit();
msg.Text = "音乐添加成功!";
singer.Text = "";
birthday.Text = "";
hobby.Text = "";
album.Text = "";
profile.Text = "";
}
}

e.歌单不同类型播放的实现

用户可以根据自己喜好来选择播放榜单歌曲的方式(随机播放、顺序播放、单曲重复),如下7.6图。

图7.6 歌单不同类型播放

在前台页面中将DropDownList中的索引值与内容对应,如下代码:

<asp:DropDownList>
<asp:DropDownList ID="ddlPlayType" runat="server">
<asp:ListItem Value="0">顺序播放</asp:ListItem>
<asp:ListItem Value="1">随机播放</asp:ListItem>
<asp:ListItem Value="2">单曲循环</asp:ListItem>
</asp:DropDownList>

当用户播放下一首歌曲时,程序会通过比较DropDownList当前索引值,来决定传入播放器的音乐文件的ID。关键代码如下:

//顺序播放
if (ddlPlayType.SelectedValue == "")
{
int listCount = Select1.Items.Count;
//这是最后一首的时候
if ((selectIx + ) == listCount)
{
//将最后一首 设置为不可选状态
Select1.Items[selectIx].Selected = false;
//选择第一首歌曲
Select1.Items[].Selected = true;
//ID 为第一首歌的ID
id = Select1.Items[].Value;
}
else
{
//取下一首歌曲ID
id = Select1.Items[Select1.SelectedIndex + ].Value;
Select1.Items[selectIx].Selected = false;
Select1.Items[selectIx + ].Selected = true;
}
}
//随机播放
else if (ddlPlayType.SelectedValue == "")
{
//取随机数
Random rad = new Random();
//在歌曲数目中取个随机数
int radIx = rad.Next(, Select1.Items.Count);
//选择那首选中的随机歌曲的ID
id = Select1.Items[radIx].Value;
Select1.Items[selectIx].Selected = false;
Select1.Items[radIx].Selected = true;
}
//单曲循环
else
{
id = Select1.Items[selectIx].Value;
}

f.管理员维护歌曲

管理员登录到后台后,可以进行音乐、专辑、歌手信息的修改,如下7.7、7.8图。

图7.7 音乐信息修改

图7.8 音乐详细信息修改

通过添加按钮btn_Click事件使用更新和删除的SQL语言,将页面发生变更的信息同步到数据库当中去,关键代码如下:

cmd.CommandText = "update [music] set musicName=@musicName,singer=@singer,album=@album,type=@type where id=@id";
cmd.Parameters.Add("@musicName", SqlDbType.NChar).Value = musicName.Text.Trim().ToString();
cmd.Parameters.Add("@singer", SqlDbType.NChar).Value = singer.SelectedValue.Trim().ToString();
cmd.Parameters.Add("@album", SqlDbType.NChar).Value = album.SelectedValue.Trim().ToString();
cmd.Parameters.Add("@type", SqlDbType.NChar).Value = typelist.SelectedValue.Trim().ToString();

g.用户授权和注册

管理员可以授权用户成为管理员来进行网站曲目的维护,如图7.9。游客可以通过注册来成为在线音乐的用户,如图7.10。

图7.9 管理员授权页面

图7.10用户注册

1)授权实现过程:

当管理员登录后台,点击授权按钮,触发dg_ItemCommand事件,网站根据授权的用户ID,执行SQL 更新语句,关键代码如下:

if (e.CommandName == "allowUser")
{
msg.Text = "";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
string userId = dg.DataKeys[e.Item.ItemIndex].ToString();
conn.Open();
try
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "update [user] set type ='admin' where userId=@userId";
cmd.Connection = conn;
cmd.Parameters.Add("@userId", SqlDbType.NChar).Value = userId.Trim();
cmd.ExecuteNonQuery();
dataBind();
}

2)注册实现过程:

用户在输入注册页面的信息的同时,能判断用户名和e_mail的格式是否正确;

在点击添加按钮后,触发 addbtn_Click事件,并将信息插入到用户信息数据表中,关键代码如下:

try
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.Parameters.Add("@userId", SqlDbType.NChar).Value = userId.Text.Trim();
cmd.Parameters.Add("@passwd", SqlDbType.NChar).Value = password.Text.Trim();
cmd.Parameters.Add("@name", SqlDbType.NChar).Value = name.Text.Trim();
cmd.Parameters.Add("@sex", SqlDbType.NChar).Value = sex.SelectedValue.ToString();
cmd.Parameters.Add("@mail", SqlDbType.NChar).Value = mail.Text.Trim();
cmd.Parameters.Add("@type", SqlDbType.NChar).Value = "user";
if (!isExisted(cmd))
{
cmd.CommandText = "INSERT INTO [user] VALUES (@userId,@passwd,@name,@sex,@mail,@type)";
cmd.ExecuteNonQuery();
msg.Text = "注册成功!";
userId.Text = "";
name.Text = "";
mail.Text = "";
Response.Redirect("Default.aspx");
}
else
msg.Text = "用户名已经存在!";

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

  1. 在线音乐网站【03】Part one 功能实现

    今天打算把网站功能的具体实现给总结一下,如果你想了解整个小项目,建议你先看看前面2篇博客. 1.在线音乐网站(1)需求和功能结构 2.在线音乐网站(2)数据库和开发环境 7.网站主要模块实现 a.在线 ...

  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. 为什么Java中字符串是不可变的

    前言 在Java中,字符串是一个不可变的类,一个不可变的类指的是它的实例对象不能被修改,所有关于这个对象的信息在这个对象被创建时已初始化且不能被改变. 不可变类有很多优势,这篇文章总结了字符串类之所以 ...

  2. T-SQL性能调整(一)--编译和重新编译

    概念简介 我们平时所说的查询在SQLServer 中主要有两部分来实现: 编译查询,主要包括了五个环节(缓存查找.分析.代数化.优化.缓存新计划) 流程描述: 首先,在计划缓存中查找是否包含新的查询, ...

  3. Java AIO 异步IO应用实例

    项目地址:https://github.com/windwant/aio-test Server: package org.windwant.aio; import java.io.IOExcepti ...

  4. mysql截取longblob类型字段内一小块数据的方法

    由于longblob类型的字段内容一般都好大,最大限制是4G,所以在数据查询中读取一整块数据的方式是不现实的,这需要要截取的方法来获取需要的数据. 方法如下: hex(substring(A, ind ...

  5. Javascript Function()中的降龙十八掌

    原文地址:http://tutorialzine.com/2014/08/what-does-this-function-do/ 下面列出十八个JS function,看你知道这些函数是干嘛用的,你能 ...

  6. mysql密码相关

    Windows中修改密码在不同场景下,有以下几种方案: 方法1:用SET PASSWORD命令,具体更新密码步骤如下: c:>mysql -u root   mysql>set passw ...

  7. devtmpfs文件系统创建设备节点

    分类: LINUX 原文地址:devtmpfs文件系统创建设备节点 作者:wangbaolin719 http://blog.chinaunix.net/uid-27097876-id-4334356 ...

  8. ELF Format 笔记(六)—— 字符串表

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 字符串表中包含若干以 null 结尾的字符串,这些字符串通常是 symbol 或 section 的名字.当 ...

  9. Azure Linux VM Swap 分区

    默认情况下,Windows Azure上的Linux VM是没有Swap分区的.下面我们以Ubuntu为例,为Windows Azure上的Linux虚拟机创建Swap分区. Windows Azur ...

  10. 浅析Java中的访问权限控制

    浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但 ...