• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > c#实现KTV点歌系统

c#实现KTV点歌系统

作者:蒲公英学长 字体:[增加 减小] 来源:互联网 时间:2017-05-28

蒲公英学长 通过本文主要向大家介绍了马桶c的个人空间,c语言,欲情 c max,维生素c,奔驰c200等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

下面通过图文并茂的方式给大家分享C#实现KTV点歌系统。

public enum SongPlayState
 {
  //未播放,播放,重播,切歌
  unplayed, played, again, cut
 }
 public class Song
 {
  public string SongName { get; set; }//歌曲名称
  public string SongURL { get; set; }//歌曲路径
  public SongPlayState playState = SongPlayState.unplayed;//默认未播放
  internal SongPlayState PlayState { get; set; }
  //状态为已播
  public void SetSongPlayed()
  {
  this.PlayState = SongPlayState.played;
  }
  //重唱
  public void SetPlayAgain()
  {
  this.playState = SongPlayState.again;
  }
  //切歌
  public void SetSongCut()
  {
  this.playState = SongPlayState.cut;
  }
</div>

PlayList类中实现切歌 重唱 下一首 等.....

 public class PlayList
 {
  //定义一个长度为、 的歌曲数组,默认存储 首歌曲
  public static Song[] SongList = new Song[ ];
  public static int SongIndex = ;//当前播放的歌曲在数组中的索引
  //点播一首歌曲,其实是将歌曲对象添加到歌曲数组中
  public static bool AddSong(Song song)
  {
  bool success = false;//记录添加歌曲是否成功
  for (int i = ; i < SongList.Length; i++)
  {
   //找到数组中第一个为null的位置
   if (SongList[i] == null)
   {
   SongList[i] = song;
   success = true;
   break;
   }
  }
  return success;
  }
  //获取当前播放的歌曲::既然是获取当前播放的歌曲,返回值肯定是Song类型
  public static Song GetPlaySong()
  {
  if (SongList[SongIndex] != null)
  {
   return SongList[SongIndex];
  }
  else
  {
   return null;
  }
  }
  /// <summary>
  /// 播放下一首
  /// </summary>
  public static void MoveOn()
  {
  if (SongList[SongIndex] != null && SongList[SongIndex].PlayState == SongPlayState.again)
  {
   SongList[SongIndex].SetSongPlayed();
  }
  else
  {
   SongIndex++;
  }
  }
  /// <summary>
  /// 当前播放的歌曲名称
  /// </summary>
  /// <returns>歌曲名称</returns>
  public static string PlayingSongName()
  {
  string songName = ""; // 歌曲名称
  if (SongList[SongIndex] != null)
  {
   songName = SongList[SongIndex].SongName;
  }
   return songName;
  }
  /// <summary>
  /// 下一首要播放的歌曲名称
  /// </summary>
  /// <returns>歌曲名称</returns>
  public static string NextSongName()
  {
  string songName = ""; // 歌曲名称
  if (SongList[SongIndex + ] != null)
  {
   songName = SongList[SongIndex + ].SongName;
  }
   return songName;
  }
  //重放当前歌曲
  public static void PlayAgain()
  {
  if (SongList[SongIndex] != null)
  {
   SongList[SongIndex].SetPlayAgain();
  }
  }
  //切歌
  public static void CutSong(int index)
  {
  int i;//循环变量,代表切歌的位置
  if (index == - )//循环变量,代表切割的位置
  {
   i = SongIndex;
  }
  else
  {
   i = index;//从切歌的位置开始,将歌曲逐个向前移一个位置
  }
  SongList[i].SetSongCut();
  while (SongList[i] != null)
  {
   SongList[i] = SongList[i + ];
   i++; 
   //如果达到数组最后一个元素,就将最后一个元素指向空
   if (i == SongList.Length)
   {
   SongList[i] = null;
   }
  }
  }
 }
</div>

实现歌手点歌

 public FrmMain frmMain;
  string connectionStr = "server=.;database=MyKTV;uid=sa";
  DBHelp db = new DBHelp();
  private SqlConnection con;
  //首先要查出数据库中的图片路径和歌曲路径
  private void FrmCountry_Load(object sender, EventArgs e)
  {
   con = new SqlConnection(connectionStr);
  con.Open();
  string sql = "select resource_path from resource_path where resource_id= ";
   string sqlsongpath = "select resource_path from resource_path where resource_id= ";
  SqlCommand cmd = new SqlCommand(sql,con);
   SqlCommand cmd = new SqlCommand(sqlsongpath, con);
  KtvUnit.ImagePath = cmd.ExecuteScalar().ToString();
  KtvUnit.SongPath = cmd .ExecuteScalar().ToString();
  con.Close();
  }
  //点击歌手男女或组合时
  private void LvOne_Click(object sender, EventArgs e)
  {
   LoadSingerArea();
  }
  public string singer_type { get; set; }
  private void LoadSingerArea()
  {
  if (this.LvOne.SelectedItems[ ] != null)
  {
   LvOne.Visible = false;
   LvTwo.Location = LvOne.Location;
   LvTwo.Dock = DockStyle.Fill;
   LvTwo.Visible = true;
   this.singer_type=Convert.ToString(LvOne.SelectedItems[ ].Text);
  }
   con = new SqlConnection(connectionStr);
  string sql = "select singertype_id,singertype_name from singer_type";
  SqlCommand cmd = new SqlCommand(sql, con);
  SqlDataReader dr;
  try
  {
   con.Open();
   LvTwo.Items.Clear();
   dr = cmd.ExecuteReader();  
   if (dr.HasRows)
   {
   int index = ;
   while (dr.Read())
   {
    ListViewItem lvItem = new ListViewItem();
    int typeid = Convert.ToInt (dr["singertype_id"]);
    string typename = Convert.ToString(dr["singertype_name"]);
    lvItem.Text = typename;
    lvItem.Tag = typeid;
    lvItem.ImageIndex = index;
    LvTwo.Items.Add(lvItem);
    index++;
   }
   }
   dr.Close();
  }
  catch (Exception ex)
  {
   MessageBox.Show("系统出现异常" + ex.Message);
  }
  finally 
  {
   con.Close();
  }
  }
  public string singertype_id { get; set; }
  /// <summary>
  /// 点击地区类型时
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void LvTwo_Click(object sender, EventArgs e)
  {
  if (this.LvTwo.SelectedItems[ ] != null)
  {
   LvTwo.Visible = false;
   Lvthree.Location = LvTwo.Location;
   Lvthree.Dock = DockStyle.Fill;
   Lvthree.Visible = true;
   this.singertype_id = Convert.ToString(LvTwo.SelectedItems[ ].Tag);
  }
  string result = singer_type;
  if (result != "组合")
  {
   result = singer_type == "女歌手" ? "女" : "男";
  }
  con = new SqlConnection(connectionStr);
  string sql =string.Format( "select singer_id,singer_name,singer_photo_url from singer_info where singertype_id={ } and singer_Sex='{ }'",singertype_id,result);
  SqlCommand cmd = new SqlCommand(sql, con);
  SqlDataReader dr;
  try
  {
   con.Open();
   int index = ;
   Lvthree.Items.Clear();
   imageList .Images.Clear();
   dr = cmd.ExecuteReader();
   if (dr.HasRows)
   { 
   while (dr.Read())
   {   
    string photoURL =KtvUnit.ImagePath + Convert.ToString(dr["singer_photo_url"]);
    //先给ImageList填充图片
    imageList .Images.Add(Image.FromFile(photoURL));
    ListViewItem lvItem = new ListViewItem();
    lvItem.Text = Convert.ToString(dr["singer_name"]);
    lvItem.Tag = Convert.ToString(dr["singer_id"]);
    lvItem.ImageIndex = index;
    Lvthree.Items.Add(lvItem);
    index++;
   }
   }
   dr.Close();
  }
  catch (Exception ex)
  {
   MessageBox.Show("系统出现异常" + ex.Message);
  }
  finally
  {
   con.Close();
  }
  }
  public void SongList()
  {
  //读取数据库,读出该歌手的所有歌曲
   StringBuilder sb = new StringBuilder();
  //拼接SQL语句
  sb.AppendFormat("select song_id,song_name,song_url,singer_name from song_info,singer_info where singer_name='{ }' and song_info.singer_id={ }", Lvthree.SelectedItems[ ].Text, Convert.ToInt (Lvthree.SelectedItems[ ].Tag));
  FrmSongList songList = new FrmSongList();
   songList.Sql = sb.ToString();
  songList.Previous = KtvClient.PrevioisForm.Singer;//指定返回的窗体是按歌手点歌
  songList.ShowDialog();
  this.Close();
  }
  private void Lvthree_Click(object sender, EventArgs e)
  {
  SongList();
  }
  private void tsSingerMain_Click(object sender, Even



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#利用ReportViewer生成报表
  • C#基于正则去掉注释的方法示例
  • C#中new的用法及与override的区别分析
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法
  • C# for循环的经典案例集锦
  • C#操作word的方法示例
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法
  • C# WinForm制作异形窗体与控件的方法
  • C#实现Excel表数据导入Sql Server数据库中的方法
  • C#使用NPOI上传excel

相关文章

  • 2017-05-28asp.net页面中如何获取Excel表的内容
  • 2017-05-28C#由当前日期计算相应的周一和周日的实例代码
  • 2017-05-28c#使用filesystemwatcher实时监控文件目录的添加和删除
  • 2017-05-28C#重启远程计算机的代码
  • 2017-05-28C#编写的Base64加密和解密类
  • 2017-05-28C# BackgroundWorker组件学习入门介绍
  • 2017-05-28C#版的 Escape() 和 Unescape() 函数分享
  • 2017-05-28c#基数排序Radix sort的实现方法
  • 2017-05-28C#使用ToUpper()与ToLower()方法将字符串进行大小写转换的方法
  • 2017-05-28C#制作多线程处理强化版网络爬虫

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#结合数据库实现验证识别ID卡内容的方法
    • C#生成防伪码的思路及源码分享
    • WinForm实现为ComboBox绑定数据源并提供下拉提示功能
    • 解析C#多线程编程中异步多线程的实现及线程池的使用
    • c# 类和成员的修饰详细介绍
    • C#词法分析器之正则表达式的使用
    • C#泛型用法实例分析
    • C#中Byte[]和String之间转换的方法
    • C#使用队列(Queue)解决简单的并发问题
    • C#实现获取系统目录并以Tree树叉显示的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有