JAVA生产实习报告
经过一学年JAVA课程的学习,在这个学期末我们迎来了为期十天的实习。计算机是一门实践性极强的学科,这次在北京达内科技有限公司的实习对于检验我们对知识掌握程度及知识运用于实践中的能力起到极其重要的作用。
一 实习目的
(1) 复习巩固J2SE等基本JAVA知识。
(2) 利用所学的J2SE基本知识完成简单的小项目。
(3) 了解掌握HTML、JSP等基本知识。
(4) 利用所学的HTML、JSP等基本知识制作网页。
(5) 了解掌握J2EE等基本知识。
(6) 综合所学的所有知识完成‘‘网页版五子棋’‘综合项目。
二 实习内容
(一) J2SE基础知识。
1 基本数据类型介绍。掌握int、float、double、 char 、String、 boolean等基本数据类型的用法极其注意事项。
2 基本运算符的介绍。
3 基本句型的介绍。掌握if语句,if···else语句及while,do···while等基本语句的用法。
4 数组用法的介绍。学会数组的扩容等重要应用。
5 通过所学的基础知识完成以下小项目。
(1)实现数组的扩容
实现步骤:
1) 创建newArray 注意长度。
2) 遍历oldArray 给newArray的每个位置的元素赋值。
3) 给最后一位赋值。
4) 更改数组引用。
(2)条码验证
实现步骤:
1) 拿到前12位。
2) 取出该字符串的奇数和。
3) 取出该字符串的偶数和。
4) 将奇数和与偶数和的三倍相加。
5) 取结果的个位数 (%10)。
6) 用10减去这个数。
7) 对得到的数再取个位数。
(二) 面向对象编程
1 掌握面向对象的基本概念。
2继承与多态的知识介绍。掌握继承及多态的相关知识。
3 类依赖关系的介绍。掌握类依赖在实际编程中的应用。
4 通过实际面向对象的小项目理解掌握面相对象的核心思想。
(1)通过CPU与电脑的关系编程了解类之间的依赖关系。
源代码:
publicclass CPU {
String cNO;
String cName;
public CPU() {
}
}
publicclass TestComputer {
publicstaticvoid main(String[] args) {
CPU cpu = new CPU();
cpu.cNO="cpu1";
cpu.cName="a cpu";
Computer c = new Computer();
c.NO="computer1";
c.name="Administrator";
c.cpu=cpu;
//通过电脑 获得该电脑cpu的编号
String cNo = c.cpu.cNO;
System.out.println(cNo);
}
}
(2)通过父类
Shape{
Point p; //定位点
area(); //求面积
}
编写Circle{
r; //半径
contains(Point p) //是否包含此点
area()
}
Rect{
double width;
double height;
area()
}
等图形类来掌握了解继承与多态的知识。
(3) 通过“三人斗地主”的项目的部分功能整合之前所学的数组、基本语句、及面向对象等知识。检验知识的综合运用能力。
(三) 集合知识的介绍
1 ArrayList集合的基本知识。ArrayList通过add方法来增加、插入元素,通过remove方法来删除元素,通常使用泛型<>来规范集合中的数据类型。
2 Set集合的基本知识。Set通过add方法来增加、插入元素,通过remove方法来删除元素,通常使用泛型<>来规范集合中的数据类型以及使用Iterator接口遍历集合。
3 Map集合的基本知识。Map集合的泛型,例如:HashMap<Integer,String> maps = new HashMap<Integer,String>()。Map集合通过put()方法来添加元素、修改集合值,通过get()方法获取其对应的value值,通过remove方法删除对应的值,通过size()方法获取集合的大小等等。
4 通过对集合知识的了解学习通过“打印版贪吃蛇”小项目来对所学知识进行巩固。
(四)涉及J2EE的基本知识
1 HTML及CSS的基本知识。掌握HTML的段落标签<p></p>,表格<table></table>等一些基本标签的用法;学会使用DIV来进行简单的网页布局,掌握CSS选择器,及内边距、外边距基本概念,通过CSS来进行文字属性的设置,边框的设置等,从而对网页进行美化。
2 WEB项目的基础知识。进行Tomcat的配置,完成Web.xml文件的配置,通过对J2EE知识的学习完成简单的WEB项目。
3 通过在浏览器中显示3个div宽,高一定,颜色从指定颜色中随机产生来对web及html,css知识进行综合运用与检验。
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ColorDivServlet extends HttpServlet {
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
String[] colors =
{"red","yellow","blue","green","black"};
Random random = new Random();
for(int i=0; i<3; i++){
int index = random.nextInt(colors.length);
String color = colors[index];
out.println("<div style='background-color:"
+color +
";width:120px; height:120px;'></div>");
}
out.println("</body>");
out.println("</html>");
out.close();
}
}
(五)网页版五子棋项目
1 进行项目分析。通过项目分析确定项目中涉及的实体,其中有房间、人、棋盘、棋子实体类,确定各个实体类中涉及的属性和方法。通过确定实体来进行下一步的项目制作。
2 进行实体类的创建。通过分析确定实体类中的属性和方法来进行创建实体类。例如:房间类中涉及房间号,房间名,进入房间的人,棋局属性;涉及除构造方法外还有属性的get set方法以及判断人满,添加房间的方法等。所以Room类创建如下:
public class Room {
private int roomId; //房间号
private String name; //房间名
private Player p1; //进入房间的玩家
private Player p2;
private ChessBoard chessBoard; //房间中的棋盘
public Room() {
//构造方法
chessBoard = new ChessBoard();
}
public Room(int roomId, String name, Player p1) {
//构造方法的重载
this.roomId = roomId;
this.name = name;
this.p1 = p1;
chessBoard = new ChessBoard();
}
//添加方法isFull() 判断是否人满
public boolean isFull(){
return p1!=null && p2!=null;
}
//添加玩家方法
public void addPlayer(Player player) {
this.p2 = player;
}
public Player getP1() {
return p1;
}
public void setP1(Player p1) {
this.p1 = p1;
}
public Player getP2() { return p2; }
public void setP2(Player p2) {
this.p2 = p2;
}
public ChessBoard getChessBoard() {
return chessBoard;
}
public void setChessBoard(ChessBoard chessBoard) {
this.chessBoard = chessBoard;
}
public int getRoomId() {
return roomId;
}
public void setRoomId(int roomId) {
this.roomId = roomId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//覆盖toString
public String toString() {
return roomId+":"+
name +"["+p1+", "+p2+"]";
}
//覆盖equals
public boolean equals(Object obj) {
if(obj==null)
return false;
if(obj==this)
return true;
if (obj instanceof Room) {
Room other = (Room) obj;
return this.roomId == other.roomId;
}
return false;
}
}
3 通过HTML/CSS,JSP知识的学习创建登录界面index.jap,进入房间界面inRoom.jsp,显示下棋的界面showRoom.jap。并通过<meta http-equiv="refresh" content="5"/>方法实现网页每隔5秒钟自动刷新页面一次。
4 通过控制逻辑的创建来实现类与界面交互。例如处理创建房间的逻辑书写如下:
//处理创建房间的逻辑
private void createRoom(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException{
//从request中取得参数
String nickname=request.getParameter("nickname");
Player p1 = new Player(nickname,
ChessPiece.BLACK);
//处理线程并发问题
Room room=null;
synchronized (this) {
room = new Room(index++, "求虐!", p1);
rooms.put(room.getRoomId(), room);
}
//让浏览器访问一次chessing.do请求
response.sendRedirect(
"chessing.do?roomId="+room.getRoomId()
+"&nickname="+nickname);
}
5 xml文件的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>com.tarena.chess.controller.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
三 参考资料
《Java入门与实战教程》 杨志茹 温尚书 著 人民邮电出版社
《网页艺术设计》 梁日升 杨杰 著 机械工业出版社
《Java Web开发技术教程》 张娜 著 清华大学出版社
四 实习总结
伴着这学期的尾声,我们迎来了为期十天的北京达内科技有限公司的实习。对于实习,我们充满期待,因为实习不仅可以检验我们将理论知识应用于实践的能力,而且可以让我们发现不足进行完善。
计算机是一门实践性极强的学科,因此,对于实习每个同学都很珍惜这次机会,明确了这次北行的目的。从开营,大家积极参与,对于自己的小组划分,每个人都尽心尽力。从开始实习,大家都认真听讲,积极讨论问题;从项目的开始实施制作,每位成员都积极完成自己的任务······转眼实习结束,这些画面历历在目,仿佛还停留在昨天。
在实习中,严格要求自己,对于老师讲的每个知识点,自己都弄的彻底明白。在遇到难点时,自己积极联合小组成员进行探讨,每个人都以饱满的态度融入到这个团体,因此每个人的学习热情高涨,自己的学习积极性变得主动,效率也得以提高。通过这样的实习,自己意识到,并不是自己一个人在独自战斗,在我们面前而是一个团体,每个人都是不可分割的一员。
就这样紧张的实习拉开帷幕,每天都是忙碌的身影,对于所学知识进行不断强化,循序渐进,每个知识点都通过一个小项目来进行强化,自己独立完成。对于自己解决不了的问题,小组积极讨论,充分发挥团队作用。在互相讨论中增进了了解,不仅增长自己的知识,融入其中,而且也发现自身的不足,便于自己做出调整,不断弥补自己的不足,提高自己,提高团队的战斗力。
在实习中,公司设置了模拟面试的环节,通过模拟面试使我们体会了面试的场景。在面试中,自己看到了不足与差距,从而更加激发自己去努力做的更好。面试完毕,老师对每个同学进行点评,并且提出针对每个同学的良好建议。这样的环节对于我们将来就业面试起到了很好的知道作用。
在进行了多天的储备知识学习后,我们开展了“网页版五子棋”项目的制作。在项目进行过程中,综合了之前的所有知识,通过不断努力终于完成了这个项目。虽然项目中存在一些问题,但依旧很高兴。在程序调试过程中自己遇到了不少问题,但并没有慌张,首先自己尽力解决自己能力范围内的问题,自己解决不了的通过团队,老师的帮助得以解决。通过项目制作,发现自身不少问题,例如:知识的综合运用能力,逻辑处理问题等。这都是自己的不足之处,需努力学习改进。同时也体会到细心在实际工作中的重要性,因为存心而拼写错一个单词都会对整个项目带来很大的影响,从而导致项目不成功。
实习的日虽然短暂,但收获颇多。首先,计算机是实践性极强的学科,为此我们只有不断实践才能有所收获,有所体会,才能收获到书本上没有的知识与体会;其次,在计算机这个行业中,在战斗的永远不是自己,而是一个团队在与你并肩战斗,为此我们必须具有一个良好的团队意识,只有这样我们才能以这样最快的速度融入团队,发挥自己,发挥团队的力量;再者,在项目制作中,我们必须具有良好的好沟通能力,这样才能增进成员之间的相互交流,增加彼此了解,发现自身不足,并进行改进,从而以高效率的姿态推进团队的成长;最后,在项目调试中,发现细心,耐心是我们必须具有的品质。不管事情多么渺小,我们都应该以细心的姿态来对待,细心可以避免那些不必要的麻烦;最好的品质莫过于坚持,因此耐心也是我们必须具有的。在程序调试过程中,只有耐心钻研,才能发现问题,解决问题。只有以稳定的姿态去发现问题解决问题,在这样不断学习中才能不断有新的收获与成长。
最后,在这里向实习公司说声“谢谢!”,向指导我们完成实习的老师说声“您辛苦了,谢谢!”,向提供帮助的同学说声“谢谢!”。
五 指导教师评语及签字