1、.专科毕业设计(论文)基于.net 的 PSP 系统的软件设计和实现2012 年 6 月.摘 要本系统主要使用了 Jsp、Struts2 、Spring 以及 Hibernate 技术,采用目前网站开发中较为流行的 MVC 设计架构。Struts2 技术主要用于处理页面的跳转和对业务方法的调用,目的是为了分离视图层和控制层。Spring 技术主要用于在 Struts 与Hibernate 技术之间的解耦操作,提高程序的重用性、可维护性以及健壮性。Hibernate 技术是为了实现用面向对象的思想来管理和使用数据库技术,实现程序与数据库之间的低耦合。文章介绍了使用 java 和 xml 技术开发
2、网站系统的详细过程,介绍了项目背景和开发意义,同时包含了对系统开发环境与技术的介绍。在系统分析与设计部分,对系统功能做出了详细的描述,并对各个功能模块进行了分析,包括模块显示界面、使用的数据及函数调用过程等。使用类图阐述了本系统的设计思路,使用用例图和时序图来协助说明系统的设计方案。在系统实现与测试阶段,使用了流程图进一步展现了系统功能的实现过程。该系统将会给各钟表销售门店带来方便,其功能需求也会进一步提高和稳定。我们期待该系统能为当今社会更好的服务。.目 录第 1 章 绪论 .11.1 开发背景 11.2 开发思路及主要方法 .11.3.我的管理 .2第 2 章开发语言 32.1.1 系统开
3、发工具与运行平台 .32.1.2 开发语言 .42.2 相关技术简介 52.2.1 动 态 编 程 .52.2.2 系统采用技术介绍 10第 3 章系统分析与设计 .113.1 用户需求的获取 113.2 系统用户分析 113.3 系统功能分析 113.4 数据库分析与设计 .123.5 系统详细设计 123.5.1 系统页面设计 12第 4 章 系统实现与测试 134.1 重要模块说明 .13结论 .16致谢 .18参考文献 .19.第 1 章 绪论1.1 开发背景个人软件过程(PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架
4、。PSP与具体 的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP 能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。其中,SP 又包括过程改进,时间管理,制订计划缺陷管理几个方面。在CMM1.1 版本的 18 个关键过程域中有 12 个与 PSP 有关,据统计,软件项目开发成本的 70%取决于软件开发人员个人的技能、经验和工作习惯。因此, 一个单位的软件开发人员如能接受 PSP 培训,对该单位软件能力成熟度的升级是一个有力
5、的保证。CMM 侧重于软件企业中有关软件过程的宏观管理,面向软件开 发单位,PSP 则侧重于企业中有关软件过程的微观优化,面向软件开发人员。二者互相支持,互相补充,缺一不可。按照 PSP 规程,改进软件过程的步骤首先需要明确质量目标,也就是软件将要在功能和性能上满足的要求和用户潜在的需求。接着就是度量产品质量,有了目标还 不行,目标只是一个原则性的东西,还不便于实际操作和判断,因此,必须对目标进行分解和度量,使软件质量能够“测量“。然后就是理解当前过程,查找问题, 并对过程进行调整。最后应用调整后的过程,度量实践结果,将结果与目标做比较,找出差距,分析原因,对软件过程进行持续改进。就象 CMM
6、 为软件企业的能力提供一个阶梯式 的进化框架一样,PSP 为个体的能力也提供了一个阶梯式的进化框架,以循序渐进的方法介绍过程的概念,每一级别都包含了更低一级别中的所有元素,并增加了 新的元素。这个进化框架是学习 PSP 过程基本概念的好方法,它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和 水平。1.2 开发思路及主要方法在上这门选修课之前,我对个人软件过程可以说是一点都不了解,只知道是一款游戏机。经过了老师的讲解,我才对个人软件过程有了初步的了解。 原来,我以为开发软件靠的只是技术,只要掌握了编程技巧,把相应的语言学好,就能开发出优秀的软件。可是,学习
7、几节课后,听了.您对的讲解,我才明白要要想开发出好的软件,不仅需要真才实干,还要有好的规划好自己的时间和其他方面。由于我是计算机专业的学生,可能对这些知识接触较少,有说的不太对的地方,还请老师以后多指教。我认为包括了很多方面,其中有对代码的不断修改,通过测量来发现问题,并改正问题。还有对自己的时间的合理利用,做切实可行的计划,按照计划进行工作,这样可以了解计划存在哪些问题,有助于更好的计划下一个项目。按照好的计划完成工作,由于软件中的许多错误都是由于粗心大意引起的,所以合理利用时间,计划工作是很有用的,可以有效的减少这些错误。我认为也是一种很好的工作和学习的方法,它可以使我们更好的学习和工作,
8、最大化的利用时间,提高工作效率。这就是我对的的认识,以后的工作中我会通过对自己的工作做较好的计划,更好的体会给工作带来的益处,对它进一步的了解。1.3.我的管理(1)制定计划每天要做的事情很多,如果不制定一个很好的计划就总会不能按计划完作,尤其到了周六日的时候,早晨一睡就是一上午,会浪费很多时间,所以我自已制定了周日一天的计划。(2)过程改进需要不断的改进。就是在不断的测量中发现问题和改正错误。这学期的 c 语言作业中我就通过不断的调试,发现错误,然后改进,并完善程序。我编的是一个贪食蛇的小游戏,编好后,我发现只能实现玩家控制一条小蛇吃蛋,增加长度。虽然做好了,但是和我玩过的绝大多数游戏比起来
9、,简直太简单了,可玩性相当差,于是我又在头脑中形成了我想要的游戏的样子,以那样的为目标,一点点改进我程序。如加入音乐,加入其他食物(得分食物,加速食物等),增加主菜单,增加一些关卡,调试过程也是一个不断与目标看齐,改进程序的过程,就像一开始我加入音乐时,发现是在游戏之前播放音乐,播放完成后,才能进入游戏,于是我查找书籍,反复调试,最后成功达到音乐做为背景音乐的效果。就这样朝着目标不断改进,最后终于达到了期望的结果。.第 2 章开发语言2.1.1 系统开发工具与运行平台由于 Linux 是一套具有 Unix 全部功能的免费操作系统,它在众多的软件中占有很大的优势,为广大的计算机爱好者提供了学习、
10、探索以及修改计算机操作系统内核的机会。操作系统是一台计算机必不可少的系统软件,是整个计算机系统的灵魂。一个操作系统是一个复杂的计算机程序集,它提供操作过程的协议或行为准则。没有操作系统,计算机就无法工作,就不能解释和执行用户输入的命令或运行简单的程序。大多数操作系统都是由一些主要的软件公司支持的商品化程序,用户只能有偿使用。如果用户购买了一个操作系统,他就必须满足供应商所要求的一切条件。因为操作系统是系统程序,用户不能擅自修改或试验操作系统的内核。这对于广大计算机爱好者来说无疑是一种束缚。要想发挥计算机的作用,仅有操作系统还不够,用户还必须要有各种应用程序的支持。应用程序是用于处理某些工作(如
11、字处理)的软件包,通常它也只能有偿使用。每个应用程序的软件包都为特定的操作系统和机器编写。使用者无权修改这些应用程序。使用 Linux,可以将操作系统变成一种操作环境。由于 Linux 是一套自由软件,用户可以无偿地得到它及其源代码,可以无偿地获得大量的应用程序,而且可以任意地修改和补充它们。这对用户学习、了解Unix 操作系统的内核非常有益。 学习和使用 Linux,能为用户节省一笔可观的资金。Linux 是目前唯一可免费获得的、为 PC 机平台上的多个用户提供多任务、多进程功能的操作系统,这是人们要使用它的主要原因。就 PC 机平台而言,Linux 提供了比其他任何操作系统都要强大的功能,
12、Linux 还可以使用户远离各种商品化软件提供者促销广告的诱惑,再也不用承受每过一段时间就升级之苦,因此,可以节省大量用于购买或升级应用程序的资金。Linux 不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。用户不但可以从 Internet 上下载 Linux 及其源代码,而且还可以从 Internet 上下载许多 Linux 的应用程序。可以说,Linux 本身包含的应用程序以及移植到Linux 上的应用程序包罗万象,任何一位用户都能从有关 Linux 的网站上找到适.合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码,以便修改和扩充操作系统或应用程
13、序的功能。这对 Windows NT、Windows98、MS-DOS 或 OS2 等商品化操作系统来说是无法做到的。Linux 为广大用户提供了一个在家里学习和使用 Unix 操作系统的机会。尽管Linux 是由计算机爱好者们开发的,但是它在很多方面上是相当稳定的,从而为用户学习和使用目前世界上最流行的 Unix 操作系统提供了廉价的机会。现在有许多 CD-ROM 供应商和软件公司(Linux 操作系统。Linux 成为 Unix 系统在个人计算机上的一个代用品,并能用于替代那些较为昂贵的系统。因此,如果一个用户在公司上班的时候在 Unix 系统上编程,或者在工作中是一位 Unix 的系统管
14、理员,他就可以在家里安装一套 Unix 的兼容系统,即 Linux 系统,在家中使用 Linux 就能够完成一些工作任务。2.1 系统语言2.1.2 开发语言2.0 是一种动态网站高级编 程 语 言 。 2.0 是微 软 公司的最新版本,是一种建立在公 共 语 言 运 行 库 上的编程框架,可用于服务器上开发强大的 web 应 用 程 序 。2.0 不但执行效率大大提高,对 代 码 的控制也做的很好。并且支持 web controls 功能和多种语言。以提高安全性,以管理性和高扩展性。 技术从 1.0 升级到 1.1 的变化不大,但是升级到 2.0,却发生了相当大的变化,在开发过程中,微 软
15、 公司深入市场,针对大量开发人员和软 件 使用者,进行了卓有成效的研究,并为其指定了开发代号,2.0 设计目标的核心,可以用一个词来形容简化。因为其设计目的是将应 用 程 序 代码 数量减少百分之七十以上,改变过去那种需要编写很多重复行代码的状况,尽可能做到写很少的代码就可以完成任务。对于软 件 工 程 师 来说,2.0是 web 开发史上的一个重要的里 程 碑 ! 2.0 的新特性: 生 产 效 率 ,使用新增的 2.0 服务器控件和包含新增功能的现有控件,可以轻松的创建2.0 网页和应 用 程 序 。 灵活性和可 扩 展 性 ,很多 2.0 功能都可以扩展。这样可以轻松的将自定义功能集成到
16、应 用 程 序 中。 性能,使.用如预 编 译 ,可配置缓存和 sql 缓存失效等功能。安全性,现在向 web 应 用 程序 添加身 份 验 证 和授权非常简单。完整性,新增功能和现用功能协 同 工 作 ,可以创建解决实时 web 开发挑战的端对端方案。 编 辑 本 段 .无论如何,.NET 4.0已经在叩开新年的大门之时,以高调的姿态迎来一片掌声。广大的技术爱好者不会等待太长的时间,就能感受 C#发展中的又一次变革。随着.NET 4.0在 2009年的发布,我们对于 C# 4.0的关注也将与日俱增。总体而言,C# 4.0的重头戏主要着眼在以下几个方面:动态编程 并 行 计 算 后期绑定 协变
17、与逆变 废话少说,接下来我们一一领略 C# 4.0中的语言特性。2.2 相关技术简介2.2.1 动 态 编 程众所周知,C#是静态强 类 型 语 言 。而在很多情况下,提供“动态” 行为,是常常发生的事情,例如通过反射在运行时访问.NET 类型、调用动 态 语 言 对象、访问 COM 对象等,都无法以静态类型来获取。因此, C# 4.0 引入的又一个全新的关键字 dynamic,也同时引入了改善静态类型与动态对象的交互能力,这就是动态查找(Dynamic Lookup)例如:就像一个 object 可以代表任何类型,dynamic 使得类型决断在运行时进行,方法调用、属性访问、委托调用都可动态
18、分派。同时,动态特性还体现在构建一个动态对象,在 C# 4.0 实现IDynamicObject 接口的类型,可以完全定义动态操作的意义,通过将 C#编 译 器作为运行时组件来完成由静态编译器延迟的操作,例如:dynamic d = new Foo(); .MyMethod(s,3,null); 在具体执行过程中, C#的运行时绑定器基于运行时信息,通过反射获取 d 的实际类型 Foo,然后在 Foo 类型上就 MyMethod 方法进行方法查找和重 载 解析,并执行调用,这正是动态调用的背后秘密:DLR。在.NET 4.0 中将引入重要的底层组件 DLR(Dynamic Language R
19、untime,动 态 语 言 运行时) ,除了实现动态查找的基础支持,DLR 也同时作为基础设施为类似于这个特性非常简单,有些 JavaScript 的影子,我们可以统一使用使用“var“ 关键字来声明局 部 变 量 ,而不再需要指明变量的确切类型了,变量的确切类型可通过声.明变量时的初始值推断出来。这样一来,可以大大简化我,由于变 量 的类型是通过变量初始值推断而来的,所以在声明变量的同时必需为变量指定初始值。并且,变 量 并不是没有类型的,变量一旦初始化之后,类型就确定下来了,以后就只能存储某种类型的值了,比如上面的 stringValue 的类型经推断为string,所以该变量就只能保存
20、 string 类型的值了。2.2 系统采用技术简介 1Visual Basic 是一种高级程序设计语言,不具备低级语言的功能,对访问机器硬 zz 件的操作不太容易实现。但它可以通过动态链接库技术将 C/C+或汇编语言编写的程序加入到 Visual Basic 应用程序中,可以像调用内部函数一样调用其他语言编写的函数。此外,通过动态链接库,还可以调用 Windows 应用程序接口(API)函数,实现 SDK 所具有的功能。图 1-1 Struts 2 的 MVC 实现示意图工作流程:1. 用户提交 Request 请求信息。2. FilterDispatcher 询问 ActionMapper
21、 是否需要调用某个 Action 来处理这个(HttpServlet Request)请求,如果 ActionMapper 决定需要调用某个 Action,FilterDispatcher 则把请求的处理交给 ActionProxy。3. ActionProxy 通过 Configuration Manager(struts.xml )询问框架的配置文件,找到需要调用的 Action 类。4. ActionProxy 创建一个 ActionInvocation 实例,同时 ActionInvocation 通过代理模式调用 Action。但在调用之前,ActionInvocation 会根据配
22、置加载 Action 相关的所有 Interceptor(拦截器) 。核心控制器FilterDispatcher视图 ViewJsp , Struts TagsStruts.propertiesStruts.xmlAction Model业务逻辑RequestResponseeInterceptorsResults.5. 一旦 Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配置找到对应的返回结果 result。Spring 简介:Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以
23、选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles 、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不仅仅限于使用 JSP 技术。 Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。如下图 1-2 是Spring 的 MVC 实现示意图,图 1-2 Spring 的 MVC 实现示意图工作流程:1. DispatcherSer
24、vlet 接收到请求后,根据对应配置文件中配置的处理器映射,找到对应的处理器映射项(HandlerMapping) ,根据配置的映射规则,找到对应的处理器(Handler) 。2. 调用相应处理器中的处理方法,处理该请求,处理器处理结束后会将一个 ModelAndView 类型的数据传给 DispatcherServlet,这其中包含了处理结果的视图和视图中要使用的数据。3. DispatcherServlet 根据得到的 ModelAndView 中的视图对象,找到一个合适的 ViewResolver(视图解析器) ,根据视图解析器的配置,浏览器 DispacherServlet Hande
25、rServiceHandlerMappingStruts.xmlViewResolverView (JSP JSTL)ModelModelAndView8HTTP 相应2 寻找处理器4 业务处理5 得到处理结果6 得到处理结果7 传给 view 显示1HTTP 请求 3 调用处理器.DispatcherServlet 将视图要显示的数据传给对应的视图,最后给浏览器构造一个 HTTP 响应。DispatcherServlet 是整个 Spring MVC 的核心。它负责接收 HTTP 请求组织协调 Spring MVC 的各个组成部分。其主要工作有以下三项:(1)截获符合特定格式的 URL 请求
26、。(2)初始化 DispatcherServlet 上下文对应的 WebApplicationContext,并将其与业务层、持久化层的 WebApplicationContext 建立关联。(3)初始化 Spring MVC 的各个组成组件,并装配到 DispatcherServlet 中。Hibernate 技术简介: Hibernate 是一个数据持久层框架,是一种实现对象和联系之间映射(O/R Mapping)的工具,它对 JDBC 执行 了轻量级的对象封装,使程序员可以运用对象编程思想来操作数据库。它不仅提供了从 Java 类到数据表的映射,也提供了数据查询和恢复机制。相对于运用 J
27、DBC 和 SQL 来操作数据库,运用 Hibernate 能大大的提高实现的效率。 Hibernate 框架用配置文件的形式来定义Java 对象和数据表之间的映射联系,同时在更深的层面将数据表之间的联系解释为 Java 对象之间的继承及包含等联系。通过运用 HQL 语句将复杂的联系算法用对象的方式描述,在很大程度上简化了对数据的查询,加快了开发的效率。在 Hibernate 中有一个基本而直观的 API,用于对数据库所表示的对象执行查询。要建立或修改这些对象,只需在程序中与它们执行 交互,然后告诉 Hibernate保存即可。这样,大量封装持久化操作的业务逻辑不再须要编写烦琐的 JDBC语句
28、,从而使数据持久层得到了极大的简化 Hibernate 是一种新的 ORM 映射工具,它不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,使用 Hibernate,可以大大减少操作数据库的工作量。Hibernate 可以和多种 Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器其体系结构如图 1-3 所示MVC 设计模式:模式视图控制器(ModelViewController,MVC)是一种先进的设计模式。是 Trygve Reenskaug 教授于 1978年最早开发的一个设计模版或基本结
29、构,其目的是以会话的形式提供方便的GUI 支持。三层结构的特点是:所以下层向上层提供调用的接口,具体实现细节对上层透明,层与层之间存在自上而下的依赖关系,即上层会访问下层的API 层,但下层不依赖于上层。视图(View)代表用户交互界面,对于 Web 应用来说,可以概括为 HTML 界面,但有可能为 XHTML、XML 和 Applet。随着应.用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC 设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。模型(Model):就是业务流程/状态的处理以及业务规则的制定。
30、业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。其模型视图如图 1-4 所示。图 1-4 MVC 模型MVC 是一种通过 3 个不同部分构造一个软件或组件的理想办法:1. 模式(Model)用于存储数据的对象 2. 视图(View )为模式提供数据显示的对象。 3. 控制器(Controller )负责具体的
31、业务逻辑操作,即控制器根据视图提出的要求对数据做出处理,并将有关结果存储到模型中,同时负责让模型和视图进行必要的交互,当模型中的数据变化时,让视图更新显示。 从面向对象的角度看,MVC 结构可以使程序更具有对象化特性,也更容易模型数据视图控制器请求 jsp 显示数据请求处理数据连接读取存储数据JSP 页面JSP 页面ACTIONSERVLET数据库文件JAVABEANNNJAVABEANNN.维护。在设计程序时,可以将某个对象看做“模型” ,然后为“模型”提供恰当的显示组件,即“视图” 。在 MVC 模式中, “视图” 、 “模型”和“控制器”之间是松散耦合结构,便于系统的维护和扩展。2.2.
32、2 系统采用技术介绍本系统采用了 .net、CMM 技术,采用 MVC 架构。zCMM 与 PSP 在 20 世纪 80 年代后期到 90 年代早期,SEI 开发了能力成熟度模型(CMM) ,为软件开发总组织级的最佳实践。SEI 特别会员 Watts Humphrey 决定将 CMM 的基本原理应用于单个开发的软件开发实践中。个人软件过程(PSP)就是他努力的成果,为单个软件开发人员设计的五级过程。 CMM 与 TSP 不久大家就发现,虽然使用 PSP 可以取得优异的结果,但是如果周围的环境不能鼓励并且要守 PSP 实践,这些必要的规范性是几乎不可能得到维持的。所以汉弗莱为大多数组织中最小作单
33、位项目组,开发了团队软件过程(TSP ) ,TSP 是为项目组设计的 CMM5 级过程。份 SEI 技术报告中,记录了使用 TSP 在满足成本和进度估算的同时达到一流质量水平的最新CMM 的演变 同时,CMM 的成功也引发了相似模型的开发以覆盖系统工程(SE-CMM) 、集成产品开发 CMM) 、软件采购(SA-CMM )以及人力资源(P-CMM) 。为了缓解模型数量的过快增长,使用从未正式发布的 CMM 第二版、系统工程 CMM 和 IPD-CMM 开发了能力成熟度模型集成(CMMI) , .第 3 章系统分析与设计3.1 用户需求的获取接到毕设任务书后,通过在网上查阅了解了一些钟表销售相关
34、的平台,进行需求提炼总结,形成了用户需求分析的相关文档,也通过在图书馆查阅相关研究资料完善了需求分析。3.2 系统用户分析。3.3 系统功能分析随着软件工程知识的普及,软件工程师都知道,要开发高质量的软件,必须改进软件生产的过程。目前,业界公认由 CMU/SEI 开发的软件能 力 成 熟 度 模型 SW-CMM 是当前最好的软件过程,并且 CMM 已经成为事实上的软件过程工业标准。但是,CMM 虽然提供了一个有力的软 件 过 程 改 进 框架,却只告诉我们“应该做什么“,而没有告诉我们“应该怎样做“,并未提供有关实现关 键 过 程 域所需要的具体知识和技能。为了弥补这个欠缺,Humphrey
35、又主持开发了个体软件过程(Personal Software Process,PSP)。 在 CMM1.1 版本的 18 个关键过程域中有 12 个与 PSP 有关,据统计,软件项目 开发成本的 70%取决于软件开发人员个人的技能、经验和工作习惯。因此,一个单位的软件开发人员如能接受PSP 培训,对该单位软件能力成熟度的升级是一个有力的保证。CMM 侧重于软件企业中有关软件过程的宏观管理,面向软件开发单位,PSP 则侧重于企业中有关软件过程的微观优化,面向软件开发人员。二者互相支持,互相补充,缺一不可。按照 PSP 规程,改进软件过程的步骤首先需要明确质量目标,也就是软件将要在功能和性能上满足
36、的要求和用户潜在的需 求 。接着就是度量产品质量,有了目标还不行,目标只是一个原则性的东西,还不便于实际操作和判断,因此,必须对目标进行分解和度量,使软件质量能够“测量“。然后就是理解当前过程,查找问题,并对过程进行调整。最后应用调整后的过程,度量实践结果,将结果与目标做比较,找出差距,分析原因,对软件过程进行持续改进。就象CMM 为软件企业的能力提供一个阶梯式的进化框架一样,PSP 为个体的能力也提供了一个阶梯式的进化框架,以循序渐进的方法介绍过程的概念,每一级别都包含了更低一级别中的所有元素,并增加了新的元素。这个进化框架是学习PSP 过程基本概念的好方法,它赋予软件人员度量和分析工具使其
37、清楚地认识到自己的表现和潜力,从而可以提高自己的技.3.4 数据库分析与设计根据对普通注册用户和系统管理员用户的分析,系统可以涉及到 5 大实体,分别是社区信息、用户信息、物品信息、留言信息以及评价信息。社区信息是指用户所在社区的具体信息,其应包含的属性有社区标识、社区名称、社区地址以及社区介绍等。这样用户在注册的时候可以选择查看社区信息,以便了解自己应该注册在哪个社区从而更快捷方便的进行旧货交换活动。其他用户在搜索物品时也可以查看发布人所在的社区信息,以便决定自己要不要拿自己的东西去进行交换或者给对方留言。3.5 系统详细设计主要介绍了钟表销售管理系统的原型设计及重要模块的详细设计实现过程,
38、用一系列的时序图辅助文字图表等进行说明。3.5.1 系统页面设计通过对旧货交换信息平台系统的分析,本系统的主要使用用户有两种,一是注册的普通用户,是系统主要的服务对象,二是系统管理员,负责系统日常信息的维护,因而系统原型设计可根据两种用户角色划分为不同功能的模块设计,分别是公共模块、普通用户模块和系统管理员模块。1. 公共模块设计公共模块包含了注册登录、查看修改个人信息、修改密码、查看日历,物品检索,友情链接、建议投诉等子功能模块。公共模块作为系统的前台页面显示,需要灵活的易用性和美观性,当用户登录系统后在左侧的导航栏中也会显示这些信息,和其他系统类似,在需要增加一些链接的地方也加入了公共模块
39、的很多信息。公共模块功能层次图设计如下图 3-10 所示,.第 4 章 系统实现与测试4.1 重要模块说明1. 普通用户发布物品流程图图下图 4-1 所示图 4-1 用户发布物品流程图开始实例化GoodsDao实例化SysUserDao初始化实体类Goods根据登录 id标识查询SysUsergoods 对象 返回查询到的 goods 对象中初始化 初始化UserService调用 save() 释放查询对象跳转到发布接受页面输入参数.普通用户点击发布物品链接即可进入发布物品的页面,页面有相关输入框和下拉框来提示用户进行操作。输入用户参数后将通过 http 协议传递给GoodsManageAc
40、ion 中的 addGoods()方法,首先根据登录 id 通过 SysUserDao 查询用户信息,检查在数据库中是否存在,若查询成功,返回该 user 对象。并封装成 user 属性,以便将该对象输入到 Goods 对象中。addGoods()方法会通过GoodsService 类调用 GoodsDao 中的 save()方法,即将该记录添加到数据库表中进行保存,其他用户就可以对该物品进行搜索或查看。物品配价功能分为两种,一种是全社区配价,一种是本社区配价,实现方式是先以价格和确定的配价范围调用 GoodsDao 的 findBySamePrice()方法查找数据库中价格类似的物品,并返回
41、一个 Goods 类型的 list 对象,得到该 list 对象后,才根据用户的选择过滤出物品所属用户与登录用户不在一个社区和过滤出自己发布的物品作为本社区配价结果,而全社区配价结果是仅仅将自己发布的物品过滤出去,再通过实例化 GoodsService 将该值传递给 GoodsManageAction类,该类将 list 对象封装成 http 协议传递到前台页面进行显示。.结论本次毕业设计的完成,使我在专业技能方面得到了大幅度的提升,对Eclipse 平台下利用 SSH 框架技术进行系统开发有了更进一步的理解。对 MVC架构的运行原理也有了更深刻的认识。系统采用 SSH 框架设计,典型的 J2
42、EE 三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。表现层是传统的 JSP 技术,其优点在于广泛的应用和稳定的表现。中间层采用的是流行的 Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。 Web 层,就是 MVC 模式里面的“C” (controller ) ,负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的 MVC 框架采用 Struts。 Service 层(就
43、是业务逻辑层) ,负责实现业务逻辑。业务逻辑层以 DAO 层为基础,通过对 DAO 组件的正面模式包装,完成系统所要求的业务逻辑。 DAO 层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。 PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用 Hibernate 作为 ORM 框架。 Spring 的作用贯穿了整个中间层,将 Web层、Service 层、 DAO 层及 PO 无缝整合,其数据服务层用来存放数据。 采用 Hibernate 作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统
44、设计。DAO 模式需要为每个 DAO 组件编写 DAO 接口,同时至少提供一个实现类,根据不同需要,可能有多个实现类。用 Spring容器代替 DAO 工厂 。通常情况下,引入接口就不可避免需要引入工厂来负责DAO 组件的生成。Spring 实现了两种基本模式:单态模式和工厂模式。而使用Spring 可以完全避免使用工厂模式,因为 Spring 就是个功能非常强大的工厂。因此,完全可以让 Spring 充当 DAO 工厂。 由 Spring 充当 DAO 工厂时,无须程序员自己实现工厂模式,只需要将 DAO 组件配置在 Spring 容器中,由ApplicationContext 负责管理 D
45、AO 组件的创建即可。借助于 Spring 提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用 DAO 实例。 Struts 跟Tomcat、Turbine 等诸多 Apache 项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。 除此之外,Struts 的优点主要集中体现在两个方面:Taglib 和页面导航。Taglib 是 Struts 的标记库,灵活动用,能大大提高开发效率。MVC 架构中的模型是自包含的,并且与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。如果想把数据库从 MySQL.移植到 Sqlserver,或者改变基于 RDBM
46、S 数据源到 LDAP,只需改变模型即可。一旦正确的实现了模型,不管你的数据来自数据库或是 LDAP 服务器,视图将会正确的显示它们。由于运用 MVC 的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想能构造良好的松偶合的构件。本次毕业设计是自己第一次独立承担一个系统的开发任务,从前期的需求分析到数据库设计再到编码实现,都是自己全程参与和设计,这对自己的挑战还是很大的。从设计到实现的过程,使我认识到前期的设计是非常重要的,很多时候需要花费大量的时间来做需求分析和功能设计,这样在后期编码的时候才会更加的流畅,不至于因为前期需求不当导致编码进度缓慢。当然,这个过程也
47、使自己学到了很多 SSH 技术的相关知识,前期由于很多接口不是很清楚导致编码一度进行不下去。自己所了解和所学到的仅仅是管窥蠡测而已,在以后的学习工作中应该更加努力的去学习这方面的相关知识,增加实践次数,才能慢慢深入到 JAVA 软件开发中。.致谢首先要感谢我的母校西南交通大学,给我们提供了非常优秀的师资力量和优良的学习环境,使我们能够安心学习科学文化知识,提升自己适应社会的能力。为以后更好地为社会为民众做出贡献打下了坚实的基础。本次毕业设计的完成以及毕业论文的撰写,我非常感谢我的导师,任挺老师。由于在年初就去了公司实习,而且整个实习的周期很长,强度也很大,几乎所有的毕设工作都是在周末完成的。这
48、样的情况导致自己跟任老师见面的机会非常的少,只能通过邮件和 QQ 留言的方式和导师进行沟通。感谢导师理解自己这方面的苦衷。在系统设计编码阶段,非常感谢导师在系统功能需求方面对我的指导,使得后续的编码开发过程减少了很多困难,在实际开发过程中也遇到了很多技术上的困难,经过导师的指导也是一一得到解决。在论文的撰写过程中,任老师更是细心审阅,给了自己很多有建设性的意见。还要感谢在完成毕业设计过程中帮助过我的同学,因为不能经常回学校,所以好多事情他们的帮助下才能完成,由于自己对于界面设计不甚擅长,是得到了同学的无私帮助才能顺利设计出前台页面的样式。 最后要感谢我的父母,是他们给了我最大的精神支持,因为是
49、初次步入社会参加工作,加上要很好的完成毕业设计,思想上还是比较有压力。是他们给了我努力下去的动力。.参考文献1 Bruce Eckel 著,陈昊鹏 译 Thinking in Java 第四版 机械工业出版社 2007 年 6 月2 孙鑫, JAVA WEB 开发详解 电子工业出版社 2006 年 4 月3 Craig Walls Ryan Breidenbach 著,毕庆红、王军 等译 Spring in Action 第二版 2008 年 10 月4 刘雨,姚弘芹,赵秀珍. 科技期刊编辑模式现代化实践的探讨J. 北京理工大学学报(社会科学版). 2005 年 06 期5 王国辉. Java Web 开发典型模块大全. 人民邮电出版社. 2009 年 4 月6 刘斌. 精通 Java Web 整合开发. 电子工业出版社. 2007 年 11 月7 刘京华. Java Web 整合开发王者归来. 清华大学出版社. 2010 年 1 月8 梁立新.项目实践精解:基于 Struts-Spri