资源描述
基于JavaEE的项目管理系统的设计与实现摘 要企业项目管理系统是为了使企业项目能够按照预定的成本、进度、质量顺利完成,而对人员、产品、过程和项目进行分析和管理的活动,系统主要包括项目基本信息操作、项目规划管理,合同管理,和项目评价管理四个模块。Java EE技术无疑是当今因特网大型应用的最佳技术方案之一,围绕Java EE技术的应用性,也产生了大量的Web开发框架,它们极大地提升了Java EE技术的易用性。本文描述了Java EE的相关技术,比如Struts2,Hibernate,Spring等,以及一些前台JS框架,如jQuery。并用这些技术完成一个基于SSH架构的项目管理系统,开发并实现其中的全部功能模块。系统是在Windows7下,以SQL Server 2005为数据库开发平台,Tomcat网络信息服务作为应用服务器,MyEclipse8.5为开发工具,采用SSH主流架构技术,jQuery及相关插件而开发的企业项目管理系统。项目管理系统将以需求为管理核心,任务为管理内容,质量为管理指标实现项目过程的管理。项目从需求建立为开始,由任务来跟踪需求完成的进度,用质量管理来考核需求完成的标准,系统可实现需求到任务,任务到质量的完整管理,以追溯管理的方式实现项目过程的完整管理。关键词:项目管理系统;Java EE;SSH ;SQL Server 2005The design and implement of Enterprise project management system based on JavaeeAbstractEnterprise Project Management System is designed to enable enterprises to be able to follow a predetermined project cost, schedule, quality, successful completion, while the people, products, processes and project analysis and management activities, including items of basic information systems operations, project planning and management, contract management, and project evaluation and management of four modules.Java EE technology is undoubtedly one of the best technical solution for large applications in todays Internet, around the application of Java EE technology, also generated a lot of Web development framework, which greatly enhance the ease of use of Java EE technologies. This paper describes the Java EE related technologies, such as Struts2, Hibernate, Spring, as well as some of the front desk JS frameworks such as jQuery. And use these techniques to complete an SSH-based project management system architecture, which developed and implemented the full functionality of the module. System is under Windows7 to SQL Server 2005 database development platform, Tomcat as the application server network information services, MyEclipse8.5 as a development tool, using SSH architecture technology mainstream, jQuery and related plug-ins and development of enterprise project management system.Project management system will manage the core needs, the task of managing the content, quality indicators for the management of the implementation process of the project management. Created for the project began, the task needs to track the progress accomplished by the completion of the quality management standard to assess the needs of the system needs to be achieved, the task to complete quality management, traceability management approach to achieve a complete project process from requirements management.Key word: Project Management System ; Java EE; SSH; SQL Server 2005目录摘 要iAbstractii1 绪 论11.1 国内外研究动态11.2 项目背景及意义12 Java EE运行环境及开发技术22.1 Java EE运行环境22.1.1 MyEclipse22.1.2 Tomcat22.1.3 SQL Server 200532.2 Java EE开发技术32.2.1 MVC设计模式32.2.2 Struts242.2.3 Hibernate52.2.4 Spring52.2.5 jQuery63 需求分析73.1 可行性分析73.1.1 经济可行性73.1.2 技术可行性73.1.3 操作可行性73.1.4 法律可行性73.2 本系统的需求分析73.2.1 功能需求73.2.2 性能需求73.3 系统开发流程84 总体设计94.1 总体设计的目的94.2 系统总体流程图94.3 功能模块图104.4 用户功能模块图114.5 数据库设计124.5.1 系统E-R图134.5.2 数据字典135 系统详细设计及实现155.1 系统架构设计155.2 系统的运行结果155.3 类的分布165.4 控制层的实现175.4.1 adminAction.java类(处理基本登录信息的类)175.4.2 hetongAction(实现对合同信息的操作)185.5 持久层的实现225.5.1 接口类225.5.2 实现接口类235.6 服务层的实现266 系统测试306.1 软件测试306.1.1 黑盒测试306.1.2 白盒测试306.1.3 单元测试306.1.4 集成测试306.1.5 系统测试316.1.6 程序调试316.2 本系统测试316.2.1 JUnit单元测试31结束语33参考文献34致 谢35外文原文36中文翻译421 绪 论1.1 国内外研究动态随着科学的发展和社会的进步,尤其是计算机大范围的普及,计算机应用逐渐由科学计算转向了对日常工作的处理,这就产生了以计算机为核心,以数据库管理系统为开发环境的管理信息系统在大规模的事务处理管理等方面的应用,其中在项目工程管理之中的应用日益受到人们的关注。经过二十多年的发展,市场经济的观念已经深入人心。90年代末,随着全球经济一体化和知识经济的发展,项目个性化需求特征愈来愈明显,只有真正了解市场需要,最大满足项目需求的产品才能实现竞争优势。企业以产品为中心的模式向以市场为中心,以项目为中心的模式转移。正确、快速地处理与项目之间的沟通成为企业利润的主要源泉。企业管理的视觉从内视型向外视型转变。企业转换自己的视角外向型地整合内外部资源,从而提高企业的核心竞争力。1.2 项目背景及意义在当今快速发展的科学和技术的带动下,一切的商业行为都能跟计算机搭上边。这是为了实现更大的商业利益而通过更好的利用计算机来实现目标。项目管理是为了使工作项目能够按照预定的需求、成本、进度、质量顺利完成,而对人员、产品、过程、和项目、进行分析和管理的活动。目前国内企业对项目管理水平和方法越来越重视,而合适的项目管理软件在其中起了极其重要的作用!主要有工程项目管理软件和非工程项目管理软件2大分类。随着微型计算机的出现和运算速度的提高, 20 世纪80 年代后项目管理技术也呈现出繁荣发展的趋势, 项目管理软件开始出现。对于大型项目管理,没有软件支撑,手工完成项目任务制定、跟踪项目进度、资源管理、成本预算的难度是相当大的。可以说计算机技术的发展对项目管理深入应用起了举足轻重的作用。2 Java EE运行环境及开发技术2.1 Java EE运行环境2.1.1 MyEclipse由Genuitec公司发布的MyEclipse10,是一款商业化Eclipse集成开发工具的升级版本。MyEclipse10是基于Eclipse Indigo构建,为Java和JavaEE项目提供了Maven3的支持。本版本中还添加了对JaveEE6、HTML5、JPA2和JSF2的支持。版本号10是为了庆祝Eclipse的10岁生日。 MyEclipse10使用最高级的桌面和Web开发技术,包括HTML5和JavaEE6,支持JPA2.0、JSF2.0、Eclipselink 2.1以及OpenJPA2.0而对IBM WebSphere用户来说,MyEclipse Blue支持最新版本的WebSphere Portal Server7.0、WebSphere8 以及以前的版本,无缝的支持IBM DB2数据库。MyEclipse是一个十分优秀的用于开发Java, J2EE的 Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate , EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开元产品的专属eclipse开发工具。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在结构上,MyEclipse的特征可以被分为7类:1. J2EE模型2. WEB开发工具3. EJB开发工具4. 应用程序服务器的连接器5. J2EE项目部署服务6. 数据库服务7. MyEclipse整合帮助对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。2.1.2 TomcatTomcat最初是由Sun的软件构架师詹姆斯邓肯戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目OReilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性猫科动物)。而OReilly出版的介绍Tomcat的书籍(ISBN 0-596-00318-8)1的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun(Oracle已收购)和其他一些公司联合开发。Tomcat早就被Java-World杂志的编辑选为最具创新性的Java产品,又是Sun公司官方推荐的Servlet/JSP容器。由于符合Servlet和JSP最新规范的内容都已在Tomcat的新版本中实现,结合Tomcat的稳定性能,因此得到了软件开发商及相关人员的认可,成为目前比较流行的Web应用服务器456。2.1.3 SQL Server 2005SQL Server 2005具有较好的可伸缩性和可靠性,提供了以Web标准为基础的扩展数据库编程功能,可以满足电子商务和企业应用程序的要求。SQL Server 2005支持XML和Internet标准,具有基于Web的分析能力,允许使用内置的存储过程以XML格式存储、更新、删除、检索数据。SQL Server 2005能提供超大型系统所需的数据库服务。大型服务器可能有成千上万的用户同时连接到SQL Server 2005的情况,SQL Server 2005为这些环境提供了全面的保护,具有防止问题发生的安全措施,例如,可以防止多个用户试图同时更新相同的数据。SQL Server 2005还在多个用户之间有效地分配可用资源,比如内存、网络带宽和磁盘I/O等。SQL Server 2005不仅能作为一个功能强大的数据库服务器有效地工作,而且数据库引擎也用在需要在项目端本地存储独立数据库的应用程序中。SQL Server 2005可以动态地将自身配置成能有效地使用项目端桌面或膝上型电脑中的可用资源,而不需要为每个项目端专设一个数据库管理员。应用程序供应商还可以将SQL Server 2005作为应用程序的数据存储组件嵌入到应用程序中。SQL Server在网络组件的顶部添加了服务器特有的中介组件,诸如开放式数据库连接(ODBC)后能使不同项目机进行相互连接,它可处理基于Internet的应用程序,帮助用户把SQL Server数据库信息集成到Web页面。 8。2.2 Java EE开发技术2.2.1 MVC设计模式由于C/S开发程序的变更不够灵活,且维护和管理的比较复杂。由于应用程序中逻辑结构的表现形式经常改变,但本身却相对稳定。因此,将业务逻辑和数据的展现形式分开,可以更容易地根据需求的变化来改变后台程序,从而不必触动业务逻辑部分就可以开发新的外观界面。MVC设计模式提出于80年代末由Xerox公司发表的一系列论文中,专门应对这种实际情况,其关键是将组件分成3个各自独立的单元:模型、视图、控制器。3者关系如图2-1所示:图2-1 MVC设计模式以上三个部分的具体任务如下10:(1)模型表示应用程序中的数据结构和元素,模型对数据和对数据进行了封装,是应用程序真正进行数据计算和处理的地方。在这MVC的三个部分中,模型相对来说是最重要的部分。(2)视图(View)对象顾名思义,就是用户可见的并可以与之交互的界面,它负责向用户显示模型的状态和显现应用的数据。主要作用如下:a.向用户显示一些应用中的数据;b.接收来自用户的输入;c.与模型层进行交互,向模型传递数据进行查询;d.接收来自模型层的数据,更新展示给用户的显示界面。(3)控制器(Controller)负责View和Model的交互,主要担任两个方面的工作:将模型的改变及时反应到视图上;将用户的请求分发到相对应的模型。为了提高灵活性和可重用性,MVC将这些对象进行了分离。以上即MVC的一个典型的处理过程11。2.2.2 Struts2Struts2框架是基于Struts1和WebWork框架发展而来的,并同时吸收了二者的优势,但与Struts1框架相比,在设计思路上有许多本质上的不同。对WebWork框架有过研究的人会发现Struts2在系统架构和运转流程上与WebWork是非常相似的。所以,在某种程度上可以说Struts2完全与Struts1没有太多关系,而实际上继承的是WebWork 12。Struts2框架大致由三部分组成:核心控制器、业务控制器和用户实现的业务逻辑组件。在这之中,由FilterDispatcher充当核心控制器,FilterDispatcher作为一个过滤器运行在应用程序中,它负责对所有用户向服务器的请求进行过滤,当用户发出以.action结尾的请求时,FilterDispatcher发现该请求,并将该请求转入到Struts2中去处理。业务控制器即是开发者实现的ActionSupport类的子类实例,这个类通常包含一个自定义方法,并返回是一个字符串值(如NONE、SUCCESS等),即result名称,与该result对应的则是一个JSP页面或一个action地址。在业务逻辑组件的层面来说,Struts2并没有提供太多的帮助,它只是一个偏向表现层的框架,在实际的开发中当控制器需要获得业务逻辑组件时,通常是通过工厂开发模式来获得一个业务逻辑组件实例。Struts2具体的框架结构及工作流程如图所示:图2-2 Struts2原理2.2.3 HibernateHibernate是目前比较流行的ORM(对象/关系映射)框架(比较流行的还有MyBatis),自动映射了关系数据库和Java对象之间的关联,使得程序员可以以非常简单的方式实现对数据库的操作。Hibernate通过封装JDBC的从而对程序开发者屏蔽了底层的数据库操作,使开发者更专注于面向对象程序的开发,可以有效地提高开发效率。开发者访问数据库所需要做的就是为持久化类编制xml映射文件,或为持久化类设置Annotation注解。对于一些底层数据库的必要性的改变,只需要对hibernate.cfg.xml配置文件进行修改即可,并不会对应用程序产生影响。Hibernate有自己的面向对象的查询语言HQL,HQL功能强大,支持目前大多数主流数据库,如Oracle、DB2、Microsoft SQLServer、MySQL等,为快速开发应用程序提供了底层的稳定的支持。2.2.4 SpringSpring与臃肿的EJB相对比,Spring可以使开发者把各个技术层次之间的关联程度显著地(耦合度)降低,从该框架本身的架构来说,相对其他框架是一个很轻量级的框架。Spring框架的核心是控制翻转IoC(Inverse of Control),也被称之为依赖注入DI(Dependence Injection)机制。IoC是指由容器来对各组件间关系进行控制(在这里,容器是指一种服务程序,在服务器一个端口就有一个提供相应服务的程序,如上文提及的Tomcat),而非传统实现中直接操控的程序代码,这种由程序代码到外部容器的控制权转移,即为“翻转“。DI,依赖注入,即将所用到的对象等,依靠web容器注入给使用这些对象的组件中。Spring采用设值注入(使用Setter方法实现依赖)的机制,通过Spring配置文件(xml文件)管理组件对象进行协作,可以依赖于Web容器构造应用程序的组件。通过这种方式,不需要依赖单例设计模式、工厂设计模式或者其他构造对象的方法,就可以通过代码操作直接从容器中获取所需的组件17。Spring提供了丰富的面向切面编程(AOP)的支持,通过允许分离Web应用程序的系统级服务(例如日志、数据事务管理等)与业务逻辑,完成内聚性开发。每一个应用方法只关注它们需要做的实现业务逻辑。它们并不关注其他系统层面的问题(如日志或事务支持)。Spring框架是一个松耦合的框架,同时也是一个模块的框架,框架的部分耦合度被设计为最小。这些特征将使你的代码更易于测试和管理。2.2.5 jQueryjQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签。jQuery EasyUI有以下特点:1、基于jquery用户界面插件的集合2、为一些当前用于交互的js应用提供必要的功能3、EasyUI支持两种渲染方式分别为javascript方式(如:$(#p).panel(.))和html标记方式(如:class=easyui-panel)4、支持HTML5(通过data-options属性)5、开发产品时可节省时间和资源6、简单,但很强大7、支持扩展,可根据自己的需求扩展控件8、目前各项不足正已版本递增的方式不断完善3 需求分析3.1 可行性分析3.1.1 经济可行性经济可行性研究是对使用者的经济现状和投资能力进行分析,对系统建设运行和维护费用进行估算,对系统建成后可能取得的社会和经济效益进行估计。因为本系统是毕业设计,由我们自己开发的,在经济上的投入可以忽略不计,系统完成后将会为企业项目管理提供很大的方便。3.1.2 技术可行性基于JavaEE的项目管理系统采用B/S结构、结合SqlServer2005数据库,在使用MyEclipse开发平台的基础上采用MVC设计模式运用Struts2,Hibernate,Spring三大框架前台使用流行的jQuery同时使用tomcat服务器来最终实现项目管理系统。在技术上是绝对可行的。3.1.3 操作可行性从时间上看,在两个月的时间里了解相关技术,并开发项目管理系统,时间上是有点紧,但是不是不可能实现,通过两个多月的努力功能应该基本实现。3.1.4 法律可行性1所有技术资料都为合法文献材料。2开发过程中不存在任何知识产权问题。3开发过程中未涉及任何法律责任的承担。综上所述,本系统的开发从技术上、从经济上、从可操作性上、从法律上都是完全可靠的。3.2 本系统的需求分析3.2.1 功能需求本系统是针对中小型企业项目管理现状,通过网络实现对企业项目信息的管理,主要实现如下目标:(1)对项目信息(项目基本信息、项目经办人、项目方案等信息)进行全面管理。(2)对项目合同的管理。(3)实现各种信息查询功能。(4)对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。(5)操作员可以随时修改自己的口令。(6)数据保密性强,为每个用户设置相应的权限级别。(7)提供辅助工具,方便用户操作及使用。(8)系统运行稳定、安全可靠。3.2.2 性能需求硬件配置:CPU:2.40GHZ; 内存:4G; 硬盘:500G;软件配置: 操作系统:Windows 7; 数据库:SQL Server 2005; JSP服务器:Tomcat; 开发工具包: jdk1.6.0_263.3 系统开发流程一般说来,项目管理系统的开发可以划分概要设计,详细设计和编码阶段。其中概要设计阶段主要是完成各个模块主要功能的设计与具体的实现方式,画出ER图,完成总体设计。详细设计阶段只要完成各个模块具体功能的实现方式(逻辑设计等)。在编码阶段主要是依据概要设计和详细设计的要求完成各个模块的代码编写。软件工程体系中曾对一些软件项目开发各阶段的工作量进行了统计,结果表明,在开发过程中各阶段的比例分配为: 系统分析:系统设计:编程:模块调试:系统调试20%:15%:20%:25%:20%。由此可见,代码的编写在开发工作中只占很小比例,而需求分析和设计以及最后的测试等工作却占整个开发工作量的一半左右。 上述开发方式的优点是便于开发工作的组织和管理,并且可大大降低企业项目管理系统开发的复杂性。国内外许多系统开发的实例都证明这是一种行之有效的开发方式。4 总体设计4.1 总体设计的目的系统的总体设计中最重要的就是系统的模块化。模块化是指解决一个复杂问题时自项向下逐层把软件系统划分成若干个模块的过程。每个模块完成一个特定的功能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求的功能。将系统划分为多个模块是为了降低软件系统的复杂性,提高可读性、可维护性,但模块的划分不能是任意的,应尽量保持其独立性。也就是说,每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,即尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。核心思想是模块之间的低耦合和模块内部高内聚。在系统的概要设计中采用结构化设计以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构。首先将整个系统化分为几个小问题,小模块。然后,进一步细分模块,添加细节。企业项目管理系统的根本目的是为了让项目尤其是大型项目的整个生命周期都能在管理者的控制之下,以预定成本按期,按质的完成软件交付用户使用。而研究项目管理为了从已有的成功或失败的案例中总结出能够指导今后开发的通用原则,方法,同时避免前人的失误。该系统通过对项目开发的各个环节进行设置(基本信息操作、项目规划管理,合同管理,和项目评价管理),基本信息操作模块包括基本信息的添加、修改、删除和查询;项目规划管理模块包含规划项目登记、规划项目列表、规划项目查询三个功能。合同管理模块包括合同的签订,合同的管理,合同查询三个功能。4.2 系统总体流程图对于数据库软件应用的设计与开发,数据库系统的设计是其最为核心和基础的环节。数据库系统的优劣直接影响到系统的性能,所以对数据库系统的设计必须有优良的性能,那么对它的设计也更严密周紧。图4-1 总体流程4.3 功能模块图本系统采用MyEclipse 作为开发工具,SqlServer2005 作为后台数据库,将每个数据库表的字段和操作封装到类中,从而成功地将面向对象的程序设计思想应用到数据库应用程序设计中。这也是本系统的特色和优势。图4-2 模块划分图4.4 用户功能模块图本系统初始化时,有两个默认的用户,普通用户为Users,系统管理员用户为Admin,手动添加到数据库中,他的确认密码为ad。Admin用户可以创建用户、删除用户、修改用户的信息,普通用户只能修改自己的用户名和密码。图4-3 用户功能模块图4.5 数据库设计数据库是以一定的组织方式存储在一起的相关数据集合,它能以最佳的方式,最少的数据冗余为多种应用服务,程序与数据具有较高的独立性。60年代末到70年代初数据库技术日益成熟,具有了坚实的理论基础。 70年代,数据库技术有了很大发展,出现了许多基于层次或网状模型的商品化数据库系统,并广泛运行在企业管理、交通运输、情报检索、军事指挥、政管理和辅助决策等各个方面。这一时期,关系模型的理论研究和软件系统研制也得到了很大进展。1981年IBM公司San Jose实验室宣布具有System R 全部特性的数据库产品SQL/DS问世。与此同时,加州大学伯克利分校研制成功关系数据库实验系统INGRES,接着又实现了INGRES商务系统,使关系方法从实验室走向社会。20世纪80年代以来,几乎所有新开发的数据库系统都是关系型的。微型机平台的关系数据库管理系统也越来越多,功能越来越强,其应用已经遍及各个领域。E-R模型的组成元素有:实体、属性、联系。E-R模型用E-R图表示。实体是用户工作环境中所涉及的事务,属性是对实体特征的描述。(1)模型中的实体相当于实体集、一个表,而不是单个实体或表中的一行。实体用矩形框表示,实体名称标注在矩形框内。用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型。(2)属性是实体的性质。用椭圆框表示,与实体之间用一条线相连表的主码是关键属性,关键属性项加下划线。(3)各子系统模块中主键相同的字段之间存在着相互关联的关系。(4)在程序中实现对他们的完整性和一致性控制。得到上面数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。4.5.1 系统E-R图管理员用户名密码普通用户用户名密码管理增删改查项目合同规划项目项目评价增删增删增删用户增删增删增删图4-4 系统E-R图4.5.2 数据字典本系统数据库采用SQL Server 2005数据库,系统数据库名称为db_Client。数据库db_Client中包含4张表。表4-1 用户表(t_admin)字段名数据类型主键允许非空描述userIdint用户标识userNamevarchar用户名userPwvarchar用户密码表4-2 合同表(t_hetong)字段名数据类型主键允许非空描述hetong_idint合同标识hetong_namevarchar合同名称jiafangfuzerenvarchar甲方负责人yifangfuzerenvarchar乙方负责人hetong_kaishishijianvarchar合同的开始时间hetong_jieshushijianvarchar合同的结束时间hetong_jineint合同金额hetong_beizhuvarchar合同备注xiangmu_idint对应项目的标识(外键)delvarchar是否删除(逻辑删除)表4-3 评价表(t_pingjia)字段名数据类型主键允许非空描述pingjia_idint评价标识pingjia_neirongvarchar评价的内容xiangmu_idint对应项目的标识(外键)delvarchar是否删除(逻辑删除)表4-4 项目表(t_xiangmu)字段名数据类型主键允许非空描述xiangmu_idint项目idxiangmu_namevarchar项目名称xiangmu_typevarchar项目类型xiangmu_chengdandanweivarchar项目的承担单位xiangmu_fuzerenvarchar项目负责人xiangmu_shijianvarchar项目时间xiangmu_jineint项目金额xiangmu_fanganvarchar项目方案xiangmu_fangan_yaunshimingvarchar项目方案名称xiangmu_beizhuvarchar项目备注xiangmu_yanshoujieguovarchar项目验收结果xiangmu_yanshourenvarchar项目验收人delvarchar是否删除(逻辑删除)5 系统详细设计及实现5.1 系统架构设计在编写代码之前,可以先把网站中可能用到的文件夹创建出来(例如:创建一个名为image的文件夹,用于保存网站中需要的图片),这样可以方便以后的开发工作,也可以规范网站的整体架构,我在开发项目管理系统时只需要将文件保存在相应的文件夹中就可以了,非常方便。5.2 系统的运行结果当管理员在进入项目管理系统后,首先进入项目管理系统的大厅,也就是项目管理系统的首页。项目管理系统首页包含基础信息维护、项目信息维护、项目服务、信息查询、数据管理、辅助工具以及系统管理的超链接。项目管理系统网站首页的运行结果如图5-1、5-2所示:图5-1 网站首页运行结果(1)图5-2 网站首页运行结果(2)网站框架说明如表5-1所示:表5-1 网站首页页面说明区域名称说明对应文件1网站导航主要展示网站的旗帜广告和站内导航条top.jsp2功能模块主要用于显示导航模块中的功能information.jsp3内容显示主要用于显示功能模块中的内容right.jsp1、 src/struts.xml即为Struts2核心配置,主要配置action(访问路径)与XxxAction类的映射关系;2、 WebRoot/WEB-INF/applicationContext.xml为Spring+Hibernate配置(Spring将Hibernate配置融入到一起了)3、 Hibernate使用JDBC方式,连接SQLServer 2005数据库,使用xml方式映射实体类;4、 Spring使用xml配置方式(在applicationContext.xml文件进行注入的配置);5.3 类的分布整个网站的实现功能利用到的框架Struts2,基本上是以“类”的形式实现的。所以我设计一个类的分布图如下图5-3:图5-3 类的分布图各个类所实现的功能如表5-2所示:表5-2 类的功能控制层(action)引用service层,在这里结合Struts2的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理服务层(service)引用dao层,完成项目的业务逻辑持久层(dao)使用了Hibernate连接数据库,完成对数据的增删改查(CRUD)操作实体层(model)与数据库表对应的实体类工具包(util)项目中可能会使用到的一些比较通用的工具代码的封装5.4 控制层的实现在控制层中主要存放的是常用的基本类,在这里结合Struts2的配置文件,跳转到指定页面,当然也能接受页面传递的请求数据,也可以做些计算处理5.4.1 adminAction.java类(处理基本登录信息的类)/*adminAction .java*/ package com.action;import java.util.List;import java.util.Map;import org.apache.struts2.ServletActionContext;import com.dao.TAdminDAO;import com.model.TAdmin;import com.opensymphony.xwork2.ActionSupport;import com.util.Pagination;public class adminAction extends ActionSupportprivate int userId;private String userName;private String userPw; private String message;private String path;private int index=1;private TAdminDAO adminDAO;public String adminAdd()TAdmin admin=new TAdmin();admin.setUserName(userName);admin.setUserPw(userPw);adminDAO.save(admin);this.setMessage(操作成功);this.setPath(adminManage.action);return succeed;public String adminManage()List adminList=adminDAO.findAll();Map request=(Map)ServletActionContext.getContext().get(request);request.put(adminList, adminList);return ActionSupport.SUCCESS;public String adminManageFenye()List adminList=adminDAO.findAll();int pageSize=3;int fromIndex = (index - 1) * pageSize;int toIndex = Math.min(fromIndex + pageSize, adminList.size();List adminListFenye = adminList.subList(fromIndex, toIndex); Pagination p = new Pagination();/创建 分页对象 p.setIndex(index);/设置页数 p.setPageSize(pageSize); p.setTotle(adminList.size();/设置总共的条数 p.setData(adminListFenye);/设置数据 p.setPath(adminManageFenye.action?);/跳转的路径Map request=(Map)ServletActionContext.getContext().get(request);request.put(page, p);return ActionSupport.SUCCESS;public String adminDel()adminDAO.delete(adminDAO.findById(userId);this.setMessage(删除成功);this.setPath(adminManage.action);return succeed;5.4.2 hetongAction(实现对合同信息的操作)package com.action;import java.util.List;import java.util.Map;import org.apache.struts2.ServletActionContext;import com.dao.TAdminDAO;import com.dao.THetongDAO;import com.model.TAdmin;import com.model.THetong;import com.opensymphony.xwork2.ActionSupport;import com.util.Paginationpublic class hetongAction extends ActionSupportprivate int hetongId;private String hetongName;private int xiangmuId;private String jiafangfuzeren;private String yifangfuzeren;private String hetongKaishishijian;private String hetongJieshushijian;private int hetongJine;private String hetongBeizhu;private String message;private String path;private THetongDAO hetongDAO;public String hetongAdd()THetong hetong=new THetong();hetong.setHetongName(hetongName);hetong.setXiangmuId(xiangmuId);hetong.setJiafangfuzeren(jiafangfuzeren);hetong.setYifangfuzeren(yifangfuzeren);hetong.setHetongKaishishijian(hetongKaishishijian);hetong.setHetongJieshushijian(hetongJieshushijian);hetong.setHetongJine(hetongJine);hetong.setHetongBeizhu(hetongBeizhu);hetong.setDel(no);hetongDAO.save(hetong);this.setMessage(操作成功);this.setPath(hetongMana.action);return succeed;public String hetongMana()String sql=from THetong where del=no;List hetongList=hetongDAO.getHibernateTemplate().find(sql);Map request=(Map)ServletActionContext.getContext().get(request);request.put(hetongList, hetongList);return ActionSupport.SUCCESS;public String hetongDel()THetong hetong=hetongDAO.findById(hetongId);hetong.setDel(yes);hetongDAO.attachDirty(hetong);this.setMessage(删除成功);this.setPath(hetongMana.action);return succeed;public String hetongSearch()String sql=from THetong where del=no and hetongName like %+hetongName.trim()+%;List hetongList=hetongDAO.getHibernateTemplate().find(sql);Map request=(Map)ServletActionContext.getContext().get(request);request.put(hetongList, hetongList);return ActionSupport.SUCCESS;public String getHetongBeizhu()return hetongBeizhu;public void setHetongBeizhu(String hetongBeizhu)this.hetongBeizhu = hetongBeizhu;public THetongDAO getHetongDAO()return hetongDAO;public void setHetongDAO(THetongDAO hetongDAO)this.hetongDAO = hetongDAO;public int getHetongId()return hetongId;public void setHetongId(int hetongId)this.hetongId = heto
展开阅读全文