)在本包下创建一个W类,用来存放一个之母的属性,并设置其get,set函
数和有参数的构造函数,以及hashCode()、equals(Object obj)和toString()函数,使用快捷生成即可。
2.1.5 字母沿着Y轴方向下落(按照自己的速度)
创建一个数据对象,让字母的各个属性都随机的变换,即X坐标、字体大小、
下落速度、字母颜色等等随机变换。
public void run() {
w.setWy(w.getWy()+w.getWspeed()); //字符按照自己的速度下落 if(w.getWy()>=fh){ //判断是否落到游戏界面的外部 }
w = null ; //自动清空该字符
wp.getW();//调用创建字符方法 创建一个新字符 score-=10 ; //减分}
WP.this.repaint() ; //执行重画
}, 0, 100); //程序启动 立即执行该任务并每100毫秒执行一次 2.1.6 实现积分操作
if(w2!=null){ //判断拿到的字符对象是否为空防止出现空指针
//判断所按键的字符是否与显示的字符相同
if((e.getKeyChar()+\"\").equals(words[w2.getWindex()])){ //如果相同就将该字符去除 并重新创建一个
WordGame.this.w = null ;
//调用自定义面板类中的创建一个字符的方法
wp.getW(); score += 10 ;//加分
WordGame.this.repaint(); //执行重画方法}
2.2 实验结果
如图2.1所示为打字游戏正常图,如果输入的字符与下落的字符一致,则会进行加分,如果输入的字符与下落的字符不一致,则会进行减分操作,按空格键
5
《达内JAVA工程实训报告》
就可以结束游戏。
图2.1 打字游戏运行图
3 实例2 弹弹球游戏
进行了前面的计时器和打字游戏的编写,对Java编程有了更进一步的认识
了,为此完成一个弹弹球的游戏,弹弹球游戏是将前面的所讲的知识全部集合在一起。在弹弹球游戏实例中,需要创建一个TTQGame类;实例要新建一个窗体,所以必须继承一个 JFrame 对象,而且还要用到键盘监听接口KeyListener。
3.1 实验步骤
3.1.1 JFrame创建
在TTQGame ()构造方法中添加如下代码,既可创建一个窗体: this.setUndecorated(true);// 设置是否显示边框 this.setAlwaysOnTop(true);// 设置窗口显示在最前端
this.getContentPane().setBackground(Color.BLACK);// 设置窗口内容面板的背
景色
this.setSize(400, 600);// 设置窗口大小
this.setLocationRelativeTo(null);// 设置相对位置
3.1.2 创建面板并固定
在TTQGame类中新建一个类TTQPanel作为面板,所以TTQPanel类需要继承
一个JPanel对象,创建好面板后需要在窗体中固定,即在TTQGame ()构造方法
6
《达内JAVA工程实训报告》
中声明一个TTQPanel对象为ttqp,然后调用this.add(ttqp);即可将面板固定到窗体中。
class TTQPanel extends JPanel implements Serializable//创建面板 TTQPanel ttqp= new TTQPanel ();// 创建面板的纸张对象 this.add(ttqp);// 固定纸张
3.1.3 设置键盘监听接口KeyListener
在WordGame()构造方法中添加如下代码,即可完成键盘的监听,这种为内部
类的实现,键盘监听也可以使用外部类来实现。
this.addKeyListener(new KeyListener() {// 给当前窗口添加键盘监听事件
});
public void keyTyped(KeyEvent e) {} public void keyReleased(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}//实现需要监听的键盘按钮
3.1.4 创建小球对象和添加挡板对象
在TTQGame类中创建小球和挡板对象,即创建小球的属性和挡板的属性,其属性为:X,Y坐标,宽度,长度,方向,颜色等等。
public void paint(Graphics g) {
}
super.paint(g);
g.setColor(Color.BLACK); g.fillOval(bx, by, bw, bh); g.setColor(Color.RED); g.fillRect(rx, ry, 200, fh-ry);
3.1.5 小球运动
在小球运动过程中,其运动方向为方向总共四种:right_down(右下),right_up(右上),left_down(左下),left_up(左上),如果要改变小球的运动方向,只要改变小球的坐标即可。 3.1.6 球撞墙之后反弹
小球在运动过程中撞墙,则会反弹,其运动约束设置为:
7
《达内JAVA工程实训报告》
如果球从左上下落,若碰到下壁则向右上反弹,若碰到右壁,则向左下反弹 如果球从右上下落,若碰到下壁则向左上反弹,若碰到左壁,则向右下反弹 如果球从左下上浮,若碰到上壁则向右下反弹,若碰到右壁,则向左上反弹 如果球从右下下落,若碰到上壁则向左下反弹,若碰到左壁,则向右上反弹 3.1.7 小球遇到挡板后继续反弹,否则 GAME OVER !
if(by + bh >= fh-block_h){
if(bx+bw/2>=block_x && bx+bw/2<=block_x+block_w){
if(direction.equalsIgnoreCase(\"right_down\"))//判别方向 { direction = \"right_up\" ;//反弹方向 }else{ direction = \"left_up\" ; //反弹方向}
}else{
JOptionPane.showMessageDialog(ttqp, \"GAME OVER !\噩耗\JOptionPane.DEFAULT_OPTION);//弹出框提示游戏结束
System.exit(0); }}
3.2 实验结果
如图3.1所示为弹弹球游戏正常图,如果小球撞击墙壁就会进行反弹操作,当小球撞击挡板也会进行反弹操作,如果小球下落没有撞击挡板,则游戏结束,按空格键就可以结束游戏。
如图3.1 弹弹球游戏运行图
8
《达内JAVA工程实训报告》
4 实例3 贪吃蛇游戏
在完成弹弹球游戏后,进行贪吃蛇游戏是为了掌握在弹弹球中方向的控制,
其实验步骤与弹弹球相似,首先要创建窗口,然后在创建面板,固定面板。
4.1 实验步骤
(1) JFrame创建 (2) 创建面板并固定
(3) 设置键盘监听接口KeyListener
(4) 加载数据(采用面向对象的思想,把整条蛇作为一个大的对象,把蛇的身体元素看成多个对象)(容器请使用 LinkedList) (5) 让数据对象动起来(去掉尾部 添加头部) (6) 控制数据对象运动的方向 (7) 随机产生一个豆子
(8) 数据对象(贪食蛇)吃豆子并长长 (9) 数据对象撞墙 GAME OVER
(10)贪食蛇不能咬到自己的身体,贪食蛇不能180度掉头,否在 GAME OVER 。
4.2 实验结果
如图4.1和4.2所示为贪吃蛇游戏运行图,其使用上下左右按键对贪吃蛇进
行控制,使其能够吃到小豆子。
图4.1 贪吃蛇游戏运行图
9
《达内JAVA工程实训报告》
图4.2 贪吃蛇撞墙运行图
5 实例4 女装店管理系统(销售信息管理模块)
5.1 模块功能描述
销售信息管理模块具有销售记录添加、销售信息修改、销售信息删除、销售
信息查询四个功能,这个模块是为了记录顾客在女装店的所有消费,同时也记录了服装的销售信息,这能更加方便的进行信息的管理。
5.2 销售信息管理模块 ER图
会员实体具有会员编号、账号、密码、性别、联系电话、姓名等属性;商品
实体具有商品编号、名称、尺寸、数量、颜色、价格等属性;销售记录实体具有编号、销售记录编号、买方姓名、产品名称、买卖时间、买卖数量、买卖颜色、买卖尺寸大小、买卖价格等属性。如图4.1所示
账号编号姓名1编号记录编号买方姓名买卖颜色买卖价格销售记录操作N操作N商品名称买卖时间买卖数量商品尺寸1密码会员性别联系电话名称编号尺寸商品数量颜色价格图5.1 销售信息管理模块E-R图
10
《达内JAVA工程实训报告》
5.3 数据字典
5.3.1 数据项 a)会员实体属性项
根据E-R图能够得到会员编号、账号、密码、性别、联系电话、姓名,为会
员实体的基本数据项,下面给出了每个数据项的数据名称、别名、类型长度和描述。
1)数据项名称:会员编号 别名:c_id 类型长度:int 描述:用来存放会员的编号,其为自动增长
2)数据项名称:账号 别名:c_account 类型长度:varchar(11) 描述:由varchar类型来存储,其为会员登录账号
3)数据项名称:密码 别名:c_password 类型长度:varchar(100) 描述:用来进行系统登录所有
4)数据项名称:姓名 别名:c_name 类型长度:varchar(1000) 描述:会员的名字
5)数据项名称:性别 别名:sex 类型长度:char(2) 描述:分别为男、女
6)数据项名称:联系电话 别名:c_phone 类型长度:nvarchar(100)
描述:有会员的联系电话 b)商品实体属性项
根据E-R图能够得到商品编号、名称、尺寸、数量、颜色、价格为商品实体
的基本数据项,下面出了每个数据项的数据名称、别名、类型长度和描述。 1)数据项名称:会员编号 别名:p_id 类型长度:int 描述:用来存放商品的编号,其为自动增长
2)数据项名称:名称 别名:p_name 类型长度:varchar(100) 描述:由varchar类型来存储
3)数据项名称:尺寸 别名:p_size 类型长度:varchar(50) 描述:用来存放商品的大小
4)数据项名称: 数量 别名:p_number 类型长度:varchar(100) 描述:用来存放商品的数量
11
《达内JAVA工程实训报告》
5)数据项名称:颜色 别名:p_color 类型长度:varchar(50) 描述:用来存放商品的颜色
6)数据项名称:价格 别名:p_price 类型长度:nvarchar(50)
描述:用来存放商品的单价 c)销售记录实体属性项
根据E-R图能够得到编号、销售记录编号、买方姓名、产品名称、买卖时间、
买卖数量、买卖颜色、买卖尺寸大小、买卖价格为销售记录实体的基本数据项,下面出了每个数据项的数据名称、别名、类型长度和描述。 1)数据项名称: 编号 别名:s_id 类型长度:int 描述:用来存放记录的编号,其为自动增长
2)数据项名称:销售记录编号 别名:s_orderid 类型长度:varchar(100) 描述:由varchar类型来存储
3)数据项名称:买方姓名 别名:s_cname 类型长度:nvarchar(100) 描述:用来存放买方姓名
4)数据项名称:产品名称 别名:s_pname 类型长度:varchar(100) 描述:用来存放产品名称
5)数据项名称:买卖时间 别名:s_date 类型长度:varchar(50) 描述:用来存放商品买卖时间
6)数据项名称:买卖数量 别名:s_numbe 类型长度:nvarchar(100)
描述:用来存放商品的买卖数量
7)数据项名称:买卖颜色 别名:s_color 类型长度:nvarchar(50)
描述:用来存放商品的买卖颜色
8)数据项名称:买卖尺寸大小 别名:s_size 类型长度:nvarchar(50)
描述:用来存放买卖商品的尺寸大小
9)数据项名称:买卖价格 别名:s_price 类型长度:nvarchar(5) 描述:用来存放买卖商品的价格 5.3.2 数据流
1) 数据流名称:会员个人信息 数据流别名:无
说明:记录会员所有的信息
12
《达内JAVA工程实训报告》
数据流来源:会员信息数据表 数据流流向:会员自己
数据流组成:编号+账号+密码+性别+联系电话+姓名 2) 数据流名称:商品信息 说明:记录商品所有的信息 数据流来源:管理员操作 数据流流向:商品信息数据表
数据流组成:编号+商品名称+商品尺寸+商品数量+商品颜色+商品价格 3) 数据流名称:销售记录信息 数据流别名:无
说明:记录商品所有的销售记录信息 数据流来源:会员消费
数据流流向:销售记录信息数据表
数据流组成:编号+销售记录编号+买方姓名+产品名称+买卖时间+买卖数
量+买卖颜色+买卖尺寸大小+买卖价格
5.4 流程图
选择系统登录,管理员输入账号和密码,验证正确后,进入系统。管理员选择销售记录模块,可以对所有的销售记录进行增加、修改、删除、查询等操作。
开始登录输入管理员账号和密码否验证是否正确是进入销售记录模块销售信息的增加、查询、删除、修改结束
如图5.2 销售信息管理模块流程图
13
《达内JAVA工程实训报告》
5.5 功能点的展示
本次开发使用的是MyEclipse8.6,MySQL,JDK1.7和Tomcat6.0,我们负责的是消费记录管理模块,该模块主要用到了HTML布局,Servlet,HttpServlet处理页面请求,客户端服务端数据的交互和Java.sql包中的DriverManager,PreparedStatedment,Connection等对象与其中的方法等知识。用到一些常用的Jsp页面写java代码的技巧,比如EL表达式,<%%>和JSTL等知识,不过在EL表达式和JSTL时,不能忘了导入对应的jar包。还有就是使用JDBC连接MySql数据库,也需要使用对应的jar包。然后就是我们这次模块的处理逻辑,首先是查询功能,通过单击按钮,然后获得jsp页面中文本框中的数据,通过表单提取的方式发送给对应的java类去处理,在后台代码的数据库处理后,返回给客户端一个查询后的结果,这个结果使用table布局的方式展现,这边数据的读取需要用到jstl方式,比较灵活;其中添加消费记录也是同理,不过在插入一条消费记录之后,还需要再一次读取消费记录表中的内容,将该表的内容返回给我们的客户端,这样显得更友好一点。
5.6 原型展示
如图5.3所示,是管理员的登陆界面,管理员输入账号、密码和验证码,验证正确后,登陆进入系统,选择销售记录模块。
如图5.3 登陆界面
如图5.4是销售管理模块界面,用户可以对所有的销售记录进行查询。如图5.5是销售管理模块界面,用户可以对所有的销售记录进行修改。如图5.4是销售管理模块界面,用户可以对所有的销售记录进行删除。
14
《达内JAVA工程实训报告》
图5.4 查询销售记录
图5.5 修改销售记录
图5.6 删除销售记录
15
《达内JAVA工程实训报告》
总 结
转眼间,四周的工程实训已经结束,在这期间遇到了很多的困难,幸得老师
和同学的帮助才能解决。虽然实训过程是痛苦的,成天的编写代码,但结果是甘甜的。这次的实训是以往没有过的,指导老师是企业培训教师,这对我们的实训有很大的帮助。一月的实训,让我对JAVA语言有了更进一步的认识了。
在本次实训中进行了多个实例的开发,其中包含打字游戏、弹弹球游戏、贪
吃蛇游戏和女装管理系统。其中打字游戏、弹弹球游戏、贪吃蛇游戏是基于JFrame实现的,开发使用的环境是Eclipse SDK 4.2.2,JDK1.7;而女装管理系统是基于JSP实现的,其开发使用的环境是MyEclipse8.6,MySQL,JDK1.7和Tomcat6.0。在窗体小游戏中,主要用到了键盘监听接口KeyListener,此接口主要实现对键盘按钮的监听;使用了Timer类和Random类,其中Timer类用来在指定的时间间隔内反复触发指定窗口的定时器事件,Random类用来随机生成坐标位置;还使用了ArrayList和LinkedList来进行对象的存储。此外在进行窗体小游戏的编写过程中,还用到了匿名内部类,在此之前,对于这个知识是相当的模糊的,完全不知道是什么,但在指导老师的悉心讲解中,理解了其真正的含义及使用。
在JSP开发过程中,开发使用的是Eclipse SDK 4.2.2, JDK1.7和Tomcat6.0,
在女装店管理系统开发中,主要承担了消费记录管理模块,该模块主要用到了HTML布局,Servlet,HttpServlet处理页面请求,客户端服务端数据的交互和Java.sql包中的DriverManager,PreparedStatedment,ResultSet、Connection、setAttribute、getRequestDispatcher等对象与其中的方法等知识。用到一些常用的Jsp页面写java代码的技巧,比如EL表达式,<%%>和JSTL等知识,不过在EL表达式和JSTL时,不能忘了导入对应的jar包。还有就是使用JDBC连接MySql数据库,也需要使用对应的jar包。在女装店管理系统中,产生了很多的问题,特别在对数据的交换与传递之间,由于没有搞清楚数据之间交换的过程,所以在传递的过程中出现了问题。
实训虽然过去了,但学到的知识却是永恒的,对于JAVA编程,我们要学的
知识还很多,希望在以后的学习中能够坚持下去。
16