你的位置:首页 > ASP.net教程

[ASP.net教程]欢迎进入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.NETnamespace 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项目完全展示, 不过后台会很快补回来的,如果想多了解点知识,就多多的来学习吧!博客园都在等你们啊。。。。。。