Java语言课程设计报告0808010106.doc_第1页
Java语言课程设计报告0808010106.doc_第2页
Java语言课程设计报告0808010106.doc_第3页
Java语言课程设计报告0808010106.doc_第4页
Java语言课程设计报告0808010106.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

Java语言课程设计报告题目: KTV点歌系统 班级: 软件工程 0801班 学号: 0808010106 姓名: 王夕楠 2011年 1月目 录1设计题目及具体要求31.1题目需求31.2实现环境及工具简介32总体设计42.1 系统基本功能描述42.2数据库设计说明书62.3界面设计63 详细设计与实现113.1 事件跟踪图113.2系统类图123.3输入/输出数据123.4 代码实现134 系统测试 22 4.1管理员224.2 消费者234.3 容错性测试265 设计小结266 参考文献271设计题目及具体要求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开发环境及工具中央处理器:Intel Core i3;内存:2GB;主频:2.13GHz;开发平台:Eclipse;数据库:Oracle 9i运行平台:Windows 71.2.3关键技术本KTV点歌系统所使用的关键技术有:JDBC,Java GUI程序设计技术(MVC概念设计),数据库增加、查找技术,面向对象程序设计技术(类的继承和派生技术)。2总体设计2.1 系统基本功能描述2.1.1基本系统模型图2-1KTV点歌系统基本系统模型通过图2-1.,我们可以发现该系统的数据源是歌曲库管理员和消费者;管理员处理的事务有添加歌手和添加歌曲;消费者处理的事物有选歌、演唱操作等;数据终点是消费者,消费者可以查看数据库内存放的歌曲信息,并进行选择、播放等操作。 2.1.2 KTV点歌系统数据流图图2-2 KTV点歌系统数据流图2.1.3 KTV点歌系统的系统层次结构图 图2-3 KTV点歌系统层次结构图2.1.4 KTV点歌系统的用例图 图2-4 KTV点歌系统用例图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-9 添加歌曲界面 图2-10 添加歌手界面2.3.3 主操作模块消费者登录时,可查看【包厢资费】并根据需要选择包厢类型,之后便可进入主操作界面【开始唱歌】。图2-11为主操作界面设计: 图2-11 主操作界面2.3.4 分类点歌模块主操作界面提供四项服务:分类点歌、已点歌曲、歌曲排行、酒水服务。消费者可根据需要进行选择。图2-12为分类点歌界面设计: 图2-12 主操作界面2.3.5 拼音点歌模块、歌手点歌模块、语别点歌模块【分类点歌】界面包含三种点歌方式:拼音点歌、歌手点歌、语别点歌。消费者可根据不同的点唱方式进行歌曲选择。【拼音点歌】:点击字母按钮,输入想要演唱歌曲的拼音首字母,输入过程中系统连接数据库进行实时查找,即可列出所有符合要求的歌曲,双击歌曲名即可将该歌曲加入已点歌曲清单。【歌手点歌】:点击字母按钮,输入歌手名首字母,系统将列出所有符合要求的歌手名。单击要选择的歌手名可查看歌手图片;双击歌手名将列出该歌手所有的演唱歌曲,双击歌曲名即可将该歌曲加入已点歌曲清单。【语别点歌】:可通过选择语言,系统将列出该语言的所有歌曲,消费者便可在其中进行歌曲查找。双击歌曲名即可将该歌曲加入已点歌曲清单。图2-13,2-14,2-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-3 KTV点歌系统类图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 代码实现本系统编码设计采用的是Java MVC 设计模式。MVC是一种流行的软件设计模式,它把系统分为以下3个模块:1、 Model(模型),可以分为业务模型和数据模型,它们代表应用程序的业务逻辑和状态2、 View(视图),提供可交互的客户界面,向客户显示模型数据3、 Controller(控制器),响应客户的请求,根据客户的请求来操作模型,并把模型的响应结果经由视图展现给客户以下为KTV点歌系统的代码实现,由于篇幅有限,只列出编码大致框架。3.4.1访问数据库工具类 JDBCTool该系统访问数据库使用的方式是JDBC,为了方便使用,编写一个类专门用于访问Oracle数据库,该类的代码如下:public class JDBCTool staticString driverName = oracle.jdbc.driver.OracleDriver;try Class.forName(driverName); catch (ClassNotFoundException e) e.printStackTrace();public static Connection getConnection() String jdbcString = jdbc:oracle:thin:localhost:1521:ORACLE; String namesString = scott; String passsString = tiger; try return DriverManager.getConnection(jdbcString,namesString,passsString); catch (SQLException e) e.printStackTrace();return null; public static void close(ResultSet resultSet,Statement statement,Connection connection)try resultSet.close();statement.close();connection.close(); catch (SQLException e) e.printStackTrace();3.4.2 Model(模型)包3.4.2.1 歌手类 Playerpublic class Player private String nameString; private String areasString; private String addressString;public Player(String nameString, String areasString, String addressString) /构造函数 初始化歌手对象/设置歌手名、歌手地区、存储路径public String getNameString() ./获得歌手名、歌手地区、存储路径public void setNameString(String nameString) ./返回歌手信息public String toString() return nameString+ +areasString;3.4.2.2 歌曲类 Songpublic class Songprivate String songNameString;private String playerNameString;private String languageString;private String styleString;private String addressString;public Song(String songNameString, String playerNameString, String languageString, String styleString, String addressString)/构造函数 初始化歌曲对象/获得歌曲名、演唱者、歌曲语言、歌曲风格、存储路径的方法public String getSongNameString()./设置歌曲名、演唱者、歌曲语言、歌曲风格、存储路径的方法public void setSongNameString(String songNameString)./返回歌曲信息的方法public String toString() return songNameString+ +playerNameString+ +styleString+ +languageString;3.4.3 View(视图)包3.4.3.1 登录类 Playerimport tool.JDBCTool;public class Login extends JDialog implements ActionListenerprivate String strings3 = 用户名, 密码 ,包厢选择;private String strings2 = 登录,开始唱歌,收费标准,退出;private String strings=玲珑包,小包,中包,大包,商务包,总统包;private String sqlString = select adm_name,adm_password from ktv_adm;public Login()/登录界面布局public static void main(String args) /主函数 创建登录窗口对象login = new Login();/添加按钮响应事件public void actionPerformed(ActionEvent e) if (e.getSource() = jButtons0) /响应管理员【登录】按钮/连接数据库 验证用户名、密码是否正确if (e.getSource() = jButtons1) /响应消费者【开始唱歌】按钮/进入主操作界面if(e.getSource() = jButtons2) /响应【包厢收费】按钮 显示收费信息JOptionPane.showMessageDialog(this, 玲珑包:30/小时n 小包:50/小时n 中包:60/小时n 大包:70/小时n商务包:100/小时n总统包:150/小时);if(e.getSource() = jButtons3) /响应【取消】/关闭登录窗口3.4.3.2 添加歌手、歌曲类 Addpackage view;public class Add extends JDialog implements ActionListener public Add() /初始化添加界面 界面布局/添加按钮响应事件public void actionPerformed(ActionEvent e) if (e.getSource() = jButtons0) /【添加歌手】 /判断添加条件是否满足JOptionPane.showMessageDialog(this, 歌手名不能为空!);.if (条件满足) /添加入歌曲库.JOptionPane.showMessageDialog(this, 添加成功!已加入歌手库);if (e.getSource() = jButtons1) /【添加歌曲】/判断添加条件是否满足.if (条件满足) /添加入歌曲库.JOptionPane.showMessageDialog(this, 添加成功!已加入歌曲库);if (e.getSource() = jButtons2) /响应添加歌手【浏览】 /获得歌手图片存放路径if (e.getSource() = jButtons3) /响应添加歌曲【浏览】/获得歌曲存放路径if (e.getSource() = jButtons4|e.getSource() = jButtons5) /【注销】/隐藏添加窗口 调出登录窗口 public void connJDBC(String sqlString) /传入查询语句,连接数据库查询 3.4.3.3 主操作界面类 Playpackage view;public class Play extends JFrame implements ActionListenerstatic Date date = new Date(); /开始计时static ArrayList mainArrayList = new ArrayList();public Play()/初始化主操作界面,界面布局 /响应按钮点击public void actionPerformed(ActionEvent e) Object eObject = e.getSource();if(eObject = jButtons0) /【分类点歌】/调出分类点歌子窗口 ;if (eObject = jButtons1) /【已点歌曲】 /调出已点歌曲子窗口if(eObject = jButtons2) /【歌曲排行】/调出歌曲排行窗口if(eObject = jButtons3) /【酒水服务】/调出酒水服务子窗口3.4.3.4 分类点歌类 ClassifySearch package view;public class ClassifySearch extends JDialog implements ActionListenerpublic ClassifySearch()/初始化【分类点歌】子窗口;界面布局 /添加按钮响应事件public void actionPerformed(ActionEvent e)Object eObject = e.getSource();if(eObject = jButtons0) /【拼音点歌】if (eObject = jButtons1) /【歌星点歌】if(eObject = jButtons2) /【语别点歌】3.4.3.5 拼音点歌类 SongSearch package view;import tool.JDBCTool;public class SongSearch extends JDialog implements ActionListenerprivate String sqlString = select son_name,pla_name,son_lag,son_type ,son_adr from ktv_song where son_short like ;private String sizesql = select count(*) sum from ktv_song where son_short like ;private ArrayList arrayList;public SongSearch() jList.addMouseListener(new MouseAdapter()/添加鼠标响应事件 双击添加歌曲进【已选歌曲】);/初始化拼音点歌界面,界面布局 . /添加按钮响应事件public void actionPerformed(ActionEvent e)Object eObject = e.getSource();if (eObject = backjButton) /【退格】,回退一格if (eObject = cleanjButton) /【清除】,清除输入框所有内容if (eObject = okjButton) /【返回】,返回主操作界面else /响应26个字母,点击一次,入库查找一次,且显示在输入框public void ConnJDBCSong(String string,String string2) throws SQLException/传入sql语句,入库查找3.4.3.6 歌星点歌类 PlayerSearch 、语别点歌类 LanguageSearch 由于歌星点歌和语别点歌的代码与拼音点歌大致相同,这里就不再赘述。详情请参照拼音点歌。3.4.3.7 歌曲排行类 Sort package view;public class Sort extends JDialog implements ActionListener/界面布局,初始化foodJList.addMouseListener(new MouseAdapter() /响应鼠标单击 弹出菜单 添加歌曲入已选歌曲);/添加按钮响应事件public void actionPerformed(ActionEvent e) if (e.getSource() = jButtons0&foodJList.getSelectedIndex() != -1) /判断是否选中歌曲,然后加入已点歌曲清单if (e.getSource() = jButtons1) /【返回】if (e.getSource() = jMenuItem&foodJList.getSelectedIndex() != -1) /【添加】3.4.3.8 酒水服务类 Serve package view;public class Serve extends JDialog implements ActionListenerpublic Serve()/初始化界面,界面布局foodJList.addMouseListener(new MouseAdapter() /响应鼠标单击 弹出菜单 添加进入购物清单 /添加按钮响应事件public void actionPerformed(ActionEvent e) if (e.getSource() = jButtons0) /【请求服务】if (e.getSource() = jButtons1) /【返回】if (e.getSource() = jButtons2) /【查看消费时间】 .JOptionPane.showMessageDialog(this, 开始时间:+s1+n+当前时间:+s2+n+消费时间:+s3);if (e.getSource() = jButtons3) /【查看包厢资费】if (e.getSource() = jMenuItem) / 添加入购买清单3.4.4 Controller(控制器)包 已点歌曲类 PlayMusicpublic class PlayMusic extends JDialog implements ActionListener,ControllerListenerpublic PlayMusic(ArrayList arrayList ) /界面布局 初始化已点歌曲界面selectJList.addMouseListener(new MouseAdapter() /响应鼠标单击 弹出菜单 进行歌曲【优先】【删除】);/实现按钮监听事件public void actionPerformed(ActionEvent e) Song song = new Song();if (e.getSource() = jMenuItems0) /【优先】if (e.getSource() = jMenuItems1) /【删除】if(e.getSource() = jButtons0) /【开始唱歌】if (myArrayList.size() = 0) /播放列表空,不能播放if (player != null) /正在播放中,不能响应else /取第一首歌播放/加入已播歌曲中/从列表中移除播放歌曲/实现播放选中歌曲 if (e.getSource() = jButtons1) /【停止】if (e.getSource() = jButtons2) /【播放】if (e.getSource() = jButtons3) /【暂停】if (e.getSource() = jButtons4) /【切歌】if (列表不为空) /播放列表中下首歌if (e.getSource() = jButtons5) /【返回】public void controllerUpdate(ControllerEvent arg0) /调用使用播放控制条public void play(Song song)/实现播放的具体功能4 系统测试本系统将用户分成管理员和消费者,由于两类用户的使用目的不同,系统测试分别对两类用户进行测试,基本功能各测试一次,最后再进行容错性测试。4.1管理员测试用例1:登录模块测试测试数据:用户名:maneger;用户密码:1;测试结果如下: 图4-1登录测试结果1 图4-2登录测试结果2测试用例2:添加歌手模块测试测试数据:歌手名:justin bieber 歌手地区:英国 歌手名缩写:JB 路径:F:java测试songjustin bieber.jpg测试结果: 图4-3 添加歌手测试结果1 图4-4 添加歌手测试结果2 图4-5 添加歌手测试结果3 图4-6 查看添加歌手测试结果测试用例3:添加歌曲模块测试测试数据:歌曲名:baby 演唱者:justin bieber 歌曲语种:英语 歌曲风格:R&B 歌曲名缩写:B 路径:F:java测试songbaby - justin bieber.mp3测试结果: 图4-7 添加歌曲模块测试结果1 图4-8 添加歌曲模块测试结果2 图4-9 查看添加歌曲测试结果4.2 消费者测试用例1:消费者包厢选择测试结果: 图4-10 包厢选择测试结果测试用例2: 拼音点歌查找歌曲测试数据:BCBYHQ(不潮不用花钱)测试结果: 图4-11 拼音点歌模块测试

温馨提示

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

评论

0/150

提交评论