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

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. JavaScript Patterns 4.10 Curry

    Function Application apply() takes two parameters: the first one is an object to bind to this inside ...

  2. Mysql Error:1205错误诊断

    前两天遇到一个1205(ER_LOCK_WAIT_TIMEOUT)的错误,弄了半天终于找到原因,掌握原理+细心才能找到罪归祸首.下面我给大家分享下这个问题的分析处理过程,希望对大家有所帮助.接到sla ...

  3. JavaWeb防止表单重复提交(转载)

    转载自:http://blog.csdn.net/ye1992/article/details/42873219 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用 ...

  4. 谷歌/微软/必应web页面免费翻译插件

    随着网络时代的日益壮大,现在我们经常需要浏览一些各种外语的网页,或者是查阅资料帮助我们解决问题.更多的时候还是头疼在语言障碍上,正所谓"它认识你,你不认识它啊."谷歌和微软两个企业 ...

  5. [译] 企业级 OpenStack 的六大需求(第 2 部分):开放架构和混合云兼容

    全文包括三部分: 第一部分:API 高可用和管理以及安全模型 第二部分:开放架构和混合云兼容 第三部分:弹性架构和全球交付 在本系列的第一部分,我介绍了企业级 OpenStack 的六大需求.现在,我 ...

  6. 大话设计模式C++版——抽象工厂模式

    前面说过,简单工厂模式是最基础的一种设计模式,那以工厂命名的设计模式就是23种设计模式中最多的一种,他们一脉相承,一步一步进化而来,这里就是其中的最后一种——抽象工厂模式(Abstract Facto ...

  7. Unity自学路线整理(参看微信公众号Unity墙外的世界的文章 )

    目前还是个新手. 发现自己有时候还是会一脸蒙...的对着电脑屏幕不知所措,为了利用好在大学零散的时间所以整理一下学习unity的路线. 计划好才能更好的利用时间. 1. 先学好C#再去看引擎,我看的是 ...

  8. NGUI Label Color Code

    UILabel的颜色代码 NGUI的Label文档:http://www.tasharen.com/?page_id=166 you can embed colors in [RrGgBb] form ...

  9. Java中的单例模式

    单例模式: public class Person{ public static Person per; //定义一个静态变量,用来存储当前类的对象 private Person() //构造一个私有 ...

  10. idea常用快捷键

    十大Intellij IDEA快捷键 2015-01-16 21:31 122307人阅读 评论(38) 收藏 举报 本文章已收录于: .embody { padding: 10px 10px 10p ...