Java语言课程设计报告 0808010106.docx
- 文档编号:10592782
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:43
- 大小:3.63MB
Java语言课程设计报告 0808010106.docx
《Java语言课程设计报告 0808010106.docx》由会员分享,可在线阅读,更多相关《Java语言课程设计报告 0808010106.docx(43页珍藏版)》请在冰豆网上搜索。
Java语言课程设计报告0808010106
(此文档为word格式,下载后您可任意编辑修改!
)
Java语言课程设计报告
题目:
KTV点歌系统
班级:
软件工程0801班
学号:
姓名:
王夕楠
2011年1月
目录
1设计题目及具体要求………………………………………………………3
1.1题目需求……………………………………………………………3
1.2实现环境及工具简介………………………………………………3
2总体设计……………………………………………………………………4
2.1系统基本功能描述…………………………………………………4
2.2数据库设计说明书…………………………………………………6
2.3界面设计……………………………………………………………6
3详细设计与实现……………………………………………………………11
3.1事件跟踪图…………………………………………………………11
3.2系统类图……………………………………………………………12
3.3输入/输出数据……………………………………………………12
3.4代码实现…………………………………………………………13
4系统测试………………………………………………………………22
4.1管理员……………………………………………………………22
4.2消费者……………………………………………………………23
4.3容错性测试………………………………………………………26
5设计小结…………………………………………………………………26
6参考文献…………………………………………………………………27
1设计题目及具体要求
1.1题目需求
1.1.1选题目的及意义
近些年人们生活水平提高很快,人们除了注重衣食住行以外,越来越需要一种好的娱乐休闲方式,而卡拉OK起源于日本然后引入我国。
这种娱乐方式很快被大家所接受。
而且非常受人们的欢迎,不管男女老少都能唱上几句。
现在大街上KTV包房很多,但它们的点歌系统并不先进,自动化程度不高,使用起来很不方便。
所以现在正需要一种功能强大,自动化程度高,成本低廉KTV包房点歌系统。
本学期,我选择这个题目作为课程设计的题目有以下两个原因:
一是本学期学习了Java程序设计和Oracle数据库两门课程,老师说过Java和Oracle数据库是最佳搭档,因此我想通过这次课程设计将所学运用于实际,也通过这次实际应用加强自身能力,为以后的就业打下坚实的基础。
因为以后的工作都是面对实际的问题,解决实际问题的能力才是我们真正需要的。
二是因为我比较喜欢去KTV唱歌,因此对于这个题目非常感兴趣,一直想找机会做一个相关的项目;对于KTV的点歌系统我也比较熟悉。
凭借平时去KTV的经历和个人想法,我想做出一套属于自己的KTV点歌系统,于是选择了这个题目。
1.1.2本KTV点歌系统在功能上要求完成以下基本功能:
a).消费者、管理员登陆;
b).管理员添加歌手信息入库;
c).管理员添加歌曲入库;
d).消费者查看包厢资费信息;
e).消费者选择包厢;
f).根据歌曲首字母选歌;
g).根据歌手名首字母选歌;
h).根据语种选歌;
i).查看已点歌曲;
j).删除、优先已点歌曲;
k).操作已点歌曲(播放、暂停、停止、切歌);
l).酒水服务;
m).歌曲排行
1.1.3系统实现重难点分析
本系统通过JDBC实现前后台数据的联系,前台操作界面使用Java编写,后台连接Oracle数据库存放相关数据。
基本上实现了一个KTV点歌系统所具备的基本功能。
本系统把使用者分为两类:
管理员和消费者,对两种用户分别设计了各自的主界面,以便更好的实现操作的方便性。
管理员可以通过用户名和密码验证后登录,进行对数据库的操作,实现添加歌手信息和添加歌曲的功能;消费者可以在登录时了解包间资费来选择需要的包间,随后可进行选歌和演唱等具体操作。
本系统的实现主要有以下重点:
1.前台用户界面编写:
系统界面较多,要求美观且界面友好,方便用户操作;
2.前台用户操作事件的响应:
要求操作简单易懂;
3.后台数据库的使用:
需要使用数据表和序列;
4.前台界面查询控制与后台数据库的链接:
需要响应及时且准确。
1.2实现环境及工具简介
1.2.1系统概述
本图书管理系统采用面向对象的分析方法进行分析,然后用面向对象的设计方法进行设计,最后用面向对象语言Java进行实现,后台数据库使用Oracle,连接方式为JDBC。
Java中GUI程序设计是界面程序设计,用它设计出来的界面不但美观,而且使用方便,使用者只需点几次鼠标,就能根据提示进行正确的操作,实现了KTV点歌和管理的便捷程度;
由于Java代码重用性非常好,且数据包十分强大。
只需简单的调用即可实现想要的功能,大大提高了开发新产品的效率,利用大部分时间在系统的设计上而不是编码实现的过程,因此可以实现降低代码量的目的;
Oracle数据库以功能强大和简单易用著称,它从发布以来,正逐步成为数据库的领导者,并且拥有广泛的用户。
“KTV点歌系统”是充分结合实际工作需求编制的应用软件。
它具有功能强,便于操作等特点。
这套系统的应用将减轻工作人员的工作强度,使顾客更为方便的在KTV包房自由的歌唱无外界打扰,并且节约了很大的成本而且非常方便。
1.2.2开发环境及工具
中央处理器:
IntelCorei3;
内存:
2GB;
主频:
2.13GHz;
开发平台:
Eclipse;
数据库:
Oracle9i
运行平台:
Windows7
1.2.3关键技术
本KTV点歌系统所使用的关键技术有:
JDBC,JavaGUI程序设计技术(MVC概念设计),数据库增加、查找技术,面向对象程序设计技术(类的继承和派生技术)。
2总体设计
2.1系统基本功能描述
2.1.1基本系统模型
图2-1KTV点歌系统基本系统模型
通过图2-1.,我们可以发现该系统的数据源是歌曲库管理员和消费者;管理员处理的事务有添加歌手和添加歌曲;消费者处理的事物有选歌、演唱操作等;数据终点是消费者,消费者可以查看数据库内存放的歌曲信息,并进行选择、播放等操作。
2.1.2KTV点歌系统数据流图
图2-2KTV点歌系统数据流图
2.1.3KTV点歌系统的系统层次结构图
图2-3KTV点歌系统层次结构图
2.1.4KTV点歌系统的用例图
图2-4KTV点歌系统用例图
2.2数据库设计说明书
2.2.1概念结构设计
本系统连接使用的数据库是Oracle9i,用的方式是JDBC,因此数据库设计尤为重要;
本系统E-R图如下:
图2-5歌手表和歌曲表的E-R图
图2-6管理员表的E-R图
2.2.2逻辑结构设计
根据上述E-R模型,我们可以得到该系统的数据库应该包括三个表,分别是:
歌手信息表、歌曲信息表、管理员信息表;下面是这三个表的详细属性信息(下划线的是该表的主键):
歌手信息表:
歌手编号、歌手姓名、歌手地区、歌手名缩写、歌手图片存放路径
歌曲信息表:
歌曲编号、歌曲名、演唱歌手、歌曲语言、歌曲名缩写、歌曲风格、歌曲存放路径
管理员表:
账户名、密码
2.2.3物理结构设计
一般数据库的物理结构设计包括两个方面:
为关系模式选择存取方法和设计关系、索引等数据库文件的物理存储结构。
本系统没有建立任何索引。
2.2.4其他数据库对象设计
本系统除使用了数据库表外,还使用了序列。
序列是数据库对象之一,用来产生一系列的唯一整数。
当应用向一个表插入一条新纪录时,应用只要简单的使用序列的下一个可用值作为新行的主键即可。
序列号可以用于生产唯一的主码,本系统创建了两个序列分别生成歌手编号和歌曲编号作为主键。
2.3界面设计
通过以上的分析,我将这个系统分为以下10个模块,它们分别是登录模块、歌曲库管理模块、主操作模块、分类点歌模块(拼音点歌模块、歌手点歌模块、语别点歌模块)、已点歌曲模块、歌曲排行模块、酒水服务模块。
2.3.1登录模块
从需求规格说明书中,我们已经知道本系统将使用者分为两类:
管理员和消费者。
而且他们的权限和使用目的各不相同,故需要为他们设计各自的登录界面。
图2-7为管理员登录界面设计:
图2-7管理员登录界面
图2-8为消费者登录界面设计:
图2-8为消费者登录界面
2.3.2歌曲库管理模块
管理员需输入用户名和密码,才可登录歌曲库管理界面。
登录后可进行【添加歌手】、【添加歌曲】的操作。
图为歌曲库管理界面设计:
图2-9添加歌曲界面图2-10添加歌手界面
2.3.3主操作模块
消费者登录时,可查看【包厢资费】并根据需要选择包厢类型,之后便可进入主操作界面【开始唱歌】。
图2-11为主操作界面设计:
图2-11主操作界面
2.3.4分类点歌模块
主操作界面提供四项服务:
分类点歌、已点歌曲、歌曲排行、酒水服务。
消费者可根据需要进行选择。
图2-12为分类点歌界面设计:
图2-12主操作界面
2.3.5拼音点歌模块、歌手点歌模块、语别点歌模块
【分类点歌】界面包含三种点歌方式:
拼音点歌、歌手点歌、语别点歌。
消费者可根据不同的点唱方式进行歌曲选择。
【拼音点歌】:
点击字母按钮,输入想要演唱歌曲的拼音首字母,输入过程中系统连接数据库进行实时查找,即可列出所有符合要求的歌曲,双击歌曲名即可将该歌曲加入已点歌曲清单。
【歌手点歌】:
点击字母按钮,输入歌手名首字母,系统将列出所有符合要求的歌手名。
单击要选择的歌手名可查看歌手图片;双击歌手名将列出该歌手所有的演唱歌曲,双击歌曲名即可将该歌曲加入已点歌曲清单。
【语别点歌】:
可通过选择语言,系统将列出该语言的所有歌曲,消费者便可在其中进行歌曲查找。
双击歌曲名即可将该歌曲加入已点歌曲清单。
图15为拼音点歌、歌手点歌、语别点歌的界面设计
图2-13拼音点歌界面图2-14歌手点歌界面
图2-15语别点歌界面
2.3.6已点歌曲模块
【已点歌曲】中包含消费者所选择的歌曲,可通过按钮控制歌曲的开始、停止、播放、暂停、切歌、调整音量等操作,也可通过单击右键进行歌曲的优先、删除操作;
该界面还包含已唱歌曲的清单,可选择【已唱歌曲】标签查看所有演唱过的歌曲。
图2-16为已点歌曲界面设计:
图2-16已点歌曲界面
2.3.7歌曲排行模块
【歌曲排行】模块根据系统中每首歌曲的点唱次数进行排行,消费者可查看热门点唱歌曲并可选择其中歌曲直接加入【已点歌曲】。
图2-17为歌曲排行界面设计:
图2-17歌曲排行界面
2.3.8酒水服务模块
【酒水服务】模块包含KTV提供的食品和酒水饮料,可选择购买。
且可通过【请求服务】呼叫服务员,【收费标准】查看包厢收费,【查看消费时间】查看娱乐时间。
图2-18为酒水服务界面设计:
图2-18酒水服务界面
3详细设计与实现
3.1事件跟踪图
3.1.1管理员添加歌手、歌曲信息的事件跟踪图
图3-1管理员添加歌手、歌曲信息的事件跟踪图
3.1.2消费者点歌的事件跟踪图
图3-2消费者点歌的事件跟踪图
3.2系统类图
图3-3KTV点歌系统类图
3.3输入/输出数据
下面用IPO表分别写出对上述模块的功能要求进行定性和定量的叙述:
(输入数据包括选择的数据)
3.3.1登录模块
操作名称
输入数据
处理过程
输出数据
登录模块(管理员)
管理员账号,密码
调用数据库数据进行验证
无
登录模块(消费者)
选择包厢类型
系统接收信息并开始记录消费时间
无
表3-1登陆模块IPO表
3.3.2歌曲库管理模块
操作名称
输入数据
处理过程
输出数据
歌曲库管理(添加歌手)
歌手名、歌手地区、歌手名缩写、图片存放路径
输入格式标准验证,添加入数据库
添加成功或失败提示
歌曲库管理(添加歌曲)
歌曲名、演唱者、歌曲语种、歌曲风格、歌曲名缩写、存放路径
输入格式标准验证,添加入数据库
添加成功或失败提示
表3-2歌曲库管理模块IPO表
3.3.3主操作模块
操作名称
输入数据
处理过程
输出数据
选择应用
选择的应用模块
系统响应
无
表3-3主操作模块IPO表
3.3.4分类点歌模块
操作名称
输入数据
处理过程
输出数据
拼音点歌模块
歌曲名拼音首字母
进入数据库查找所有符合条件的歌曲
符合输入拼音的所有歌曲
歌手点歌模块
歌手名拼音首字母
进入数据库查找所有符合条件的歌曲
符合输入拼音的所有歌手名
语别点歌模块
歌曲语种
进入数据库查找所有符合条件的歌曲
符合该语种的所有歌曲
表3-4分类点歌模块IPO表
3.3.5已点歌曲模块
操作名称
输入数据
处理过程
输出数据
查看已点歌曲
对已点歌曲的操作
系统响应
无
查看已唱歌曲
无
无
无
表3-5已点歌曲模块IPO表
3.3.6歌曲排行模块
操作名称
输入数据
处理过程
输出数据
查看点唱歌曲排行
无
根据歌曲点唱次数,排列热门歌曲
歌曲排行榜
表3-6歌曲排行模块IPO表
3.3.8酒水服务模块模块
操作名称
输入数据
处理过程
输出数据
查看食品列表
无
无
所有食品名称、价格
查看酒水列表
无
无
所有酒水品名、价格
查看消费时间
无
计算使用时间
使用系统时间
表3-7酒水服务模块IPO表
由于本系统为管理系统,系统包含类较多,且方便用户使用为系统设计重点,因此操作界面设计十分重要,
3.4代码实现
本系统编码设计采用的是JavaMVC设计模式。
MVC是一种流行的软件设计模式,它把系统分为以下3个模块:
1、Model(模型),可以分为业务模型和数据模型,它们代表应用程序的业务逻辑和状态
2、View(视图),提供可交互的客户界面,向客户显示模型数据
3、Controller(控制器),响应客户的请求,根据客户的请求来操作模型,并把模型的响应结果经由视图展现给客户
以下为KTV点歌系统的代码实现,由于篇幅有限,只列出编码大致框架。
3.4.1访问数据库工具类{JDBCTool}
该系统访问数据库使用的方式是JDBC,为了方便使用,编写一个类专门用于访问Oracle数据库,该类的代码如下:
publicclassJDBCTool
{
static
{
StringdriverName="oracle.jdbc.driver.OracleDriver";
try
{
Class.forName(driverName);
}
catch(ClassNotFoundExceptione)
{
e.printStackTrace();
}
}
publicstaticConnectiongetConnection()
{
StringjdbcString="jdbc:
oracle:
thin:
@localhost:
1521:
ORACLE";
StringnamesString="scott";
StringpasssString="tiger";
try
{
returnDriverManager.getConnection(jdbcString,namesString,passsString);
}
catch(SQLExceptione)
{
e.printStackTrace();
returnnull;
}
}
publicstaticvoidclose(ResultSetresultSet,Statementstatement,Connectionconnection)
{
try
{
resultSet.close();
statement.close();
connection.close();
}
catch(SQLExceptione)
{
e.printStackTrace();
}
}
}
3.4.2Model(模型)包
3.4.2.1歌手类{Player}
publicclassPlayer
{
privateStringnameString;
privateStringareasString;
privateStringaddressString;
publicPlayer(StringnameString,StringareasString,StringaddressString)
{
//构造函数初始化歌手对象
}
//设置歌手名、歌手地区、存储路径
publicStringgetNameString(){}
......
//获得歌手名、歌手地区、存储路径
publicvoidsetNameString(StringnameString){}
......
//返回歌手信息
publicStringtoString()
{
returnnameString+""+areasString;
}
}
3.4.2.2歌曲类{Song}
publicclassSong
{
privateStringsongNameString;
privateStringplayerNameString;
privateStringlanguageString;
privateStringstyleString;
privateStringaddressString;
publicSong(StringsongNameString,StringplayerNameString,StringlanguageString,StringstyleString,StringaddressString)
{
//构造函数初始化歌曲对象
}
//获得歌曲名、演唱者、歌曲语言、歌曲风格、存储路径的方法
publicStringgetSongNameString(){}
......
//设置歌曲名、演唱者、歌曲语言、歌曲风格、存储路径的方法
publicvoidsetSongNameString(StringsongNameString){}
......
//返回歌曲信息的方法
publicStringtoString()
{
returnsongNameString+""+playerNameString+""+styleString+""+languageString;
}
}
3.4.3View(视图)包
3.4.3.1登录类{Player}
importtool.JDBCTool;
publicclassLoginextendsJDialogimplementsActionListener
{
privateString[]strings3={"用户名","密码","包厢选择"};
privateString[]strings2={"登录","开始唱歌","收费标准","退出"};
privateString[]strings={"玲珑包","小包","中包","大包","商务包","总统包"};
privateStringsqlString="selectadm_name,adm_passwordfromktv_adm";
publicLogin()
{
//登录界面布局
}
publicstaticvoidmain(String[]args)//主函数创建登录窗口对象
{
login=newLogin();
}
//添加按钮响应事件
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==jButtons[0])//响应管理员【登录】按钮
{
//连接数据库验证用户名、密码是否正确
}
if(e.getSource()==jButtons[1])//响应消费者【开始唱歌】按钮
{
//进入主操作界面
}
if(e.getSource()==jButtons[2])//响应【包厢收费】按钮显示收费信息
{
JOptionPane.showMessageDialog(this,"玲珑包:
30/小时\n小包:
50/小时\n中包:
60/小时\n大包:
70/小时\n商务包:
100/小时\n总统包:
150/小时");
}
if(e.getSource()==jButtons[3])//响应【取消】
{
//关闭登录窗口
}
}
}
3.4.3.2添加歌手、歌曲类{Add}
packageview;
publicclassAddextendsJDialogimplementsActionListener
{
publicAdd()
{
//初始化添加界面界面布局
}
//添加按钮响应事件
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==jButtons[0])//【添加歌手】
{
//判断添加条件是否满足
JOptionPane.showMessageDialog(this,"\"歌手名\"不能为空!
");
......
if(条件满足)
{
//添加入歌曲库
......
JOptionPane.showMessageDialog(this,"添加成功!
已加入歌手库~~");
}
}
if(e.getSource()==jButtons[1])//【添加歌曲】
{
//判断添加条件是否满足
......
if(条件满足)
{
//添加入歌曲库
......
JOptionPane.showMessageDialog(this,"添加成功!
已加入歌曲库~~");
}
}
if(e.getSource()==jButtons[2])//响应添加歌手【浏览】
{
//获得歌手图片存放路径
}
if(e.getSource()==jButtons[3])//响应添加歌曲【浏览】
{
//获得歌曲存放路径
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java语言课程设计报告 0808010106 Java 语言 课程设计 报告