在线音乐网站【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知识的重要途径都是网络,不过面对五花八门的搜索结果,是不是觉得摸不着 ...
随机推荐
- WEB核心IOC篇
ioc概念的理解:(不是技术是一种设计思想) IOC (控制反转) IoC(Inverse of Control)的字面意思是 控制反转 ,它包括两个内容: 其一是控制 (控制对象的实 ...
- spring listener监听器
1.Listener的定义与作用 监听器Listener就是在application,session,request三个对象创建.销毁或者往其中添加修改删除属性时自动执行代码的功能组件. Listen ...
- PostgreSQL模仿Oracle的instr函数
-- -- instr functions that mimic Oracle's counterpart -- Syntax: instr(string1, string2, [n], [m]) w ...
- Hadoop+MongoDB的四种方案
背景: 公司核心业务库现存在MongoDB中,分布在6台MongoDB节点.现面临如下问题: 1.最大的一张表有10多个G,MongoDB在查询方面尚能胜任,但是涉及到复杂计算时会比较吃力. 2.Mo ...
- 简析一下SQL Server里面Fast_Forword 和 SRROLL 的区别
这次简单说说游标的分类. 先看看通常游标的语法 DECLARE cursor_name CURSOR [ LOCAL :局部游标,仅在当前会话有效 | GLOBAL : 全局游标,全局有效,可以 ] ...
- oracle11G使用DGbroker创建dg
1.环境: a.主机环境:centos6.5 b.软件环境:oracle 11.2.0.4 c.主机信息: DG1:192.168.100.51(数据库sid:atest) DG2:192.168.1 ...
- Linux的文件时间
在windows下,一个文件有:创建时间.修改时间.访问时间.而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 1.访问时间,读一次这个文件的内容,这个时间就会更新. ...
- RCP常见问题
1.NoClassDefFoundError 解决办法: 查下依赖和插件启动情况 (manifest的requires和Import.osgi console插件启动情况) manifest的runt ...
- RSA Study
These days I study the RSA Algorithm. It is a little complex, but not very. Also, my study has not f ...
- monkey学习笔记
Monkey一. Monkey 是什么?Monkey是Android中的一个命令行工具,它其实就是SDK中附带的一个工具,可以运行在模拟器里或实际设备中. 二.Monkey 测试的目的?Monkey测 ...