it实习总结报告

摘 要... 2

1.实习计划表... 3

2.实战纪实... 4

2.1.Java基础知识... 4

2.2数据库实训——SQL Server2008. 10

2.3项目参与... 10

3.致谢... 18

4.参考文献... 19

成都航空职业技术学院实习总结报告

                        摘 要

通过实习,培养综合运用Java语言的面向对象编程能力;培养动手能力;培养良好编程规范、编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。通过理论与实际的结合、学校与社会的沟通,进一步提高自己的思想觉悟、业务水平,尤其是观察、分析和解决问题的实际工作能力,以便培养自己成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。

该公司,是一家私营企业,专注于软件开发设计、系统开发,系统维护、面向中国的日资企业开展系统开发,以及面向中国国内的软件开发设计的IT企业。一直秉承软件提高效率、与社会共创信息化新时代的理念,致力于为用户提供具有自主知识产权的系统软件、平台软件、各类应用软件以及全方位的解决方案和相关服务。

Through the practice, cultivate the integrated use of Java language and object-oriented programming ability; cultivate the ability; cultivate good programming specifications, programming method; in order to comprehensively understand, grasp and apply the learned knowledge, to improve their programming skills; enhance their team cooperation consciousness, understand the software development perspective and the main process. By combining theory with practice, school and social communication, and further improve their ideological consciousness, the level of business, especially the observation, analysis and problem-solving ability in practical work, in order to develop their own to become active complex talents to meet the needs of the socialist modernization of high-quality. For after graduation can quickly enter the working state and can better work, lay a certain foundation.

The company, is a private enterprise, focus on the development of software development, system design, system maintenance, for the Chinese enterprises of the day to carry out system development, as well as for the Chinese domestic software design and development of IT enterprises. Has been adhering to the software to improve efficiency, creating a new era of information and the concept of society, is committed to providing users with independent intellectual property rights of the system software, software platform, all kinds of application software and a full range of solutions and related services.

1.实习计划表

2.实战纪实

2.1.Java基础知识

通过本次实习,我对Java语言的各种特性有了更进一步的体会。

2.1.1基本要点回顾

Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。其优点笔记如下:

2.1.1.1简单性

   Java语言是一种面向对象的语言 ,它通过提供最基本的方法来完成指定的任务 ,只需理解一些基本的概念 ,就可以用它编写出适合于各种情况的应用程序。 Java略去了运算符重载、多重继承等模糊的概念 ,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外 ,Java也适合于在小型机上运行 ,它的基本解释器及类的支持只有 40KB左右 ,加上标准类库和线程的支持也只有 215KB左右。库和线程的支持也只有 215KB左右。

2.1.1.2面向对象

   Java语言的设计集中于对象及其接口 ,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法 ,实现了模块化和信息隐藏 ;而类则提供了一类对象的原型 ,并且通过继承机制 ,子类可以使用父类所提供的方法 ,实现了代码的复用。

2.1.1.3分布性

   Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议 ,用户 可以通过 URL地址在网络上很方便地访问其它对象。

2.1.1.4鲁棒性

   Java在编译和运行程序时 ,都要对可能出现的问题进行检查 ,以消除错误的产生。它提供自动垃圾收集来进行内存管理 ,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制 ,在编译时,Java提示出可能出现但未被处理的例外 ,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误 ,防止动态运行时不匹配问题的出现。

2.1.1.5安全性

   用于网络、分布环境下的 Java必须要防止病毒的入侵。 Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现 ,这样就防止程序员使用"特洛伊 "木马等欺骗手段访问对象的私有成员 ,同时也避免了指针操作中容易产生的错误。

2.1.1.6体系结构中立

   Java解释器生成与体系结构无关的字节码指令 ,只要安装了 Java运行时系统 ,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟机中的表示 ,Java解释器得到字节码后 ,对它进行转换 ,使之能够在不同的平台运行。

2.1.1.7可移植性

   与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时 ,Java的类库中也实现了与不同平台的接口 ,使这些类库可以移植。另外,Java编译器是由 Java语言实现的 ,Java运行时系统由标准 C实现 ,这使得Java系统本身也具有可移植性。

2.1.1.8解释执行

   Java解释器直接对 Java字节码进行解释执行。字节码本身携带了许多编译时信息 ,使得连接过程更加简单。

2.1.1.9高性能

   和其它解释执行的语言如 BASIC、 TCL不同 ,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码 ,从而得到较高的性能。

2.1.1.10多线程

   多线程机制使应用程序能够并行执行 ,而且同步机制保证了对共享数据的正确操作。通过使用多线程 ,程序设计者可以分别用不同的线程完成特定的行为 ,而不需要采用全局的事件循环机制 ,这样就很容易地实现网络上的实时交互行为。

2.1.1.11动态性

   Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且 Java通过接口来支持多重继承 ,使之比严格的类继承具有更灵活的方式和扩展性。

2.1.2Java类、接口和继承

Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。常用类、接口如下:

java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。Object类是Java中唯一没有父类的类。其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。

String()和StringBuffer类:StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。 在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。但是有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。

         另外由于StringBuffer是线程安全的,关于线程的概念后续有专门的章节进行介绍,所以在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。

包装类:Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。

Math类:Java中的Math类属于java.lang包中,Math的所有方法均用static声明的静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如:Math.sin();Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

2.1.3Java INTERNET开发

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net)它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

URL:类URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

通常,URL 可分成几个部分。

URL 可选择指定一个“端口”,它是用于建立到远程主机 TCP 连接的端口号。如果未指定该端口号,则使用协议默认的端口。例如,http 协议的默认端口为 80。还可以指定一个备用端口。  

从技术角度来讲,URL 并不需要包含此片段。但是,使用此片段的目的在于表明,在获取到指定的资源后,应用程序需要使用文档中附加有 chapter1 标记的部分。标记的含义特定于资源。

应用程序也可以指定一个“相对 URL”,它只包含到达相对于另一个 URL 的资源的足够信息。HTML 页面中经常使用相对 URL。例如,假设 URL 的内容是:

    http://java.sun.com/index.html

其中包含的相对 URL:

     FAQ.html

为以下形式的缩写:

    http://java.sun.com/FAQ.html

注意,URI 类在某些特定情况下对其组成字段执行转义。建议使用 URI 管理 URL 的编码和解码,并使用 toURI()和 URI.toURL()实现这两个类之间的转换。

也可以使用 URLEncoder 和 URLDecoder 类,但是只适用于 HTML 形式的编码,它与 RFC2396 中定义的编码机制不同。

2.1.4独立性

Java语言是体系结构中独立的Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

2.1.5可移植性

Java语言是可移植的,这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性。

2.1.6线程

在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子类将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。谈到线程,就必然要提到另一个概念,那就是进程。一般可以在同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。Java通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程则意味着一个程序的多行语句可以几乎在同一时间内同时运行。(为什么是几乎,不是同时,涉及到计算机原理,暂不多讲)

线程与进程相似,是一段完成某个特定功能的代码,是程序中单个顺序的流控制;但与进程不同的是,同类的多线程是共享一块内存空间和一组系统资源,而线程本身的数据通常只有CPU的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小的多,所以线程可以被看作是轻量级的进程。一个进程中可以包含多个线程,一个线程是一个程序内部的顺序控制流。

作为Java的一个重要的特性,Java内在支持多线程,它的所有类都是在多线程下定义的、Java利用多线程使整个系统成为异步系统。Java中的线程由3个部分组成:虚拟的CPU、CPU所执行的代码和CPU所处理的数据。

线程体的概念:

虚拟的CPU被封装在java.lang.Thread类中,这样CPU所执行的代码和CPU所处理的数据都传递给java.lang.Thread类的实例中。所以Java的线程是通过java.lang.Thread类来实现的。当我们生成一个Thread 类的对象后,一个新线程就产生了。现成实例表示Java解释器中的真正的线程,通过它可以启动线程、终止线程、线程挂起等。每个线程都是通过某个特定Thread对象的方法run()来完成其操作的,方法run()称为线程体。

线程的状态:线程的状态有4种:创建状态、可执行状态、不可执行状态、死亡状态。

创建状态:实例化线程对象后,线程就处于创建状态,此时系统不为它分配资源。

可执行状态:当调用了run()方法后,线程就处于可运行状态,系统为他分配了它需要的系统资源。这里要注意可运行与运行之分,调用了run()方法,并不代表它正在运行,同一时刻只能运行处于可运行状态的的线程中的一个。

不可运行状态:不可运行状态也称为组塞状态,由于某中圆心系统不能执行线程的状态。在这种情况下,即便CPU空闲,线程也不能被执行。线程成为不可能运行状态可能因为:调用了sleep()方法;调用了suspend()方法;调用了wait()方法;输入输出流中发生线程阻塞。

死亡状态:线程执行完会自动进入死亡状态或是调用了stop()方法都会进入死亡状态。stop()方法已经过时。

2.1.7设计优点

Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

2.2数据库实训——SQL Server2008

它是基于客户机/浏览机模式的数据库管理系统;它支持ODBC、ADO等技术的应用,可无缝的与Windows 20## Server 和 IIS 集成,提供高效安全的数据访问服务;有利于整个系统管理规范化,使数据的完整性、安全性得到保证。数据库设计实际上主要是所要处理的数据的表示方法和存储结构的设计。在采用数据库技术之前,这些工作分散在应用程序中进行;在采用数据库技术之后,这些工作可以通过数据库设计集中起来系统地进行。进行数据库设计的首要任务是考虑信息需求,也就是数据库要存入什么样的数据。创建数据库并不是仅仅为了存储数据,更主要的目的是从中提取有用的信息。除了考虑数据存储什么数据外,还应考虑存取方式,也就是处理需求。即要根据用户提出的存取要求来设计数据模式和应用程序。

在此次实习中,与Web服务器相连的数据库采用的是大型关系数据库管理系统——SQL Server 2008。它是基于客户机/浏览机模式的数据库管理系统;它支持ODBC、ADO等技术的应用,可无缝的与Windows 20## Server 和 IIS 集成,提供高效安全的数据访问服务;有利于整个系统管理规范化,使数据的完整性、安全性得到保证。数据库设计实际上主要是所要处理的数据的表示方法和存储结构的设计。在采用数据库技术之前,这些工作分散在应用程序中进行;在采用数据库技术之后,这些工作可以通过数据库设计集中起来系统地进行。进行数据库设计的首要任务是考虑信息需求,也就是数据库要存入什么样的数据。创建数据库并不是仅仅为了存储数据,更主要的目的是从中提取有用的信息。除了考虑数据存储什么数据外,还应考虑存取方式,也就是处理需求。即要根据用户提出的存取要求来设计数据模式和应用程序。

2.3项目参与

项目名称:影像租赁系统

需求评估:

凡是想要到该影像租赁影碟的被称为会员(Member),只有成为该店的会员才能够租借该店的影像资料(Title);

影像店中不定期会购买一些影像资料(Title),并且获得了复制该影像资料的权力,每一份影像制品可以有多个拷贝,每一份拷贝称为一个复制条目(TitleCopy);

对客户而言,原始的影像资料(Title)只能被预定并且可以同时接受多份预定(Reservation),客户可以租赁的是影像拷贝(TitleCopy);

任何一个客户的租赁信息(Rental)都必须存档以便将来店铺对客户的租赁进行评估。

需求业务分析:

每一个会员必须被记录的信息包括会员编号Id,而且所有会员的编号是唯一的,

姓名Name, 加入会员的日期Join_date,以及其他需要被记录的信息包括(住宅地址

Address, 所在城市city, 住宅电话phone);

影像制品(Title)必须被记录的信息包括编号Id,而且所有影像制品的编号保持唯一性,标题Title,影片说明Description,价格Price,和其他如下信息(分级rating,种类category, 发行日期release_date);

每一份影像拷贝(TitleCopy)都有各自的编号Id,同一个影像的若干拷贝编号

不同,但是不同的影像拷贝的编号可能会重复。必须记录下是否已经出租,以便于

店员随时能够查询拷贝资料的当前状态(status);

   系统中允许会员预定某项影像资料,但必须提前预约租赁时间(res_date);

   每一项出租事项需要记录下来(租借日期book_date,实际归还日期act_ret_date,过期时间(exp_ret_date)。

业务逻辑实现:

查询出所有用户的名字(name)以及用户所借阅的影像资料名字(title)和借阅的日期(book_date)

查询出最近一周订阅影像资料的用户的名字(name)和相应的影像资料名字(title)及借阅日期(book_date)

查询出下周日应该归还的影像资料的名称(title)和借阅者的姓名(name),地址(address)

查询出已经超期还未归还的影像资料的名称(title)和借阅者的姓名(name),地址(address)

查询出最近一月借阅次数最多的影像资料的名称(title)

查询出已经登记但是还没有拷贝的影像资料的名称(title)

查询出本周预定最多的影像资料的名称(title)

要求:

   实体关系模型;

   表实例图;

   建表语句;

   样例数据入库(insert语句);

   业务逻辑实现(select语句)。

数据库设计

采用oracle 数据库进行设计。

根据需求分析,设计数据库,PowerDesigner建立实体关系模型图如图-a。

      

图-a

由实体关系图,设计各表的实例结构图如下。

图-b

图-c

图-d

图-e

图-f

由表实例图,设计建表语句。

                   图-g

   图-h

图-i

图-j

图-k

使用JDBC链接数据库

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

会员表单代码如下:

    package com.briup.jdbc;

import com.briup.pojo.Member;

import java.sql.*;

import java.util.*;

public class MemberJdbc {

    //提供连接数据库的四个参数

    private static final String DRIVER =

       "oracle.jdbc.driver.OracleDriver";

    private static final String URL =

       "jdbc:oracle:thin:@localhost:1521:XE";

    private static final String USER =

       "wzp";

    private static final String PASSWORD =

       "wzp";

   

    public void saveMember(Member member){

       Connection conn = null;

       PreparedStatement pstmt = null;

       ResultSet rs = null;

      

       try{

           //步骤1: 注册驱动

           Class.forName(DRIVER);

           //步骤2: 建立和数据库的连接

           conn = DriverManager.getConnection

                     (URL, USER, PASSWORD);

          

           /*从数据库中获得t_member_seq来作为主键*/

           String selectSql =

           "select t_member_seq.nextval from dual";

           pstmt =

              conn.prepareStatement(selectSql);

           rs = pstmt.executeQuery();

           Long id = 0L;

           if(rs.next()){

              id = rs.getLong(1);

           }

           //步骤3: 创建PreparedStatement对象

           String sql =

              "insert into " +

              "jack_member values(?,?,?,?,?,?)";

           pstmt = conn.prepareStatement(sql);

           /*替换占位符'?'*/

           pstmt.setLong(1, id);

           pstmt.setString(2, member.getName());

           pstmt.setString(3, member.getAddress());

           pstmt.setString(4, member.getCity());

           pstmt.setString(5, member.getPhone());

           pstmt.setDate(6, member.getJoinDate());

           //步骤4: 执行sql语句

           int rows = pstmt.executeUpdate();

           //步骤5: 处理返回的结果

           System.out.println("成功插入"+rows+"条记录!");

       }catch(Exception e){

           e.printStackTrace();

       }finally{

           //步骤6: 关闭资源,释放内存

           try{

              conn.close();

              pstmt.close();

           }catch(SQLException e2){

             

           }

       }

    }

使用Servlet编写服务器端应用程序

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

部分代码如下:

package com.briup.pojo;

import java.sql.Date;

public class MemberTest {

    //程序入口方法

    public static void main(String[] args){

       //创建Member对象

       Member member = new Member();

       //设置Member对象的属性值

       member.setId(10L);

       member.setName("briup");

       member.setAddress("wan long road");

       member.setCity("chengdu");

       member.setPhone("123456");

       long time = System.currentTimeMillis();

       member.setJoinDate(new Date(time));

      

       //输出Member对象中的属性值

       System.out.println("id:"+member.getId());

       System.out.println

              ("name:"+member.getName());

       System.out.println

              ("city:"+member.getCity());

       System.out.println

              ("address:"+member.getAddress());

       System.out.println

              ("phone:"+member.getPhone());

       System.out.println

              ("joinDate:"+member.getJoinDate());

      

    }

}

调试运行。

3.致谢

感谢学院提供的顶岗实习机会,感谢为此次实习辛勤付出的所有教师及公司相关工作人员。此次实习的收获是很多的。从对项目相关的技术完全不了解,到和同事组成的团队一起克服种种困难,解决各种疑问,一起协同合作。我的感触颇深,古语有云:读万卷书,行万里路。古人将读与行并列甚至有偏重行的意味,这正是说明了实践的重要性。“实践是检验真理的唯一标准”,没有实践何来了解、进步之说。也深深的体会到大学毕业实习的重要性。

通过这次实习,我们基本达到了此次实习的目的,加强和巩固了理论知识,提高了发现问题并运用所学知识分析问题和解决问题的能力。锻炼自己的实习工作能力,适应社会能力和自我管理的能力。了解了实习单位的计算机技术的应用情况、需求情况和发展方向及前景。亲身参与了项目的实际完成工作,了解了计算机专业软件开发工作的具体流程。

这次实习不仅拓展了我们的眼界,更为重要的是使我们了解了所学专业的现阶段发展状况及未来发展动向。

同时,在这段时间我得到的最大体会就是,如果一个人在社会上没有一技之长,那他是没有办法很好的活下来的。工欲善其事,必先利其器。而对于我们来说,扎实稳固的技术就是我们以后走上工作岗位,实现人生梦想、自我价值以及在竞争越来越激烈的今天立足社会的最好利器,只有不断的加强自身专业技能学习才行。所以,我会在以后的时间里努力学习,加强自己的专业能力,使自己变得更强,只有这样才能上到为国家、为社会做出贡献,下到为自己、为父母、为学校交出一份满意的答卷。

通过这次实习,我认识到只有沉下身来,静下心来认真学习,踏实做事,多用心,多动脑,才能让自身能力有好的起色。社会的竞争是激烈的,我想我们应该好好把握住大学学习的时间,充实、完善自我,全面发展,做一名出色的IT精英!

4.参考文献

Java编程思想(第四版)(美)bruce eckel(著)

Java完全自学宝典 庞永庆;翟鹏(著)

Java Web整合开发王者归来(JSP + Servlet + Struts + Hibernate + Spring) 刘京华(著)

                            

相关推荐