c#实现KTV点歌系统

作者:蒲公英学长 时间:2023-10-17 23:54:56 

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

c#实现KTV点歌系统

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;
 }

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;
  }
 }
 }
}

c#实现KTV点歌系统

实现歌手点歌


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, EventArgs e)
 {
 FrmMain main = new FrmMain();
 main.Show();
 this.Hide();
 }
 private void tsSingerBack_Click(object sender, EventArgs e)
 {
 if (this.LvOne.Visible==true)
 {
  FrmMain man = new FrmMain();
  man.Show();
  this.Hide();
 }
 else if (this.LvTwo.Visible==true)
 {
  this.LvTwo.Visible = false;
  this.LvOne.Visible = true;
 }
 else if (this.Lvthree.Visible==true)
 {
  this.Lvthree.Visible = false;
  this.LvTwo.Visible = true;
 }
 }
 private void tsSingerCut_Click(object sender, EventArgs e)
 {
 PlayList.CutSong(- );
 }
 private void tsSingerAgain_Click(object sender, EventArgs e)
 {
 PlayList.PlayAgain();
 }
 private void tsSingerYidian_Click(object sender, EventArgs e)
 {
 FrmPlayList frm = new FrmPlayList();
 frm.Show();
 }

拼音点歌

c#实现KTV点歌系统


public FrmMain frmMain;
 [DllImportAttribute("user .dll")]
 private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
 DBHelp db = new DBHelp();
 string connectionStr = "server=.;database=MyKTV;uid=sa";
 private void FrmPinYin_Load(object sender, EventArgs e)
 {
 AnimateWindow(this.Handle, , FrmMain.AW_SLIDE + FrmMain.AW_VER_POSITIVE);
 SqlConnection con = new SqlConnection(connectionStr);
 con.Open();
 db.connection();
 string sqlsongpath = "select resource_path from resource_path where resource_id= ";
 SqlCommand cmd = new SqlCommand(sqlsongpath, con);
 KtvUnit.SongPath = cmd.ExecuteScalar().ToString();
 }
 private void btnSearch_Click(object sender, EventArgs e)
 {
 string PinYin = this.txtPinYin.Text;
 //判断是否是中文 还是拼音
 if (!Regex.IsMatch(this.txtPinYin.Text, @"^[\u e -\u fa ]+$"))
 {
  StringBuilder PY = new StringBuilder(PinYin);
  for (int i = ; i <= PY.Length; i++)
  {
  PY.Insert(i, "%");
  i++;
  }
  string sql = string.Format("SELECT song_name,singer_name FROM dbo.singer_info, dbo.song_info WHERE dbo.singer_info.singer_id=dbo.song_info.singer_id AND song_ab LIKE '{ }'", PY);
  this.dgvPinYinInfo.DataSource = db.dataTable(sql,"PY");
 }
 else
 {
  StringBuilder ZW = new StringBuilder(PinYin);
  for (int i = ; i < ZW.Length; i++)
  {
  ZW.Insert(i,"%");
  i++;
  }
  string sql = string.Format("SELECT song_name,singer_name FROM dbo.singer_info, dbo.song_info WHERE dbo.singer_info.singer_id=dbo.song_info.singer_id AND song_name LIKE '{ }'", ZW);
  this.dgvPinYinInfo.DataSource = db.dataTable(sql, "PY");
 }
 }
 private void dgvPinYinInfo_DoubleClick(object sender, EventArgs e)
 {
 string songname = this.dgvPinYinInfo.SelectedRows[ ].Cells["song_name"].Value.ToString();
 DBHelp db = new DBHelp();
 db.connection();
 string sql = string.Format("SELECT song_name,singer_name,song_url,song_photo_url FROM dbo.song_info,dbo.singer_info where dbo.singer_info.singer_id=dbo.song_info.singer_id and song_name='{ }'",songname);
  SqlDataReader reader = db.ExecuteReaders(sql.ToString());
  Song song;
 if (reader.Read())
 {
  song = new Song();
  song.SongName = reader["song_name"].ToString();
  song.SongURL = KtvUnit.SongPath+reader["song_url"].ToString();
  PlayList.AddSong(song);  
 }
 reader.Close();
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "a";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "b";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "c";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "d";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "e";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "f";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "g";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "h";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "i";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "j";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "k";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "l";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "m";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "n";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "o";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "p";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "q";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "r";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "s";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "t";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "u";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "v";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "w";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "x";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "y";
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 textBox .Text = textBox .Text + "z";
 }
 private void FrmPinYin_FormClosing(object sender, FormClosingEventArgs e)
 {
 AnimateWindow(this.Handle, , FrmMain.AW_SLIDE + FrmMain.AW_VER_POSITIVE);
 }
 public void Binder()
 {
 string PinYin = this.textBox .Text;
 StringBuilder PY = new StringBuilder(PinYin);
  for (int i = ; i <= PY.Length; i++)
 {
  PY.Insert(i, "%");
  i++;
 }
 string sql = string.Format("SELECT song_name,singer_name FROM dbo.singer_info, dbo.song_info WHERE dbo.singer_info.singer_id=dbo.song_info.singer_id AND song_ab LIKE '{ }'", PY);
 DataSet ds = db.dataSet(sql, "PY");
 if (ds.Tables["PY"]!=null)
 {
  ds.Tables["PY"].Clear();
 }
 this.dgvPinYinInfo.DataSource = db.dataTable(sql, "PY");
 }
 private void pictureBox _Click(object sender, EventArgs e)
 {
 string text = textBox .Text;
 int index = text.Length - ;
 if (index >= )
 {
  textBox .Text = text.Remove(index);
 }
 }
 private void textBox _TextChanged(object sender, EventArgs e)
 {
 if (textBox .Text!=string.Empty)
 {
  Binder();
  this.dgvPinYinInfo.AutoGenerateColumns = false;
 }
 else
 {
  this.dgvPinYinInfo.DataSource=null;
 }
 }
 private void tsPYMain_Click(object sender, EventArgs e)
 {
 FrmMain main = new FrmMain();
 main.Show();
 this.Hide();
 }
 private void txPYAgain_Click(object sender, EventArgs e)
 {
 FrmMain main = new FrmMain();
 main.Playsong();
 }
 Song song = new Song();
 private void tsPYCut_Click(object sender, EventArgs e)
 {
 song.playState = SongPlayState.cut;
 }
 private void tsPYYidian_Click(object sender, EventArgs e)
 {
 FrmPlayList list = new FrmPlayList();
 list.Show();
 }
 private void tsPYBack_Click(object sender, EventArgs e)
 {
 Application.Exit();
 }

类型点歌


public FrmMain frmMain;
 string connectionStr = "server=.;database=MyKTV;uid=sa";
 DBHelp db = new DBHelp();
 private SqlConnection con;
 private void FrmSongType_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(sqlsongpath,con);
 KtvUnit.SongPath = cmd .ExecuteScalar().ToString();
 SqlCommand cmd = new SqlCommand(sql, con);
 KtvUnit.ImagePath = cmd.ExecuteScalar().ToString();
 con.Close();
  con = new SqlConnection(connectionStr);
 string sql = string.Format("select songtype_id,songtype_name,songtype_URL from song_type");
 SqlCommand cmd = new SqlCommand(sql , con);
 SqlDataReader dr;
 try
 {
  con.Open();
  int index = ;
  lvSongType.Items.Clear();
  imageList .Images.Clear();
  dr = cmd .ExecuteReader();
  if (dr.HasRows)
  {
  while (dr.Read())
  {
   string photoURL = KtvUnit.ImagePath + Convert.ToString(dr["songtype_URL"]);
   //先给ImageList填充图片
   imageList .Images.Add(Image.FromFile(photoURL));
   ListViewItem lvItem = new ListViewItem();
   lvItem.Text = Convert.ToString(dr["songtype_name"]);
   lvItem.Tag = Convert.ToString(dr["songtype_id"]);
   lvItem.ImageIndex = index;
   lvSongType.Items.Add(lvItem);
   index++;
  }
  }
  dr.Close();
 }
 catch (Exception ex)
 {
  MessageBox.Show("系统出现异常" + ex.Message);
 }
 finally
 {
  con.Close();
 }
 }
 private void LoadSongType()
 {
 //读取数据库,读出该歌曲类型的所有歌曲
  StringBuilder sb = new StringBuilder();
 //拼接SQL语句
 sb.AppendFormat("select song_info.song_name,singer_info.singer_name,song_info.song_url from singer_info,song_info where song_info.singer_id=singer_info.singer_id and song_info.songtype_id={ }", Convert.ToInt (lvSongType.SelectedItems[ ].Tag));
 FrmSongList songList = new FrmSongList();
  songList.Sql = sb.ToString();
 songList.Previous = KtvClient.PrevioisForm.SongType;//指定返回的窗体是按歌曲类型点歌
 songList.ShowDialog();
 this.Close();
 }
 private void lvSongType_Click(object sender, EventArgs e)
 {
 LoadSongType();
 }
 private void tsTYSingerMain_Click(object sender, EventArgs e)
 {
 FrmMain main = new FrmMain();
 main.Show();
 this.Hide();
 }
 private void tsTYSingerAgain_Click(object sender, EventArgs e)
 {
 FrmMain main = new FrmMain();
 main.Playsong();
 }
 Song song = new Song();
 private void tsTYSingerCut_Click(object sender, EventArgs e)
 {
 song.playState = SongPlayState.cut;
 }
 private void tsTYSingerYidian_Click(object sender, EventArgs e)
 {
 FrmPlayList list = new FrmPlayList();
 list.Show();
 }
 private void tsTYSingerBack_Click(object sender, EventArgs e)
 {
 FrmMain main = new FrmMain();
 main.Show();
 this.Hide();
 }

金榜排行

c#实现KTV点歌系统


public FrmMain frmMain;
 DBHelp db = new DBHelp();
 string connectionStr = "server=.;database=MyKTV;uid=sa";
 private void FrmJB_Load(object sender, EventArgs e)
 {
 SqlConnection con = new SqlConnection(connectionStr);
 con.Open();
 db.connection();
 string sql = "SELECT song_name,song_play_count FROM dbo.song_info ORDER BY song_play_count DESC";
 string sqlsongpath = "select resource_path from resource_path where resource_id= ";
 SqlCommand cmd = new SqlCommand(sqlsongpath, con);
 KtvUnit.SongPath = cmd.ExecuteScalar().ToString();
 DataSet ds = db.dataSet(sql,"Count");
 this.dgvSongList.DataSource = ds.Tables["Count"].DefaultView;
 }
 private void dgvSongList_Click(object sender, EventArgs e)
 {
 DBHelp db = new DBHelp();
 if (dgvSongList.SelectedRows[ ]!=null)
 {
  string songname = this.dgvSongList.SelectedRows[ ].Cells["SongName"].Value.ToString();
  db.connection();
  string sql = string.Format("SELECT song_name,singer_name,song_url,song_photo_url FROM dbo.song_info,dbo.singer_info where dbo.singer_info.singer_id=dbo.song_info.singer_id and song_name='{ }'", songname);
  SqlDataReader reader = db.ExecuteReaders(sql.ToString());
  Song song;
  if (reader.Read())
  {
  song = new Song();
  song.SongName = reader["song_name"].ToString();
  song.SongURL = KtvUnit.SongPath + reader["song_url"].ToString();
  PlayList.AddSong(song);
  }
  reader.Close();
 }
 else
 {
  MessageBox.Show("空");
 }
 }

数字点歌


public FrmMain frmMain;
 string connectionStr = "server=.;database=MyKTV;uid=sa";
 DBHelp db = new DBHelp();
 private SqlConnection con;
 private void FrmNumber_Load(object sender, EventArgs e)
 {
 con = new SqlConnection(connectionStr);
 con.Open();
 string sqlsongpath = "select resource_path from resource_path where resource_id= ";
 SqlCommand cmd = new SqlCommand(sqlsongpath, con);
 KtvUnit.SongPath = cmd.ExecuteScalar().ToString();
 con.Close();
 for (int i = ; i <= ; i++)
 {
  for (int j = ; j <= ; j++)
  {
  Label label = new Label();
  label.ForeColor = Color.Red;
  label.BackColor = Color.Pink;
  label.Font=new System.Drawing.Font("华文彩云", );
  label.TextAlign = ContentAlignment.MiddleCenter;
  label.Click += label_Click;
  this.MouseMove += FrmNumber_MouseMove;
  label.MouseHover += label_MouseHover;
  label.Size = new System.Drawing.Size( , );
  label.Text = j.ToString();
  if (i > )
  {
   label.Text = (j + i + ).ToString();
  }
  if (i > )
  {
   label.Text = (j + i + ).ToString();
  }
  if (i > )
  {
   label.Text = (j + i + ).ToString();
  }    
  label.Location = new Point( + * j, + * i);
  this.Controls.Add(label);
  }
 }
 }

已点列表

c#实现KTV点歌系统


private void FrmPlayList_Load(object sender, EventArgs e)
 {
 SongList();
 }
 public void SongList()
 {
 lvSong.Items.Clear();
 for (int i = ; i < PlayList.SongList.Length; i++)
 {
  if (PlayList.SongList[i]!=null)
  {
  ListViewItem item = new ListViewItem();
  item.Text = PlayList.SongList[i].SongName;
  item.Tag = i;
  string playstate = PlayList.SongList[i].PlayState == SongPlayState.unplayed ? "未播放" : "已播";
  item.SubItems.Add(playstate);
  lvSong.Items.Add(item);
  }
 }
 }
 private void btnClose_Click(object sender, EventArgs e)
 {
 this.Close();
 }
标签:C#,点歌
0
投稿

猜你喜欢

  • IntelliJ IDEA中properties文件显示乱码问题的解决办法

    2021-09-08 04:59:03
  • Java中类的加载顺序执行结果

    2022-03-12 18:12:35
  • C#实现FTP客户端的案例

    2023-06-15 19:46:47
  • SpringCloud Config统一配置中心问题分析解决与客户端动态刷新实现

    2023-08-17 17:19:48
  • Android之网络通信案例分析

    2023-10-21 02:13:20
  • android图片转换器示例

    2022-02-16 14:27:01
  • 基于Java语言MD5加密Base64转换方法

    2023-11-24 00:22:41
  • Java查找不重复无序数组中是否存在两个数字的和为某个值

    2023-08-22 16:44:40
  • c#得到本月有几周和这几周的起止时间示例代码

    2022-11-01 15:20:34
  • 基于Java的guava开源库工具类

    2022-04-07 05:37:53
  • springboot aspect通过@annotation进行拦截的实例代码详解

    2023-10-15 20:12:54
  • Java web的读取Excel简单实例代码

    2023-05-29 08:25:37
  • c# 组合模式

    2022-07-07 09:04:09
  • Java 多线程并发ReentrantLock

    2022-02-23 11:53:23
  • spring-boot使用Admin监控应用的方法

    2023-06-28 19:58:39
  • Java实现考试系统

    2023-11-18 04:15:03
  • 浅谈java常用的几种线程池比较

    2021-07-24 01:28:23
  • Java Hutool工具实现验证码生成及Excel文件的导入和导出

    2023-02-04 22:49:32
  • SpringBoot实现WebSocket即时通讯的示例代码

    2022-06-14 19:59:36
  • Java时间工具类Date的常用处理方法

    2022-11-08 02:37:49
  • asp之家 软件编程 m.aspxhome.com