基于“编译原理”课程的在线答疑系统设计与实现
2022-01-24张友能
梅 蓉,张友能
1 研究背景与意义
近年来,随着网络信息技术迅猛发展,教育教学领域发生一系列重大变革[1].传统教学模式条件苛刻,要求教师和学生必须在学校课堂上完成教学任务和学习任务,导致师生之间沟通交流的机会较少[2].为解决这一问题,众多高校纷纷引进网络信息技术,搭建师生交流平台.而在线答疑系统作为交流平台的典型代表,能打破时间和地域限制,帮助教师和学生开展学习交流活动[3].针对课堂中不解以及疑惑的知识点,学生可通过该平台向教师和其他同学寻求帮助,而教师也可以随时随地通过该平台进行答疑,帮助学生顺利完成学习任务.本课题以“编译原理”为试验课程,设计与搭建在线答疑系统,以期完善平台功能,便于日后在高校中推广[4].
2 系统关键技术
2.1 B/S架构
“B/S架构”是Browser/Server(浏览器/服务器)架构的简称[5],是当前Web开发中广泛使用的一种技术“.C/S架构”是Client/Server(客户端/服务器)架构的简称,基于该传统架构的应用程序[6],用户需要在本地下载安装客户端,通过本地客户端和服务器进行数据交互,才能完成系统既定功能[7].例如日常使用的QQ桌面软件,需要用户下载并安装QQ客户端,然后在客户端进行登录后才可完成聊天功能.而基于B/S架构的应用程序,用户通过浏览器即可与服务器完成交互操作,如图1所示.
图1 B/S架构原理
具体实现如下:用户在浏览器中通过form表单发出操作请求(Request),该请求被Web服务器接收后,服务器会调用相应逻辑代码进行处理,处理完毕后将处理结果通过Response响应给浏览器,而后浏览器解析并渲染该响应结果,呈现给用户,这就是B/S架构的工作流程.
2.2 MVC模式
“MVC模式”是Model—View—Controller(模型—视图—控制器)模式的简称[8],其中“V”代表View(视图),是指浏览器呈现给用户的界面,用户通过视图界面与服务器进行数据交互;“M”代表Model(模型),是指后端程序的具体逻辑功能,不同请求数据经过Model模型层会得到不同处理结果,例如在Java中,将实体类和逻辑功能封装成JavaBean,而Java-Bean在MVC模型设计中是Model模型,又称“实体模型层”;“C”代表Controller(控制器),是视图和模型之间的桥梁和纽带.控制器可以将用户从视图提交的请求转发给相应模型进行业务逻辑处理,并将模型处理结果转发给相应视图[9],进行页面展示,如图2所示.基于MVC设计模式,可以将应用程序的开发分为三个模块:即页面展示、业务逻辑、转发控制.分模块开发既能提升开发效率,也可为后期维护和扩展提供方便,比如项目上线后需要额外增加功能,只需在三个模块增加相应代码即可完成[10].
图2 MVC模式原理
2.3 Servlet和JSP
“Servelt”是Server Applet的 简 称[11],狭 义的Servlet是指Java语言实现的一个接口;广义的Servlet是指所有实现了该接口的Java类[12].在Java语言中,Servlet继承HttpServlet类,并覆写doget以 及dopost等 方 法[13].而Servlet正 是上述MVC结构中的控制器,Servlet的实现遵循了服务器能识别的规则,即当用户通过浏览器发起请求时,该请求被Servlet识别并转发给相应业务逻辑,待处理完毕后,Servlet会将处理结果转发给相应展示页面.而JSP(Java Server Pages)是一种简化的Servlet,便于开发人员编写前端代码.但服务器只认识Servlet,因此需要将JSP转译成Servlet,即当浏览器向服务器请求JSP页面时,服务器接收到该请求后,调用内部JspServlet,将该JSP页面转译成相应的Servlet,随后服务器执行转译后的Servlet,并将执行结果响应给浏览器,具体如图3所示.
图3 JSP原理
3 系统模块设计
根据答疑系统基本业务需求和功能分析,将答疑系统分为三个功能模块:即学生功能模块、教师功能模块和管理员功能模块,具体如图4所示.
图4 “编译原理”在线答疑系统总体架构图
3.1 学生功能模块
学生功能模块具有如下五方面功能,具体如图5所示.
图5 学生功能模块图
(1)学生注册和登录.学生登录系统时采取实名制,未注册学生凭借学号和姓名完成注册后方可登录系统.
(2)学生成功登录系统后,可查看个人信息、修改个人信息和密码.
(3)可查看所选课程信息,包括该课程下的提问信息和回复信息.
(4)可查看自己的提问信息以及回复信息,并参与提问以及课程问题讨论环节,这也是学生角色的核心功能.
(5)可检索学校开设的课程,并根据自身兴趣爱好申请相关课程.
3.2 教师功能模块
教师功能模块具有如下五方面功能,具体如图6所示.
图6 教师功能模块图
(1)教师注册和登录.教师登录系统时采取实名制,由于系统设定,注册用户均为学生角色,因此教师完成注册后需向管理员申请修改角色权限.
(2)教师登录成功后,可查看个人信息,修改个人信息和密码.
(3)可查看未回答的问题和已回答的问题,从而解答未回答的问题,对已回答的问题进行相关补充,这是教师角色的核心功能.
(4)可查看所授课程信息,以及选课学生情况.
(5)可查看所授课程的学生申请情况,并对申请学生进行管理,也可通过学号搜索,将学生主动添加进入课程.
3.3 管理员功能模块
管理员功能模块具有如下五方面功能,具体如图7所示.
图7 管理员功能模块图
(1)管理员登录.管理员分为超级管理员和普通管理员两种,普通管理员只有获得超级管理员授权,才能拥有管理员账号.
(2)管理员登录成功后,可查看当前开设的课程信息、添加课程信息、修改课程信息,以及删除课程信息.
(3)可查看当前系统中的所有提问和回复,并全面甄别提问和回复内容,一旦发现不恰当的言论,可以进行删帖操作.
(4)可修改学生角色、教师角色,以及普通管理员角色的权限,系统默认注册均为学生角色,如有需要可以向管理员提出修改角色权限的申请.
(5)超级管理员可查看所有管理员信息,并对这些信息进行增、删、改操作,普通管理员只能查看个人信息,无权查看系统中其他管理员信息.
4 数据库表设计
根据项目实际需求和部署规模,需要为系统设计数据库以存放用户数据.该系统共需建立如下6张表:用户信息表、课程信息表、申请信息表、提问信息表、回复信息表和课程表.
4.1 用户信息表
用户信息表实体内容包含以下字段:uid(用户编号)、uname(用户姓名)、upwd(用户密码)、ugender(用户性别)、uemail(用户电子邮箱)、urole(用户角色)、uregdate(用户注册日期)和ulastlogin(用户最后登录日期).其中uid为主键约束.
4.2 课程信息表
课程信息表实体内容包含以下字段:cid(课程编号)、cname(课程名字)和cdetail(课程描述).其中cid为主键约束.
4.3 申请信息表
申请信息表实体内容包含以下字段:aid(申请编号)、uid(用户编号)、cid(申请课程编号)、areason(申请原因)、astatus(申请状态)和aflag(申请处理标志).其中aid为主键约束,uid、cid为外键约束.
4.4 提问信息表
提问信息表实体内容包含以下字段:qid(提问编号)、uid(提问人编号)、cid(提问所属课程编号)、qtitle(提问标题)、qcontent(提问内容)和qdate(提问日期).其中qid为主键约束,uid、cid为外键约束.
4.5 回复信息表
回复信息表实体内容包含以下字段:rid(回复编号)、qid(回复对应提问编号)、uid(回复人编号)、rtitle(回复标题)、rcontent(回复内容)和rdate(回复日期).其中rid为主键约束,qid、uid为外键约束.
4.6 课程表
课程表负责维护用户和课程之间的关系,一位用户可以选择多门课程,而一门课程可以对应多位用户,课程表负责记录用户和课程之间的信息.课程表实体内容包含以下字段:ucid(课程表编号)、uid(用户编号)和cid(课程编号).其中ucid为主键约束,uid、cid为外键约束.
4.7 数据库表的逻辑关系
上述6张数据库表通过主键约束和外键约束确定表与表之间的联系,具体如图8所示.其中主键约束用来唯一标识数据库表中的每条记录,外键约束使主表与从表之间产生联系,从而保证数据的完整性和正确性.例如在提问信息表中,提问编号作为主键唯一标识每条提问记录,而提问人编号作为外键,用来关联用户表中的详细信息;课程编号作为外键,用来关联课程信息表中的详细信息.如此关联后,根据提问信息表编号,可查询另外2张表的详细信息,同时即便修改另外2张表(主表)中的记录信息也不会影响提问信息表(从表)数据的完整性和正确性.
图8 数据表逻辑关联图
5 系统详细设计与实现
整体系统采用MVC分层模式,即系统分为Model模型 层、View视图 层、Controller控 制器层[14].Model层负责建立相应的实体数据库模型,并与数据库完成数据交互(包括数据的增、删、改、查)[15].该系统使用JDBC(Java Data-Base Connection)技术完成客户端与数据库的数据交互,并将JavaBean实体类与数据库表一一对应,方便数据的读取和流转.为提高客户端与数据库的交互效率,该系统采用数据库连接池技术,即在数据库连接池中预先存放系统所需连接对象,在数据库连接时,直接从连接池中获取连接对象.当客户端与数据库完成数据交互后,将相应连接对象返回到连接池中.数据库连接池技术可实现连接对象的重复利用,减少不必要的连接操作,提高客户端与数据库的交互效率,是JVM优化的重要环节.View视图层在该系统中由JSP页面构成,当用户访问该系统时,服务器将初始JSP页面响应给浏览器,用户通过该页面完成与服务器的交互操作,包括登录和注册,为后续业务操作提供便利.在JSP页面中可以包含HTML语言、CSS脚本、JavaScript脚本和Java语言,服务器通过特殊语言标志符将JSP页面转译成Servlet,进而在服务器上运行.Controller控制器在该系统中特指Servlet,当用户通过浏览器向服务器发起请求后,服务器会根据请求类别转发给相应的Servlet,Servlet获取Request请求数据后,调用Model模型层的逻辑代码处理该请求,将业务逻辑的处理结果以Response的形式返回给JSP页面,并将处理结果动态写入JSP页面的HTML标签中,以供浏览器解析渲染,最终呈现给用户[16].
5.1 学生功能模块
该部分介绍系统注册登录功能,并着重介绍学生功能模块的核心,即课程提问和讨论功能.
(1)系统的登录和注册.系统首页提供用户登录入口(图9),已注册的用户可直接凭借账号和密码进行登录,未注册的用户可点击系统首页的注册链接进行注册.该部分采用JavaScript进行表单校验,针对表单中不合法的输入,比如账号或者密码为空,以及账号或密码不符合规范等情况,直接给用户反馈表单数据不合法的信息,不会将表单数据提交给后端逻辑代码[17].此设计既能提高系统与用户的交互性,也可减轻数据库负担.如果用户输入的表单信息符合规范,才会通过form表单将账号和密码提供给相应的Servlet,Servlet调用后端登录校验逻辑判断账号和密码是否与数据库中的记录匹配,若信息匹配将继续判断用户角色权限,系统根据用户角色权限值跳转到不同角色的主页main;若信息不匹配,提示登录失败信息,并将页面重新跳转至登录页面[18].
图9 在线答疑系统登录界面
(2)学生的提问功能.如图10所示,当学生登录成功后,在页面左侧导航栏内可选择相应操作.点击课程提问,可针对当前课程向教师或其他学生发起提问.为便于后续功能扩展,如增加课程,学生可选择提问的课程,将提问的关键词、标题,以及提问内容填入form表单,提交给相应课程的授课教师.
图10 学生提问界面
(3)学生的讨论功能.如图11所示,学生在左侧导航栏点击“我要讨论”按钮,即可查看当前课程的所有提问信息,选择感兴趣的提问,即可参与讨论.在参与讨论的界面,用户可针对当前提问信息发表自己的看法和观点,点击“参与讨论”按钮,即可将回答的信息提交给相应用户.
图11 学生讨论界面
5.2 教师功能模块
该部分主要介绍教师用户如何查看课程中未回答的问题、处理学生课程申请,以及查看参与当前课程的学生信息.
(1)查看课程中未回答的问题.教师用户进入系统主页后,在左侧导航栏点击“未回答问题”按钮,即可查看当前所授课程中未回答的问题.在该页面中,教师可查看学生提问、学生讨论情况,并对提问内容进行补充回复,帮助学生解决困惑.
(2)处理学生课程申请.教师用户点击左侧导航栏中的“课程申请”按钮,即可查看当前课程中的学生申请情况,教师可根据学生课程申请理由和教学需要,对课程申请进行同意操作和拒绝操作,具体页面如图12所示.
图12 教师课程申请界面
5.3 管理员功能模块
管理员分为超级管理员和普通管理员,二者的差别在于:超级管理员可以创建和删除普通管理员,同时可查看当前系统中包括管理员在内的所有成员.管理员的功能包括:课程管理、提问和回复内容管理,以及用户管理.其中,在课程管理模块,管理员可以修改当前开设的课程信息,也可添加新开设的课程;在提问和回复内容管理模块,管理员可查看师生互动情况,警告并删除其中不恰当的言论;在用户管理模块,管理员可以对学生、教师、普通管理员进行授权管理,处理用户注册请求,具体如图13所示.
图13 管理员用户管理界面
6 结语
自21世纪以来,信息技术迅猛发展,网络教学模式逐渐取代传统教学模式.而在线答疑系统作为现代网络教学模式的重要环节之一,在师生互动环节中发挥着至关重要的作用.该系统可打破时空限制,随时随地为师生服务,既能解答学生在知识方面的疑惑,又能帮助教师高效利用碎片化时间,提高课程学习效率以及授课效率,可以说是现代网络教学模式的重要辅助平台.在调研众多高校现有授课模式的基础上,开发设计在线答疑系统,并以编译原理课程作为试验课程.根据角色功能,该系统分为学生、教师和管理员三种角色,学生可以在平台发起提问;教师可根据学生提问进行反馈;管理员可管理师生行为,并监控师生互动内容.