版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、I 中中 原原 工工 学学 院院 二二 级级 课课 题题 实实 训训 任任 务务 书书 2011 年 6 月 13 日 学生姓名学生姓名刘丽明刘丽明学号学号200907042220 专专 业业软件开发(日文方向)软件开发(日文方向)班级班级日文日文 102 课题名称课题名称点歌系统点歌系统 课题来源课题来源中原工学院软件学院二级实践课题中原工学院软件学院二级实践课题 指导教师指导教师杜远坤杜远坤专业专业计算机科学与技术计算机科学与技术职称职称集成项目经理集成项目经理 课题说明:课题说明: 开发一个比较简单的基于 java 的点歌系统,完成对编程概念,编程方法及编程 技巧的初步了解,实现数据库与
2、编程的连接。系统主要功能还包括: 1. 用户登录:设置用户和密码(独立完成) 2. 选歌:可以根据歌手分类、歌手首字母、歌曲字数、歌曲首字母不同方式选歌 (独立完成) 3. 歌手歌曲列表:将选出的歌曲或歌手放入列表(独立完成) 播放列表:从歌曲列表中选出歌曲添加到播放列表中(参与) 承担的任务:承担的任务: 1需求分析、概要分析、详细分析及设计; 2代码编写及修改、连接数据库; 3运行及测试。 II 中中 原原 工工 学学 院院 二二 级级 课课 题题 实实 训训 任任 务务 书书 2011 年 6 月 14 日 工作进度安排:工作进度安排: 时间轴时间轴 2011-6-13 至至 2011-
3、6-28(除周(除周 日)日)负责人负责人 审审 核核 人人 任务名称任务名称 123456789101 1 12 总体进度30%62%8% 整理资料刘丽明、 马照阳 编写代码马照阳、 刘丽明 代码测试刘丽明、 马照阳 整理文档马照阳、 刘丽明 杜 远 坤 指导教师签字:指导教师签字: 2011 年年 6 月月 28 日日 实训单位意见实训单位意见 签章:签章: 年年 月月 日日 学学院院意意见见 签章:签章: 年年 月月 日日 III 中中 原原 工工 学学 院院 二二 级级 课课 题题 实实 训训 评评 审审 表表 学号学号200907042220姓名姓名刘丽明专业专业 软件开发(日文 方
4、向) 班级班级日文 102 题目题目点歌系统 指指 导导 教教 师师 评评 语语 成绩(百分制):成绩(百分制): 指导教师签名:指导教师签名: 2011 年年 6 月月 28 日日 IV 软软软软 件件件件 学学学学 院院院院 二级课题实训报告二级课题实训报告 课题名称:课题名称:点歌系统点歌系统 专专 业:业:软件开发(日文方向) 班班 级:级:日文 102 学学 号:号:200907042220 学生姓名:学生姓名:刘丽明 指导教师:指导教师:杜远坤 2011 年年 6 月月 28 日日 V 点歌系统 摘 要 本文介绍一个非常简单的点歌系统,该系统完成以下任务:1、点歌时可以按照歌星 姓
5、名或者歌曲名浏览,选中某首歌曲加入到点歌列表中;可以删除点歌列表中的某歌曲, 对点歌列表中歌曲的播放顺序进行调整。 本文描述了点歌系统的编程目的、项目背景、用户类型、运行环境、功能描述、运 行调试和各种功能的实现过程。主要阐述对项目的分析和功能的实现过程以及对本次二 级实验的心得体会。后面还会有主要源程序代码。 关键词:点歌系统;java;mysql 数据库 刘丽明:点歌系统报告 目 录 摘摘 要要.I 第第 1 章章 项目分析项目分析.1 1.1 问题描述.1 1.2 技术分析.1 1.3 工程进度计划.1 第第 2 章章 系统分析与设计系统分析与设计.3 2.1 系统分析.3 2.1.1
6、参与者.3 2.1.2 用例及用例规约.3 2.1.3 用例图.4 2.2 系统设计.5 2.2.1 顺序图.5 2.2.2 系统体系结构设计.5 2.3 数据库设计.5 2.3.1E-R 图.6 2.3.2 关系模式.6 2.3.3 表的设计.7 第第 3 章章 实现与测试实现与测试.9 3.1 登陆模块.9 3.1.1 活动图.9 3.1.2 界面.10 3.1.3 代码.10 3.1.4 测试用例.12 3.2 测试模块.12 3.2.1 活动图.12 3.2.2 界面.13 3.2.3 代码.13 3.2.4 测试用例.15 第第 4 章章 结束语结束语.20 附录附录 B: 主要源程
7、序主要源程序.23 刘丽明:点歌系统报告 1 第 1 章 项目分析 1、点歌系统是一种的信息管理系统(MIS)其开发主要包括后台数据库的建立和维护 以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强,数据 安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。 2、点歌系统是对歌曲进行统一的管理,能够录入歌曲的基本信息,在操作上能够完 成诸如添加、修改、删除、按各种条件进行查询的功能;能够录入歌手的基本信息,在 操作上能够完成诸如添加、修改、删除、按各种条件进行查询的功能;设置密码及修改 等方面的工作,基本满足日常事务的需要。 经过以上分析,本系统使用 Ecli
8、pse 作为界面和功能开发工具和 mysql 数据库作为 后台数据库,利用其提供的各种面向对象的开发工具进行界面和数据库开发。软件过程结 合了快速原型模型与增量模型的优点:首先在短时间内建立系统应用原型,然后,对初 始原型系统进行迭代,不断修正和改进,直到形成可行系统。 3、 各种功能模块独立性强,可以根据需要任意组合。 4、 具有清新简洁方便的界面,操作方便。 1.1 问题描述 在系统分析完成之后,我们便开始分工操作,我主要担负了界面设计和部分功能实 现的完成工作。界面用 ve 插件做起来并不困难,只是颜色的搭配有些差强人意;功能的 实现着实另我遇到不少困难。我选择了列表(JList)作为盛
9、放歌曲和歌手的容器,但是 我对列表并不熟悉,开始的时候连歌曲都不能加入,在 API 中不断的研究,终于了解了 列表的使用方法;从数据库表中选出歌曲添加到列表所用的方法有很大的讲究,方法编 写的简单,调用时便好用,例如:方法中填一个参数便可以少写很多的语句,该用 for 循环时便不要只因为一个字符串不同而写好多的重复语句,有些方法完全可以与另外一 个方法合并;同一个类之间和不同类之间数据的传递,该怎样操作. 1.2 技术分析 经过以上分析,本系统使用 Eclipse 作为界面和功能开发工具和 mysql 数据库作为 后台数据库,利用其提供的各种面向对象的开发工具进行界面和数据库开发。软件过程结
10、合了快速原型模型与增量模型的优点:首先在短时间内建立系统应用原型,然后,对初 始原型系统进行迭代,不断修正和改进,直到形成可行系统。 刘丽明:点歌系统报告 2 1.3 工程进度计划 第 17 周(11-06-1311-06-19): 需求分析,概要设计,设计数据库、不断完善数据库的结构; 第 18 周(11-06-2011-06-25): 根据设计的数据库的需要设计、并作出相应的界面。并且做到与数据库的链接; 第 19 周(11-06-2611-06-28): 不断完善整个项目系统的结构和功能,填写报告。 刘丽明:点歌系统报告 3 第 2 章 系统分析与设计 点歌系统的设计,界面简单、清晰明了
11、,系统包含数据库、大量的歌曲信息,为用 户点歌提供了更多的选择条件它的主要功能包括:1、歌曲的查询与添加,用户可以用几 种不同的方式从数据库中调出所包含的歌曲,选中自己喜欢的歌曲并将其添加至播放列 表。2、对播放列表的操作,它为用户提供了对列表排序、删除等功能。 2.1 系统分析 歌曲类的设计 点歌系统中歌曲类的设计是根据数据库歌曲表来建立的,将数据库中的每一个字段 声明为一个变量,并赋予每个变量 get 和 set 方法。 1)方法类的计 点歌系统中的方法包括对数据库的操作方法和其它必须的方法,系统中将它们全部 放在一个类中方便程序的调用。 2)界面类的计 本系统中共有四个界面,为方便界面之
12、间的连接,将后三个界面放在一个类。 2.1.1 参与者 组长:马照阳 组员:刘丽明 2.1.2 用例及用例规约 用例包括: 1、按照歌手首字母、歌曲首字母和歌曲字数进行索引 2、按照所属国籍进行索引 3、按照性别和组合进行索引 4、将歌曲添加到列表和将歌曲从列表中删除 5、歌曲的播放和暂停以及跳到当前歌曲的上一首和下一首 6、输入房间号及密码进入点歌系统 刘丽明:点歌系统报告 4 按照功能模块逐个描述: 表 2.1 用例名称用户登录 参与者用户 功能描述用户进入点歌系统 前置条件供登录的用户信息由系统自动提供 基本事件流1)用户通过输入房间号和密码,单击“进入”按钮,进入系统 备选事件流若输入
13、的用户名或密码错误时,单击“登录”按钮,将不能进入系统 后置条件如果执行成功,登陆界面自动消失 业务规则用户名,密码不能为空 表 2.2 用例名称选择选歌方式 参与者用户 功能描述用各种选歌方式选择的同时数据库及歌手、歌曲列表上的数据也相应 发生改变 前置条件系统数据库中存放有歌曲表 基本事件流1)用户通过单击选歌方式的不同按钮从而进行不同不同操作,数据 库也随着更新。 2)单击“列表”按钮,出现列表界面 后置条件如果用例执行成功,则此数据库信息也发生相应变化。如果执行不成 功,系统状态不变。 表 2.3 用例名称对歌手和歌曲列表进行操作 参与者用户 功能描述选择歌手列表中的某歌手,歌曲列表中
14、会出现相关的歌曲;选择某歌 曲添加到播放列表中 前置条件某歌手的歌曲信息都存放于系统数据库中 基本事件流1)双击被选择的歌手或使用右键弹出式菜单,此歌手的的歌曲便可 进入歌曲列表中 2)选择歌曲列表中的某歌曲,双击或使用弹出菜单,此歌曲便可进 入播放列表 3)单击播放列表按钮可进入播放列表界面,数据库也会发生相 应变化 刘丽明:点歌系统报告 5 备选事件流E-1:若播放列表中已有被选中的歌曲,系统会自动删除已有歌曲, 将被选中歌曲添加到列表的尾部 后置条件如果用例执行成功,该数据库中的播放表会发生相应变化。如果执行 不成功,系统状态不变。 表 2.4 用例名称对播放列表的操作 参与者用户 功能
15、描述用户对播放列表歌曲进行播放、暂停、删除等操作 前置条件播放列表中的歌曲存放于系统数据库中 基本事件流1)单击“播放”按钮,进行播放 2)单击“删除”按钮,将歌曲从列表和数据库表中删除 3)单击“上一曲” ,播放当前曲目的上一曲 4)单击“下一曲” ,播放当前曲目的下一曲 备选事件流E-1:若当前曲目为第一首时,单击“上一曲”系统会给出相应提示 E-2:若当前曲目为最后一首时,单击“下一曲”系统会给出相应提 示 后置条件如果用例执行成功,当前曲目改变。如果执行不成功,系统状态不变。 2.2 系统设计 点歌系统的设计,界面简单、清晰明了,系统包含数据库、大量的歌曲信息,为用 户点歌提供了更多的
16、选择条件它的主要功能包括:1、歌曲的查询与添加,用户可以用几 种不同的方式从数据库中调出所包含的歌曲,选中自己喜欢的歌曲并将其添加至播放列 表。2、对播放列表的操作,它为用户提供了对列表排序、删除等功能。 2.2.1 系统体系结构设计 歌曲类的设计 点歌系统中歌曲类的设计是根据数据库歌曲表来建立的,将数据库中的每一个字段 声明为一个变量,并赋予每个变量 get 和 set 方法。 1)方法类的设计 刘丽明:点歌系统报告 6 点歌系统中的方法包括对数据库的操作方法和其它必须的方法,系统中将它们全部 放在一个类中方便程序的调用。 2)界面类的设计 本系统中共有四个界面,为方便界面之间的连接,将后三
17、个界面放在一个类。 3)数据库设计 在整个点歌系统中,数据库是一个重要的环节,它包含了歌曲的各种信息:歌名、 歌手、地区等。用户从数据库中调出所需信息,并对其进行相应的操作。已经过时的歌 曲,此操作为确保歌曲的全面性、时效性有至关重要的作用。 2.3 数据库设计 在整个点歌系统中,数据库是一个重要的环节,它包含了歌曲的各种信息:歌名、 歌手、地区等。用户从数据库中调出所需信息,并对其进行相应的操作。已经过时的歌 曲,此操作为确保歌曲的全面性、时效性有至关重要的作用。 2.3.1E-R 图 图 2.1 2.3.2 关系模式 表 2.5 IdNameSinger 3等你等到我心痛张学友 5你好毒张
18、学友 119甜甜的五月天 121自由飞翔凤凰传奇 122我和草原有个约会凤凰传奇 123发如雪周杰伦 Song Id Name Style Sex Singer Playing Id Singer Name 刘丽明:点歌系统报告 7 表 2.6 IdNameSingerStyleSex 1发如雪周杰伦华语男 12想和你去吹吹风张学友华语男 21天意刘德华华语男 38不死之身林俊杰华语男 52无情的温柔郑源华语男 69暖暖梁静茹华语女 71如果这就是爱情张靓颖华语女 87棋子王菲华语女 97城市之窗张韶涵华语女 105你最近好吗she华语组合 115天蓝蓝凤凰传奇华语组合 120知足五月天华语组
19、合 121爱上你by2华语组合 124海阔天空beyond华语组合 130我们的爱飞儿乐团华语组合 133beat it迈克尔 杰克逊欧美男 138never say neverjustin bieber欧美男 139not afraideminem欧美男 1141oh africaakon欧美男 168命运rain日韩男 186time after time仓布麻衣日韩女 191说出愿望吧少女时代日韩组合 2.3.3 表的设计 歌曲(id,歌曲名,歌手名,歌曲类型,歌手类型) 正在播放歌曲(id,歌曲名,歌手名) 表 2.7 playing 表的对象浏览 表 2.8 song 表的对象浏览
20、名称类型空默认值 id Int(11) no 空 namevarchar(255)yes 空 singervarchar(255)yes 空 刘丽明:点歌系统报告 8 名称类型空默认值 id Int(11) no 空 namevarchar(255)yes 空 singervarchar(255)yes 空 stylevarchar(255)yes 空 sexvarchar(255)yes 空 刘丽明:点歌系统报告 9 第 3 章 实现与测试 对于歌曲的基本信息,每天都在进行不同的变化,所以歌曲的更新比较难实现。另 外随着计算机网络的持续发展,无论是工作、学习还是生活,将会越来越多地融入到流
21、动的比特中,人们的工作节奏在不断加快,需要快捷的信息来源,并对此做出反应。因 此,无论是从目前的现状来看,还是面向未来,一个功能完备的点歌系统的开发都是有 必要的。 它可以供人们娱乐,忘掉烦恼。本系统可以继续改善,比如数据库的建立,根据实际情 况,使用原型法,即以少量代价快速地构造一个可执行的软件系统模型。是用户和开发 人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型做连续的精化, 将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成了最 终产品。运行程序前,必须保证数据库能连接上。程序中专门有一个类是连接数据库的 类,其中驱动器、数据库名称、还有密码必须与所
22、建的数据库保持一致才能连接上。这 一点可以先检查,可以将查询数据库的方法类先运行,这样避免了范围广而难以调试。 3.1 登陆模块 点歌系统,用到商业上,要根据房间号做相关操作,例如:收费、做记录、查看使 用房间的时间。所以又加上了程序自动给出房间号和密码的相关操作。 3.1.1 活动图 图 3.1 歌手索引 刘丽明:点歌系统报告 10 3.1.2 界面 图 4.1 包括两个文本框、一个界面连接按钮、相关文字标签和两个盛放图片的标签。 图 3.2 登陆界面 3.1.3 代码 两个随机变量 room、password room=(int)(Math.random()*1000); password
23、=(int )(Math.random()*100); 一旦运行程序,程序可自动给出对话框显示房间号和密码: JOptionPane.showMessageDialog(nullnull ,“房间号:+String.valueOf(room)+n+密码:+String.valueOf(password); ,点击图 3.1 中的“ 进入”按钮可发生以下事件: if(tf1.getText().equals(String.valueOf(room) new 点歌(); “点歌“是另外一个类的类名。如果输入错误系统会给出相应的提示: else JOptionPane.showMessageDial
24、og(nullnull,房间号不存在,或密码错误); 这里运用了 connection 类,声明四个变量分别是数据库驱动器、数据库地址、数据 刘丽明:点歌系统报告 11 库用户和用户密码。它们会随着不同的电脑而发生变化,因此每次运行前必须先核对这 几项与数据库相一致; String DBDriver=org.gjt.mm.mysql.Driver; String DBURL=jdbc:mysql:/localhost:3306/music; String DBUser=root; String DBPassword=; Connection conn=null; Class.forName(D
25、BDriver); conn=DriverManager.getConnection(DBURL,DBUser,DBPassword); 此方法为查询不同字数的歌曲。首先用 Connection 实现数据库的连接,用 PreparedStatement 盛放查询语句,便于设置查询语句中的变量,此处用了 for 循环设置 变量 s1;用 ResultSet 盛放查询结果,便于得到查询结果的每一个字段;声明一个 List 集合将查询结果全部加入后,转存到一个长度与之相同的字符数组中;最后关闭各种连 接,返回字符数组以便向 JList 中添加元素。代码如下: public String search
26、SongByNumber(int key) Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; String str=null; String sql=null; String s1=; List list=new ArrayList(); try conn=DBUtil.getConnection(); sql=select name, singer from song where name like?; ps=conn.prepareStatement(sql); for(int i=0;ikey;i+)
27、s1+=_; ps.setString(1, s1); rs=ps.executeQuery(); while(rs.next() Song s=new Song(); s.setName(rs.getString(1); s.setSinger(rs.getString(2); list.add(s); str=new Stringlist.size(); for(int i=0;ilist.size();i+) stri=list.get(i).getName()+ -+list.get(i).getSinger(); catch (SQLException e) e.printStack
28、Trace(); 刘丽明:点歌系统报告 12 finally DBUtil.close(rs, ps, conn); return str;/查询song表中不同字数的歌曲 3.1.4 测试用例 图 3.3 图 3.4 歌曲操作 3.2 测试模块 此为点歌系统的核心部分,它实现了用户搜歌索引、播放列表等功能,可以使用户 根据自己所喜好的歌曲的歌手进而方便快捷的找到自己所喜欢的歌曲;浏览歌曲列表; 试听歌曲。如果未收集到该列表中,用户仍然可以根据自己的喜好,加载歌曲,在加载 之后就可以正常听歌了。 刘丽明:点歌系统报告 13 3.2.1 活动图 图 3.5 歌手和歌曲列表 3.2.2 界面 图
29、4.2 包括歌手按钮、界面连接按钮、表示查询方式的 JComboBox 和相关的标签 图 3.6 歌手索引 刘丽明:点歌系统报告 14 图 3.6 包括两个 JList 列表、界面连接按钮和相关标签。 图 3.7 歌曲列表 图 3.7 包括盛放当前歌曲的文本框、一个播放列表、对列表的操作按钮、界面连接按 钮和相关标签。 图 3.8 播放列表 刘丽明:点歌系统报告 15 3.2.3 代码 以查询所有华语男歌手为例,按钮为图 4.2 中的华语后面的“男歌手” 。首先添加事 件,按钮事件、鼠标点击事件、鼠标按下事件都可以,此处因为要做到双击添加所以选 择鼠标点击事件。 用 if 语句判断是否点了两次
30、鼠标,如果点击了两次,即可添加相应的歌手到歌手列 表中。m.searchSinger(1)i中,m 是方法类的实例对象:Methods m=new Methods(); searchSinger()是 m 之中的一个方法可以按照参数(此处为 1)从数据库中查询出相关的歌 手。Listmodel3 是图 3 中的歌手列表的存储模型,存储方法如下:jList3 = new JList(listModel3); 。具体的代码如下: jbtt4 = newnew JButton(); jbtt4.setText(男歌手); jbtt4.addMouseListener(newnew java.awt.
31、event.MouseAdapter() publicpublic voidvoid mouseClicked(java.awt.event.MouseEvent e) listModel3.clear(); forfor(intint i=0;im.searchSinger(1).length;i+) listModel3.addElement(m.searchSinger(1)i); ); 以按歌曲首字母查询歌曲为例Firstletter为包含26个英文字母的字符数组:String firstLetter=a,b,c,d,e,f,g,h,i,j, k,l,m,n,o,p,q,r,s,t,u
32、,v,w,x,y,z;首先将其添 加到JComBoBox中;用JComBoBox中的相关方法得到被选单元项并转化为字符串ss;再将 ss传到 方法 searchByFristLetter()中可以查询出所有歌曲首字母与该字母相同的歌 曲。 详细代码如下: jComboBox3 = new JComboBox(firstLetter); jComboBox3.addItemListener(new java.awt.event.ItemListener() public void itemStateChanged(java.awt.event.ItemEvent e) int item=jCom
33、boBox3.getSelectedIndex(); String ss=String.valueOf(jComboBox3.getItemAt(item); listModel2.clear(); for(int i=0;im.searchByFristLetter(ss, 1).length;i+) listModel2.addElement(m.searchByFristLetter(ss, 1)i); 刘丽明:点歌系统报告 16 以将歌手的相关歌曲添加到歌曲列表中为例,首先添加鼠标事件,利用 JList 中的 相关方法获得歌手列表中被选列表单元的索引:item=jList3.getSe
34、lectedIndex(); 将歌曲列表的存储模型清空,由 listModel3.get(item)获得列表单元作为 searchBySinger()的参数选取该歌手的相关歌曲;最后将查询出的歌曲添加到歌曲 列表的存储模式中。 jList3.addMouseListener(new java.awt.event.MouseAdapter() public void mouseClicked(java.awt.event.MouseEvent e) int item=jList3.getSelectedIndex(); if (e.getClickCount() = 2) listModel2.
35、clear(); for(inti=0;i); jbtt.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) jFrame1.setVisible(false); jFrame1.setVisible(true); ); 也是按钮事件点击按钮后将另一个类实例化便可实现。代码如下: bt_进入 = new JButton(); 刘丽明:点歌系统报告 18 bt_进入.setText(进入); bt_进入.addActionLi
36、stener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new 点歌(); 点歌为另一个类的类名 3.2.4 测试用例 图 3.9 歌手和歌曲列表 刘丽明:点歌系统报告 19 图 3.10 歌曲的操作 刘丽明:点歌系统报告 20 第 4 章 结束语 在系统分析完成之后,我们便开始分工操作,我主要担负了界面设计和部分功能实 现的完成工作。界面用ve插件做起来并不困难,只是颜色的搭配有些差强人意;功能的 实现着实另我遇到不少困难。我选择了列表(JList
37、)作为盛放歌曲和歌手的容器,但是 我对列表并不熟悉,开始的时候连歌曲都不能加入,在API中不断的研究,终于了解了列 表的使用方法;从数据库表中选出歌曲添加到列表所用的方法有很大的讲究,方法编写 的简单,调用时便好用,例如:方法中填一个参数便可以少写很多的语句,该用for循环 时便不要只因为一个字符串不同而写好多的重复语句,有些方法完全可以与另外一个方 法合并;同一个类之间和不同类之间数据的传递,该怎样操作. 这次事件课题设计由我们2个共同完成。课题组的各项活动中,我们课题组成员都能 以积极的态度、饱满的热情投入到工作中去,每人都能根据自己的任务认真做好课题研 究,完成平时资料的收集和整理工作。
38、能围绕科研课题还撰写了研讨课教案,教学反思, 课题总结。但由于时间有限,及个人经验和能力的原因,所以本系统的功能仍然不是十 分完善,可以进一步完善的地方仍有很多。例如,数据库容量的限制,使得再次添加信 息。 在本次程序所使用的主要工具是MyEclipse 8.5、Eclipse(ve插件)以及所需的 MySQL数据库连接。我们主要是各个部分独立性比较高,可用领域比较广;具有很好的可 扩展性,不仅可以适用于学生的机房管理系统,也可以将它使用于公司的考勤制度等方 面。通过本次系统的设计开发,不断的进行调试,使系统运行相当良好! 总结起来本次课题主要有以下几个方面的宝贵经验和深刻体会:一是:本次课题
39、中 遇到不少的难题,通过网络资源、及咨询老师意见等各种途径解决问题,提高了个人自 学的能力,有效的利用网络资源。二是:要讲究条理 如果你不想让自己在紧急的时候手 忙脚乱,就要养成讲究条理性的好习惯。 “做什么事情都要有条理, ”这是我给大家的忠 告。其它的工作也一样,讲究条理能让你事半功倍。三是:团队合作精神日趋更为重要, 这对将来的工作和发展都是有很大影响。本次时间课题设计是一次重要的经历,不仅锻 炼实践了自己的理论基础,应用所学到的知识,发挥在专业方面的综合素质,而且磨砺 了一个人的为人处事的正确态度。 这些天来,虽然付出了不少汗水,也感觉有些辛苦,但从中我意志力得到了不少的 磨练也感受到
40、了工作的快乐。 这一次的实践课题使我明白;大学生只有通过自身的不断努力,拿出百尺竿头的干 刘丽明:点歌系统报告 21 劲,胸怀会当凌绝顶的状态,不断提高自身的综合素质,才能在人才高地上站稳脚跟, 才能扬起理想的风帆,驶向成功的彼岸。实践课题已经接近尾声,在这次实践中,不仅 丰富了我们的实践经验,还提高了我们的团队合作能力,更巩固了我们的专业技能。这 次实践课题义在深远,对我们的帮助享用一生。 刘丽明:点歌系统报告 22 参考文献 1Y.Daniel Liang . Java 语言程序设计基础篇 M:北京.机械工业出版社.2011.6 2Y.Daniel Liang . Java 语言程序设计进
41、阶篇 M:北京.机械工业出版社.2011.6 3 李兰友 杨晓光. Visual C#.NET 程序设计M 北京:清华大学出版社,2011.3 4 韩玉民. 计算机专业英语教学研究与实践 J.计算机与信息技术,2011.5 刘丽明:点歌系统报告 23 附录 B: 主要源程序 歌曲类 (1) package 连接数据库; public class Song private int id; private String name; private String singer; private String style; private String sex; (2) package 连接数据库;
42、public class Playing private String id; private String name; private String singer; 其中每个类中的每个字段都有set和get方法 2.连接数据库类 包名: 连接数据库; 类名: DBUtil 方法: public static Connection getConnection() String DBDriver=org.gjt.mm.mysql.Driver; String DBURL=jdbc:mysql:/localhost:3306/music; String DBUser=root; String DB
43、Password=; Connection conn=null; try Class.forName(DBDriver);/连接数据库 conn=DriverManager.getConnection(DBURL,DBUser,DBPassword); catch (Exception e) e.printStackTrace(); return conn; public static void close(PreparedStatement ps,Connection conn) try ps.close(); conn.close(); catch (SQLException e) e.p
44、rintStackTrace(); /关闭连接 public static void close(ResultSet rs,PreparedStatement ps,Connection conn) try rs.close(); ps.close(); conn.close(); catch (SQLException e) 刘丽明:点歌系统报告 24 e.printStackTrace(); /关闭连接 2.方法类 数据库操作方法类 包名:连接数据库 类名:methods 方法: public void insertp(int id,String name,String singer) C
45、onnection conn=null; Statement st=null; try conn=DBUtil.getConnection();/连接数据库 st=conn.createStatement();/创建查询语句 String sql=insert into playing(id,name,singer) values(+id+, +name+,+singer+); st.executeUpdate(sql);/执行查询语句 catch (SQLException e) e.printStackTrace(); finally try st.close(); conn.close(
46、);/关闭相关的连接 catch (SQLException e) e.printStackTrace(); /向playing表中插入歌曲信息 /删除(deletep()与插入相似只是查询语句不同删除的方法sql语句为sql=delete from playing where name=+name+。 public String searchAllp() Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; String str=null; List list=new ArrayList();/创建一个list
47、放playing表中的数据 try conn=DBUtil.getConnection(); String sql=select * from playing; ps=conn.prepareStatement(sql); rs=ps.executeQuery(); 刘丽明:点歌系统报告 25 while(rs.next() Playing p=new Playing();/得到查询结果 p.setId(rs.getString(1); p.setName(rs.getString(2); p.setSinger(rs.getString(3); list.add(p); str=new St
48、ringlist.size(); for(int i=0;ilist.size();i+) stri=list.get(i).getName()+ -+list.get(i).getSinger(); /将list中的数据全部转化成字符数组然后返回 catch (SQLException e) e.printStackTrace(); finally DBUtil.close(rs, ps, conn); return str;/查询所有playing表中的歌曲 /查询song表中的所有歌曲(searchAlls())与查询playing表中的所有歌曲方法相同,只用将所有 的playing类中
49、的字段改成song类中的字段。 public String searchSinger(int key) Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; String str=null; String sql=null; List list=new ArrayList(); try conn=DBUtil.getConnection(); if(key=1) sql=select distinct singer from song where style=华语 and sex=男; if(key=2) sql
50、=select distinct singer from song where style=华语 and sex=女; if(key=3) ps=conn.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next() Song s=new Song(); s.setSinger(rs.getString(1); 刘丽明:点歌系统报告 26 list.add(s); str=new Stringlist.size(); for(int i=0;ilist.size();i+) stri=list.get(i).getSinger();
51、catch (SQLException e) e.printStackTrace(); finally DBUtil.close(rs, ps, conn); return str;/查询song表中不同分类的歌曲 /省略号表示还有其他的歌曲类型。根据歌曲的字数查询歌曲(searchSongByNumber(int key))与 以上方法相似,只需改变查询语句:sql=select name, singer from song where name like?; 然后用for循 环 for(int i=0;i=all(select id from playing);返回 String id;
52、public String searchByFristLetter(String key ,int key1) String str=null; List list=new ArrayList(); if(key1=1) for(int i=0;iseachName().length;i+) if(CnToSpell.getFirstSpell(seachName()i).equals(key) list.add(seachName()i); if(key1=2) for(int i=0;iseachSinger().length;i+) if(CnToSpell.getFirstSpell(
53、seachSinger()i).equals(key) /调用汉语转拼音类中的方法 list.add(seachSinger()i); 刘丽明:点歌系统报告 27 str=new Stringlist.size(); for(int i=0;ilist.size();i+) stri=list.get(i); return str; /得到歌曲或歌手字符串的首字母 public String splitString(String s) String s1=new String2; s1=s.split(-); return s1; /分割字符串 汉语转化拼音方法类 public class C
54、nToSpell private static LinkedHashMap spellMap = null; static if (spellMap = null) spellMap = new LinkedHashMap(400); initialize(); CnToSpell() private static void spellPut(String spell, int ascii) spellMap.put(spell, new Integer(ascii); private static void initialize() spellPut(a, -20319); spellPut
55、(ai, -20317); . /从a到z之间的所有拼音 spellPut(zun, -10256); spellPut(zuo, -10254); public static int getCnAscii(char cn) byte bytes = (String.valueOf(cn).getBytes(); if (bytes = null | bytes.length 2 | bytes.length 0 if (ascii -10247) /不知道的字符 return null; Set keySet = spellMap.keySet(); Iterator it = keySet
56、.iterator(); String spell0 = null; ; String spell = null; int asciiRang0 = -20319; int asciiRang; while (it.hasNext() spell = (String) it.next(); Object valObj = spellMap.get(spell); if (valObj instanceof Integer) asciiRang = (Integer) valObj).intValue(); if (ascii = asciiRang0 else spell0 = spell;
57、asciiRang0 = asciiRang; return null; 刘丽明:点歌系统报告 29 public static String getFullSpell(String cnStr) if (null = cnStr | .equals(cnStr.trim() return cnStr; char chars = cnStr.toCharArray(); StringBuffer retuBuf = new StringBuffer(); for (int i = 0, Len = chars.length; i Len; i+) int ascii = getCnAscii(
58、charsi); if (ascii = 0) /取ascii时出错 retuBuf.append(charsi); else String spell = getSpellByAscii(ascii); if (spell = null) retuBuf.append(charsi); else retuBuf.append(spell); / end of if spell = null / end of if ascii = -20400 / end of for return retuBuf.toString(); public static String getFirstSpell(
59、String cnStr) if(cnStr.substring(0, 1).equals(沣)return f; if(cnStr.substring(0, 1).equals(骊)return l; if(cnStr.substring(0, 1).equals(杈)return c; if(cnStr.substring(0, 1).equals(阿)return e; if(cnStr.substring(0, 1).equals(怡)return y; if(cnStr.substring(0, 1).equals(灞)return b; else return getFullSpe
60、ll(cnStr).substring(0, 1); public static int getKey(String str) return +getFirstSpell(str).charAt(0)-97; 3.界面类 登陆界面类 包名 界面: 类名 进入: 刘丽明:点歌系统报告 30 private JTextField getTf1() private JButton getBt_进入() if (bt_进入 = null) bt_进入 = new JButton(); bt_进入.setText(进入); bt_进入.addActionListener(new java.awt.eve
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美菜调度主管述职报告
- 初中英语教案反思
- 彩色的象教案反思
- 互联网的组成说课稿
- 和许多小班说课稿
- 书店安全消防施工合同
- 数码俱乐部会员停车场地租赁合同
- 珠宝公司配电房安装协议
- 精密仪器顾问合同
- 交通枢纽供暖设备安装合同
- 大宇迷你破壁机说明书
- 金属非金属矿山矿山法律法规
- 王慧文清华大学《互联网产品管理课》
- Unit3 Lesson 13 At School (教学设计)-2022-2023学年英语四年级上册-冀教版(三起)
- 圆的周长计算练习公开课一等奖市赛课一等奖课件
- 初中优秀班主任工作经验交流
- TOEFL阅读100篇附答案
- 湘教版七年级地理上册期中考试试卷分析
- QC提高市政闭水试验质量合格率
- 人教版九年级化学教案(全册)
- TD-T 1041-2013 土地整治工程质量检验与评定规程
评论
0/150
提交评论