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

简介:
+关注继续查看

d.歌曲添加功能的实现

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

 

图7.5 歌曲添加

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

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

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

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

复制代码
 1 try
 2         {
 3             upload.SaveAs(path + musicname);
 4             conn.Open();
 5             SqlTransaction myTrans = conn.BeginTransaction();
 6             try
 7             {
 8                 SqlCommand cmd = new SqlCommand();
 9                 cmd.Transaction = myTrans;
10                 insert_music(conn, musicname, cmd);
11                 if (!isExisted("album", "album", conn, cmd))
12                 {
13                     insert_album(conn, cmd);
14                 }
15                 if (!isExisted("singer", "singer", conn, cmd))
16                 {
17                     insert_singer(conn, cmd);
18                 }
19                 myTrans.Commit();
20                 msg.Text = "音乐添加成功!";
21                 singer.Text = "";
22                 birthday.Text = "";
23                 hobby.Text = "";
24                 album.Text = "";
25                 profile.Text = "";
26             }
27        }
复制代码

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 == "0")
        {
            int listCount = Select1.Items.Count;
            //这是最后一首的时候
            if ((selectIx + 1) == listCount)
            {
                //将最后一首 设置为不可选状态
                Select1.Items[selectIx].Selected = false;
                //选择第一首歌曲
                Select1.Items[0].Selected = true;
                //ID 为第一首歌的ID
                id = Select1.Items[0].Value;
            }
            else
            {
                //取下一首歌曲ID
                id = Select1.Items[Select1.SelectedIndex + 1].Value;
                Select1.Items[selectIx].Selected = false;
                Select1.Items[selectIx + 1].Selected = true;
            }
        }
        //随机播放
        else if (ddlPlayType.SelectedValue == "1")
        {
            //取随机数
            Random rad = new Random();
            //在歌曲数目中取个随机数
            int radIx = rad.Next(0, 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 = "用户名已经存在!"; 
复制代码

 本文转自Orson博客园博客,原文链接:http://www.cnblogs.com/java-class/p/4078108.html,如需转载请自行联系原作者

相关文章
|
8天前
|
存储 前端开发 测试技术
同城交友开发稳定版丨同城交友app系统开发详细程序/案例设计/方案逻辑/规则详情/源码设计
需求分析:明确系统的功能、特点和目标受众,并根据市场需求进行需求调研,从中提取核心功能和关键需求。
|
1月前
|
人工智能 机器人 Go
无需安装SD,QuickQR.Art艺术二维码保姆级教程!(营销新风口)
无需安装SD,QuickQR.Art艺术二维码保姆级教程!(营销新风口)
65 0
|
3月前
|
存储 安全 小程序
东郊到家预约APP及小程序系统开发(方案及逻辑)/功能设计/项目逻辑/开发案例/成熟技术/源码程序
 区块链技术还有一个很重要的优势就是可追溯性和不可篡改性。在区块链上进行的每一笔交易都会被记录在区块链上,并且这些交易记录都是透明的,任何人都可以查看
|
3月前
|
存储 区块链
即时聊天/即时通讯app系统开发详情方案/玩法规则/案例设计/源码说明
区块链的核心——分布式和存储不依赖于中心化的硬件或管理机构,在区块链中的所有节点的权限和义务都是对等的,Therefore,each result can also participate in the recording and maintenance of data.It differs from traditional data structures that rely on the"center"and can achieve point-to-point data transmission and real-time data recording,with higher effici
|
4月前
|
存储 数据采集 开发框架
智慧放射系统PACS系统源码 RIS系统源码
PACS即影像存档与传输系统,是医学影像、数字化图像技术、计算机技术和网络通讯技术相结合的产物,是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。 是基于DICOM标准的医学影像管理系统,其模块覆盖了从影像采集/传输/存储/处理、患者信息管理、诊断报告编辑/管理到综合查询统计等多种功能,支持CT、MR、CR、DR、ECT、DSA、X光机、超声、内镜、病理等多种设备。
智慧放射系统PACS系统源码 RIS系统源码
|
9月前
|
安全 Android开发 C++
VS Code 扩展开发如何保持用户视觉体验一致
本文介绍如何在 VS Code 插件的 webview 中加载本地的资源文件,并如何使用 VS Code 自身的 UI 来实现用户视觉体验的一致。
76 0
VS Code 扩展开发如何保持用户视觉体验一致
|
缓存 前端开发 API
不借助 Fiori client,直接在手机浏览器里调用 SAP UI5 BarcodeScanner 实现条形码扫描的可能性?
不借助 Fiori client,直接在手机浏览器里调用 SAP UI5 BarcodeScanner 实现条形码扫描的可能性?
98 0
不借助 Fiori client,直接在手机浏览器里调用 SAP UI5 BarcodeScanner 实现条形码扫描的可能性?
|
小程序 前端开发 PHP
Uni-App - 实战《悦读》之多应用、多平台统一登录关系
Uni-App - 实战《悦读》之多应用、多平台统一登录关系
138 0
xxpay支付平台使用演示(下)
xxpay支付平台使用演示(下)
137 0
xxpay支付平台使用演示(下)
xxpay支付平台使用演示(上)
xxpay支付平台使用演示(上)
105 0
xxpay支付平台使用演示(上)
推荐文章
更多