KTV项目

10 篇文章 0 订阅
8 篇文章 3 订阅

KTV项目

理论 数据库 加控件介绍

添加

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

切歌

利用数组拼路径

暂停

在这里插入图片描述

状态小结

正在播放的视频的显示 3

暂停的视频的显示 2

播放完了显示的是 1

没有加载显示的是 0

我们的玩法

如果状态是1 播放玩长了,可以切歌

播放暂停停止

在这里插入图片描述

暂停和播放一起
private void timer1_Tick(object sender, EventArgs e)
        {
            //获取当前状态
            currentState = (int)axWindowsMediaPlayer1.playState;

            //判断
            //修改我的按钮的文本
            if (currentState == 3)
            {
                button3.Text = "暂停";
            }

            if (currentState == 2)
            {
                button3.Text = "播放";
            }
        }
 private void button3_Click(object sender, EventArgs e)
        {
            //判断
           //播放
            if(currentState == 3){
                //暂停
                axWindowsMediaPlayer1.Ctlcontrols.pause();
            }

            //暂停
            if(currentState == 2){
                //播放
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }

            if(currentState == 1){
            
            }
        }

在这里插入图片描述

扩展

我们的媒体控件不可以的大小不可控
这里我们要很好额控制大小就要用到 Panel 这个控件
Panel 这个控件和HTML的 div 差不多
在这里插入图片描述
填满

在这里插入图片描述

综合应用

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

namespace db11071206媒体控件作业
{
    public partial class Form1 : Form
    {
        //定义一个歌曲数组
        public String[] names = {"刘大壮 - 会不会(吉他版).mp3"
                         ,"沈灵七an - 会不会(温柔女生完整版).mp3"
                         ,"就是南方凯 - 万拒(吉他版).mp3"                     
                         ,"薛之谦 - 演员.mp3"
                         ,"许嵩 - 断桥残雪.mp3"
                         };

        //定义一个计数器
        public int i;

        //定义一个显示当前状态的成员变量
        public int currentState;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //调用音频加载方法
            namesArray(i);

        }

        private void namesArray(int i)
        {
            //获取第一个音频名称
            String fileName = names[i];

            //文件位置
            String dirPath = "D:\\CloudMusic";

            //拼接路径
            String filePath = dirPath + "\\" + fileName;

            //调用修改 lable 的值 (显示当前播放歌曲名)
            modifyLableText(names);

            //给音频赋值
            axWindowsMediaPlayer1.URL = filePath;
        }

        private void modifyLableText(String[] names)
        {

            //获取当前播放的歌曲名称
            String tamp = names[i];

            //从中查找 . 的位置
            int lookup = tamp.LastIndexOf(".");

            //截取文字
            String text = tamp.Substring(0, lookup);

            //给lable 赋值
            label2.Text = text;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //判断我当前的下标
            if (i == 0)
            {
                //让我的 计数器 等于数组长度
                i = names.Length;
            }

            //计数器减一
            i--;

            //重新加载歌曲信息
            namesArray(i);

            //给lable 重新赋值
            modifyLableText(names);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //获取当前状态
            currentState = (int)axWindowsMediaPlayer1.playState;

            //判断
            //修改我的按钮的文本
            if (currentState == 3)
            {
                button3.Text = "暂停";
            }

            if (currentState == 2)
            {
                button3.Text = "播放";
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //判断
           //播放
            if(currentState == 3){
                //暂停
                axWindowsMediaPlayer1.Ctlcontrols.pause();
            }

            //暂停
            if(currentState == 2){
                //播放
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //计数器加一
            i++;

            //判断我当前的下标
            if (i == names.Length)
            {
                //让我的 计数器 等于0
                i = 0;
            }

            

            //重新加载歌曲信息
            namesArray(i);

            //给lable 重新赋值
            modifyLableText(names);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //停止
            axWindowsMediaPlayer1.Ctlcontrols.stop();
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            //判断我的歌曲转态 播放完后切歌
            if (currentState == 1) { 
                //切换下一首
                //计数器加一
                i++;

                //判断我当前的下标
                if (i == names.Length)
                {
                    //让我的 计数器 等于0
                    i = 0;
                }


                //调用歌曲加载
                namesArray(i);


                //给lable 重新赋值
                modifyLableText(names);
            }
        }

       
    }
}

引入添加文件控件

在这里插入图片描述显示控件
在这里插入图片描述

两个属性的区别
在这里插入图片描述

在这里插入图片描述

让播放器播放我选中的视频或者MP3
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

openFileDialog过滤文件

openFileDialog 过滤文件

在这里插入图片描述
在这里插入图片描述
(媒体文件)|.mkv|mp3|.mp3

方法一:
在这里插入图片描述
方法二:

在这里插入图片描述

效果
在这里插入图片描述

这种模式要选择

我们可选择多个

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
这里可以把括号去掉

在这里插入图片描述
效果
在这里插入图片描述

利用相对路径播放文件

用相对路径播放文件 传输文件是可以一起过去 可以不需要很长的路径
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
对于代码只需要加上文件名就可以了

在这里插入图片描述

复制文件

在这里插入图片描述
. 是一个字节
在这里插入图片描述
在这里插入图片描述效果
在这里插入图片描述
在这里插入图片描述
会将文件存进Dubug
代码:
在这里插入图片描述

判断文件是否存在

我要判断文件是否存在,避免程序报错
在这里插入图片描述在这里插入图片描述

删除文件

如果用户要更新文件,所以这边我们不可以以写return
想要实现此方法,我们要先删掉此文件再拷贝过来

在这里插入图片描述
在这里插入图片描述

面板切换

panel

在这里插入图片描述
这个效果像div一样
在这里插入图片描述利用panel盒子布局

在这里插入图片描述

面板切换

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
点击我的listView 里面项的的里面应该Tag存个一个id,然后给lable
在这里插入图片描述

图片盒子

在这里插入图片描述

加载图片

利用这个方法可以获得一个图片
在这里插入图片描述设置图片内容

在这里插入图片描述### 对象初始化器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据库操作

思路构建

在这里插入图片描述

数据库设计
歌手表

在这里插入图片描述
设想分类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述这里是利用歌手字母查找:
在这里插入图片描述
在这里插入图片描述
利用歌曲查找

在这里插入图片描述

idnamegenderTypecountryTypepingYingimg
1周杰伦1dxzjl.jpg
歌曲表

在这里插入图片描述
在这里插入图片描述singerId 是外键会关联主键
在这里插入图片描述

idnamealbumtimessingerIdhotpath
1一路生花一路生花4.1616200一路生花.mp4
歌手类型表

在这里插入图片描述

idname
1华语
2日韩
3欧美

在这里插入图片描述

关联

三个表的关联
在这里插入图片描述

在这里插入图片描述

材料收集

收集媒体资源
手机歌手图片

已面向对象的方式添加

后台:

歌手分类管理:添加分类,删除分类,修改分类,显示所有分类

歌手管理:添加歌手,修改歌手,查询歌手,删除歌手

歌曲管理:增,删,改,查

前台:

界面:歌手点歌,歌曲排名,拼音点歌

播放界面,歌单(上一曲,下一曲,顶歌)

播放按钮,暂停,重新开始,自动下切一首

网易云项目

界面

在这里插入图片描述

启动后

在这里插入图片描述
在这里插入图片描述

代码

主界面
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;

namespace 网易元音乐项目
{
    public partial class Form1 : Form
    {
        // old size
        Size oldSize;
        bool isMax = false;


        //播放列表 当前下标
        private int currentIdex;

        // 当前播放状态
        bool isPlay = false;

        // 播放列标转台
        bool isPlayList = false;

        public Form1()
        {
            InitializeComponent();
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            // 关闭窗口
            this.Close();
        }

        private void pbClose_MouseMove(object sender, MouseEventArgs e)
        {
            //让鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            //让窗口最小化
            this.Show();
            this.ShowInTaskbar = true;
            this.WindowState = FormWindowState.Minimized;
            this.BringToFront();

        }

        private void pictureBox2_MouseMove(object sender, MouseEventArgs e)
        {
            //让鼠标变成小手
            this.Cursor = Cursors.Hand;

        }

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void splitContainer1_Panel2_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void splitContainer1_Panel1_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void panel2_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void panel3_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void pictureBox1_Click_1(object sender, EventArgs e)
        {
            if (this.isMax == false)
            {
                // 改变功能栏图片
                String imgFunctionPath = Setting.imgDir + @"\功能栏2.png";
                Image functionBar = Image.FromFile(imgFunctionPath);
                plFunctionBar.BackgroundImage = functionBar;

                // 最大化显示系统工具栏
                this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea;
                this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size;
                this.MaximumSize = Screen.FromHandle(this.Handle).WorkingArea.Size;

                // 保存窗口当前的大小
                this.oldSize = this.Size;

                // 窗口最大化
                this.WindowState = FormWindowState.Maximized;
                this.isMax = true;
            }
            else
            {
                // 改变功能栏图片
                String imgFunctionPath = Setting.imgDir + @"\功能栏.png";
                Image functionBar = Image.FromFile(imgFunctionPath);
                plFunctionBar.BackgroundImage = functionBar;

                // 窗口恢复默认
                this.WindowState = FormWindowState.Normal;
                this.Size = this.oldSize;
                this.isMax = false;
            }





        }

        private void Form1_Load(object sender, EventArgs e)
        {


            // 播放列表隐藏
            plPlaylist.Visible = false;
            // 播放列标大小设置
            plPlaylist.Size = new Size(382, 803);

            // 播放歌曲歌手文本隐藏
            lblSongName.Visible = false;
            lblSingGerrnName.Visible = false;

            // 让首页选中的背景颜色变色
            lblHomePage.BackColor = Color.FromArgb(246, 246, 247);

            // 隐藏所有
            allFormMinimize();

            // 显示主界面
            plHomePage.Visible = true;
            // 平铺
            plHomePage.Dock = DockStyle.Fill;

            // 初始化 歌单1
            initSongList1();

            // 初始化 歌单2
            initSongList2();

            // 初始化 歌单3
            initSongList3();

            // 初始化 歌单4
            initSongList4();



        }

        private void initSongList3()
        {
            // 调用帮手
            DbHelper helper = new DbHelper();

            // 新建 sql 语句
            String sql = "select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id where Singer.name not in ('周杰伦','刘大壮')";

            // 获取数据郎读者
            SqlDataReader reader = helper.getReader(sql);

            // 循环
            while (reader.Read())
            {
                // 获取对应的值
                String songId = reader["songId"].ToString();
                String songName = reader["songName"].ToString();
                String songAlbumld = reader["songAlbum"].ToString();
                String songTimes = reader["times"].ToString();
                String songSingerId = reader["songSinger"].ToString();
                String songMp3Path = reader["mp3Path"].ToString();
                String songMvkPath = reader["mvkPath"].ToString();
                String songImg = reader["imgs"].ToString();

                // 新建一个listViewItem 对象
                ListViewItem item = new ListViewItem();

                // 对象赋值
                Song s = lineToObject(reader);

                // 桥梁赋值
                item.Tag = s;

                // 对应赋值
                item.Text = songName;
                item.SubItems.Add(songSingerId);
                item.SubItems.Add(songAlbumld);
                item.SubItems.Add(songTimes);

                // 把item添加进 listView 中
                lvSongList3.Items.Add(item);

            }

        }

        private void initSongList2()
        {
            // 调用帮手
            DbHelper helper = new DbHelper();

            // 新建 sql 语句
            String sql = "select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id where Singer.name = '周杰伦'";

            // 获取数据朗读者
            SqlDataReader reader = helper.getReader(sql);

            // 循环
            while (reader.Read())
            {
                // 获取对应的值
                String songId = reader["songId"].ToString();
                String songName = reader["songName"].ToString();
                String songAlbumld = reader["songAlbum"].ToString();
                String songTimes = reader["times"].ToString();
                String songSingerId = reader["songSinger"].ToString();
                String songMp3Path = reader["mp3Path"].ToString();
                String songMvkPath = reader["mvkPath"].ToString();
                String songImg = reader["imgs"].ToString();

                // 新建一个listViewItem 对象
                ListViewItem item = new ListViewItem();

                // 对象赋值
                Song s = lineToObject(reader);

                // 桥梁赋值
                item.Tag = s;

                // 对应赋值
                item.Text = songName;
                item.SubItems.Add(songSingerId);
                item.SubItems.Add(songAlbumld);
                item.SubItems.Add(songTimes);

                // 把item添加进 listView 中
                lvSongList2.Items.Add(item);



            }
        }

        private void initSongList1()
        {
            // 调用帮手
            DbHelper helper = new DbHelper();

            // 新建 slq 语句
            String sql = "select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id where Singer.name = '刘大壮'";

            // 获取数据朗读者
            SqlDataReader reader = helper.getReader(sql);

            // 循环
            while (reader.Read())
            {
                // 获取对应的值
                String songId = reader["songId"].ToString();
                String songName = reader["songName"].ToString();
                String songAlbumld = reader["songAlbum"].ToString();
                String songTimes = reader["times"].ToString();
                String songSingerId = reader["songSinger"].ToString();
                String songMp3Path = reader["mp3Path"].ToString();
                String songMvkPath = reader["mvkPath"].ToString();
                String songImg = reader["imgs"].ToString();

                // 新建一个listViewItem 对象
                ListViewItem item = new ListViewItem();

                // 对象赋值
                Song s = lineToObject(reader);

                // 桥梁赋值
                item.Tag = s;

                // 对应赋值
                item.Text = songName;
                item.SubItems.Add(songSingerId);
                item.SubItems.Add(songAlbumld);
                item.SubItems.Add(songTimes);

                // 把item添加进 listView 中
                lvSongList1.Items.Add(item);



            }
        }

        private void initSongList4()
        {
            // 调用帮手
            DbHelper helper = new DbHelper();

            // 新建 slq 语句
            String sql = "select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id";

            // 获取数据朗读者
            SqlDataReader reader = helper.getReader(sql);

            // 循环
            while (reader.Read())
            {
                // 获取对应的值
                String songId = reader["songId"].ToString();
                String songName = reader["songName"].ToString();
                String songAlbumld = reader["songAlbum"].ToString();
                String songTimes = reader["times"].ToString();
                String songSingerId = reader["songSinger"].ToString();
                String songMp3Path = reader["mp3Path"].ToString();
                String songMvkPath = reader["mvkPath"].ToString();
                String songImg = reader["imgs"].ToString();

                // 新建一个listViewItem 对象
                ListViewItem item = new ListViewItem();

                // 对象赋值
                Song s = lineToObject(reader);

                // 桥梁赋值
                item.Tag = s;

                // 对应赋值
                item.Text = songName;
                item.SubItems.Add(songSingerId);
                item.SubItems.Add(songAlbumld);
                item.SubItems.Add(songTimes);

                // 把item添加进 listView 中
                lvSongList4.Items.Add(item);


            }



        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void allFormMinimize()
        {
            // 让所有的lv 隐藏
            lvSearch.Visible = false;
            lvSongList1.Visible = false;
            lvSongList2.Visible = false;
            lvSongList3.Visible = false;
            lvSongList4.Visible = false;

            // 让首页隐藏
            plHomePage.Visible = false;

            // 让播放器隐藏
            plMedia.Visible = false;

            // 让播放列表隐藏
            plPlaylist.Visible = false;

        }

        private void label4_Click(object sender, EventArgs e)
        {
            // 让所有的lable 文字背景颜色变成白色
            allLableBackColor();

            // 让选中的背景颜色变色
            lblHomePage.BackColor = Color.FromArgb(246, 246, 247);

            // 让其他的lv的隐藏
            allFormMinimize();

            // 让首页显示
            plHomePage.Visible = true;
            // 平铺
            plHomePage.Dock = DockStyle.Fill;

        }

        private void allLableBackColor()
        {
            // 让所有的lable恢复默认颜色
            lblHomePage.BackColor = Color.FromArgb(255, 255, 255);
            lblSongList1.BackColor = Color.FromArgb(255, 255, 255);
            lblSongList2.BackColor = Color.FromArgb(255, 255, 255);
            lblSongList3.BackColor = Color.FromArgb(255, 255, 255);
            lblSongList4.BackColor = Color.FromArgb(255, 255, 255);
        }

        private void pbSongList4_Click(object sender, EventArgs e)
        {
            // 隐藏所有
            allFormMinimize();

            // 显示歌单4
            lvSongList4.Visible = true;

            //设置平铺
            lvSongList4.Dock = DockStyle.Fill;


        }

        private void lblSongList4_Click(object sender, EventArgs e)
        {
            // 让所有的lable 文字背景颜色变成白色
            allLableBackColor();

            // 让选中的背景颜色变色
            lblSongList4.BackColor = Color.FromArgb(246, 246, 247);

            // 让其他的lv的隐藏
            allFormMinimize();

            // 让首页显示
            lvSongList4.Visible = true;
            // 平铺
            lvSongList4.Dock = DockStyle.Fill;

        }

        private void pbSongList1_Click(object sender, EventArgs e)
        {
            // 隐藏所有
            allFormMinimize();

            // 显示歌单
            lvSongList1.Visible = true;

            // 设置平铺
            lvSongList1.Dock = DockStyle.Fill;
        }

        private void plHomePage_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标恢复默认
            this.Cursor = Cursors.Default;
        }

        private void lblSongList1_Click(object sender, EventArgs e)
        {
            // 让所有的lable 文字背景颜色变成白色
            allLableBackColor();

            // 让选中的背景颜色变色
            lblSongList1.BackColor = Color.FromArgb(246, 246, 247);

            // 隐藏所有
            allFormMinimize();

            // 显示歌单
            lvSongList1.Visible = true;

            // 设置平铺
            lvSongList1.Dock = DockStyle.Fill;
        }

        private void pbSongList3_Click(object sender, EventArgs e)
        {
            // 隐藏所有
            allFormMinimize();

            // 显示歌单
            lvSongList3.Visible = true;

            // 设置平铺
            lvSongList3.Dock = DockStyle.Fill;
        }

        private void lblSongList3_Click(object sender, EventArgs e)
        {

            // 让所有的lable 文字背景颜色变成白色
            allLableBackColor();

            // 让选中的背景颜色变色
            lblSongList3.BackColor = Color.FromArgb(246, 246, 247);

            // 隐藏所有
            allFormMinimize();

            // 显示歌单
            lvSongList3.Visible = true;

            // 设置平铺
            lvSongList3.Dock = DockStyle.Fill;
        }

        private void pbSongList2_Click(object sender, EventArgs e)
        {
            // 隐藏所有
            allFormMinimize();

            // 显示歌单
            lvSongList2.Visible = true;

            // 设置平铺
            lvSongList2.Dock = DockStyle.Fill;
        }

        private void lblSongList2_Click(object sender, EventArgs e)
        {

            // 让所有的lable 文字背景颜色变成白色
            allLableBackColor();

            // 让选中的背景颜色变色
            lblSongList2.BackColor = Color.FromArgb(246, 246, 247);

            // 隐藏所有
            allFormMinimize();

            // 显示歌单
            lvSongList2.Visible = true;

            // 设置平铺
            lvSongList2.Dock = DockStyle.Fill;
        }

        private void lblHomePage_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void lblSongList1_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void lblSongList2_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void lblSongList3_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void lblSongList4_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void panel7_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标恢复默认
            this.Cursor = Cursors.Default;
        }

        private void lblKTV_Click(object sender, EventArgs e)
        {
            // 隐藏所有
            allFormMinimize();

            // 显示歌单
            plHomePage.Visible = true;

            // 设置平铺
            plHomePage.Dock = DockStyle.Fill;
        }

        private void lblKTV_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pictureBox6_Click(object sender, EventArgs e)
        {
            if (isPlayList == false)
            {
                // 显示播放列表
                plPlaylist.Visible = true;

                // 改变歌曲列表的状态
                isPlayList = true;

            }
            else
            {
                // 隐藏播放列表
                plPlaylist.Visible = false;

                // 改变歌曲列表的状态
                isPlayList = false;
            }



        }

        private void butSearch_Click(object sender, EventArgs e)
        {
            // 获取文本框内容
            String txtBox = txtSearch.Text;

            // 清空内容
            lvSearch.Items.Clear();

            if (txtBox.Trim().Length == 0)
            {

                MessageBox.Show("请输入搜索内容!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return;

            }

            // 隐藏所有
            allFormMinimize();

            // 显示搜索列表
            lvSearch.Visible = true;

            // 设置平铺
            lvSearch.Dock = DockStyle.Fill;

            // 初始化 搜索列表
            initSongSearch();

            // 判断行数
            int i = lvSearch.Items.Count;

            if (i == 0)
            {

                MessageBox.Show("对不起,没有您想要的内容!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return;

            }



        }

        private void initSongSearch()
        {
            // 调用帮手
            DbHelper helper = new DbHelper();

            // 获取文本框内容
            String txtBox = txtSearch.Text;

            // 构建 sql 语句
            String sql = String.Format("select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id where Song.name like '%{0}%' or Singer.name like '%{1}%';", txtBox, txtBox);


            // 获取数据朗读者
            SqlDataReader reader = helper.getReader(sql);

            // 循环
            while (reader.Read())
            {
                // 获取对应的值
                String songId = reader["songId"].ToString();
                String songName = reader["songName"].ToString();
                String songAlbumld = reader["songAlbum"].ToString();
                String songTimes = reader["times"].ToString();
                String songSingerId = reader["songSinger"].ToString();
                String songMp3Path = reader["mp3Path"].ToString();
                String songMvkPath = reader["mvkPath"].ToString();
                String songImg = reader["imgs"].ToString();

                // 新建一个listViewItem 对象
                ListViewItem item = new ListViewItem();

                // 对象赋值
                Song s = lineToObject(reader);

                // 桥梁赋值
                item.Tag = s;

                // 对应赋值
                item.Text = songName;
                item.SubItems.Add(songSingerId);
                item.SubItems.Add(songAlbumld);
                item.SubItems.Add(songTimes);


                // 把item添加进 listView 中
                lvSearch.Items.Add(item);


            }
        }

        private Song lineToObject(SqlDataReader reader)
        {

            //获取数据
            String songId = reader["songId"].ToString();
            String songName = reader["songName"].ToString();
            String songAlbumld = reader["songAlbum"].ToString();
            String songTimes = reader["times"].ToString();
            String songSingerId = reader["songSinger"].ToString();
            String songMp3Path = reader["mp3Path"].ToString();
            String songMvkPath = reader["mvkPath"].ToString();
            String songImg = reader["imgs"].ToString();

            //实例化一个歌曲对象
            Song s = new Song();

            s.Id = songId;
            s.SongFullNameMp3 = songMp3Path;
            s.SongFullName = songMvkPath;
            s.SongName = songName;
            s.SingerName = songSingerId;
            s.AlbumName = songAlbumld;
            s.SongTimes = songTimes;
            s.SongImge = songImg;

            return s;
        }

        private void lvSongList4_Click(object sender, EventArgs e)
        {



        }

        private void lvSongList1_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void lvSongList2_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void lvSongList3_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void lvSearch_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void lvSongList4_MouseMove(object sender, MouseEventArgs e)
        {
            // 让鼠标变为默认
            this.Cursor = Cursors.Default;
        }

        private void lvSongList4_DoubleClick(object sender, EventArgs e)
        {
            //判断选中的行数
            int i = lvSongList4.SelectedItems.Count;

            // 判断选中的行数
            if (i == 0)
            {

                return;

            }


            // 获取选中的项藏着的歌
            Song s = (Song)(lvSongList4.SelectedItems[0].Tag);

            // 判断歌曲是否存在
            bool isExist = checkExist(Db.playArry, s);
            // 判断 b 对象
            if (isExist)
            {

                return;

            }

            // 把这首歌放到播放列表的对象数组中
            ArrayHelper.append(Db.playArry, s);
            // 获取这个歌数组的真实长度
            int len = ArrayHelper.getRealNum(Db.playArry);

            // 同步数据
            lblSongNumber.Text = len.ToString();
            // 更新播放列表
            updatePlayList();

            // 获取当前项的数量
            int c = lvSongPlayList.Items.Count;
            // 当前数量减一 
            currentIdex = c - 1;
            // 播放下一首歌
            playMedia();



        }

        private void updatePlayList()
        {
            //清空lv
            lvSongPlayList.Items.Clear();

            //遍历播单数组,有一个数据,就来一个项
            foreach (Song s in Db.playArry)
            {
                //排除掉 null 的情况
                if (s == null)
                {
                    break;
                }
                //有一首歌就来一个项
                ListViewItem item = new ListViewItem();
                //给想添加属性
                item.Text = s.SongName;
                item.SubItems.Add(s.SingerName);
                item.SubItems.Add(s.SongTimes);

                //把项添加进lv里面
                lvSongPlayList.Items.Add(item);

            }

        }

        private bool checkExist(Song[] playArry, Song s)
        {

            //遍历数组
            foreach (Song tempSong in playArry)
            {

                if (tempSong == null)
                {
                    break;
                }

                //获取当前的歌曲id
                String tempId = tempSong.Id;

                String sId = s.Id;

                //获取id做比较
                bool b = tempId.Equals(sId);

                //如果b 等于 true
                if (b)
                {
                    return true;
                }
            }

            return false;
        }



        private void 添加进播放列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //判断选中的行数
            int i = lvSongList4.SelectedItems.Count;

            // 判断选中的行数
            if (i == 0)
            {

                return;

            }


            // 获取选中的项藏着的歌
            Song s = (Song)(lvSongList4.SelectedItems[0].Tag);

            // 判断歌曲是否存在
            bool isExist = checkExist(Db.playArry, s);
            // 判断 b 对象
            if (isExist)
            {

                return;

            }

            // 把这首歌放到播放列表的对象数组中
            ArrayHelper.append(Db.playArry, s);
            // 获取这个歌数组的真实长度
            int len = ArrayHelper.getRealNum(Db.playArry);

            // 同步数据
            lblSongNumber.Text = len.ToString();
            // 更新播放列表
            updatePlayList();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            // 获取播放列表中歌曲的数量
            int i = lvSongPlayList.Items.Count;

            // 判断播放列表中是否有数据
            if (i > 0)
            {
                if (isPlay == false)
                {

                    // 改变播放状态
                    isPlay = true;

                    // 播放第一首歌
                    playMedia();


                }

            }


        }

        private void playMedia()
        {
            // 有数组
            // 找到歌曲对象需要 用到一个下标
            // 当前歌曲下标

            // 获取数组真实长度
            int i = ArrayHelper.getRealNum(Db.playArry);

            // 判断数组下标是否越界
            if (currentIdex >= i)
            {
                currentIdex = 0;

            }

            // 从播放列表中找到当前对应的歌曲对象
            Song currentSong = Db.playArry[currentIdex];

            // 非空判断
            if (currentSong == null)
            {
                MessageBox.Show("请在播放列表中添加歌曲!", "提示", MessageBoxButtons.OK);
                return;
            }

            // 从对象获取歌曲的媒体名称 列 七里香.mp3
            String songFullName = currentSong.SongFullNameMp3;

            // 获取歌手姓名
            String singerName = currentSong.SingerName;

            // 歌曲姓名
            String songName = currentSong.SongName;

            // 获取歌曲图片
            String songImge = currentSong.SongImge;

            // 判断照片是否为空
            if (songImge.Equals(""))
            {
                // 为空 修改成默认图片
                songImge = "default.jpg";
            }

            // 把名称 拼成 路径
            // 目录路径 + 媒体名称
            String songPath = Setting.mp3Dir + singerName + "\\" + songFullName;

            // 同步歌曲图片
            String imgPath = Setting.mp3ImgeDir + singerName + "\\" + songImge;
            // 获取图片
            Image image = Image.FromFile(imgPath);
            // 图片赋值
            pbSongImage.BackgroundImage = image;

            // 歌曲信息赋值
            lblSongName.Text = songName;
            lblSongName.Visible = true;

            // 歌手信息赋值
            lblSingGerrnName.Text = singerName;
            lblSingGerrnName.Visible = true;



            // 播放的功能
            // 播放器控件URL=路径
            axWindowsMediaPlayer1.URL = songPath;


            //

            initLvSongColor();

            lvSongPlayList.Items[currentIdex].BackColor = Color.FromArgb(0, 120, 215);





        }


        private void initLvSongColor()
        {

            // 遍历
            foreach (ListViewItem item in lvSongPlayList.Items)
            {
                item.BackColor = Color.FromArgb(255, 255, 255);
            }


        }


        private void pictureBox3_Click(object sender, EventArgs e)
        {
            // 获取媒体控件的当前状态
            int status = (int)axWindowsMediaPlayer1.playState;

            // 判断歌曲是否是在播放
            if (status == 3 || status == 2)
            {
                // 判断歌曲状态是否是暂停
                if (status == 2)
                {
                    axWindowsMediaPlayer1.Ctlcontrols.play();

                    // 让显示内容为暂停
                    // 获取图片位置
                    String imgPause = Setting.imgDir + "\\暂停.png";
                    Image pauseImg = Image.FromFile(imgPause);
                    // 让图片为暂停的图片
                    pbPlayAndPause.Image = pauseImg;

                    // 返回值
                    return;

                }

                // 让媒体控件停顿
                axWindowsMediaPlayer1.Ctlcontrols.pause();

                // 让显示内容为播放
                // 获取图片位置
                String imgPaly = Setting.imgDir + "\\播放.png";
                Image palyImg = Image.FromFile(imgPaly);
                // 让图片为暂停的图片
                pbPlayAndPause.Image = palyImg;
            }


        }

        private void trIsSongFinish_Tick(object sender, EventArgs e)
        {
            // 判断当前的歌曲状态
            int i = (int)axWindowsMediaPlayer1.playState;

            // 获取播放数组真实长度
            int len = ArrayHelper.getRealNum(Db.playArry);

            if (i >= len)
            {
                i = 0;
            }

            if (i == 1)
            {

                currentIdex++;
                playMedia();

            }
        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            // 前端移除
            // 判断选中的行数
            int i = lvSongPlayList.SelectedItems.Count;

            // 判断选中行数是否为零
            if (i == 0)
            {
                return;
            }

            // 获取id 通过 id 移除歌曲
            int remove = lvSongPlayList.SelectedItems[0].Index;

            // 移除
            lvSongPlayList.Items.RemoveAt(remove);

            // 后端移除
            ArrayHelper.pop(Db.playArry, remove);

            // 更新数据
            updateArryNumber();

        }

        private void pbNextSong_Click(object sender, EventArgs e)
        {
            //让播放的下标+1
            currentIdex++;
            //数据边界判断,上限判断
            //获取播放列表的数组中的真实长度 4 
            //当前下标是否大于等于4,数据校正,
            int realNum = ArrayHelper.getRealNum(Db.playArry);

            //判断
            if (currentIdex >= realNum)
            {

                currentIdex = 0;

            }



            //播放下一首
            playMedia();
        }

        private void pbPrev_Click(object sender, EventArgs e)
        {
            //下标自减
            currentIdex--;

            //获取真实长度
            int realNum = ArrayHelper.getRealNum(Db.playArry);

            //边界判断
            if (currentIdex < 0)
            {
                currentIdex = realNum - 1;

            }

            //播放下一首
            playMedia();
        }

        private void 移除所有歌曲ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // 前端移除
            // 移除所有歌曲
            lvSongPlayList.Items.Clear();

            // 后端移除
            Db.playArry = new Song[10];

            // 更新数据
            updateArryNumber();
        }

        private void updateArryNumber()
        {
            // 获取数组真实长度
            int i = ArrayHelper.getRealNum(Db.playArry);

            // 更新lable
            lblSongNumber.Text = i.ToString();

        }

        private void toolStripMenuItem2_Click(object sender, EventArgs e)
        {
            // 判断选中项的个数
            int i = lvSongPlayList.SelectedItems.Count;

            // 判断
            if (i <= 0)
            {
                return;
            }

            // 获取当前选中行的下标
            int indexItem = lvSongPlayList.SelectedItems[0].Index;

            // 保存选中的数据
            Song s = Db.playArry[indexItem];

            // 移除数据
            ArrayHelper.pop(Db.playArry, indexItem);

            // 调用 数组工具类 进行添加
            ArrayHelper.insert(Db.playArry, 1, s);

            // 更新播放列表
            updatePlayList();

        }

        private void lvSongList1_DoubleClick(object sender, EventArgs e)
        {
            //判断选中的行数
            int i = lvSongList1.SelectedItems.Count;

            // 判断选中的行数
            if (i == 0)
            {

                return;

            }


            // 获取选中的项藏着的歌
            Song s = (Song)(lvSongList1.SelectedItems[0].Tag);

            // 判断歌曲是否存在
            bool isExist = checkExist(Db.playArry, s);
            // 判断 b 对象
            if (isExist)
            {

                return;

            }

            // 把这首歌放到播放列表的对象数组中
            ArrayHelper.append(Db.playArry, s);
            // 获取这个歌数组的真实长度
            int len = ArrayHelper.getRealNum(Db.playArry);

            // 同步数据
            lblSongNumber.Text = len.ToString();
            // 更新播放列表
            updatePlayList();

            // 获取当前项的数量
            int c = lvSongPlayList.Items.Count;
            // 当前数量减一 
            currentIdex = c - 1;
            // 播放下一首歌
            playMedia();

        }

        private void lvSongList2_DoubleClick(object sender, EventArgs e)
        {
            //判断选中的行数
            int i = lvSongList2.SelectedItems.Count;

            // 判断选中的行数
            if (i == 0)
            {

                return;

            }


            // 获取选中的项藏着的歌
            Song s = (Song)(lvSongList2.SelectedItems[0].Tag);

            // 判断歌曲是否存在
            bool isExist = checkExist(Db.playArry, s);
            // 判断 b 对象
            if (isExist)
            {

                return;

            }

            // 把这首歌放到播放列表的对象数组中
            ArrayHelper.append(Db.playArry, s);
            // 获取这个歌数组的真实长度
            int len = ArrayHelper.getRealNum(Db.playArry);

            // 同步数据
            lblSongNumber.Text = len.ToString();
            // 更新播放列表
            updatePlayList();

            // 获取当前项的数量
            int c = lvSongPlayList.Items.Count;
            // 当前数量减一 
            currentIdex = c - 1;
            // 播放下一首歌
            playMedia();

        }

        private void lvSongList3_DoubleClick(object sender, EventArgs e)
        {
            //判断选中的行数
            int i = lvSongList3.SelectedItems.Count;

            // 判断选中的行数
            if (i == 0)
            {

                return;

            }


            // 获取选中的项藏着的歌
            Song s = (Song)(lvSongList3.SelectedItems[0].Tag);

            // 判断歌曲是否存在
            bool isExist = checkExist(Db.playArry, s);
            // 判断 b 对象
            if (isExist)
            {

                return;

            }

            // 把这首歌放到播放列表的对象数组中
            ArrayHelper.append(Db.playArry, s);
            // 获取这个歌数组的真实长度
            int len = ArrayHelper.getRealNum(Db.playArry);

            // 同步数据
            lblSongNumber.Text = len.ToString();
            // 更新播放列表
            updatePlayList();

            // 获取当前项的数量
            int c = lvSongPlayList.Items.Count;
            // 当前数量减一 
            currentIdex = c - 1;
            // 播放下一首歌
            playMedia();

        }

        private void lvSearch_DoubleClick(object sender, EventArgs e)
        {
            //判断选中的行数
            int i = lvSearch.SelectedItems.Count;

            // 判断选中的行数
            if (i == 0)
            {

                return;

            }


            // 获取选中的项藏着的歌
            Song s = (Song)(lvSearch.SelectedItems[0].Tag);

            // 判断歌曲是否存在
            bool isExist = checkExist(Db.playArry, s);
            // 判断 b 对象
            if (isExist)
            {

                return;

            }

            // 把这首歌放到播放列表的对象数组中
            ArrayHelper.append(Db.playArry, s);
            // 获取这个歌数组的真实长度
            int len = ArrayHelper.getRealNum(Db.playArry);

            // 同步数据
            lblSongNumber.Text = len.ToString();
            // 更新播放列表
            updatePlayList();

            // 获取当前项的数量
            int c = lvSongPlayList.Items.Count;
            // 当前数量减一 
            currentIdex = c - 1;
            // 播放下一首歌
            playMedia();

        }

        private void 添加进歌单3ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //判断选中的行数
            int i = lvSongList2.SelectedItems.Count;

            // 判断选中的行数
            if (i == 0)
            {

                return;

            }

            // 获取选中的项
            ListViewItem item;
        }

        private void pbPlayAndPause_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pbNextSong_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pbPrev_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pictureBox6_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pbMV_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pbMV_Click(object sender, EventArgs e)
        {
            // 获取播放状态
            int i = (int)axWindowsMediaPlayer1.playState;

            // 获取当前播放歌曲对象
            Song s = Db.playArry[currentIdex];

            if (s == null)
            {

                MessageBox.Show("对不起本视频没有MV!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return;
            }

            // 判断是否有视频
            if (s.SongFullName.Equals(""))
            {

                MessageBox.Show("对不起本视频没有MV!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return;
            }

            // 隐藏所有
            allFormMinimize();

            // 显示视频窗口
            plMedia.Visible = true;

            // 视频窗口平铺
            plMedia.Dock = DockStyle.Fill;

            // 获取mvk 路径 
            String mp4Path = s.SongFullName;

            // 获取歌手姓名
            String singerName = s.SingerName;

            // 拼接路径
            String mp4FullPath = Setting.mp4Dir + singerName + "\\" + mp4Path;

            // 播放视频
            axWindowsMediaPlayer1.URL = mp4FullPath;


        }

        private void lvSongPlayList_DoubleClick(object sender, EventArgs e)
        {
            //判断选中的行数
            int i = lvSongPlayList.SelectedItems.Count;

            // 判断选中的行数
            if (i == 0)
            {

                return;

            }

            // 获取选中行的下标
            int indexItem = lvSongPlayList.SelectedItems[0].Index;

            currentIdex = indexItem;

            playMedia();


        }

        private void pbSongList1_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pbSongList2_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pbSongList3_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }

        private void pbSongList4_MouseMove(object sender, MouseEventArgs e)
        {
            // 鼠标变成小手
            this.Cursor = Cursors.Hand;
        }



    }
}

其他工具类

主入口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 网易元音乐项目
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

路径位置

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 网易元音乐项目
{
    class Setting
    {
        // 平台界面图片路径
        public static String imgDir = @"ziliao\前端";

        // 歌曲MP3路径
        public static String mp3Dir = @"D:\KTV资源管理\mp3\";

        // 歌曲图片路径
        public static String mp3ImgeDir = @"D:\KTV资源管理\img\";

        // 歌曲Mp4路径
        public static String mp4Dir = @"D:\KTV资源管理\mp4\";
    }
}

播放列表对象数组

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 网易元音乐项目
{
    class Db
    {
        //播放列表的对象数组
        public static Song[] playArry = new Song[10];



    }
}

提供共有方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 网易元音乐项目
{
    class Song
    {
        //歌手id
        private String id;

        public String Id
        {
            get { return id; }
            set { id = value; }
        }

        //歌曲路径全名
        private String songFullNameMp3;

        public String SongFullNameMp3
        {
            get { return songFullNameMp3; }
            set { songFullNameMp3 = value; }
        }

        //MV路径全名
        private String songFullName;

        public String SongFullName
        {
            get { return songFullName; }
            set { songFullName = value; }
        }

        //歌曲姓名
        private String songName;

        public String SongName
        {
            get { return songName; }
            set { songName = value; }
        }

        //歌手姓名
        private String singerName;

        public String SingerName
        {
            get { return singerName; }
            set { singerName = value; }
        }

        //专辑名称
        private String albumName;

        public String AlbumName
        {
            get { return albumName; }
            set { albumName = value; }
        }

        //歌曲时长
        private String songTimes;

        public String SongTimes
        {
            get { return songTimes; }
            set { songTimes = value; }
        }

        // 歌曲封面
        private String songImge;

        public String SongImge
        {
            get { return songImge; }
            set { songImge = value; }
        }
    }
}

数据库连接工具类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;

namespace 网易元音乐项目

{
    class DbHelper
    {
        // 连接字符串
        public String connStr = "Data Source=.;Initial Catalog=KTV1107;Integrated Security=True";
        
        // 获得连接对象
        public SqlConnection getConn() {
            //获取连接对象
            SqlConnection conn = new SqlConnection(this.connStr);
            //打开连接
            conn.Open();
            //返回值
            //返回连接对象
            return conn;
        }

        // 增删改方法
        // 返回受影响行数
        public int update(String sql) {
            // 连接对象
            SqlConnection conn = getConn();
            // 执行者
            SqlCommand cmd = new SqlCommand(sql,conn);
            // int i = 执行者.执行不查询()
            int i = cmd.ExecuteNonQuery();
            //返回值
            //返回受影响行数
            return i;
        }

        // 查询方法
        // 返回数据朗读者
        public SqlDataReader getReader (String sql) {
            // 连接对象
            SqlConnection conn = getConn();
            // 执行者
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = sql;
            cmd.Connection = conn;
            // 执行者.executeReader()----》数据朗读者
            SqlDataReader reader = cmd.ExecuteReader();
            //返回值
            //返回数据朗读者
            return reader;
        }

        // 获取断开式的表
        public DataTable getTable(String sql)
        {
            //获取连接对象
            SqlConnection conn = getConn();
            //获取仓库
            DataSet ds = new DataSet();
            //数据小车
            SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);
            //小车卸货
            adapter.Fill(ds,"table");
            //获取数据表
            DataTable dt = ds.Tables["table"];
            //返回值
            //返回数据表
            return dt;
        }

        //获取仓库
        public DataSet getDataSet(String sql)
        {
            //获取连接对象
            SqlConnection conn = getConn();
            //获取仓库
            DataSet ds = new DataSet();
            //获取数据小车
            SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);
            //小车卸货
            adapter.Fill(ds,"table");
            //返回值
            //返回仓库
            return ds;
        }
        
    }
}

数组工具类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 网易元音乐项目
{
    class ArrayHelper
    {
        // 求数组真实长度
        public static int getRealNum(Object[] objs) {
            // 定义一个计数器
            int len = 0;

            // 遍历数组,获得下标
            for (int i = 0; i < objs.Length; i++)
            {
                // i就是下标
                // 获取下标对应的值
                object item = objs[i];

                // 判断非法
                if (item == null) {
                    break;
                }

                // 合法情况
                len++;

            }

            return len;
        }

        // 未位添加算法
        public static void append(Object[] objs,object obj) { 
        
            // 获取数据
            int realNum = getRealNum(objs);
            int length = objs.Length;

            // 非法判断
            if (realNum == length) {
                return;
            }

            // 主要逻辑
            objs[realNum] = obj;
        
        }


        // 未位删除
        public static object pop(Object[] objs) {
            // 获取相关数据
            int realNum = getRealNum(objs);

            // 非法情况
            if (realNum == 0) {
                return null;
            }

            // 主逻辑
            // 计算最后一个成员的下标
            int lastIdx = realNum - 1;
            // 拿到这个下标对应的值
            object obj = objs[lastIdx];
            // 把最后一个成员的下标对应位置设置为null
            objs[lastIdx] = null;
            // 返回这个值
            return obj;
        }

        // 中部插入算法
        public static void insert(Object[] objs, int insertIndex, Object obj) { 
        
            // 获取相关数据
            int realNum = getRealNum(objs);

            // 非法验证
            if (insertIndex >= realNum) {
                return;
            }

            if (realNum == objs.Length) {
                return;
            }

            // 主逻辑
            // 1,数据后移
            int lastIdx = realNum - 1;
            for (int i = lastIdx; i >= insertIndex; i--)
            {
                // i代表要操做的下标了
                Object o = objs[i];
                objs[i + 1] = o;

            }

            // 2,数据填入
            objs[insertIndex] = obj;

        
        }


        // 中部删除
        public static object pop(Object[] objs,int delIndex) {
            // 获取相关数据
            int realNum = getRealNum(objs);
            


            // 非法验证
            if (delIndex >= realNum) {
                return null;
            }

            // get del item
            object delItem = objs[delIndex];

            // 主逻辑
            // 1,位移
            int lastIndex = realNum - 1;  // 最后一个数据的下标

            for (int i = delIndex; i <= lastIndex-1; i++)
            {
                // i代表了要操做的下标
                // 获取下一个下标对应的值
                object o = objs[i + 1];
                objs[i] = o;
            }

            // 2,设空
            // 设置最后一个成员的位置,让它变为null
            objs[lastIndex] = null;

            // 返回数据
            return delItem;
        
        }

    }
}

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSOA6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值