上一篇博客里面已近總結了三個功能的具體實現,今天把剩余功能的具體實現補充總結,如果你想對整個小項目有清楚的了解,建議去看下前幾篇博客。
1.AJAX在線音樂網站(1)需求和功能結構
2.AJAX在線音樂網站(2)數據庫和開發環境
3.AJAX在線音樂網站(3)Part one 功能實現
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 = "用戶名已經存在!";
新聞熱點
疑難解答