Oracle课程设计报告简易点歌台系统.docx
- 文档编号:733821
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:54
- 大小:763.02KB
Oracle课程设计报告简易点歌台系统.docx
《Oracle课程设计报告简易点歌台系统.docx》由会员分享,可在线阅读,更多相关《Oracle课程设计报告简易点歌台系统.docx(54页珍藏版)》请在冰点文库上搜索。
Oracle课程设计报告简易点歌台系统
中南大学
Oracle课程设计报告
学生姓名林晓锋
学号1302140121
专业班级信科1401
指导老师陈明
数学与统计学院
一.基础题
3.(30分)
(1)创建这三个表
建表截图如下:
查看三个表的创建情况如下:
向Book表添加数据:
向borrow表中插入下列数据:
向record表中插入下列数据:
三个表的数据如下图:
(2)查询借书超过5本的读者的借书卡号及所借图书册数。
(3)查询借阅了"水浒"一书的读者的姓名及班级。
、
(4)查询出过期未还的图书,显示借阅者卡号、书名及作者。
(5)查询出书名包括"网络"关键词的图书,显示其书号、书名、作者。
(6)将图书表中当前无人借阅的图书记录删除。
可以发现第七本书已被删除。
二.综合题(40分)
⏹点歌台系统需求分析
随着KTV行业的迅猛发展,点歌系统在KTV里的重要性越来越大,特别是在量版式KTV,投资方在选系统的时候无不练就一双火眼金睛,千挑万选,而且更是在配套上重金投入,确保营造出一个更好的消费环境。
点歌系统中的专业版被广泛应用于KTV、酒店、酒吧等娱乐场所中,它是全电脑操作,无需DJ操作,无需换碟,无盘片磨损之忧,不存在花碟、死机等现象。
考虑到点歌系统主要是搜索歌曲以及选择歌曲,故该系统着重在这两方面下功夫,而在插入歌曲、删除歌曲等方面不做设计。
并且多数点歌台都需要由管理员开启,才能让用户使用,故设计了验证用户名和密码的界面。
主要具有以下功能:
●登录系统:
验证登录的用户名和密码
●更改密码:
更改用户的密码
●添加用户:
验证用户名和密码后可以添加用户
●管理员操作:
添加或删除后台的歌曲
●查看歌曲:
查看所有歌曲列表
●歌名搜索:
按歌名搜索歌曲
●歌手搜索:
按歌手搜索歌曲
●排行榜:
按不同语种查看排行榜,其中包括总榜、华语榜、粤语榜、韩语榜、欧美榜等
●点歌:
从查找的列表中选择要播放的歌曲,若该歌曲不在播放列表,则选择成功,否则跳出重复提示
●显示播放信息:
在状态栏显示当前播放信息和下一曲,并显示当前歌曲的剩余时间
●删除歌曲:
从播放列表删除要剔除出列表的歌曲
系统数据流如下:
歌曲数据操作
点歌
播放列表
⏹系统设计
系统模块设计
根据系统功能分析和KTV点歌台的特点,经过模块化的分析,得到如下系统功能模块结构图。
数据库设计
1.数据字典
根据系统功能模块结构图和KTV点歌台点歌流程,以及管理系统的需求,总结出如下的数据字典:
Ø系统用户数据:
KTV内部人员使用点歌系统的身份数据,包含的数据项有用户编号、登录口令、权限代码。
Ø歌曲数据:
用于点歌使用的歌曲数据,包含的数据项有歌曲ID、歌曲名、歌手名、语种、歌曲长度、歌曲点播频率。
Ø操作日志数据:
包含的数据项有歌曲ID、歌曲名、歌手名、点播时间。
2.数据库结构设计
根据系统模块设计和数据字典,设计出KTV点歌系统数据库中的各个数据表。
数据表名称与结构如下:
本系统共创建4个数据表:
(1)music数据表。
该表主要保存书籍资料信息,如表
序号
列名
数据类型
宽度
说明
1
Mid
整型
5
主键
2
Mname
文本
20
歌曲名
3
Msinger
文本
20
歌手名
4
Mtype
文本
10
语种
5
Mlength
整型
5
歌曲长度
6
mfreq
整型
5
点歌频率
表1music数据表
(2)mag数据表。
该表主要保存管理员的信息
序号
列名
数据类型
宽度
说明
1
Name
文本
20
管理员登录名
2
password
文本
20
密码
表2mag数据表
(3)record数据表。
该表主要保存读者信息
序号
列名
数据类型
宽度
说明
1
Rid
整型
5
以music(mid)为外键
2
rname
文本
20
歌名
3
rdate
日期
点歌日期
表3record数据表
⏹系统实现
本系统按功能分为两大块,主要包括系统登录模块、歌曲查询与点歌模块。
大部分功能模块均采用独立的窗体设计。
前台主要使用VS2010的C#,后台为Oracle11g数据库。
●登录界面
检测用户名跟密码是否来自oracle数据库中mag表中的name和password相同,若无该用户或者密码有误则提示输入错误,否则进入点歌界面。
提示信息错误的界面如下:
主要代码如下(注释说明了各部分代码的作用):
namespacemusic
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
//设置按回车后的默认按钮为登录键
this.AcceptButton=button_login;
}
privatevoidbutton_login_Click(objectsender,EventArgse)
{
stringconnStr;
stringqueryString;
//连接到oracle数据库
connStr="DataSource=localhost/ORCL;UserID=SCOTT;PassWord=tiger";
stringuser=textBox_user.Text;
stringpassword=textBox_password.Text;
//设置查询语句,查询该用户名的密码
queryString="SELECTpasswordFROMmagwherename="+"'"+user+"'";
OracleConnectionconn=newOracleConnection(connStr);
OracleCommandorclComd=conn.CreateCommand();
orclComd.CommandText=queryString;
orclComd.Connection=conn;
orclComd.CommandType=CommandType.Text;
//打开数据库连接
conn.Open();
Form2form2=newForm2();
objectobj=orclComd.ExecuteScalar();
//若无该用户或者密码有误,则跳出错误提示,否则登录到点歌界面
if(obj==null||!
obj.Equals(password))
MessageBox.Show("用户名或密码不正确","登陆失败");
else
{
form2.ShowDialog();
}
//关闭数据库连接
conn.Close();
}
//点击取消后关闭登录界面
privatevoidbutton_cancel_Click(objectsender,EventArgse)
{
this.Close();
}
}
}
修改密码
验证输入的用户名和密码正确后,可进入修改密码的界面:
若输入的密码不相同,跳出错误提示:
否则修改成功(如两个文本框都输入“123456”):
可从后台查看修改前后的结果:
可以看到feng的密码已修改成功。
主要代码如下(注释说明了各部分代码的作用):
//重载构造函数,传入窗口1的用户名和密码
publicForm4(stringstr1,stringstr2)
{
InitializeComponent();
user=str1;
password=str2;
//设置回车的默认按钮
this.AcceptButton=button_commit;
}
privatevoidbutton_commit_Click(objectsender,EventArgse)
{
stringconnstr="DataSource=localhost/ORCL;UserID=SCOTT;PassWord=tiger";
stringchangestr="updatemagsetpassword='"+textBox_newpassword.Text.ToString()+"'wherename='"+user+"'";
//如果两次输入的密码相同且不为空则执行修改密码的SQL语句
if(textBox_newpassword.Text.Equals(textBox_newpassword2.Text)&&textBox_newpassword.Text!
="")
{
OracleConnectionorclConn=newOracleConnection(connstr);
OracleCommandoracmd=newOracleCommand();
oracmd.CommandText=changestr;
oracmd.Connection=orclConn;
orclConn.Open();
oracmd.ExecuteNonQuery();
//跳出修改成功的窗口
MessageBox.Show("密码修改成功","修改成功");
orclConn.Close();
this.Close();
}
//否则提示输入有误,清空两个文本框的内容
else
{
MessageBox.Show("请输入相同的密码","密码输入有误");
textBox_newpassword.Clear();
textBox_newpassword2.Clear();
}
}
privatevoidbutton_cancel_Click(objectsender,EventArgse)
{
this.Close();
}
创建用户
若验证用户名和密码成功,可进入创建用户的界面:
若输入的用户名已存在,或者没有输入密码,则跳出错误提示:
否则创建新用户:
可从后台查看新添加的用户:
可以看见新添加了lin这个用户。
主要代码如下(注释说明了各部分代码的作用):
//重载构造函数,传入窗口1的用户名
publicForm5(stringstr)
{
InitializeComponent();
user=str;
//设置回车的默认按钮
this.AcceptButton=button_commit;
}
privatevoidbutton_commit_Click(objectsender,EventArgse)
{
stringconnstr="DataSource=localhost/ORCL;UserID=SCOTT;PassWord=tiger";
//搜索已有的管理员信息
stringselectstr="select*frommag";
OracleConnectionorclConn=newOracleConnection(connstr);
OracleCommandselectcomd=orclConn.CreateCommand();
OracleCommandinsertcomd=orclConn.CreateCommand();
selectcomd.CommandText=selectstr;
selectcomd.Connection=orclConn;
orclConn.Open();
OracleDataReaderord=selectcomd.ExecuteReader();
string[]ans=newstring[100];
inti=0;
boolok=true;
//将管理员的用户名存到ans字符串数组中
while(ord.Read())
{
ans[i++]=ord[0].ToString();
}
//密码为空时不创建新用户
if(textBox_password.Text=="")ok=false;
//若用户名已存在则不创建
for(intk=0;k
{
if(textBox_user.Text.Equals(ans[k]))
{
ok=false;
break;
}
}
//判断是否创建新用户
if(ok)
{
//创建新用户
stringinsertstr="insertintomagvalues('"+textBox_user.Text+"','"+textBox_password.Text+"')";
insertcomd.CommandText=insertstr;
insertcomd.Connection=orclConn;
insertcomd.ExecuteNonQuery();
MessageBox.Show("添加新用户成功","添加成功");
this.Close();
}
else
{
//跳出输入有误的提示
MessageBox.Show("该用户已存在或者未输入密码","添加失败");
textBox_user.Clear();
textBox_password.Clear();
}
}
privatevoidbutton_cancel_Click(objectsender,EventArgse)
{
this.Close();
}
管理员操作
验证用户名和密码通过后可以添加歌曲或者删除歌曲:
若信息不完整,则不能添加歌曲:
歌曲ID已存在,同样添加失败:
否则添加成功:
可从后台Oracle查看是否已添加:
同样可以删除该歌曲,不同的是删除歌曲的时候需要并且仅需要输入ID,若没有输入ID则提示错误:
否则删除相应的歌曲:
可从后台查看ID为1000的歌曲已被删除:
主要代码如下(注释说明了各部分代码的作用):
//添加歌曲
privatevoidbutton_add_Click(objectsender,EventArgse)
{
//若有其中一项未输入,则跳出提示
if(textBox_mid.Text==""||textBox_mname.Text==""||textBox_msinger.Text==""||textBox_mtype.Text==""||textBox_mlength.Text=="")
{
MessageBox.Show("请输入完整的歌曲信息","信息不完整");
return;
}
stringconnstr="DataSource=localhost/ORCL;UserID=SCOTT;PassWord=tiger";
stringjudgestr="selectmidfrommusic";
stringinsertstr="insertintomusicvalues("+textBox_mid.Text+",'"+textBox_mname.Text+"','"+textBox_msinger.Text+"','"+textBox_mtype.Text+"',"+textBox_mlength.Text+",0)";
OracleConnectionorclConn=newOracleConnection(connstr);
OracleCommandoracmd=newOracleCommand();
oracmd.CommandText=judgestr;
oracmd.Connection=orclConn;
orclConn.Open();
OracleDataReaderord=oracmd.ExecuteReader();
string[]ans=newstring[1000];
inti=0;
boolok=true;
//ans字符串数组存储已有的歌曲ID
while(ord.Read())
{
ans[i++]=ord[0].ToString();
}
//若要添加的歌曲ID有重复,则不添加
for(intk=0;k
{
if(textBox_mid.Text.Equals(ans[k]))
{
ok=false;
break;
}
}
//判断是否添加歌曲
if(ok)
{
oracmd.CommandText=insertstr;
oracmd.ExecuteNonQuery();
MessageBox.Show("添加歌曲成功","添加成功");
}
else
{
MessageBox.Show("该歌曲ID已存在","ID已存在");
}
}
//删除歌曲
privatevoidbutton_cut_Click(objectsender,EventArgse)
{
//若歌曲ID未输入,跳出提示
if(textBox_mid.Text=="")
{
MessageBox.Show("请输入歌曲ID","缺少歌曲ID");
return;
}
stringconnstr="DataSource=localhost/ORCL;UserID=SCOTT;PassWord=tiger";
//删除歌曲的SQL语句
stringdeletestr="deletemusicwheremid='"+textBox_mid.Text+"'";
OracleConnectionorclConn=newOracleConnection(connstr);
OracleCommandoracmd=newOracleCommand();
oracmd.CommandText=deletestr;
oracmd.Connection=orclConn;
orclConn.Open();
oracmd.ExecuteNonQuery();
MessageBox.Show("该歌曲已删除成功","删除成功");
orclConn.Close();
}
●点歌界面
查看所有歌曲
点击显示所有歌曲可以显示后台有的所有歌曲信息,结果如下:
该部分的主要代码如下:
//显示所有歌曲信息
privatevoidbutton_showmusic_Click(objectsender,EventArgse)
{
stringconnstr;
stringqueryString;
connstr="DataSource=localhost/ORCL;UserID=SCOTT;PassWord=tiger";
queryString="SELECT*FROMmusicorderbymid";
OracleConnectionorclConn=newOracleConnection(connstr);
OracleCommandorclcomd=orclConn.CreateCommand();
orclcomd.CommandText=queryString;
orclConn.Open();
OracleDataAdapteroraDA=newOracleDataAdapter(orclcomd);
DataSetds=newDataSet();
oraDA.Fill(ds);
orclConn.Close();
DataTabledtbl=ds.Tables[0];
this.dataGridView_showmusic.DataSource=dtbl;
orclConn.Close();
}
歌曲搜索
选择不同关键字搜索歌曲,可选择按歌曲名搜索或者按歌手名搜索,如图所示:
选择歌名,并在右方文本框中输入要搜索的歌曲,如输入“背对背拥抱”,则列表框1可现实搜索结果,如图所示:
若没有选择关键字直接点击查看或按回车,则跳出提示:
按歌手名搜索情况类似,如输入“周杰伦”并按回车或者点击查找,结果如下图:
该部分的主要代码如下(注释说明了各部分代码的作用):
//设置搜索的关键字
privatevoidcomboBox_type_SelectedIndexChanged(objectsender,EventArgse)
{
if(comboBox_type.SelectedIndex==0)
type1=1;
elseif(comboBox_type.SelectedIndex==1)
type1=2;
else
type1=0;
}
//搜索歌曲
privatevoidbutton_select_Click(objectsender,EventArgse)
{
listBox_Selectedmusic.Items.Clear();
stringconnstr,queryString;
connstr="DataSource=localhost/ORCL;UserID=SCOTT;PassWord=tiger";
//设置搜索内容
stringselectstr=textBox_song.Text;
stringtypestr="mname";
if(type1==1)
typestr="mname";//按歌名搜索
elseif(type1==2)
typestr="msinger";//按歌手搜索
else
MessageBox.Show("请选择搜索关键字","未选择");//未选择搜索关键字,跳出提示
//搜索语句
qu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 课程设计 报告 简易 点歌 系统