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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欢迎进入MyKTV前后台点歌系统展示相关的知识,希望对你有一定的参考价值。

     一个项目,一分收获;一个项目,一些资源。Ktv项目也是一样的,所以我想分享我的收获,让你们获得你需要的资源。

     一. 那MyKTV点歌系统具体的功能有哪些呢?我们就来看看吧!

    1.MyKTV前台功能:

     01.歌星点歌 、拼音点歌 、数字点歌 、类型选择 、金榜排行

     02.切歌 、点歌 、重唱和退出

 

     2.MyKTV后台功能:

      01.歌手管理 、歌曲管理 、设置资源路径

      02.新增歌手、歌曲 ,查询歌手、歌曲信息,设置歌曲路径和退出

 

      二. 功能已经概括的差不多了,就让我们一起来看看MyKTV的项目吧

        1.首先就是展现KTV的主界面,让我们先了解一下那些功能

          技术分享

         01.实现各个共功能的主代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace MyKTVClient
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }
        //当前播放的歌曲
        private Song song;
        // 退出系统
        SqlConnection con = new SqlConnection(DBHelper.str);
        private void tsbtnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void MainForm_Load(object sender, EventArgs e)
        {
            DBHelper.frm = this;
            // 加载时,运行播放窗体               
            // 启动计时器
            this.tim.Start();

            // 歌手照片路径   
            string sql = "select resource_path from resource_path where resource_id=1";
            SqlCommand cmd = new SqlCommand(sql, con);
            // 歌手照片路径
            con.Open();
            KTVUtil.singerPhotoPath = cmd.ExecuteScalar().ToString();
            // 歌曲路径
            sql = "select resource_path from resource_path where resource_id=2";
            cmd.CommandText = sql;
            KTVUtil.songPath = cmd.ExecuteScalar().ToString();
            con.Close();
        }
           //已点歌曲窗体
        private void tsbtnOrdered_Click(object sender, EventArgs e)
        {
            frmOrderedSongList frm = new frmOrderedSongList();
            frm.Show();
        }

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

        // 切歌
        private void tsbtnCut_Click(object sender, EventArgs e)
        {
            if (txtnextsong.Text=="")
            {
                MessageBox.Show("暂无已点歌曲");
            }
            else
            {
                PlayList.CutSong(-1);
            }
            
        }
        // 服务
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("当前无服务!");
        }
        //播放歌曲
        private void PlaySong()
        {
            this.song = PlayList.GetPlayingSong(); // 获取当前要播放的歌曲
            if (song != null)
            {
                this.song.SetSongPlayed();             // 将当前歌曲播放状态设为已播放
                this.Winplaymedia.URL = KTVUtil.songPath + "\\\\" + this.song.SongURL;  // 得到当前播放歌曲的路径
                string urlls = KTVUtil.singerPhotoPath +"\\\\"+ this.song.Singerurl;//歌手图片
                lblsongname.Text = this.song.Singername;//歌手名字
                try
                {
                    this.pblist.Image = Image.FromFile(urlls);
                }
                catch (Exception)
                {

                    MessageBox.Show("暂无歌手图片"); ;
                }
               
            }
        }
        // 定时扫描歌曲列表,显示当前播放歌曲的名称
        private void timer1_Tick(object sender, EventArgs e)
        {
            // 在文本框中显示当前播放的歌曲名字
            this.txtplay.Text = PlayList.PlayingSongName();
            this.txtnextsong.Text = PlayList.NextSongName();
            if (this.song == null)
            {
                this.PlaySong();
            }
            if (this.Winplaymedia.playState == WMPLib.WMPPlayState.wmppsStopped)
            {
                this.song = null; // 将歌曲设为空
                PlayList.MoveOn();
            }
            // 切歌
            if (this.song != null && this.song.PlayState == SongPlayState.cut)
            {
                this.Winplaymedia.URL = "";
                this.song = null;
            }       
        }
        // 按歌手点歌
        private void picSinger_Click(object sender, EventArgs e)
        {
            frmOrderBySinger frm = new frmOrderBySinger();
            frm.Show();
        }

        // 拼音点歌
        private void picSongName_Click(object sender, EventArgs e)
        {
            frmOrderBySongName frm = new frmOrderBySongName();
            frm.Show();
        }

        // 分类点歌
        private void picSongType_Click(object sender, EventArgs e)
        {
            frmOrderBySongType frm = new frmOrderBySongType();
            frm.Show();
        }

        // 排行榜点歌
        private void picSongList_Click(object sender, EventArgs e)
        {
            frmSongList frm = new frmSongList();
            string sql = "select song_id,song_name,singer_info.singer_name,song_url,singer_info.singer_photo_url from song_info inner join singer_info on song_info.singer_id=singer_info.singer_id order by song_play_count desc";
            frm.Sql = sql;
            frm.Onform = FanhuiForm.Main;
            frm.Show();
        }

        // 字数点歌
        private void picWordCount_Click(object sender, EventArgs e)
        {
            frmOrderByWordCount frm = new frmOrderByWordCount();
            frm.Show();
        }

        private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            //关闭应用
            Application.Exit();
        }

        //点击窗体移动
        private Point mouseOffset;        //记录鼠标指针的坐标        
        private bool isMouseDown = false; //记录鼠标按键是否按下 
        private void pnlTop_MouseDown(object sender, MouseEventArgs e)
        {
            int xOffset;
            int yOffset;
            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
                yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height;
                mouseOffset = new Point(xOffset, yOffset);
                isMouseDown = true;
            }
        }

        private void pnlTop_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30);
                Location = mousePos;
            }
        }

        private void pnlTop_MouseUp(object sender, MouseEventArgs e)
        {

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

        private void pnlTop_Paint(object sender, PaintEventArgs e)
        {

        }
      
    }
}

     

       2.歌星点歌(三个listview的集成窗体)

      01.歌手类别

    技术分享

     02.歌手地区

     技术分享

 

     03.歌手姓名

    技术分享

  

    04.代码

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; // ADO.NET

namespace MyKTVClient
{
    public partial class frmOrderBySinger : Form
    {
        // 当前选择的歌手性别
        private string singergender = "";
        // 当前选择的歌手类型的编号
        private int singerTypeId = 0;
        
        public frmOrderBySinger()
        {
            InitializeComponent();
        }


        // 关闭当前窗体,显示主界面
        private void tsbtnHome_Click(object sender, EventArgs e)
        {
            this.Close();
        }

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

        // 切歌
        private void tsbtnCut_Click(object sender, EventArgs e)
        {           
                PlayList.CutSong(-1);
           
        }

        // 打开已点歌曲窗体
        private void tsbtnOrdered_Click(object sender, EventArgs e)
        {
            frmOrderedSongList frm= new frmOrderedSongList();
            frm.Show();
        }

        // 呼叫服务
        private void tsbtnService_Click(object sender, EventArgs e)
        {
            MessageBox.Show("服务!");
        }

        // 处理返回按钮的事件
        private void tsbtnExit_Click(object sender, EventArgs e)
        {
            if (this.pnlSingerList.Visible)
            {

                this.pnlSingerType.Visible = true;
                this.pnlSingerList.Visible = false;
            }
            else if (this.pnlSingerType.Visible)
            {
                this.pnlSingerSex.Visible = true;
                this.pnlSingerType.Visible = false;
            }
            else if (this.pnlSingerSex.Visible)
            {
                this.Close();
            }
        }
        //点击歌手的信息窗体时,弹出歌曲列表
        private void lvlistthree_Click(object sender, EventArgs e)
        {

            // 读取数据库,读出该歌手的所有歌曲
            SqlConnection con = new SqlConnection(DBHelper.str);
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("select song_id,song_name,singer_info.singer_name,song_url,singer_info.singer_photo_url from song_info,singer_info where song_info.singer_id=singer_info.singer_id and singer_name=‘{0}‘ and song_info.singer_id={1}",
                lvlistthree.SelectedItems[0].Text, Convert.ToInt32(lvlistthree.SelectedItems[0].Tag));

            frmSongList frm = new frmSongList();
            frm.Sql = sb.ToString();


            frm.Onform = FanhuiForm.Singergender; // 指定返回的窗体是按歌手点歌
            frm.Show();
        }
        //当点击歌手类别的窗体时,弹出某歌手的信息的船体
        private void lvlisttwo_Click(object sender, EventArgs e)
        {
            // 隐藏歌手类别,显示歌手列表
            pnlSingerType.Visible = false;
            pnlSingerList.Location = pnlSingerSex.Location;
            pnlSingerList.Dock = DockStyle.Fill;
            pnlSingerList.Visible = true;
            this.singerTypeId = Convert.ToInt32(lvlisttwo.SelectedItems[0].Tag); // 保存选中的类别编号

            // 读取数据库,读出歌手信息
            SqlConnection con = new SqlConnection(DBHelper.str);
            StringBuilder sql = new StringBuilder();
            sql.AppendFormat("select singer_id,singer_name,singer_photo_url from singer_info where singertype_id={0} and singer_gender=‘{1}‘",
                this.singerTypeId, this.singergender);

            try
            {
                SqlCommand cmd = new SqlCommand(sql.ToString(), con);
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                int imageIndex = 0; // 代表歌手头像的索引
                imglistthree.Images.Clear();

                // 循环读出歌手信息添加到窗体中显示
                lvlistthree.Items.Clear();
                while (dr.Read())
                {
                    // 将歌手头像放在ImageList控件中
                    string photoURL = KTVUtil.singerPhotoPath + "\\\\" + Convert.ToString(dr["singer_photo_url"]);
                    imglistthree.Images.Add(Image.FromFile(photoURL));

                    // 将歌手添加到ListView中
                    ListViewItem item = new ListViewItem();
                    item.Text = Convert.ToString(dr["singer_name"]);
                    item.Tag = Convert.ToString(dr["singer_id"]);
                    item.ImageIndex = imageIndex;
                    lvlistthree.Items.Add(item);

                    imageIndex++;
                }
                dr.Close();
            }
            catch (Exception)
            {

                MessageBox.Show("错误!");
            }
            finally
            {
                con.Close();
            } 
        }
        //当点击歌手的性别窗体时,弹出歌手的类别窗体的第一个listview
        private void lvlistone_Click(object sender, EventArgs e)
        {

            if (lvlistone.SelectedItems[0] != null)
            {
                // 隐藏歌手性别,显示歌手类别
                pnlSingerSex.Visible = false;
                pnlSingerType.Location = pnlSingerSex.Location;
                pnlSingerType.Dock = DockStyle.Fill;
                pnlSingerType.Visible = true;
                // 记录选择的性别
                this.singergender = Convert.ToString(lvlistone.SelectedItems[0].Tag); 
            }

            // 读取歌手类别
            SqlConnection con = new SqlConnection(DBHelper.str);
            string sql = "select * from singer_type";
            try
            {
                // 查询数据库
                SqlCommand command = new SqlCommand(sql, con);

                con.Open();
                SqlDataReader dr = command.ExecuteReader();

                // 循环将类别读取出来添加到ListView中
                lvlisttwo.Items.Clear();
                int i = 0;
                while (dr.Read())
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = Convert.ToString(dr["singertype_name"]);
                    item.Tag = Convert.ToInt32(dr["singertype_id"]);
                    item.ImageIndex = i;
                    lvlisttwo.Items.Add(item);
                    i++;
                }
                dr.Close();
            }
            catch (Exception)
            {

                MessageBox.Show("错误!");

            }
            finally
            {
                con.Close();
            }
        }
        private Point mouseOffset;        //记录鼠标指针的坐标        
        private bool isMouseDown = false; //记录鼠标按键是否按下  
        private void pnlon_MouseDown(object sender, MouseEventArgs e)
        {
            int xOffset;
            int yOffset;
            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
                yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height;
                mouseOffset = new Point(xOffset, yOffset);
                isMouseDown = true;
            }
        }

        private void pnlon_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30);
                Location = mousePos;
            }
        }

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

      
    }
}

 

    05.歌曲列表

   技术分享

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace MyKTVClient
{


    // 定义枚举,代表当前应该返回到的上一个窗体
    public enum FanhuiForm
    {
        Main, Singergender, SongType, WordCount, SongName, SongList
    }

    public partial class frmSongList : Form
    {
        private string sql = "";
        private FanhuiForm onform;  // 上一个窗体


        // 该窗体应该返回到的上一个窗体

        public FanhuiForm Onform
        {
            get { return onform; }
            set { onform = value; }
        }


        // 歌曲列表查询语句

        public string Sql
        {
            get { return sql; }
            set { sql = value; }
        }


        public frmSongList()
        {
            InitializeComponent();
        }

        // 返回
        SqlConnection con = new SqlConnection(DBHelper.str);
        private void tsbtnExit_Click(object sender, EventArgs e)
        {
            switch (this.Onform)
            {
                // 返回到歌手点歌
                case FanhuiForm.Singergender:
                    frmOrderBySinger frm = new frmOrderBySinger();
                    frm.Show();
                    break;
                // 返回到歌曲类型点歌
                case FanhuiForm.SongType:
                    frmOrderBySongType frm1 = new frmOrderBySongType();
                    frm1.Show();
                    break;
                // 返回到字数点歌
                case FanhuiForm.WordCount:
                    frmOrderByWordCount frm2 = new frmOrderByWordCount();
                    frm2.Show();
                    break;
            }
            this.Close();
        }

        // 窗体加载时查询歌曲列表
        private void SongListForm_Load(object sender, EventArgs e)
        {

            DataSet dataSet = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(this.Sql, con);
            da.Fill(dataSet, "info");
            dgvlist.DataSource = dataSet.Tables["info"];
        }        
   
  
      
       
     
     
        private void tsbtnService_Click(object sender, EventArgs e)
        {
            MessageBox.Show("服务中");
        }
        // 点播一首歌曲
        private void dgvlist_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            // 创建一个歌曲对象,并将选中的歌曲名和路径赋给该对象
            Song song = new Song();
            song.SongName = dgvlist.SelectedRows[0].Cells["songName"].Value.ToString();
            song.SongURL = dgvlist.SelectedRows[0].Cells["songURL"].Value.ToString();
            song.Singerurl = dgvlist.SelectedRows[0].Cells["singerUrl"].Value.ToString();
            song.Singername = dgvlist.SelectedRows[0].Cells["singer"].Value.ToString();
            PlayList.AddSong(song);

            // 更新数据库,将选中的歌曲点播次数加1
            int sId = Convert.ToInt32(dgvlist.SelectedRows[0].Cells["songId"].Value);
      //string sql = "update song_info set song_play_count=song_play_count+1 where song_id="+sId+"";
            string sql = string.Format("update song_info set song_play_count=song_play_count+1 where song_id={0}", sId);
            try
            {
                SqlCommand cmd = new SqlCommand(sql, con);
                con.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception)
            {

                MessageBox.Show("出错!");
            }
            finally
            {
                con.Close();
            }
        }
        //返回
        private void tsbtnExit_Click_1(object sender, EventArgs e)
        {
            this.Close();
        }
        // 切歌
        private void tsbtnCut_Click(object sender, EventArgs e)
        {
            PlayList.CutSong(-1);
        }
        // 打开已点歌曲窗体
        private void tsbtnOrdered_Click(object sender, EventArgs e)
        {
            frmOrderedSongList frm = new frmOrderedSongList();
            frm.Show();
        }
        // 重新播放当前歌曲
        private void tsbtnAgain_Click(object sender, EventArgs e)
        {
            PlayList.PlayAgain();
        }
        //主界面
        private void tsbtnHome_Click(object sender, EventArgs e)
        {
            this.Close();
        }
         
        private void frmSongList_MouseDown(object sender, MouseEventArgs e)
        {
            
        }

        private void frmSongList_MouseMove(object sender, MouseEventArgs e)
        {
            
        }

        private void frmSongList_MouseUp(object sender, MouseEventArgs e)
        {
            
        }

        private void pnlTop_MouseUp(object sender, MouseEventArgs e)
        {
            // 修改鼠标状态isMouseDown的值      
            // 确保只有鼠标左键按下并移动时,才移动窗体       
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
            }
        }
        private Point mouseOffset;        //记录鼠标指针的坐标        
        private bool isMouseDown = false; //记录鼠标按键是否按下 
        private void pnlTop_MouseDown(object sender, MouseEventArgs e)
        {
            int xOffset;
            int yOffset;
            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
                yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height;
                mouseOffset = new Point(xOffset, yOffset);
                isMouseDown = true;
            }
        }

        private void pnlTop_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X + 5, mouseOffset.Y + 30);
                Location = mousePos;
            }
        }

       

    }
}

 

  01. 播放界面

 技术分享

 

   02. 已点歌曲

  技术分享

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MyKTVClient
{
    public partial class frmOrderedSongList : Form
    {
        private FanhuiForm onform;  // 上一个窗体

        /// <summary>
        /// 该窗体应该返回到的上一个窗体
        /// </summary>
        public string name;
        public FanhuiForm Onform
        {
            get { return onform; }
            set { onform = value; }
        }

        public frmOrderedSongList()
        {
            InitializeComponent();
        }

        private void OrderedSongListForm_Load(object sender, EventArgs e)
        {
            this.newSonglist();
            tim.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //this.newSonglist();
        }


        //刷新歌曲列表
        private void newSonglist()
        {
            // 清空原列表
            lvlist.Items.Clear();
            int index = 0;
            while (PlayList.SongList[index] != null)
            {
                ListViewItem item = new ListViewItem();
                //获取歌曲的名称
                item.Text = PlayList.SongList[index].SongName;
                item.Tag = index;
                //歌曲的播放状态
                string playState = PlayList.SongList[index].PlayState == SongPlayState.unplayed ? "未播放" : "已播放";
                item.SubItems.Add(playState);
                lvlist.Items.Add(item);
                index++;
            }
        }

        // 返回到上一个窗体
        private void tsbtnExit_Click(object sender, EventArgs e)
        {
            switch (this.Onform)
            {
                case FanhuiForm.Singergender:
                    frmOrderBySinger frm = new frmOrderBySinger();
                    frm.Show();
                    break;
                case FanhuiForm.SongList:
                    frmSongList frm1 = new frmSongList();
                    frm1.Show();
                    break;
                case FanhuiForm.SongName:
                    frmOrderBySongName frm2 = new frmOrderBySongName();
                    frm2.Show();
                    break;
                case FanhuiForm.SongType:
                    frmOrderBySongType frm3 = new frmOrderBySongType();
                    frm3.Show();
                    break;
                case FanhuiForm.WordCount:
                    frmOrderByWordCount frm4 = new frmOrderByWordCount();
                    frm4.Show();
                    break;
            }

            this.Close();
        }      
        // 呼叫服务     
        private void tsbtnService_Click(object sender, EventArgs e)
        {
            MessageBox.Show("服务中");
        }
        //返回
        private void tsbtnExit_Click_1(object sender, EventArgs e)
        {
       

以上是关于欢迎进入MyKTV前后台点歌系统展示的主要内容,如果未能解决你的问题,请参考以下文章

MyKTV系统项目的感想

完成后台管理系统功能添加商品中的商品类目的展示

MyKTV系统,哎呦,不错哦

后台返回完整的HTML页面代码,如何打开展示

KTV点歌系统

微信小程序代码片段