基于JSP 的精品网站设计与实现

- 首页 >> Web


摘要:该文介绍了利用JSP 技术并借助MySQL数据库设计与实现一个包含课程大纲、课程讲稿、教案、视频、学习资料等信息的管理和维护,同时提供课程题库建设和在线管理题库和学生在线测试功能的精品课程网站。

1 概述

学习课程知识是我国教育的核心,教育部为加强全国各高校教育质量而提出精品课程建设的宝贵意见,而精品课程建设的重要工作之一就是精品课程网站的建设。教师在网站中分享宝贵的教学资源,学生可以通过网络在任何地点进行课程资料学习以及课程在线考试,这种方式不仅能够很好的提高学生的自学能力而且能够节约资源。本文利用JSP以及MySQL结合本校精品课程建设需求设计实现精品课程网站。

2 系统总体结构设计

2.1 系统权限设计

网站用户分三类:管理员、教师、学生,对应三种权限。对于没有登录的用户统称为游客,游客在网站上只能浏览课程的介绍、教学大纲等基本信息。学生登录之后可以学习所有感兴趣的且课程建设教师已经将该课程发布的课程。教师登录之后可以管理自己建设的所有课程。管理员登录之后只能做网站层面的管理,包括教师、学生管理及网站配置方面等,不能进行任何课程的管理。

2.2 系统功能设计

系统实现用户登录、注册、找回密码功能;学生可以在线浏览下载课程内容,还可以进行课程在线测试;教师可以浏览下载课程内容、在线测试、上传自己所教课程内容、试题管理、试卷设置;管理员管理学生、教师、课程及重要通知。

2.2.1 登录模块

所有用户都从该模块登录系统,用户类型分为学生、教师和管理员,输入正确的用户名、密码选择相应的用户类型就可以进入系统。当用户名、密码或者用户类型错误时会有相应的提醒。

2.2.2 注册模块

该模块为学生定做,所有注册的用户都是学生类型,在注册页面填写完整了相应的信息即可完成注册,通过注册的用户名和密码进入系统并拥有学生权限。

2.2.3 找回密码模块

该模块为学生和教师设置,当学生和教师忘记自己的密码时可以通过自己的密保问题和答案找回密码。

2.2.4 查看通知模块

在系统主界面有一模块为重要通知,在该模块可以查看和下载管理员上传的重要通知的内容。

2.2.5 课程学习模块

在该模块学生和教师可以对课程进行学习,可以在该模块中看到课程简介、课程大纲、课程教案、课程讲稿、课程视频、学习资料。课程简介与课程大纲可以在线查看学习并能下载,课程讲稿、视频、学习资料需要下载或者安装插件才能进行查看。2.2.6 在线测试模块

已登录的用户就拥有在线测试权限,在每一门课程中,点击在线测试就可以进入教师设定的试卷中考试,考试完成后可以看到正确答案与考试分数,并能在个人中心中查看用户的考试信息。

2.2.7 课程管理模块

教师可以对自己所教的课程添加课程大纲、教案、讲稿、视频、学习资料;还可以对这些资料进行管理。

2.2.8 试题管理模块

教师登录后进入个人中心的试题管理,在该模块中教师可以对自己所教的所有课程进行试题添加和删除。试题分为单项选择题、多项选择题、判断题、填空题。

2.2.9 试卷设置模块

教师登录后进入个人中心的试卷管理,教师可以对自己所教的课程进行试卷设置,包括各种类型的题目题数、分数、试卷总分和考试时间。如果设置的每类类型题数超过了该课程所拥有的每类类型题数,则提示教师试卷设置有误。设置完成的试卷中的题目在题库中随机抽取,教师也可以修改试卷。2.2.10 管理员模块

管理员登录后进入后台,管理员可以对学生、教师、课程和通知进行管理。学生管理只能查找和删除学生,不能修改学生信息;教师管理可以对教师进行查询、修改、添加、删除;课程管理可以对课程查找、修改、添加、删除,管理对课程的添加和修改之管理课程的基本信息,包括课程名、教师、学时、类型、教师团队。

3 数据库设计

通过对网站功能的分析,结合数据库设计的相关原则进行数据库的逻辑设计,得出网站主要有学生、教师、管理员、课程、试题、试卷、通知七个实体,每个实体根据需要又有若干个属性,实体之间通过对应的属性建立关系。本系统中实体间的关系如图1所示。

图1 系统E-R 图

在逻辑设计基础上,结合MySQL数据库的可视化工具可以快速在其中进行数据库和表的创建。

4 关键代码设计

代码设计是系统开发的一个重要部分,代码的封装性,可重用性等对系统相当重要,具体功能的代码实现要充分利用软件工程里的代码设计思想来进行。这里只对几个关键代码进行介绍。

4.1 数据库连接设计

数据库是用来存放系统数据信息的仓库,一个系统必须依靠数据信息才能正常运行。但是程序与数据库是两个独立的个体,要实现程序应用数据信息,我们就需要在系统和数据库之间建立一个连接,这样系统才可以运用到数据库中的数据。将数据库连接及数据库的常用操作单独封装到一个package的类中,在之后的功能代码中可以直接调用类中的方法,这种方式可以避免代码重复编写。具体方法如下:

public class JdbcUtil {

protected static Connection conn = null;protected java.sql.PreparedStatement pstmt;private static String url = "jdbc:mysql://localhost:3306/Jpkc?useUnicode=true&characterEncoding=utf8";private static String user = "root";private static String password = "123456";//连接数据库

protected static Connection getConnection() throws SQL?Exception{

try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection(url, us?er, password);

} catch (ClassNotFoundException e) {…}return conn;}

//执行select操作的方法(有参数),返回结果集public static ResultSet select(String sql,Object[] params)throws Exception{

PreparedStatement pstem = getConnection().prepar?eStatement(sql);

for (int i = 0; i < params.length; i++) {pstem.setOb?ject(i+1, params[i]);}

return pstem.executeQuery();}//执行select操作的方法(无参数),返回结果集public static ResultSet select2(String sql) throws Excep?tion{

PreparedStatement pstem = getConnection().prepar?eStatement(sql);

return pstem.executeQuery();}//执行dml操作,返回int值

public static int update(String sql,Object[] params)throws Exception{

PreparedStatement pstmt = getConnection().prepar?eStatement(sql);

for (int i = 0; i < params.length; i++) {pstmt.setOb?ject(i+1, params[i]);}

return pstmt.executeUpdate();}//关闭资源

public static void free(ResultSet rs,PreparedStatement ps,Connection conn){

if(rs !=null){

34

本栏目责任编辑:代 影 网络通讯及安全

第12卷第28期 (2016年10月) Computer Knowledge and Technology电脑知识与技术try {rs.close();} catch (SQLException e) {…}}if(ps !=null){

try {…} catch (SQLException e) {…}ps =null;//使用垃圾回收}

if(conn !=null){

try {…} catch (SQLException e) {…}conn =null;}

}

4.2 在线测试设计

用户登录后点击课程可以对课程进行学习,在课程简介界面中有在线考试入口,点击“在线考试”即可进入考试,当用户没有登录时没有考试权限。进入在线考试界面后系统会自动按照试卷设置的要求从数据库中提取相关的题目并显示在页面上等待用户作答。每个测试用户是要在固定时间之内完成的,可以提前交卷,但到了规定的时间系统也要能自动提交用户的试卷。系统的倒计时通过JavaScript来实现的,具体如下:var second = <%= time%>; // 剩余秒数var toDays = function(){

var s = second % 60; // 秒var mi = (second - s) / 60 % 60; // 分钟var h = ((second - s) / 60 - mi ) / 60 % 24; // 小时return "剩余:" + h + "小时"+ mi + "分钟" + s + "秒";}//写一个定时器

window.setInterval(function(){second --;

if(second<=0)

{alert("考试时间结束");

document.forms["stutestform"].submit();}document.getElementById("showTimes").innerHTML = to?Days ();

}, 1000);

5 结语

利用JSP + MySQL,结合本校精品课程建设情况实现的精品课程网站,经过一段时间的测试和应用得到了广大师生的肯定。学生可以上课之前到该课程的网站上进行预学习,带着问题进入课堂,课后也可以在该课程的网站上进行复习并对学过的内容分知识点进行测试,了解自己的不足,以便更有针对性地复习。


站长地图