Java工程实训报告.docx
- 文档编号:10337024
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:21
- 大小:269.21KB
Java工程实训报告.docx
《Java工程实训报告.docx》由会员分享,可在线阅读,更多相关《Java工程实训报告.docx(21页珍藏版)》请在冰豆网上搜索。
Java工程实训报告
计算机工程学院
实习报告
课程名称Java工程实训报告
学生姓名:
学号:
指导教师:
专业:
班级:
实习时间:
年月日
目录
1面向对象的程序设计1
1.1封装1
1.2构造器(构造方法)1
1.3接口Collection
1.4继承1
2实例1打字游戏1
2.1实验步骤1
2.2实验结果1
3实例2弹弹球游戏1
3.1实验步骤1
3.2实验结果1
4实例3贪吃蛇游戏1
4.1实验步骤1
4.2实验结果1
5实例4女装店管理系统(销售信息管理模块)1
5.1模块功能描述1
5.2销售信息管理模块ER图1
5.3数据字典1
5.4流程图1
5.5功能点的展示1
5.6原型展示1
总结1
1面向对象的程序设计
1.1封装
对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性)具体来说:
(1)属性:
私有private(提供set和get方法)在
(2)方法:
公开或私有public/private
(3)方法声明,然后方法实现。
例如:
以显示器为对象,它拥有宽、高、品牌等属性,功能为看电视、电影、显示,所以可先创建属性,然后创建函数(即功能),最后调用函数。
intwide;
intheight;
Stringpaizi;
publicvoidxianshi(){
System.out.println("我可以显示,真棒!
");
}
1.2构造器(构造方法)
构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。
对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。
当类实例化一个对象时会自动调用构造方法。
构造方法和其他方法一样也可以重载。
(1)构造方法作用:
a、构造出来一个类的实例
b、对构造出来个一个类的实例(对象)初始化。
(2)构造方法的名字必须与其定义的类名完全相同,没有返回类型。
(3)主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。
(4)类中必定有构造方法,若不写,系统自动添加无参构造函数。
接口不允许被实例化,所以接口中没有构造方法。
(5)不能被static、final、abstract修饰。
(6)构造方法在初始化对象时自动执行,一般不能显式地直接调用.当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。
完成构造函数的调用。
(7)构造方法分为两种:
无参构造方法有参构造方法
(8)自定义类中,如果不写构造方法,java系统会默认添加一个无参的构造方法。
如果写了一个有参的构造方法,就一定要写无参构造方法。
例如:
以学生对象为例,学生对象具有姓名(Stringname)、年龄(intage)、性别(charsex)、地址(Stringadd)等等属性,即需要创建一个无参的构造函数和一个有参数的构造函数来对属性进行赋初值,然后再是各个方法(行为或功能)的实现。
publicPerson(){
}
publicPerson(Stringname,intage,charsex){
this.name=name;
this.age=age;
this.sex=sex;}
1.3接口Collection
1.3.1接口Collection
(1)List
List
ArrayList和LinkedList的大致区别:
1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2)对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3)对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
ArrayList
例如:
List
list.add("孟晓军");
list.add("王阳");
set1.add("成青懂");
List
lin.add
(1);
lin.add
(2);
(2)Set
1.3.2接口Map
接口Map
1.4继承
共性放到父类,特性放到子类;即子类继承父类,其实就是一般继承特殊。
(1)关键字:
extends 例如:
CatextendsAnimal{}
(2)java中一个类最多只能有一个直接的父类,即单继承,java中要实现多继承,通过接口来实现,关键字。
(3)父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。
(4)不同类型的访问权限与继承。
表1-1访问权限与继承
类型
访问权限
继承
private
本类内部
不能继承
default
本类+同包
同包子类可以继承
protected
本类+同包+不同子包
可以继承
public
公开
可以继承
(5)super()函数的用法
a、super();调用父类的构造方法,只能出现在构造方法的第一行。
b、super.方法名;super表示父类的对象,通过它去调用父类的方法。
2实例1打字游戏
在打字游戏实例中,创建一个WordGame类;实例要新建一个窗体,所以必须继承一个 JFrame 对象,而且还要用到键盘监听接口KeyListener。
2.1实验步骤
2.1.1JFrame创建
在WordGame()构造方法中添加如下代码,既可创建一个窗体:
this.setUndecorated(true);//设置是否显示边框
this.setAlwaysOnTop(true);//设置窗口显示在最前端
this.getContentPane().setBackground(Color.BLACK);//设置窗口内容面板的背景色
this.setSize(400,600);//设置窗口大小
this.setLocationRelativeTo(null);//设置相对位置
2.1.2创建面板并固定
新建一个类MyPanel作为面板,所以MyPane类需要继承一个JPanel对象,创建好面板后需要在窗体中固定,即在WordGame()构造方法声明一个WordGamePanal对象为panal,然后调用this.add(panal);即可将面板固定到窗体中。
classMyPanelextendsJPanelimplementsSerializable{}//创建面板
WordGamePanalpanal=newWordGamePanal();//创建面板的纸张对象
this.add(panal);//固定纸张
2.1.3设置键盘监听接口KeyListener
在WordGame()构造方法中添加如下代码,即可完成键盘的监听,这种为内部类的实现,键盘监听也可以使用外部类来实现。
this.addKeyListener(newKeyListener(){//给当前窗口添加键盘监听事件
publicvoidkeyTyped(KeyEvente){}
publicvoidkeyReleased(KeyEvente){}
publicvoidkeyPressed(KeyEvente){}//实现需要监听的键盘按钮
});
2.1.4当程序一启动,就将26个字母装载到我们的容器中(LinkList
在本包下创建一个W类,用来存放一个之母的属性,并设置其get,set函数和有参数的构造函数,以及hashCode()、equals(Objectobj)和toString()函数,使用快捷生成即可。
2.1.5字母沿着Y轴方向下落(按照自己的速度)
创建一个数据对象,让字母的各个属性都随机的变换,即X坐标、字体大小、下落速度、字母颜色等等随机变换。
publicvoidrun(){
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所示为打字游戏正常图,如果输入的字符与下落的字符一致,则会进行加分,如果输入的字符与下落的字符不一致,则会进行减分操作,按空格键就可以结束游戏。
图2.1打字游戏运行图
3实例2弹弹球游戏
进行了前面的计时器和打字游戏的编写,对Java编程有了更进一步的认识了,为此完成一个弹弹球的游戏,弹弹球游戏是将前面的所讲的知识全部集合在一起。
在弹弹球游戏实例中,需要创建一个TTQGame类;实例要新建一个窗体,所以必须继承一个 JFrame 对象,而且还要用到键盘监听接口KeyListener。
3.1实验步骤
3.1.1JFrame创建
在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()构造方法中声明一个TTQPanel对象为ttqp,然后调用this.add(ttqp);即可将面板固定到窗体中。
classTTQPanelextendsJPanelimplementsSerializable//创建面板
TTQPanelttqp=newTTQPanel();//创建面板的纸张对象
this.add(ttqp);//固定纸张
3.1.3设置键盘监听接口KeyListener
在WordGame()构造方法中添加如下代码,即可完成键盘的监听,这种为内部类的实现,键盘监听也可以使用外部类来实现。
this.addKeyListener(newKeyListener(){//给当前窗口添加键盘监听事件
publicvoidkeyTyped(KeyEvente){}
publicvoidkeyReleased(KeyEvente){}
publicvoidkeyPressed(KeyEvente){}//实现需要监听的键盘按钮
});
3.1.4创建小球对象和添加挡板对象
在TTQGame类中创建小球和挡板对象,即创建小球的属性和挡板的属性,其属性为:
X,Y坐标,宽度,长度,方向,颜色等等。
publicvoidpaint(Graphicsg){
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球撞墙之后反弹
小球在运动过程中撞墙,则会反弹,其运动约束设置为:
如果球从左上下落,若碰到下壁则向右上反弹,若碰到右壁,则向左下反弹
如果球从右上下落,若碰到下壁则向左上反弹,若碰到左壁,则向右下反弹
如果球从左下上浮,若碰到上壁则向右下反弹,若碰到右壁,则向左上反弹
如果球从右下下落,若碰到上壁则向左下反弹,若碰到左壁,则向右上反弹
3.1.7小球遇到挡板后继续反弹,否则GAMEOVER!
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,"GAMEOVER!
","噩耗",JOptionPane.DEFAULT_OPTION);//弹出框提示游戏结束
System.exit(0);}}
3.2实验结果
如图3.1所示为弹弹球游戏正常图,如果小球撞击墙壁就会进行反弹操作,当小球撞击挡板也会进行反弹操作,如果小球下落没有撞击挡板,则游戏结束,按空格键就可以结束游戏。
如图3.1弹弹球游戏运行图
4实例3贪吃蛇游戏
在完成弹弹球游戏后,进行贪吃蛇游戏是为了掌握在弹弹球中方向的控制,其实验步骤与弹弹球相似,首先要创建窗口,然后在创建面板,固定面板。
4.1实验步骤
(1)JFrame创建
(2)创建面板并固定
(3)设置键盘监听接口KeyListener
(4)加载数据(采用面向对象的思想,把整条蛇作为一个大的对象,把蛇的身体元素看成多个对象)(容器请使用LinkedList)
(5)让数据对象动起来(去掉尾部添加头部)
(6)控制数据对象运动的方向
(7)随机产生一个豆子
(8)数据对象(贪食蛇)吃豆子并长长
(9)数据对象撞墙GAMEOVER
(10)贪食蛇不能咬到自己的身体,贪食蛇不能180度掉头,否在GAMEOVER。
4.2实验结果
如图4.1和4.2所示为贪吃蛇游戏运行图,其使用上下左右按键对贪吃蛇进行控制,使其能够吃到小豆子。
图4.1贪吃蛇游戏运行图
图4.2贪吃蛇撞墙运行图
5实例4女装店管理系统(销售信息管理模块)
5.1模块功能描述
销售信息管理模块具有销售记录添加、销售信息修改、销售信息删除、销售信息查询四个功能,这个模块是为了记录顾客在女装店的所有消费,同时也记录了服装的销售信息,这能更加方便的进行信息的管理。
5.2销售信息管理模块ER图
会员实体具有会员编号、账号、密码、性别、联系电话、姓名等属性;商品实体具有商品编号、名称、尺寸、数量、颜色、价格等属性;销售记录实体具有编号、销售记录编号、买方姓名、产品名称、买卖时间、买卖数量、买卖颜色、买卖尺寸大小、买卖价格等属性。
如图4.1所示
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)
描述:
用来存放商品的数量
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)数据流名称:
会员个人信息
数据流别名:
无
说明:
记录会员所有的信息
数据流来源:
会员信息数据表
数据流流向:
会员自己
数据流组成:
编号+账号+密码+性别+联系电话+姓名
2)数据流名称:
商品信息
说明:
记录商品所有的信息
数据流来源:
管理员操作
数据流流向:
商品信息数据表
数据流组成:
编号+商品名称+商品尺寸+商品数量+商品颜色+商品价格
3)数据流名称:
销售记录信息
数据流别名:
无
说明:
记录商品所有的销售记录信息
数据流来源:
会员消费
数据流流向:
销售记录信息数据表
数据流组成:
编号+销售记录编号+买方姓名+产品名称+买卖时间+买卖数量+买卖颜色+买卖尺寸大小+买卖价格
5.4流程图
选择系统登录,管理员输入账号和密码,验证正确后,进入系统。
管理员选择销售记录模块,可以对所有的销售记录进行增加、修改、删除、查询等操作。
如图5.2销售信息管理模块流程图
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所示,是管理员的登陆界面,管理员输入账号、密码和验证码,验证正确后,登陆进入系统,选择销售记录模块。
如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 工程 报告