今天我们讲述的如果用win from和sql数据库制作动态的歌星点歌

文章目录

  • 前言
  • 一、win from是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结

前言

我们利用win from制作了KTV点歌系统,而我们今天讲述的是KTV点歌系统里(歌星点歌)

利用软件与数据的链接,在模块上进行有限查询,每次查询八个歌星。点击下一页就会更换下八个歌星。其实利用了sql语句来实现


提示:以下是本篇文章正文内容,下面案例可供参考

一、win from是什么?

Windows Form 可做为多层分散式方案 (Multi-Tier Distributed Solution) 中的本机使用者界面。

WindowsForm控件

基础控件

Microsoft公司提供的控件非常丰富。 .NET中的大多数控件都派生于 System.Windows.Forms.Control类。它可以分成基础选择和容器类控件组、日期与图片控件组、日期与微调控件组和软件系统框架类控件组。基础选择和容器类控件组:如单选按钮、复选按钮、选项卡等。日期与图片控件组:如Timer、图片框和ImageList等。日期与微调控件组:如NumbericUpDown、DateTimePicker等。软件系统框架类控件组:菜单、StatusStrip控件等。

自主开发控件

自己开发的Windows Form控件通常有三种类型:复合控件,扩展控件,自定义控件,X定义控件。复合控件:将现有的各种控件组合起来,形成一个新的控件,将控件的功能集中起来。扩展控件:在现有控件的基础上新派生出的控件,为原有控件添加新功能或者修改原有控件的功能。自定义控件:直接从System.Windows.Forms.Control类派生出来。Control类提供控件所需要的所有基本功能,包括键盘和鼠标的事件处理。自定义控件是最灵活最强大的方法,但是对开发者的要求也比较高,必须为Control类的OnPaint事件写代码,也可以重写Control类的WndProc方法,处理更底层的Windows消息,所以必须了解GDI+和Windows API。由于自定义控件的复杂性,也可以不必开发,而是从受信任的来源下载控件,并通过添加引用来导入自定义控件。支持Windows Form的控件有:ComponentOne Studio for WinForms、Spread for WinForms、 MultiRow For WinForms等。

二、使用步骤

1.建立歌星面板

我们在这里采用了点击事件,在点击每个窗口的时候都会触发点击事件。然后获取当前组件lable的text设为变量,用String类型来接受。利用sql语句查询到歌手的歌曲,并且传输给下一个面板作为查询的条件

代码如下(示例):

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;namespace gexing
{/// <summary>/// 此类维护数据库连接字符串,和 Connection 对象/// </summary>public class DBHelper{// 数据库连接字符串private  const string connString = @"Data Source=.;Initial Catalog=myktv;User ID=sa;Pwd=gy060321";// 数据库连接 Connection 对象private static SqlConnection connection;/// <summary>/// Connection对象/// </summary>public  static  SqlConnection Connection{get{if (connection == null){connection = new SqlConnection(connString);}return connection;}            }/// <summary>/// 打开数据库连接/// </summary>public static void OpenConnection(){if (Connection.State == ConnectionState.Closed){Connection.Open();}else if (Connection.State == ConnectionState.Broken){Connection.Close();Connection.Open();}}/// <summary>/// 关闭数据库连接/// </summary>public static void CloseConnection(){if (Connection.State == ConnectionState.Open || Connection.State == ConnectionState.Broken){Connection.Close();}}}
}using gexing;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace T3
{public partial class PYDG : Form{public string xm;public PYDG(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){}//窗体加载private void PYDG_Load(object sender, EventArgs e){//查询前五条歌曲QuerySongList(1);//总条数int count = QuerySongCount();//页数 20, 一页5条   21     %  求余 , /  除法int page = count % 5 == 0 ?  count / 5 :  count / 5 + 1;this.label8.Text = page.ToString();//赋值}//查询总条数public int QuerySongCount(){DBHelper.OpenConnection();string sql="select count(*) from song_info where singer_id=20";SqlCommand command = new SqlCommand(sql,DBHelper.Connection);int  count = (int)command.ExecuteScalar();DBHelper.CloseConnection();return count;}//查询5条歌曲public void QuerySongList( int  page){DataSet ds = new DataSet(); //临时仓库,数据集   string sql = "select  top 5 * from song_info where singer_id = "+Convert.ToInt32(xm);if(page>1){int start = (page - 1) * 5;}   SqlDataAdapter adapter = new SqlDataAdapter(sql, DBHelper.Connection);//放入结果集adapter.Fill(ds, "song");//获取dataset临时仓库的值DataTable dt = ds.Tables["song"];int i = 0;foreach (DataRow row in dt.Rows){string name = row["song_name"].ToString();string url = row["song_url"].ToString();//一行 的panelPanel  p = this.panel1.Controls[i] as Panel;//找到一行的panel中的第一个小控件labelLabel  l = p.Controls[1] as Label;l.Text = name; //歌曲名称赋值l.Tag = url;//Tag : 存放数据i++;}}//下一页private void button8_Click(object sender, EventArgs e){//第几页string p=  this.label6.Text;int page = Convert.ToInt32(p) + 1;this.label6.Text = page.ToString();//改变label//查询page页的内容 从第几条开始查(page-1)*5//查询列表QuerySongList(page);}//点歌private void button2_Click(object sender, EventArgs e){Button btn =  sender as Button; //当前按钮//歌曲名称string name = btn.Parent.Controls[1].Text;string url = btn.Parent.Controls[1].Tag.ToString();//存入已点,播放列表  数组 ,集合(List)//Song s = new Song();//s.SongName = name;//准备mp4文件//s.SongUrl = "/song/"+url;//YiDian.AddSong(s); //播放列表,已点}private void panel7_Paint(object sender, PaintEventArgs e){}}
}

2.建立歌星点歌的歌曲模版

我跟根据上一个面板获取的text歌手的名字为sql语句约束条件,在歌曲面板直接进行数据库查询,然后展现在我们在组件上

代码如下(示例):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using T3;namespace gexing
{public partial class dalunan : Form{public void QuerySongList(int page){DataSet ds = new DataSet(); //临时仓库,数据集string sql = "select top 8 * from singer_info";if (page > 1){int start = (page - 1) * 8;sql += " where singer_id not in (select top " + start + " singer_id from singer_info)";}//sql += "and singer_gender='男'";SqlDataAdapter adapter = new SqlDataAdapter(sql, DBHelper.Connection);//放入结果集adapter.Fill(ds, "sing");//获取dataset临时仓库的值DataTable dt = ds.Tables["sing"];int i = 7;foreach (DataRow row in dt.Rows){string name = row["singer_name"].ToString();string url = row["singer_photo_url"].ToString();//一行 的panelPanel p = this.panel1.Controls[i] as Panel;PictureBox box = p.Controls[0] as PictureBox;box.Tag = row["singer_id"];//找到一行的panel中的第一个小控件labelLabel l = p.Controls[1] as Label;l.Text = name; //歌曲名称赋值l.Tag = url;//tag:存放路径i--;}}public int QuerySongCount(){DBHelper.OpenConnection();string sql = "select count(*) from singer_info";SqlCommand command = new SqlCommand(sql, DBHelper.Connection);int count = (int)command.ExecuteScalar();return count;}public dalunan(){InitializeComponent();}private void button2_Click(object sender, EventArgs e){//第几页string p = this.label9.Text;int page = Convert.ToInt32(p) + 1;this.label9.Text = page.ToString();//改变lable//查询page页的内容1,1-5//2,6-10 3,11-15QuerySongList(page);}private void dalunan_Load(object sender, EventArgs e){//查询前8条歌曲QuerySongList(1);//总条数int count = QuerySongCount();//页数,一页5条int page = count % 8 == 0 ? count / 8 : count / 8 + 1;this.label11.Text = page.ToString();}private void button1_Click(object sender, EventArgs e){//第几页string p = this.label9.Text;int page = Convert.ToInt32(p) - 1;this.label9.Text = page.ToString();//改变lable//查询page页的内容1,1-5//2,6-10 3,11-15QuerySongList(page);}private void panel2_Paint(object sender, PaintEventArgs e){}private void label1_Click(object sender, EventArgs e){PYDG p = new PYDG(); //form显示在panel3中this.panel2.Controls.Clear();this.panel2.Visible = true; //显示p.TopLevel = false; //设置form不是顶级p.Dock = DockStyle.Fill;//填充this.panel2.Controls.Add(p); //把窗体f放入panel3 p.Show();}private void pictureBox1_Click(object sender, EventArgs e){PictureBox box = sender as PictureBox;PYDG p = new PYDG(); //form显示在panel3中p.xm = box.Tag.ToString();//idp.Show();}}
}

该处使用数据库请求的数据。


总结

win from简便的方法,俗称拖拉拽。进行完成系统性的操作。数据库和win from链接,使数据动态性,随时更新和变换。

KTV项目(歌星点歌)相关推荐

  1. ktv点歌系统安卓_喜事汇KTV设备更新语音点歌系统,特推出一下优惠活动。转发朋友圈有惊喜。...

    喜事汇KTV设备更新语音点歌系统,新乡市首家采用最新语音点歌系统,拿起话筒喊:小美:小美:说出歌名+歌星'.切歌,音量加大都可以操作,唱歌累了可以呼叫小美:讲一个笑话,当地预报天气都可以哦. 告别传统 ...

  2. ktv项目小结 9206 随堂

    ktv项目目标 全栈型的项目 需要处理: 数据库设计与创建 后台功能的开发 前台功能的开发 关于数据库的设计 三张表: 歌手类型表 歌手表 歌曲表 关于后台 后台主要为买家提供(买家指商户) 可管理的 ...

  3. c#winform演练 ktv项目 实现播放完了一曲自动播放下一曲的功能

    c#winform演练 ktv项目 实现播放完了一曲自动播放下一曲的功能 情况 当前歌曲播放完后,不会自动放一下一曲 除非用户手动来点 希望,自动播放下一曲,不要人来点 分析 需要定时的来看一看控件的 ...

  4. c#winform演练 ktv项目 实现上一曲和下一曲的播放功能

    c#winform演练 ktv项目 实现上一曲和下一曲的播放功能 目标 画出"下一曲"的按钮 点击按钮在dgv上可看见变化 到达最后一曲时又回复到索引0行 播放对应的媒体文件 下一 ...

  5. c#winform演练 ktv项目 点击歌单行 可以播放对应的歌曲

    c#winform演练 ktv项目 点击歌单行 可以播放对应的歌曲 目标 可以打印当前选中行的索引值 点击按钮可以播放当前歌曲 获取dgv当前行的索引值 步骤 新建一个按钮 双击进入事件 编写代码获取 ...

  6. c#winform演练 ktv项目 通过下标选中歌曲并且列表高亮

    c#winform演练 ktv项目 通过下标选中歌曲并且列表高亮 目标 通过索引控制歌曲的选择 通过索引控件dgv控件的显示 数组下标变量 在数组中,通过下标来找到数组的成员 DataGridView ...

  7. c#winform演练 ktv项目 在dataGridView中显示歌曲列表

    c#winform演练 ktv项目 在dataGridView中显示歌曲列表 dgv控件绑定泛型数组 dgv对象.DataSource = 数据源 关于数据源,它可以是: 数据集中的某个表 泛型对象数 ...

  8. c#winform演练 ktv项目 制作歌曲播放列表

    c#winform演练 ktv项目 制作歌曲播放列表 关于播放列表 刚启动的音乐软件有播放列表 我们也要实现一个 演练 实现泛型歌曲数组 定义数组 加载歌曲

  9. c#winform演练 ktv项目 播放歌曲同时显示歌曲名称与歌手

    c#winform演练 ktv项目 播放歌曲同时显示歌曲名称与歌手 为什么需要歌曲对象 歌曲的路径是一个字符串 如何知道一个路径对应哪一首歌? 用对象最合适 设置对象的name为歌名 对象的src为路 ...

最新文章

  1. 多继承的构造函数和析构函数
  2. 神经网络无法区分异同,而且这个缺陷是本质性的
  3. 解字符串不能超过8000的方法及交叉表的处理
  4. POJ-2349-Arctic Network
  5. django命令行常见
  6. vs2012 出现 无法启动IIS express的解决方案
  7. 派尼数据库连接池配置
  8. #iOS问题记录# 关于UITableViewcel的分割线去掉问题
  9. python3关键字详解_Python解析、提取url关键字的实例详解
  10. 刘晓攀:连滚带爬看完《你的知识需要管理》
  11. Atitit .h5文件上传
  12. 数据结构课程设计(已完结)
  13. 最新黑客攻防实战从入门到精通(第二版)_学习笔记(一)
  14. 在线html解压,javascript实现网页端解压并查看zip文件
  15. linux的steam运行游戏,桌面应用|如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏...
  16. Linux怎么去掉secondary地址,有关IP aliasing, Primary address和Secondary address
  17. 家里两台电脑怎么共享文件_电脑系统教程:两台电脑如何共享文件
  18. 2020阿里巴巴社招面试题
  19. Go+ 发布 weekly release: v0.7.3
  20. 问题xcodebuild failed with code 65解决记录

热门文章

  1. 信息论-Turbo码学习
  2. 【每日一篇】LinkedList详解
  3. 惠普暗影精灵u盘启动linux,Win10+CentOS7 双系统 U盘安装
  4. 客户管理模块(保存查询客户)| CRM客户关系管理系统项目实战二(Struts2+Spring+Hibernate)解析+源代码
  5. 神经网络与深度学习 Class 13:卷积神经网络
  6. Linux系统下安装FTP服务
  7. 【技巧】Win11关闭【显示更多选项】|【show more options】
  8. 我的计算机中找不到磁盘分区,d盘不见了怎么办?我的电脑没有d盘怎么添加硬盘分区...
  9. pydobc连接sql server_pyodbc连接MSSQL执行SQL语句
  10. ALIENTEK探索者STM32F407时钟树