资源描述
郑州科技学院
C#课程设计报告书
设计(论文)题目: 点歌系统
所 在 院: 信息工程学院
专 业 班 级: 10计算机科学与技术2班
学 生 姓 名: 赵乾坤
学 号: 201015074
指 导 教 师:
目录
第一章 需求分析 2
1.1 开发背景 3
1.2 详细需求分析 3
第二章 系统功能分析 4
2.1 系统功能设计及目标 4
2.2 系统总体结构 5
2.2.1 模块描述 5
2.2.2 系统总体流程图 6
第三章 数据库设计 6
3.1 数据库需求分析 6
3.2 数据库物理结构设计 7
第四章 主要窗体及代码设计 8
4.1 登录模块设计及代码 9
4.2后台数据库维护模块设计 12
4.2.1窗体设计及代码 12
4.3 系统点歌设计模块 23
4.3.1 窗体设计及代码 23
4.4 添加歌曲类型模块设计 27
4.4.1 窗体设计及代码 27
第五章 设计总结 30
【参考文献】 30
第一章 需求分析
1.1 开发背景
随着生活水平的不断提高,人们的业余生活也发生了也发生了巨大的变化,近些年来人们的业余生活变得越来越丰富多彩,去卡拉OK歌房唱歌便成了很多人在工作之余的娱乐方式。传统的点歌系统一直使用着VCD光盘来为顾客播放顾客所选的歌曲,由于光盘上存放的歌曲数量有限,而且播放器来很不方便,当顾客想唱的歌曲不在光盘上时便无法点播,本系统将使用C#技术制作一个点歌系统来满足消费者的多种需求,本系统以数据库Acess作为后台支撑,用来添加,修改,删除歌曲,并提供了数字点歌,拼音点歌,明星点歌,歌名点歌方便消费者的使用。
本系统界面设计简洁,美观大方,操作简单,快捷方便,数据存储安全,可靠,并提供了多种类型的点歌操作功能,操作方便简单。对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
1.2 详细需求分析
本点歌系统主要包括系统点歌和后台数据维护两大子系统,业务编码有明星编号,管理员编号,歌曲编号,歌曲类型编号。数据库采用Microsoft
Access作为后台数据库,数据库名为db_diange.mdb,在数据库中创建了4个数据库表,用于存储不同的信息,为了节省资源,实现代码重用,可以在系统中设计了一些公共类。
登录模块的设计主要用于进入点歌系统的用户进行安全检查,以防止非法用户进入系统,同时系统还根据登录用户选择登陆界面进入不同界面进行不同的操作。
后台数据库维护模块用于对整个系统进行维护,主要对明星信息数据,歌曲类型信息数据,歌曲信息数据和用户信息数据进行添加,删除,修改操作。
明星模块主要功能对明星进行信息管理。例如,记录明星的编号,姓名,出生日期等信息。
系统点歌模块用于不同的点歌方式选择需要的歌曲并进行播放。点歌方式包括数字点歌,拼音点歌,明星点歌和歌名点歌。
第二章 系统功能分析
2.1 系统功能设计及目标
根据要求分析的描述,以及与用户的沟通,现制定系统实现目标如下:
1 界面设计简单,友好,美观大方。
2 操作简单,快捷方便。
3 数据存储安全,可靠。
4 信息分类清晰,准确。
5 灵活,方便的维护后台数据信息。
6 提供多种类型的点歌操作系统功能,并且操作方便简单。
7 对用户输入的数据,系统进行严格的数据检验,尽可能排除人为错误。
2.2 系统总体结构
2.2.1 模块描述
点歌系统功能结构主要包括系统点歌和后台数据维护两大模块
点歌系统的功能模块如下图(2-1)所示
图2-1系统总体结构图
点歌系统
系统点歌
后台数据维护
明星信息管理
歌曲类型信息管理
歌名点歌
选择歌曲
拼音点歌
数字点歌
明星点歌
歌曲信息管理
用户管理
播放歌曲
系统数据备份与还原
第三章 数据库设计
3.1 数据库需求分析
根据业务分析,系统设计了能够满足用户需求的各类实体之间的关系图。本系统设计规划出的主要实体,歌曲信息实体,明星信息实体,歌曲类型信息实体,管理员信息实体
3.2 数据库物理结构设计
得到上面的数据项和数据结构后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
明星信息实体E-R图
明星信息表
录入时间
明星性别
出生日期
国籍
类型
拼音縮写
明星名字
备注
图3-1
(2)歌曲信息实体E-R图
歌曲信息表
录入时间
歌手姓名
歌曲类型
语种
文件路径
歌名拼音縮写
歌曲名称
备注
图3-2
(3)管理员信息实体E-R图
管理员信息表
用户名
密码
编号
图3-3
(4)歌曲类型信息实体E-R图
歌曲类型信息表
编号
备注
类别名称
图3-4
第四章 主要窗体及代码设计
在这次课程设计中,将主要主窗体及其代码展示如下:
4.1 登录模块设计
登录模块主要- 8 -用于对进入点歌系统的用户进行身份验证,以防止非法用户进入系统,如图4-1所示:
图4-1 登陆系统主界面
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using KTV.KTVclass;
namespace KTV
{
public partial class frmLogin : Form
{
public frmLogin()
{
InitializeComponent();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void bntOK_Click(object sender, EventArgs e)
{
tb_computer computer = new tb_computer();
if(txtUser.Text=="")
{
MessageBox.Show("登录名称不能为空!");
txtUser.Focus();
return;
}
if(txtPwd.Text=="")
{
MessageBox.Show("登录密码不能为空!");
txtPwd.Focus();
return;
}
if(cmbLogin.Text=="")
{
MessageBox.Show("请选择登录界面");
cmbLogin.Focus();
return;
}
computer.strcmp_name=txtUser.Text;
computer.strcmp_Paww=txtPwd.Text;
if (computer.tb_computerLogin(computer, 2) == 1)
{
if (cmbLogin.Text == "后台数据维护")
{
frmMain frm = new frmMain();
frm.Show();
this.Hide();
}
if (cmbLogin.Text == "系统点歌")
{
frmDaiGe daige = new frmDaiGe();
daige.Show();
this.Hide();
}
}
else
{
MessageBox.Show("登录失败!");
txtPwd.Text = "";
txtUser.Text = "";
cmbLogin.Text = "";
txtUser.Focus();
}
}
private void bntEsce_Click(object sender, EventArgs e)
{
this.Close();
}
private void frmLogin_Load(object sender, EventArgs e)
{
}
private void txtPwd_TextChanged(object sender, EventArgs e)
{
}
}
}
4.2 后台数据库维护模块设计
4.2.1窗体设计
图4-2 后台数据库维护模块
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.OleDb;
using KTV.KTVclass;
namespace KTV
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
frmdictionaryMenthod frmDictyin = new frmdictionaryMenthod();
tb_authorinfoMenthod tbAuto = new tb_authorinfoMenthod();
tbMusicnfoMenthod tbMuseic = new tbMusicnfoMenthod();
tb_computer computer = new tb_computer();
private void frmMain_Load(object sender, EventArgs e)
{
frmDictyin.dictionaryFind("2",lvDitcy);
tbAuto.tb_authorinfoFill("2", lvAuton);
tbMuseic.tbMusicnfoFill(lvMuscie);
computer.tbMusicnfoFill(LvUser);
}
private void button3_Click(object sender, EventArgs e)
{
frmdictionary dicTory = new frmdictionary(1,"");
dicTory.Owner = this;
dicTory.ShowDialog();
}
private void button2_Click(object sender, EventArgs e)
{
if (strName == null)
{
MessageBox.Show("请选择要修改的内容!");
return;
}
else
{
frmdictionary dicTory = new frmdictionary(2, strName);
dicTory.Owner = this;
dicTory.ShowDialog();
}
}
public string strName = null;
private void lvDitcy_Click(object sender, EventArgs e)
{
strName = lvDitcy.SelectedItems[0].SubItems[0].Text;
}
private void button1_Click_1(object sender, EventArgs e)
{
if (strName == null)
{
MessageBox.Show("请选择要删除的内容!");
return;
}
else
{
frmDictyin.dictionaryDelete(strName);
MessageBox.Show("删除成功!");
frmDictyin.dictionaryFind("2", lvDitcy);
}
}
private void bntAut_Click(object sender, EventArgs e)
{
frmAuton frmAuAdd = new frmAuton(1,"");
frmAuAdd.Owner = this;
frmAuAdd.ShowDialog();
}
public string strNameAuton = null;
private void lvAuton_Click(object sender, EventArgs e)
{
strNameAuton=lvAuton.SelectedItems[0].SubItems[0].Text;
}
private void bntAuUpdate_Click(object sender, EventArgs e)
{
if (strNameAuton != null)
{
frmAuton frmAuAdd = new frmAuton(2,strNameAuton);
frmAuAdd.Owner = this;
frmAuAdd.ShowDialog();
}else
{
MessageBox.Show("请选择要修改的内容!");
return;}
}
private void bntAuDelete_Click(object sender, EventArgs e)
{
if (strNameAuton != null)
{
tbAuto.dictionaryDelete(strNameAuton);
MessageBox.Show("删除成功");
tbAuto.tb_authorinfoFill("2", lvAuton);
}
else
{
MessageBox.Show("请选择要删除的内容!");
return;
}
}
public string strMuseName = null;
private void lvMuscie_MouseClick(object sender, MouseEventArgs e)
{
strMuseName = lvMuscie.SelectedItems[0].SubItems[0].Text;
}
private void bntMuserUpdate_Click(object sender, EventArgs e)
{
if (strMuseName != null)
{
frmMusicinfo frmInfo = new frmMusicinfo(2,strMuseName);
frmInfo.Owner = this;
frmInfo.ShowDialog();
}
else
{
MessageBox.Show("选择要修改歌典");
}
}
private void bntMuserDelete_Click(object sender, EventArgs e)
{
if (strMuseName != null)
{
if (tbMuseic.tbMusicnfoDelete(strMuseName) == 1)
{
MessageBox.Show("删除成功");
tbMuseic.tbMusicnfoFill(lvMuscie);
}
else
{
MessageBox.Show("删除失败");
tbMuseic.tbMusicnfoFill(lvMuscie);
}
}
else
{
MessageBox.Show("选择要删除歌典");
}
}
private void bntMuserAdd_Click(object sender, EventArgs e)
{
frmMusicinfo frmInfo = new frmMusicinfo(1, "");
frmInfo.Owner = this;
frmInfo.ShowDialog();
}
private void button4_Click(object sender, EventArgs e)
{
DialogResult diaol = MessageBox.Show("是否要退出后台管理系统!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if(diaol==DialogResult.Yes)
{
Application.Exit();
}
}
public string strUser = null;
private void LvUser_Click(object sender, EventArgs e)
{
strUser = LvUser.SelectedItems[0].SubItems[0].Text;
if (strUser != null)
{ fillScoure(); }
}
public void fillScoure()
{
OleDbDataReader dr = computer.tbFill(strUser);
dr.Read();
if (dr.HasRows)
{
txtUser.Text = dr[1].ToString();
txtUser.Enabled = false;
}
}
private void bntUserAdd_Click(object sender, EventArgs e)
{
intFalg = 1;
txtPassWord.Text = "";
txtUser.Text = "";
txtUser.Enabled = true;
bntUserAdd.Enabled = true;
bntUserDelete.Enabled = false;
bntUserUpdate.Enabled = false;
}
private void bntUserUpdate_Click(object sender, EventArgs e)
{
intFalg = 2;
bntUserAdd.Enabled = false;
bntUserDelete.Enabled = false;
bntUserUpdate.Enabled = true;
}
private void bntUserDelete_Click(object sender, EventArgs e)
{
intFalg =3;
bntUserAdd.Enabled = false;
bntUserDelete.Enabled = true;
bntUserUpdate.Enabled = false;
}
public int intFalg;
private void bntSave_Click(object sender, EventArgs e)
{
if (txtUser.Text == "")
{
MessageBox.Show("用户名不能为空!");
txtUser.Focus();
return;
}
if (intFalg != 3)
{
if (txtPassWord.Text == "")
{
MessageBox.Show("用户密码不能为空!");
txtPassWord.Focus();
return;
}
}
if (intFalg == 1)
{
computer.strcmp_ID = computer.getSellID();
computer.strcmp_name = txtUser.Text;
computer.strcmp_Paww = txtPassWord.Text;
computer.strcmp_DataTime = DateTime.Now.Date.ToString();
computer.strcmp_Falg = "0";
if (computer.tb_computerLogin(computer, 1) == 1)
{
MessageBox.Show("此用户名已被占用");
txtUser.Text = "";
txtUser.Focus();
txtPassWord.Text = "";
return;
}
if (computer.tb_computerAdd(computer) == 1)
{
MessageBox.Show("添加成功!", "提示");
computer.tbMusicnfoFill(LvUser);
txtUser.Enabled = true;
txtPassWord.Text = "";
txtUser.Text = "";
bntUserAdd.Enabled = true;
bntUserDelete.Enabled = true;
bntUserUpdate.Enabled = true;
}
else
{
MessageBox.Show("失败失败!", "提示");
txtPassWord.Text = "";
txtUser.Text = "";
bntUserAdd.Enabled = true;
bntUserDelete.Enabled = true;
bntUserUpdate.Enabled = true;
}
}
if (intFalg == 2)
{
if (strUser == null)
{
MessageBox.Show("选择要修改的用户");
return;
}
else
{
computer.strcmp_ID = strUser;
}
computer.strcmp_name = txtUser.Text;
computer.strcmp_Paww = txtPassWord.Text;
computer.strcmp_DataTime = DateTime.Now.Date.ToString();
computer.strcmp_Falg = "0";
if (computer.tb_computerUpdate(computer) == 1)
{
MessageBox.Show("修改成功!", "提示");
computer.tbMusicnfoFill(LvUser);
txtPassWord.Text = "";
txtUser.Text = "";
bntUserAdd.Enabled = true;
bntUserDelete.Enabled = true;
bntUserUpdate.Enabled = true;
}
else
{
MessageBox.Show("修改失败!", "提示");
txtPassWord.Text = "";
txtUser.Text = "";
bntUserAdd.Enabled = true;
bntUserDelete.Enabled = true;
bntUserUpdate.Enabled = true;
}
}
if (intFalg == 3)
{
展开阅读全文