1、 软件系统设计 -基于 java 的学生考勤 系统 学院: 通信与电子工程学院 班级: 学号: 姓名: 同组成员: 指导老师: 日期: 2013 年 12 月 20 日 I 摘 要 在计算机和手机技术广泛推广的今天,应用计算机已经大大的提高了社会的各方面的效率。而作为学校,社会知识的高度集中区,计算机已经成为一种必需品。有了计算机,那么我们就应该在方方面面想到用它来提高我们的效率。对于大学生的考勤方面,现在越来越显示出重要性。虽然大学生都已经步入成年,但是有些时候会出现小小的偷懒也情有可原。很多方面还需要代课老师和学校的监督,当然对于上课 考勤 很占用时间,而且效果不好,老师也不能对学生每次
2、考勤 情 况都有明确的了解,所以一个可视化的考勤系统称为必须。本课 程设计采用 java web 技术,利用 SSH 框架,以 JSP 页面的形式与网络进行连接,设计了基于 Java 的考勤 系统,该系统不仅解决了现存 考勤 方式的不足,还可以实现 按班级、按科目、按时间、按学生姓名查询学生的考勤请假情况 ,能够提升课堂效率,增进师生关系,有利于老师了解缺席的特殊情况并即时知晓教学效果,避免错点或漏点现象。 关键词: javaweb 技术; SSH 框架; 考勤 系统; JSP 页面 II 目 录 摘 要 . I 第 1 章 绪论 . 错误 !未定义书签。 1.1 概述 . 2 1.2 系统分
3、析 . 1 1.2.1 传统与计算机考 勤的比较 . 1 1.2.2 C/S 模式与 B/S 模式的比较分析 . 1 1.2.3 java web 中的 SSH 框架 . 1 1.3 国内外现存 考勤 方式 . 2 1.3.1 基于 Flash 的随机考勤系统 . 2 1.3.2 基于指纹的考勤系统 . 3 1.2.3 基于 C#的语音考勤系统 . 3 第 2 章 基本模块设计 . 4 2.1 主要类创建与数据表的创建 . 4 2.1.1 类创建分析 . 4 2.1.2 数据表创建 . 4 2.2 页面显示及服务器选择 . 5 2.2.1 tomcat 服务器介绍 . 5 2.2.2 JSP
4、网页语言的优势 . 5 2.3 mvc 设计模式的介绍 . 6 第 3 章 实现的主要功能 . 8 3.1 学生模块功能设计 . 8 3.1.1 学生模块功能具体设计 . 8 3.2 教师模块功能设计 . 10 3.2.1 教师模块功能具体设计 . 10 3.3 管理员模块功能设计 . 12 3.3.1 管理员模块功能具体设计 . 12 第 4 章 实现的主要功能 . 14 4.1 对出现的 bug 进行统一分析 . 14 结 论 . 15 参考文献 . 16 1 第 1 章 绪论 1.1 概述 现今,高校老师为检查同学的出勤率,主要通过学生名单进行抽点或进行学生即时提交作业及签到的方式,这些
5、方式难免会出现浪费时间,代 考勤 等现象。在自动化办公系统逐步普及的今天, C/S 或 B/S 的应用系统已经非常普及,而 Java 技术更是普遍运用于 C/S 和 B/S 的模式设计当中,基于 Java 的自动化 考勤 系统不仅可以节约时间,还简单易用,提高了 考勤 ,请假,了解课程信息的效率。与此同时,该系统可以为师生提供一个更好的交流平台,学生可以通过该系统去查询自己本学期的到课情况, 有效促进了自动化教学,更利于教学相长。 1.2 系统分析 1.2.1 传统与计算机 考勤 的比较 传统人工的 考勤 方式效率低,查找困难,易改变数据的真实性。与传统的 考勤 方式相比,计算机 考勤 系统拥
6、有查找方便,数据一致、不易丢失,存储量大、成本低的优点。这些优点能够极大地提高学校教学管理的质量和效率,本系统不仅具有 考勤 功能,还可以 进行留言、请假、促进师生间的信息交流,给 老师的工作和学生的学习提供了方便。 1.2.2 C/S 模式与 B/S 模式的比较分析 C/S 模式主要由客户应用程序 (Client)、服务器管理程序 (Server)和中间件(Middleware)三个部件组成。客户应用程序是系统中用户与数据进行交互的部件。服务器程序负责有效地管理系统资源,如管理一个信息数据库,其主要工作是当多个客户并发地请求服务器上的相同资源时,对这些资源进行最人优化管理。中间件负责联结客户
7、应用程序与服务器管理程序,协同完成一个作业,以满足用户查询管理数据的要求。 B/S 模式是一种以 Web 技术为基础的新型的 MIS 系统平台模式。把传统 C/S 模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器 (Web 服务器 ),从而构成一个三层结构的 客户服务器体系。 1.2.3 java web 中的 SSH 框架 2 SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种 Web 应用程序开源框架。 集成 SSH 框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、
8、维护方便的 Web 应用程序。其中使用 Struts 作为系统的整体基础架构,负责 MVC 的分离,在 Struts 框架的模型部分,利用 Hibernate 框架对持久层提供支持,业务层用 Spring 支持。具体做 法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的 Java 对象,然后编写基本的 DAO 接口,并给出 Hibernate 的 DAO 实现,采用 Hibernate 架构实现的DAO 类来实现 Java 类与数据库之间的转换和访问,最后由 Spring 完成业务逻辑。 系统的基本业务流程是: 在表示层中,首先通过 JSP 页面实现交互界面,负责传送请求
9、(Request) 和接收响应 (Response) ,然后 Struts 根据配置文件(struts-config.xml)将 ActionServlet 接收到的 Request委派给相应的 Action 处理。在业务层中,管理服务组件的 Spring IoC 容器负责向 Action 提供业务模型 (Model)组件和该组件的协作对象数据处理 (DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于 Hibernate的对象化映射和数据库交互,处理 DAO 组件请求的数据,并返回处理结果。 1.3 国内外现存 考勤 方式分析 目
10、前 ,大部分高校仍然在使用实体名单的 考勤 方式,信息化的 考勤 方式并没有十分普及,主要有以 3 种方式: 1.3.1 基于 Flash 的随机 考勤 系统 该系统可以进行随机 考勤 ,将学生的信息存入随机算法,通过数组的索引来访问数组中元素,具有一定的交互功能。采取 Flash 和 XML 相结合的技术,使用 3DEvironment组件增加 3D 动画效果,通过建立 XML 文件,设定变量 i(班级人数),变量 j(随机数),在 my_XML 实例中读取 childNodes 的长度,产生 1-i 之间的随机数,并由 j 找到相应的学生,把 XML 的内容放到文本显示影片剪辑的动态文本
11、LuckyText 中,点击开始按钮,进行 考勤 。 该系统相对于传统的 考勤 方式,避免了老师主观选择, 更加公平,但是没有使用数据库,每次 考勤 时需要调用名单,效率不足;没能考虑学生请假状况,缺乏与学生的交互性;任课教师对名单管理不便,易出现名单丢失,名单更改难度大等问题。 3 1.3.2 基于指纹的 考勤 系统 该系统根据指纹特征的唯一性和稳定性,通过提取指纹与预先保存的指纹模板进行比较以验证身份,实现指纹登记、指纹识别、指纹档案管理与统计,系统登录及查询的功能。 用户进入系统的菜单选项,通过指纹登记菜单录入指纹,在每个教室门前放置一台指纹 考勤 机器,学生在上下课时,用登记的手指轻按
12、指纹 考勤 机器识别口进行识别。 该系 统具有统计精确、使用方便、节约时间的优点,但是指纹识别器的采购和大量指纹的采集带来了巨大的成本和管理的不便,同时该系统也没有能将学生的特殊缺席情况考虑在内,不能有效促进老师与学生之间的交流。 1.3.3 基于 C#的语音 考勤 系统 该系统借助 Microsoft Speech SDK 提供的一套关于语音处理的应用程序接口 SAPI实现文字与语音的转换和语音识别的方法,可以具体实现声音采集,声音识别 考勤 ,声音档案管理,系统登录,查询,退出的功能。学生首先通过登录界面登录系统,录入自己的语音信息,系统通过语音的 识别与匹配确定到课情况。 该系统具有使用
13、方便灵活的特点,但是语音识别机器成本高,语音识别易受外界干扰,出现错误判断,且海量的语音采集也为管理带来不便。 本文分析了以上系统所存在的一系列问题,设计了基于 Java 的 考勤 系统,减少成本,避免大量采取样本的繁杂过程,利用数据库对数据高效管理并优化数据检索。系统可以实现随机 考勤 及全部 考勤 的功能,并针对已请假的学生,在执行界面中做出说明;留言功能增加了学生和老师的课后交流的机会,及时反馈课程的效果;管理员模块可以对学生信息,教师信息,课程信息,到课情况信息进行管理,及时 更新数据表,让系统实时性,交互性更加优越;教师模块的 考勤 部分增加班级选择功能,实现了班级的切换,数据信息的
14、一次录入,多次使用的功能。 4 第 2 章 基本模块设计 2.1 主要类创建与数据表的创建 2.1.1 类创建分析 关于关系型数据库中类表的创建,在类的抽象中我们做了以下分析: 将关联表:学生,教师,课程三个类 的创建以及关联关系;出勤信息类的字段与我们的三个前提类的关系。以 下就是我们的设计思路: 这里我们的 admin 就是管理员,关联关系类就是我们的 studentcourse,和studentteacher,还有 studentcourse。 主体类如图 2-1 所示: 图 2-1 主体类 2.1.2 数据表创建 在数据库表的创建上我们改变了以前的思路,将重要的数据填入部分进行修改,不
15、再是插入型,我们将使用 hibernate 进行类与底层的联系,所以我们创建了一下 xml文件进行关联,这样就便于维护和使用。所以我们将很多工夫用在了后台维护,尽可能的来完善他的功能,而不去考虑太多外在因素。 映射关系如图 2-2所示: 5 图 2-2 映射关系 2.2 页面显示及服务器选择 2.2.1 tomcat 服务器介绍 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用 服务器 ,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服务器,可利用它响
16、应对 HTML 页面的访问请求。实际上 Tomcat 部分是 Apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。 2.2.2 JSP 网页语言的优势 目前,最常用的四种动态网语言有 ASP(Active Server Pages),ASP.NET,JSP(Java Server Pages),PHP (Hypertext Preprocessor)。 JSP 的优势 : 1将内容的生成和显示进行分离 使用 JSP 技术, Web 页面开发人员可以使用 HTML 或者 XML 标识来设计和格式化最终页面。使用 J
17、SP 标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和 JavaBeans 组件中,并且捆绑 在小脚本中,所有的脚本在服务器端运行。这有助于作者保护自己的代码,而又保证任何基于 HTML 的 Web 浏览器的完全可用性。 2强调可重用的组件 6 绝大多数 JSP 页面依赖于可重用的,跨平台的组件( JavaBeans 或者 Enterprise JavaBeansTM 组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结
18、果的开发努力中得到平衡。 3采用标识简化页面 开发 Web 页面开发人员不会都是熟悉脚本语言的编程人员。 JavaServer Page 技术封装了许多功能,这些功能是在易用的、与 JSP 相关的 XML 标识中进行动态内容生成所需要的。标准的 JSP 标识能够访问和实例化 JavaBeans 组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。 2.3 mvc 设计模式的介绍 MVC 全名是 Model View Controller,是模型 (model)视图 (view)控制器(controller)的缩写,一种软件设计典范,用于 组织代码用一种业务逻
19、辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑。 MVC 被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。三者关系如图 2-3 所示: 图 2-3 三者关系 视图是用户看到并与之交互的界面。对老式的 Web 应用程序来说,视图就是由 HTML元素组成的界面,在新式的 Web 应用程序中, HTML依旧在视图中扮演着重要的角色,7 但一些新的技术已层出不穷,它们包括 Adobe Flash 和像 XHTML, XML/XSL, WML 等一些标识语言和 W
20、eb services。 MVC 好处是它能为应用程序处理很多不同的 视图 。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。 1 模型 模型表示企业数据和业务规则。在 MVC 的三个部件中,模型拥有最多的处理任务。例如它可能用像 EJBs 和 ColdFusion Components 这样的构件 对象 来处理 数据库 ,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 2. 控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击 Web 页面中的超链接和发送 HTML 表单 时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。