毕业论文管理系统概要设计说明书1引言1.1编写目的此文档对毕业论文管理系统概要设计进行说明。
预期的读者有 (甲方)的需求提供者、项目负责人、相关技术人员等,江西师范大学软件学院软件工作室Java项目小组(乙方)的项目组成员,包括项目经理、客户经理、分析设计开发测试等人员。
1.2背景毕业论文管理系统是基于互联网的应用软件。
鉴于以往学生毕业论文采用人工管理方式,工作量大且效率地下,而且毕业生毕业时大多离校,给导师指导学生毕业设计,学生提交论文等工作带来诸多不便。
希望开发一个系统来对课题,以及毕业论文选题进行规范化管理,从而方便导师对学生的论文写作进行指导和控制,方便学院管理毕业生论文。
利用计算机来管理毕业论文设计管理活动实现制度化,规范化,管理化。
1.3定义无1.4参考资料毕业论文管理系统需求规格说明书毕业论文管理系统详细设计说明书2总体设计2.1需求规定毕业论文管理系统按模块可以分成四部分,一是管理员系统管理模块, 二是选题管理,三是导师的课题管理,四是毕业设计过程控制管理,而它们各自又有具体的小模块组成。
具体需求见毕业论文管理系统需求规格说明书。
2.2运行环境操作系统:Win2003/XP, LinuxWEB服务器:Tomcat 5.5以上数据库服务器:MySQL5.0以上,能够处理数据并发访问,访问回馈时间短。
2.3基本设计概念1.系统整体方案(1)毕业论文管理系统主要特性我们从以下五个方面确定目标系统特性如下:用户界面的复杂度:数据的静态显示/可定制视图(customizable view)用户界面的部署约束:基于独立的桌面电脑或专用工作站的浏览器用户的数量和类型:组织内的日常使用者,总共几百人系统接口类型:通过HTTP协议提供服务,未来可以使用SOAP的SOA技术性能:主要是独立的数据更新,有少量并发处理从上述特性我们可以判断毕业论文管理系统属于中大型项目,因此我们使用基于Struts-Spring-Hibernate框架的分层架构设计方案。
(2)架构分层毕业论文管理系统项目架构设计中,我们使用分层模式。
具体地说,我们将毕业论文管理系统应用在职责上分成3层:表示层(Presentation Layer)、持久层(Persistence Layer)和业务层(Business Layser)。
每个层在功能上都应该是十分明确的,而不应该与其他层混合。
每个层要相互独立,通过一个通信接口而相互联系。
(3)模式和框架使用:在分层设计基础上,我们将使用设计模式和框架,这些是可以重用的资产。
1)MVC模式MVC模式就是一种很常见的设计模式。
所谓的MVC模式,即模型—视图—控制器(model—view--controller)模式。
其结构图如下:ViewModel Contr图4-1 MVC架构图1、Model端在MVC中,模型是执行某些任务的代码,而这部分代码并没有任何逻辑决定用户端的表示方法。
Model只有纯粹的功能性接口,也就是一系列的公共方法,通过这些公共方法,便可以取得模型端的所有功能。
2、View端在MVC模式里,一个Model可以有几个View端,而实际上多个View端是使用MVC的原始动机。
使用MVC模式可以允许多于一个的View端存在,并可以在需要的时候动态注册所需要的View.3、Controller端MVC模式的视图端是与MVC的控制器结合使用的。
当用户端与相应的视图发生交互时,用户可以通过视窗更新模型的状态,而这种更新是通过控制器端进行的。
控制器端通过调用模型端的方法更改其状态值。
与此同时,控制器端会通知所有注册了的视图刷新用户界面。
那么,使用MVC模式有哪些优点呢?MVC通过以下三种方式消除与用户接口和面向对象的设计有关的绝大部分困难:1、控制器通过一个状态机跟踪和处理面向操作的用户事件。
这允许控制器在必要时创建和破坏来自模型的对象,并且将面向操作的拓扑结构与面向对象的设计隔离开来。
这个隔离有助于防止面向对象的设计走向歧途。
2、MVC将用户接口与面向对象的模型分开。
这允许同样的模型不用修改就可使用许多不同的界面显示方式。
除此之外,如果模型更新由控制器完成,那么界面就可以跨应用再使用。
3、MVC 允许应用的用户接口进行大的变化而不影响模型。
每个用户接口的变化将只需要对控制器进行修改,但是控制器包含很少的实际行为,它是很容易修改的。
面向对象的设计人员在将一个可视化接口添加到一个面向对象的设计中时必须非常小心,因为可视化接口的面向操作的拓扑结构可以大大增加设计的复杂性。
MVC设计允许一个开发者将一个好的面向对象的设计与用户接口隔离开来,允许在同样的模型中容易地使用多个接口,并且允许在实现阶段对接口做大的修改而不需要对相应的模型进行修改2)框架根据项目特点,我们使用三种开源框架:表示层用Struts;业务层我们用Spring ;而持久层则用Hibernate 。
如图1-1所示。
表示层业务层持久层图1-1 Struts-Spring-Hibernate架构1 表示层一般来讲,一个典型的Web应用的前端应该是表示层。
这里可以使用Struts框架。
下面是Struts所负责的:管理用户的请求,做出相应的响应提供一个流程控制器,委派调用业务逻辑和其他上层处理处理异常为显示提供一个数据模型用户界面的验证以下内容,不该在Struts表示层的编码中经常出现,与表示层无关的。
与数据库直接通信与应用程序相关联的业务逻辑及校验事务处理在表示层引入这些代码,则会带来高耦合和难以维护的后果。
2 持久层典型的Web应用的后端是持久层。
开发者总是低估构建他们自己的持久层框架的挑战性。
系统内部的持久层不但需要大量调试时间,而且还经常因为缺少功能使之变得难以控制。
这是持久层的通病。
幸运的是,有几个对象/关系映射(Object/Relation Mapping,ORM)开源框架很好地解决了这类问题,尤其是Hibernate。
Hibernate为Java提供了持久化机制和查询服务,它还给已经熟悉SQL和JDBC API的Java开发者创造了一个学习桥梁,使他们学习起来很方便。
Hibernate的持久对象是基于POJO(Plain Old Java Object)和Java 集合(collections)的。
此外,使用Hibernate并不妨碍你正在使用的IDE(Integrated Development Enviroment)。
下面是Hibernate所负责的:如何查询对象的相关信息。
Hibernate是通过一个面向对象的查询语言(HQL)或者正则表达的API来完成查询的。
HQL非常类似于SQL,只是把SQL里的table和columns用Object和它的fields代替。
HQL 语言容易理解且文档也做得很好。
HQL是一种面向对象查询的自然语言,很容易就能学会它。
如何存储、更新、删除数据库记录。
如Hibernate这类的高级ORM框架支持大部分主流数据库,并且支持父表/子表(Parent/child)关系、事务处理、继承和多态。
3 业务层一个典型Web应用的中间部分是业务层或者服务层。
从编码的视角来看,这层是最容易被忽视的一层。
我们往往在用户界面层或持久层周围看到这些业务处理的代码,这其实是不正确的。
因为它会造成程序代码的高耦合,这样一来,随着时间推移,这些代码将很难维护。
幸好,针对这一问题有好几种框架(Framework)存在。
最受欢迎的两个框架是Spring和PicoContainer。
这些也被称为轻量级容器(micro container),它们能让你很好地把对象搭配起来。
这两个框架都着手于“依赖注入”(dependency injection)(还有我们知道的‘控制反转’Inversion of Control=IoC)这样的简单概念。
这里我们将关注于Spring的依赖注入和面向方面编程。
另外,Spring把程序中所涉及到的包含业务逻辑和数据存取对象(DataAccess Object)的Objects——例如transaction management handler(事务管理控制)、Object Factoris(对象工厂)、service objects(服务组件)——都通过XML来配置联系起来。
下面是业务层所负责的:处理应用程序的业务逻辑和业务校验管理事务提供与其他层相互作用的接口管理业务层级别的对象的依赖在表示层和持久层之间增加了一个灵活的机制,使得他们不直接联系在一起通过揭示从表示层到业务层之间的上下文(Context)来得到业务逻辑(business services)管理程序的执行(从业务层到持久层)2. UML视图(1)Use-case Diagram:如图所示。
(2)class- Diagram:如图所示。
2.4结构1.一般用户浏览的内容管理模块:首页显示及其他页面2.系统管理模块:a)登录b)信息统计c)确认供选课题(课题审核)d)查看导师工作日志e)权限管理f)模块设置3.课题管理:a)课题上传b)课题更改c)课题删除d)课题统计4.选题管理:a)课题选择b) 选课记录更改5.过程控制:a) 阶段管理b)过程评审2.5功能需求与程序的关系各项功能需求的实现同各块程序的分配关系如下所示:程序1(Action)程序2(BusinessService)程序3(DAO)系统管理权限管理模块1管理员管理AdminManageAction IAdminManageService IAdminManageDAO/ AdminManageDAO2.导师管理TeacherAction ITeacherService ITeacherDAO/2.6人工处理过程无2.7尚未解决的问题无3接口设计3.1用户接口用户接口以基于浏览器的图形用户界面(Graphic User Interface, GUI)的方式提供,具体见页面导航图(静态页面设计)。
3.2外部接口本系统同与已有的工作室管理系统之间有数据交换。
3.3内部接口一.系统管理接口描述1.IAdminManageService接口类提供以下方法:(1)public String addAdmin(Group admin,Teacher teacher );目标:添加管理员参数类型说明admin class 权限组管理员对象teacher class 老师对象主要流程描述:超级管理员提交添加请求,在Action中调用该方法,传入权限组类中管理员组及要添加的老师对象,添加管理员记录(2)public List show (Map<String actor, String actor_id>);目标:超级管理员查看管理员信息参数类型说明actor String 角色actor_id String 角色编号主要流程描述:用户提交请求,在Action中调用该方法,传入一个Map,到数据库查找(调用IAdminManageDAO)获取相关选课记录。