欢迎进入MyKTV前后台点歌系统展示

vn714072 8年前

来自: http://www.cnblogs.com/bdpsc/p/5172908.html

一个项目,一分收获;一个项目,一些资源。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)          {              this.Close();          }          //已点          private void tsbtnOrdered_Click(object sender, EventArgs e)          {              frmOrderedSongList frm = new frmOrderedSongList();              frm.Show();          }          //切割          private void tsbtnCut_Click_1(object sender, EventArgs e)          {                                PlayList.CutSong(songId);                  this.newSonglist();                        }          //重唱          private void tsbtnAgain_Click_1(object sender, EventArgs e)          {              PlayList.PlayAgain();          }          //          private void tsbtnHome_Click_1(object sender, EventArgs e)          {              this.Close();          }          //删除选中歌曲          int songId = -1;  // 切歌的编号          private void lvlist_Click(object sender, EventArgs e)          {                              if (this.lvlist.SelectedItems.Count > 0)              {                  songId = Convert.ToInt32(this.lvlist.SelectedItems[0].Tag);              }          }            private void lvlist_MouseDown(object sender, MouseEventArgs e)          {            }          private Point mouseOffset;        //记录鼠标指针的坐标                  private bool isMouseDown = false; //记录鼠标按键是否按下          private void frmOrderedSongList_MouseDown(object sender, MouseEventArgs e)          {                       }            private void frmOrderedSongList_MouseMove(object sender, MouseEventArgs e)          {                       }            private void frmOrderedSongList_Move(object sender, EventArgs e)          {            }            private void frmOrderedSongList_MouseUp(object sender, MouseEventArgs e)          {                        }            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;              }          }                      }

3.拼音点歌

代码:

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 frmOrderBySongName : Form      {          public frmOrderBySongName()          {              InitializeComponent();          }            // 查询歌曲显示在窗体中          SqlConnection con = new SqlConnection(DBHelper.str);          private void btnSearch_Click(object sender, EventArgs e)          {                DataSet ds = new DataSet();              StringBuilder sb = new StringBuilder();              sb.Append("select song_id,song_name,singer_info.singer_name,song_url,singer_info.singer_photo_url from song_info inner join singer_info on singer_info.singer_id=song_info.singer_id ");              sb.AppendFormat("where song_name like '%{0}%' or song_ab like '{0}'", this.txtname.Text);                Console.WriteLine(sb.ToString());                SqlDataAdapter da = new SqlDataAdapter(sb.ToString(), con);                // 在填充之前先清空当前列表              if (ds.Tables["info"] != null)              {                  ds.Tables["info"].Clear();              }              da.Fill(ds, "info");              this.dgvlist.DataSource = ds.Tables["info"];          }          private void tsbtnExit_Click(object sender, EventArgs e)          {                           this.Close();          }               // 服务                private void tsbtnService_Click(object sender, EventArgs e)          {              MessageBox.Show("服务中!");          }          private void dgvlist_CellClick(object sender, DataGridViewCellEventArgs e)          {                if (dgvlist.SelectedRows[0].Cells["songName"] != null)              {                  // 创建一个歌曲对象,并将当权选中的歌曲名和路径赋给该对象                  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();                  PlayList.AddSong(song);                    //将选中的歌曲点播次数加1                  int songId = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["songId"].Value);                  string sql = string.Format("update song_info set song_play_count=song_play_count+1 where song_id={0}", songId);                  DBHelper dbHelper = new DBHelper();                  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)          {                if (MessageBox.Show("确定要切歌吗?", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)              {                  PlayList.CutSong(-1);              }                    }            private void tsbtnOrdered_Click_1(object sender, EventArgs e)          {              frmOrderedSongList frm = new frmOrderedSongList();              frm.Show();          }            private void tsbtnAgain_Click_1(object sender, EventArgs e)          {              PlayList.PlayAgain();          }            private void tsbtnHome_Click(object sender, EventArgs e)          {              this.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;              }          }      }  }

01.点歌后的效果

4.已点歌曲里的切歌效果

代码:

  //删除选中歌曲          int songId = -1;  // 切歌的编号          private void lvlist_Click(object sender, EventArgs e)          {                              if (this.lvlist.SelectedItems.Count > 0)              {                  songId = Convert.ToInt32(this.lvlist.SelectedItems[0].Tag);              }          }           //切歌          private void tsbtnCut_Click_1(object sender, EventArgs e)          {                                PlayList.CutSong(songId);                  this.newSonglist();                        }

5.类型选择

通过代码把图片动态加载进来

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 frmOrderBySongType : Form      {          public frmOrderBySongType()          {              InitializeComponent();          }            private void tsbtnExit_Click(object sender, EventArgs e)          {              this.Close();          }            // 窗体加载时,显示歌曲类别          SqlConnection con = new SqlConnection(DBHelper.str);          private void OrderBySongTypeForm_Load(object sender, EventArgs e)          {              // 读取歌曲类别                       string sql = "select * from song_type";              try              {                  // 查询数据库                  SqlCommand cmd = new SqlCommand(sql, con);                  con.Open();                  SqlDataReader dr = cmd.ExecuteReader();                    // 循环将类别读取出来添加到ListView中                  this.lvlist.Items.Clear();                  int index = 0;                  while (dr.Read())                  {                      ListViewItem item = new ListViewItem();                      item.Text = Convert.ToString(dr["songtype_name"]);                      item.Tag = Convert.ToInt32(dr["songtype_id"]);                      item.ImageIndex = index;                      this.lvlist.Items.Add(item);                      index++;                  }                  dr.Close();              }              catch (Exception)              {                    MessageBox.Show("错误!");                }              finally              {                  con.Close();              }          }                    // 呼叫服务             private void tsbtnService_Click(object sender, EventArgs e)          {              MessageBox.Show("您呼叫服务中!");          }            private void lvlist_Click(object sender, EventArgs e)          {              // 读取数据库,读出该歌手的所有歌曲                StringBuilder sb = new StringBuilder();              sb.Append("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 ");              sb.AppendFormat("where songtype_id={0}", Convert.ToInt32(lvlist.SelectedItems[0].Tag));              Console.WriteLine(sb.ToString());              frmSongList frm = new frmSongList();              frm.Sql = sb.ToString();              frm.Onform = FanhuiForm.SongType;              frm.Show();                       }          //          private void tsbtnExit_Click_1(object sender, EventArgs e)          {              this.Close();          }          //          private void tsbtnOrdered_Click_1(object sender, EventArgs e)          {              frmOrderedSongList frm = new frmOrderedSongList();              frm.Show();          }          //          private void tsbtnCut_Click_1(object sender, EventArgs e)          {              PlayList.CutSong(-1);          }          //          private void tsbtnAgain_Click(object sender, EventArgs e)          {              PlayList.PlayAgain();          }            private void tsbtnHome_Click(object sender, EventArgs e)          {              this.Close();          }            private void pnlon_MouseUp(object sender, MouseEventArgs e)          {              // 修改鼠标状态isMouseDown的值                    // 确保只有鼠标左键按下并移动时,才移动窗体                     if (e.Button == MouseButtons.Left)              {                  isMouseDown = false;              }          }            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 Point mouseOffset;        //记录鼠标指针的坐标                  private bool isMouseDown = false; //记录鼠标按键是否按下            private void lvlist_MouseDown(object sender, MouseEventArgs e)          {                       }            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;              }          }      }  }

01.歌曲列表

6.金榜点歌

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 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;              }          }                   }  }

7.字数点歌

01.通过for循环把1-12的数字循环打印出来

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 frmOrderByWordCount : Form      {          public frmOrderByWordCount()          {              InitializeComponent();          }            private void tsbtnExit_Click(object sender, EventArgs e)          {              this.Close();          }          SqlConnection con = new SqlConnection(DBHelper.str);          private void OrderByWordCountForm_Load(object sender, EventArgs e)          {                       // 将字数列表添加到窗体中                          for (int i = 0; i < 12; i++)              {                  // 循环生成字数项添加到窗体中                  ListViewItem item = new ListViewItem();                  item.Text = (i + 1) + "个字";                  item.Tag = i + 1;                  lvlist.Items.Add(item);              }                                }                     // 呼叫服务               private void tsbtnService_Click(object sender, EventArgs e)          {              MessageBox.Show("服务中");          }            private void lvlist_Click(object sender, EventArgs e)          {              if (lvlist.SelectedItems[0] != null)              {                  // 读取数据库,读出该歌手的所有歌曲                    StringBuilder sb = new StringBuilder();                  sb.Append("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 ");                  sb.AppendFormat("where song_word_count={0}", Convert.ToInt32(lvlist.SelectedItems[0].Tag));                  Console.WriteLine(sb.ToString());                  frmSongList frm = new frmSongList();                  frm.Sql = sb.ToString();                  frm.Onform = FanhuiForm.WordCount;                  frm.Show();                               }          }          //          private void tsbtnExit_Click_1(object sender, EventArgs e)          {              this.Close();          }          //          private void tsbtnOrdered_Click_1(object sender, EventArgs e)          {              frmOrderedSongList frm = new frmOrderedSongList();              frm.Show();          }          //          private void tsbtnCut_Click_1(object sender, EventArgs e)          {                 PlayList.CutSong(-1);                    }          //     // 重新播放当前歌曲                 private void tsbtnAgain_Click_1(object sender, EventArgs e)          {              PlayList.PlayAgain();          }            private void tsbtnHome_Click(object sender, EventArgs e)          {              this.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;              }          }      }  }

02.歌曲列表

03.已点列表

8.最后再看看重唱的功能展示以及代码

01.重唱

 // 重新播放当前歌曲          private void tsbtnAgain_Click(object sender, EventArgs e)          {              PlayList.PlayAgain();              PlaySong();          }

前台算告一段落了,如果觉得对你有帮助的话,可以关注,如觉得还可以就个你的痕迹。

01.主窗体

using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Data;  using System.Drawing;  using System.Linq;  using System.Text;  using System.Threading.Tasks;  using System.Windows.Forms;    namespace KTV  {      public partial class FrmMain : Form      {          public FrmMain()          {              InitializeComponent();          }          //新增          private void tsnewadd_Click(object sender, EventArgs e)          {              //新增              frmAddSinger frm = new frmAddSinger();              frm.MdiParent = this;              frm.Show();//以本窗体为父窗体打开          }          //查询歌手          private void tssingerselect_Click(object sender, EventArgs e)          {              //查询歌手信息              FrmSelectSinger frm = new FrmSelectSinger();              frm.MdiParent = this;              frm.Show();//以本窗体为父窗体打开          }          //退出          private void tsexit_Click(object sender, EventArgs e)          {              //退出应用程序              Application.Exit();          }          //查询歌曲          private void tssongselect_Click(object sender, EventArgs e)          {          }            private void tslujing_Click(object sender, EventArgs e)          {                     }            private void tssong_Click(object sender, EventArgs e)          {                       }            private void tshelping_Click(object sender, EventArgs e)          {              //帮助              MessageBox.Show("帮助规则");          }            private void tsAddSong_Click(object sender, EventArgs e)          {              //保存歌曲              FrmAdd frm = new FrmAdd();              frm.MdiParent = this;              frm.Show();          }            private void TsSeSong_Click(object sender, EventArgs e)          {              //查询歌曲信息              frmselectSong frm = new frmselectSong();              frm.MdiParent = this;              frm.Show();//以本窗体为父窗体打开          }            private void TSsonger_Click(object sender, EventArgs e)          {              //路径              frmAddSongURL frm = new frmAddSongURL();              frm.Show();          }              }  }

01.添加歌手

using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Data;  using System.Drawing;  using System.Linq;  using System.Text;  using System.Threading.Tasks;  using System.Windows.Forms;  using System.IO;  using System.Data.SqlClient;    namespace KTV  {      public partial class frmAddSinger : Form      {          public string uname;          public frmAddSinger()          {              InitializeComponent();          }          //默认给原路径赋值          public string OldLoadWays()          {              //测试              SqlConnection con = new SqlConnection(DBHelp.str);              string sql = "select resource_path from resource_path where resource_id=1";              SqlCommand cmd = new SqlCommand(sql, con);              string songUrl = "";              try              {                  con.Open();                  SqlDataReader dr = cmd.ExecuteReader();                  if (dr != null)                  {                      if (dr.HasRows)                      {                          while (dr.Read())                          {                              songUrl = dr["resource_path"].ToString();                          }                      }                  }              }              catch (Exception)              {                  MessageBox.Show("网络异常!"); ;              }              finally              {                  con.Close();              }              return songUrl;          }          //下拉框          public void Singerselect()          {              string str = DBHelp.str;              //连接数据库              SqlConnection con = new SqlConnection(str);              string sql = "select singertype_id,singertype_name from singer_type";              //数据集和数据库连接              SqlDataAdapter da = new SqlDataAdapter(sql, con);              DataSet ds = new DataSet();              try              {                  da.Fill(ds);                  //绑定数据源                  DataTable dt = ds.Tables[0];                  DataRow dr = dt.NewRow();                  //给该行赋值                  dr[0] = -1;                  dr[1] = "请选择";                  dt.Rows.InsertAt(dr, 0);                  cbotype.DataSource = ds.Tables[0];                  //下拉框显示值                  cbotype.DisplayMember = "singertype_name";                  //下拉框隐藏值                  cbotype.ValueMember = "singertype_id";              }              catch (Exception)              {                  MessageBox.Show("加载失败!");              }              finally              {                  con.Close();              }          }          private void frmAddSinger_Load(object sender, EventArgs e)          {              Singerselect();              Commod.DBsongurl=OldLoadWays();              if (this.Text=="修改歌手信息")              {                  btnadd.Text = "修改";                  //MessageBox.Show(uname);                  Load_information();              }              else              {                  this.Text = "编辑歌手信息";                  btnadd.Text = "保存";              }          }          string fileName = "";          string fullName = "";            private void btnView_Click(object sender, EventArgs e)          {                //浏览              if (this.ofdlist.ShowDialog() == DialogResult.OK)              {                    fileName = this.ofdlist.SafeFileName; // 文件名                  fullName = this.ofdlist.FileName;                  picphoto.Image = Image.FromFile(fullName);                  txtdescrp.Text = fullName;              }          }          //添加          public void SongInfoAdd()          {              string name = txtname.Text;//歌手姓名              string type = "";//类别              if (ramale.Checked)              {                  type = "男";              }              else if (rafemale.Checked)              {                  type = "女";              }              else if (raguoup.Checked)              {                  type = "组合";              }              int id = Convert.ToInt32(cbotype.SelectedValue);//类型                          string description = txtdescrp.Text;//描述              SqlConnection con = new SqlConnection(DBHelp.str);              string sql = "insert into singer_info values('" + name + "'," + id + ",'" + type + "','" + fileName + "','" + description + "')";              SqlCommand cmd = new SqlCommand(sql,con);              try              {                  con.Open();                  int count = cmd.ExecuteNonQuery();                  if (count > 0)                  {                      File.Copy(fullName, Commod.DBsongurl + "\\" + fileName, true);                      MessageBox.Show("歌手添加成功");                  }                  else                  {                      MessageBox.Show("歌手添加失败");                  }              }              catch (Exception)              {                    MessageBox.Show("歌手加载失败"); ;              }              finally              {                  con.Close();//关闭              }          }          //修改          public void SongInfoUpdate()          {                       }          //关闭          private void btnclose_Click(object sender, EventArgs e)          {              this.Close();          }                    private void btnadd_Click(object sender, EventArgs e)          {              if (this.Text=="修改歌手信息")              {                  Update();//修改              }              else              {                  SongInfoAdd();//保存功能              }                        }          //load修改          string ch="";//单选按钮值          int type = 0;          public void Load_information()          {                              SqlConnection con = new SqlConnection(DBHelp.str);              string sql = "select singer_name,singer_gender,singertype_id,singer_description from singer_info where singer_name ='" + uname + "'";              con.Open();              SqlCommand cmd = new SqlCommand(sql, con);              SqlDataReader dr = cmd.ExecuteReader();              try              {                  if (dr != null)                  {                      if (dr.HasRows)                      {                          while (dr.Read())                          {                              txtname.Text = dr["singer_name"].ToString();                              ch = dr["singer_gender"].ToString();                              #region MyRegion判断男女,给单选按钮赋值                              if (ch == "男")                              {                                  ramale.Checked = true;                              }                              else if (ch == "女")                              {                                  rafemale.Checked = true;                              }                              else                              {                                  raguoup.Checked = true;                              }                              #endregion                                int type = Convert.ToInt32(dr["singertype_id"]);                              #region MyRegion 给下拉框赋值                              if (type == 1)                              {                                  cbotype.Text = "大陆";                              }                              else if (type == 2)                              {                                  cbotype.Text = "香港";                              }                              else if (type == 3)                              {                                  cbotype.Text = "台湾";                              }                              else if (type == 4)                              {                                  cbotype.Text = "欧美";                              }                              else if (type == 5)                              {                                  cbotype.Text = "日韩";                              }                              #endregion                                txtdescrp.Text = dr["singer_description"].ToString();                                                      }                      }                  }              }              catch (Exception)              {                  MessageBox.Show("歌手个别信息不完善!!!");              }              finally              {                  con.Close();              }          }          //修改          public void Update()          {              int songid = Convert.ToInt32(cbotype.SelectedValue);              int num = txtname.Text.Length;              SqlConnection con = new SqlConnection(DBHelp.str);              //singer_id, singer_name, singertype_id, singer_gender, singer_photo_url, singer_description              string sql = @"update singer_info set singer_name='" + txtname.Text + "',singer_gender='" + ch + "',singer_photo_url='" + fileName +                           "',singertype_id=" + type + ",singer_description='"+txtdescrp.Text+"' where singer_name ='" + uname + "'";              SqlCommand cmd = new SqlCommand(sql, con);              try              {                  con.Open();                  int count = cmd.ExecuteNonQuery();                  if (count > 0)                  {                      MessageBox.Show("修改成功");                  }              }              catch (Exception)              {                    MessageBox.Show("加载失败"); ;              }              finally              {                  con.Close();              }          }      }  }

由于一些问题暂不能帮你们把KTV项目完全展示, 不过后台会很快补回来的,如果想多了解点知识,就多多的来学习吧!博客园都在等你们啊。。。。。。