基于RestAPI的在线题库组卷系统的开发

2021-01-12 16:25李常宝
数字通信世界 2021年12期
关键词:数据表题库逻辑

李常宝

(山西警官职业学院,山西 太原 030027)

1 在线题库组卷系统与传统题库组卷系统的优劣比较

当前,常用的传统在线题库组卷系统一般有三种模式:传统Web系统,单机版系统,手工Excel操作。

传统Web系统的安全性比较差,网址中,网页中容易泄露一些试题敏感数据;单机版系统缺少网络功能,对于不同地域的用户来说,很不方便;手工Excel操作,人工操作容易出错,而且安全性也不高。

综合以上几点,本文所开发的在线题库组卷系统能够有效解决上述问题。采用Rest标准格式的WebAPI能够隐藏服务器资源路径及参数,提高安全性;采用HUSH FrameWork[1],可以有效提高开发效率;采用B/S结构,可以充分发挥网络的便捷性,不同地域的用户也可以使用。随机出题算法,也可以根据用户需求,灵活调整与设置,保证公平与合理。

2 在线题库组卷系统使用的关键技术

本论文所研究的在线题库组卷系统是基于以下技术实现:

(1)基于Rest标准格式开发的一套WebAPI。 Rest是一套互联网应用程序的API设计 规范。它的核心原则是将你的API拆分为逻辑上的资源。这些资源通过HTTP被操作(GET, POST, PUT, DELETE)。比 如:在本系统中,资源归类为试题、用户、课程等资源。各种操作归类为GET, DELETE, ADD,MODIFY等操作。举例:http://localhost:8001/ course/GetAllSt, http://localhost:8001/course/ DeleteStByNo/st001。

(2)前台使用HTML+CSS+JQuery+Smarty3。HTML+CSS+JQuery+Smarty3是当前主流的Web应用程序前端开发套装。HTML+CSS是网页最基本的组成。jQuery是一个快速、简洁的JavaScript框架,使用它可以加速开发进程。Smarty3是一个PHP模板引擎技术,它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离,使用它,可以让代码更加简洁,层次分明。

(3)后台使用基于HUSH FrameWork的PHP框架。当前Web应用程序后端开发有很多流行的框架,而本人选取的是HUSH FrameWork[2],它是一个基于ZendFramework[3]和Smarty的强大的面向企业应用的PHP框架,是一个简化版的ZendFramework,正好适用于中小型的Web应用程序。

(4)HTTP服务器使用XAMPP的Apache。XAMPP是一个基于Windows操作系统的后台软件工具集。其中的apache是用于网站发布的一个Web服务器软件。

(5)数据库服务器使用XAMPP的Mysql。本系统使用的后台数据库管理系统是mysql。

3 在线题库组卷系统的三层架构设计

所谓三层软件体系架构,就是在客户端浏览器与服务器的数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层结构,不是指物理上机器上的三层,不是简单地放置三台计算机就是三层软件体系架构,也不仅仅有浏览器才是三层软件体系架构,三层是指逻辑的三层,即使这三层都放置到一台机器上。

3.1 表现层

本系统的表现层主要由后台管理和前台管理两部分网页组成。其中,后台表示层主要由六大菜单项组成:系统概况、试题管理、组卷管理、用户管理、成绩管理、智能阅卷。

3.2 业务逻辑层

主要是处理业务方面的逻辑,如判断用户输入的内容是否符合要求,负责把用户输入的数据传输给数据访问层,并把来自数据访问层的数据返回给用户。其中:

(1)系统概况:由系统模块SystemService.php提供本系统的各项基本参数的设定。

(2)试题管理:由系统模块ShitiService.pph提供对本系统中试题的增删改查功能的设定。

(3)组卷管理:由试题模块StService.php提供本系统试题导入,组卷方式的设置、组卷、导出为word文档等功能。

(4)用户管理:由系统模块UserService.pph提供对本系统中各种角色用户的增删改查的操作以及权限的设定。

(5)成绩管理:由系统模块ScoreService.pph提供对本系统中用户成绩的操作。

(6)智能阅卷:由系统模块StaticService.pph提供对本系统中考生成绩的统计与分析操作。

3.3 数据访问层

主要是对原始数据的操作层,只有它能够直接访问数据库,对数据库进行增、删、改、查的操作,上面的两个层(表现 层和逻辑层)都不能直接访问数据库。数据访问层主要使用的是HUSH FrameWork中的数据库操作类库和XAMPP中的mysql数据库。

4 在线题库组卷系统的主要功能模块的实现

4.1 系统概况模块的功能

4.1.1 试题统计

主要是将本系统中各种类型、各种难度、各种模块的试题进行统计。

具体实现步骤如下:

(1)数据访问层:试题本身存在类型、难度、模块的区别,在数据库中相应地创建对应的数据表,而在试题表中,每道试题都有对应的外键进行管理。

(2)逻辑层:在stService.php中创建getStNu mberB ByType(),getStNumberBydifficult(),getStN umberByModule()方法相应地统计类型,难度和 模块的试题数量。

(3)表现层:创建sysinfo.html页面,在这个页面里,使用图表的方式显示数据,这样更加直观。

4.2 用户管理模块的功能

4.2.1 用户注册

新增用户的功能,具体实现步骤如下:

(1)在本系统的数据访问层中,也就是数据库EXAM中,创建用户表user。

(2)在本系统的逻辑层,新建针对用户表user的操作类userService.php。并在其中创建AddNewUser Action(),实现新增用户的功能,要求用户输入2次密码,并保持一致,而且要MD5加密后保存在数据表中。

(3)在本系统的表现层,新建registry.html,提供面向用户的图形界面接口,用于注册新用户。

4.2.2 用户登录

实现用户登录系统的功能。具体实现步骤如下:

(1)在本系统的数据访问层中,已经创建了用户表user,要求其中有示例数据。

(2)在本系统的逻辑层,在userService.php中创建LoginAction(),将用户输入的用户名和密码与数据表中的用户逐个对比,如果有相同的,则正常登录系统;如果没有相同的,则提示用户名或者密码有误。

(3)在本系统的表现层,新建login.html,提供面向用户的图形界面接口,用于实现用户登录。

4.2.3 用户查询

实现根据用户名查询用户的功能。

具体实现步骤如下:

(1)在本系统的数据访问层中,已经创建了用户表user,要求其中有示例数据。

(2)在本系统的逻辑层中,在userService.php中创建SearchUserByNameAction(),将用户输入的用户名和数据表中的用户逐个对比,如果有相同的,则将该用户信息显示到网页中;如果没有相同的,则提示无此用户。

(3)在本系统的表现层,新建searchUserBy Name.html,提供面向用户的图形界面接口,用于实现用户查找。

4.2.4 用户删除

实现根据用户名删除用户的功能。

具体实现步骤如下:

(1)在本系统的数据访问层中,已经创建了用户表user,要求其中有示例数据。

(2)在本系统的逻辑层,在userService.php 中创建DeleteUserByNameAction(),将用户输入的用户名和数据表中的用户逐个对比,如果有相同的,则将该用户从数据表中删除,并将删除成功的提示信息显示到网页中;如果没有相同的,则提示无此用户。

(3)在本系统的表现层,新建deleteUserBy Name.html,提供面向用户的图形界面接口,用于实现用户删除。

4.3 组卷管理模块的功能

4.3.1 试题导入

主要是将用户提供的Excel模板的题库导入到本系统的mysql数据库中。

具体实现步骤如下:

(1)在本系统的mysql数据库中创建数据库EXAM,创建试题表st、课程表course、系统信息表sysinfo、试卷表exampaper。

(2)在本系统的逻辑层,新建针对试题库的数据库操作类stService.php。并在其中使用PHPExcel 类库,创建导入试题的方法importStFromExcel()。

(3)在表现层,创建inport_excel_exam.html 文件,让用户浏览资源管理器,找到excel格式的试题库,实现导入。

4.3.2 组卷设置

主要是将用户提供的组卷方式提供可视化的网页操作界面,方便用户设置。

具体操作步骤如下:

在表现层新建网页exam_setting.html,创建设置所需的控件。

在逻辑层的stService.php中增加组卷设置方法exampaperAction.php。

在表现层创建exam.html,设置组卷规则,让用户根据需求选择。

4.3.3 生成和导出试卷

主要是根据组卷方式生成统一格式的Word试卷,方便用户打印。

具体操作步骤如下:

(1)在网站相应的文件夹内,设计一个统一格式的Word试卷模板,在相应试卷的试题位置设置 PHP替换变量。

(2)在逻辑层的stService.php中增加试卷生成方法outputWord.php,实现试题获取,组卷,导入模板,生成试卷的功能。

(3)在表现层,创建output_word_exam.html 文件,实现导出功能,直接将Word格式的试卷,从服务器端下载到浏览器设定的目录位置。

4.4 在线考试模块的功能

4.4.1 在线考试

主要是根据用户的在线考试需求,生成相应的在线考试试卷,并允许考生考试。

具体实现步骤如下:

(1)在本系统的数据访问层中,已经创建了试卷表exampater,其中存放用户生成的在线考试试卷。

(2)在本系统的逻辑层,新建针对试卷表的数据库操作类examonlineService.php。该类的主要功能根据用户在表现层的需求,随机抽取试题,并生成在线试卷。

(3)在表现层,创建exam_online.html文件,根据用户输入的考试名称,考试时间及试题,生成页面,并要求考生逐题回答。

4.4.2 成绩统计

主要是根据用户的在线考试情况,统计成绩。

具体实现步骤如下:

(1)在本系统的数据访问层中,创建试卷成绩表score,用于存放考生的试卷成绩。

(2)在本系统的逻辑层,新建针对成绩表的数据库操作类scoreService.php。该类的主要功能根据用户在线考试情况,计算成绩。

(3)在表现层,创建score.html文件,输出用户的成绩。

5 下一步的改进

在线题库组卷系统的设计流程和实现方法及框架还有几点需要改进。

(1)智能阅卷功能仍然不够强大,对试题的分析仍然仅限于简单的计数。下一步,需要增加图形化的统计与分析功能。

(2)试卷的出题策略,还有待于进一步完善。

猜你喜欢
数据表题库逻辑
刑事印证证明准确达成的逻辑反思
逻辑
创新的逻辑
“勾股定理”优题库
“轴对称”优题库
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
“轴对称”优题库
“整式的乘法与因式分解”优题库