基于Struts和Hibernate技术的OA系统设计与实现

时间:2013-06-07

  摘 要:文章提出了采用Struts和Hibernate技术相结合的方法实现中小企业OA(办公自动化)系统.系统的开发以中小企业的实际需求为背景,文章介绍了系统的业务需求.功能需求.系统架构设计.功能模块设计.公共模块设计.数据库设计.功能模块的实现.单元测试及系统综合测试的整个过程.系统主要包含了日常管理.考勤管理.计划制定.审核管理.员工管理和通讯管理等功能.经过测试,系统各项功能均能够满足中小企业的日常办公需求,实现了对企业的信息化管理,提高了企业的综合竞争力.

  0 引言

  目前,我国已经进入了信息技术高速发展的阶段.

  随着科学技术的不断进步,各个领域的发展也不断加速,对于企业的发展来说更是如此.在各个行业激烈竞争的背景下,不能够适应当代发展规律的企业必将被淘汰,对于中小企业来说面对的挑战更加严峻.他们急切需要提高企业内部的管理水平和效率,在中小企业推广OA系统具有十分重要的意义.

  本系统通过对中小企业办公流程的深入了解,系统分析各个部分人员对办公系统的需求后,提出了适合中小企业经营和管理特点的OA系统.

  1 系统分析

  1.1 需求分析

  对于OA管理系统来说,它需要具有如下一些主要功能:

  (1)通过建立这样的管理系统,能够搭建起企业信息处理的平台.便于公司内部员工之间的通信.信息交流和信息科学化的管理.

  (2)能够实现工作流程的自动化控制,主要包括企业信息发布.会议公告发布.请示和审批等,这些都是一些流程化的工作.通过将计算机技术和网络技术相合,能够有效地实现工作流程的自动化,并且可以规范相关工作,有效地提高工作效率.

  (3)能够实现分布式办公.现代社会已经进入信息化的时代,对于企业来说,对办公时效性的要求也更加苛刻,例如有些时候需要跨地域进行办公.

  1.2 系统性能要求

  中小企业对办公自动化管理系统的性能要求,主要包括以下几个方面:

  (1)系统的操作界面友好,采用人机对话方式,操作简单,具备系统的信息查询功能,数据的存储安全.可靠.

  (2)系统必须采用先进的技术框架进行设计和开发,能够对用户输入的数据进行检查,排除人为错误.

  (3)系统易于维护,功能容易扩充.升级,并且系统能够稳定地运行,且能够有效地保护数据的安全性.

  2 系统设计

  2.1 系统架构设计

  对于本系统来说,采用Struts和Hibernate技术相结合的方法来实现,这样能够让性能更加完善.

  Struts框架控制器包括配置文档,在源程序中不含传统的业务流程,这样可以提高系统的维护和可扩展性能;视图层中包含许多可供开发使用的标签类.

  Hibernate技术的主要作用就是完成数据持久化部分的任务,并且能够将业务逻辑和数据分开.针对于业务逻辑所包含的数据,持久层可以完成对数据库的操作,如数据存储.检索和删除等.采用这样的架构方法,在逻辑上可将系统架构分为客户层.表示层.控制处理层.业务逻辑层.数据持久层和数据层.

  2.2 功能模块设计

  为实现办公自动化管理系统的基本功能需求,并结合企业日常工作内容和工作流程的特点,办公自动化管理系统主要包括以下一些模块:

  (1)日常管理模块.根据企业的日常管理工作,为企业管理人员提供公司会议和公司公告的管理.

  (2)考勤管理模块.主要实现员工的外出登记.请假登记.出差登记和上下班登记,满足企业对员工考勤的管理需求.

  (3)计划制定模块.这项功能能够让企业员工更加清晰地了解到企业的整体计划.部门内部计划,让员工更加了解所需要完成的工作.

  图1所示为系统功能结构图.

  2.3 公共模块设计

  2.3.1 Hibernate配置文件

  本系统采用Hibernate实现数据持久层,在配置文件中包括数据库驱动程序类.登录数据库的用户名/密码及映射实体类配置文件的位置等.本系统中配置文件具体内容如下:

  hibernate.dieloge=org.hibernate.dieloge.SQLServerDieloge

  hibernate.connect.dirve_class=com.microsoft.sqlserver.jdbc.SQLServerDriver

  hibernate.connection.url=jdbc:sqlserver://localhost:1713;databaseName=db_work;

  hibernate.connection.username=dengluhibernate.connection.password=000000hibernate.show_sql=true

  hibernate.hbm2ddl.auto=none

  2.3.2 Session管理类

  Hibernate在对数据库进行操作之前,必须先取得Session实例,相当于JDBC在对数据库操作之前,必须先取得Connection实例,Session是Hibernate操作的基础.在Session管理中,首先定义了GetHibernate类,程序设计中将该类保存在指定的数据包中,如果获得SessionFactory,则需要同时执行相关的调用程序,同时导入所对应的类包.在这个过程中,需要创建Configuration对象,创建结束后Hibernate会加载默认路径中的hibernate.properties配置文件.除定义GetHibernate类外,还需要设计如何调用和退出Session的方法.

  2.3.3 Struts配置

  根据所开发系统的特点,采用了Struts框架来实现系统功能的设计和开发,这样不仅实现了显示与业务逻辑的分离,同时降低了系统维护的难度,增加了软件开发的灵活性.在系统的实际开发过程中,通过在web.xml文件中对struts进行配置,实际就是一个Servlet的配置.在配置文件中,主要设置了struts-config.xml配置文件的路径.声明action类.声明debug属性.应用启动的加载优先级.指定ActionServlet类处理的请求ULR格式.

  2.4 数据库设计

  针对中小企业OA管理系统来说,通过对系统的功能需求分析及系统架构的基本业务流程设计,本系统共涉及14张数据表,系统中主要数据表及其描述如下:

  (1)用户信息表(user):用户名.密码.用户姓名.用户权限.用户部门.用户工作.性别.邮箱地址.电话.住址.员工.

  (2)会议记录表(meeting):会议时间.主持人.出席人.会议主题.会议地点.会议内容.

  (3)公告信息表(placard):公告主题.公告人.公告时间.公告内容.

  (4)外出登记信息表(waichu):外出原因.外出时间.预归时间.外出人.外出人部门.

  (5)通讯信息详细表(tongxunadd):员工姓名.员工生日.员工性别.所属单位.移动电话.邮箱地址.归属通讯组.

  3 系统功能的实现

  3.1 数据持久层的实现

  使用Hibernate作为系统的持久层技术,它是用系统中的*.xml文件把数据库中的一个表映射到一个java类中,通过这样的映射,可以把系统中对所有数据库表的操作转化为对java类的操作.当需要对某个类进行操作时,通过定义hibernate接口来实现.

  其中Session接口就是hibernate重要的一个接口,过多的Session类的创建和删除会引起系统开销增加,实现过程中就采用了多个线程共用一个Session的方法.这个方法由HibernateUtil类实现,该类中包含获取当前Session实例.关闭当前Session实例.开始事务和提交事务的静态方法,同时确保每个方法都是线程安全的.

  3.2 日常管理模块的实现

  在日常管理功能模块中,主要包括企业的公告管理和会议管理两部分功能.在使用中,根据用户的操作权限,将限制用户的操作功能范围.例如权限是“只读”的用户,只有信息的查看功能;如果是“系统”权限用户,可以完成对信息功能的全部操作.

  图2所示为日常管理模块的框架.

  其中,添加会议记录功能中,当录入完会议记录内容,点击“提交”按钮,系统访问meeting_addcenter.jsp地址.在meeting_addcenter.jsp页面,将用户在meeting_add.jsp(录入会议记录页面)中输入的信息保存到数据库中, 利用r e q u e s t 对象的getparameter()方法获得前台页面中表单的输入值,调用HibernateUtil类的savemeeting()方法保存新添加的会议记录信息.savemeeting( ) 需要在HibernateUtil类中完成程序代码的编辑,该程序调用session对象的save()方法来完成了对象的持久化.

  如图3所示为会议管理操作页面.

  3.3 考勤管理模块的实现

  考勤管理是企业对员工出勤进行考察管理的一种管理制度,包括是否迟到早退,有无旷工请假等.

  在系统中,考勤管理主要包括外出登记.请假登记.出差登记.上下班登记等几项内容,如果员工没有按照考勤管理的相关规定出勤,则系统会记录相关的信息内容.例如员工外出请假是否在系统内销假,如果没有在规定时间范围内进行销假,则系统会记录没有及时销假的信息;如果员工在规定时间内销假,则请假记录按照正常状态进行处理.此外,对于员工的出差是否按时返回.员工上下班是否迟到早退都会按照考勤规定由系统自动进行判断.对于企业来说,以上的设计完全可以满足企业对考勤管理的需求.

  以外出登记功能为例,企业中如果员工在工作中突然有事外出,需要在外出登记模块中进行外出登记,外出回来后再进行销假操作,销假操作必须在外出规定时间之内进行,否则请假记录将不能被删除.该功能模块界面设计是在Dreamweaver中完成的,当用户填写如果外出的各项信息后,系统将对用户提交的信息进行保存,当员工在外出回来后,需要进行销假操作,否则系统将一直记录该名员工为外出状态.在用户外出销假的实现过程中,主要对外出登记数据表的state字段进行操作,该字段默认属性为NULL,如果进行外出登记则该字段更改为0,进行销假时将state的属性修改为1,此时页面中的外出登记信息状态就显示为“已销假”.

  图4所示为外出登记操作页面.

  3.4 通讯管理模块的实现

  通讯管理功能可以帮助员工完成对通讯信息的管理.员工的通讯信息可以按通讯组分别进行存储,权限为“系统”的用户可对通讯信息进行修改和删除操作.在该功能模块中,包括显示通讯组和添加通讯详细信息两个主要功能,其中显示通讯组又包括了查找通讯组内信息数量.通讯组内数量的显示和修改通讯详细信息三项子功能.

  以查找通讯组内信息数量功能为例,在显示通讯组的页面中,需要对通讯组内的通讯信息数量进行统计.为实现这一功能,在tongxun和gongxunadd两张表内首先要根据条件进行分组,然后再计算组内的数量.该方法的实现, 也需要将程序编写在HibernateUtil类中.在HibernateUtil类中,创建了一个findtongxun()的方法,在该方法中主要用到了HQL查询功能的group by分组语句和count()聚集函数,实现了对数据表的分组和组内数量的统计.

  4 系统测试

  4.1 单元测试

  4.1.1 登录模块单元测试

  通过对登录界面及登录功能的反复测试,在登录模块中设计的验证码为0~9的随机数字,但实际运行后只能够输出0~8,其原因是生成随机数方法的代码编写不完整造成的.在以上随机数生成程序中,将Math.random()做乘10减1的操作后,将值赋给变量intmethod,并采用在控制台上打印变量方法,显示随机数的生成结果,其结果是只产生了0~8的随机数.

  通过做Math.random()乘11减1的更改,并增加对intmethod是否为9进行判断后,运行程序能够得到0~9的随机数.

  4.1.2 日常管理模块单元测试

  在运行日常管理模块的程序时,当发布了公告信息后,新发布的公告信息没有显示在页面上,并在控制台上出现错误提示.根据错误提示,错误发生在数据库查询数据时.在系统中数据库中,将meeting表中的字段设置了非空约束,当调用保存方法时,需要对保存对象的各个属性(除主键外)进行设置.但是在代码编写过程中并没有对公告主题进行设置,当添加了设置公告主题的代码后,重新运行本模块时,新发布的公告信息可以正常显示在页面上.

  4.1.3 考勤管理模块单元测试

  在考勤管理模块运行测试过程中,各项功能的使用均能够按照预定要求正常执行,但是在上下班登记的页面中,采用的是分页显示的方法,当单击第二面的超级链接时,页面不能够跳转至第二页,而是自动回到了页,通过检查程序中并没的语法和逻辑上的错误.通过对程序的反复检查发现,在“onClick”单击事件后缺少控制语句,当增加了控制语句“return false”后,单击第二面的超级链接时,就能够正常跳转至第二页了.

  4.2 综合测试

  在综合测试阶段,主要完成的工作就是系统测试和验收测试.经过严格的测试,OA系统的界面满足易用性.一致性.合理性.美观性与协调性的要求;经过集成测试,当有多个用户同时向数据库提交数据请求时,系统能够为用户提供正确的数据;经过功能测试,系统的登录.会议管理.公告管理.外出登记.上下班登记.显示通讯组.添加通讯详细信息等功能均能够达到预期的设计目标.

  5 结论

  本文论述了基于Struts和Hibernate技术的OA系统的设计与实现,依据系统测试结果,系统的结构设计合理.运行安全稳定.界面简洁.操作方便,各项功能基本能够满足中小企业对OA系统的要求,同时,系统还具有良好的升级功能,为下一步实现移动办公打下了坚实的基础.

上一篇:医疗设备的无线充电
下一篇:基于AD9850构成的DDS正弦波信号发生器设计与实现(一)

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料