《基于java信息法院管理系统设计.docx》由会员分享,可在线阅读,更多相关《基于java信息法院管理系统设计.docx(32页珍藏版)》请在三一办公上搜索。
1、编号: 基于java信息实训开发 实训(论文)说明书题 目:基于java信息法院管理系统实训开发 院 (系): 应用科技学院 专 业: 计算机科学与技术 学生姓名: 盘晟 学 号: 0801110219 指导教师: 熊太平 摘 要 J2EE是一种全新概念的企业级应用程序模型,和传统企业应用开发模型相比有不可比拟的优势。J2EE体系结构提供中间层集成框架用来满足高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,增强了安全机制,提高了性能。 本系统是基于轻量级J2EE的开发架构,采用MVC软件设计模式。我们选择轻量级框架Spring,它使
2、应用程序不依赖于任何容器,减少开发的复杂度,提高开发的效率。表示层采用开放源代码且较成熟的Struts。持久层框架使用较为流行的ORM组件Hibernate。 本系统利用internet解决档案的查询效率低,查询不方便,以及避免传统的法院档案管理的归档困难、档案容易损坏等问题。关键词 J2EE;MVC ;Struts;Hibernate;设计模式 目 录一、系统所用技术简介1(一)Spring介绍1(二)Struts介绍2二、需求分析说明3(一)开发背景3(二)功能性需求分析3三、数据库分析与设计10(二)数据库逻辑设计10(三)数据库物理设计11四、系统设计与实现12(一)系统结构13(二)
3、系统的构架设计14(四)系统持久层DAO的实现18(六)用户接口层261、登录功能及权限验证262、档案管理及维护283、法医鉴定档案的管理334、当事人管理及维护365、用户管理及维护37参考文献39 基于轻量级J2EE架构的法院档案 管理系统的设计与实现一、 系统所用技术简介 本系统是基于J2EE开发平台,采用MVC软件设计模式,表现层框架采用开放源代码且较成熟的Struts ,业务层组件采用开放源代码的轻量级容器Spring,持久层框架采用较为流行的Hibernate。Spring,Struts,Hibernate 三者之间的关系如图: 图1:Struts,Spring,Hibernat
4、e三者之间的关系(一) Spring介绍 Spring框架的核心思想可以用两个字来描述,那就是解耦。应用程序的各个部分之间(包括代码内部和代码与平台之间)尽量形成一种松耦合的结构,使得应用程序有更多的灵活性。应用内部的解耦主要通过一种称为控制反转(IOC)的技术来实现。控制反转的基本思想就是本来由应用程序本身来主动控制的调用等逻辑转变成由外部配置文件来被动控制。通常我们用一个所谓的好莱坞原则(Dont call me. I will call you.)来比喻这种控制反转的关系。由于控制反转的概念相对比较广泛,很多应用服务器实际上也实现了不同程度的控制反转技术,只是这些应用服务器对应用程序的侵
5、入性太强。因此Martin Fowler专门写了一篇文章讨论控制反转这个概念,并提出一个描述更为准确的概念,叫依赖注入(Dependency Injection)16。 Spring框架中的各个部分都充分使用了这种依赖注入的技术实现,从而给应用以最大的灵活度。 Spring框架另外一个比较重要的技术是它对于面向切面的编程(AOP)的支持。随着应用复杂度的逐渐上升和对应用灵活性要求的提高,IT逻辑和业务逻辑尽量分离的呼声也越来越高。AOP技术作为实现这种分离的一种比较好的途径而越来越受到大家的重视。Spring提供的是一种动态AOP实现,也即通过代理模式动态地在目标对象的方法前后插入相应的处理代
6、码。应用程序与底层应用服务器平台的解耦也可以借助AOP技术来实现。Spring内置的AOP支持是一种锦上添花的功能。它使得一些本来必须由容器支持的功能,比如事务控制可以脱离开容器运行,从而达到瘦身的目的。这也是为什么Spring框架常被人成为轻量级容器的一个原因。(二) Struts介绍 Struts框架是Apache组织的一个开放源代码的项目。为Web应用提供一个通用的MVC架构,提供了对开发MVC系统的底层支持.它使开发人员把更多的时间放在如何解决实际问题上。Struts框架由四个主要部分组成,模型、视图、控制器和XML文件。模型通常由Java Bean或EJB组件实现,负责处理业务逻辑;
7、视图包括一组JSP文件,这些文件主要由JSP标签或客户化标签构成,它简化了JSP页面的编码工作;在Struts框架中控制器主要包括Action Servlet类和Action类,Action Servlet是Struts的核心部件,它接受用户的Http请求,根据配置信息将请求转发给适当的Action对象,Action类负责调用模型的方法,并帮助控制应用程序的流程;Struts包括Web.xml和Struts-config.xml两个配置文件,其中Web.xml是Web应用的发布描述文件,Struts-config.xml是与Struts相关的特殊信息配的描述文件。 图2 :STRUTS实现的M
8、VC框架二、 需求分析说明(一) 开发背景法院在其工作中日集月累产生了大量的档案资料,而且档案资料的数量还在不断的增加之中。在日常的工作里,原始手工管理模式给档案管理工作带来了极大的不便,人员劳动强度大,档案资料管理也困难。而且还有查询效率低,劳动强度大、归档困难、容易损坏等缺点。(二) 功能性需求分析该系统具有以下一些特征:1) 管理员和普通用户能进行登录2)能显示档案的信息,可进行档案的查询,增加和修改 3)能显示用户信息,可对用户信息进行添加和删除 4)能显示当事人信息,可对当事人进行添加和修改 业务模型和需求分析的目的是对系统进行评估,采集和分析系统的需求,理解系统要解决的问题,重点是
9、充分考虑系统的实用性。结果可以用一个业务用例(Business Use Case)框图表达: 图4:业务用例图模型中的活动者代表外部与系统交互的单元,包括管理员和普通用户。业务用例框图是对系统需求的描述,表达了系统的功能和所提供的服务,包括添加档案,修改档案,查询档案,添加用户,删除用户,查询当事人,修改用户信息。用例说明: 表1:登录用例用例名登录前置条件进入系统主页成功状态根据登录角色进入相应界面失败状态返回到登录界面说明用户进行登录表2:添加档案用例用例名添加档案前置条件管理员已登录成功状态提示档案添加成功失败状态返回到添加档案界面并提示操作不成功说明对录入信息的格式进行合法验证,保存添
10、加档案 表3:修改档案用例用例名修改档案前置条件管理员已登录成功状态提示修改成功并显示修改后的信息失败状态返回到修改界面并提示修改错误说明对修改的信息进行合法验证,更新档案信息 表4:查询档案用例用例名查询档案前置条件管理员或普通用户已登录成功状态显示查询到的信息失败状态返回到查询界面并提示查询错误说明对录入查询的信息进行合法验证,显示查询到的档案信息 表5:添加用户用例用例名添加用户前置条件管理员已登录成功状态显示添加用户成功失败状态返回到添加界面并提示添加错误说明完成普通用户的添加 表6:删除用户用例用例名删除用户前置条件管理员已登录成功状态显示删除用户成功失败状态返回并提示删除错误说明完
11、成对普通用户的删除 表7:添加当事人用例用例名添加当事人前置条件管理员已登录或进入添加档案界面成功状态显示添加成功失败状态返回到添加界面并显示添加错误说明对录入的信息进行合法验证,添加保存当事人信息 表8:查询当事人用例用例名查询当事人前置条件用户已登录或进入显示档案界面成功状态显示当事人的详细信息失败状态返回到查询界面并显示查询错误说明对录入的查询信息进行合法验证,显示当事人信息 表9:修改自己信息用例用例名修改自己信息前置条件用户已登录成功状态显示修改成功后的信息失败状态返回到修改界面并显示修改错误说明对录入的修改信息进行合法验证,更新修改当事人信息 顺序图显示对象之间的动态合作关系,它强
12、调对象之间消息发送的顺序,同时显示对象之间的交互。 图5:管理员登录及档案管理序列图 图6:管理员对当事人管理序列图 图7:普通用户的操作序列图状态图描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。状态图设计一般是在对操作序列的顺序图细化的基础上表达。 图8: 管理员维护档案的状态图 图9 :管理员维护当事人信息状态图 图10:普通用户状态图三、 数据库分析与设计法医档案档案类型,归档类型归档号,保密级案卷号,目录号主办人,鉴定单位鉴定法医,归档日期年龄,性别当事人,鉴定目的鉴定结果备注当事人当事人ID,姓名性别,身份证出身年月国籍,民族政治面貌文
13、化程度出身地,原籍户籍所在地现址,电话职业,身份特殊身份备注档案档案ID,档案类型归档类型,归档号保密级,案卷号目录号,案由当事人,审判长审判员1,审判员2 书记员,主办人收案日期,结案日期原审法院,保管日期 一审结果,二审结果再审结果,备注(一)数据库逻辑设计用户用户ID 密码 用户名 角色档案-当事人当事人ID档案ID (二) 数据库物理设计 说明:空缺位置表示无要求,主键在约束栏注明。基本表:用户user字段类型长度约束ID文本32主键Password文本32Name 文本10唯一非空Role 文本10基本表:当事人people字段类型长度约束ID文本32主键Pid文本32唯一非空Nam
14、e 文本10非空sex文本4非空Birthday文本12非空Nation文本40非空Race文本10非空Politbg文本10Education文本10Birthplace文本50Bfplace文本50Nowplace文本50Liveplace文本50Tel文本20Occupation文本10Positon文本10Speposition文本10note文本100基本表:档案doucument字段类型长度约束ID文本32主键Filekind文本10非空Archkind文本10非空Archno文本20非空唯一Secretlevel文本6Fileno文本20非空唯一Dirno文本20非空唯一Caus
15、e文本400client文本200非空Chiefjustice文本10非空Judge1文本10非空Judge2文本10非空Clerk文本10非空Sponsor文本10非空Closedate文本12Enddate文本12Formcourt文本20Firstjudge文本200Secjudge文本200Thirdjudge文本200Arhdate文本12Bgqx文本10Note文本100基本表:当事人_档案peopledocument字段类型长度约束peopleid文本32主键documentid文本32主键基本表:法医档案fydocument字段类型长度约束id文本32主键Filekind文本1
16、0非空Archkind文本10非空archno文本20非空唯一Fileno文本20非空唯一Dirno文本10非空唯一Purpose文本100Sponsor文本20Client文本20Corporation文本20Doctor文本20非空Result文本200Exandate文本12Archdate 文本12Age文本3Sex 文本2note文本200四、 系统设计与实现(一) 系统结构法医档案管理系统登录用户管理当事人管理法医档案管理普通档案管理修改当事人信息显示当事人所有用户添加修改查询所有档案添加显示所有档案添加查询 图11:系统结构 功能说明:(1) 普通档案管理:可以根据档案的一个或多
17、个字段来查询所需的档案。在添加档案信息的同时也可新打开一个添加当事人的页面添加当事人的信息。显示所有档案功能先显示部分档案信息,当需要查看其详细信息时再显示其详细信息,在档案的详细信息中有当事人的链接,可查看当事人详细信息。(2) 法医档案管理:可以根据档案的一个或多个字段来查询所需的档案。在添加档案信息的同一页面添加被鉴定人的信息。 显示所有档案功能先显示部分档案信息,当需要查看其详细信息时再显示其详细信息。(3) 用户管理:管理员可查看所有的用户,也可进行用户的添加和删除。(4) 当事人管理: 普通用户可查看当事人的详细信息,但不能对其进行修改,管理员不但可查看还可以对其进行修改。(二)
18、系统的构架设计 系统主要有如下3个包:1) 用户接口包(表示层)用户接口包在其他包的顶层次,为系统用户提供访问信息和服务。其主要包括jsp和ActionForm等文件。 系统所有Action类都继承BaseAction类,在BaseAction类中获得系统Spring 所配置的业务层bean对象的实例。 用户登录及处理的ACTIONFORM,ACTION类图: 图12:用户登录及处理的ACTIONFORM,ACTION类图 档案的ACTIONFORM,ACTION类图: 图13:档案的ACTIONFORM,ACTION类图2) 业务逻辑包(业务层) 主要完成业务逻辑的处理工作,它既要调用持久层
19、的方法来完 成数据的持久化和查询工作也要业务方法暴露给表示层,以便表示层的调用。 系统业务接口及其实现类图如下: 图14:系统业务接口及其实现类图3) 数据持久DAO包(持久层) 该包实现数据的持久化,也就是与数据库交互,实现数据的存取、修改等操作。Spring的HibernateDaoSupport基类提供了访问与当前事务绑定的Session对象的函数。所有DAO类都继承HibernateDaoSupport这个基类。系统DAO封装了各对象域模型进行持久化操作的各种方法,系统DAO接口及实现类图如下: 图15:系统DAO接口及实现类图(三)用户接口层 用户只能通过系统提供的用户接口来访问系统
20、。1、 登录功能及权限验证 用户登录的主要功能是接受用户所输入的密码和用户名及其角色,然后根据其角色跳转到不同的主页。 用户登录页面是系统的入口页面,其图如下: 用户登录功能的后台处理方法主要包括以下步骤:a.得到用户提交的用户名和密码及角色b.根据得到的信息进行查询c.如没有找到相应用户则返回登录界面,找到相应用户则根据角色跳转到相应主页面,并且保存当前用户角色到session中以便进行权限验证。 登录的Action 处理方法的实现如下: User user=(UserService) getBean(UserService).logIn(name, password , role);if(
21、user=null)/没找到相应的用户则跳到登录界面return (new ActionForward(mapping.getInput(); /获得当前对话的sessionHttpSession session=request.getSession();/保存用户名,角色到session中session.setAttribute(user, user);session.setAttribute(role, role);if(role.equalsIgnoreCase(manager) /跳转到管理员主界面 return (mapping.findForward(managerLogIn);
22、/跳转到普通用户界面 return (mapping.findForward(commonLogIn);在进入每个jsp页面时都进行权限的验证,只有具有相应权限的用户才能进入。为了更好的实现这功能,提高代码的重用性,我们采用自定义标签来实现此功能。其类如下:public final class ValidateSessionTag extends TagSupport private String role ; public int doEndTag() throws JspException boolean valid = false;HttpSession session = pageCo
23、ntext.getSession();/获得当前session if (session != null) & (getRole().equals(session.getAttribute(role) &(session.getAttribute(user) != null)/判断当前用户的角色 valid = true;if (valid) return (EVAL_PAGE);else try /当前用户不具有访问当前页面的权限,返回到登录页面pageContext.forward(login.jsp); catch (Exception e) throw new JspException(
24、e.toString(); return (SKIP_PAGE); public int doStartTag() throws JspException return (SKIP_BODY); public String getRole() return (this.role); public void setRole(String role) this.role = role; 其标签的配置为: validateSession cn.fy.tag.ValidateSessionTag empty role true true 2、 档案管理及维护当进入管理员主页面时,显示所有档案的主要信息
25、,当需要查看其详细信息时,点击详细信息查看档案的详细信息,其action的实现为: Page page=new Page(); /把查询到的档案信息放入Page bean里page=(DocumentService) getBean(DocumentService).getDocument( from Document, page); /把获得的bean保存在request里request.setAttribute(p, page); /转到显示页面return (mapping.findForward(listDocument);档案信息的显示页面如图:点击详细信息,显示档案的详细信息页面如
26、图: 图18:显示档案的详细信息页面 显示档案详细信息的action为: String id=request.getParameter(id); /查询所需要的档案Document doc=(DocumentService) getBean(DocumentService).getDocumentById(id);request.setAttribute(document, doc);/request.setAttribute(people, doc.getPeople(); /跳到显示档案详细信息的页面return (mapping.findForward(detail); 显示当事人详细信
27、息的页面如图: 图19:显示当事人详细信息的页面 添加法院档案以及在同时添加当事人的信息,添加的当事人必须有唯一的身份证号,添加的档案的归档号,目录号,案卷号也必须唯一且不能为空,否则就出现异常。添加档案的页面如图: 图20:添加档案的页面 添加当事人的页面如图: 图21:添加当事人的页面 当单击保存时,相应的actionForm先进行字段的合法性验证,当通过actionForm的合法性验证后,由action 来检查是否存在相同的身份证号,如存在相同的则出现异常且报错,其action 的实现为: People client=new People();client.setPid(clientFo
28、rm.getPid();client.setName(clientForm.getName(); . /判断当前添加的当事人身份证号是否已经存在 if(ClientService) getBean(ClientService).getClientByPid(client.getPid()!=null)errors.add(bad,new ActionMessage(identity.card.exist);saveErrors(request, errors);request.removeAttribute(mapping.getAttribute(); /当事人身份证号已经存在,返回添加当事
29、人页面return (mapping.findForward(addClient); /当事人身份证号不存在,则添加到当事人队列中if(session.getAttribute(peopleList)!=null)ListpeopleList=(List)session.getAttribute(peopleList);peopleList.add(client);session.setAttribute(peopleList, peopleList);elseListpeopleList=new ArrayList();peopleList.add(client);session.setAt
30、tribute(peopleList, peopleList);errors.add(success,new ActionMessage(addClient.success);saveErrors(request, errors);request.removeAttribute(mapping.getAttribute();return (mapping.findForward(addClient);档案的查询可根据档案的一个或多个字段进行进行查询,其查询页面如图: 图22:档案查询页面当用户单击查找按钮后,ActionForm先对其查询的字段进行合法性检验,只有通过ActionForm的合法
31、性检验才转到Action里进行处理,相应的Action处理实现为:SearchForm f=(SearchForm)form; /根据提供的查询字段查询档案 Page page=new Page();page=(DocumentService) getBean(DocumentService).getDocument(f.getSql(), page);/HttpSession session=request.getSession();/session.setAttribute(p, page);request.setAttribute(p, page); /转到档案的显示页面return (
32、mapping.findForward(listDocument);档案的修改页面如图: 图23:档案的修改页面单击提交后也得进行合法性验证,只有验证后才进行更新,其修改更新的Action 方法的实现为:String id=request.getParameter(id); /取出需要修改的档案对象Document doc=(DocumentService) getBean(DocumentService).getDocumentById(id);DocumentForm f=(DocumentForm)form; /修改档案信息doc.setFileKind(f.getFileKind();
33、 ./更新档案信息(DocumentService) getBean(DocumentService).updateDocument(doc);errors.add(sucess,new ActionMessage(update.document.success);saveErrors(request, errors);return (mapping.findForward(document);3、 法医鉴定档案的管理 先显示法医鉴定档案部分重要的信息,当需要查看其详细信息时再显示其详细信息,显示法医鉴定档案的详细信息的页面为: 显示法医鉴定档案的详细信息Action 的方法为:String
34、id=request.getParameter(id); /获得档案的详细信息FYDocument doc=(FYDocumentService) getBean(FYDocumentService).getDocById(id);/把档案对象保存在request对象里request.setAttribute(document, doc); /转到显示档案详细信息页面return (mapping.findForward(detail);法医鉴定档案的添加功能,在添加档案信息的同一页面添加被鉴定人的信息,其添加页面如图: 图25:法医鉴定档案的添加页面 单击提交后,先进入相对应的ActionF
35、orm 进行字段合法性验证,然后进入Action 进行档案的添加,实现这个功能的Action 方法为: FYDocument doc=new FYDocument();AddFYDocForm addForm=(AddFYDocForm)form;doc.setFileKind(addForm.getFileKind();doc.setArchKind(addForm.getArchKind(); . doc.setNote(addForm.getNote(); /保存档案(FYDocumentService) getBean(FYDocumentService).saveFYDoc(doc)
36、;errors.add(sucess,new ActionMessage(add.fayuan.document.success);saveErrors(request, errors); /转到档案添加成功页面return (mapping.findForward(fydocument); 法医鉴定档案的修改页面如图: 图26:法医鉴定档案的修改页面 提交后,由相对应的ActionForm 进行修改后的字段合法性验证,然后进入Action 进行档案的添加,实现这个功能的Action 方法为: String id=request.getParameter(id); /获得需要修改的法医档案对
37、FYDocument doc=(FYDocumentService) getBean(FYDocumentService).getDocById(id);AddFYDocForm addForm=(AddFYDocForm)form; /重新设置新的档案信息doc.setFileKind(addForm.getFileKind(); . /更新档案信息(FYDocumentService) getBean(FYDocumentService).updateFYDocument(doc);errors.add(sucess,new ActionMessage(update.fayuan.docu
38、ment.success);saveErrors(request, errors); return (mapping.findForward(fydocument); /返回到更新成功页面参考文献1孙卫琴.精通Struts:基于MVC的Java Web设计与开发M.北京:电子工业出版社,20042孙卫琴.Tomcat与Java Web开发技术详解M .北京:电子工业出版社,20043(美)Cbuck Cavaness著.OReilly Taiwan公司译.Jakarta Struts编程M .北京:中国电力出版社,20054(美)Cay S.Horstmann著.程峰译.Java 2 核心技术M .北京:机械工业出版社,20035陈天河等.Hibernate项目开发宝典M .北京:电子工业出版社,2006 6 (美)Rob Harrop ,Jan Machacek著Redsaga译. Pro SpringM .北京:电子工业出版 社,2006 7 崔广林,王化雨,白运会著基于UML的面向服务体系结构建模方法J .信息技术与信息化,2007,1 8