张肖如+陈丽婷+刘莉
摘要:为了改善目前教务系统在毕业审核功能设计上与学校工作流程不匹配而导致实际工作效率低下的问题,通过对学校实际情况的研究分析,依托于现有教务系统,重新设计并实现了一套基于RoR技术框架的毕业资格审核系统。该系统实用性强、易用性好,能完全满足学校的各类实际需求,极大减轻了学籍管理人员的工作负担,进一步提高了工作效率。
关键词:毕业审核;RoR;教务系统;教务管理
DOIDOI:10.11907/rjdk.171555
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2017)006-0081-03
0 引言
高校教务管理工作是高等教育中的一个极为重要的环节,是整个高校管理的核心和基础,而毕业资格审核是高校教务管理中一项非常细致而又关键的工作[1]。作为学籍管理工作的最后一个环节,毕业审核是一项严肃、政策性很强的工作,关系到学生的切身利益与学校的学位授予工作[2]。
学校目前使用的教务系统一方面在功能上并不能完全满足学校在毕业资格审核中的实际需求,实用性差,另一方面其异常低下的审核效率严重拖慢了整个毕业管理工作进度。市面上类似的教务系统都是基于高校通用的需求模型,采用的也是特定的设计模式和技术框架。因为各高校实际情况有所不同,而系统的开发公司很少能根据各高校的实际需求进行定制开发以及做适时的修改。随着高校招生数量的不断扩大,办学规模逐年增大,学校将面临越来越多学生的毕业资格的审核处理工作[3]。因此,研发一套符合学校实情的效率高、易用性强的毕业审核系统非常具有实际意义。
1 系统目标分析
每年毕业季是学籍管理工作最为繁忙的时候,等毕业生成绩全部录完,系统距离最终发放证书通常只剩两周左右,再剔除掉各学院对审核结果至少2-3轮反复核对的时间以及贴照片、盖公章、替换结业证书和筛选欠费名单等时间后,最终留给毕业审核的时间异常紧迫。因此,从实用性上考虑,毕业审核系统首先要具备较高的执行效率;从准确性上考虑,也为了保持数据源的一致性,基础数据须全部来自于教务系统的数据库;从安全性上考虑,审核系统对数据库表不能有write权限,只能是read权限;从易用性上考虑,系统要做到能自动读入教务系统中已设置好的人才培养方案和教学计划数据,从而尽可能减少人工设置项,降低学习使用成本。
2 审核流程分析
(1)半人工式审核方式。出于效率的考虑,之前学校并没有直接采用教务系统进行审核,而是采用一种“半机器半人工”的审核方式。“半机器”指所有成绩数据还是来自于原教务系统,“半人工”指对于各部分数据结果需要人工通过Excel进一步汇总整理,以生成最终审核结果。即先从教务系统的成绩管理模块导出指定年级的所有必修课不及格名单以及详细不及格成绩记录,接着从成绩管理模块的分析统计中导出指定年级的所有公共选修课和专业选修课的成绩记录及名单,再从等级考试模块导出毕业生的所有等级考试成绩,然后加入技能证书不合格数据以及毕业环节数据结果,在Excel中进行合并整理,统一数据格式,刪选数据字段,最后生成拟结业生的详细不合格成绩数据表。再通过二级学院教学秘书、各毕业班班主任通知名单上的结业生进一步核对后形成最终的结业名单。
(2)一键式自动审核方式。半人工审核方式只是一种折中方案,过多的人工处理导致工作流程更为复杂,增加了出错概率。如图1所示,通过毕业审核系统将之前的人工处理部分全部替换为机器自动执行,即在学籍管理员设定好毕业审核条件后,点击审核按钮即能直接生成最终的毕业审核结果。这种一键式审核简化了工作流程,大大提高了效率。
3 系统设计
3.1 Ruby on Rails 概述
Ruby是一种注重均衡的语言,起源于 90年代的日本,发明者是日本人松本行弘。自从 1995 年公开发布以来,Ruby 在全球吸引了许多忠实的程序员。2006 年,Ruby获得了广泛接受,各大城市都有活跃的用户组,以及 Ruby相关的开发者大会。如今,Ruby 经常位于全球编程语言成长和流行度指数的前10名(如TIOBE)[4]。Ruby成功组合了Smalltalk的优雅与Python的易用性,以及Perl的实用主义,使编程变得优雅有趣,是一种有着超级清晰语法的纯面向对象的编程语言。Ruby还具有动态载入、自动内存管理机制、迭代器、Mixin、闭包等区别于其它语言的独特特征。
Ruby on Rails(简称RoR)基于 Ruby 动态语言,是用 Ruby 语言编写的全栈Web应用框架[5]。Rails哲学中包含两大指导思想:一是不要自我重复(DRY);二是多约定,少配置。Rails 为网页程序大部分需求都提供了最好的解决方法,而且默认使用这些约定,而不用在配置文件中设置每个细节[6]。当使用 RoR 进行开发时,应用程序的所有代码以一种标准方式互相作用。它的主要特点包括全栈式的MVC框架、习惯约定优于配置、生成器、零周转时间、支架系统、更少的代码等[7]。
本系统采用RoR框架主要有两个原因:首先,RoR的开发效率高(部署容易)、功能丰富(支持Ajax等流行应用)。此外,RoR具有高效的性能,通常使用RoR开发出来的项目性能,比基于Struts+Hibernate+Spring 的Java应用要高10%~20%。
3.2 系统总体架构设计
Rails 框架严格按照MVC结构开发,MVC全名是Model View Controller,是模型(Model)-视图(View)-控制器(Controller)的缩写,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。在Rails中,Action View(视图层)负责生成用户看到并与之交互的界面,用于编写 Ruby 代码界面,包含用于.rhtml 的非常好的模板语言,将纯粹的 HTML与嵌入的Ruby代码组合;Controller(控制器层)是连接模型和视图的桥梁,是处理的核心,响应用户的请求和用户行为管理模型数据;Active Record(模型层)表示数据和业务规则,负责同数据库打交道,使MVC 模式中的各个层次无缝地协同运转[8]。Rails的执行过程一共分为6步:①浏览器发出HTTP request请求给Rails;②路由(Routing)根据规则决定派往哪一个Controller的Action;③负责处理的Controller Action操作Model数据;④Model存取数据库或进行数据处理;⑤Controller Action将得到的资料提供给View样板;⑥最后回传HTML展现给浏览器。
考虑到系统的具体代码实现中有大量SQL语句,将Rails对应的MVC三层架构中的模型层再细分为两层,分别为持久层和数据库层。表现层、业务层分别对应MVC中的View和Controller,持久层和数据库层合起来对应MVC中的Model。持久层主要用于提供数据,所有SQL语句相关都放在持久层,这样一来MVC三层结构演变为四层。该四层架构自顶向下分别为:表现层(用户界面,负责视觉和用户交互)、业务层(实现业务逻辑)、持久层(用于提供数据,包含所有SQL语句)、数据库层(用于保存数据)。
采用该四层架构的优点有:①结构简单,容易理解和开发;②适合多人开发,天然适合大多数场景的组织结构;③该四层架构中每一层不需要知道其它层的细节,层与层之间通过接口通信,每一层可以独立测试,其它层的接口可以通过模拟解决。
3.3 系统功能模块设计
提取原有教务系统中的学籍管理、教学计划管理、成绩管理和毕业生管理模块的相关功能,重新融合以完成毕业审核系统的功能设计。毕业审核系统一共包含8个模块,如图2所示,分别为系统维护、审核设置、毕业审核、成绩管理、查询统计、结果分析、换证管理和报表导出。系统维护模块具体包含账户权限设置和密码管理,方便学籍管理员对教学秘书和毕业班班主任的权限进行修改;审核设置模块具体包括毕业条件设置和毕业生资格设置两个子模块,其中毕业条件设置又包括毕业年份设置、毕业年级设置、等级考试条件设置等;毕业审核模块是整个系统的核心模块,除支持一键式审核方式外,也支持必修课、公专选学分、等级考试成绩分开审核,所有结果数据都支持Excel格式的导出。此外系统同样支持常规的查询和统计分析功能,对于结业学生的换证也提供便捷式管理。
3.4 系统运行流程设计
目前我国高校采用的审核模式主要有课程制、学分制等。课程制指学生要修完学校指定的课程,学分制则是一种以学分为计量单位衡量学生学业完成状况的管理制度,学分制中的学习年限不是固定的,而是弹性的[9],学生只要修完规定的学分即符合毕业条件。学校目前采用固定学习年限下,学分制与课程制相结合的审核方式,既要修满规定的公专选学分,又要完成指定的必修课程。本系统在功能上也提供对完全学分制审核模式的支持,可以根据实际情况进行相应模式的选择。
整个系统的执行过程如图3所示,学籍管理员先设置好毕业时间以及对应的毕业年级,接着系统进行毕业资格初审:根据当前设置的毕业年份,自动计算对应的毕业年级,剔除休退学等不在校的学生,生成全部毕业生名单;之后系统从数据库中自动调入教学计划,找到匹配的人才培养方案;然后学籍管理员进行等级考试的条件设置,并设置好毕业审核模式后,即可直接进行毕业审核。
4 应用效果
该毕业审核系统与原有系统相比有3大改进:
(1)簡化了条件设置,提升了操作效率。原教务系统毕业审核模块包含太多设置项,使界面过于复杂,而且只能按专业单独设置条件,操作低效。本系统根据实际需求对其进行了针对性优化,简化了操作方式,剔除了无用设置项,提供专业批量性设置保存以减少人工设置,提高操作效率。
(2)更详细的结果数据展示,更强的实用性。原教务系统毕业审核的结果只包含最终结论,不能显示具体结业原因,不支持一次性导出所有结业学生的详细不合格成绩。本系统按学校实际需求重新设计了结果数据展示方式,包含了详细结业原因,支持一键导出到Excel,方便毕业生完成进一步核对,大大提高了实用性。
(3)优化了审核算法,大幅提高了审核效率。以学校2016年的3 247名普高毕业生为例,用原有教务系统审核一遍需要数小时,而采用优化算法后的毕业审核系统,全部审核一遍只需56.3s。平均到单个学生的审核,原有教务系统需要9.36s,而本系统只需17.37ms,效率提升了接近539倍。
5 结语
本毕业审核系统是一套界面友好、应用灵活、操作简便、实用性强的系统。服务器对应的操作系统是Ubuntu 14.04.3 LTS,数据库为正方教务系统的Oracle 10,并使用基于B/S模式的4层系统架构,采用Ruby On Rails作为Web开发框架,具体运行环境为Rails 4.2.6,使用的编程语言有Ruby 2.3、HTML5、CSS3、JavaScript、SQL、Less。该系统已于2016年4月正式投入使用,通过对2016届毕业生资格审核的试用,效果显著,大大提升了毕业审核的效率和准确度。本系统在学分制审核模式中还有一些细化功能留待后续研发中逐渐完善,以便更全面地满足将来完全学分制模式下的各类需求。
参考文献:
[1]李波.基于VFP的毕业资格审核系统设计[J].黑龙江科技信息,2010(1):87,151.
[2]肖丽花.学分制下本科学生毕业审核管理研究[J].经营管理者,2016(10):339.
[3]倪志宏,刘红娜,齐鸿志,等.毕业资格审核系统的研究与设计[J].大众科技,2007(3):189,180.
[4]Ruby社区.Ruby程序设计语言官方网站[EB/OL].[2016-12-25].https://www.ruby-lang.org/zh_cn.
[5]王德明,刘昕.Ruby on Rails Web开发之旅[M].北京:人民邮电出版社,2008:1-2.
[6]BIGG R,BEN O D,CHEUNG F,et al.RailsGuides[EB/OL].[2016-12-20].http://guides.ruby-china.org/getting_started.html.
[7]龚昕,张浩.征服Ruby On Rails[M].北京:人民邮电出版社,2007:287-290.
[8]吕仁琦.敏捷开发及在企业级Portal中的应用[D].浙江:浙江大学,2007:12-22.
[9]陶伟.基于VFP的毕业资格审核系统设计与实现[J].安徽农业大学学报,2011(3):479-485.
(责任编辑:黄 健)