MyKTV项目总结

项目名称:KTV点歌系统

--指导老师原玉明

经过一周多的时间,终于完成的我的这个KTV项目,说实话,做这个项目我收获了不少,难点也非常多,不过经过重重磨难,总算是过来了。不简单呀!

这个项目主要分为前后台。

前台主要实现的功能是:歌星点歌,拼音点歌,字数点歌,

类型选择,金曲排行,一些切歌,重唱,已点歌曲列表,主要是这些功能。

后台主要实现的功能是:增加歌手,增加歌曲,修改歌曲路径,修改歌手图片路径。

首先先看前台:

前台核心类:

SqlHelper类(负责连接数据库):

 //连接字符串
       public static string str = "Data Source=HYJ-PC;Initial Catalog=MyKTV;User ID=sa;pwd=123";

KtvHelper类(保存歌曲的目录;保存歌手图片的目录)

 //保存歌曲的目录
       public static string songURL = "";
       //保存歌手图片的目录
 public static string singer_photoURL = "";
FrmByValue类(窗体对象之间的传值)
  public static frmsonglist frmsl;

       public static FrmMain frM;

       public static SelectedSong ss;

Song类(歌曲的信息及实现歌曲状态的一个切换(已播放;未播放;重播;切歌)):

 //定义一个枚举:歌曲播放状态
   public  enum SongPlayState
    {
        unplayed, played, newplayed, cut

    }
  public  class Song
  {

      public  string SongName
      {
          get { return songName; }
          set { songName = value; }
      }
      public string SongURL
      {
          get { return songURL; }
          set { songURL = value; }
      }

      internal SongPlayState Playseat
      {
          get { return playseat; }
          set { playseat = value; }
      }

      private string songName;//歌曲名称字段
      private string songURL;//歌曲存放路径字段
      //让歌曲的播放状态默认为未播放;
      private SongPlayState playseat = SongPlayState.unplayed;

      //把歌曲状态改为已播放
      public void SetSongPlayed()
      {
          this.playseat = SongPlayState.played;
      }
      //把歌曲状态改为重唱
      public void SetnewSong()
      {
          this.playseat = SongPlayState.newplayed;
      }
      //把歌曲状态改为一切歌
      public void Setcut()
      {
          this.playseat = SongPlayState.cut;
      }

PlayList类(播放歌曲的核心内容,功能(实现播放,切歌,重唱)):

public class PlayList
    {
       //定义一个数组,默认可以储存50首歌
       public static Song[] songList=new Song[50];//歌曲播放列表数组
       public static int songIndex;//当前播放的歌曲在数组的索引

       #region 添加播放歌曲
       public static bool AddSong(Song song)
       {
           bool happy = false;
           for (int i = 0; i < songList.Length; i++)
           {
               if (songList[i] == null)
               {
                   songList[i] = song;

                   happy = true;
                   break;
               }
           }
           return happy;

       }
       #endregion

       #region 当前播放的歌曲名称
         public static string PlayingSongName()
        {
            string songName = ""; // 歌曲名称
             if(songList.Length>songIndex)
             {
                 if (songList[songIndex] != null)
                 {
                     songName = songList[songIndex].SongName;
                 }
             }

            return songName;
        }
       #endregion

       #region 获取当前播放的歌曲
         public static Song GetPlayingSong()
         {
             if(songIndex<songList.Length)
             {
                 if (songList[songIndex] != null)
                 {
                     return songList[songIndex];
                 }
                 else
                 {
                     return null;
                 }
             }
             return null;
         }
         #endregion

       #region 下一首要播放的歌曲名称
         public static string NextSongName()
         {
             string songName = ""; // 歌曲名称
             if(songIndex<songList.Length)
             {
                 if (songList.Length > songIndex + 1)
                 {
                     if (songList[songIndex + 1] != null)
                     {
                         songName = songList[songIndex + 1].SongName;
                     }

             }

           }
             return songName;
         }
         #endregion

       #region 切歌:
         public static void CutSong()
         {
             //代表切歌的位置
             int i = songIndex;  

             if (songList[i]!=null)
             {
                 songList[i].Setcut();
             }
             while (songList[i] != null)
             {
                 songList[i] = songList[i + 1];
                 i++;

                 // 如果到达数组最后一个元素,就将最后一个元素指向空
                 if (i == songList.Length)
                 {
                     songList[i] = null;
                 }
             }
             if (songList[0] != null)
             {
                 songList[0].Playseat = SongPlayState.played;
             }
         }

    #endregion

       #region 重放当前歌曲
         public static void PlayAgain()
         {
             if (songList[songIndex] != null)
             {
                 songList[songIndex].SetnewSong();
             }
         }
         #endregion

       #region 播放下一首
         public static void MoveOn()
         {
             if(songIndex<songList.Length)
             {
                 if (songList[songIndex] != null && songList[songIndex].Playseat == SongPlayState.newplayed)
                 {
                     songList[songIndex].SetSongPlayed();
                 }
                 else
                 {
                     songIndex++;
                 }
             }

         }
         #endregion

   }

实现窗体拖动的代码(找到对应事件双击):

#region 让窗体实现拖动
        public Point mouseOffset;        //记录鼠标指针的坐标
        public bool isMouseDown = false; //记录鼠标按键是否按下
        private void FrmMain_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 FrmMain_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30);
                Location = mousePos;
            }
        }

        private void FrmMain_MouseUp(object sender, MouseEventArgs e)
        {
            // 修改鼠标状态isMouseDown的值
            // 确保只有鼠标左键按下并移动时,才移动窗体
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
            }
        }
        #endregion

主界面:(FrmMain)

 //当前播放的歌曲
        public Song songname;

        #region 让窗体实现拖动
        public Point mouseOffset;        //记录鼠标指针的坐标
        public bool isMouseDown = false; //记录鼠标按键是否按下
        private void FrmMain_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 FrmMain_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30);
                Location = mousePos;
            }
        }

        private void FrmMain_MouseUp(object sender, MouseEventArgs e)
        {
            // 修改鼠标状态isMouseDown的值
            // 确保只有鼠标左键按下并移动时,才移动窗体
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
            }
        }
        #endregion

       // 点击退出按钮触发的事件
        private void btnexit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        } 

       // Login事件
        private void FrmMain_Load(object sender, EventArgs e)
        {

            //把整个窗体对象赋给FrmByValue的静态frM对象
            FrmByValue.frM = this;
            //运行窗体时启动定时器
            this.tilist_played.Start();

            //调用查询返回路径的方法,传入SQL语句
            // 歌曲路径
            string sql = "select resource_path from Resource_path where resource_id=1";
            KtvHelper.songURL = song_path(sql);
            // 歌手图片路径
            string sql1 = "select resource_path from Resource_path where resource_id=2";
            KtvHelper.singer_photoURL = song_path(sql1);

        } 

        /// <summary>
        /// 查询返回路径的方法
        /// </summary>
        /// <param name="sql">传入sql语句</param>
        /// <returns>根据传入的sql语句返回不同的路径(1.resource_id=1歌曲路径:resource_id=2歌手图片路径)</returns>
        private string song_path(string sql)
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            SqlCommand cmd = new SqlCommand(sql, con);
            string path = "";
            try
            {
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();

                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            path = dr["resource_path"].ToString();
                        }

                    }
                }
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
            return path;
        }  

      //点击显示播放触发的事件
        private void btnshow_Click(object sender, EventArgs e)
        {

         if (this.Width == 567)
         {
             this.Width = this.Width + 208;
             btnshow.Text = "隐 藏 播 放";
         }
         else if (this.Width > 567)
         {
             this.Width = 567;
             btnshow.Text = "显 示 播 放";
         }

        } 

       //已点歌曲窗体
        private void btnopen_Click(object sender, EventArgs e)
        {
            SelectedSong frm = new SelectedSong();
            this.Hide();
            frm.Show();
        }

        // 点击拼音点歌触发的事件
        private void btnspell_Click(object sender, EventArgs e)
        {
            frmbySongname frm = new frmbySongname();
            this.Hide();
            frm.Show();

        } 

      //点击字数点歌触发的事件
        private void btnnum_Click(object sender, EventArgs e)
        {
            frmbyziSong frm = new frmbyziSong();
            this.Hide();
            frm.Show();
        } 

        //点击类型点歌触发的事件
        private void btntype_Click(object sender, EventArgs e)
        {
            frmbyTypesong frm = new frmbyTypesong();
            this.Hide();
            frm.Show();
        }

        //定时扫描歌曲列表,显示当前播放歌曲的名称
        public void ShowPlayingSongName()
        {
            txtopen.Text = PlayList.PlayingSongName();
            txtnext.Text = PlayList.NextSongName();
        }

       //播放歌曲的方法
        public void PlaySong()
        {
            // 获取当前要播放的歌曲
            this.songname = PlayList.GetPlayingSong();

            if (songname != null)
            {
                #region 播放时显示歌曲图片
                string name = songname.SongName;
                string sql = "select singer_id from song_info where song_name =‘" + name + "‘ ";
                SqlConnection con = new SqlConnection(SqlHelper.str);
                con.Open();
                SqlCommand cmd = new SqlCommand(sql, con);
                int singerid = Convert.ToInt32(cmd.ExecuteScalar());
                con.Close();
                string sql1 = "select singer_photo from singer_info where singer_id=" + singerid + "";
                SqlConnection con1 = new SqlConnection(SqlHelper.str);
                con1.Open();
                SqlCommand cmd1 = new SqlCommand(sql1, con1);
                string singer_photo = cmd1.ExecuteScalar().ToString();
                con1.Close();
                plist.Image = Image.FromFile(KtvHelper.singer_photoURL + singer_photo);
                #endregion
                // 将当前歌曲播放状态设为已播放
                this.songname.SetSongPlayed();

                // 得到当前播放歌曲的路径
                Playerlist.URL = KtvHelper.songURL + songname.SongURL;

            }
        } 

        //计时器控件的Tick事件
        private void tilist_played_Tick(object sender, EventArgs e)
        {
             ShowPlayingSongName();
            if(this.songname==null)
            {
                this.PlaySong();
            }
            if (this.Playerlist.playState == WMPLib.WMPPlayState.wmppsStopped)
            {
                this.songname = null;
                PlayList.MoveOn();
            }
            if(this.songname!=null&&this.songname.Playseat==SongPlayState.cut)
            {
                this.Playerlist.URL = "";
                this.songname = null;

            }
            if (this.songname != null && this.songname.Playseat == SongPlayState.newplayed)
            {
                this.PlaySong();

            }

        }

        //点击切歌触发的事件
        private void btnnextsong_Click(object sender, EventArgs e)
        {
            if (this.songname != null)
            {
                PlayList.CutSong();

            }
            else
            {
                MessageBox.Show("亲!你还没有添加歌曲");

            }

        }

        //点击重唱触发的事件
        private void btnnew_Click(object sender, EventArgs e)
        {
            if (this.songname != null)
            {
                PlayList.PlayAgain();
            }
            else
            {
                MessageBox.Show("亲!你还没有添加歌曲");

            }

        }

        //点击金曲排行触发的时间
        private void btnorderby_Click(object sender, EventArgs e)
        {
            frmsonglist frm = new frmsonglist();
            frm.ph = 1;
            this.Hide();
            frm.Show();

        }
        //歌星点歌
        private void btnswan_Click_1(object sender, EventArgs e)
        {
            Frmbyswangetsong frm = new Frmbyswangetsong();
            frm.Show();
            this.Hide();
        }

        //当鼠标进入控件可见状态是触发的事件
        private void btnswan_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnswan,"歌星点歌");

        }

        private void btnspell_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnspell, "拼音点歌");
        }

        private void btnnum_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnnum, "字数点歌");
        }

        private void btntype_MouseEnter(object sender, EventArgs e)
        {
             ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btntype, "类型选择");

        }

        private void btnorderby_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnorderby, "金曲排行");
        }

        private void btnnew_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnnew, "重唱");
        }

        private void btnnextsong_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnnextsong, "切歌");
        }

        private void btnopen_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnopen, "已点");
        }

        private void btnfw_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnfw, "服务");
        }

        private void btnexit_MouseEnter(object sender, EventArgs e)
        {

            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnexit, "退出");
        }

        private void btnfw_Click(object sender, EventArgs e)
        {
            MessageBox.Show("正在呼叫服务...");
        }

歌星点歌(Frmbyswangetsong):

 //图片索引
        public int index=0;
        public int index_singer = 0;

       //Load事件
        private void Frmbyswangetsong_Load(object sender, EventArgs e)
        {
            //在显示当前窗体时,让第二个lvlisttwo和第三个lvlistthere控件不显示
            lvlisttwo.Visible = false;
            lvlistthere.Visible = false;

            #region 给第一个listview绑定数据
            //给listview1绑定数据和图片
            ListViewItem lv = new ListViewItem("组合", 0);
            lv.Tag = "组合";
            ListViewItem lv1 = new ListViewItem("女歌手", 1);
            lv1.Tag = "女";
            ListViewItem lv2 = new ListViewItem("男歌手", 2);
            lv2.Tag = "男";
            lvlistone.Items.Add(lv);
            lvlistone.Items.Add(lv1);
            lvlistone.Items.Add(lv2);
            #endregion

        } 

       //点击lvlistone中项时触发的事件
        private void lvlistone_Click(object sender, EventArgs e)
        {
            //如果没有选中lvlistone控件中的任何一项是不会显示第二个窗体
            //让第二个出现的lvlisttwo和lvlistone显示在同一个位置
            lvlisttwo.Location = lvlistone.Location;
            //如果选中一项,就把第二个llvlisttwo显示出来
            //让第二个lvlisttwo显示
            lvlisttwo.Visible = true;
            if (lvlistone.SelectedItems[0] != null)
            {
                //给第二个listview控件动态绑定数据的方法
                lvlisttwoadd();

            }

        }

       //给第二个listview控件动态绑定数据的方法lvlisttwoadd();
        private void lvlisttwoadd()
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select * from singer_type";
            SqlCommand cmd = new SqlCommand(sql, con);
            try
            {
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            string singertype_group = dr["singertype_name"].ToString();
                            int id = Convert.ToInt32(dr["singertype_id"]);
                            ListViewItem lv = new ListViewItem();
                            lv.ImageIndex = index++;
                            lv.Text = singertype_group;
                            lv.Tag= id;
                           // MessageBox.Show(lvlisttwo.Tag.ToString());
                            lvlisttwo.Items.Add(lv);
                        }
                    }
                }
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
        }  

     // 03点击lvlisttwo中项时触发的事件
        private void lvlisttwo_Click(object sender, EventArgs e)
        {

            lvlistthere.Items.Clear();
            //如果没有选中lvlisttwo控件中的任何一项是不会显示第三个窗体
            //如果选中一项,就把第二个llvlistthere显示出来
            if (lvlisttwo.SelectedItems[0] != null)
            {
                lvlisttwo.Visible = false;
                //让第三个出现的lvlistthere和lvlistone显示在同一个位置
                lvlistthere.Location = lvlistone.Location;
                //让第三个lvlistthere显示
                lvlistthere.Visible = true;
                //获取用户点击第一个listview是男歌手还是女歌手或者是组合
                string singer_group = lvlistone.SelectedItems[0].Tag.ToString();
                //获取用户点击点击第二个listview是哪个地区的id
                int cityid = Convert.ToInt32(lvlisttwo.SelectedItems[0].Tag);
                SqlConnection con = new SqlConnection(SqlHelper.str);
                string sql = "select singer_name,singer_photo from singer_info where singer_sex =‘" + singer_group + "‘ and singertype_id="+cityid+" ";
                SqlCommand cmd = new SqlCommand(sql,con);
                try
                {
                    con.Open();
                  SqlDataReader dr=  cmd.ExecuteReader();
                    if(dr!=null)
                    {
                    if(dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            //获取到歌手姓名和歌手图片路径
                            string singer_name = dr["singer_name"].ToString();
                            string singer_photo_url = dr["singer_photo"].ToString();
                            //并接路径
                            string URL = KtvHelper.singer_photoURL + singer_photo_url;
                            imgsingerinfo .Images.Add(Image.FromFile(URL));
                            ListViewItem lv = new ListViewItem();
                            lv.Text = singer_name;
                            lv.ImageIndex =index_singer++;
                            lvlistthere.Items.Add(lv);

                        }
                    }
                    }

                }
                catch (Exception)
                {

                    MessageBox.Show("网络异常!");
                }
                finally
                {
                    con.Close();
                }

              }

        }

       //点击按钮主界面触发的事件
        private void btnmain_Click(object sender, EventArgs e)
        {
            FrmByValue.frM.Show();
            this.Close();

        } 

       // 点击返回触发的事件
        private void btnreturn_Click(object sender, EventArgs e)
        {
            if (lvlistthere.Visible == true)
            {
                lvlistthere.Visible = false;
                lvlisttwo.Visible = true;

            }
            else if (lvlisttwo.Visible == true)
            {
                lvlisttwo.Visible = false;
                lvlistone.Visible = true;
            }
            else
            {
                FrmByValue.frM.Show();
                this.Close();

            }

        } 

       //点击歌手图片触发的事件
        private void lvlistthere_Click(object sender, EventArgs e)
        {
            frmsonglist frm = new frmsonglist();
            //通过窗体传值把歌手姓名赋给frmsonglist窗体的singer_name变量
            frm.singer_name= lvlistthere.SelectedItems[0].Text;
            frm.Show();
            this.Close();
        }

        //点击已点触发的事件
        private void btnopen_Click(object sender, EventArgs e)
        {
            SelectedSong frm = new SelectedSong();
            frm.Show();
            this.Close();
        }

        //点击切歌触发的事件
        private void btnnextsong_Click(object sender, EventArgs e)
        {
            if (FrmByValue.frM.songname != null)
            {
                PlayList.CutSong();

            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

        }
        //点击重唱触发的事件
        private void btnnew_Click(object sender, EventArgs e)
        {
            if (FrmByValue.frM.songname != null)
            {
                PlayList.PlayAgain();
            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

        }

        private void labllist_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(labllist, "歌星点歌");
        }

        private void btnmain_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnmain, "主界面");
        }

        private void btnnew_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnnew, "重唱");
        }

        private void btnnextsong_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnnextsong, "切歌");
        }

        private void btnopen_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnopen, "已点");
        }

        private void btnfw_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnfw, "服务");
        }

        private void btnreturn_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnreturn, "返回");
        }

        private void btnfw_Click(object sender, EventArgs e)
        {
            MessageBox.Show("正在呼叫服务...");
        }

拼音点歌(frmbySongname):

 //login事件
        private void frmbySongname_Load(object sender, EventArgs e)
        {
            string RowFilter ="";
            dgvlistgetzhi( RowFilter);
        }

        private void dgvlistgetzhi(string RowFilter)
        {
            //取消英文列自动生成
            dgvlist.AutoGenerateColumns = false;
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select song_id,song_name,singer_name,song_url,song_ab from song_info,singer_info where song_info.singer_id=singer_info.singer_id";
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds, "info");
                DataView dv = new DataView(ds.Tables["info"]);
                dv.RowFilter = RowFilter;
                dgvlist.DataSource = dv;

            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
        } 

        //点击按钮查询触发的事件
        private void btnselect_Click(object sender, EventArgs e)
        {
            string RowFilter = " song_ab like ‘%" + txtlist.Text + "%‘ or song_name like ‘%" + txtlist.Text + "%‘ ";
            dgvlistgetzhi(RowFilter);
        } 

       ///点击单元格触发的事件
        private void dgvlist_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvlist.SelectedRows[0].Cells[0].Value.ToString() != "")
            {
                Song so = new Song();
                string song_name = dgvlist.SelectedRows[0].Cells["song_name"].Value.ToString();
                string song_url = dgvlist.SelectedRows[0].Cells["song_url"].Value.ToString();
                so.SongName = song_name;
                so.SongURL = song_url;
                bool result = PlayList.AddSong(so);
                if (result == true)
                {
                    MessageBox.Show("添加成功!");
                    int songid = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["song_Id"].Value);
                    SqlConnection con = new SqlConnection(SqlHelper.str);
                    string sql = "update song_info set song_play_count=song_play_count+1 where song_id=‘" + songid + "‘";
                    try
                    {
                        con.Open();
                        SqlCommand cmd = new SqlCommand(sql, con);
                        int count = cmd.ExecuteNonQuery();

                    }
                    catch (Exception)
                    {

                        MessageBox.Show("失败");
                    }
                    finally
                    {
                        con.Close();
                    }
                }
                else
                {
                    MessageBox.Show("添加失败!");
                }
            }
            else
            {
                MessageBox.Show("请选择一首歌");
            }

        }
        //点击已点触发的事件
        private void button1_Click(object sender, EventArgs e)
        {
            SelectedSong frm = new SelectedSong();
            frm.Show();
            this.Close();
        }
        //点击切歌触发的事件
        private void button2_Click(object sender, EventArgs e)
        {
            if (FrmByValue.frM.songname != null)
            {
                PlayList.CutSong();

            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

        }
        //点击重唱触发的事件
        private void button5_Click(object sender, EventArgs e)
        {

            if (FrmByValue.frM.songname != null)
            {
                PlayList.PlayAgain();
            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

        }

        private void button3_Click(object sender, EventArgs e)
        {
            FrmByValue.frM.Show();
            this.Close();
        }

        private void label2_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(label2, "拼音点歌"); 

        }

        private void button3_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button3, "主界面");
        }

        private void button5_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button5, "重唱");
        }

        private void button2_MouseEnter(object sender, EventArgs e)
        {
              ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button2, "切歌");
        }

        private void button1_MouseEnter(object sender, EventArgs e)
        {
               ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button1, "已点");
        }

        private void button6_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button6, "服务");
        }

        private void button6_Click(object sender, EventArgs e)
        {
            MessageBox.Show("正在呼叫服务....");
        }

        private void btnselect_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnselect, "查询");
        }

字数点歌(frmbyziSong):

//login事件
        private void frmbyziSong_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);
            }
        }

        //单击listview组件触发的事件
        private void lvlist_Click(object sender, EventArgs e)
        {
            //获取每一个item.Tag对应的值
          int count=  Convert.ToInt32(lvlist.SelectedItems[0].Tag);
          frmsonglist frm = new frmsonglist();
          frm.count = count;
          frm.Show();
          this.Close();

        }

        //点击主界面触发的事件
        private void button3_Click(object sender, EventArgs e)
        {

            FrmByValue.frM.Show();
            this.Close();
        }

        //点击已点触发的事件
        private void button1_Click(object sender, EventArgs e)
        {
            SelectedSong frm = new SelectedSong();
            frm.Show();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (FrmByValue.frM.songname != null)
            {
                PlayList.CutSong();

            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

        }

        private void button5_Click(object sender, EventArgs e)
        {
            if (FrmByValue.frM.songname != null)
            {
                PlayList.PlayAgain();
            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

        }

        private void label2_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(label2, "字数点歌");
        }

        private void button3_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button3, "主界面");
        }

        private void button5_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button5, "重唱");
        }

        private void button2_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button2, "切歌");
        }

        private void button1_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button1, "已点");
        }

        private void button6_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(button6, "服务");
        }

        private void button6_Click(object sender, EventArgs e)
        {
            MessageBox.Show("正在呼叫服务...");
        }

类型选择(frmbyTypesong):

//定义一个变量index,表示imagelist
         int index = 0;

        // login事件
        private void frmbyTypesong_Load(object sender, EventArgs e)
        {
            //给listview控件绑定值
            lvlistgetzhi();
        }

        // 给listview控件绑定值
        private void lvlistgetzhi()
        {
            // 读取歌曲类别
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select * from song_type";
            SqlCommand cmd = new SqlCommand(sql, con);
            try
            {
                // 查询数据库
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();

                // 循环将类别读取出来添加到ListView中
                lvlist.Items.Clear();
                if(dr!=null)
                {
                if(dr.HasRows)
                {
                    while (dr.Read())
                    {
                        ListViewItem item = new ListViewItem();
                        item.Text = Convert.ToString(dr["songtype_name"]);
                        item.Tag = Convert.ToInt32(dr["songtype_id"]);
                        item.ImageIndex = index++;
                        lvlist.Items.Add(item);
                    }
                }
                }
                dr.Close();
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");

            }
            finally
            {
                con.Close();
            }
        } 

        //点击listview控件中组件触发的事件
         private void lvlist_Click(object sender, EventArgs e)
        {
             //获取选中的歌曲隐藏的Tag值
             int Tagid = Convert.ToInt32(lvlist.SelectedItems[0].Tag);
            //new出歌曲列表窗体对象
            frmsonglist frm = new frmsonglist();
            //把获取的歌曲隐藏值Tag赋给frmsonglist窗体的公有变量Tagid
            frm.Tagid = Tagid;
            frm.Show();
            this.Close();
        }

        //点击已点触发的事件
         private void button7_Click(object sender, EventArgs e)
         {
             SelectedSong frm = new SelectedSong();
             frm.Show();
             this.Close();
         }
        //点击重唱触发的事件
         private void button11_Click(object sender, EventArgs e)
         {
             if (FrmByValue.frM.songname != null)
             {
                 PlayList.PlayAgain();
             }
             else
             {
                 MessageBox.Show("亲!还没有歌曲");
             }

         }
        //点击切歌触发的事件
         private void button8_Click(object sender, EventArgs e)
         {
             if (FrmByValue.frM.songname != null)
             {
                 PlayList.CutSong();

             }
             else
             {
                 MessageBox.Show("亲!还没有歌曲");
             }

         }
        //点击主界面触发的事件
         private void button9_Click(object sender, EventArgs e)
         {
             FrmByValue.frM.Show();
             this.Close();
         }

         private void label2_MouseEnter(object sender, EventArgs e)
         {
             ToolTip tp = new ToolTip();
             tp.ShowAlways = true;
             tp.SetToolTip(label2, "分类点歌");
         }

         private void button9_MouseEnter(object sender, EventArgs e)
         {
             ToolTip tp = new ToolTip();
             tp.ShowAlways = true;
             tp.SetToolTip(button9, "主界面");
         }

         private void button11_MouseEnter(object sender, EventArgs e)
         {
             ToolTip tp = new ToolTip();
             tp.ShowAlways = true;
             tp.SetToolTip(button11, "重唱");
         }

         private void button8_MouseEnter(object sender, EventArgs e)
         {
             ToolTip tp = new ToolTip();
             tp.ShowAlways = true;
             tp.SetToolTip(button8, "切歌");
         }

         private void button7_MouseEnter(object sender, EventArgs e)
         {
             ToolTip tp = new ToolTip();
             tp.ShowAlways = true;
             tp.SetToolTip(button7, "已点");
         }

         private void button12_MouseEnter(object sender, EventArgs e)
         {
             ToolTip tp = new ToolTip();
             tp.ShowAlways = true;
             tp.SetToolTip(button12, "服务");
         }

         private void button12_Click(object sender, EventArgs e)
         {
             MessageBox.Show("正在呼叫服务...");
         }

金曲排行(frmsonglist公用窗体):

//接收金曲排行传过来的值
        public int ph;
        public int Tagid;
        //接收窗体传过来的歌手姓名
        public string singer_name;
        public string name = "";
        //并接的歌曲完整路径
        public string URL1;
        //获取歌曲名
        //public string singer_name = "";
        //获取歌曲演唱者
        public string song_name ="";
        public int index = 0;
        public int count = 0;
      //Login事件
        private void frmsonglist_Load(object sender, EventArgs e)
        {
            //FrmByValue.frmsl = this;
            //给listview控件绑定值

            if (Tagid != 0)
            {
                string sql = "select song_name,singer_name,song_url,song_id from singer_info,song_info where singer_info.singer_id=song_info.singer_id and songtype_id=" + Tagid + "";
                lvlistgetzhi(sql);
            }
            else if(count!=0)
            {
                string sql = "select song_name,singer_name,song_url,song_id from singer_info,song_info where singer_info.singer_id=song_info.singer_id and song_word_count="+count+"";
                lvlistgetzhi(sql);
            }
            else if(ph!=0)
            {
                string sql = "select song_name,singer_name,song_url,song_id from singer_info,song_info where singer_info.singer_id=song_info.singer_id order by song_play_count desc";
                lvlistgetzhi(sql);
            }
            else
            {
                string sql = "select song_id,song_name,singer_name,song_url from singer_info,song_info where singer_info.singer_id=song_info.singer_id and singer_name=‘" + singer_name + "‘";
                lvlistgetzhi(sql);
            }
        }

       //给listview控件绑定值的方法lvlistgetzhi(string sql)传入SQL语句
        public void lvlistgetzhi(string sql)
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);

            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds, "info");
                dgvlist.DataSource = ds.Tables["info"];

            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
        } 

      //点击主界面触发的事件
        private void btnmain_Click(object sender, EventArgs e)
        {
            FrmByValue.frM.Show();
            this.Close();
        } 

        //点击dgvlsit单元格触发的事件
        private void dgvlist_CellClick_1(object sender, DataGridViewCellEventArgs e)
        {
            //点选中行不为空时把歌曲信息添加到Song类的歌曲名称和歌曲路径属性中
            if (dgvlist.SelectedRows[0].Cells[0].Value.ToString()!= "")
            {
                //获取歌曲路径
                string songpath = dgvlist.SelectedRows[0].Cells["song_url"].Value.ToString();
                //获取歌曲名
                string song_name = dgvlist.SelectedRows[0].Cells["songname"].Value.ToString();
                Song so = new Song();
                so.SongName = song_name;
                so.SongURL = songpath;
                bool result = PlayList.AddSong(so);
                if (result == true)
                {
                    MessageBox.Show("添加成功!");
                }
                else
                {
                    MessageBox.Show("添加失败!");
                }
                // 更新数据库,将选中的歌曲点播次数加1
                update_count();
            }
            else
            {
                MessageBox.Show("请选择一首歌");
            }
        }

        //更新数据库,将选中的歌曲点播次数加1的方法
        private void update_count()
        {
            int songid = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["song_Id"].Value);
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "update song_info set song_play_count=song_play_count+1 where song_id=‘" + songid + "‘";
            try
            {
                con.Open();
                SqlCommand cmd = new SqlCommand(sql, con);
                int count = cmd.ExecuteNonQuery();

            }
            catch (Exception)
            {

                MessageBox.Show("失败");
            }
            finally
            {
                con.Close();
            }
        }

      //点击已点触发的事件
        private void btnopen_Click(object sender, EventArgs e)
        {
            SelectedSong frm = new SelectedSong();
            this.Close();
            frm.Show();

        } 

       //点击切歌触发的事件
        private void btnnextsong_Click(object sender, EventArgs e)
        {
            if (FrmByValue.frM.songname != null)
            {
                PlayList.CutSong();

            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

        } 

        // 点击重唱触发的事件
        private void btnnew_Click(object sender, EventArgs e)
        {
            if (FrmByValue.frM.songname != null)
            {
                PlayList.PlayAgain();
            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

        }

        private void dgvlist_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void label2_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(label2,"歌曲列表");
        }

        private void btnmain_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnmain, "主界面");
        }

        private void btnnew_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnnew, "重唱");
        }

        private void btnnextsong_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnnextsong, "切歌");
        }

        private void btnopen_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnopen, "已点");
        }

        private void btnfw_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnfw, "服务");
        }

        private void btnfw_Click(object sender, EventArgs e)
        {
            MessageBox.Show("正在呼叫服务...");
        }

    }

已点列表(SelectedSong):

 //login事件
        private void SelectedSong_Load(object sender, EventArgs e)
        {
            FrmByValue.ss = this;
            //给一点列表绑定值
            getselectsongzhi();
        }

        public void getselectsongzhi()
        {
            lvlist.Items.Clear();  // 清空原列表
            //定义一个数组长度为50的对象数组
            Song[] so = new Song[50];
            so = PlayList.songList;
            //用foreacher循环出对象数组里的歌曲信息
            foreach (Song item in so)
            {
                if (item != null)
                {
                    //遍历出歌曲名
                    string song_name = item.SongName;
                    //遍历出歌曲路径
                    string song_url = item.SongURL;
                    //遍历出播放状态

                    //对于这行代码的理解 string type = item.Playseat == SongPlayState.unplayed ? "未播放" : "已播放";
                    //<<item.Playseat>>如果他保存的是 SongPlayState.unplayed 那么(tem.Playseat == SongPlayState.unplayed)==true,就会把未播放的值赋给type变量
                    //<<item.Playseat>>如果他保存的是 不是SongPlayState.unplayed 是枚举类型的其他值那么(tem.Playseat == SongPlayState.unplayed)==false,就会把已播放的值赋给type变量
                    string type = item.Playseat == SongPlayState.unplayed ? "未播放" : "已播放";
                    //给lvlist绑定值
                    ListViewItem lv = new ListViewItem(song_name);
                    lv.SubItems.Add(type);
                    lvlist.Items.Add(lv);
                }
            }
        } 

        //点击切歌触发的事件
        private void btnnextsong_Click(object sender, EventArgs e)
        {
            if (FrmByValue.frM.songname != null)
            {

               PlayList.CutSong();
               getselectsongzhi();

            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

                } 

       //点击重唱触发的事件
        private void btnnew_Click(object sender, EventArgs e)
        {
            if (FrmByValue.frM.songname != null)
            {
                PlayList.PlayAgain();
            }
            else
            {
                MessageBox.Show("亲!还没有歌曲");
            }

        }
     //点击主界面触发的事件
        private void btnmain_Click(object sender, EventArgs e)
        {
            FrmByValue.frM.Show();
            this.Close();
        }

        private void label2_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(label2, "已点列表");
        }

        private void btnmain_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnmain, "主界面");
        }

        private void btnnew_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnnew, "重唱");
        }

        private void btnnextsong_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnnextsong, "切歌");
        }

        private void btnfw_MouseEnter(object sender, EventArgs e)
        {
            ToolTip tp = new ToolTip();
            tp.ShowAlways = true;
            tp.SetToolTip(btnfw, "服务");
        }

        private void btnfw_Click(object sender, EventArgs e)
        {
            MessageBox.Show("正在呼叫服务...");
        }

后台:

核心类:

Hanzitopinyin类(汉字转拼音)

{ "A阿啊锕嗄厑哎哀唉埃挨溾锿鎄啀捱皑凒溰嘊敳皚癌毐昹嗳矮蔼躷噯藹譪霭靄艾伌爱砹硋隘嗌塧嫒愛碍暧瑷僾壒嬡懓薆曖璦鴱皧瞹馤鑀鱫安侒峖桉氨庵谙萻腤鹌蓭誝鞌鞍盦馣鮟盫韽啽雸垵"   , //此处有省略
}/// <summary>
        /// 获得一个字符串的汉语拼音码
        /// </summary>
        /// <param name="strText">字符串</param>
        /// <returns>汉语拼音码,该字符串只包含大写的英文字母</returns>
        public static string GetChineseSpell(string strText)
        {
            if (strText == null || strText.Length == 0)
                return strText;
            System.Text.StringBuilder myStr = new System.Text.StringBuilder();
            foreach (char vChar in strText)
            {
                // 若是字母则直接输出
                if ((vChar >= ‘a‘ && vChar <= ‘z‘) || (vChar >= ‘A‘ && vChar <= ‘Z‘))
                    myStr.Append(char.ToUpper(vChar));
                else if ((int)vChar >= 19968 && (int)vChar <= 40869)
                {
                    // 若字符Unicode编码在编码范围则 查汉字列表进行转换输出
                    foreach (string strList in strChineseCharList)
                    {
                        if (strList.IndexOf(vChar) > 0)
                        {
                            myStr.Append(strList[0]);
                            break;
                        }
                    }
                }
            }
            return myStr.ToString();
        }// GetChineseSpell  

SqlHelper类(负责连接数据库):

//连接字符串

       public static string str = "Data Source=HYJ-PC;Initial Catalog=MyKTV;User ID=sa;pwd=123";

KtvHelper类(保存歌曲的目录;保存歌手图片的目录)

//保存歌曲的目录

       public static string songURL = "";

       //保存歌手图片的目录

 public static string singer_photoURL = "";

登录界面(frnAdmin):

private void btnlogin_Click(object sender, EventArgs e)
        {
            //登录
            Login();
        }
        //登录的方法
        public void Login()
        {
            //获取用户名
            string loginname = txtname.Text;
            //获取密码
            string pwd = txtpassword.Text;
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select * from admin_info where admin_name=‘" + loginname + "‘ and admin_pwd=‘" + pwd + "‘ ";
            SqlCommand cmd = new SqlCommand(sql, con);
            try
            {
                con.Open();
                int count = Convert.ToInt32(cmd.ExecuteScalar());
                if (count > 0)
                {
                    MessageBox.Show("登录成功!");
                    this.Hide();
                    frmMain frm = new frmMain();
                    frm.Show();

                }
                else
                {
                    MessageBox.Show("登录失败!");
                }
            }
            catch (Exception)
            {

                MessageBox.Show("网路异常!");
            }
            finally
            {
                con.Close();
            }
        }

        private void btnexit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

主界面(frmMain):

private void 编辑歌手信息ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AddSingerInfo frm = new AddSingerInfo();
            frm.MdiParent = this;
            frm.Show();
        }

        private void 歌手查询ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmsingerselect frm = new frmsingerselect();
            frm.MdiParent = this;
            frm.Show();
        }
         //点击编辑歌曲信息触发的事件
        private void 编辑歌曲信息ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AddSongInfo frm = new AddSongInfo();
            frm.MdiParent = this;
            frm.Show();

        }

        private void 歌曲查询ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmsongselect frm = new frmsongselect();
            frm.MdiParent = this;
            frm.Show();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            //调用查询返回路径的方法,传入SQL语句
            // 歌曲路径
            string sql = "select resource_path from Resource_path where resource_id=1";
            KTVUtil.songURL = song_path(sql);
            // 歌手图片路径
            string sql1 = "select resource_path from Resource_path where resource_id=2";
            KTVUtil.singer_photoURL = song_path(sql1);

        }
        /// <summary>
        /// 查询返回路径的方法
        /// </summary>
        /// <param name="sql">传入sql语句</param>
        /// <returns>根据传入的sql语句返回不同的路径(1.resource_id=1歌曲路径:resource_id=2歌手图片路径)</returns>
        private string song_path(string sql)
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            SqlCommand cmd = new SqlCommand(sql, con);
            string path = "";
            try
            {
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();

                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            path = dr["resource_path"].ToString();
                        }

                    }
                }
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
            return path;
        }

        //修改歌曲路径
        private void 设置歌曲路径ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmsongurl frm = new frmsongurl();
            frm.MdiParent = this;
            frm.Show();
        }

        private void 修改歌手图片路径ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmsingerphotourl frm = new frmsingerphotourl();
            frm.MdiParent = this;
            frm.Show();
        }

        //退出
        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }  

新增歌手(FrmAddSingerinfo):

//相对路径
        public string txtFileName;
        //绝对路径
        public string txtPath;
      //用来接受窗体传过来的值
        //歌手编号
        public int singer_id;

        //点击浏览触发的时间
        private void btnll_Click(object sender, EventArgs e)
        {
            //Fiter属性的构成:Excel文件|*.xls,Exce是一个可读的自定义字符串;|*.xls筛选器
            //试用*表示匹配文件名的字符使用.后缀匹配文件的后缀名,使用;来将需要的后缀分开通过|连接不同的筛选器表示通过用户选择后缀名来进行文件筛选
              openFileDialog1.Filter="图片文件|*.jpg;*.png;*.gif;";
            //01.openFileDialog1.Filter="图片文件|*.jpg;*.png;*.gif";
            //02.openFileDialog1.Filter = "(*.jpg,*.gif,*.png;)|*.jpg;*.gif;*.png;";
            DialogResult result = openFileDialog1.ShowDialog();

            if (result == DialogResult.OK)//证明用户双击(选中了)一个文件,我就获取路径
            {
                //相对路径
                txtFileName = openFileDialog1.SafeFileName;
                //绝对路径
                txtPath = openFileDialog1.FileName;
                pblist.Image = Image.FromFile(txtPath);

            }
        }

        //点击添加触发的事件
        private void btnok_Click(object sender, EventArgs e)
        {

            if (infoisnull())
            {
                if (singer_id != 0)
                {
                    //执行修改歌手信息的方法
                    Updatesingerinfo();

                }
                else
                {

                    //添加歌手信息的方法
                    Addsingerinfo();
                }
            }

        }

        //执行修改歌手信息的方法
        public void Updatesingerinfo()
        {

                //获取添加的歌手姓名
                string singer_name = txtname.Text;
                //获取添加歌手的性别信息
                string gender;
                if (rbboy.Checked == true)
                {
                    gender = "男";
                }
                else if (rbgerey.Checked == true)
                {
                    gender = "女";
                }
                else
                {
                    gender = "组合";
                }
                //获取歌手类型的隐藏值
                int stype_id = Convert.ToInt32(cbolist.SelectedValue);
                //获取歌手描述的信息
                string singer_ms = txtms.Text;
                //
                SqlConnection con = new SqlConnection(SqlHelper.str);
                string sql = "update singer_info set singer_name=‘" + singer_name + "‘,singer_sex=‘" + gender + "‘,singertype_id=" + stype_id + ",singer_describe=‘" + singer_ms + "‘,singer_photo=‘" + txtFileName + "‘ where singer_id=" + singer_id + "";
                SqlCommand cmd = new SqlCommand(sql, con);
                try
                {
                    con.Open();
                    int count = cmd.ExecuteNonQuery();
                    if (count > 0)
                    {

                        MessageBox.Show("修改成功!");
                        if (txtPath != null)
                        {
                            if (txtPath != KTVUtil.singer_photoURL + txtFileName)
                            {
                                File.Copy(txtPath, KTVUtil.singer_photoURL + txtFileName, true);
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("修改失败!");
                    }

                }
                catch (Exception)
                {

                    MessageBox.Show("网络异常!");
                }
                finally
                {
                    con.Close();
                }

        }

        //load事件
        private void AddSingerInfo_Load(object sender, EventArgs e)
        {
            //给歌手类型下拉框绑定数据
            getcbolistzhi();

            if (singer_id != 0)
            {
                this.Text = "修改歌手信息";
                btnok.Text = "修改";

                updatagetzhi();
            }
            else
            {
                this.Text = "编辑歌歌手信息";
                btnok.Text = "保存";

            }

        }

        //给歌手类型下拉框绑定数据的方法
        public void getcbolistzhi()
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select * from dbo.singer_type";
            SqlDataAdapter da = new SqlDataAdapter(sql,con);
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds,"info");
                cbolist.DataSource=ds.Tables["info"];
                cbolist.DisplayMember = "singertype_name";
                cbolist.ValueMember = "singertype_id";

            }
            catch (Exception)
            {

                MessageBox.Show("网路异常!");
            }
            finally
            {
                con.Close();
            }
        }

        //修改时给修改窗体赋值
        public void updatagetzhi()
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select singer_photo,singer_name,singer_sex,singertype_name,singer_describe from singer_info,singer_type where singer_info.singertype_id=singer_type.singertype_id and singer_id=" + singer_id + "";
            SqlCommand cmd = new SqlCommand(sql, con);
            try
            {
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            //给歌手姓名文本框赋值
                            txtname.Text = dr["singer_name"].ToString();
                            //选中性别按钮
                            if (dr["singer_sex"].ToString().Equals("男"))
                            {
                                rbboy.Checked = true;

                            }
                            else if (dr["singer_sex"].ToString().Equals("女"))
                            {
                                rbgerey.Checked = true;
                            }
                            else
                            {

                                rbbox.Checked = true;
                            }

                            cbolist.Text = dr["singertype_name"].ToString();
                            txtms.Text = dr["singer_describe"].ToString();
                            string url= dr["singer_photo"].ToString();
                            if (url!="")
                            {
                                pblist.Image = Image.FromFile(KTVUtil.singer_photoURL + url);
                            }

                            txtFileName = url;
                        }
                    }

                }

            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
        }
        //添加歌手信息的方法
        public void Addsingerinfo()
        {
            if (txtFileName != null)
            {

                #region 获取添加的歌手的信息
                //获取添加的歌手姓名
                string singer_name = txtname.Text;
                //获取添加歌手的性别信息
                string gender;
                if (rbboy.Checked == true)
                {
                    gender = "男";
                }
                else if (rbgerey.Checked == true)
                {
                    gender = "女";
                }
                else
                {
                    gender = "组合";
                }
                //获取歌手类型的隐藏值
                int stype_id = Convert.ToInt32(cbolist.SelectedValue);
                //获取歌手描述的信息
                string singer_ms = txtms.Text;

                #endregion

                SqlConnection con = new SqlConnection(SqlHelper.str);
                string sql = "insert into singer_info values(‘" + singer_name + "‘," + stype_id + ",‘" + gender + "‘,‘" + txtFileName + "‘,‘" + txtms.Text + "‘) ";
                SqlCommand cmd = new SqlCommand(sql, con);
                try
                {
                    con.Open();
                    int count = cmd.ExecuteNonQuery();
                    if (count > 0)
                    {

                        MessageBox.Show("添加成功!");
                        if (txtPath != null)
                        {
                            if (txtPath != KTVUtil.singer_photoURL + txtFileName)
                            {
                                File.Copy(txtPath, KTVUtil.singer_photoURL + txtFileName, true);
                            }

                        }
                    }
                    else
                    {
                        MessageBox.Show("添加失败!");
                    }
                }
                catch (Exception)
                {

                    MessageBox.Show("网络异常!");
                }
                finally
                {
                    con.Close();
                }
            }
            else
            {
                MessageBox.Show("请选择歌手图片路径");

            }

        }
        /// 验证用户界面输入的信息是否为空
        private bool infoisnull()
        {
            bool happy = false;
            if (txtname.Text.Trim() == "")
            {
                MessageBox.Show("请输入歌手姓名", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtname.Focus();
            }
            else if (cbolist.SelectedValue == null)
            {
                MessageBox.Show("请选择歌手类型", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                cbolist.Focus();
            }
            else if(rbboy.Checked==false&&rbbox.Checked==false&&rbgerey.Checked==false)
            {
                MessageBox.Show("请选择歌手性别", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else
            {
                happy = true;
            }
            return happy;
        }
        //关闭
        private void btnexit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

歌手信息查询(frmsingerselect)

 public AddSongInfo add;
        //Load事件
        private void frmsingerselect_Load(object sender, EventArgs e)
        {

           // 给歌手类型下拉框绑定数据的方法
            getcbolistzhi();
           if(cbolist.Text=="全部")
           {

               txtname.Enabled = false;
           }
            //给dgvlist控件绑定数据
            string RowFilter = "";
            getdgvlistzhi(RowFilter);
        }
        //给歌手类型下拉框绑定数据的方法
        public void getcbolistzhi()
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select * from dbo.singer_type";
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds, "info");
                cbolist.DataSource = ds.Tables["info"];
                cbolist.DisplayMember = "singertype_name";
                cbolist.ValueMember = "singertype_id";
                DataRow row = ds.Tables["info"].NewRow();
                row["singertype_id"] = -1;
                row["singertype_name"] = "全部";
                ds.Tables["info"].Rows.InsertAt(row, 0);
                cbolist.SelectedIndex = 0;

            }
            catch (Exception)
            {

                MessageBox.Show("网路异常!");
            }
            finally
            {
                con.Close();
            }
        }

        //给dgvlist控件绑定数据的方法
        public void getdgvlistzhi(string RowFilter)
        {
            dgvlist.AutoGenerateColumns = false;
            //歌手姓名,歌手类型,歌手性别,歌手描述
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select singer_info.singertype_id,singer_name,singer_id,singertype_name,singer_sex,singer_describe from dbo.singer_info,dbo.singer_type where singer_info.singertype_id=singer_type.singertype_id ";
            SqlDataAdapter da = new SqlDataAdapter(sql,con);
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds,"info");
                DataView dv = new DataView(ds.Tables["info"]);
                dv.RowFilter = RowFilter;
                dgvlist.DataSource = dv;
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally 

            {
                con.Close();
            }
        }

        //点击查询触发的事件
        private void btnselect_Click(object sender, EventArgs e)
        {

        }

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (dgvlist.SelectedRows[0].Cells[0].Value.ToString() != "")
            {
                DialogResult result = MessageBox.Show("你确定删除该歌手信息吗?(会同时删除歌曲信息)", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                    //删除歌手信息的方法
                    deletesonginfo();
                    deletesingerinfo();

                }

            }
            else
            {
                MessageBox.Show("请选择一名歌手");
            }
        }
        //删除歌手对应的歌曲信息的方法
        public void deletesonginfo()
        {
            //获取选中行的歌手编号
            int singer_id = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["ID"].Value);
            string sql = "delete song_info where singer_id="+singer_id+"";
            SqlConnection con = new SqlConnection(SqlHelper.str);
            SqlCommand cmd = new SqlCommand(sql,con);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();

        }
        //删除歌手信息的方法
        public void deletesingerinfo()
        {
            //获取选中行的歌手编号
            int singer_id = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["ID"].Value);
            string sql1 = "select song_id from song_info where singer_id="+singer_id+"";
            SqlConnection con1 = new SqlConnection(SqlHelper.str);
            SqlCommand cmd1 = new SqlCommand(sql1,con1);
            con1.Open();
          int song_id=  Convert.ToInt32(cmd1.ExecuteScalar());
            con1.Close();
            if (song_id != 0)
            {
                MessageBox.Show("请先删除该歌手的歌曲信息");

            }
            else
            {
                //并接SQL语句
                string sql = "delete dbo.singer_info where singer_id=" + singer_id + " ";
                SqlConnection con = new SqlConnection(SqlHelper.str);
                SqlCommand cmd = new SqlCommand(sql, con);

                try
                {
                    con.Open();
                    int count = cmd.ExecuteNonQuery();
                    if (count > 0)
                    {
                        MessageBox.Show("删除成功!");
                        string RowFilter = "";
                        getdgvlistzhi(RowFilter);
                    }
                    else
                    {
                        MessageBox.Show("删除失败!");
                    }
                }
                catch (Exception)
                {

                    MessageBox.Show("网络异常!");
                }
                finally
                {
                    con.Close();
                }

            }
        }

        //点击单元格触发的事件
        private void dgvlist_CellClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        //点击修改触发的事件
        private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
        {

            if (dgvlist.SelectedRows[0].Cells[0].Value.ToString() != "")
            {
                //获取选中行的歌手信息
                //歌手编号
                int singer_id = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["ID"].Value);
                AddSingerInfo frm = new AddSingerInfo();
                frm.singer_id = singer_id;
                frm.Show();
            }
            else
            {
                MessageBox.Show("请选择一名歌手");
            }

        }

        private void dgvlist_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {

            //获取用户选中行的歌手姓名
            string singername = dgvlist.SelectedRows[0].Cells["singer_name"].Value.ToString();
            //获取用户选中行的歌手编号
            int singer_id = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["ID"].Value);

            //给新增歌曲窗体的歌手文本框赋值
            add.txtsingername.Text = singername;
            add.txtsingername.Tag = singer_id;

        }

        private void btnselect_Click_1(object sender, EventArgs e)
        {

            if (txtname.Text == "" && cbolist.Text == "全部")
            {
                string RowFilter = "";
                getdgvlistzhi(RowFilter);
            }
            else if (txtname.Text != ""&&cbolist.Text=="全部")
            {
                //获取要查询歌手的姓名
                string name = txtname.Text;
                //获取要查询的歌手类型
                int type = Convert.ToInt32(cbolist.SelectedValue);
                string RowFilter = "singer_name like ‘%" + name + "%‘";
                getdgvlistzhi(RowFilter);

            }
            else
            {

                //获取要查询歌手的姓名
                string name = txtname.Text;
                //获取要查询的歌手类型
                int type = Convert.ToInt32(cbolist.SelectedValue);
                string RowFilter = "singer_name like ‘%" + name + "%‘ and singertype_id=" + type + "";
                getdgvlistzhi(RowFilter);
            }

        }

        private void dgvlist_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void cbolist_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbolist.Text == "全部")
            {

                txtname.Enabled = false;
            }
            else
            {
                txtname.Enabled = true;
            }
        }

新增歌曲(AddSongInfo):

 public frmsingerselect frmss;
        public int song_id;
        public string txtPath;
        //相对路径
        public string txtxdpath;
        //Load事件
        private void AddSongInfo_Load(object sender, EventArgs e)
        {
            //给歌曲类型下拉框绑定数据
            getcbolistzhi();

            if (song_id != 0)
            {
                this.Text = "修改歌曲信息";
                btnok.Text = "修改";
                updategetzhi();
            }
            else
            {
                this.Text = "编辑歌曲信息";
                btnok.Text = "保存";

            }

        }

        //给歌曲类型下拉框绑定数据的方法
        public void getcbolistzhi()
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select * from dbo.song_type";
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds, "info");
                cbolist.DataSource = ds.Tables["info"];
                cbolist.DisplayMember = "songtype_name";
                cbolist.ValueMember = "songtype_id";
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Open();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "歌曲文件|*.mp3;";
            DialogResult result = openFileDialog1.ShowDialog();
            if (result == DialogResult.OK)//证明用户双击(选中了)一个文件,我就获取路径
            {
                //相对路径
                txtxdpath = openFileDialog1.SafeFileName;
                txturl.Text = txtxdpath;
                //绝对路径
                txtPath = openFileDialog1.FileName;

                int dot = txtxdpath.LastIndexOf(‘.‘);
                string fileType = txtxdpath.Substring(dot + 1);
                if (fileType != "mp3")
                {
                    MessageBox.Show("文件类型错误!");

                }

                ////给PictureBox的Image属性赋值
                //pblist.Image = Image.FromFile(txtPath);
            }
        }

        //点击查询触发的事件
        private void button4_Click(object sender, EventArgs e)
        {
            frmsingerselect frm = new frmsingerselect();
            frm.add = this;
            frm.ShowDialog();

        }
        //点击关闭触发的事件
        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        //点击保存触发的事件
        private void button2_Click(object sender, EventArgs e)
        {
            if (isnull())
            {
                if (song_id != 0)
                {
                    //执行修改的方法
                    updatesonginfo();
                }
                else
                {
                    //保存的方法
                    addinfo();

                }
            }

        }
        //执行修改给修改窗体相关信息赋值
        public void updategetzhi()
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select song_info.singer_id,song_url,song_name,singer_name,song_ab,song_word_count,song_url,song_play_count,songtype_name from song_info,song_type,singer_info  where song_info.songtype_id=song_type.songtype_id and song_info.singer_id=singer_info.singer_id and song_id=" + song_id + "";
            SqlCommand cmd = new SqlCommand(sql, con);
            try
            {
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            txtsongname.Text = dr["song_name"].ToString();
                            txtsingername.Text = dr["singer_name"].ToString();
                            txtsingername.Tag = Convert.ToInt32(dr["singer_id"]);
                            txtpy.Text = dr["song_ab"].ToString();
                            cbolist.Text = dr["songtype_name"].ToString();
                            txtsingername.Text = dr["singer_name"].ToString();
                            txturl.Text = dr["song_url"].ToString();
                        }

                    }
                }
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }

        }
        //修改歌曲信息的方法
        public void updatesonginfo()
        {
            //获取歌曲名称
            string song_name = txtsongname.Text;
            //获取拼音缩写信息
            string py = txtpy.Text;
            //获取歌曲类型对应的隐藏值
            int type_id = Convert.ToInt32(cbolist.SelectedValue);
            //获取歌手姓名对应的编号
            int singe_id = Convert.ToInt32(txtsingername.Tag);
            //获取歌曲文件名
            string url = txturl.Text;
            //获取歌曲名称的长度
            int length = song_name.Length;

            string sql = "update song_info set song_name=‘" + song_name + "‘,song_ab=‘" + py + "‘,song_word_count=" + length + ",songtype_id=" + type_id + ",singer_id=" + singe_id + ",song_url=‘" + url + "‘,song_play_count=default where song_id=" + song_id + "";
            SqlConnection con = new SqlConnection(SqlHelper.str);
            SqlCommand cmd = new SqlCommand(sql, con);
            try
            {
                con.Open();
                int result = cmd.ExecuteNonQuery();

                if (result > 0)
                {

                    MessageBox.Show("修改成功!");
                    if (txtPath != null)
                    {

                        if (txtPath != KTVUtil.songURL + txtxdpath)
                        {
                            File.Copy(txtPath, KTVUtil.songURL + txtxdpath, true);
                        }
                    }

                    else
                    {
                        MessageBox.Show("修改失败!");
                    }
                }

            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {

                con.Close();

            }

        }

        //新增歌曲信息的方法
        public void addinfo()
        {
            //获取歌曲名称
            string song_name = txtsongname.Text;
            //获取拼音缩写信息
            string py = txtpy.Text;
            //获取歌曲类型对应的隐藏值
            int type_id = Convert.ToInt32(cbolist.SelectedValue);
            //获取歌手姓名对应的编号
            int singe_id = Convert.ToInt32(txtsingername.Tag);
            //获取歌曲文件名
            string url = txturl.Text;
            //获取歌曲名称的长度
            int length = song_name.Length;

            //拼接sql语句
            string sql = "insert into song_info values(‘" + song_name + "‘,‘" + py + "‘," + length + "," + type_id + "," + singe_id + ",‘" + url + "‘,default)";
            SqlConnection con = new SqlConnection(SqlHelper.str);
            SqlCommand cmd = new SqlCommand(sql, con);
            try
            {

                con.Open();
                int result = cmd.ExecuteNonQuery();
                if (result > 0)
                {

                    MessageBox.Show("保存成功!");

                    if (txtPath != null)
                    {

                        if (txtPath != KTVUtil.songURL + txtxdpath)
                        {
                            File.Copy(txtPath, KTVUtil.songURL + txtxdpath, true);
                        }

                    }

                }
                else
                {
                    MessageBox.Show("保存失败!");

                }
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
        }

        private void txtsongname_TextChanged(object sender, EventArgs e)
        {
            //将第一个文本框中内容转换成py,写入到第二个文本框中
            string word = txtsongname.Text;
            if (word != "")
            {
                txtpy.Text = hanzitopinyin.GetChineseSpell(word);
            }
            else
            {
                txtpy.Text = string.Empty;
            }
        }

        public bool isnull()
        {
            bool happy = false;
            if (txtsongname.Text.Trim() == "")
            {
                MessageBox.Show("请输入歌曲名称", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtsongname.Focus();
            }
            else if (txtpy.Text.Trim() == "")
            {
                MessageBox.Show("请输入拼音缩写", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            txtpy.Focus();
            }
            else if(cbolist.Text==null )
            {
             MessageBox.Show("青选择歌曲类型", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else if (txtsingername.Text=="")
            {
                MessageBox.Show("请选择歌手", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtsingername.Focus();
            }
            else if (txturl.Text == "")
            {
                MessageBox.Show("请选择歌曲路径", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txturl.Focus();
            }
            else
            {
                happy = true;
            }
            return happy;
        }

查询歌曲信息(frmsongselect):

 //Load事件
        private void frmsongselect_Load(object sender, EventArgs e)
        {

            //给歌曲类型下拉框赋值
            getsongtypezhi();
            if (cbolist.Text == "全部")
            {
                txtsongname.Enabled = false;
            }

            //给dgvlist绑定数据
            string RowFilter = "";
            getdgvlistzhi(RowFilter);
        }
        //给歌曲类型下拉框赋值的方法
        public void getsongtypezhi()
        {

            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select * from song_type";
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds, "info");
                cbolist.DataSource = ds.Tables["info"];
                cbolist.DisplayMember = "songtype_name";
                cbolist.ValueMember = "songtype_id";

                DataRow row = ds.Tables["info"].NewRow();
                row["songtype_id"] = -1;
                row["songtype_name"] = "全部";
                ds.Tables["info"].Rows.InsertAt(row,0);
                cbolist.SelectedIndex =0;

            }
            catch (Exception)
            {

                MessageBox.Show("网路异常!");
            }
            finally
            {
                con.Close();
            }

        }

        //给dgvlist绑定数据的方法
        public void getdgvlistzhi(string RowFilter)
        {
            //取消英文列自动生成
            dgvlist.AutoGenerateColumns = false;
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select  song_id,song_name,songtype_name,song_play_count,song_info.songtype_id from song_info,song_type where song_info.songtype_id=song_type.songtype_id";
            SqlDataAdapter da = new SqlDataAdapter(sql,con);
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds,"info");
                DataView dv = new DataView(ds.Tables["info"]);
                dv.RowFilter = RowFilter;
                dgvlist.DataSource = dv;
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {

                con.Open();

            }
        }

        //点击查询触发的事件
        private void btnselect_Click(object sender, EventArgs e)
        {

            if (txtsongname.Text == "" && cbolist.Text == "全部")
       {
           string RowFilter = "";
           getdgvlistzhi(RowFilter);
       }
            else if (txtsongname.Text != "" && cbolist.Text == "全部")
       {
           //获取歌曲名称
           string song_name = txtsongname.Text;
           //获取歌曲类型对应的隐藏值
           int type_id = Convert.ToInt32(cbolist.SelectedValue);
           string RowFilter = "song_name like ‘%" + song_name + "%‘";
           getdgvlistzhi(RowFilter);

       }
       else
       {

           //获取歌曲名称
           string song_name = txtsongname.Text;
           //获取歌曲类型对应的隐藏值
           int type_id = Convert.ToInt32(cbolist.SelectedValue);
           string RowFilter = "song_name like ‘%" + song_name + "%‘ and songtype_id =" + type_id + "";
           getdgvlistzhi(RowFilter);

       }
        }

        //点击dgvlist单元格触发的事件
        private void dgvlist_CellClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        //删除歌曲信息的方法
        public void deletesong()
        {

            if (dgvlist.SelectedRows[0].Cells[0].Value.ToString() != "")
            {
                //获取选中行的歌曲编号
                int song_id = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["song_id"].Value);
                DialogResult result = MessageBox.Show("确定删除吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                    SqlConnection con = new SqlConnection(SqlHelper.str);
                    string sql = "delete song_info where song_id=" + song_id + "";
                    SqlCommand cmd = new SqlCommand(sql, con);
                    try
                    {
                        con.Open();
                        int count = cmd.ExecuteNonQuery();
                        if (count > 0)
                        {
                            MessageBox.Show("删除成功!");
                        }
                        else
                        {
                            MessageBox.Show("删除失败!");
                        }
                    }
                    catch (Exception)
                    {

                        MessageBox.Show("网络异常!");
                    }
                    finally
                    {
                        con.Close();
                    }
                }

            }
            else

            {

                MessageBox.Show("请选择一首歌曲");

            }
        }

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //删除歌曲信息的方法
            deletesong();
        }
        //修改
        private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (dgvlist.SelectedRows[0].Cells[0].Value.ToString() != "")
            {
                //获取选中行的歌曲编号
                int song_id = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["song_id"].Value);
                AddSongInfo frm = new AddSongInfo();
                frm.song_id = song_id;
                frm.Show();
            }
            else
            {
                MessageBox.Show("请选择一首歌曲");
            }
        }

        private void cbolist_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbolist.Text == "全部")
            {

                txtsongname.Enabled = false;
            }
            else
            {
                txtsongname.Enabled = true;
            }
        }

修改歌手信息(共用窗体新增歌手(FrmAddSingerinfo)):

修改歌曲信息(共用窗体新增歌曲(AddSongInfo):):

修改歌手图片路径(Frmsingerphotourl)

 private void button2_Click(object sender, EventArgs e)
        {

            // 如果新路径为空,提示
            if (this.txtnewurl.Text.Trim() == "")
            {
                MessageBox.Show("请选择新路径!");
            }
            else
            {
                // 用户确认修改
                if (MessageBox.Show("确定要修改路径吗?", "操作提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {

                    Directory.Delete(txtnewurl.Text);
                    Directory.Move(txturl.Text, txtnewurl.Text);
                    string newUrl = txtnewurl.Text;
                    SqlConnection con = new SqlConnection(SqlHelper.str);
                    string sql = "update Resource_path set resource_path=‘" + newUrl + "‘ where resource_id=2";
                    SqlCommand cmd = new SqlCommand(sql, con);
                    try
                    {
                        con.Open();
                        int count = cmd.ExecuteNonQuery();
                        if (count > 0)
                        {
                            MessageBox.Show("保存成功!");
                        }
                        else
                        {
                            MessageBox.Show("保存失败!");
                        }
                    }
                    catch (Exception)
                    {

                        MessageBox.Show("网络异常!");
                    }
                    finally
                    {
                        con.Close();
                    }
                }

            }
        }
        //点击关闭触发的事件
        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnll_Click(object sender, EventArgs e)
        {

            DialogResult result = folderBrowserDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                txtnewurl.Text = folderBrowserDialog1.SelectedPath + "\\";
            }

        }

        private void frmsingerphotourl_Load(object sender, EventArgs e)
        {

            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "select resource_path from Resource_path where resource_id=2";
            txturl.Text = song_path(sql);
        }

        //给当前路径赋值
        private string song_path(string sql)
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            SqlCommand cmd = new SqlCommand(sql, con);
            string path = "";
            try
            {
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();

                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            path = dr["resource_path"].ToString();
                        }

                    }
                }
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
            return path;
}

修改歌曲路径(frmsongurl)

private void frmsongurl_Load(object sender, EventArgs e)
        {

         SqlConnection con = new SqlConnection(SqlHelper.str);
         string sql = "select resource_path from Resource_path where resource_id=1";
         txturl.Text = song_path(sql);
        }
        //给当前路径赋值
        private string song_path(string sql)
        {
            SqlConnection con = new SqlConnection(SqlHelper.str);
            SqlCommand cmd = new SqlCommand(sql, con);
            string path = "";
            try
            {
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();

                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            path = dr["resource_path"].ToString();
                        }

                    }
                }
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
            return path;
        }

        //点击浏览触发的事件
        private void btnll_Click(object sender, EventArgs e)
        {

                DialogResult result = folderBrowserDialog1.ShowDialog();
                if (result == DialogResult.OK)
                {
                    txtnewurl.Text = folderBrowserDialog1.SelectedPath + "\\";
                }

        }
        //点击关闭触发的事件
        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        //点击保存触发的事件
        private void button2_Click(object sender, EventArgs e)
        {

            // 如果新路径为空,提示
            if (this.txtnewurl.Text.Trim() == "")
            {
                MessageBox.Show("请选择新路径!");
            }
            else
            {
                // 用户确认修改
                if (MessageBox.Show("确定要修改路径吗?", "操作提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {

                    Directory.Delete(txtnewurl.Text);
                    Directory.Move(txturl.Text, txtnewurl.Text);
                      string newUrl = txtnewurl.Text;
            SqlConnection con = new SqlConnection(SqlHelper.str);
            string sql = "update Resource_path set resource_path=‘" + newUrl + "‘ where resource_id=1";
            SqlCommand cmd = new SqlCommand(sql,con);

            try
            {
                con.Open();
              int count=  cmd.ExecuteNonQuery();
              if (count > 0)
              {
                  MessageBox.Show("保存成功!");
              }
              else
              {
                  MessageBox.Show("保存失败!");
              }
            }
            catch (Exception)
            {

                MessageBox.Show("网络异常!");
            }
            finally
            {
                con.Close();
            }
                }

            }

        }
时间: 2024-10-13 03:44:36

MyKTV项目总结的相关文章

MyKtv项目 S1293 安孟阳 指导老师 :原玉明

MyKtv项目  S1293 安孟阳    指导老师 :原玉明 My ktv 项目需要实现的功能有: 显示点歌模式(歌手点歌.分类点歌.拼音点歌.排行榜.字数点歌),显示示系统功能(当前播放.下一首.重唱.切歌.播放列表.服务.退出). 1.1.1. KTV主界面 显示点歌模式(歌手点歌.分类点歌.拼音点歌.排行榜.字数点歌),显示示系统功能(当前播放.下一首.重唱.切歌.播放列表.服务.退出). 1.1.2. 歌手点歌 首先选择歌手性别(男.女.组合),然后显示歌手分类(大陆.香港.台湾.欧美

MyKTV项目,走起!

第一部分:这个项目对于新手来说有一点难度,但是当你理清类之间的关系和怎样去实现功能后就会感觉轻松很多. 话不多说,先上类图: 接着是数据库表间关系: 本项目要实现以下功能: 明星点歌 拼音点歌 类型选择 金榜排行 字数点歌 一共五大块,那么明星点歌下还有一个播放的功能. 在主页面有一个正在播放和下一首的提示功能. 这是ktv主页面: 在下边还有重唱,切歌,已点,服务和退出功能 相信大家都去过KTV,所以这些功能就不说了,比我都清楚! 这里我把播放控件放在了主页面,位置随意,放在哪都行,也可以单独

KTV后台的重要性

之前就是说过“一个项目有很多重要的步骤以及功能”,那我们现在就来看看对于KTV项目来说:后台是处于什么样的重要作用! 首先就得了解KTV后台的一些功能了: 1.歌曲管理 .歌手管理 .设置资源路径 2.新增歌手.歌手查询.新增歌曲.歌曲查询.更改歌曲路径以及退出点歌系统 一.后台登录界面 01.判断登录 } //登陆 private void btnlogin_Click(object sender, EventArgs e) { SqlConnection con = new SqlConne

MyKTV系统项目的感想

不粉身碎骨,何以脱胎换骨! 3月11号,我们迎来S1的尾巴.这期间有温暖,默契,有项目.一切刚刚好.刚刚正式接到KTV这个微微型的项目的时候,还是很害怕的,虽然老师在前两天就已经提到也讲到,KTV系统这个项目是怎样的实现过程!,但脑子的细胞都在喊话:这,这,这个太难了!肯定做不出来!! 1.凡事预则立不预则废 : 但是,时间不等人,一周多的时间,抛开抱怨,抛开幻想!每个人都进入了备战状态,我们要认真对待,我们要努力做到最好.即便时间很短,我们还是呈现出我们的用心之作.项目实施的前期准备是项目实施

.NET小项目之MyKtv(歌曲播放功能实现)

在KTV点歌系统中我们根据需求获取到歌手的歌曲信息,点击歌手的歌曲将其添加到一点歌曲列表中看似简单的一个操作其实涉及很多内容,这也是写这篇Blog的目的—分析歌曲播放的原理. 原理分析 我们应该清楚,在KTV中点歌后会将歌曲添加到已点列表中,已点列表,这时候播放器会根据已点列表里的歌曲顺序去播放歌曲.具体如何实现该功能,我们一步步来分析. 首先我们应该创建一个播放列表类,用来存储已点列表,以及已点列表操作相对应的方法. 创建Song类来保存歌曲对象, 枚举类SongPlayState歌曲的播放状

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

一个项目,一分收获:一个项目,一些资源.Ktv项目也是一样的,所以我想分享我的收获,让你们获得你需要的资源. 一. 那MyKTV点歌系统具体的功能有哪些呢?我们就来看看吧! 1.MyKTV前台功能: 01.歌星点歌 .拼音点歌 .数字点歌 .类型选择 .金榜排行 02.切歌 .点歌 .重唱和退出 2.MyKTV后台功能: 01.歌手管理 .歌曲管理 .设置资源路径 02.新增歌手.歌曲 ,查询歌手.歌曲信息,设置歌曲路径和退出 二. 功能已经概括的差不多了,就让我们一起来看看MyKTV的项目吧

KTV项目 SQL数据库的应用 结合C#应用窗体

五道口北大青鸟校区 KTV项目 指导老师:袁玉明 SQL数据库关系图 C#解决方案类图 第一步:创建数据库连接方法和打开方法和关闭方法! 1 public class DBHelper 2 { 3 private string str = "server=.;database=MyKtv;uid=sa"; 4 private SqlConnection _conection; 5 6 public SqlConnection Conection 7 { 8 get 9 { 10 if

Win10下IIS配置、项目发布、添加网站

Win10下IIS配置 1.找到控制面板:[开始]菜单鼠标右击,打开[控制面板] 2.打开控制面板,点击[程序],点击[启用或关闭Windows功能] 下一步,点击[启用虎关闭Windows功能] 3. 开始修改IIS了,我是这样勾上的,有可能比较多. 4. 验证IIS是否正确安装,等待几分钟后IIS配置完成.在浏览器输入http://localhost/iisstart.htm会出现 IIS安装成功页面.第一次修改的时候出现了成功页面,但是后来删除了IIS中默认的网站就打不开了,但是不影响的.

使用 IDEA 创建 Maven Web 项目 (异常)- Disconnected from the target VM, address: &#39;127.0.0.1:59770&#39;, transport: &#39;socket&#39;

运行环境: JDK 版本:1.8 Maven 版本:apache-maven-3.3.3 IDEA 版本:14 maven-jetty-plugin 配置: <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> <webAppSourceDirectory>${pro