jsp码头船只出行及配套货柜码放管理系统(任务书+开题报告+论文)

毕业设计任务书

学 院: 软件学院
专 业:
班 级: 学号:
学 生 姓 名:
设计题目: 码头船只出行及配套货柜码放管理系
起 迄 日 期:
设计地点:
指 导 教 师:
负 责 人:

发任务书日期: 2014年 1 月 9 日


任务书填写要求

1.毕业设计任务书由指导教师根据各课题的具体情况填写,经学生所在学院的负责人审查、负责人签字后生效。此任务书应在毕业设计开始前一周内填好并发给学生;

2.任务书内容必须用黑墨水笔工整书写或按教务处统一设计的电子文档标准格式(可从教务处网页上下载)打印,不得随便涂改或潦草书写,禁止打印在其它纸上后剪贴;

3.任务书内填写的内容,必须和学生毕业设计完成的情况相一致,若有变更,应当经过所在专业及学院领导审批后方可重新填写;

4.任务书内有关“学院”、“专业”等名称的填写,应写中文全称,不能写数字代码。学生的“学号”要写全号(如0201140102,为10位数),不能只写最后2位或1位数字;

5.有关年月日等日期的填写,应当按照国标GB/T 7408—94《数据元和交换格式、信息交换、日期和时间表示法》规定的要求,一律用阿拉伯数字书写。如“2004年3月15日”或“2004-03-15”。

6.红色字体部分日期等内容不可修改,其他时间节点日期指导老师可以调整


毕 业 设 计 任 务 书

1.毕业设计课题的任务和要求:
码头船只出行及配套货柜码放管理系统开发的任务:结合实际调研,总结分析,整理需求,利用MyEclipse和学过的数据库知识,完成一个码头船只出行及配套货柜码放管理系统的设计,要求整个系统实现船只模块、货柜模块、路线模块、权限模块、船只与货柜模块、船只与路线模块六个模块。
2.毕业设计课题的具体工作内容(包括原始数据、技术要求、工作要求等):
(1)学习掌握数据库及编程相关的基本知识。(2)收集、调研,了解与码头信息管理系统相关的研究与应用情况,完成开题报告。(3)检索相关文献资料,翻译有关基于Java web系统开发的2000单词以上英文资料一篇。(4)对系统进行需求分析与系统设计,提出总体设计方案。(5)按以上设计功能要求完成软件开发工作。建议应用软件工程思想进行本系统的功能模块设计,对不同权限应该有不同的功能和特殊的限制。数据库的设计要合理,要考虑与各个模块的兼容情况。(6)进行软件联调、测试、完善该软件系统。(7)完成软件系统的设计说明书的写作与编辑工作。

毕 业 设 计 任 务 书

3.对毕业设计课题成果的要求〔包括毕业设计、图纸、实物样品等):
毕业设计说明书外文翻译完整的软件
4.毕业设计课题工作进度计划:
起 迄 日 期 工 作 内 容
2014年 1月 09 日 ~ 2月28日 3月 01 日 ~ 3月15日3月 16日 ~ 4月30日5月 01日 ~ 5月31日6月 01日 ~ 6月17日 6月 18日 ~ 6月21日 查阅相关资料,完成开题报告。系统需求分析。系统设计,编码、单元测试。系统联调,测试,功能修改与完善。完成设计说明书,准备答辩材料。毕业设计答辩
学生所在学院审查意见:负责人: 2014 年 1 月 9 日

毕业设计开题报告

班 级: 学 号:
姓 名:
学 院: 软件学院
专 业:
设 计 题 目: 码头船只出行及配套货柜码放管理系统
指导教师:

       

1.结合毕业设计课题情况,根据所查阅的文献资料,撰写2000字左右的文献综述:
文 献 综 述一、本课题的研究背景及意义21世纪是一个全新的世纪,全世界的码头都将面对全新的问题,面临新的挑战。全球化大潮的涌动,催促着一种新的国际体制的加速形成。国际贸易码头之间的合作与竞争将更加频繁和激烈。以信息技术为代表的新技术革命迅猛发展,高集成度、智能化,光纤化、数字化、综合化、网络化,为船运和码头业提供了更为广阔发展空间;国际经济结构的调整,经济全球化的加速,必将促进港口间国际贸易的发展与运量的增长[1]。随着计算机管理技术高速发展,各个领域都应用在计算机对相关信息进行管理。本系统是一个复杂而且涉及内容众多的系统,码头船只出行及配套货柜码放管理系统是码头管理系统中一个比较重要的部分。为了码头管理工作节省不必要的人力物力资源,迫切需要较好的码头船只出行及配套货柜码放管理系统软件来提高工作效率和信息的准确率,以降低经济成本。利用计算机、网络、计算机应用软件等现代科技和手段,加强和改进码头管理工作,可以降低管理工作的成本,减轻工作强度,提高工作效率。科技的发展就是要为生产服务,有了码头船只出行及配套货柜码放管理系统一定会为码头工作带来便捷。二、本课题国内外研究现状1.国外主要现状 1.1 世界港口发展的重心正在加快向中国转移 二战过后,世界港口发展日新月异。随着世界经济的变化更迭,传统的大港地位发生变动,新的优势港口不断涌现[2]。 20世纪90年代以来,世界港口业最大的变化莫过于其发展重心已经向亚洲,特别是中国转移,而且转移的速度正在加快。全世界有许多著名的海港。据有资料,目前全世界有亿吨港20个;最大的是新加坡港,2000年货物吞吐量达3.3亿吨;货物吞吐量居前20位的港口中,中国占9个(上海、宁波、广州、天津、青岛、秦皇岛、大连和香港、高雄),美国占4个,日本占3个,欧洲占2个,韩国占2个。按集装箱吞吐量,最大的港口是香港,2002年吞吐量达1900万标准箱;排名居前10位的港口中,中国占4个(香港、上海、高雄、深圳),欧洲占3个,新加坡、韩国、美国各占1个。按照最新统计,2003年上海港货物吞吐量籽超过3亿吨,集装箱吐量将达到1120万TEU左右,肯定超过韩国釜山港位居世界集装箱港口第三位。深深圳港将跨人亿吨大港行列,集装箱吞吐量也可突破1000万TEU达1050万TEU,居世界集装箱港口第四位,由此,世界排名居前4位的港口中,中国就占3个,优势已经十分明显。我国已是世界名副其实的港口大国。目前,中国大陆已拥有1467个港口,其中沿海港口165个;对外开放口岸134个[3]。 1.2 港口的科技含量越来越高 近年来,随着科技进步步伐的加快,为港口大型化、装卸作业高速化创造了条件,港口科技含量越来越高,码头作业全过程由电子设备、计算机系统指挥和监控。特别是集装箱装卸设备发生了一系列变化,岸桥、场桥的起重量,起升高度,外伸距,速度参数等均El益增大,也向大型高速高效方向发展。由于竞争异常激烈,注入新的高科技内容以提高集装箱机械的生产率是各港口经营者和港机供货商采取的措施和不断追求的目标[4]。 自20世纪70年代初新加坡港修建了该地区第1个集装箱码头以来,PSA(新加坡港务局)就不断引进新的程序系统提高码头操作效率,完善服务标准,一步到位满足客户的需求。过去的几年中,PSA在其技术上的投资已经产生出新的产品与服务,使客户拥有更大的灵活性,节省了时间与成本。这些创新包括无人驾驶吊车、自动门卫申报系统以及无纸化装卸单证系统[5]。2.国内主要现状我国港口经过60年的发展,成绩显著,港口基础设施规模扩大,生产能力增强,港口的服务能力和水平明显提高。近年来,伴随我国经济的快速发展,港口发展速度和建设脚步加快,港口密度骤然增大。在“十一五”期间,中国经济尤其是对外贸易发展对运输的需求不断增加,直接推动中国港口建设投资的增长,为港口扩张提供动力[6]。中国传统的港口[7],大都是综合性的接卸码头,没有具体的码头装卸分工。改革开放以后,特别是加入WTO以后,传统港口格局随着国内和国际两种资源和两种市场的双向选择而发生了历史性的变化,逐渐由港口的综合运用而出现明确的分工[7]。 20世纪80年代以后至今。世界经济发展的背景是计算机、通讯、网络现代高科技产业,其在发达国家的国民经济中取得了主导地位,它要求运输体系适应运程的需要,主要货物表现在集装箱运输量增长,散货、液体货物呈负增长[8]。三、本课题相关理论综述码头是海边、江河边专供乘客上下、货物装卸的建筑物。通常见于水陆交通发达的商业城市。人类利用码头,作为渡轮泊岸上落乘客及货物之用,其次还可能是吸引游人,及约会集合的地标。在码头周边常见的建筑或设施有邮轮、渡轮、货柜船、仓库、海关、浮桥、海鸥、鱼市场、海滨长廊、车站、餐厅、或者商场等[9]。JSP是基于Java Servlet以及整个java体系的web开发技术,作为J2EE体系中的重要一环,JSP为创建高度动态的web应用提供了一个独特的开发环境。JSP能够适应市场上包括Apache WebServer、IIS4.0在内的大部分服务器产品,可以适应绝大多数的事务处理,同时JSP代码经过服务器的解释执行后会直接嵌入到HTML语言中,这样就简化了页面的输出,也保留了脚本语言易于使用的优点[10]。 JDBC是用于执行SQL语句的java应用程序的接口,由一组用java语言编写的类与接口组成,在JSP中将使用JDBC来访问数据库。JDBC是一种规范,它让个数据库厂商为java程序员提供标准的数据库访问类和接口,一般的java开发工具都带有JDBC-ODBC桥驱动程序。这样,只要是能够使用ODBC访问的数据库系统,也就能够使用JDBC访问了[11]。 Struts2采用MVC模式[12],能够很好的帮助java开发者利用J2EE开发web应用。将MVC模式“分离显示逻辑和业务逻辑”的能力发挥的淋漓尽致。Struts2的核心是一个弹性的控制层,基于如Java Servlets、JavaBean与XML等标准技术,Struts有一组相互协作的类(组件)Servlet以及Jsp、tag、lib组成。基于Struts2架构的web应用程序基本上符合JSP Model2的设计标准。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员能够非常随心所欲的使用对象编程的思想进行数据库的操作。Hibernate可以应用在任何使用JDBC的场合,既可以在java的客户端程序使用,也可以在Servlet/JSP的web应用中使用,完成数据库持久化使用的重任[13]。 MySQL[14]是一个小型的关系型数据库管理系统,目前MySQL被非常广泛的应用在Internet上的中小型网站上。由于其资源小、速度快,总体拥有成本低,尤其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有的成本而选择了MySQL作为数据库。 JavaScript是一种由NetSccape的LiveScript发展而来的面向对象的客户端脚本语言,主要目的是为了解决服务器端语言,为客户提供更加流畅的浏览效果。当服务端需要对数据进行验证时,由于网络速度相当缓慢时,验证步骤浪费的时间太多,于是NetSccape的浏览器Navigator加入JavaScript,提供了数据验证的基本功能[15]。四、作者的观点和主要思路经过调研分析得知码头船只出行及配套货柜码放管理系统应该有的功能如下:本系统初步拟定以下两大个模块——船只管理和配套货柜码放管理。1.船只模块该模块实现对船只的管理。2.货柜模块该模块实现对货柜的管理。3.权限模块该模块实现对系统使用人员的权限管理。4.船只与货柜模块该模块实现对船只与货柜对应关系的管理。参考文献:[1] 鲁懿春 新加坡港在港口操作中的创新[J].集装箱化,2004 .[2] 汤承林,杨玉东.SQL Server 数据库实例教程[M].北京大学出版社,2010. [3] 李刚.《轻量级Java EE 企业应用实战-Struts2+Spring+Hibernate整合开发》[M](第三版).北京:电子工业出版社,2012.47 [4] 朱喜福,戴舒樽,王晓勇.Java 网络编程基础(第 2 版)[M].人民邮电出版社,2008. [5] 侯炳辉等.计算机信息管理专业(本科)毕业设计案例摘选[M].北京:清华大学出版社,2002.[6] 周游,赵炎主编. 网络市场营销.第一版.[M]. 北京:中国物资出版社,2005.[7] 任远. 基于 Web 的网上购物系统[D]. 电子科技大学, 2009. [8] 刘文全. 基于 Java 的学生成绩管理系统设计[J]. 吉林大学学报, 2010. [9] 任雪莲. B2C 电子商务网站的设计与构建[J].商场现代化, 2009.[10] 余浩东.《J2EE应用框架设计与项目开发》[M].北京:清华大学出版社,2008.2[11] 邬继成.《J2EE开源编程精要15讲:整合Eclipse、Struts、Hibernate和Spring的Java Web开发》[M].北京:电子工业出版社,2008.1[12] 耿祥义,张跃平.《JSP实用教程》[M](第二版).北京:清华大学出版社,2007.10[13] 钟德源,林国,程志艳.《JSP实用简明教程》[M](第二版).北京:清华大学出版社,2009.20[14] 刘世峰.<<数据库基础与应用>>.中央广播电视大学出版社,2004.[15] 王红. Java Web 应用开发技术实用教程[M].北京.水利水电出版社,2008.

毕业设计 开 题 报 告

2.本课题要研究或解决的问题和拟采用的研究手段(途径):
一、本课题要研究或解决的问题数据库设计是项目开发和系统设计中非常重要的一个环节,是因为数据库设计就像建设高楼大厦的根基一样,如果设计不好,在后来的系统维护、变更和功能扩充时,甚至在系统开发过程中都会引起比较大的问题。码头船只出行及配套货柜码放管理系统的用户安全性,要设置管理工作人员登录密码保持网络环境的安全,进而维护好系统的安全性。对于自己的网络编程技术,尽可能多的去学习一些新的语言,拓宽网络编程技术,拓宽视野。码头船只出行及配套货柜码放管理系统采用B/S架构,用户登录直接可以查看码头的现状,从而起到系统应有的作用。 系统业务流程是一个难点,所以我们要尽可能多的去了解码头船只出行及配套货柜码放管理的具体业务流程,从实践中发现问题、解决问题,提高自己系统的可用性、实用性等等。二、拟采用的研究手段本系统要实现码头船只出行及配套货柜码放管理系统所需要的基本功能,并采用MVC三层架构开发模式,即Struts+Spring+Hibernate三层架构,这些组件可以进行交互和重用;数据库连接池的统一管理,如果程序需要连接,则从此池中取出一个连接使用,使用完后又返回给该池,这些连接可以互用,从而提高的效率。另外,在构建开发环境的时候,我们使用MySQL+Tomcat+MyEclipse,由于这三者的结合已经相当优越,并且MySQL是一个免费的开源数据库,Tomcat是一个免费开源的Web服务器,MyEclipse是一个免费开源的Java集成开发工具。在开发模式与开发环境都架构好之后就可着手进行系统的数据库设计与系统原型的构建,这些工作做完之后,就可在系统原型的基础上对系统的各种功能模块进行扩充以至完善,并最后完成此系统的开发交付用户使用。

毕业设计 开 题 报 告

指导教师意见:
指导教师: 2014 年 3 月 1 日
所在学院审查意见: 负责人: 2014 年 3 月 2 日

毕业设计说明书

英文文献及中文翻译

学生姓名: 学号:

软件学院

学 院:

软件工程

专 业:

指导教师:

2014 年 6 月

Design and Application of Java Web Software Architecture Based on the SH Middleware

Ⅰ. INTRODUCTION

Java technology is currently a popular language for Web development. Java Web development model has been widely used in developing B/S software application. The development of Java Web technology is attributed to the development of Internet and Browsers.

There is a significant improvement in B/S structure based software in comparison with C/S structure based software. The client code and the server code of C/S structure based software must be stored in the client and the server, respectively. The client requests to the server, the server responses and then returns the result. It brings a lot of inconvenience for the application and the maintenance because each client must install the client code.

The client of B/S structure based software is Browser. The client code and the server code are stored in Web containers (Web server). The user sends a request to the server by the client Browser, the client code is downloaded to the client computer and runs in the Browser. It no longer requires the client computer to install the client code, which is different from C/S structure based software. Thus, not only the working capacity of system maintenance on the client computer is significantly simplified, but also the operation for the user is simple and consistent.

B/S structure based software on Java Web has been constantly improved. Model1 (JSP+JavaBean) and Model2 (JSP+JavaBean+Servlet) have been developed sequentially. The latter realized the MVC model (Model+View+Controller). The trend of B/S based software development becomes more and more hierarchical in structures. The objective of hierarchy is to separate the data from the program, separate the business logic from the display logic and separate the database management from the business logic. The hierarchical structure is good to the system expansion, so that the impact on the whole system caused by certain layer change can be minimized.

Presentation layer: provides user certain operation interfaces, receives the client requests, and displays the response results. It also recognizes small of amount of business logic.

Business layer: recognizes the main business logic. The business code is independent, so that there is no need to know how and where to display. In addition, it is also independent to the backend database.

Data layer: is an independent backend data resource. The data can be used by different programs. Currently, the typical data resource is the relation database.

The hierarchical Web software application has rapidly become the main stream of the Web application due to the above advantages.

Ⅱ. SH TECHNOLOGY

The author has studied the architecture and design technology of Java Web software application based on SH middleware, and applied them in developing a project.

  1. Struts

Struts2 is an open resource of presentation layer middleware in Java development platform. It recognizes the MVC pattern of presentation layer and it separates the view and control at presentation layer successfully. Struts2 consists of three parts: the core controller Filter Dispatcher, the logic controller Action and the view components. Filter Dispatcher is a Filter running in the Web application. It is responsible for intercepting all client requests, then determines which Action handles the client request through reading a configuration file “struts.xml”.

Action obtains the information, such as client request parameters and performs business processing. It also transfers the processed results to the client display components, such as JSP, FreeMarker, Velocity, and so on .

B. Hibernate

Hibernate3 is an open resource of data layer middleware in Java development platform and a mapping tool for object/relation database. It maps the entity object to a relation database very well, shields the relation database from application software, encapsulates the relation database access into the object access, and provides an unified data access interface for upper layers.

Hibernate3 not only provides the bidirectional mapping from Java class to data table, but also supplies the mechanism for data query, data alter, data repair and data recovery. Hibernate3 can be used in J2EE and J2SE application softwares in JDBC. Hibernate3 provides HQL (HibernateQuery Language), which can be used to fully access the date resources in object-oriented way.

Ⅲ. THE SOFTWARE ARCHITECTURE BASED ON SH

The authors introduced SH (Struts2+Hibernate3) middleware during the development of their project “The Design of the System for Zhanjiang Meteorological Forecast(0910262)”. Struts2 is introduced into presentation layer and Hibernate3 into data layer.

JSP: It is the client page, using Struts2 tags and receiving the client data from POJO in the form.

Action: It is the Struts2 Action Class, its private attributes are consistent with POJO of JSP form. Action does not need to perform large amount of business process. The major amount of business process is accomplished by business layer. Action class calls the business interface methods at business layer.

Business interface: It is a facade of business layer, which defines all business methods in a module. Each module of application software should have this interface to isolate the presentation layer from the business layer. The presentation layer and the business layer are coupled through the interface, so that it can reduce the interaction between the layers and is preferred by software expansion.

Business implement: It is the implement class for business interface, implementing all kinds of business functions of the software。

DAO interface: It is the data access interface which defines all data access methods in a module. Each module of the application software should have this interface to isolate the data layer from the business layer. The business layer and the data layer are coupled through the interface. It can reduce the interaction between the layers and is preferred by software modification.

DAO implement: It is the implement class for DAO interface, which calls the methods of the Manage Hibernate class to create Hibernate Session Factory object and to achieve the CRUD (Create, Retrieve, Update, Delete) for data access.

Manage Hibernate: It is a tool class for the Hibernate management. It contacts Hibernate directly. It provides methods to initialize Hibernate and creates Hibernate SessionFactory object according to the file “hibernate.cfg.xml” and ORM mapping files. It also provides methods to create Hibernate Session object, open Session, close Session and so on. Meanwhile, in order to recover data easily, log mechanism for the data layer should be provided and can be achieved by using Hibernate3 Log4J.

Hibernate3: It is Hibernate3 framework which is used to encapsulate the database. Each Session Factory object corresponds to a database and each Session object corresponds to a database access session. The Hibernate Session objects provide all kinds of methods for database access.

Database: It is a relation database. The MySQL 5.0 that is used by author is an open resource relation database.

Ⅳ. SOME TECHNOLOGICAL PROBLEMS IN DESIGNING

For security, each request from JSP must be acted as a Action request which is received by Struts2 Filter Dispatcher in order to avoid hyperlink between pages.

Hibernate Session Factory object is used to connect database and to create connection pool. Therefore, it consumes more system resources. It is a heavyweight and thread secure object. It should be shared by multiple threads. In order to save memory and to improve operation efficiency, static way should be adopted to use this heavyweight object.

Hibernate Session object is corresponding to a data access session. It is a lightweight object. It should be created and destroyed frequently in application software.

In order to ensure the integrity of the data, the operations collection of database access must be executed completely, so that Hibernate JTA (Java Transaction API) must be used to realize the session transaction.

Session is an insecure thread. To prevent conflicts, it is best for each thread to create one Session object in application software, i.e. each session request should have its own Session object instance. A better way is to use the Thread Local class to bind its corresponding Session object respectively.

The key code of binding Session objects:

private static ThreadLocal<Session> threLocal = new

ThreLocal<Session>();

public static Session currentSession()

{

Session cSession = (Session)threLocal.get();

if(cSession == null)

{

cSession = sessionFactory.openSession();

threLocal.set(cSession);

}

return (Session) threLocal.get();

}

public static void closeSession()

{

Session cSession = (Session)threLocal.get();

if (cSession != null)

{

cSession.close();

threLocal.set(null);

}

}

Ⅴ. S CONCLUSIONS

In this software architecture, the presentation layer uses Struts2 middleware. It receives client data, transfers the client requests to the related business module. Meanwhile, it demonstrates the responding page.

The data layer maps object/relation in the relation database by using Hibernate3 middleware. Static way should be adopted to use the heavyweight Hibernate SessionFactory object for saving the system resources, ThreadLocal class should be used to bind the lightweight Hibernate Session object to ensure the security of the thread.

Coupling through the interfaces of different layers can minimize the interaction the layers. It helps to change and expand the application software.

In order to use and manage Hibernate consistently, it is necessary to design a ManageHibernate class, which provides services for DAO.

From the front stage JSP to the back stage Hibernate, POJO is always used as transfer parameter between layers and operated as data object.

POJO of presentation layer encapsulating client data can be the same class as POJO of data layer making ORM mapping.

基于SH中间件的Java Web软件架构设计与应用

1. 引言

Java技术是目前流行的开发Web语言。Java Web开发模式已被广泛用于开发B/S软件应用。Java Web技术的发展归因于互联网浏览器的发展。

基于B/S结构的软件与基于C/S结构的软件相比较有一个显著的改进。基于C/S结构的软件,客户端代码和服务器端代码必须分别存储在客户端和服务器端。客户端请求发送到服务器,然后服务器响应请求并且返回结果。它在维修和应用中带来了很多不便,因为每个客户端必须安装客户端代码。

基于B / S结构软件的客户端浏览器。客户端代码和服务器端代码都存储在Web容器(Web服务器)中。用户通过客户端浏览器发送一个请求到服务器,客户端代码被下载到客户端计算机,并且在浏览器中运行。它不再需要客户端计算机安装客户端代码,这是不同于基于C / S结构的软件。因此,不仅在客户端计算机系统维护的工作能方面显著简化,同时也使用户的操作简单和一致。

基于B/S结构的Java Web软件不断改进。模型1(JSP + JavaBean)和模型2(JSP + Servlet + JavaBean)已先后发展起来。后者实现了MVC模型(模型+视图+控制器)。基于B/S的软件在结构发展方面变得越来越有层次。层次结构的目的是从程序中分离出数据,将业务逻辑从显示逻辑中分离出来,将数据库管理从业务逻辑中分离出来。层次结构有利于系统扩张,以便对整个系统因某层的改变所造成的影响可以最小化。

表示层:提供用户特定的操作接口,接收客户端请求,并显示响应结果。它也可以识别小数量的业务逻辑。

业务层:识别主要的业务逻辑。业务代码是独立的,不需要知道如何以及在哪里显示。此外,它也是独立的后端数据库。

数据层:是一个独立的后端数据资源。数据可以被不同的程序使用。目前,典型的数据资源是关系数据库。

由于上述几个优点,分层网络软件应用程序已迅速成为主流的Web应用程序。

2. SH框架技术

作者研究了基于SH中间件的Java Web软件应用程序的体系结构和设计技术,并应用在开发项目上。

  1. Struts
    Struts2是在Java开发平台上的一个开放资源的表示层中间件。它认识到表示层的MVC模式,成功地在表示层分离了视图和控制。Struts2包括三个部分:核心控制器过滤调度员,逻辑控制器动作和视图组件。过滤调度分配器是一个在运行的Web应用程序上的过滤器。它负责拦截所有客户端请求,然后通过阅读配置文件“struts.xml”确定处理客户端请求的方法。
    执行方法获得信息,例如客户端请求的参数和执行业务处理。它还将处理结果传输到客户端显示出来,如JSP,FreeMarker,速度,等[2]。
  2. Hibernate

Hibernate3是在Java开发平台中数据层中间件的开放资源和对象/关系数据库的映射工具。它将实体对象到关系数据库映射的很好,屏蔽了应用软件的关系数据库,关系数据库的访问封装到对象的访问,并为上层提供了一个统一的数据访问接口。

Hibernate3不仅提供了从Java类双向映射到数据表,而且提供数据查询、数据修改、数据修复、数据恢复的机制。Hibernate3可用于J2EE和J2SE应用软件开发的JDBC方面。Hibernate3提供HQL(Hibernate查询语言),可以完全以面向对象的方式访问数据资源。

3. 基于SH框架的软件体系结构

作者介绍了SH中间件在气象预报系统设计项目中的应用。Struts2在表示层,Hibernate3在数据层。

JSP:客户端页面,使用Struts2标记和在表单中从POJO接收客户端数据的形式。

Action:Struts2 Action类,其私人属性符合JSP表单的POJO。Action不需要执行大量的业务流程。主要的业务流程由业务层完成。Action类在业务层调用业务接口的方法。

业务接口:它是一个正面的业务层,定义了各业务模块中的方法。应用软件的各个模块应该有这个接口来分离表示层与业务层。表示层和业务层之间通过接口连接,这样可以降低层与层之间的相互作用,是软件扩展的首选。

业务实现:业务接口的实现类,实现软件的各种业务功能。

DAO接口:它是数据访问接口,它定义了所有的数据访问模块中的方法。应用软件的各个模块应该有这个接口来分离的数据层和业务层。业务层和数据层之间通过接口连接。它可以降低层与层之间的相互作用,且修改软件者优先。

DAO实现:DAO接口的实现类,调用管理Hibernate类的方法来创建Hibernate会话对象和实现CRUD(创建、检索、更新、删除)数据访问。

Manage Hibernate:它是一个Hibernate管理的工具类。它直接接触Hibernate。它根据 “hibernate.cfg. xml”文件和ORM映射文件提供了初始化Hibernate和创建Hibernate 会话工厂对象的方法。它还提供了创建Hibernate会话对象的方法,打开,关闭会话等等。与此同时,为了方便的恢复数据,日志数据层应提供机制,可以通过使用Hibernate3 Log4J实现。

Hibernate3:Hibernate3框架用于封装数据库。每个Session Factory对象对应一个数据库和每个会话对象对应一个数据库访问会话。Hibernate会话对象提供各种各样的数据库访问方法。

数据库:这是一个关系数据库。作者使用MySQL 5.0,它是一个开放的资源关系数据库。

4. 设计中的一些技术问题

为了安全,来自JSP页面的每个请求必须充当一个Action请求(通过Struts2 Filter Dispatcher 接收),这样是为了避免网页之间的超链接。

Hibernate 会话工厂对象是用于连接数据库并创建连接池。因此,它会消耗更多的系统资源。这是一个重量级的和线程安全对象。它应该被多个线程共享。为了节省内存,提高操作效率,应该采用静态方式使用这个重量级的对象。

Hibernate会话对象对应一个数据访问会话。它是一个轻量级对象。它应该在应用软件中频繁的被创建和销毁。

为了确保数据的完整性,数据库访问的操作集合必须被完全执行,以便Hibernate JTA(Java事务API)必须应用到会话事务。

Session是一个不安全的线程。为了防止冲突,最好在应用软件中为每个线程创建一个会话对象,即每个会话请求应该有自己的会话对象实例。一个更好的方法是使用线程本地类分别绑定相应的会话对象。

结合会话密钥代码对象:

private static ThreadLocal<Session> threLocal = new

ThreLocal<Session>();

public static Session currentSession()

{

Session cSession = (Session)threLocal.get();

if(cSession == null)

{

cSession = sessionFactory.openSession();

threLocal.set(cSession);

}

return (Session) threLocal.get();

}

public static void closeSession()

{

Session cSession = (Session)threLocal.get();

if (cSession != null)

{

cSession.close();

threLocal.set(null);

}

}

5. 结论

在这个软件体系结构中,表示层使用Struts2中间件。它接收客户端数据,将客户端请求转移到相关业务模块。与此同时,它还响应页面。

数据层地图对象/关系在关系数据库中通过使用Hibernate3中间件实现。静态方法应采取使用重量级Hibernate Session Factory对象节省系统资源,应该使用ThreadLocal类绑定轻量级Hibernate会话对象,以确保线程安全的。

通过不同层次的接口可以减少交互层。它有助于改变和扩展应用软件。

为了一致的使用和管理Hibernate,有必要设计一个ManageHibernate类,对DAO提供服务。

从前台JSP到后台Hibernate,POJO在层和操作数据对象之间进行参数传递

POJO的表示层封装客户端数据,可以是相同的类作为数据层的POJO ORM映射。

毕业设计说明书

码头船只出行及配套货柜码放

管理系统

码头船只出行及配套货柜码放管理系统

摘要

伴随着全球化的发展,码头的物流和客运增多,码头业务迎来新的高峰。然而码头业务的增加,导致了人员成本和工作量的增多。为了解决这一基本问题,码头船只出行及配套货柜码放管理系统应运而生。

此次码头船只出行及配套货柜码放管理系统的开发与设计将使用当前主流的编程语言Java来开发,采用流行的Java三大框架(Spring + Struts +Hibernate)实现出一个功能相对齐全、界面简洁、使用方便、用户体验度相对较高的码头船只出行及配套货柜码放管理系统。

该系统为用户提供了一个码头船只出行及配套货柜码放管理系统,在系统中可以管理用户、管理船只、管理货柜等等,另外设置了两种权限(管理员和员工),不同权限的用户登录后操作不一样,让用户体会到一个真实的码头船只出行及配套货柜码放管理系统。

本设计遵循码头业务流程,从实际出发,多方调研,反复测试,实现一个功能稳定、性能极佳的码头船只出行及配套货柜码放管理系统。

关键词:系统,Java,管理,web

Pier boats and supporting container stacking management system

Abstract

With the development of globalization, the progress of the society, increasing terminal logistics, passenger transport, port operations will usher in new heights. Increase the terminal business, lead to increased personnel costs, staff workload. In order to solve the basic problem, emerge as the times require ships travel and related container stacking management system.

Development and design of the pier boats and supporting container stacking management system will use the current mainstream programming language Java to develop, using the popular Java three framework (Spring + Struts +Hibernate) to realize the function of a relatively complete, the interface is simple, easy to use, the user experience the ships travel and related container stacking management system the relatively high.

The system provides a ferry boats and supporting container stacking management system for the user, the system can manage users, management, management of container ships and so on, in addition to set up two kinds of permissions (administrators and staff), without permission of the user login and operation are not the same, lets the user feel a real ships travel and related container stacking management system.

The design follows the wharf business process, from a practical point of view, researches, repeated testing, to achieve the ships travel and related container stacking a functional management system, excellent stability.

Key words: System, Java, management, web

目录

1 引言11

1.1 课题研究的背景和意义11

1.2 国内外现状11

1.2.1 国外主要现状11

1.2.2 国内主要现状22

1.3 课题研究的目的及主要内容33

1.3.1 课题研究的目的33

1.3.2 课题研究的主要内容33

1.4 可行性分析33

1.4.1 技术可行性研究33

1.4.2 经济可行性研究44

1.4.3 操作可行性研究44

1.5 论文内容安排44

2 系统开发技术及环境55

2.1 java语言55

2.2 开发工具My Eclipse55

2.3 My SQL数据库66

2.4 JSP技术66

2.5 Servlet77

2.6 系统开发环境88

3 系统需求分析88

3.1 系统功能需求88

3.2 系统性能需求99

3.3 系统运行需求1010

3.4 系统的用例分析1010

4 系统的设计与实现1212

4.1 总体设计1212

4.1.1 软件结构设计1212

4.1.2 数据库设计1212

4.2 详细设计1414

4.2.1 首页实现1515

4.2.2 用户登录的实现1616

4.2.3 用户管理的实现1919

4.2.4 个人信息维护的实现2020

4.2.5 船只管理的实现2121

4.2.6 货柜管理的实现2323

4.2.7 路线管理的实现2525

4.2.8 船只分配路线的实现2727

4.2.9 船只分配货柜的实现2929

5 系统测试3232

结论3434

参考文献3535

致谢3636

1 引言

1.1 课题研究的背景和意义

21世纪是一个全新的具有挑战性的世纪,全世界的码头都将面对全新的问题,面临新的挑战。全球化大潮的涌动,催促着一种新的国际体制的加速形成。国际贸易港口码头之间的合作与竞争将更加频繁和激烈。以信息技术为代表的新技术革命迅猛发展,高集成度、智能化、光纤化、数字化、综合化、网络化,为船运和码头业提供了更为广阔的发展空间;国际经济结构的调整,经济全球化的加速,必将促进港口间国际贸易的发展与运量的增长[1]。

随着计算机管理技术的高速发展,各个领域都应用计算机对相关信息进行管理。本系统是一个复杂而且涉及内容众多的系统,码头船只出行及配套货柜码放管理系统是码头管理系统中一个比较重要的部分。为了码头管理工作节省不必要的人力、物力和资源,迫切需要较好的码头船只出行及配套货柜码放管理系统软件来提高工作效率和信息的准确率,以降低经济成本。利用计算机、网络、计算机应用软件等现代科技和手段,加强和改进码头管理工作,可以降低管理工作的成本,减轻工作强度,提高工作效率。科技的发展就是要为生产服务,有了码头船只出行及配套货柜码放管理系统一定会为码头工作带来便捷。

1.2 国内外现状

1.2.1 国外主要现状

(1)世界港口码头发展的重心正在加快向中国转移,二战过后,世界港口码头发展日新月异。随着世界经济的变化更迭,传统的大港地位发生变动,新的优势港口码头不断涌现。

20世纪90年代以来,世界港口码头业最大的变化莫过于其发展重心已经向亚洲,特别是中国转移,而且转移的速度正在加快。全世界有许多著名的海港码头。据有资料记载,目前全世界有亿吨港20个;最大的是新加坡港,2000年货物吞吐量达3.3亿吨;货物吞吐量居前20位的港口中,中国占9个(上海、宁波、广州、天津、青岛、秦皇岛、大连和香港、高雄),美国占4个,日本占3个,欧洲占2个,韩国占2个。按集装箱吞吐量,最大的港口是香港,2002年吞吐量达1900万标准箱;排名居前10位的港口中,中国占4个(香港、上海、高雄、深圳),欧洲占3个,新加坡、韩国、美国各占1个。按照最新统计,2003年上海港货物吞吐量超过3亿吨,集装箱吐量将达到1120万TEU左右,超过韩国釜山港位居世界集装箱港口第三位。深圳港将跨人亿吨大港行列,集装箱吞吐量也可突破1000万TEU达1050万TEU,居世界集装箱港口第四位,由此,世界排名居前4位的港口中,中国就占3个,优势已经十分明显。我国已是世界名副其实的港口大国。目前,中国大陆已拥有1467个港口,其中沿海港口165个;对外开放口岸134个[2]。

(2)港口码头的科技含量越来越高,近年来,随着科技进步步伐的加快,为码头大型化、装卸作业高速化创造了条件,码头科技含量越来越高,码头作业全过程由电子设备、计算机系统指挥和监控。特别是集装箱装卸设备发生了一系列变化,岸桥、场桥的起重量,起升高度,外伸距,速度参数等均日益增大,向大型高速高效方向发展。由于竞争异常激烈,注入新的高科技内容以提高港口码头作业率是各港口经营者和港机供货商采取的措施和不断追求的目标[2]。

自20世纪70年代初新加坡港修建了该地区第1个集装箱码头以来,PSA(新加坡港务局)就不断引进新的程序系统提高码头操作效率,完善服务标准,一步到位满足客户的需求。过去的几年中,PSA在其技术上的投资已经产生出新的产品与服务,使客户拥有更大的灵活性,节省了时间与成本。这些创新包括无人驾驶吊车、自动门卫申报系统以及无纸化装卸单证系统[3] ,高效方便的管理码头的系统也势在必行。

1.2.2 国内主要现状

我国港口经过60年的发展,码头成绩显著,基础设施规模扩大,生产能力增强,港口码头的服务能力和水平明显提高。近年来,伴随我国经济的快速发展,港口发展速度和建设脚步加快,港口密度骤然增大。在“十一五”期间,中国经济尤其是对外贸易发展对运输的需求不断增加,直接推动中国港口码头建设投资的增长,为港口码头扩张提供动力[4]。

中国传统的港口,大都是综合性的接卸码头,没有具体的码头装卸分工。改革开放以后,特别是加入WTO以后,传统港口格局随着国内和国际两种资源和两种市场的双向选择而发生了历史性的变化,逐渐由港口的综合运用而出现明确的分工[5]。

20世纪80年代以后至今。世界经济发展的背景是计算机、通讯、网络现代高科技产业,其在发达国家的国民经济中取得了主导地位,它要求运输体系适应运程的需要,主要货物表现在集装箱运输量增长,散货、液体货物呈负增长。码头的功能战略为运输方式的交换点、散货、杂货的集散中心,运输、金融、信息、工业与商业中心、现代物流的集散中心、全程运输中心的贸易后勤基地。组织特点为港口与用户关系密切,实现资金流、信息流与物流的同步发展。随着国际市场更加开放,海洋运输体系将提高到更加重要的位置[6]。

1.3 课题研究的目的及主要内容

1.3.1 课题研究的目的

为了方便港口码头的管理,船只的管理,提高工作人员的工作效率并且能更好更准确的为码头服务,开发一个完善的码头船只出行及配套货柜码放管理系统十分必要。

本课题的主要目的就是开发一个实用的完善的码头船只出行及配套货柜码放管理系统,以方便港口码头工作人员更好的去管理船只出行,并且能够更高效的分配货柜,提高港口运输业效率。

1.3.2 课题研究的主要内容

随着社会的进步和计算机的不断普及,各行各业的管理、控制都越来越离不开计算机的辅助。该课题就是要以港口码头发展为背景,研究码头船只出行及货柜分配的最佳管理方式。

本系统从用户来看分为三部分:管理员、一般(看)用户、一般(操作)用户;

(1)管理员有对船只、货柜等的操作功能(增删改等)以及对一般用户的管理功能;

(2)一般(看)用户有对各类信息的查看功能以及个人信息维护功能;

(3)一般(操作)用户对新闻公告、船只、货柜、路线等有增删改功能以及个人信息维护功能。

1.4 可行性分析

开发任何一个基于计算机的系统都会受到时间和资源的限制。因此在开发软件项目之前,必须根据可利用的时间和资源等条件进行可行性研究。可行性研究工作的主要任务不是研究如何解决问题,而是要用最小的代价在最短的时间内确定该项目是否具有开发的可行性。

该文的可行性研究主要包括技术可行性研究,经济可行性研究,操作可行性研究,等等。

1.4.1 技术可行性研究

技术上的可行性分析要考虑将来要采用的硬件和软件技术能否满足用户提出的要求(如计算机的容量、速度等)。此外,还要考虑开发人员的水平,作为软件工程专业的学生,数据库设计方面理论上还算扎实,在学校里生活了4年,对这个管理模式应该比较熟悉。我掌握了数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,从一定程度上具备了开发一个小型系统的能力,再加上参考一些技术性文档,查询相关资料等,因此总体上该项目在技术上是可行的[7]。

在IT行业中从业的工作人员一般都要求掌握计算机技术,具有一定的软硬件基础,会使用各种管理软件,熟悉IT产品。因此,有的码头对员工的素质要求比较高,从管理层到下面的前台操作人员,都要求具有一定的计算机基础,所以在新系统投入使用时,只要对员工进行少量的培训,系统的功能和使用方法就基本上能够使系统顺利运行。

1.4.2 经济可行性研究

软件就其它产品来说,属于高端行业,无论是产品的价格还是质量都比较高,而码头都要求有雄厚的资金支持。所以,在系统的开发过程中,码头完全有能力承担开发费用。因为通过软件系统的管理可以减少码头管理工作不必要的开支,同时该系统可以提高码头的管理效率,即提高了码头的经济效益,所以从经济上完全是可行的。

1.4.3 操作可行性研究

本系统采用基于B/S结构实现系统,系统采用最友好的交互界面,简洁明了。开发工具使用了具有可视化界面的Myeclipse,它不需要配置JDK,并且有自带的Tomcat。数据库方面采用了MYSQL。这些开发工具的使用,使得开发方便快捷,具有操作可行性。

综合以上三方面,无论是从技术上或者经济上还是操作上该系统具有很高的开发可行性。

1.5 论文内容安排

该码头船只出行及配套货柜码放管理系统,我计划完成对码头船只分配货柜和路线的管理问题。论文内容分为六大部分。

第一部分是引言,简要描述课题的背景、课题的意义以及研究目的等。从而得到开发一个针对码头工作者的码头船只出行和货柜码放管理系统的可行性与必要性。

第二部分则是系统开发工具及环境分析,对系统中用到的的关键语言和技术进行大致的解释。

第三部分对码头船只出行及配套货柜码放管理系统的需求进行了分析,列出了详细的需求列表,对系统的功能、性能、运行等方面进行有效的分析。

第四部分对该系统进行详细的设计与实现,针对各个模块的流程与类进行了详细设计,最后对系统的数据库进行了设计。通过该章,为之后的编码提供了基础。

第五部分则主要描述了对系统核心功能的测试。

第六部分进行结论的总结,总结论文的研究方法与成果,并且说明系统目前存在的问题,并展望今后的扩展方向。

2 系统开发技术及环境

2.1 java语言

本次开发中我使用了java语言进行实现。采用该语言的原因主要是它在跨平台、动态的Web、Internet计算等方面很出色。并且常用的浏览器现在均支持Java applet。另一方面,Java技术在不断更新。Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言,是一种非常实用的语言[8][9] 。

Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface,简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可以分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。

2.2 开发工具My Eclipse

MyEclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。对于编程人员来说,MyEclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)会提供很大的便利。由于My Eclipse 中的每样东西都是插件,对于给 MyEclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 MyEclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C++ 、 COBOL、PHP 等编程语言的插件已经可用。

2.3 My SQL数据库

MySQL是一个关系型数据库管理系统,是最流行的关系型数据库管理系统。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,Microsoft SQL Server,Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作[10] 。

2.4 JSP技术

JSP是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。

JSP全名为java server page,其根本是一个简化的Servlet设计,他实现了HTML语法中的java扩张(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能[11] 。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

2.5 Servlet

Servlet是在服务器上运行的小程序。这个词是在Java applet的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在服务器端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务[11]。

服务器上需要一些程序,常常是根据用户输入访问数据库程序。这些通常是使用公共网关接口(CGI(Common Gateway Interface))应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Java servlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。

最早支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:

客户端发送请求至服务器端。

服务器将请求信息发送至Servlet。

③Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求。

服务器将响应返回给客户端。

Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java ServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。

一个Servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然Servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。

2.6 系统开发环境

J2EE的开发平台是一个开放的平台,可以选用Sun公司的开发平台NetBeans、也可以使用最为流行的开发平台Eclipse等。在这个课题里我选用现在最为通用的,也是开发效率最高的开发平台My eclipse。由于本课题采用的SSH架构在开发和使用阶段对硬件没有特殊要求,所以在设计开发过程中,出于性能和效率的考虑,我们采用了较为简单的Tomcat作为Web服务器。如下是该码头船只出行及其配套货柜码放管理系统的开发环境:

操作系统:Windows 7

数据库:MySQL 5.0

Web服务器:Tomcat 6.0

Java编译器:JDK 1.6

开发框架:Struts 2 + Spring 2.5+ Hibernate 3.1

开发工具:My eclipse

3 系统需求分析

一款实用的软件就是要能够让用户得到很好的体验,本系统开发就是本着这样的目标,首先必须了解用户真正的需要。做好一个强大的市场调查和合理的需求分析,在开发过程中多问自己一些“用户需要什么”的问题。

3.1 系统功能需求

软件开发前的需求分析[12]是软件最终成败的关键,如果没有进行详细的需求分析,没有充分理解系统中各类用户的实际需求,那么最终的软件成品充其量只能说是软件开发者的作品而已,而没有任何实用价值可言。所以,在开发码头船只出行及其配套货柜码放管理系统之初 ,要对系统需求进行详细的分析,本系统所实现的最终目标:就是要使码头管理实现全面的规范化、科学化、自动化、高效化和流程化。对于码头日常管理来说,主要是码头船只的管理,码头信息的发布,码头船只配套货柜的管理,码头出行路线的管理等等。该系统为基于web开发的码头船只出行及配套货柜码放管理系统,通过ssh框架实现的。拥有的功能有:用户登录、修改个人信息、查看码头信息;增加、删除、修改系统管理人员;增加、删除、修改船只信息;删除、增加、修改船只路线信息;增加、修改、删除货柜信息。因此,该系统应具有如下的功能,如图3.1.1。

a.用户登录:该模块分为三种用户的登录,一是一般(查看)用户,他的权限只有修改个人信息和查看功能;二是一般(操作)用户登录,他可以修改自己的信息,还可以对系统内容进行增加、删除和修改;三是具有最大权限的系统管理员,他可以修改自己的信息,并且不仅有查看、增删改的基本权限,还有对用户的管理和注册权限。

b.用户管理:该模块实现对用户的增加,删除和修改

c.个人信息维护:该模块实现用户对自己的名字和密码等个人信息的修改

d.新闻公告管理:该模块实现新闻公告的增加,删除和修改

e.船只管理:该模块实现船只的增加,删除和修改

f.路线管理:该模块实现路线的增加,删除和修改,以及船只与路线关系的管理

g.货柜管理:该模块实现货柜的增加,删除和修改,以及船只与货柜关系的管理

图3.1.1 系统功能图

3.2 系统性能需求

系统必须满足的一些使用过程中要做到的技术目标,通常包括速度,安全性等方面的需求。

3.3 系统运行需求

软件方面:系统使用Windows 7操作系统和Tomcat6.0以上版本,MyEclipse8.5 为开发和测试平台,前台以JSP为前端界面编辑环境,后台用MySQL5.5来管理数据库。运行时对JDK的版本要求为1.6。

硬件方面:PIII500 CPU 或更高配置,256M内存或更高,20G以上硬盘,更好有10M共享带宽或更高。

3.4 系统的用例分析

码头船只出行及配套货柜码放管理系统主要是面对三类用户,即一般(看)用户、一般(操作)用户、系统管理员,不同的角色有不同功能.。因此,在设计系统的时候,将系统的整体功能划分为三个子系统,为一般(看)用户子系统、一般(操作)用户子系统和系统管理员子系统。 这三个系统因为其面对的用户不同,其功能也不相同,具有相对独立性。但它们又是紧密联系和相互关联的,各用例设计如图3.4.1-图3.4.3所示。

图3.4.1 管理员用例图

图3.4.2 一般(看)用户用例图

图3.4.3 一般(操作)用户用例图

4 系统的设计与实现

4.1 总体设计

4.1.1 软件结构设计

系统的功能结构图,如图4.1.1.1所示。该系统从总体功能结构上分为四大块。第一块是用户管理,包括对用户的增加、删除和修改。第二块是船只管理,包括对船只信息的增加、删除和修改。第三块是货柜管理,包括对货柜信息的增加、删除和修改。第四块是对应关系管理,包括为船只分配路线的管理和为船只分配货柜的管理。

图4.1.1.1 系统功能模块图

4.1.2 数据库设计

数据库设计在软件开发的过程中起着极其重要的作用[13][14]。数据库设计是否合理对整个软件的开发是至关重要的。数据库的设计通常包括下述四个步骤:

(1)模式设计。模式设计的目的是确定物理数据结构。一般用第三范式,第三范式形式的实体及关系数据模型是模式设计过程的输入,模式设计的主要问题是处理具体的数据库管理系统的结构约束。

(2)子模式设计。子模式是用户使用的数据视图。

(3)完整性和安全性的设计。

(4)优化。主要目的是通过改进模式和子模式,来优化数据的存取。

对于该码头管理系统,我从分析的资料和设计的功能模块出发,设计出7张数据库表机构,分别是新闻信息表、用户信息表、船只信息表、货柜信息表、船只货柜对应关系信息表、路线信息表和船只路线对应关系信息表。具体内容如表4.1.2.1-4.1.2.7所示。

表4.1.2.1 新闻信息表

表4.1.2.2 用户信息表

表4.1.2.3 船只信息表

表4.1.2.4 货柜信息表

表4.1.2.5 船只货柜对应关系信息表

表4.1.2.6 路线信息表

表4.1.2.7 船只对应路线信息表

4.2 详细设计

详细设计阶段的根本目的是确定应怎样具体地实现所要求的系统,也就是在这个阶段的设计工作,应该是对针对目标系统的精确描述,从而在编码阶段能够把这个描述直接翻译成可用某种程序设计语言书写的程序。详细设计阶段的任务是设计出程序的“蓝图”,程序员以后根据这个蓝图写出实际的程序代码[15]。

详细设计的目标不只是在逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。在每个模块中都应有相应的功能界面。

结构程序设计是实现上述目标的关键技术,是详细设计的逻辑基础。下面是系统中主要的功能模块及其子功能模块具体的实现方法(仅对一些典型基础模块进行说明)

4.2.1 首页实现

首页主要分为Banner信息栏,导航栏,和版权信息栏。如图4.2.1.1所示。点击导航栏的任意某一内容,屏幕会列出想要查看的信息。如图4.2.1.2所示,点击出行船只,就会以分页显示的方式列出最新码头船只出行的情况。

图4.1.1.1 首页界面

图4.2.1.2 点击出行船只后显示界面

实现船只出行信息罗列的核心代码如下:

public String getAll() {

HttpServletRequest request = ServletActionContext.getRequest();

request.setAttribute("newsmodel",chuxingEbi.getAll(0, 6));

request.setAttribute("newsnum",chuxingEbi.getAllCount());

return "newsall";

}

public String getAllqt() {

HttpServletRequest request = ServletActionContext.getRequest();

request.setAttribute("newsmodel",chuxingEbi.getAll());

request.setAttribute("newsnum",chuxingEbi.getAllCount());

return "qtall";

}

4.2.2 用户登录的实现

登录界面分为管理员登录与一般用户(操作、看)登录。登录页面设计相对比较简单,界面清晰,背景配以黑灰渐变色,首页运行效果,如图4.2.2.1。

用户的登录分为三种情况,第一种是管理员登录,如图4.2.2.2是管理员登录后的界面。管理员可以进行用户管理,个人信息维护,新闻公告管理,船只管理,货柜管理,当然还可以查看新闻信息。

第二种是一般(操作)用户,如图4.2.2.3显示的是一般用户登录后的界面,与管理员操作大体相同,只是功能相对较少些。一般用户登录代码与管理员代码大致相似,只是功能少一些。

第三种是一般(看)用户,该图4.2.2.4是一般用户(看)登录后的界面,只有查看权限,包括新闻,船只,货柜及其路线的查看。该用户的登录实现代码亦同上。

图4.2.2.1 首页登录界面

图4.2.2.2 管理员登录界面

图4.2.2.3 一般用户(操作)登录界面

图4.2.2.4 一般用户(看)登录界面

用户登录后主要是对各模块进行权限内的合法操作,其实现登录的核心代码如下:

public String login()

{

HttpServletRequest request = ServletActionContext.getRequest();

HttpSession session = request.getSession();

String username = request.getParameter("username");

String password = request.getParameter("password");

//System.out.println(username+";"+password);

UserQueryModel qm = new UserQueryModel();

qm.setUsername(username);

qm.setPassword(password);

int num = userEbi.getByConditionCount(qm);

//System.out.println("数量:+"+num);

if(num>0){

int sta = userEbi.getByCondition(qm, 0, 100).get(0).getState();

switch (sta) {

case 0:

session.setAttribute("useradmin", username);

return "admin";

case 1:

session.setAttribute("useradmin", username);

return "admin1";

case 2:

session.setAttribute("useradmin", username);

return "admin2";

default:

request.setAttribute("error", "用户名或密码不对");

return "loginf";

}

}else{

request.setAttribute("error", "用户名或密码不对");

return "loginf";

}

}

4.2.3 用户管理的实现

只有管理员才有用户管理的权限,该功能模块可以实现管理员对用户密码以及权限的初始设置和修改。用户的权限有看和操作两种。管理员还可以通过点击删除按钮来实现对用户的删除。如图4.2.3.1所示。

图4.2.3.1 用户管理界面

图4.2.3.1显示的是管理员的用户管理界面,其核心代码如下:

//根据Id得到用户信息去修改

public String getUserById(){

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

UserQueryModel qm = new UserQueryModel();

qm.setId(id);

request.setAttribute("userupdate", userEbi.getByCondition(qm, 0, 20));

return "byid";

}

//删除

public String deletedById() {

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

userEbi.delete(id);

return "delete";

}

//修改

public String update() {

userEbi.update(userModel);

return "update";

}

public String create() {

HttpServletRequest request = ServletActionContext.getRequest();

userEbi.create(userModel);

return SUCCESS;

}

4.2.4 个人信息维护的实现

个人信息的维护功能模块的实现,方便了用户对自己的个人信息的修改,比如名字和密码。用户登录该系统之后,通过个人信息维护模块,重新输入自己的名字和密码来修改个人信息。其界面如图4.2.4.1所示。

图4.2.4.1 个人信息维护界面

实现个人信息维护的核心代码如下:

public String getxiugai(){

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

UserQueryModel qm = new UserQueryModel();

qm.setId(id);

request.setAttribute("userupdate", userEbi.getByCondition(qm, 0, 20));

return "byid";

}

4.2.5 船只管理的实现

该功能模块实现了可操作人员对船只的增加、删除和修改功能。用户通过添加船只编号、名称、体积和详细信息来增加船只,实现船只的增加功能。如图4.2.5.1。通过船只管理模块,点击想要修改或者删除的船只信息后方的修改或者删除按钮,实现对船只的修改和删除功能。如图4.2.5.2所示。

图4.2.5.1 船只增加界面

图4.2.5.2 船只管理界面

上图4.2.5.1和4.2.5.2显示的是船只的增加和管理界面,其核心代码:

public String create() {

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

String ttime = df.format(new Date());// new Date()为获取当前系统时间

chuanzhiModel.setTtime(ttime);

chuanzhiEbi.create(chuanzhiModel);

return SUCCESS;

}

//根据Id得到船只信息去修改

public String getUserById(){

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

ChuanzhiQueryModel qm = new ChuanzhiQueryModel();

qm.setId(id);

request.setAttribute("newsupdate", chuanzhiEbi.getByCondition(qm, 0, 20));

return "byid";

}

//删除

public String deletedById() {

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

chuanzhiEbi.delete(id);

return "delete";

}

4.2.6 货柜管理的实现

码头船只的配套货柜码放管理功能模块,实现了对货柜的增加、删除和修改。用户通过对货柜编号、名称、体积和详细信息的输入,来完成货柜的增加功能。如图4.2.6.1。在货柜管理中,通过货柜的删除按钮和修改按钮实现目标货柜的删除和修改。如图4.2.6.2所示。

图4.2.6.1 货柜增加界面

图4.2.6.2 货柜管理界面

图4.2.6.1和图4.2.6.2显示的是货柜增加和管理功能,其核心代码如下:

public String create() {

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

String ttime = df.format(new Date());// new Date()为获取当前系统时间

huoguiModel.setTtime(ttime);

huoguiEbi.create(huoguiModel);

return SUCCESS;

}

//根据Id得到货柜信息去修改

public String getUserById(){

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

HuoguiQueryModel qm = new HuoguiQueryModel();

qm.setId(id);

request.setAttribute("newsupdate", huoguiEbi.getByCondition(qm, 0, 20));

return "byid";

}

//删除

public String deletedById() {

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

huoguiEbi.delete(id);

return "delete";

}

public String update() {

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

String ttime = df.format(new Date());// new Date()为获取当前系统时间

huoguiModel.setTtime(ttime);

huoguiEbi.update(huoguiModel);

return "update";

}

}

4.2.7 路线管理的实现

路线管理功能模块实现了可操作人员对线路的增加、删除和修改。使得路线的管理方便快捷。用户可以通过对路线编号、名称、具体路线以及详细信息的添加来实现增加路线功能。如图4.2.7.1。用户通过点击出行路线管理界面上的修改和删除按钮来修改和删除目标路线,如图4.2.7.2所示。

图4.2.7.1 出行路线增加界面

图4.2.7.2 出行路线管理界面

核心代码为:

public String create() {

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

String ttime = df.format(new Date());// new Date()为获取当前系统时间

luxianModel.setTtime(ttime);

luxianEbi.create(luxianModel);

return SUCCESS;

}

//根据Id得到信息去修改

public String getUserById(){

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

LuxianQueryModel qm = new LuxianQueryModel();

qm.setId(id);

request.setAttribute("newsupdate", luxianEbi.getByCondition(qm, 0, 20));

return "byid";

}

//删除

public String deletedById() {

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

luxianEbi.delete(id);

return "delete";

}

public String update() {

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

String ttime = df.format(new Date());// new Date()为获取当前系统时间

luxianModel.setTtime(ttime);

luxianEbi.update(luxianModel);

return "update";

}

}

4.2.8 船只分配路线的实现

该模块实现了用户对船只出行路线的设置。用户通过船只的选择和路线的选择、以及说明信息的填写,实现为船只分配路线的功能,如图4.2.8.1所示。还可以通过对删除和修改按钮的点击,来删除或者修改分配好的船只路线组合,如图4.2.8.2所示。

图4.2.8.1 船只分配出行路线界面

图4.2.8.2 船只出行路线管理界面

其核心代码如下:

public String create() {

//System.out.println("????????????????????");

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

String ttime = df.format(new Date());// new Date()为获取当前系统时间

chuxingModel.setTtime(ttime);

//System.out.println(chuxingModel.toString());

chuxingEbi.create(chuxingModel);

return SUCCESS;

}

//根据Id得到信息去修改

public String getUserById(){

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

ChuxingQueryModel qm = new ChuxingQueryModel();

qm.setId(id);

request.setAttribute("newsupdate", chuxingEbi.getByCondition(qm, 0, 20));

return "byid";

}

//删除

public String deletedById() {

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

chuxingEbi.delete(id);

return SUCCESS;

}

public String update() {

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

String ttime = df.format(new Date());// new Date()为获取当前系统时间

chuxingModel.setTtime(ttime);

chuxingEbi.update(chuxingModel);

return "update";

}

//去获取船只,线路的信息

public String getCL(){

HttpServletRequest request = ServletActionContext.getRequest();

List<ChuanzhiModel> czlist = chuanzhiEbi.getAll();

List<LuxianModel> lxlist = luxianEbi.getAll();

System.out.println(czlist+"//"+lxlist);

request.setAttribute("czmodel",czlist);

request.setAttribute("lxmodel",lxlist);

return "addcl";

}

}

4.2.9 船只分配货柜的实现

船只分配货柜这一功能模块主要是为每一艘轮船进行货柜的分配,还有对已分配货柜的船只进行信息的修改和删除。用户可以通过船只的选择、货柜的选择和说明信息(该轮船可以放置多少个货柜等等信息)的填写来实现分配货柜功能,如图4.2.9.1所示。用户还可以通过点击删除和修改按钮来实现对已分配货柜船只组合的删除和修改,如图4.2.9.2所示。

图4.2.9.1 船只分配货柜界面

图4.2.9.2船只对应配套货柜管理界面

该功能模块实现了用户对船只进行货柜码放的管理。其核心代码如下:

public String create() {

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

String ttime = df.format(new Date());// new Date()为获取当前系统时间

peitaohgModel.setTtime(ttime);

peitaohgEbi.create(peitaohgModel);

return SUCCESS;

}

//根据Id得到用户信息去修改

public String getUserById(){

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

PeitaohgQueryModel qm = new PeitaohgQueryModel();

qm.setId(id);

request.setAttribute("newsupdate", peitaohgEbi.getByCondition(qm, 0, 20));

return "byid";

}

//删除

public String deletedById() {

HttpServletRequest request = ServletActionContext.getRequest();

int id = Integer.parseInt(request.getParameter("id"));

peitaohgEbi.delete(id);

return SUCCESS;

}

public String update() {

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

String ttime = df.format(new Date());// new Date()为获取当前系统时间

peitaohgModel.setTtime(ttime);

peitaohgEbi.update(peitaohgModel);

return "update";

}

public String getczhg(){

HttpServletRequest request = ServletActionContext.getRequest();

List<HuoguiModel> hglist = huoguiEbi.getAll();

List<ChuanzhiModel> czlist = chuanzhiEbi.getAll();

request.setAttribute("hgmodel",hglist);

request.setAttribute("czmodel",czlist);

return "addczhg";

}

}

5 系统测试

一个完善的系统,是要经得起“考验”的,所谓的“考验”就是在系统真正上线之前进行各种测试,主要大的方面是白盒和黑盒测试[16],包括上线之后用户的使用的测试,比如用户体验度的反馈,系统压力的测试反馈等。在这里主要进行的是上线之前的测试工作。

测试一:用户登录时,用户名或密码有一项为空或者填写错误,系统是否出现预先设定的操作提示。

具体操作:用户名、密码、任意一项为空或者填写有误。

结果:都出现相应的错误原因的信息提示。

结论:要求用户必须填写正确的用户名和密码,才能进入管理系统。

测试二:管理员对用户的管理方面,即对用户进行增加,修改,删除时看用户管理界面是否产生相应变化。

具体操作:对用户进行增删改查。

结果:都相应出现正确的改变。

结论:管理员可以直接在用户管理界面修改用户信息。

测试三:用户对船只信息的管理,即用户对船只信息的增加,删除和修改,是否可以实现。

具体操作:用户修改船只信息,通过船只管理界面查看船只信息是否已按相应要求修改。

结果:都出现相应的变化,用户修改船只信息,在船只管理以及其他相关页面都可以看到。

结论:用户可以在船只增加和船只管理界面进行船只信息的修改。

测试四:用户登录时,是否区分一般看用户和一般操作用户。

具体操作:以管理员身份登陆系统,进行两种用户的设置,然后以设置好的不同用户身份登陆,查看其各自拥有的权限。

结果:一般看用户只有查看权限。一般操作用户则既有查看权限,还有增删改权限。

结论:要求管理员必须正确设置用户的权限。

测试五:修改系统的新闻公告﹑返回前台,看其是否更新成功。

具体操作:通过新闻公告管理页面中的修改功能修改新闻公告的内容,看其是否修改成功。

结果:新闻公告内容更新为修改后的信息。

结论:修改新闻公告功能正常。

测试六:管理员删除某一原有用户后,并让其登陆,看是否登陆成功。

具体操作:管理员删除用户表中的某一用户后,该用户在前台登陆。

结果:该用户无法登录。

结论:用户数据删除功能正常。

结 论

随着毕业的临近,毕业设计也接近尾声了。经过三个多月的查阅,分析,设计,编程,完善,修改等等一系列的步骤,我终于完成了码头船只出行及配套货柜码放管理系统的开发。从一开始对Java的一知半解到后来整个系统的完成,其间充满着坎坷,面对问题时无从下手,但是在学长和老师的帮助下解决那些棘手的问题时,充满的是欣慰与快乐。

经过几个月的“奋战”,我基本上完成了系统的开发和设计,基本实现了前期所制定的功能。系统在不断的设计、更改和调试过程中逐渐完善起来。由于自己对Java的了解还不够深,对JSP页面的陌生,所以程序中存在着一些缺陷。主要有:界面不够美观,业务流程方面不够完美,用户身份的验证不够紧密,信息的添加功能不够完善。这些都是有待提高的地方。

经过这次的毕业设计,拓宽了我的知识,使得我能够以不同于以前的方式(PHP)制作动态网页,创建网站。我在编程方面,我有了进一步的提高,对于编程的格式以及一些编程思想都有了相应的提升。在数据库方面,我不仅巩固了用sql语句来实现增删改查的功能,并且还能实现分页功能。另外,我还了解了项目开发的各种工作步骤和流程,可以独立完成一个中小型项目,提高了动手能力,并在思想上有了项目的概念,对以后的学习和工作都十分有帮助。

毕业设计虽然告一段落,但是我对Java及其相关知识的学习不能停止,日后也会不断完善这个系统,使其成为一个真实的,功能完善且可以给用户带来用途的系统。

参考文献

[1] Li Wei. Problem studies of international container port competition in Shanghai.Master scientific dissertation ,2006.

[2] 屠德铭.港口行业发展现状及前景[A].中国港口协会[C].上海:200000;

[3] 鲁懿春.新加坡港在港口操作中的创新[J].集装箱化,2004,12:20.

[4] 中国港口现状[J].中国电子杂志出版社.2010,4,5.

[5]史博臻,任荃.海洋时代,上海的“远”与“近”[N].文汇报,2010-12—1l(2).

[6] 张明齐,张永峰,刘万峰.中国世界级_强港_建设分析与探讨[J].中国港湾建设,2011,3:77.

[7] 韩万江,姜立新.软件项目管理案例教程.机械工业出版社,2007,12

[8] Ken Arnold,James Gosling.Java程序设计语言.人民邮电出版社,2006,11

[9] (美)艾克尔.布鲁斯.JAVA编程思想[M].出版地:机械工业出版社,2007.6.

[10] 王珊,萨师煊.数据库系统概论(第四版).高等教育出版社,2007,7

[11] Mary Hall,Larry Brown.Servlet和JSP核心编程.清华大学出版社,2007,1

[12] 张海藩. 软件工程导论. 北京:清华大学出版社,2008.2

[13] 李红. 数据库原理及应用[M]. 高等教育出版社,2003.3

[14] 刘世峰.数据库基础与应用.中央广播电视大学出版社,2004.

[15] 樊海玮,吕进,杜瑾等. 软件详细设计教程[M]. 西安电子科技大学出版社,2010.12

[16] 朱少民. 软件测试方法和技术[M]. 清华大学出版社,2010.7

致谢

经过接近半年的忙碌,本次毕业设计也接近了尾声。由于本人知识的疏漏和经验的匮乏,有许多考虑不周全的地方,如果没有指导老师的督促和指导,以及学长的悉心帮助,我的毕业设计是很难完成的。

因此,在这里首先要感谢我的指导老师。本论文是在他们的悉心指导下完成的。各位指导老师让我掌握了开发Java Web程序的方法,一步一步的将毕业设计做到完善。本论文从选题到完成,每一步都是在老师的指导下完成的,倾注了老师们大量的心血。在此,谨向他们表示崇高的敬意和衷心的感谢!

这四年中与我朝夕相处一路走来的同学们,我同样要衷心的感谢你们。四年的大学生活是我人生中重要的转折点,也是我人生的重要财富。我不仅得到了同学的诸多帮助,而且从同学身上学到许多美好的东西。衷心感谢所有在我成长的道路上给予我关怀和帮助的友人。

最后要对我的家人致以最深情的敬意。他们用无私的爱给予我默默的关心和支持。是他们给我创造了学习的良好氛围,使我能够安安心心地进行学习和研究。感谢他们的陪伴与付出。

完成毕业设计,是一个大学本科生学业的终点,却也是步入社会的一个起点!我将铭记大家对我的帮助,扬起船帆,乘风破浪,创造更好的明天!

猜你喜欢

转载自blog.csdn.net/m0_66999594/article/details/128665977