用c#语言制作点歌程序,c#实现KTV点歌系统

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

88478fe9d80307581606df39532428f5.png

fe9140fc5341e03e11fa8b755024a885.png

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;

}

}

///

/// 播放下一首

///

public static void MoveOn()

{

if (SongList[SongIndex] != null && SongList[SongIndex].PlayState == SongPlayState.again)

{

SongList[SongIndex].SetSongPlayed();

}

else

{

SongIndex++;

}

}

///

/// 当前播放的歌曲名称

///

/// 歌曲名称

public static string PlayingSongName()

{

string songName = ""; // 歌曲名称

if (SongList[SongIndex] != null)

{

songName = SongList[SongIndex].SongName;

}

return songName;

}

///

/// 下一首要播放的歌曲名称

///

/// 歌曲名称

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;

}

}

}

}

3f49842b2818340ed2f0acb833d11580.png

实现歌手点歌

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

///

/// 点击地区类型时

///

///

///

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();

}

拼音点歌

255e21a73c548e533e91fb2b55c72891.png

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();

}

金榜排行

7a1b8a15d710713eb43b87e89365844f.png

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

}

}

}

已点列表

76c0402bc86d5220df26a01e975629ed.png

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#实现KTV点歌系统的全部代码,希望大家喜欢。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值