Oracle课程设计报告简易点歌台系统_第1页
Oracle课程设计报告简易点歌台系统_第2页
Oracle课程设计报告简易点歌台系统_第3页
Oracle课程设计报告简易点歌台系统_第4页
Oracle课程设计报告简易点歌台系统_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle课程设计报告学生姓名 林晓锋 学 号 1302140121 专业班级 信科1401指导老师陈明 数学与统计学院一基础题3(30分)(1) 创建这三个表建表截图如下:查看三个表的创建情况如下:向Book表添加数据:向borrow表中插入下列数据:向record表中插入下列数据:三个表的数据如下图:(2) 查询借书超过5本的读者的借书卡号及所借图书册数。(3) 查询借阅了"水浒"一书的读者的姓名及班级。、(4) 查询出过期未还的图书,显示借阅者卡号、书名及作者。(5)查询出书名包括"网络"关键词的图书,显示其书号、书名、作者。(6)将图书表中当前

2、无人借阅的图书记录删除。可以发现第七本书已被删除。二综合题(40分)n 点歌台系统需求分析随着KTV行业的迅猛发展,点歌系统在KTV里的重要性越来越大,特别是在量版式KTV,投资方在选系统的时候无不练就一双火眼金睛,千挑万选,而且更是在配套上重金投入,确保营造出一个更好的消费环境。点歌系统中的专业版被广泛应用于KTV、酒店、酒吧等娱乐场所中,它是全电脑操作,无需DJ操作,无需换碟,无盘片磨损之忧,不存在花碟、死机等现象。考虑到点歌系统主要是搜索歌曲以及选择歌曲,故该系统着重在这两方面下功夫,而在插入歌曲、删除歌曲等方面不做设计。并且多数点歌台都需要由管理员开启,才能让用户使用,故设计了验证用户

3、名和密码的界面。主要具有以下功能:l 登录系统:验证登录的用户名和密码l 更改密码:更改用户的密码l 添加用户:验证用户名和密码后可以添加用户l 管理员操作:添加或删除后台的歌曲l 查看歌曲:查看所有歌曲列表l 歌名搜索:按歌名搜索歌曲l 歌手搜索:按歌手搜索歌曲l 排行榜:按不同语种查看排行榜,其中包括总榜、华语榜、粤语榜、韩语榜、欧美榜等l 点歌:从查找的列表中选择要播放的歌曲,若该歌曲不在播放列表,则选择成功,否则跳出重复提示l 显示播放信息:在状态栏显示当前播放信息和下一曲,并显示当前歌曲的剩余时间l 删除歌曲:从播放列表删除要剔除出列表的歌曲系统数据流如下:管理员登录后台oracle

4、数据用户点歌台歌曲数据操作欧美榜韩语榜粤语榜总排行华语榜歌手搜索歌曲搜索 点歌播放列表n 系统设计系统模块设计根据系统功能分析和KTV点歌台的特点,经过模块化的分析,得到如下系统功能模块结构图。点歌系统图2 系统功能结构模块图系统登录系统登录 取消登录歌曲查询歌名搜索歌手搜索排行榜数据库设计1. 数据字典根据系统功能模块结构图和KTV点歌台点歌流程,以及管理系统的需求,总结出如下的数据字典:Ø 系统用户数据:KTV内部人员使用点歌系统的身份数据,包含的数据项有用户编号、登录口令、权限代码。Ø 歌曲数据:用于点歌使用的歌曲数据,包含的数据项有歌曲ID、歌曲名、歌手名、语种、歌

5、曲长度、歌曲点播频率。Ø 操作日志数据:包含的数据项有歌曲ID、歌曲名、歌手名、点播时间。2. 数据库结构设计根据系统模块设计和数据字典,设计出KTV点歌系统数据库中的各个数据表。数据表名称与结构如下:本系统共创建4个数据表:(1) music数据表。该表主要保存书籍资料信息,如表序号列名数据类型宽度说明1Mid整型5主键2Mname文本20歌曲名3Msinger文本20歌手名4Mtype文本10语种5Mlength整型5歌曲长度6mfreq整型5点歌频率表1 music数据表(2)mag数据表。该表主要保存管理员的信息序号列名数据类型宽度说明1Name文本20管理员登录名2pass

6、word文本20密码表2 mag数据表(3)record数据表。该表主要保存读者信息序号列名数据类型宽度说明1Rid整型5以music(mid)为外键2rname文本20歌名3rdate日期点歌日期表3 record数据表n 系统实现本系统按功能分为两大块,主要包括系统登录模块、歌曲查询与点歌模块。大部分功能模块均采用独立的窗体设计。前台主要使用VS2010的C#,后台为Oracle11g数据库。l 登录界面检测用户名跟密码是否来自oracle数据库中mag表中的name和password相同,若无该用户或者密码有误则提示输入错误,否则进入点歌界面。提示信息错误的界面如下:主要代码如下(注释说

7、明了各部分代码的作用):namespace musicpublicpartialclassForm1 : Form public Form1() InitializeComponent();/设置按回车后的默认按钮为登录键this.AcceptButton = button_login; privatevoidbutton_login_Click(object sender, EventArgs e) stringconnStr;stringqueryString;/连接到oracle数据库connStr = "Data Source=localhost/ORCL;User ID=S

8、COTT;PassWord=tiger"string user = ;string password = ;/设置查询语句,查询该用户名的密码queryString = "SELECT password FROM mag where name = " +"'" + user + "'" ;OracleConnection conn = newOracleConnection(connStr);OracleCommandorclComd = (); = queryString; = conn; = Comman

9、dType.Text;/打开数据库连接();Form2form2 = newForm2();objectobj = ();/若无该用户或者密码有误,则跳出错误提示,否则登录到点歌界面if (obj = null | !(password)MessageBox.Show("用户名或密码不正确", "登陆失败");else form2.ShowDialog(); /关闭数据库连接(); /点击取消后关闭登录界面privatevoidbutton_cancel_Click(object sender, EventArgs e) this.Close(); 修改

10、密码验证输入的用户名和密码正确后,可进入修改密码的界面:若输入的密码不相同,跳出错误提示:否则修改成功(如两个文本框都输入“123456”):可从后台查看修改前后的结果:可以看到feng的密码已修改成功。主要代码如下(注释说明了各部分代码的作用):/重载构造函数,传入窗口1的用户名和密码public Form4(string str1,string str2) InitializeComponent();user = str1;password = str2;/设置回车的默认按钮this.AcceptButton = button_commit; privatevoidbutton_commi

11、t_Click(object sender, EventArgs e) stringconnstr = "Data Source=localhost/ORCL;User ID=SCOTT;PassWord=tiger"stringchangestr = "update mag set password= '" + textBox_() + "' where name ='" + user + "'"/如果两次输入的密码相同且不为空则执行修改密码的SQL语句if (textBox_ne

12、wpassword2.Text) && != "") OracleConnectionorclConn = newOracleConnection(connstr);OracleCommandoracmd = newOracleCommand(); = changestr; = orclConn;();();/跳出修改成功的窗口MessageBox.Show("密码修改成功", "修改成功");();this.Close(); /否则提示输入有误,清空两个文本框的内容else MessageBox.Show("

13、;请输入相同的密码", "密码输入有误");textBox_(); textBox_newpassword2.Clear(); privatevoidbutton_cancel_Click(object sender, EventArgs e) this.Close(); 创建用户若验证用户名和密码成功,可进入创建用户的界面:若输入的用户名已存在,或者没有输入密码,则跳出错误提示:否则创建新用户:可从后台查看新添加的用户:可以看见新添加了lin这个用户。主要代码如下(注释说明了各部分代码的作用):/重载构造函数,传入窗口1的用户名public Form5(stri

14、ngstr) InitializeComponent();user = str;/设置回车的默认按钮this.AcceptButton = button_commit; privatevoidbutton_commit_Click(object sender, EventArgs e) stringconnstr = "Data Source=localhost/ORCL;User ID=SCOTT;PassWord=tiger"/搜索已有的管理员信息stringselectstr = "select * from mag"OracleConnectio

15、norclConn = newOracleConnection(connstr);OracleCommandselectcomd = ();OracleCommandinsertcomd=(); = selectstr; = orclConn;();OracleDataReaderord = ();string ans = newstring100;inti = 0;bool ok=true;/将管理员的用户名存到ans字符串数组中while () ansi+ = ord0.ToString(); /密码为空时不创建新用户if(="") ok=false;/若用户名已存在则

16、不创建for(int k=0;k<i;k+) if(ansk) ok=false;break; /判断是否创建新用户if (ok) /创建新用户stringinsertstr = "insert into mag values('" + + "','" + + "')" = insertstr; = orclConn;();MessageBox.Show("添加新用户成功", "添加成功");this.Close(); else /跳出输入有误的提示Mess

17、ageBox.Show("该用户已存在或者未输入密码", "添加失败");textBox_();textBox_(); privatevoidbutton_cancel_Click(object sender, EventArgs e) this.Close(); 管理员操作验证用户名和密码通过后可以添加歌曲或者删除歌曲:若信息不完整,则不能添加歌曲:歌曲ID已存在,同样添加失败:否则添加成功:可从后台Oracle查看是否已添加:同样可以删除该歌曲,不同的是删除歌曲的时候需要并且仅需要输入ID,若没有输入ID则提示错误:否则删除相应的歌曲:可从后台查看I

18、D为1000的歌曲已被删除:主要代码如下(注释说明了各部分代码的作用):/添加歌曲privatevoidbutton_add_Click(object sender, EventArgs e) /若有其中一项未输入,则跳出提示if ( = "" | = "" | = "" | = "" | = "") MessageBox.Show("请输入完整的歌曲信息", "信息不完整");return; stringconnstr = "Data Sour

19、ce=localhost/ORCL;User ID=SCOTT;PassWord=tiger"stringjudgestr = "select mid from music"stringinsertstr = "insert into music values(" + + ",'" + + "','" + + "','" + + "'," + + ",0)"OracleConnectionorclC

20、onn = newOracleConnection(connstr);OracleCommandoracmd = newOracleCommand(); = judgestr; = orclConn;();OracleDataReaderord = ();string ans = newstring1000;inti = 0;bool ok = true;/ans字符串数组存储已有的歌曲IDwhile () ansi+ = ord0.ToString(); /若要添加的歌曲ID有重复,则不添加for (int k = 0; k < i; k+) if (ansk) ok = false;

21、break; /判断是否添加歌曲if (ok) = insertstr;();MessageBox.Show("添加歌曲成功", "添加成功"); else MessageBox.Show("该歌曲ID已存在", "ID已存在"); /删除歌曲privatevoidbutton_cut_Click(object sender, EventArgs e) /若歌曲ID未输入,跳出提示if ( = "") MessageBox.Show("请输入歌曲ID", "缺少歌曲

22、ID");return; stringconnstr = "Data Source=localhost/ORCL;User ID=SCOTT;PassWord=tiger"/删除歌曲的SQL语句stringdeletestr = "delete music where mid='" + + "'"OracleConnectionorclConn = newOracleConnection(connstr);OracleCommandoracmd = newOracleCommand(); = deletest

23、r; = orclConn;();();MessageBox.Show("该歌曲已删除成功", "删除成功");(); l 点歌界面查看所有歌曲点击显示所有歌曲可以显示后台有的所有歌曲信息,结果如下:该部分的主要代码如下:/显示所有歌曲信息privatevoidbutton_showmusic_Click(object sender, EventArgs e) stringconnstr;stringqueryString;connstr = "Data Source=localhost/ORCL;User ID=SCOTT;PassWord=

24、tiger"queryString = "SELECT * FROM music order by mid"OracleConnectionorclConn = newOracleConnection(connstr);OracleCommandorclcomd = (); = queryString;();OracleDataAdapteroraDA = newOracleDataAdapter(orclcomd);DataSet ds = newDataSet();(ds);();DataTabledtbl = 0;this = dtbl;(); 歌曲搜索选择

25、不同关键字搜索歌曲,可选择按歌曲名搜索或者按歌手名搜索,如图所示:选择歌名,并在右方文本框中输入要搜索的歌曲,如输入“背对背拥抱”,则列表框1可现实搜索结果,如图所示:若没有选择关键字直接点击查看或按回车,则跳出提示:按歌手名搜索情况类似,如输入“周杰伦”并按回车或者点击查找,结果如下图:该部分的主要代码如下(注释说明了各部分代码的作用):/设置搜索的关键字privatevoidcomboBox_type_SelectedIndexChanged(object sender, EventArgs e) if ( = 0) type1 = 1;elseif ( = 1) type1 = 2;el

26、se type1 = 0; /搜索歌曲privatevoidbutton_select_Click(object sender, EventArgs e) listBox_();stringconnstr,queryString;connstr = "Data Source=localhost/ORCL;User ID=SCOTT;PassWord=tiger"/设置搜索内容stringselectstr = ;stringtypestr="mname"if (type1 = 1)typestr = "mname" /按歌名搜索els

27、eif (type1 = 2)typestr = "msinger" /按歌手搜索elseMessageBox.Show("请选择搜索关键字","未选择"); /未选择搜索关键字,跳出提示/搜索语句queryString = "SELECT mid,mname,msinger,mtype,mlength,mfreq FROM music where "+ typestr + "='" + selectstr + "'"OracleConnectionorclC

28、onn = newOracleConnection(connstr);OracleCommandorclcomd = (); = queryString; = orclConn; = CommandType.Text;();OracleDataReaderord = ();int j=0;/读取搜索到的歌曲信息while () stringstr=""for (inti = 0; i <= 5; i+) if (i <= 3) str += " "str += ordi.ToString(); resultj, i = ordi.ToStri

29、ng(); j+;/显示搜索到的歌曲信息listBox_(str); ();();/显示搜索到的歌曲数目 = listBox_(); 查看排行榜可按照不同语种查看排行榜,可选择的选项有:总排行、华语榜、粤语榜、韩语榜、欧美榜等。如图(其中测试组是为了测试状态栏的歌曲倒计时设置的,并无实际含义,因为大部分歌曲长度都为三四分钟,该测试组的歌曲长度设置为十秒内,方便快速查看状态栏信息是否正确):如选择华语,然后按回车或者点击查看,结果如下图:若没有选择关键字,则弹出提示,如图:该部分主要代码如下(其中注释说明各部分代码的作用):/设置排行榜类型privatevoidcomboBox_hot_Sele

30、ctedIndexChanged(object sender, EventArgs e) if ( = 0) type2 = -1;elseif ( = 1) type2 = -2;elseif ( = 2) type2 = -3;elseif ( = 3) type2 = -4;elseif ( = 4) type2 = -5;elseif ( = 5) type2 = -6;else type2 = 0; /查看排行榜privatevoidbutton_hot_Click(object sender, EventArgs e) listBox_();stringconnstr;string

31、queryString;connstr = "Data Source=localhost/ORCL;User ID=SCOTT;PassWord=tiger"stringtypestr = "mname"if (type2 = -1)typestr=""elseif (type2 = -2)typestr = "华语" elseif (type2 = -3)typestr = "粤语"elseif (type2 = -4)typestr = "韩语"elseif (type2

32、 = -5)typestr = "欧美" elseif(type2=-6)typestr = "火星语" elseMessageBox.Show("请选择排行关键字", "未选择"); /未选择排行关键字,跳出提示/分不同情况设置查询语句if(type2=-1)queryString = "SELECT mid,mname,msinger,mtype,mlength,mfreq FROM music order by mfreqdesc"elsequeryString = "SELEC

33、T mid,mname,msinger,mtype,mlength,mfreq FROM music where mtype = " + "'" +typestr + "' order by mfreqdesc"OracleConnectionorclConn = newOracleConnection(connstr);OracleCommandorclcomd = (); = queryString; = orclConn; = CommandType.Text;();OracleDataReaderord = ();int

34、 j = 0;/读取排行榜信息while () stringstr = ""for (inti = 0; i <= 5; i+) if (i <= 3) str += " "str += ordi.ToString(); resultj, i = ordi.ToString(); j+;/更新排行榜列表listBox_(str); ();();/更新排行榜歌曲数目 = listBox_(); 点歌根据搜索到的歌曲,选择要点播的歌曲,按回车或者点击点歌,选择后可在状态栏看到正在播放的歌曲名,若有下一曲,则同时显示下一曲歌曲名,否则只显示当前正在

35、播放的歌曲,同时显示当前歌曲的剩余时间,结果如图:当然,如果待选的歌曲已在播放列表中,则跳出提示,如先选择若干首歌曲,然后随机选择其中一首点歌,结果如下:该部分的主要代码如下(其中注释说明各部分代码的作用):/点歌privatevoidbutton_play_Click(object sender, EventArgs e) stringupdatestr;insertstr;/如果未选择要删除的歌曲,则返回if ( = -1)return;intnum = ;stringnewstr;/检查要点的歌曲是否已点for (inti = 0; i < cnt; i+)if (singingi

36、, 0 = resultnum, 0) MessageBox.Show("该歌曲已选择,请勿重复", "有重复");return; for (inti = 0; i < 6; i+) singingcnt, i = resultnum, i;if (i <= 3) newstr += " "newstr += resultnum, i; /若播放列表为空,则添加倒计时if ( = 0)second = int.Parse(resultnum, 4);/更新歌曲被点的频率并将点播记录添加到record表中stringconn

37、str = "Data Source=localhost/ORCL;User ID=SCOTT;PassWord=tiger"OracleConnectionorclConn = newOracleConnection(connstr);updatestr = "update music set mfreq = mfreq+1 where mid = " + int.Parse(resultnum, 0);insertstr = "insert into record values(" + resultnum, 0 + ",

38、'" + resultnum, 1 + "', " + "(select sysdate from dual)"OracleCommandorclcomd = ();OracleCommandinsertCommand = (); = updatestr; = orclConn; = insertstr; = orclConn;();();();();listBox_(newstr); /更新播放列表的数目 = listBox_();cnt+;/更新状态栏if ( > 0)stastr = "正在播放:"

39、; + singing0, 1;else toolStripStatusLabel1.Text = ""goto mark; if ( > 1)stastr += ",下一曲:" + singing1, 1; toolStripStatusLabel1.Text = stastr;mark:statusStrip1.Show(); 删除歌曲从播放列表中删除已点的歌曲,若删除的歌曲不是前两首,则只将选中的歌曲从列表框2中删除,若删除的歌曲为第二首,则除了将选中的歌曲移出播放列表外,还要更新状态栏下一曲的内容,若删除的歌曲为第一首,则除了以上操作外,还

40、要更新状态栏中当前播放歌曲个剩余时间,结果如图:初始时播放四首歌:将第三首“龙卷风”删除,状态栏信息不变,倒计时继续:将第二首“退后”删除,状态栏中下一曲改变,倒计时继续:删除第一首,则状态栏三项都做相应改变:删除最后一首歌后状态栏显示为空:该部分的主要代码如下(其中注释说明各部分代码的作用):/删除已点歌曲privatevoidbutton_delete_Click(object sender, EventArgs e) if ( = -1)return;intnum = ;/删除播放列表信息for (inti = num; i < cnt-1; i+)for (int j = 0;

41、j < 6; j+)singingi, j = singingi + 1, j; listBox_Playingmusic.Items.Remove(listBox_Playingmusic.SelectedItem);/更新状态栏if ( > 0)stastr = "正在播放:" + singing0, 1;else toolStripStatusLabel1.Text = ""goto mark; if ( > 1)stastr += ",下一曲:" + singing1, 1; toolStripStatusL

42、abel1.Text = stastr;mark: statusStrip1.Show();/如果删除的歌曲是当前正在播放的歌曲,则更新倒计时if (num = 0) if( = 0)for (int j = 0; j < 6; j+)singing0, j =""if ( > 0)second = int.Parse(singing0, 4);else second = 0; toolStripStatusLabel2.Text = "" cnt-; = listBox_(); 查看历史记录点击右下方蓝色小字“查看点歌历史记录”可查看历史点

43、歌记录,包括歌曲ID、歌曲名、点歌时间,按确定可关闭窗口,结果如图:该部分的主要代码如下:/查看历史播放记录privatevoid label9_Click(object sender, EventArgs e) Form3 form3=newForm3();form3.Show(); /显示历史播放记录privatevoid Form3_Load(object sender, EventArgs e) stringconnStr;stringqueryString;connStr = "Data Source=localhost/ORCL;User ID=SCOTT;PassWor

44、d=tiger"queryString = "SELECT * FROM record order by rdatedesc"OracleConnection conn = newOracleConnection(connStr);OracleCommandorclComd = (); = queryString;();OracleDataAdapteroraDA = newOracleDataAdapter(orclComd);DataSet ds = newDataSet();(ds);();DataTabledtbl = 0;this.dataGridVie

45、w1.DataSource = dtbl;(); /按确定键关闭窗口privatevoid button1_Click(object sender, EventArgs e) this.Close(); 其余部分另外还有一些重要的零散代码,如对文本框进行编辑时设置回车键的默认按钮、设置Timer事件等代码如下:/以下三个函数分别改变按回车键时默认的ButtonprivatevoidlistBox_Selectedmusic_SelectedIndexChanged(object sender, EventArgs e) this.AcceptButton = button_play; privatevoidlistBox_Playingmusic_SelectedIndexChanged(object sender, EventArgs e) this.AcceptButton = button_delete; p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论