软件开发与项目管理课程案例——基于SSH框架的学工管理系统的设计与实现_第1页
软件开发与项目管理课程案例——基于SSH框架的学工管理系统的设计与实现_第2页
软件开发与项目管理课程案例——基于SSH框架的学工管理系统的设计与实现_第3页
软件开发与项目管理课程案例——基于SSH框架的学工管理系统的设计与实现_第4页
软件开发与项目管理课程案例——基于SSH框架的学工管理系统的设计与实现_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于SSH框架的学工管理系统的设计与实现一、项目简介(一)项目来源XXX学院是集教学研究、技术培训、项目开发、技术服务为一体的完善体系二级管理单位,以前的办公管理,存在着管理复杂、烦琐及信息冗余等弊端,而且由于不可避免的人为原因,总存在一些误差,存在很大的不科学性。随着电脑的普及和学院对协同办公要求的提高,协同办公的定义随之扩展,将其提升到了智能化办公的范畴。学院不仅需要解决日常办公、基础信息管理、信息交流等常规协同的功能,并且在即时沟通、数据共享、移动办公等方面提出了更进一步的需求, 以提高他们工作效益和管理水平。根据学院本身的需要,设计了一个学工管理系统,该统融合最新的企业OA办公自动化管

2、理理念,支持智能查找,动态报表,及时交流等功能,容纳大量数据的OA办公系统,提供低成本的,无纸化,可视化的自动化解决方案。该系统采用模块化结构设计、可扩展性强、易于维护、操作简便为全院教职工提供良好的办公手段和环境,使之准确、高效、心情愉快地工作。(二)项目功能学工办自动化管理系统主要包括:日常管理、班主任管理、公寓管理、团委管理、党务管理、系统管理这6个模块。本案例主要说明系统管理模块,该模块在整个系统中及其的重要,该模块主要有:人员角色管理、角色管理、权限管理、角色权限管理、分栏管理、部门管理、学生登录信息管理这七个小功能,不同用户由于权限不同属于不同的角色,角色与权限相对应。增加一个用户

3、时同时设置该用户的角色,有了角色就具备了一定的权限。二、系统开发技术SSH2框架将服务器端应用分为DAO层、Service层、Action控制层、Spring容器层、视图层,各层之间通过接口联系。DAO层完成数据库增加、删除、修改等细节,DAO层将底层数据库访问操作和业务逻辑分开,对业务层提供面向对象的访问接口。Service业务层提供了处理应用程序的业务逻辑和业务校验。控制层的控制器Action接受用户的输入并调用业务层的业务方法和表示层的组件去完成用户的请求。服务器的各种组件的生成都是由Spring容器来控制,Spring容器提供了依赖注入、实例管理、事务处理等服务。视图层是用户看到并与之

4、交互的界面,视图向用户显示相关的数据,并能接受用户的输入数据,但不能进行任何实际的业务处理。SSH2架构设计图如图2-1所示。视图JSPStruts Struts2 过滤器、拦截器 Spring 容器ActionServiceDAOPOJO数据库图2-1 SSH2架构设计图SSH2框架的工作流程说明:l 将Struts2视图层产生的请求提交给控制层,控制层根据配置文件决定使用哪些拦截器、Action类。l 请求经过一系列拦截器,根据不同的请求级别拦截器做出不同的处理。l 调用Struts2的Action,Spring容器通过配置文件中Bean 的ID自动装配Action。l Spring容器定

5、位Action对应的业务逻辑。l 业务逻辑层把对应的业务处理请求转发给DAO层。l DAO层将业务逻辑层的数据封装完成后,通过持久层的Hibernate框架映射的POJO对象与数据进行交互。应用SSH2架构设计可以充分发挥它们的优势,实现了多层系统开发的低偶合,不仅减少了重复开发工作量,缩短开发时间,降低开发成本,同时,使程序设计更加合理,程序运行更加稳定。三、需求分析(一)需求说明1系统业务概述学工办自动化管理系统主要包括:日常管理、班主任管理、公寓管理、团委管理、党务管理、系统管理这6个模块。本案例主要说明系统管理模块,该模块在整个系统中及其的重要,该模块主要有:人员角色管理、角色管理、权

6、限管理、角色权限管理、分栏管理、部门管理、学生登录信息管理这七个小功能,不同用户由于权限不同属于不同的角色,角色与权限相对应。增加一个用户时同时设置该用户的角色,有了角色就具备了一定的权限。2系统用例用例图用来确定需求的范围,这些需求是设计开发的依据。用例图将系统看作黑盒,从外部执行者的角度来理解系统。图中的用例是用户与计算机之间一次典型的交互作用,在UML中,用例表示为一个椭圆,执行者是指用户在系统中用类似人的图形来表示的,但执行者未必是人。例如,执行者可以是一个外界系统,该外界系统可能需要从当前系统中获取信息,与当前系统进行交互。根据学生管理系统项目需求分析,得出系统主要用例图,如下图所示

7、。主要角色(Actor)包括系统管理员、学工管理员、班主任、学生。图3-1 系统管理用例系统管理是学工管理系统必备的功能之一。系统管理主要包括权限管理、分栏管理、角色管理、角色权限设置、人员角色设置等。不同用户由于权限不同属于不同的角色,角色与权限相对应。增加一个用户时同时设置该用户的角色,有了角色就具备了一定的权限。(二)功能需求描述1系统管理系统管理功能是学工管理系统中核心模块。该功能主要是针对用户权限进行管理,学工管理系统有不同的用户如学生、班主任、学工管理员、系统管理员等,不同的用户具有不同的权限。通过权限与角色、人员与角色的设定,用户具有某种角色就有特定的权限,不同的用户由于角色的不

8、同拥有不同的权限。系统管理设计的思路是:给不同用户赋予不同的角色,不同的角色设置了不同的权限,不同的权限所拥有的功能又不同,这个主要体现在对权限分栏的设置,根据功能分栏的不同,功能页面就是根据这些关系的设置确定的。该模块主要分为:人员角色管理、角色管理、权限管理、角色权限管理、分栏管理这五个功能。系统提供了系统管理员,可以对所有用户进行管理控制。该模块的功能结构图如下:图3-2系统管理功能结构图l 数据需求用户人员信息,角色信息,权限信息,角色权限信息,分栏信息,用户权限信息.l 用户接口系统管理员通过页面提交各类信息的功能。l 用户权限系统管理员:所有功能。l 报表需求暂无。2角色管理角色管

9、理是系统管理员创建角色,查看角色,修改角色以及删除角色。系统角色管理如下图所示:图3-3角色管理结构图四、系统设计(一)数据库设计数据库设计主要是用SQL Server2000进行设计的,在设计的前期还运用了powerdesigner进行数据库的辅助设计。数据库的设计的好坏直接影响到,整个项目的好坏,因此数据库的设计很重要。1系统管理的表视图系统模块中共涉及到七张核心表,同时它也不同程度的和教师用户,学生用户表之间都有相关的联系,分别是:角色表、权限角色表、角色表、权限表、用户信息表分栏表、部门表,Powerdesigner中的系统管理pdm表结构如图4-1 所示。图4-1 pdm表结构如图P

10、owerdesigner中的由pdm表结构生成的系统管理cdm表结构如图4-2所示:图4-2 cdm表结构图(二)详细设计1系统管理(STUOA-XTGL)该系统管理主要包括的:人员角色管理、角色管理、权限管理、角色权限管理、分栏管理、部门管理、学生登录信息管理这七个模块。系统结构图如4-3所示。图4-3 系统结构图分栏管理(STUOA-XTGL-COLUMN)l 程序描述系统管理员管理分栏,可以根据需要添加,修改,删除,修改分栏。l 功能分栏功能结构图如图4-4所示。图4-4分栏结构图u 修改分栏n 进入分栏修改页面;n 填写要修改的分栏信息;n 发送提交;u 查看分栏查看所有分栏信息列表;

11、u 删除分栏有不需要的分栏,可以删除分栏;u 添加分栏n 填写分栏信息;n 发送提交;l 流程逻辑添加分栏业务流程图如4-5所示。图4-5分栏业务流程图l 算法添加分栏算法流程图如图4-6所示。图4-6分栏算法流程图添加分栏:u 操作是添加分栏;u 获取页面传过来的分栏对象;u 调用ColumnService.isExistColumn(String columnName)方法判断是否存在同样的分栏名的对象,如果不存在就把该对象添加到数据库中,如果已经存在就返回到添加的页面;u 调用columnService中的addColumn(Column column)的方法添加Column对象到数据库

12、中;u 判断添加结果,如果添加成功了就跳转到显示分栏列表的页面,如果不成功就会返回到添加的页面;经过上面对系统的数据库以及对该部分的业务的详细设计,为接着的代码编写做好了充分的准备。五、系统实现与测试该部分是对系统实现和测试的一个阐述,主要从开发平台、程序结构图、项目模块页面、分栏管理模块的核心代码、系统测试,这几方面进行详细的说明。(一)开发平台数据库:SQL Server平台技术:Spring2.0+Hibernate+JavaScript+struts2操作系统:Windows XP(二)程序结构图图5-1stuOA程序结构图stuOA为项目的名称,也是项目的根目录。WebRoot为We

13、b目录,包括图片目录images和JSP文件。WEB-INF目录、lib目录及web.xml依然为固定的目录和文件。Src目录包含如下几个部分:1包l Action包(com.txsm.stuOA.action);l Service包 (com. txsm. stuOA.service);l DAO包(com. txsm. stuOA.dao);l Util包com. txsm. stuOA.util);l Test包(com. txsm. stuOA.test);l Model包(com. txsm. stuOA.model);l service和dao包中有接口包和实现包2 配置文件lll

14、(三)项目模块页面系统管理功能是学工管理系统中核心模块。该功能主要是针对用户权限进行管理,学工管理系统有不同的用户如学生、班主任、学工管理员、系统管理员等,不同的用户具有不同的权限。通过权限与角色、人员与角色的设定,用户具有某种角色就有特定的权限,不同的用户由于角色的不同拥有不同的权限。该模块主要分为:人员角色管理、角色管理、权限管理、角色权限管理、分栏管理这些功能。系统用户登录页面根据用户的类型不同,进入不同的操作界面。图5-2系统用户登录页面系统管理的主页面系统提供了系统管理员,可以对所有用户进行管理控制。管理员可以对整个系统的用户的进行管理,主要管理系统中用户的角色和权限。图5-3系统管

15、理的主页面分栏管理的主页面点击菜单栏“分栏管理”链接,如图5-4,管理员对系统中所涉及到的分栏进行管理,可以对分栏进行增加,删除,修改,查看。图5-4分栏管理的主页面人员角色添加管理页面点击“添加”链接,如图5-5,管理员对系统中个角色的用户进行添加。图5-5人员角色添加管理页面(四)分栏管理模块的核心代码根据上面详细设计中着重介绍的是分栏管理中的修改功能的实现,所以该部分的代码主要就是该功能的实现代码。AupdateColumn.jsp <body> <div align="center"> <h5>分栏信息修改</h5>

16、<table> <s:form action="columnManagerControl!update.action" theme="simple"> <s:hidden name="id" value="%#session.column.columId"/> <tr> <td>原分栏名称</td> <td><s:property value="#session.column.columnName" /&g

17、t;</td> </tr> <tr> <td>新的分栏名称</td> <td><s:textfield name="newColumnName" /></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" class="btn" value="保存"/>

18、; &nbsp; <input type="reset" class="btn" value="重置"/> </td> </tr> </s:form> </table></div></body>BColumnAction.java package com.txsm.stuOA.action;import com.txsm.stuOA.service.*;import com.txsm.stuOA.vo.*;import java.util.*;

19、import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class ColumnAction extends ActionSupport private static final long serialVersionUID = 1L;/属性column,用于接受从用户界面输入的

20、信息protected Column column;/private int id;/属性columnService,用于帮助action完成相关的操作protected IColumnService columnService;public String execute()throws Exceptionreturn null;/由columnservice层帮助完成public String updatePre()throws Exception String result="" /获取id参数 HttpServletRequest request=ServletAct

21、ionContext.getRequest(); String idStr=request.getParameter("id"); if(idStr=null) idStr="0" int id=Integer.parseInt(idStr); System.out.print("id="+id); Column column=columnService.searcherColumnByID(id); System.out.print("column="+column.toString(); if(column!=

22、null) /将column保存到会话中 ActionContext ctx=ActionContext.getContext(); Map map=ctx.getSession(); map.put("column", column); result="update" else result="error" return result;/显示所有分栏信息public String listAllColumn() throws Exception String result = ""List<Column&g

23、t; list = new ArrayList(); list = columnService.searcherAllColumn();System.out.println("list="+list);if (list = null) result = "error" else ActionContext ctx = ActionContext.getContext();Map map = ctx.getSession();map.put("allColumn", list);result="show"return

24、 result;public String update() throws ExceptionString result=""HttpServletRequest request=ServletActionContext.getRequest();String idStr=request.getParameter("id");/得到页面输入的新的信息String newColumnName=request.getParameter("newColumnName");if(idStr=null)idStr="0"in

25、t id=Integer.parseInt(idStr);if(newColumnName=null) newColumnName=""column.setColumId(id);column.setColumnName(newColumnName);boolean iresult=columnService.updateColumn(column);if(iresult)result=this.listAllColumn();elseresult="error"return result;public Column getColumn() return

26、 column;public void setColumn(Column column) this.column = column;public IColumnService getColumnService() return columnService;public void setColumnService(IColumnService columnService) this.columnService = columnService;package com.txsm.stuOA.dao.impl;import java.util.*;import org.hibernate.Query;

27、import org.hibernate.Session;import org.hibernate.Transaction;import com.txsm.stuOA.dao.*;import com.txsm.stuOA.vo.*;public class ColumnDAO extends BaseDAO implements IColumnDAO / 更新分栏public boolean updateColumn(Column column) boolean result = false;try Session session = getSession();Transaction tra

28、ns = session.beginTransaction();session.update(column);mit();System.out.println("update success");result = true;session.close(); catch (Exception e) e.printStackTrace();return result;/ 查询所有的分栏对象加入到列表中,并返回public List searcherAllColumn() List list = new ArrayList();try Session session = getSession();String hql = "from Column column"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论