欢迎进入MyKTV前后台点歌系统展示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欢迎进入MyKTV前后台点歌系统展示相关的知识,希望对你有一定的参考价值。
一个项目,一分收获;一个项目,一些资源。Ktv项目也是一样的,所以我想分享我的收获,让你们获得你需要的资源。
一. 那MyKTV点歌系统具体的功能有哪些呢?我们就来看看吧!
1.MyKTV前台功能:
01.歌星点歌 、拼音点歌 、数字点歌 、类型选择 、金榜排行
02.切歌 、点歌 、重唱和退出
2.MyKTV后台功能:
01.歌手管理 、歌曲管理 、设置资源路径
02.新增歌手、歌曲 ,查询歌手、歌曲信息,设置歌曲路径和退出
二. 功能已经概括的差不多了,就让我们一起来看看MyKTV的项目吧
1.首先就是展现KTV的主界面,让我们先了解一下那些功能
01.实现各个共功能的主代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace MyKTVClient { public partial class frmMain : Form { public frmMain() { InitializeComponent(); } //当前播放的歌曲 private Song song; // 退出系统 SqlConnection con = new SqlConnection(DBHelper.str); private void tsbtnExit_Click(object sender, EventArgs e) { Application.Exit(); } private void MainForm_Load(object sender, EventArgs e) { DBHelper.frm = this; // 加载时,运行播放窗体 // 启动计时器 this.tim.Start(); // 歌手照片路径 string sql = "select resource_path from resource_path where resource_id=1"; SqlCommand cmd = new SqlCommand(sql, con); // 歌手照片路径 con.Open(); KTVUtil.singerPhotoPath = cmd.ExecuteScalar().ToString(); // 歌曲路径 sql = "select resource_path from resource_path where resource_id=2"; cmd.CommandText = sql; KTVUtil.songPath = cmd.ExecuteScalar().ToString(); con.Close(); } //已点歌曲窗体 private void tsbtnOrdered_Click(object sender, EventArgs e) { frmOrderedSongList frm = new frmOrderedSongList(); frm.Show(); } // 重新播放当前歌曲 private void tsbtnAgain_Click(object sender, EventArgs e) { PlayList.PlayAgain(); PlaySong(); } // 切歌 private void tsbtnCut_Click(object sender, EventArgs e) { if (txtnextsong.Text=="") { MessageBox.Show("暂无已点歌曲"); } else { PlayList.CutSong(-1); } } // 服务 private void toolStripButton1_Click(object sender, EventArgs e) { MessageBox.Show("当前无服务!"); } //播放歌曲 private void PlaySong() { this.song = PlayList.GetPlayingSong(); // 获取当前要播放的歌曲 if (song != null) { this.song.SetSongPlayed(); // 将当前歌曲播放状态设为已播放 this.Winplaymedia.URL = KTVUtil.songPath + "\\\\" + this.song.SongURL; // 得到当前播放歌曲的路径 string urlls = KTVUtil.singerPhotoPath +"\\\\"+ this.song.Singerurl;//歌手图片 lblsongname.Text = this.song.Singername;//歌手名字 try { this.pblist.Image = Image.FromFile(urlls); } catch (Exception) { MessageBox.Show("暂无歌手图片"); ; } } } // 定时扫描歌曲列表,显示当前播放歌曲的名称 private void timer1_Tick(object sender, EventArgs e) { // 在文本框中显示当前播放的歌曲名字 this.txtplay.Text = PlayList.PlayingSongName(); this.txtnextsong.Text = PlayList.NextSongName(); if (this.song == null) { this.PlaySong(); } if (this.Winplaymedia.playState == WMPLib.WMPPlayState.wmppsStopped) { this.song = null; // 将歌曲设为空 PlayList.MoveOn(); } // 切歌 if (this.song != null && this.song.PlayState == SongPlayState.cut) { this.Winplaymedia.URL = ""; this.song = null; } } // 按歌手点歌 private void picSinger_Click(object sender, EventArgs e) { frmOrderBySinger frm = new frmOrderBySinger(); frm.Show(); } // 拼音点歌 private void picSongName_Click(object sender, EventArgs e) { frmOrderBySongName frm = new frmOrderBySongName(); frm.Show(); } // 分类点歌 private void picSongType_Click(object sender, EventArgs e) { frmOrderBySongType frm = new frmOrderBySongType(); frm.Show(); } // 排行榜点歌 private void picSongList_Click(object sender, EventArgs e) { frmSongList frm = new frmSongList(); string sql = "select song_id,song_name,singer_info.singer_name,song_url,singer_info.singer_photo_url from song_info inner join singer_info on song_info.singer_id=singer_info.singer_id order by song_play_count desc"; frm.Sql = sql; frm.Onform = FanhuiForm.Main; frm.Show(); } // 字数点歌 private void picWordCount_Click(object sender, EventArgs e) { frmOrderByWordCount frm = new frmOrderByWordCount(); frm.Show(); } private void frmMain_FormClosing(object sender, FormClosingEventArgs e) { //关闭应用 Application.Exit(); } //点击窗体移动 private Point mouseOffset; //记录鼠标指针的坐标 private bool isMouseDown = false; //记录鼠标按键是否按下 private void pnlTop_MouseDown(object sender, MouseEventArgs e) { int xOffset; int yOffset; if (e.Button == MouseButtons.Left) { xOffset = -e.X - SystemInformation.FrameBorderSize.Width; yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height; mouseOffset = new Point(xOffset, yOffset); isMouseDown = true; } } private void pnlTop_MouseMove(object sender, MouseEventArgs e) { if (isMouseDown) { Point mousePos = Control.MousePosition; mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30); Location = mousePos; } } private void pnlTop_MouseUp(object sender, MouseEventArgs e) { // 修改鼠标状态isMouseDown的值 // 确保只有鼠标左键按下并移动时,才移动窗体 if (e.Button == MouseButtons.Left) { isMouseDown = false; } } private void pnlTop_Paint(object sender, PaintEventArgs e) { } } }
2.歌星点歌(三个listview的集成窗体)
01.歌手类别
02.歌手地区
03.歌手姓名
04.代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; // ADO.NET namespace MyKTVClient { public partial class frmOrderBySinger : Form { // 当前选择的歌手性别 private string singergender = "男"; // 当前选择的歌手类型的编号 private int singerTypeId = 0; public frmOrderBySinger() { InitializeComponent(); } // 关闭当前窗体,显示主界面 private void tsbtnHome_Click(object sender, EventArgs e) { this.Close(); } // 重新播放当前歌曲 private void tsbtnAgain_Click(object sender, EventArgs e) { PlayList.PlayAgain(); } // 切歌 private void tsbtnCut_Click(object sender, EventArgs e) { PlayList.CutSong(-1); } // 打开已点歌曲窗体 private void tsbtnOrdered_Click(object sender, EventArgs e) { frmOrderedSongList frm= new frmOrderedSongList(); frm.Show(); } // 呼叫服务 private void tsbtnService_Click(object sender, EventArgs e) { MessageBox.Show("服务!"); } // 处理返回按钮的事件 private void tsbtnExit_Click(object sender, EventArgs e) { if (this.pnlSingerList.Visible) { this.pnlSingerType.Visible = true; this.pnlSingerList.Visible = false; } else if (this.pnlSingerType.Visible) { this.pnlSingerSex.Visible = true; this.pnlSingerType.Visible = false; } else if (this.pnlSingerSex.Visible) { this.Close(); } } //点击歌手的信息窗体时,弹出歌曲列表 private void lvlistthree_Click(object sender, EventArgs e) { // 读取数据库,读出该歌手的所有歌曲 SqlConnection con = new SqlConnection(DBHelper.str); StringBuilder sb = new StringBuilder(); sb.AppendFormat("select song_id,song_name,singer_info.singer_name,song_url,singer_info.singer_photo_url from song_info,singer_info where song_info.singer_id=singer_info.singer_id and singer_name=‘{0}‘ and song_info.singer_id={1}", lvlistthree.SelectedItems[0].Text, Convert.ToInt32(lvlistthree.SelectedItems[0].Tag)); frmSongList frm = new frmSongList(); frm.Sql = sb.ToString(); frm.Onform = FanhuiForm.Singergender; // 指定返回的窗体是按歌手点歌 frm.Show(); } //当点击歌手类别的窗体时,弹出某歌手的信息的船体 private void lvlisttwo_Click(object sender, EventArgs e) { // 隐藏歌手类别,显示歌手列表 pnlSingerType.Visible = false; pnlSingerList.Location = pnlSingerSex.Location; pnlSingerList.Dock = DockStyle.Fill; pnlSingerList.Visible = true; this.singerTypeId = Convert.ToInt32(lvlisttwo.SelectedItems[0].Tag); // 保存选中的类别编号 // 读取数据库,读出歌手信息 SqlConnection con = new SqlConnection(DBHelper.str); StringBuilder sql = new StringBuilder(); sql.AppendFormat("select singer_id,singer_name,singer_photo_url from singer_info where singertype_id={0} and singer_gender=‘{1}‘", this.singerTypeId, this.singergender); try { SqlCommand cmd = new SqlCommand(sql.ToString(), con); con.Open(); SqlDataReader dr = cmd.ExecuteReader(); int imageIndex = 0; // 代表歌手头像的索引 imglistthree.Images.Clear(); // 循环读出歌手信息添加到窗体中显示 lvlistthree.Items.Clear(); while (dr.Read()) { // 将歌手头像放在ImageList控件中 string photoURL = KTVUtil.singerPhotoPath + "\\\\" + Convert.ToString(dr["singer_photo_url"]); imglistthree.Images.Add(Image.FromFile(photoURL)); // 将歌手添加到ListView中 ListViewItem item = new ListViewItem(); item.Text = Convert.ToString(dr["singer_name"]); item.Tag = Convert.ToString(dr["singer_id"]); item.ImageIndex = imageIndex; lvlistthree.Items.Add(item); imageIndex++; } dr.Close(); } catch (Exception) { MessageBox.Show("错误!"); } finally { con.Close(); } } //当点击歌手的性别窗体时,弹出歌手的类别窗体的第一个listview private void lvlistone_Click(object sender, EventArgs e) { if (lvlistone.SelectedItems[0] != null) { // 隐藏歌手性别,显示歌手类别 pnlSingerSex.Visible = false; pnlSingerType.Location = pnlSingerSex.Location; pnlSingerType.Dock = DockStyle.Fill; pnlSingerType.Visible = true; // 记录选择的性别 this.singergender = Convert.ToString(lvlistone.SelectedItems[0].Tag); } // 读取歌手类别 SqlConnection con = new SqlConnection(DBHelper.str); string sql = "select * from singer_type"; try { // 查询数据库 SqlCommand command = new SqlCommand(sql, con); con.Open(); SqlDataReader dr = command.ExecuteReader(); // 循环将类别读取出来添加到ListView中 lvlisttwo.Items.Clear(); int i = 0; while (dr.Read()) { ListViewItem item = new ListViewItem(); item.Text = Convert.ToString(dr["singertype_name"]); item.Tag = Convert.ToInt32(dr["singertype_id"]); item.ImageIndex = i; lvlisttwo.Items.Add(item); i++; } dr.Close(); } catch (Exception) { MessageBox.Show("错误!"); } finally { con.Close(); } } private Point mouseOffset; //记录鼠标指针的坐标 private bool isMouseDown = false; //记录鼠标按键是否按下 private void pnlon_MouseDown(object sender, MouseEventArgs e) { int xOffset; int yOffset; if (e.Button == MouseButtons.Left) { xOffset = -e.X - SystemInformation.FrameBorderSize.Width; yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height; mouseOffset = new Point(xOffset, yOffset); isMouseDown = true; } } private void pnlon_MouseMove(object sender, MouseEventArgs e) { if (isMouseDown) { Point mousePos = Control.MousePosition; mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30); Location = mousePos; } } private void pnlon_MouseUp(object sender, MouseEventArgs e) { // 修改鼠标状态isMouseDown的值 // 确保只有鼠标左键按下并移动时,才移动窗体 if (e.Button == MouseButtons.Left) { isMouseDown = false; } } } }
05.歌曲列表
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace MyKTVClient { // 定义枚举,代表当前应该返回到的上一个窗体 public enum FanhuiForm { Main, Singergender, SongType, WordCount, SongName, SongList } public partial class frmSongList : Form { private string sql = ""; private FanhuiForm onform; // 上一个窗体 // 该窗体应该返回到的上一个窗体 public FanhuiForm Onform { get { return onform; } set { onform = value; } } // 歌曲列表查询语句 public string Sql { get { return sql; } set { sql = value; } } public frmSongList() { InitializeComponent(); } // 返回 SqlConnection con = new SqlConnection(DBHelper.str); private void tsbtnExit_Click(object sender, EventArgs e) { switch (this.Onform) { // 返回到歌手点歌 case FanhuiForm.Singergender: frmOrderBySinger frm = new frmOrderBySinger(); frm.Show(); break; // 返回到歌曲类型点歌 case FanhuiForm.SongType: frmOrderBySongType frm1 = new frmOrderBySongType(); frm1.Show(); break; // 返回到字数点歌 case FanhuiForm.WordCount: frmOrderByWordCount frm2 = new frmOrderByWordCount(); frm2.Show(); break; } this.Close(); } // 窗体加载时查询歌曲列表 private void SongListForm_Load(object sender, EventArgs e) { DataSet dataSet = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(this.Sql, con); da.Fill(dataSet, "info"); dgvlist.DataSource = dataSet.Tables["info"]; } private void tsbtnService_Click(object sender, EventArgs e) { MessageBox.Show("服务中"); } // 点播一首歌曲 private void dgvlist_CellClick(object sender, DataGridViewCellEventArgs e) { // 创建一个歌曲对象,并将选中的歌曲名和路径赋给该对象 Song song = new Song(); song.SongName = dgvlist.SelectedRows[0].Cells["songName"].Value.ToString(); song.SongURL = dgvlist.SelectedRows[0].Cells["songURL"].Value.ToString(); song.Singerurl = dgvlist.SelectedRows[0].Cells["singerUrl"].Value.ToString(); song.Singername = dgvlist.SelectedRows[0].Cells["singer"].Value.ToString(); PlayList.AddSong(song); // 更新数据库,将选中的歌曲点播次数加1 int sId = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["songId"].Value); //string sql = "update song_info set song_play_count=song_play_count+1 where song_id="+sId+""; string sql = string.Format("update song_info set song_play_count=song_play_count+1 where song_id={0}", sId); try { SqlCommand cmd = new SqlCommand(sql, con); con.Open(); cmd.ExecuteNonQuery(); } catch (Exception) { MessageBox.Show("出错!"); } finally { con.Close(); } } //返回 private void tsbtnExit_Click_1(object sender, EventArgs e) { this.Close(); } // 切歌 private void tsbtnCut_Click(object sender, EventArgs e) { PlayList.CutSong(-1); } // 打开已点歌曲窗体 private void tsbtnOrdered_Click(object sender, EventArgs e) { frmOrderedSongList frm = new frmOrderedSongList(); frm.Show(); } // 重新播放当前歌曲 private void tsbtnAgain_Click(object sender, EventArgs e) { PlayList.PlayAgain(); } //主界面 private void tsbtnHome_Click(object sender, EventArgs e) { this.Close(); } private void frmSongList_MouseDown(object sender, MouseEventArgs e) { } private void frmSongList_MouseMove(object sender, MouseEventArgs e) { } private void frmSongList_MouseUp(object sender, MouseEventArgs e) { } private void pnlTop_MouseUp(object sender, MouseEventArgs e) { // 修改鼠标状态isMouseDown的值 // 确保只有鼠标左键按下并移动时,才移动窗体 if (e.Button == MouseButtons.Left) { isMouseDown = false; } } private Point mouseOffset; //记录鼠标指针的坐标 private bool isMouseDown = false; //记录鼠标按键是否按下 private void pnlTop_MouseDown(object sender, MouseEventArgs e) { int xOffset; int yOffset; if (e.Button == MouseButtons.Left) { xOffset = -e.X - SystemInformation.FrameBorderSize.Width; yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height; mouseOffset = new Point(xOffset, yOffset); isMouseDown = true; } } private void pnlTop_MouseMove(object sender, MouseEventArgs e) { if (isMouseDown) { Point mousePos = Control.MousePosition; mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30); Location = mousePos; } } } }
01. 播放界面
02. 已点歌曲
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MyKTVClient { public partial class frmOrderedSongList : Form { private FanhuiForm onform; // 上一个窗体 /// <summary> /// 该窗体应该返回到的上一个窗体 /// </summary> public string name; public FanhuiForm Onform { get { return onform; } set { onform = value; } } public frmOrderedSongList() { InitializeComponent(); } private void OrderedSongListForm_Load(object sender, EventArgs e) { this.newSonglist(); tim.Start(); } private void timer1_Tick(object sender, EventArgs e) { //this.newSonglist(); } //刷新歌曲列表 private void newSonglist() { // 清空原列表 lvlist.Items.Clear(); int index = 0; while (PlayList.SongList[index] != null) { ListViewItem item = new ListViewItem(); //获取歌曲的名称 item.Text = PlayList.SongList[index].SongName; item.Tag = index; //歌曲的播放状态 string playState = PlayList.SongList[index].PlayState == SongPlayState.unplayed ? "未播放" : "已播放"; item.SubItems.Add(playState); lvlist.Items.Add(item); index++; } } // 返回到上一个窗体 private void tsbtnExit_Click(object sender, EventArgs e) { switch (this.Onform) { case FanhuiForm.Singergender: frmOrderBySinger frm = new frmOrderBySinger(); frm.Show(); break; case FanhuiForm.SongList: frmSongList frm1 = new frmSongList(); frm1.Show(); break; case FanhuiForm.SongName: frmOrderBySongName frm2 = new frmOrderBySongName(); frm2.Show(); break; case FanhuiForm.SongType: frmOrderBySongType frm3 = new frmOrderBySongType(); frm3.Show(); break; case FanhuiForm.WordCount: frmOrderByWordCount frm4 = new frmOrderByWordCount(); frm4.Show(); break; } this.Close(); } // 呼叫服务 private void tsbtnService_Click(object sender, EventArgs e) { MessageBox.Show("服务中"); } //返回 private void tsbtnExit_Click_1(object sender, EventArgs e) {
以上是关于欢迎进入MyKTV前后台点歌系统展示的主要内容,如果未能解决你的问题,请参考以下文章