基于struts&Hibernate学生考勤系统设计

2010-01-07 14:02:00 来源:RFID世界网 作者:周程 张艺超 马汝贞
技术/方案频道文章B

[摘要] 为克服手工处理学生考勤信息的缺点,采用 JAVA 环境下实现MVC设计模式的 struts 框架和实现数据持久化的 Hibernate 框架开发基于 Web 的学生考勤管理系统。

MVC 设计模式是一种著名的软件开发设计模式,它是模型、视图、控制器( Mode1.View.Controller )缩写。模型封装了用户数据和处理数据的业务逻辑;视图提供了用户界面,将用户输入数据传递给控制器或将模型数据显示给用户;控制器连接了模型和视图,判断请求交给哪个模型,调用视图显示模型处理用户请求结果。

1. MVC 设计模式设计模式概述

1.1 MVC 设计模式
        MVC 设计模式是一种著名的软件开发设计模式,它是模型、视图、控制器( Mode1.View.Controller )缩写。模型封装了用户数据和处理数据的业务逻辑;视图提供了用户界面,将用户输入数据传递给控制器或将模型数据显示给用户;控制器连接了模型和视图,判断请求交给哪个模型,调用视图显示模型处理用户请求结果。

        MVC 设计模式将应用程序进行了分层,视图和模型通过控制器连接,从而减少了用户界面和业务逻辑之间的耦合,使程序设计更加清晰、灵活,也提高了软件的可扩展性、可维护性。

1.2 Struts 框架 
        Struts 是基于的MVC模式应用框架,遵守了 J2EE 的 Servlet、JSP 等技术规范,并且根据J2EE的特点做了相应的变化和扩展,是J2EE 体系架构的一种轻量级实现。

        在 Struts 框架中,控制器由 ActionServlet 和 Action 类以及 Struts.config.xml 配置文件实现。ActionServlet  是 Struts 框架的核心控制组件, 所有的用户请求都被映射到 ActionServlet, 由 ActionServlet 根据配置文件中的定义将控制转移到指定的 Action 类。Action 类是用户请求与业务逻辑之间的桥梁,它执行一个 execute()方法并返回一个ActionForward对象,当 ActionServlet 接收到该对象后,根据 Struts config.xml 中的配置信息将请求转发。Struts 框架中的视图主要由 JSP 页面组成。ActionForm 是 Struts 在视图层的一个核心组件,它是专门用来在视图层和控制层之间传递表单数据的 DTO(Dam Transfer Object,数据传输对象),它还包括了用于数据验证的 validate()方法和用于数据复位的 reset()方法。在 Struts 应用程序中,开发人员可以选择 JavaBean、Hibernate、EJB 等组件来实现 Struts 框架中的模型。

2.Hibernate 持久化技术 
        Hibernate 是一个基于 Java 的开放源代码的 O/R Mapping (对象关系映射框架),它通过其强大的 O/R 映射功能 JAVA 对象同存于关系数据库中的数据进行映射,并对 JDBC 进行了轻量级的对象封装,可以使JAVA程序员方便地使用对象编程思维来操纵数据库,它不仅提供 ORM 映射服务,还提供数据查询和数据缓存的方法,可以提高查询和处理数据的效率。它是一种提供面向对象的数据库服务中间件。

3.基于 Struts 和 Hibernate 的考勤管理系统的设计 
        随着教育部对在校大学生出勤的相关规定出台,各大专院校加大了对学生考勤的管理力度,但大部份都采用手工处理的方法,工作量大且效率低。本系统能够实现网上对学生考勤信息进行添加、删除、修改、查询和统计功能,管理人员能及时了解学生出勤情况和某课班级某课程的出勤情况。在开发的过程中,使用 PowerDesigner 作为 CASE 工具,采用对 Hibernate 和 Struts 提供良好支持的 Myeclipse 6.0 作为系统的开发环境,数据库采用 MYSQL5.0,WEB 服务器采用 jakarta Tomcm6.0 并安装了 JDK6.0。

3.1数据库层的设计 
        Power Designer 是 Sybase 公司的 CASE 工具集,使用它可以方便地对管理信息系统进行分析设计。DataArchitect 模块是Power designer  的核心工具,它采用二级数据建模方式,即概念级和物理级。在概念级,概念数据模型 (CDM) 代表业务信息需求,不考虑在数据库上的物理实现,通过它可以绘制系统的实体联系图(E.R图),即系统的静态特征;在物理级,物理数据模型 (PDM) 指定了物理实现的目标RDBMS的特征等细节。它可以生成数据库脚本,通过选择 ODBC 方式则可以直接连接到数据库,从而直接产生数据库表以及其他数据库对象。它与其它设计软件相配合使用可以缩短开发时间和使系统设计更优化。

        在本系统的设计过程中,我们利用 Power Designer 来完成系统数据库概念设计和 MYSQL 数据库表的工作。首先,在PowerDesigner 中设计系统的概念层次的数据模型,通过它的CDM 功能创建实体关系图来描述系统的数据组织结构。通过它的“检查模型”功能,校验概念数据模型中实体、实体属性、实体标识和实体间关系等是否存在问题。接着,选择 MYSQL 作为系统的目标数据库,生成在MYSQL 上实现的数据库的物理数据模型 (PDM) :最后,通过“产生数据库”功能,并选择 ODBC 方式连接到指定的数据库,从而直接产生MYSQL 上的数据库表以及其他数据库对象。

3.2 持久化层的设计 
        数据持久层基于 Hibernate 架构,采用了 DAO 设计模式和抽象工厂设计模式。下面以学生类 (Student) 为例进行说明。首先,把学生信息封装为 VO(Value Object) 。VO 是一组值对象,只包含了一些属性和 getter/setter 方法的 POJO(Plan Old Java Bean) 。然后,采用 DAO 设计模式和抽象工厂设计模式,完成 DAO 工厂和 Hibernate 数据库操作的具体实现。最后,利用 Hibernate 的配置文件完成从应用程序到数据库的映射。

        在 Myeclipse 开发环境中,首先配置数据库服务器的连接,然后利用 Myeclipse 的 Hibernate 的逆向工程,可以自动完成持久化层的设计任务。例如对学生表 (student) 进行逆向工程, 将会自动生成Student.iava、AbstractStudent.iava、StudentDAO.iava、Student.hbm.xml等文件。其中,Abstract Student.iava 就是一个封装了 Student 信息的VO。Student DAO.java采用DAO模式封闭了数据库操作。

        在 hibemate.cfg.xml 配置文件中,定义了符合 SQLServer 规范的 dialect 方言,连接池访问数据库的 URL 资源定位地址以及数据库名称kq, 数据库连接驱动程序,Hibernate管理事务、是否显示SQL语句。在mapping映射文件配置部分,定义了教师表 (Teacher)、学生表 (Student1、考勤表(Attendance) 等对应的映射文件等。在该层的设计中,VO 的信息封装体现了面向对象设计编程思想; DAO 的设计模式和抽象工厂模式减弱了上层调用和具体实现之间的耦合;Hibemate 配置实现了数据库高移植性,只需要改变 Hibemate 配置文件,不用修改程序设计就可以完成不同数据库之间的更换。

3.3 业务逻辑层设计 
        业务逻辑层包含了供客户端程序调用的业务逻辑规则,以帮助客户端完成业务操作。该层采用业务代理、DAO和抽象工厂设计模式使用业务代理、DAO 和抽象工厂设计模式,可以使业务逻辑更加灵活,如果具体业务发生变化,在表示层和数据持久化层改变很小就可以完成改变,这种设计能够增强系统的可维护性和灵活性。

3.4 表示层设计 
        首先,建立用于用户输入和浏览的JSP视图页面和封装用户表单信息的 ActionForm 。接着,搭建用户请求和业务逻辑之间的桥梁——Action 组件,该组件负责把用户信息和具体的业务逻辑处理联系在一起。

        最后,通过 Struts 配置连接 ActionForm 和 Action,完成一个业务设计。该层设计中,采用页面设计和表示层业务逻辑分离,提高了应用程序的可维护性。

4.总结 
        本文介绍了 MVC 设计模式以及 Struts 和 Hibernate 框架的工作原理,利用了他们的优点互补,有机地将 Struts+Hi.bernate 框架结合起来构建了一个学生考勤管理系统,利用 DAO 设计模式、业务代理模式等克服了传统Web信息系统的缺点,提高了系统的可维护性、可扩展性,降低了系统的耦合性。通过使用 Powerdesigner 和 Myeclipse 等开发工具能够有效的加快开发速度和效率,大大减少开发人员的手工编写代码的工作量。随着本系统的应用,教师可以随时随地上报出勤情况,管理人员可以随时了解每门课程每个班级和每个学生的出勤情况,本系统通过汇总功能产生因出勤率低而取消考试资格的学生名单。这对提高教务管理工作效率意义较大。

0
[责任编辑:蒋丽萍]

《安防知识网》一个服务号 二个订阅号 微信服务全面升级

不得转载声明: 凡文章来源标明“安防知识网”的文章著作权均为本站所有,禁止转载,除非取得了著作权人的书面同意且注明出处。违者本网保留追究相关法律责任的权利。

专栏推荐

基于射频IC卡的应用系统研究与设计 2010-01-07 13:54  来源:RFID世界网
如何成功实施非接触CPU卡项目 2010-01-19 10:48  来源:安防知识网