基于java信息法院管理系统设计Word文档格式.docx
《基于java信息法院管理系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于java信息法院管理系统设计Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
tcallme.Iwillcallyou.〕来比喻这种控制反转的关系。
由于控制反转的概念相比照较广泛,很多应用效劳器实际上也实现了不同程度的控制反转技术,只是这些应用效劳器对应用程序的侵入性太强。
因此MartinFowler专门写了一篇文章讨论控制反转这个概念,并提出一个描述更为准确的概念,叫依赖注入〔DependencyInjection〕[16]。
Spring框架中的各个局部都充分使用了这种依赖注入的技术实现,从而给应用以最大的灵活度。
Spring框架另外一个比较重要的技术是它对于面向切面的编程〔AOP〕的支持。
随着应用复杂度的逐渐上升和对应用灵活性要求的提高,IT逻辑和业务逻辑尽量别离的呼声也越来越高。
AOP技术作为实现这种别离的一种比较好的途径而越来越受到大家的重视。
Spring提供的是一种动态AOP实现,也即通过代理模式动态地在目标对象的方法前后插入相应的处理代码。
应用程序与底层应用效劳器平台的解耦也可以借助AOP技术来实现。
Spring内置的AOP支持是一种锦上添花的功能。
它使得一些本来必须由容器支持的功能,比方事务控制可以脱离开容器运行,从而到达"
瘦身"
的目的。
这也是为什么Spring框架常被人成为轻量级容器的一个原因。
(二)Struts介绍
Struts框架是Apache组织的一个开放源代码的工程。
为Web应用提供一个通用的MVC架构,提供了对开发MVC系统的底层支持.它使开发人员把更多的时间放在如何解决实际问题上。
Struts框架由四个主要局部组成,模型、视图、控制器和XML文件。
模型通常由JavaBean或EJB组件实现,负责处理业务逻辑;
视图包括一组JSP文件,这些文件主要由JSP标签或客户化标签构成,它简化了JSP页面的编码工作;
在Struts框架中控制器主要包括ActionServlet类和Action类,ActionServlet是Struts的核心部件,它接受用户的Http请求,根据配置信息将请求转发给适当的Action对象,Action类负责调用模型的方法,并帮助控制应用程序的流程;
Struts包括和两个配置文件,其中是Web应用的发布描述文件,是与Struts相关的特殊信息配的描述文件。
图2:
STRUTS实现的MVC框架
二、需求分析说明
(一)开发背景
法院在其工作中日集月累产生了大量的档案资料,而且档案资料的数量还在不断的增加之中。
在日常的工作里,原始手工管理模式给档案管理工作带来了极大的不便,人员劳动强度大,档案资料管理也困难。
而且还有查询效率低,劳动强度大、归档困难、容易损坏等缺点。
(二)功能性需求分析
该系统具有以下一些特征:
1)管理员和普通用户能进行登录
2〕能显示档案的信息,可进行档案的查询,增加和修改
3〕能显示用户信息,可对用户信息进行添加和删除
4〕能显示当事人信息,可对当事人进行添加和修改
业务模型和需求分析的目的是对系统进行评估,采集和分析系统的需求,理解系统要解决的问题,重点是充分考虑系统的实用性。
结果可以用一个业务用例〔BusinessUseCase〕框图表达:
图4:
业务用例图
模型中的活动者代表外部与系统交互的单元,包括管理员和普通用户。
业务用例框图是对系统需求的描述,表达了系统的功能和所提供的效劳,包括添加档案,修改档案,查询档案,添加用户,删除用户,查询当事人,修改用户信息。
用例说明:
表1:
登录用例
用例名
登录
前置条件
进入系统主页
成功状态
根据登录角色进入相应界面
失败状态
返回到登录界面
说明
用户进行登录
表2:
添加档案用例
添加档案
管理员已登录
提示档案添加成功
返回到添加档案界面并提示操作不成功
对录入信息的格式进行合法验证,保存添加档案
表3:
修改档案用例
修改档案
提示修改成功并显示修改后的信息
返回到修改界面并提示修改错误
对修改的信息进行合法验证,更新档案信息
表4:
查询档案用例
查询档案
管理员或普通用户已登录
显示查询到的信息
返回到查询界面并提示查询错误
对录入查询的信息进行合法验证,显示查询到的档案信息
表5:
添加用户用例
添加用户
显示添加用户成功
返回到添加界面并提示添加错误
完成普通用户的添加
表6:
删除用户用例
删除用户
显示删除用户成功
返回并提示删除错误
完成对普通用户的删除
表7:
添加当事人用例
添加当事人
管理员已登录或进入添加档案界面
显示添加成功
返回到添加界面并显示添加错误
对录入的信息进行合法验证,添加保存当事人信息
表8:
查询当事人用例
查询当事人
用户已登录或进入显示档案界面
显示当事人的详细信息
返回到查询界面并显示查询错误
对录入的查询信息进行合法验证,显示当事人信息
表9:
修改自己信息用例
修改自己信息
用户已登录
显示修改成功后的信息
返回到修改界面并显示修改错误
对录入的修改信息进行合法验证,更新修改当事人信息
顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。
图5:
管理员登录及档案管理序列图
图6:
管理员对当事人管理序列图
图7:
普通用户的操作序列图
状态图描述一个实体基于事件反响的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反响的。
状态图设计一般是在对操作序列的顺序图细化的根底上表达。
图8:
管理员维护档案的状态图
图9:
管理员维护当事人信息状态图
图10:
普通用户状态图
三、数据库分析与设计
〔一〕数据库逻辑设计
(二)数据库物理设计
[说明]:
空缺位置表示无要求,主键在约束栏注明。
根本表:
用户[user]
字段
类型
长度
约束
ID
文本
32
主键
Password
Name
10
唯一非空
Role
当事人[people]
Pid
非空
sex
4
Birthday
12
Nation
40
Race
Politbg
Education
Birthplace
50
Bfplace
Nowplace
Liveplace
Tel
20
Occupation
Positon
Speposition
note
100
档案[doucument]
Filekind
Archkind
Archno
非空唯一
Secretlevel
6
Fileno
Dirno
Cause
400
client
200
Chiefjustice
Judge1
Judge2
Clerk
Sponsor
Closedate
Enddate
Formcourt
Firstjudge
Secjudge
Thirdjudge
Arhdate
Bgqx
Note
当事人__档案[peopledocument]
peopleid
documentid
法医档案[fydocument]
id
archno
Purpose
Client
Corporation
Doctor
Result
Exandate
Archdate
Age
3
Sex
2
四、系统设计与实现
(一)
系统结构
图11:
功能说明:
(1)普通档案管理:
可以根据档案的一个或多个字段来查询所需的档案。
在添加档案信息的同时也可新翻开一个添加当事人的页面添
加当事人的信息。
显示所有档案功能先显示局部档案信息,当需要查看其详细
信息时再显示其详细信息,在档案的详细信息中有当事人的
链接,可查看当事人详细信息。
(2)法医档案管理:
在添加档案信息的同一页面添加被鉴定人的信息。
显示所有档案功能先显示局部档案信息,当需要查看其详细
信息时再显示其详细信息。
(3)用户管理:
管理员可查看所有的用户,也可进行用户的添加和删除。
(4)当事人管理:
普通用户可查看当事人的详细信息,但不能对其进行修改,管理员不但可查看还可以对其进行修改。
(二)系统的构架设计
系统主要有如下3个包:
1)用户接口包〔表示层〕
用户接口包在其他包的顶层次,为系统用户提供访问信息和效劳。
其主要包括jsp和ActionForm等文件。
系统所有Action类都继承BaseAction类,在BaseAction类中获得系统Spring所配置的业务层bean对象的实例。
用户登录及处理的ACTIONFORM,ACTION类图:
图12:
用户登录及处理的ACTIONFORM,ACTION类图
档案的ACTIONFORM,ACTION类图:
图13:
档案的ACTIONFORM,ACTION类图
2)业务逻辑包〔业务层〕
主要完成业务逻辑的处理工作,它既要调用持久层的方法来完成数据的持久化和查询工作也要业务方法暴露给表示层,以便表示层的调用。
系统业务接口及其实现类图如下:
图14:
系统业务接口及其实现类图
3)数据持久DAO包〔持久层〕
该包实现数据的持久化,也就是与数据库交互,实现数据的存取、修改等操作。
Spring的HibernateDaoSupport基类提供了访问与当前事务绑定的Session对象的函数。
所有DAO类都继承HibernateDaoSupport这个基类。
系统DAO封装了各对象域模型进行持久化操作的各种方法,系统DAO接口及实现类图如下:
图15:
系统DAO接口及实现类图
〔三〕用户接口层
用户只能通过系统提供的用户接口来访问系统。
1、登录功能及权限验证
用户登录的主要功能是接受用户所输入的密码和用户名及其角色,然后根据其角色跳转到不同的主页。
用户登录页面是系统的入口页面,其图如下:
用户登录功能的后台处理方法主要包括以下步骤:
a.得到用户提交的用户名和密码及角色
b.根据得到的信息进行查询
c.如没有找到相应用户那么返回登录界面,找到相应用户那么根据角色跳转到相应主页面,并且保存当前用户角色到session中以便进行权限验证。
登录的Action处理方法的实现如下:
Useruser=((UserService)getBean("
UserService"
)).logIn(name,password,role);
if(user==null){
//没找到相应的用户那么跳到登录界面
return(newActionForward(mapping.getInput()));
}
//获得当前对话的session
HttpSessionsession=request.getSession();
//保存用户名,角色到session中
session.setAttribute("
user"
user);
role"
role);
if(role.equalsIgnoreCase("
manager"
)){
//跳转到管理员主界面
return(mapping.findForward("
managerLogIn"
));
//跳转到普通用户界面
commonLogIn"
在进入每个jsp页面时都进行权限的验证,只有具有相应权限的用户才能进入。
为了更好的实现这功能,提高代码的重用性,我们采用自定义标签来实现此功能。
其类如下:
publicfinalclassValidateSessionTagextendsTagSupport{
privateStringrole;
publicintdoEndTag()throwsJspException{
booleanvalid=false;
HttpSessionsession=pageContext.getSession();
//获得当前session
if((session!
=null)&
&
(getRole().equals(session.getAttribute("
)))
&
(session.getAttribute("
)!
=null))//判断当前用户的角色
valid=true;
if(valid)
return(EVAL_PAGE);
else{
try{
//当前用户不具有访问当前页面的权限,返回到登录页面
pageContext.forward("
login.jsp"
);
}catch(Exceptione){
thrownewJspException(e.toString());
}
return(SKIP_PAGE);
publicintdoStartTag()throwsJspException{
return(SKIP_BODY);
publicStringgetRole(){
return(this.role);
publicvoidsetRole(Stringrole){
this.role=role;
其标签的配置为:
<
tag>
<
name>
validateSession<
/name>
tagclass>
cn.fy.tag.ValidateSessionTag<
/tagclass>
bodycontent>
empty<
/bodycontent>
attribute>
role<
required>
true<
/required>
rtexprvalue>
/rtexprvalue>
/attribute>
/tag>
2、档案管理及维护
当进入管理员主页面时,显示所有档案的主要信息,当需要查看其详细信息时,点击详细信息查看档案的详细信息,其action的实现为:
Pagepage=newPage();
//把查询到的档案信息放入Pagebean里
page=((DocumentService)getBean("
DocumentService"
)).getDocument("
fromDocument"
page);
//把获得的bean保存在request里
request.setAttribute("
p"
//转到显示页面
listDocument"
档案信息的显示页面如图:
点击详细信息,显示档案的详细信息页面如图:
图18:
显示档案的详细信息页面
显示档案详细信息的action为:
Stringid=request.getParameter("
id"
//查询所需要的档案
Documentdoc=((DocumentService)
getBean("
)).getDocumentById(id);
document"
doc);
//request.setAttribute("
people"
doc.getPeople());
//跳到显示档案详细信息的页面
detail"
显示当事人详细信息的页面如图:
图19:
显示当事人详细信息的页面
添加法院档案以及在同时添加当事人的信息,添加的当事人必须有唯一的身份证号,添加的档案的归档号,目录号,案卷号也必须唯一且不能为空,否那么就出现异常。
添加档案的页面如图:
图20:
添加档案的页面
添加当事人的页面如图:
图21:
添加当事人的页面
当单击保存时,相应的actionForm先进行字段的合法性验证,当通过actionForm的合法性验证后,由action来检查是否存在相同的身份证号,如存在相同的那么出现异常且报错,其action的实现为:
Peopleclient=newPeople();
client.setPid(clientForm.getPid());
client.setName(clientForm.getName());
…………….
//判断当前添加的当事人身份证号是否已经存在
if(((ClientService)getBean("
ClientService"
)).getClientByPid(client.getPid())!
=null){
errors.add("
bad"
newActionMessage("
identity.card.exist"
saveErrors(request,errors);
request.removeAttribute(mapping.getAttribute());
//当事人身份证号已经存在,返回添加当事人页面
return(mapping.findForward("
addClient"
}
//当事人身份证号不存在,那么添加到当事人队列中
if(session.getAttribute("
peopleList"
)!
List<
People>
peopleList=(List)session.getAttribute("
peopleList.add(client);
session.setAttribute("
peopleList);
}else{
peopleList=newArrayList<
();
errors.add("
success"
addClient.success"
saveE