之前就是说过“一个项目有很多重要的步骤以及功能”,那我们现在就来看看对于KTV项目来说;后台是处于什么样的重要作用!
首先就得了解KTV后台的一些功能了:
1.歌曲管理 、歌手管理 、设置资源路径
2.新增歌手、歌手查询、新增歌曲、歌曲查询、更改歌曲路径以及退出点歌系统
一.后台登录界面
01.判断登录
}
//登陆
private void btnlogin_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(DBHelp.str);
string sql = "select count(1) from admin_info where admin_name='" + txtuser.Text + "' and admin_pwd='" + txtpwd.Text + "'";
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count > )
{
this.Hide();
FrmMain frm = new FrmMain();
frm.Show();
}
}
catch (Exception)
{ MessageBox.Show("失败");
}
finally
{
con.Close();
}
}
二.主界面窗体
01.新增歌手
001.添加歌手
//添加
public void SongInfoAdd()
{
string name = txtname.Text;//歌手姓名
string type = "";//类别
if (ramale.Checked)
{
type = "男";
}
else if (rafemale.Checked)
{
type = "女";
}
else if (raguoup.Checked)
{
type = "组合";
}
int id = Convert.ToInt32(cbotype.SelectedValue);//类型
string description = txtdescrp.Text;//描述
SqlConnection con = new SqlConnection(DBHelp.str);
string sql = "insert into singer_info values('" + name + "'," + id + ",'" + type + "','" + fileName + "','" + description + "')";
SqlCommand cmd = new SqlCommand(sql,con);
try
{
con.Open();
int count = cmd.ExecuteNonQuery();
if (count > )
{
File.Copy(fullName, Commod.DBsongurl + "\\" + fileName, true);
MessageBox.Show("歌手添加成功");
}
else
{
MessageBox.Show("歌手添加失败");
}
}
catch (Exception)
{ MessageBox.Show("歌手加载失败"); ;
}
finally
{
con.Close();//关闭
}
}
002.添加图片
string fileName = "";
string fullName = ""; private void btnView_Click(object sender, EventArgs e)
{ //浏览
if (this.ofdlist.ShowDialog() == DialogResult.OK)
{ fileName = this.ofdlist.SafeFileName; // 文件名
fullName = this.ofdlist.FileName;
picphoto.Image = Image.FromFile(fullName);
txtdescrp.Text = fullName;
}
}
02.查询歌手
001.按歌手条件查询
private void btnselect_Click(object sender, EventArgs e)
{
//判定用歌手名或歌手类型查询
if (txtname.Text != ""&&cbotype.Text=="请选择")
{
//歌手名
string sql = @"select singer_name,singertype_name,singer_gender,singer_description
from singer_type,singer_info
where singer_type.singertype_id=singer_info.singertype_id
and singer_name like '%" + txtname.Text + "%'";
Selectsong(sql); }
else if (txtname.Text=="")
{
//类型
string sql = @"select singer_name,singertype_name,singer_gender,singer_description
from singer_type,singer_info
where singer_type.singertype_id=singer_info.singertype_id
and singertype_name like '%" + cbotype.Text + "%'";
Selectsong(sql);
}
else
{
string sql = @"select singer_name,singertype_name,singer_gender,singer_description
from singer_type,singer_info
where singer_type.singertype_id=singer_info.singertype_id
and singer_name like '%" + txtname.Text + "%' and singertype_name like '" + cbotype.Text +"'";
Selectsong(sql);
} }
002.给下拉框赋值
//下拉框
public void Singerselect()
{
string str = DBHelp.str;
//连接数据库
SqlConnection con = new SqlConnection(str);
string sql = "select singertype_id,singertype_name from singer_type";
//数据集和数据库连接
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
//绑定数据源
DataTable dt = ds.Tables[];
DataRow dr = dt.NewRow();
//给该行赋值
dr[] = -;
dr[] = "请选择";
dt.Rows.InsertAt(dr, );
cbotype.DataSource = ds.Tables[];
//下拉框显示值
cbotype.DisplayMember = "singertype_name";
//下拉框隐藏值
cbotype.ValueMember = "singertype_id";
}
catch (Exception)
{
MessageBox.Show("加载失败!");
}
finally
{
con.Close();
}
}
003.右键修改和删除并及时刷新
代码:
//修改
private void tsupdate_Click(object sender, EventArgs e)
{
string uname = dgvlist.SelectedRows[].Cells[].Value.ToString();
this.Hide();
frmAddSinger frm = new frmAddSinger();
frm.Text = "修改歌手信息";
frm.uname = uname;
frm.Show();
}
//删除
private void tsdelete_Click(object sender, EventArgs e)
{
string names = dgvlist.SelectedRows[].Cells[].Value.ToString();
string sql = "delete singer_info where singer_name='" + names + "'";
Selectsong(sql);
string sql1 = @"select singer_name,singertype_name,singer_gender,singer_description
from singer_type,singer_info
where singer_type.singertype_id=singer_info.singertype_id";
Selectsong(sql1);
}
修改歌手
修改代码:
//修改
public void Update()
{
int songid = Convert.ToInt32(cbotype.SelectedValue);
int num = txtname.Text.Length;
SqlConnection con = new SqlConnection(DBHelp.str);
//singer_id, singer_name, singertype_id, singer_gender, singer_photo_url, singer_description
string sql = @"update singer_info set singer_name='" + txtname.Text + "',singer_gender='" + ch + "',singer_photo_url='" + fileName +
"',singertype_id=" + type + ",singer_description='"+txtdescrp.Text+"' where singer_name ='" + uname + "'";
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
int count = cmd.ExecuteNonQuery();
if (count > )
{
MessageBox.Show("修改成功");
}
}
catch (Exception)
{ MessageBox.Show("加载失败"); ;
}
finally
{
con.Close();
}
}
修改与添加的关键判断代码:
private void btnadd_Click(object sender, EventArgs e)
{
if (this.Text=="修改歌手信息")
{
Update();//修改
}
else
{
SongInfoAdd();//保存功能
} }
private void frmAddSinger_Load(object sender, EventArgs e)
{
Singerselect(); //默认查询代码
Commod.DBsongurl=OldLoadWays();
if (this.Text=="修改歌手信息")
{
btnadd.Text = "修改";
//MessageBox.Show(uname);
Load_information();
}
else
{
this.Text = "编辑歌手信息";
btnadd.Text = "保存";
}
}
03.新增歌曲
001.查询代码
//查询
private void btnsearch_Click(object sender, EventArgs e)
{
//歌手 FrmSelectSinger frm = new FrmSelectSinger();
frm.Show();
this.Close();
} //歌手添加
string singer = dgvlist.SelectedRows[].Cells[].Value.ToString(); FrmAdd frm = new FrmAdd();
frm.name = singer;
frm.Show();
this.Close();
002.自动形成缩写代码
public class Song_ab
{
private static int[] pyValue = new int[]
{
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-, -,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-,
-,-,-,-,-,-,-,-,-,-,-,-
};
private static string[] pyName = new string[]
{
"A","Ai","An","Ang","Ao","Ba","Bai","Ban","Bang","Bao","Bei","Ben",
"Beng","Bi","Bian","Biao","Bie","Bin","Bing","Bo","Bu","Ba","Cai","Can",
"Cang","Cao","Ce","Ceng","Cha","Chai","Chan","Chang","Chao","Che","Chen","Cheng",
"Chi","Chong","Chou","Chu","Chuai","Chuan","Chuang","Chui","Chun","Chuo","Ci","Cong",
"Cou","Cu","Cuan","Cui","Cun","Cuo","Da","Dai","Dan","Dang","Dao","De",
"Deng","Di","Dian","Diao","Die","Ding","Diu","Dong","Dou","Du","Duan","Dui",
"Dun","Duo","E","En","Er","Fa","Fan","Fang","Fei","Fen","Feng","Fo",
"Fou","Fu","Ga","Gai","Gan","Gang","Gao","Ge","Gei","Gen","Geng","Gong",
"Gou","Gu","Gua","Guai","Guan","Guang","Gui","Gun","Guo","Ha","Hai","Han",
"Hang","Hao","He","Hei","Hen","Heng","Hong","Hou","Hu","Hua","Huai","Huan",
"Huang","Hui","Hun","Huo","Ji","Jia","Jian","Jiang","Jiao","Jie","Jin","Jing",
"Jiong","Jiu","Ju","Juan","Jue","Jun","Ka","Kai","Kan","Kang","Kao","Ke",
"Ken","Keng","Kong","Kou","Ku","Kua","Kuai","Kuan","Kuang","Kui","Kun","Kuo",
"La","Lai","Lan","Lang","Lao","Le","Lei","Leng","Li","Lia","Lian","Liang",
"Liao","Lie","Lin","Ling","Liu","Long","Lou","Lu","Lv","Luan","Lue","Lun",
"Luo","Ma","Mai","Man","Mang","Mao","Me","Mei","Men","Meng","Mi","Mian",
"Miao","Mie","Min","Ming","Miu","Mo","Mou","Mu","Na","Nai","Nan","Nang",
"Nao","Ne","Nei","Nen","Neng","Ni","Nian","Niang","Niao","Nie","Nin","Ning",
"Niu","Nong","Nu","Nv","Nuan","Nue","Nuo","O","Ou","Pa","Pai","Pan",
"Pang","Pao","Pei","Pen","Peng","Pi","Pian","Piao","Pie","Pin","Ping","Po",
"Pu","Qi","Qia","Qian","Qiang","Qiao","Qie","Qin","Qing","Qiong","Qiu","Qu",
"Quan","Que","Qun","Ran","Rang","Rao","Re","Ren","Reng","Ri","Rong","Rou",
"Ru","Ruan","Rui","Run","Ruo","Sa","Sai","San","Sang","Sao","Se","Sen",
"Seng","Sha","Shai","Shan","Shang","Shao","She","Shen","Sheng","Shi","Shou","Shu",
"Shua","Shuai","Shuan","Shuang","Shui","Shun","Shuo","Si","Song","Sou","Su","Suan",
"Sui","Sun","Suo","Ta","Tai","Tan","Tang","Tao","Te","Teng","Ti","Tian",
"Tiao","Tie","Ting","Tong","Tou","Tu","Tuan","Tui","Tun","Tuo","Wa","Wai",
"Wan","Wang","Wei","Wen","Weng","Wo","Wu","Xi","Xia","Xian","Xiang","Xiao",
"Xie","Xin","Xing","Xiong","Xiu","Xu","Xuan","Xue","Xun","Ya","Yan","Yang",
"Yao","Ye","Yi","Yin","Ying","Yo","Yong","You","Yu","Yuan","Yue","Yun",
"Za", "Zai","Zan","Zang","Zao","Ze","Zei","Zen","Zeng","Zha","Zhai","Zhan",
"Zhang","Zhao","Zhe","Zhen","Zheng","Zhi","Zhong","Zhou","Zhu","Zhua","Zhuai","Zhuan",
"Zhuang","Zhui","Zhun","Zhuo","Zi","Zong","Zou","Zu","Zuan","Zui","Zun","Zuo"
}; /// <summary>
/// 把汉字转换成拼音(全拼)
/// </summary>
/// <param name="hzString">汉字字符串</param>
/// <returns>转换后的拼音(全拼)字符串</returns>
public static string CharacterConvertString(string hzString)
{
// 匹配中文字符
Regex regex = new Regex("^[\u4e00-\u9fa5]$");
byte[] array = new byte[];
string pyString = "";
int chrAsc = ;
int i1 = ;
int i2 = ;
char[] noWChar = hzString.ToCharArray(); for (int j = ; j < noWChar.Length; j++)
{
// 中文字符
if (regex.IsMatch(noWChar[j].ToString()))
{
array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString());
i1 = (short)(array[]);
i2 = (short)(array[]);
chrAsc = i1 * + i2 - ;
if (chrAsc > && chrAsc < )
{
pyString += noWChar[j];
}
else
{
// 修正部分文字
if (chrAsc == -) // 修正“圳”字
{
pyString += "Zhen";
}
else
{
for (int i = (pyValue.Length - ); i >= ; i--)
{
if (pyValue[i] <= chrAsc)
{
pyString += pyName[i];
break;
}
}
}
}
}
// 非中文字符 else
{
pyString += noWChar[j].ToString();
}
}
return pyString;
} /// <summary>
/// 只转换每个汉字首字母(大写)
/// </summary>
/// <param name="strText"></param>
/// <returns></returns>
public static string GetChineseSpell(string strText)
{
int len = strText.Length;
string myStr = "";
for (int i = ; i < len; i++)
{
myStr += getSpell(strText.Substring(i, ));
}
return myStr;
} /// <summary>
/// 获得第一个汉字的首字母(大写);
/// </summary>
/// <param name="cnChar"></param>
/// <returns></returns>
public static string getSpell(string cnChar)
{
byte[] arrCN = Encoding.Default.GetBytes(cnChar);
if (arrCN.Length > )
{
int area = (short)arrCN[];
int pos = (short)arrCN[];
int code = (area << ) + pos;
int[] areacode = { , , , , , , , , , , , , , , , , , , , , , , , , , };
for (int i = ; i < ; i++)
{
int max = ;
if (i != ) max = areacode[i + ];
if (areacode[i] <= code && code < max)
{
return Encoding.Default.GetString(new byte[] { (byte)( + i) });
}
}
return "*";
}
else return cnChar;
} }
//歌曲文本框事件
private void txtname_TextChanged(object sender, EventArgs e)
{
txtsong.Text=Song_ab.GetChineseSpell(txtname.Text);
}
003.保存代码
//保存
public void Save()
{
string names = txtname.Text;//歌曲个数
int num = names.Length;
int id = SelectidByName();//歌手id
int sid = Convert.ToInt32(cbotype.SelectedValue);//歌曲类型
SqlConnection con = new SqlConnection(DBHelp.str);
string sql = "insert into song_info values('" + txtname.Text + "','" + txtsong.Text + "'," + num + "," + sid + "," + id + ",'" + txtsongname.Text + "',default)";
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
int count = cmd.ExecuteNonQuery();
if (count > )
{
File.Copy(fullName, Commod.DBphotourl + "\\" + this.txtsongname.Text, true);
MessageBox.Show("保存成功");
}
else
{
MessageBox.Show("保存失败");
}
}
catch (Exception)
{ MessageBox.Show("信息未完善"); ;
}
finally
{
con.Close();
}
}
04.查询歌曲
001.默认查询全部
002.按地区查询
003.歌曲模糊查询
004.歌曲和类型同时查询
005.判断查询的选择
private void btnselect_Click(object sender, EventArgs e)
{
//判定用歌曲名或类型查询
if (txtname.Text != ""&&cbotype.Text=="请选择")
{
//歌曲名
string sql = @"select song_name,song_play_count,songtype_name
from song_type,song_info
where song_type.songtype_id=song_info.songtype_id and song_name like '%" + txtname.Text + "%'";
Selectsong(sql);
}
else if (txtname.Text=="")
{
//歌曲类型
string sql = @"select song_name,song_play_count,songtype_name
from song_type,song_info
where song_type.songtype_id=song_info.songtype_id and songtype_name like '%" + cbotype.Text + "%'";
Selectsong(sql);
}
else
{
//歌曲名
string sql = @"select song_name,song_play_count,songtype_name
from song_type,song_info
where song_type.songtype_id=song_info.songtype_id and song_name like '%" + txtname.Text +
"%' and songtype_name like '%" + cbotype.Text + "%'";
Selectsong(sql);
}
}
//修改
private void tsupdate_Click(object sender, EventArgs e)
{
string gname = dgvlist.SelectedRows[].Cells[].Value.ToString();
this.Hide();
FrmAdd frm = new FrmAdd();
frm.Text = "修改歌曲信息";
frm.gname = gname;
frm.Show();
}
//删除
private void tsdelete_Click(object sender, EventArgs e)
{
string names = dgvlist.SelectedRows[].Cells[].Value.ToString();
string sql = "delete song_info where song_name='"+names+"'";
Selectsong(sql);
string sql1 = @"select song_name,song_play_count,songtype_name
from song_type,song_info
where song_type.songtype_id=song_info.songtype_id";
Selectsong(sql1);
}
05.右键修改窗体以及删除歌曲套上及时刷新数据
//修改
public void Update()
{
int songid=Convert.ToInt32(cbotype.SelectedValue);
int num=txtname.Text.Length;
SqlConnection con = new SqlConnection(DBHelp.str);
//song_id, song_name, song_ab, song_word_count, songtype_id, singer_id, song_url, song_play_count
string sql = @"update song_info set song_name='" + txtname.Text + "',song_ab='" + txtsong.Text +
"',singer_id=" + fid + ",songtype_id=" + songid + ",song_url='"+txtsongname.Text+
"',song_word_count=" + num + " where song_name='" + gname + "'";
SqlCommand cmd = new SqlCommand(sql,con);
try
{
con.Open();
int count = cmd.ExecuteNonQuery();
if (count > )
{
File.Copy(fullName, Commod.DBphotourl + "\\" + this.txtsongname.Text, true);
MessageBox.Show("修改成功");
}
}
catch (Exception)
{ MessageBox.Show("加载失败"); ;
}
finally
{
con.Close();
}
}
06.设置资源路径
001.歌曲路径
0001. 浏览
private void btnview_Click(object sender, EventArgs e)
{
//浏览
if (this.fbdlist.ShowDialog() == DialogResult.OK)
{
this.txtnewurl.Text = this.fbdlist.SelectedPath;
}
}
0002.保存
//更新歌曲路径
private void btnsave_Click(object sender, EventArgs e)
{
if (txtnewurl.Text!="")
{
if (Commod.DBphotourl!="")
{
// 将原路径下的文件复制到新路径下
string[] files = Directory.GetFiles(Commod.DBphotourl);
string fileName = ""; // 文件名(不含路径)
string dest = ""; // 目标文件名(含路径)
foreach (string source in files)
{
fileName = Path.GetFileName(source);
dest = this.txtnewurl.Text.Trim() + "\\" + fileName;
File.Copy(source, dest,true);
}
} SqlConnection con = new SqlConnection(DBHelp.str);
string sql = "update resource_path set resource_path = '" + txtnewurl.Text + "\\" + "' where resource_id=2";
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
int count = cmd.ExecuteNonQuery();
if (count > )
{
//// 删除原目录中的文件
if (Commod.DBphotourl != "")
{
Directory.Delete(Commod.DBphotourl, true);
}
MessageBox.Show("更新歌曲路径成功");
}
con.Close();
}
else
{
MessageBox.Show("新路径空了!");
} }
003.原路径以及数据
004.设置新路径
005.修改成功的路径以及数据
003.原路径以及数据被删除
好了,MyKTV项目总算是完成了,后台主要就管理ktv项目的数据,所以它的作用也就不言而喻了,如果觉得不足可以给我建议,我相信我们都会不完美;
就像有人说的那样:“这个项目有很多人都在写,都要被写烂了”!但是我觉得学习的东西不在于多而在于精,如果你们能多认真点去浏览,我想你会学到很多你所不知道的东西的。