MyKtv项目 S1293 安孟阳 指导老师 :原玉明

MyKtv项目  S1293 安孟阳    指导老师 :原玉明

My ktv 项目需要实现的功能有:

显示点歌模式(歌手点歌、分类点歌、拼音点歌、排行榜、字数点歌),显示示系统功能(当前播放、下一首、重唱、切歌、播放列表、服务、退出)。

1.1.1. KTV主界面

显示点歌模式(歌手点歌、分类点歌、拼音点歌、排行榜、字数点歌),显示示系统功能(当前播放、下一首、重唱、切歌、播放列表、服务、退出)。

1.1.2. 歌手点歌

首先选择歌手性别(男、女、组合),然后显示歌手分类(大陆、香港、台湾、欧美、日韩),选择一个歌手分类,显示这个分类下的所选性别的所有歌手的名字和照片。选择一个歌手,列表显示该名歌手的所遇歌曲,点击一首歌曲,可以进行点播,并把歌曲添加到播放列表中。

1.1.3. 拼音点歌

输入歌曲的名称或歌曲的拼音,点击查找,可以进行模糊查询,并列表显示查询到的歌曲信息(歌曲名、歌手),点击一首歌曲,可以进行点播,并把歌曲添加到播放列表中。

1.1.4. 分类点歌

提供歌曲的分类列表(热门流行、经典老歌、影视金曲、游戏动漫、戏曲、儿歌),选择其中过一个,在窗口中显示这个分类下的所有歌曲。点击一首歌曲,可以进行点播,并把歌曲添加到播放列表中。

1.1.5. 排行榜点歌

将歌曲按点播过的次数,降序排列,作为点播排行榜,在排行榜中显示歌曲的名称和歌手姓名,点击一首歌曲,可以进行点播,并把歌曲添加到播放列表中。

1.1.6. 字数点歌

可以按歌曲名的字数点播(1个字、2个字、3个字等,最多12个字),在查找的歌曲列表中显示歌曲的名称和歌手姓名,点击一首歌曲,可以进行点播,并把歌曲添加到播放列表中。

1.2.  歌曲播放

1.2.1. 播放歌曲

在播放窗口中依次播放点播的歌曲。

1.2.2. 已点歌曲

在窗口中显示已歌曲的列表,列表中显示歌曲的名称、播放状态(已播放、未播放)。

1.2.3. 重播

提供重播功能,点击“重播”按钮,可以重复播放当前正在播放的歌曲。

1.2.4. 切歌

提供切歌功能,如果没有选择播放列表中的歌曲而点击“切歌”按钮,就删除当前播放的歌曲,继续播放下一首。如果选择了播放列表中的一首歌曲,点击“切歌”按钮,就删除选中的歌曲。

1.3.  后台管理

1.3.1. 登录

系统管理员可以登录后台管理系统,管理歌手信息、歌曲信息。必须输入正确的用户名和密码才能登录。

1.3.2. 添加歌手

在一个窗口中,填写歌手的姓名、选择性别、歌手分类、填写歌手描述、选择歌手照片,将歌手信息添加到数据库中。

1.3.3. 查询歌手

在一个窗口中,通过歌手姓名或歌手分类进行查找,在窗口中显示歌手的列表。显示的信息包括:歌手姓名、歌手类别、歌手性别、歌手描述。

1.3.4. 修改歌手信息

在查询到的歌手中,点击鼠标右键,选择“修改”,打开修改信息窗口,在窗口中显示歌手的当前信息(歌手的姓名、性别、分类、歌手描述、歌手照片),修改后,点击“修改”按钮,把修改后的信息保存到数据库。

1.3.5. 删除歌手信息

在查询到的歌手中,点击鼠标右键,选择“删除”,将歌手从数据库中删除。

以下主要分析

点歌

首先要实现的便是放歌功能只有能够放歌,才会有其他功能要实现的作用

1:我们要对数据库中所有的歌曲以及所对应的歌手进行查询,

这个时候便要创建一个查询窗体,将查询的内容打印到小窗体上:

如下图:

2:当查询完成后,便要将我们想要听的歌曲给便利到一个数组当中

将选中的歌曲对象加入到playlist类中

的数组songs.

那么我们便要创建个类名称为PlayList

class Playlist

{   //定义一个长度为50的数组

public static Song[] songlist = new Song[50];

public static int songIndex = 0;//当前播放的歌曲在数组中的索引

//没点击一次歌曲时,便是将歌曲对象放在数组中

public static bool addsong(Song song)

{

bool success = false;//记录添加歌曲是否成功

for (int i = 0; i < songlist.Length; i++)

{//找到数组第一个为null的位置2

if (songlist[i] == null)

{

songlist[i] = song;

success = true;

break;

}

}

return success;

}

//获取当前播放的窗体返回值是song类型

public static Song GetPlaysSong()

{

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].setplayagaun();

}

else

{

songIndex++;

}

切歌功能:

当我们点击切歌按钮时,变会播放下一首歌曲

}

}

在这个类中我们要保存的是数组有二个方法

3:我们查询出的结果添加到数组当中;定义一个索引名称为index

它用来说明当前播放的歌曲在数组当中的位置

4:

5:定义一个Timer空间将Enabled属性改为ture,意思是可用状态

用来记录现在没有播放歌曲时,我们便获取到歌曲路径进行播放和当前歌曲播放完成后,进行下一手歌曲的播放

if (song == null)

{

PlaySong();

}

if (playan.playState ==WMPLib.WMPPlayState.wmppsStopped)//播放器为停止状态

{

song = null;

Playlist.Moveon();//继续播放下一首

}

6:当我们点完歌曲后,便要将其状态也要发生改变

正在播放的便将状态改为已播放,未播放的状态改为未播放

代码在查询窗体中写如下:

private void Bofangzt()//播放歌曲的状态

{

lvlist.Items.Clear();//清空原列表

for (int i = 0; i <Playlist.songlist.Length; i++)//小于数组的长度

{

if (Playlist.songlist[i]!=null)

{

ListViewItem item = new ListViewItem();

item.Text = Playlist.songlist[i].songName;

item.Tag = i;

string playStste = Playlist.songlist[i].playState == SongplayState.unplayed ? "未播放" : "已播放";

item.SubItems.Add(playStste);

lvlist.Items.Add(item);

}

}

}

这变可用将状态进行改变了

切歌功能:我们需要将歌曲的状态进行改变,当点击切歌按钮时,自动切换下一首歌曲

我们可以再playlist类中邪一个切歌的方法:

public static void bofang1()

{

if (FrmMain.song != null)

{

FrmMain.song = null;//歌曲为空

Playlist.Moveon();//继续播放下一首了

}

}

按钮调用该方法便可以进行切歌的操作

重唱也是改变歌曲的状态,

public static void chongchuang()

{

FrmMain.song.setplayagain();

if (FrmMain.song != null && FrmMain.song.playState == SongplayState.again)

{

FrmMain.song = null;

}

}

使用与上面方法一样

已点列表当用户点击已点列表按钮时,自动跳转到已点窗口

在已点列表的DGV控件我们要做的便是在click中

/创建一个对象来保持歌曲路径和歌曲名字

Song song = new Song();

song.SongName = dgvgequ.SelectedRows[0].Cells["SongName"].Value.ToString();//songname是lvtgequ中的名称

song.SongURl = dgvgequ.SelectedRows[0].Cells["SongURl"].Value.ToString();//songurl是歌曲的路径

//将选择的歌曲放在数组中

Playlist.addsong(song);

当我们每点击一个按钮变自动增加到已点列表和并且获取到他的状态

类型选择点歌

在类型选择点歌中,想要实现如上的效果我们要用到二种控件

Picturebox和label或者用listview控件均可实现上面效果

我们每点击一次歌曲,便调用一次已点列表,并将所点击控件的歌曲添加到已点列表

只要调用已点列表,更改where控件便可实现

拼音点歌

用户在文本控件输入歌曲的缩写, 便可以进行查询了

查询完成后,点击歌曲添加到播放列表

SqlConnection con = new SqlConnection(Sqlhelper.str);

DataSet ds = new DataSet();

//Select             Singer_name,song_name from singer_info,song_info where Song_ab like ‘%" + txtsx.Text + "%‘

string sql = "select song_name,Singer_name,Song_url from singer_info,song_info where singer_info.singer_id=song_info.singer_id ";

SqlDataAdapter da = new SqlDataAdapter(sql, con);

da.Fill(ds, "SONG_INFO");

this.dgvgequ.DataSource = ds.Tables["SONG_INFO"];

字数点歌

在这里我用的一张图片,运用代码将10个控件添加到窗体中,并对其位置,隐藏添加的文字

当用户点击上面数字时便可以查询到对应数字的歌曲,以及进行播放

int num1 = 1;

private void Form1_Load(object sender, EventArgs e)

{

int num2 = 1;//用来显示字数

for (int i = 0; i <2; i++)

{

for (int j = 0; j <4; j++)

{

Label label = new Label();

num2++;

label.Tag = num1;

num1++;

label.Size = new Size(60, 60);

label.Location = new Point(60+(150)*j, 80+(125)*i);

label.BackColor=Color.Transparent;

this.Controls.Add(label);

label.Click += label_Click;

}

Console.ReadLine();

}

前台便是这些功能,

Ktv后台运用`

我在主页面下的Toolstrip控件中添加了一个管理员登陆按钮

当点击按钮时便可以展现出登陆页面

登陆成功之后便进入了后台主页面

这个功能很简单,

当我们点击歌手管理后,下面会有二个子菜单一个是添加歌手一个是查询歌手

private void Frmgeshou_Load(object sender, EventArgs e)

{

chaaddress();//查询歌手的地区

}

private void chaaddress()

{

SqlConnection con = new SqlConnection(Sqlhelper.str);

string sql = "select singertype_name from singer_type ";

SqlCommand cmd = new SqlCommand(sql, con);

try

{

con.Open();

SqlDataReader dr = cmd.ExecuteReader();

if (dr != null)

{

if (dr.HasRows)

{

while(dr.Read())

{

string address = dr["singertype_name"].ToString();

cmbaddresss.Items.Add(address);

}

dr.Close();

cmbaddresss.SelectedIndex = 0;

}

}

}

catch (Exception ex)

{

MessageBox.Show("连接失败",ex.Message);

}

finally {

con.Close();

}

这些代码主要作用是将数据库中歌手的type拉到下拉框,供用户进行选择

public void xinzeng()

{

SqlConnection con = new SqlConnection(Sqlhelper.str);

//新增歌手的姓名性别地区和照片组合

//singer_name, singertype_id, singer_sex, singer_photo_url, Singer_miaoshu

string name = txtname.Text;

string gender = string.Empty;

if (rbtnan.Checked)

{

gender = "男";

}

else if (rbtnv.Checked)

{

gender = "女";

}

else

{

gender = "组合";

}

//string类型的addressname于窗口中相应的文本关联,

//i在数据库中增加的是id所以要查询id并返回

string addressname=cmbaddresss.Text;

int address = singertype_idByName(addressname);//insert

string miaoshu = txtmiaosu.Text;

//singer_id, singer_name, singertype_id, singer_sex, singer_photo_url, Singer_miaoshu

string sql = "insert into singer_info values (‘"+name+"‘,"+address+",‘"+gender+"‘,‘"+Pasd+"‘,‘"+miaoshu+"‘)  ";

SqlCommand cmd = new SqlCommand(sql, con);

try

{

con.Open();

int count = cmd.ExecuteNonQuery();

if (count>0)

{

MessageBox.Show("添加成功");

}

}

catch (Exception ex)

{

MessageBox.Show("连接失败", ex.Message);

}

finally

{

con.Close();

}

}

private void chaxunzuhe()

{

}

private int singertype_idByName(string name)

{

SqlConnection con = new SqlConnection(Sqlhelper.str);

string sql = "select singertype_id from singer_type where singertype_name=‘" + name + "‘";

SqlCommand cmd = new SqlCommand(sql, con);

con.Open();

int gradeid = Convert.ToInt32(cmd.ExecuteScalar());

con.Close();

return gradeid; //返回gradeid  int 类型

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

openFileDialog1.ShowDialog();

}

string Pasd;

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

{

Pasd = openFileDialog1.SafeFileName;

pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);

}

这些代码主要将歌手的所有信息添加到数据库中

搜索歌手信息和歌曲便是对数据库进行连接查询

设置资源路径

当前路基是搜索数据库中我们在path中所添加的歌曲路径

新路径浏览是打开本地磁盘,进行浏览

而最重要的修改水平有限,没做出来

在KTV整个项目中有很多遗漏的有BUG的,这些都是平常没学好,

时间: 2024-10-12 04:17:10

MyKtv项目 S1293 安孟阳 指导老师 :原玉明的相关文章

北大青鸟KTV项目播放原理 指导老师:袁玉明

第一步: 创建一个Song类 //歌曲名称 public  string SongName { get; set; } //歌曲路劲 public string SongPath { get; set; } 第二步: 创建一个ListSong类 //存储要播放的歌曲 public static  List<Song> list = new List<Song>(); public static int SongIndex = 0;//当前播放的歌曲在集合中的索引 /// <s

MyKTV项目总结

项目名称:KTV点歌系统 --指导老师原玉明 经过一周多的时间,终于完成的我的这个KTV项目,说实话,做这个项目我收获了不少,难点也非常多,不过经过重重磨难,总算是过来了.不简单呀! 这个项目主要分为前后台. 前台主要实现的功能是:歌星点歌,拼音点歌,字数点歌, 类型选择,金曲排行,一些切歌,重唱,已点歌曲列表,主要是这些功能. 后台主要实现的功能是:增加歌手,增加歌曲,修改歌曲路径,修改歌手图片路径. 首先先看前台: 前台核心类: SqlHelper类(负责连接数据库): //连接字符串 pu

(转)winform安装项目、安装包的制作、部署

本文转载自:http://zhan.renren.com/cxymst?gid=3602888498037535727&from=post&checked=true 1,解决方案—添加—新建项目—其他项目类型—安装和部署—安装项目,输入名称Setup,点“确定” 2,添加主输出:单击左侧“应用程序文件夹”,右侧右键—添加—项目输出-主输出-确定. 3,添加开始程序中的文件夹:右击左侧“用户的程序菜单”—添加—文件夹,自己设置名称. 4,添加开始程序中和桌面的主程序快捷方式:左侧单击刚新建的

2014年指导大学生数学竞赛 (指导老师之一)

2014年指导大学生数学竞赛 (指导老师之一) 江西省一等奖    李秀芹 江西省一等奖    杨启明 江西省二等奖    罗文娟 江西省二等奖    詹仙红(*) 江西省二等奖    洪喆慧 江西省三等奖    杨圆圆 江西省三等奖    叶兵 (*) 江西省三等奖    温鸿鸿 江西省三等奖    郑晓露 原文地址:https://www.cnblogs.com/zhangzujin/p/8794805.html

2015年指导大学生数学竞赛 (指导老师之一)

2015年指导大学生数学竞赛 (指导老师之一) 江西省一等奖    涂敏 江西省一等奖    王珊 江西省一等奖    李腾 江西省二等奖    李秀芹 江西省二等奖    曾林森 江西省二等奖    熊政升 江西省三等奖    谢忠忠 江西省三等奖    杨兰萍 江西省三等奖    杨启明 江西省三等奖    钟衍楠 江西省三等奖    罗文娟 原文地址:https://www.cnblogs.com/zhangzujin/p/8794799.html

2016年指导大学生数学竞赛 (指导老师之一)

2016年指导大学生数学竞赛 (指导老师之一) 江西省一等奖    胡露红 江西省一等奖    虞瑶 江西省二等奖    揭志龙 江西省二等奖    杨启明 江西省二等奖    刘桂燕 江西省二等奖    李腾 江西省二等奖    周楠 江西省三等奖    傅文欣 江西省三等奖    王珊 江西省三等奖    吴思思 江西省三等奖    陈海燕 江西省三等奖    钟慧聪 江西省三等奖    陈瑶 原文地址:https://www.cnblogs.com/zhangzujin/p/8794796

小学生之KTV项目文档(bdqn) 指导老师:yuanyuming

第一步:创建数据库连接方法和打开方法和关闭方法! 1 public class DBHelper 2 { 3 private string str = "server=.;database=MyKtv;uid=sa"; 4 private SqlConnection _conection; 5 6 public SqlConnection Conection 7 { 8 get 9 { 10 if (_conection==null) 11 { 12 _conection = new

MyKTV项目,走起!

第一部分:这个项目对于新手来说有一点难度,但是当你理清类之间的关系和怎样去实现功能后就会感觉轻松很多. 话不多说,先上类图: 接着是数据库表间关系: 本项目要实现以下功能: 明星点歌 拼音点歌 类型选择 金榜排行 字数点歌 一共五大块,那么明星点歌下还有一个播放的功能. 在主页面有一个正在播放和下一首的提示功能. 这是ktv主页面: 在下边还有重唱,切歌,已点,服务和退出功能 相信大家都去过KTV,所以这些功能就不说了,比我都清楚! 这里我把播放控件放在了主页面,位置随意,放在哪都行,也可以单独

Bootstrap基本理论(指导老师:马江伟)

Bootstrap,来自 Twitter,是目前最受欢迎的前段框架.Bootstrap是基于HTML.CSS.JAVASCRIPT的,它简洁灵活,使得Web开发更加快捷 Bootstrap特点:优雅,灵活,可扩展 为什么使用Bootstrap:1.移动设备优先 :自从Bootstrap3起,框架包含了贯穿于整个库的移动设备优先的样式2.浏览器支持:所有的主流浏览器都支持Bootstrap3.容易上手:只要具备HTML和CSS的基础知识,就可以开始学习Bootstrap4.响应式设计:    Bo