在线音乐网站【04】Part two 功能实现
今天把剩余功能的具体实现补充总结,如果你想对整个小项目有清楚的了解,建议去看下前几篇博客。
项目源码: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 功能实现的更多相关文章
- 在线音乐网站【03】Part one 功能实现
今天打算把网站功能的具体实现给总结一下,如果你想了解整个小项目,建议你先看看前面2篇博客. 1.在线音乐网站(1)需求和功能结构 2.在线音乐网站(2)数据库和开发环境 7.网站主要模块实现 a.在线 ...
- Vue2全家桶+Element搭建的PC端在线音乐网站
目录 1,前言 2,已有功能 3,使用 4,目录结构 5,页面效果 登录页 首页 排行榜 歌单列表 歌单详情 歌手列表 歌手详情 MV列表 MV详情 搜索页 播放器 1,前言 项目基于Vue2全家桶及 ...
- 玩转Django2.0---Django笔记建站基础十一(二)((音乐网站开发))
11.5 歌曲排行榜 歌曲排行榜是通过首页的导航链接进入的,按照歌曲的播放次数进行降序显示.从排行榜页面的设计图可以看到,网页实现三个功能:网页顶部搜索.歌曲分类筛选和歌曲信息列表,其说明如下: 1. ...
- 玩转Django2.0---Django笔记建站基础十一(一)(音乐网站开发)
第十一章 音乐网站开发 本章以音乐网站项目为例,介绍Django在实际项目开发中的应用,该网站共分为6个功能模块分别是:网站首页.歌曲排行榜.歌曲播放.歌曲点评.歌曲搜索和用户管理. 11.1 网站需 ...
- Maven+JSP+SSM+Mysql实现的音乐网站
项目简介 项目来源于:https://gitee.com/coder_ze/iMusic 本系统基于Maven+JSP+SSM+Mysql实现的音乐网站.主要实现的功能有音乐播放.下载.上传等几个模块 ...
- Andriod小项目——在线音乐播放器
转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...
- 我是怎么开发一个小型java在线学习网站的
2016/1/27 11:55:14 我是怎么开发一个小型java在线学习网站的 一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,就萌发了开发一个在线ja ...
- iOS在线音乐播放SZKAVPlayer(基于AVPlayer的封装)
由于最近闲着没事,想找有关在线音乐播放的demo学习一下,在gitHub跟code4APP上面查找了很多帖子,结果很多在线音乐都是基于AudioStream实现的,我感觉用起来不太方便.后来突然发现, ...
- HTML5初学者福利!11个在线学习网站推荐
HTML5初学者福利!11个在线学习网站推荐 HTML5的强大及流行趋势,让更多的人想要系统的对它进行学习.而大多数人获取HTML5知识的重要途径都是网络,不过面对五花八门的搜索结果,是不是觉得摸不着 ...
随机推荐
- Unbuntu_14.04编译openjdk7
今天有问题需要研究一下JVM,但系统挂了,只能重装.在ubuntu下再次编译JDK,大约2个半小时,将遇到的问题笔记整理一下. 1.下载Openjdk Source Code 我用的是http://d ...
- Git从零教你入门(4):Git服务之 gogs部署安装
Git从零入门系列4: 先看上一篇文章: http://www.51testing.com/index.php?uid-497177-action-viewspace-itemid-3706817 今 ...
- informatica 学习日记整理
1. INFORMATICA CLIENT的使用 1.1 Repository Manager 的使用 1.1.1 创建Repository. 前提: a.在ODBC数据源管理器中新建一个数据源连接至 ...
- PMBOK学习笔记二-项目管理过程
项目管理过程可归纳为五类,即五大项目管理过程组 启动过程组.定义一个新项目或现有项目的一个新阶段,授权开始该项目或阶段的一组过程..规划过程组.明确项目范围,优化目标,为实现目标制定行动方案的一组过程 ...
- 测试驱动开发(Test-Driven Development,简称TDD)--单元测试-->提高代码质量
!!! 1.估算和做项目计划时要算上单元测试时间 2.开发之前写单元测试代码 盖房子的时候,工人师傅砌墙,会先用桩子拉上线,以使砖能够垒的笔直,因为垒砖的时候都是以这根线为基准的.TDD就像这样,先写 ...
- 理解JavaScript中的原型继承(2)
两年前在我学习JavaScript的时候我就写过两篇关于原型继承的博客: 理解JavaScript中原型继承 JavaScript中的原型继承 这两篇博客讲的都是原型的使用,其中一篇还有我学习时的错误 ...
- Java Se : Java NIO(服务端)与BIO(客户端)通信
Java目前有三种IO相关的API了,下面简单的说一下: BIO,阻塞IO,最常用的Java IO API,提供一般的流的读写功能.相信学习Java的人,都用过. NIO,非阻塞IO,在JDK1.4中 ...
- SQL 笔记
--查询某一列在哪个表里 SELECT name , object_id , type , type_desc FROM sys.objects WHERE object_id IN ( SELECT ...
- 【hbase】——HBase 写优化之 BulkLoad 实现数据快速入库
1.为何要 BulkLoad 导入?传统的 HTableOutputFormat 写 HBase 有什么问题? 我们先看下 HBase 的写流程: 通常 MapReduce 在写HBase时使用的是 ...
- Jade模板引擎(一)之Attributes
目录: Attributes Boolean Attributes Style Attributes Class Attributes &Attributes Attributes jade中 ...