1.绪论
1.1 设计背景和意义
1.1.1 设计背景
在改革热潮兴起的当下,教育上的改革首当其冲,而在考试、阅卷评分模式上的改革对于教育改革至关重要,而基于网络技术而建立起来的网上考试和阅卷系统正在被越来越多的教育机构所重视。目前,较多经济不发达的地区,依然采用传统的考试阅卷方式。
传统方式一般都存在着考试流程繁琐、时效性不高、阅卷的速度慢、效率低、录分数和统计分析较为困难,阅卷的时候无法保证阅卷的质量和潜在的公平性隐患。对于一些科目成绩的查询,往往只能查询到近期的,时间范围较长的成绩信息往往早已丢失,这对某些教学的评判和最终的鉴定造成了一定的影响[1]。另一方面,对于最终成绩的评判分析经常处于总分和单科分数的层次上,无法对其中潜在的规律加以分析和探索,进而更加无法对追寻更好的教学方法提供更好的数据分析的支持。
随着目前计算机相关的技术飞跃发展,使得这些传统阅卷带来的弊端能够得以很好的规避,网上阅卷的方式正在被越来越多的教育方所接受和普及,并逐渐成为教育考试阅卷的主流发展方向。当下主要利用目前较为先进的数据库技术、计算机网络技术、和密码加密认证技术加以整合,利用计算机完成身份认证、网上考试、试卷扫描、试卷图片的切割、阅卷任务分发、成绩查询等模拟现实生活中的真实考试过程,完成了对学生的测评和考核。而在这一过程当中,试卷的审阅,在现实的实践过程当中,总是会出现分配不均、分数统计不到位、最终学生成绩查询出现误差,这时一套能够比较好处理试卷任务分发的系统成为了整套网上阅卷系统中不可或缺的一部分[2]。
1.1.2 设计意义
该系统提高了阅卷的效率,以前采用人工方式阅卷,需要将试卷装订起来,然后分发给每一教师去评阅,费时费力,而此时以网络技术为支持,使阅卷的传统需要手工的方式完成的任务,变成了只需要让评阅教师点击鼠标等简单的操作就都能完成的任务,大幅度地提高了整体阅卷的效率。
同时在保证效率的同时,网上阅卷还能够保证阅卷的质量,网上阅卷系统可以对试卷的题目进行更加细致的评分和查询,且当多位阅卷老师对同一道题给出的分数出现较大的差距时,可返回重新评阅,直至阅卷的偏差降低至接近零,阅卷的质量因而大幅提高。
另外对于教学上的帮助上来说,网上阅卷便于数据统计分析进而方便指导教学者教学。阅卷完成之后,系统可以提供客观题和主观题的成绩合并功能,并且根据不同学校制定的统计标准和相应的统计内容,进行相应考生成绩的统计分析和评价工作。网上阅卷的方式在某种程度上,也能上学生更快地适应中、高考的答题形式,熟悉和适应这种模式能够在最终的考试当中提高自己的答题成绩。
1.2 研究现状及发展趋势
在当下的国内来看,仍然存在很多地方,采用人工阅卷的方式,需要将试卷一一批改,不仅效率低下,而且出错的概率大,而且需要等待较长的时间才能查询分数,效率低下,耗费人力物力;且当下网上阅卷系统的使用,主要采用高速扫描仪,批量对提交的试卷进行扫描,扫描后得到的试卷图片再由专门的图片切割机器进行切割,然后依次分配给不同的教师进行试卷评阅,实现整个过程流程化,规范化。
从整体上来看,目前网上阅卷的形式已经受到越来越多高校的接纳,因为该形式以流程简介、准确、高效的特点,极大地减少了老师们的日常工作量,在某种程度上规避了人工阅卷会带来的各种错误的发生,且其具备的公正、客观和效率优势不仅促进了阅卷信息化的发展,同时也得到社会上的一致好评[3]。
在我国,中考和高考网上的阅卷方式,主要采用答卷和试卷相分离的操作方法,利用高速文档扫描仪将答卷扫描成图像,通过计算机对客观题进行自动判分统计,同时结合每学科的教师通过在网络在各自的计算机上对答卷的图片对应的主观题进行评分[4],然后由系统进行主观题和客观题的分数合成与成绩校验,并且按照要求对考试成绩进行质量分析和等级划分。
但是因为中、高考的网上阅卷系统,它的建设投资非常的巨大,并且该系统对运行环境的要求非常高,同时需要配套地使用高昂的答题卡,因此该系统无法在广大的中小学校大规模地推广使用。所以,作为教育的先锋广大中小学校该如何使用网上阅卷的方式来提高阅卷的质量以提高阅卷的质量,从而减轻教师的负担、成功接轨中考和高考,从而提升整体的教学水平[5],这是相关教育机构和广大学校应该共同关注的热点问题,也是教育衡量信息化的一个重要方向。
在未来,中国教育信息化的走向必然会突破轻软件、重硬件、忽视应用的误点,也会加强教师信息化的培养,着力推动信息技术和教育的全面融合,推动信息技术在各类教育学科中的深入应用,促进各种重要的教育流程优化再造,变革传统的教学理念、方法和模式,引领教育的创新、高效、持久发展。
1.3 设计内容与工作
1.3.1 设计内容
- 实现权限管理模块的功能,对人员、角色、权限的管理,不同角色的人员登录系统对应着不同的权限分配,对应有着不同功能的操作权限。这些操作的权限可以通过管理员进行分配,并且支持新增权限和实时加载功能,管理员实时可观察和分配。
- 实现对学科、试卷、试卷分配的管理,每位学生的试卷支持上传、切分和分配阅卷,同时在试卷是否切割的状态下对应着不同的操作,能够动态控制试卷的某些操作权限。
- 实现管理员上传每一个学生的试卷图片,且对试卷按对应的题号进行图片切割,分割好的图片支持大小视图切换查看,同时按照不同的科目,对试卷对应的不同的题号进行分数和题号的赋值,然后下一步就可以给不同的教师进行分配阅卷任务。
- 教师登陆系统之后,可以查阅自己需要审阅的试题,然后进行试卷审阅,审阅后,相应题号的试卷分数将会汇总到该学生试卷的当前得分之上,当该学生试卷的全部题号的题目都审阅完成之后,学生登录系统之后试卷成绩就可以查询[8]。
1.3.2 设计主要工作
首先通过网上和书籍查阅的方式,了解目前网上阅卷任务分发系统采用的方式是怎样的,试卷图片的切割和保存是怎样的,面对多学科、多教师的任务分发情况时,当下常见的解决方案是如何的。熟悉整个网上阅卷系统的具体流程机制,在了解这些流程的前提之下,对应设计相对应的阅卷任务分发系统。
深入地了解和应用当下常用的一些框架技术,如 Spring、hibernate,在保证高效开发的同时,保证系统的质量符合当下主流的业务需求,在此基础之上了解一些前端的开发技巧,尽可能让教师在阅卷的过程当中,清晰明朗地阅读图片上的每一道题目。
学习相关框架搭建和部署知识,将整体的系统功能通过一系列的模块组合起来,实现整体的网上阅卷任务分发功能,对不同角色的人员登录支持不同的功能操作。
2.系统相关技术
2.1 系统架构技术概述
本系统在架构方面,采用了前后端相互分离的软件设计模式,在此模式下架构分为前端和后端,其中前端主要有如下任务。
- 为登录的用户提供可视化操作的界面,界面主要通过左树右表的方式展示,可以通过简单的操作实现对树根和子树的添加和管理,通过点击叶子树节点即可打开相应的功能节点界面,每个功能节点界面都有对应的模块信息的管理操作。页面采用页面框组合的方式,顶部主要显示当前登录用户、系统时间和系统图标这些通用信息的展示,而底部主要分为左右两部分,即上述描述的做树右表的页面展示模式。
- 可以通过前端页面提供的各种操作,完成网上阅卷任务分发系统各种功能的操控,如管理员登录,可以增加用户,给用户分配权限、分配角色,对每位学生的试卷的上传和提交,每位学生的试卷的分割和保存,可以对试卷进行分配给不同的教师阅卷。通过前端的这些操作手段,可以完成对后台 API 的调用,从而实现了对整个系统的流转。
- 前端页面还支持系统在出现各种错误的时候,显示错误信息的页面提示,为这些错误的产生提供了一个对用户比较友好的展示窗口,避免了向用户展示其无法理解的代码异常显示,从而给使用者带来更好的体验。
后端负责以下任务
- 对在前端用户的动作做出响应,如当用户登录之后调用后台的接口,判断用户名和密码是否正确,如果正确则跳转到系统首页,如果错误则将相应的错误提示信息以用户能理解的方式展示出来。
- 完成一些比较复杂的操作,如该系统当中权限功能的加载,通过扫描控制层上的所有的包下,包含的注解部分的方法,并将这些方法作为权限资源加载到权限列表当中,整个过程一键自动化实现,需要这些权限的角色分配即可。
- 实现对整个阅卷任务分发系统的业务衔接整合功能,如每张试卷切分成多道试题之后,教师登录每阅一道题目,分数自动汇总到该学生的试卷上,只有该学生试卷上的试题全部审阅完成之后,才能进行分数查阅。
2.2 软件技术概述
2.2.1 J2EE 技术
J2EE(Java2 Platform Enterprise Edition)模型是出自 SUN 公司,提出了一种基于 Java 开发语言环境下的、多层体系结构的服务应用框架,同时它还支持分布式应用系统,因为其采用了组件化的方法设计、开发装备和部署企业级的高级应用程序,在保证以上功能的前提之下,提供了一组应用上的组件和运行环境来为为企业应用构造他们的可伸缩性,为企业的系统提供了具备高度兼容性和移植性的企业信息平台,J2EE 为搭建的系统提供了一套包括可伸缩性、灵活性、易维护性的可靠机制[6]。
EE 技术保证了高效的开发,因为 SUN 公司设计伊始就允许公司把一些通用的、很繁琐的服务端的任务交给中间的一些供应商去完成,在这样的前提下,开发人员就可以集中精力在处理一些比较关键的业务逻辑代码上,从而大大缩短了开发时间[7]。J2EE 也保证了应用的稳定性,一个服务器端,它必须能够全天候的不间断运行才能够满足合作伙伴和公司客户的需求。因为因特网是全球性的、无处不在的,即使在夜间按计划停机了都可能造成无法挽回的损失,倘若是意外停机,那便会带来灾难性的后果,而 J2EE 如果部署到了可靠的操作系统环境中,能够长期地支持可靠的性能和稳定性。另外,J2EE 还具备可伸缩性、支持异构环境等多种优点[8]。
J2EE 中实现的一些技术产品如 Tomcat,JSP 为本次系统开发的基石,Tomcat 为本次系统的运行提供了一个良好的容器和运行环境,使得系统能够很好的得以运行,JSP 技术的实现成为本次页面主要动态展示形式。
2.2.2 SSH 框架
SSH 是一个集成了 Struts、Spring 和 Hibernate 三个框架的 Web 应用程序的开源框架。根据职责 SSH 框架的系统主要分三层,首先是视图层,它位于最外层,是最接近用户的一层[9],主要的功能是用来接收用户在前端输入的数据以及显示数据的,能为用户提供一种交互性的操作页面。第二层是业务逻辑层,主要功能为系统中的业务规则的指定以及业务流程的实现相关的系统设计[10],对于持久层而言,业务逻辑层它是调用者,但是对于视图层,它却是被调用者。最后就是持久层,作为数据的获取层,该层封装了大量对底层数据库的操作动作,如建立连接和读取更新数据。
其中,Struts2 是一个以 MVC 设计模式为基础的 Web 应用框架,在本质上来说,它就相当于一个 Servlet,但是在 MVC 设计模式当中,Struts2 作为一个控制器来建立了视图与模型之间的数据交互[11]。需要说明的是,Struts2 它是 Struts 的第二代产品,是在以 Struts1 和 Webwork 为核心的基础上,进行了合并的全新的一套系统框架,但是它和 Struts1 的体系结构差别巨大,因为 Struts2 是以 Webwork 为核心,是利用拦截器的机制处理用户的请求,因为这样的设计也可以使得逻辑层能和 Servlet 能够很好的分离开,所以 Struts2 可以理解成 Webwork 的更新产品。虽然 Struts1 到 Struts2 有着非常大的变化,但是 Struts2 相比于 Webwork 的变化却是很小[12]。
Spring 它是一个轻量级的、面向 Bean 的、松耦合的、能整合多套技术框架的一个为简化企业级应用程序开发的一个开源框架。其中,轻量主要体现在 Spring 的 API 比较简单以及它的配置文件不会像传统的 EJB 一样臃肿,完整的 Spring 框架可以只在 1MB 的 JAR 文件里发布,同时 Spring 的性能也是非常好,处理的开销微不足道。另外 Spring 支持非侵入式的编程方式[13],不同的类在编写时各自分开,不相互依赖,运行的时候动态一起运行。
控制反转,Spring 的一个特点就是松耦合,该功能的实现主要要归功于它的控制反转技术,IOC,在其他场合它也被成为 IoC 容器,容器装的是 Bean,Spring 是面向 Bean 的,而控制反转其实就是将创建 Bean 的动作交给了 IoC 容器来处理了。一个对象依赖其他的对象,它会通过某种相对被动的方式传递进来,而不是这个对象创建或者查找依赖对象[14]。
面向切面,Spring 最强大的莫过于对面向切面的丰富支持,切面如果不那么官方解读的话,它其实就是一种规则,通过各种规则间的契合达到某些中间可以抽离的代码块形成一种规则,最常见的就是事物,它是具有原子性的不可分割的一组具备某种逻辑性的动作,这时可以抽离成一种规则,在服务的层面进行解耦合的切入复用。
而 Hibernate 则是一个开源的 ORM 映射的框架,其中它对最基础的 JDBC 操作作了轻量级的封装,将简单的 Java 对象即(POJO)和数据库表,通过 XML 的配置文件建立了映射关系[15],是一个自动化的框架,不需要操作任何底层 SQL 的代码。在项目过程当中,Hibernate 的 ORM 思想,可以不用人为手动的创建数据库表,项目运行时自动根据配置文件的相应依赖配置自动创建。当然 Hibernate 使用的范围也相当的广泛,既可以在 Java 的客户端程序中大放异彩,也可以在 Web 的程序当中使用[16]。
2.3 本章小结
在本章当中,主要讲述了本次系统所实行的一些列系统架构的技术流程以及流程规范,对前后端的任务职责的划分作了一个比较清晰的解释,同时对本系统应用到的技术也作了进一步的解释,探讨了每一种技术背后的细节以及相应的特点,这对之后的系统分析和实现,乃至后面的测试作好了一个技术架构方面的铺垫和支持。
3.系统设计
3.1 系统设计原则
3.1.1 逻辑清晰原则
一个程序,在设计的过程当中至少要做到逻辑合理清晰,系统范围内的所有设计都应该在逻辑的层次上都能行得通,先设计后实现,而不是在实现过程当中逐一发现问题然后解决。在保证完成之前设计功能的基础之上,尽可能的使程序精简松耦合、高内聚。在设计的过程中需要兼顾整个系统层面的方方面面,以高屋建瓴的视角去检查一些逻辑是否行得通,然后在递归性的检查全部的设计。
3.1.2 模块化原则
使用模块化的设计能够有效地隔离每个子逻辑之间的耦合性,是将子程序、主程序、子过程等一些独立的部分在此基础之上,定好之间的输入和输出的入口和连接关系,然后依次地精确每一步的实现最终得到完成功能的系统。它的主要目的就是降低程序的复杂性,方便调试、简化流程以及方便后期的维护。
一般大公司中的大型软件都要尽可能的使用较为绿色的设计方案来实行,其中模块化的设计思想,实际就比较符合它的这种绿色的思想。当然,在当下的软件技术当中,模块化的设计原则已经成为了一种比较明确的软件设计方法了。其有着能够有效缩短开发的周期,能够让多个开发者同时开工并且不会互相影响。
3.2 数据库设计
3.2.1 设计原则
数据库的设计,需要满足经典的三范式,如下所示:
第一范式:当某一关系模式 R,它的所有属性都不能再被拆解成更小更基本的数据单位,即数据库的表它的某一列数据属性一定是单独唯一的,不能是多个列合并的,这样就符合第一范式,简记为 1NF。
第二范式:如果某一个关系模式 R 满足上述的第一范式,并且该关系模式当中的非主属性都不是唯一的,那么这样的关系模式称满足第二范式,简记为 2NF[17]。
第三范式:假设 R 是一个满足第二范式的关系模式,那么要使得 R 为第三范式只需再加一个限制,即关系模式 R 中的非主属性,不能包括来自其他表的非主属性,若要有其他表的字段,那也是要以主键的形式作为外键的形式存在。
在该基础之上进行详细设计的数据库,才能防止出现数据冗余、依赖传递等数据库设计上不合理的地方。数据库的整体编码采用 utf8,使得数据库在持久化数据层面上,能够应对多国的语言[18]。
3.2.2 -R 图设计
本系统整体的 E-R 图设计如图 3.1 所示,描述了每个实体之间的关联关系。
完整的源码和详细的文档,上传到了 【WRITE-BUG数字空间】,需要的请自取 www.writebug.com/code/0c7b1e…