Design and Implementation of the High-Quality Course Website Based on Java and MySQL ()
1. 引言
1.1. 背景
近年来,教育信息化发展十分迅猛,人们的教育观念、教育手段、学习方法、学习渠道等等都发生了重大的变化。远程教育这一基于日益发达的计算机技术和早已大规模普及的通讯技术的现代教育方式,正以其自身强大优势,成为现在教育的一个亮点和重点。在传统的教育教学模式中,授课老师通过面授,直接进行教学活动,学生只能在课堂上学习知识。然而教学活动不仅受到了时间的限制同时也受到了空间束缚,师生之间不能及时的进行交流、问题得不到及时的解决,甚至还存在教育资源紧缺不能共享等问题。得益于信息技术的支持与发展及问题急于解决的紧迫性,在线学习类系统的开发与实现成为了必要趋势。
1.2. 国内外研究概况及发展趋势
在国外,网络教学的发展较国内更加迅速,除了普及广泛外,已经向更高层次的应用和标准化方面发展。信息化的网络教学和学习方式已经成为了一种趋势,并即将成为教学教育活动的主流。所有的教学活动和教育管理都是通过网络教学技术实现的,网络教学技术几乎成为了广大学员获取知识和相关技能的主要途径。
在国内,关于教学信息化我国已有一些网络教学平台,如:软酷网、超星尔雅、网易公开课等,它们都为我们提供了良好的学习平台。如今,网络已基本普及到全国各大中小城市,而网络教育资源仍不是很丰富,因此在未来,我国的网上教育平台的建设将有很大的前景。要提高我国网络教学水平,必须注重网络教育的教学设计,提供更多在线教育平台,加强适应个性化教学,加强资源库的标准化建设。
1.3. 研究意义
由于现有教学资源的复杂多样,各种不同属性教学资源纷繁复杂,不易于管理与利用,为了更加有效地建设教学资源库,使得各项教育资源可以得到充分的利用和有效地管理,增强师生之间的交流,提高学生的自我学习能力,在线教育系统的探索与研究十分必要。
基于Java和MySQL的精品课程网站,其主要目的是为了提供一个全新的学习、教育、交流平台。它服务于不同层次的需求者和使用者。用户可反复观看视频进行深入学习;学生可以通过登录网站进行相应课程的学习,可以在线进行测试,且能立即查看分数与错题,及时复习并提高学习效率,还可以在网上进行留言提问,跟大家一起交流。教师可以让同学们直接在网上提交作业,还可以通过该平台直接获取作业的提交情况。
这样的网站为教师教学、学生自学及普通浏览的游客提供了优质、高效的服务。在提高教育质量、扩大教育规模、缓解教育资源紧张等方面存在重大意义。
2. 需求分析
在传统的学习过程中很多学生都反应枯燥无味,课堂上学习的知识很快就会忘记,问题也得不到及时的解决。同学们总是推迟提交作业,学生越多,老师越难统计作业提交情况。因此,基于Java和MySQL的精品课程网站应帮助用户提高学习兴趣,实现高效率的教育教学。使用上满足了教育资源共享、在线测试、在线提交作业等各项需求,实现了教师和学生之间的信息交流;管理上,管理员可发布公告方便于让登入网站的用户及时了解到公布的重要信息,也可以对用户帐号进行相应管理,操作简单便于维护。
综上所述,为满足所需人群的要求,可将角色分为普通游客、学生、教师、管理员四种,不同的角色有不同的使用权限。普通游客只能浏览网站中的视频,学生用户则还可以在此平台进行测试、下载资料、留言讨论、提交作业等,教师用户可在线出题、上传资料等,管理员可以对用户进行管理,也可以发布公告。
技术所需:基于java和mysql,使用jsp、servlet、ajax、jstl、jquery等开源技术进行实现。
3. 系统功能
3.1. 系统功能模块设计
该课程精品网站平台的功能模块如下图1,该图展示了平台的所有功能模块,包括有精品课程网站和后台管理系统两个一级模块。一级模块下包含了九个二级模块,最后二级模块之下包含十八个三级模块。其中首页包含登陆、注册、注销以及修改密码;学生可在课程中心和资料下载进行视频观看和上传资料;教师也可在出题模块进行增加或删减题目,并在作业模块实现与学生互动。用户可在平台上进入到不同的模块中进行自身需求的操作,使体验更加简便。
用户注册模块:普通游客只能浏览首页或进入课程中心观看视,但可通过此功能注册成为本站的学生用户,获得更多使用权限。
用户登录模块:登录用户可进入其他内置页面,通过判断角色来显示相应的功能。管理员登录与其他用户登录页面分开。
在线测试模块:只有学生用户可进入,实现试卷查询(根据试卷关键字查询试卷)、生成试卷(题库中随机抽取题目自动生成试卷)、试题批改(提交答案后显示相应分数)等功能。
师生互动模块:实现主题查询(根据主题关键字查询留言)、科目查询(根据科目类型查询留言)、创建留言、回复留言等功能。
今日作业模块:学生用户进入模块,实现作业查询(根据科目及作业布置日期查询提交过的作业)、作业下载(下载之前已提交过的作业)、提交作业(选择完科目、任课教师、布置日期信息后上传作业文档)等功能。教师用户进入模块,显示最近一次布置日期的作业提交情况(展示科目、提交人数、未提交人姓名),可根据科目及具体布置日期查询详细作业提交情况,可下载相应的作业。
图1. 功能结构模块图
资料下载模块:学生用户进入模块,实现资料查询(根据关键词查询相应资料)、资料下载等功能。教师用户进入模块,实现资料查询、资料下载、我的上传(显示本人已上传文件列表,可进行删除或下载操作)、上传文件等功能。
在线出题模块:只有教师用户可进入,实现题目查询(根据关键字查询自己所出的题目)、题目修改、题目删除、题目添加功能 [1]。
3.2. 数据库结构设计
3.2.1. 关系模型
用户表(用户id、帐号、密码、姓名、科目、学校、角色、删除标识、注册时间)
题目表(题目id、科目、题目标题、选项A、选项B、选项C、选项D、正确答案、困难度、更新时间、用户id)
用户答案表(答案id、用户id、试卷id、用户答案、创建时间)
试卷表(试卷id、试卷题目、题目答案、用户id、科目、困难度、创建时间)
作业表(作业id、科目、布置时间、提交时间、用户id、接受人姓名、作业文件名字)
留言表(留言id、留言主题、科目、内容、用户id、创建时间)
回复表(回复id、留言id、用户id、回复内容、回复时间)
上传表(上传id、用户id、科目、标题、大小、存储路径、上传时间、文件后缀、删除标记
3.2.2. 数据字典
首先要使用数据字典,先得明白其定义,也就是可以在数据库中一个字段下存在多个值的情况。大体的思路是在表格上查询所有数据,把它存放在一个集合中(hashmap以键值对的形式存放),贯穿系统的所有数据项,例如用户id、账号、密码、姓名等,在这同时,也需要保证数据的录入安全,所以在使用的时候,存放的事数据项的编号,而不是数据项的值。具体见表1~8 [2]。
表1. 用户表(user)
表2. 题目表(topic)
表3. 上传表(upload)
表4. 试卷表(test)
表5. 作业表(homework)
表6. 用户答案表(answer)
表7. 留言表(bbs)
表8. 回复表(reply)
3.3. 模块流程图
3.3.1. 登录与注册
模块设计是指在概要设计的基础上,找出各模块相互之间的关系。本模块管理平台的关系模式。
首先是输入判断,相当于在登陆模块,要求用户输入用户名、密码或者是需要注销。如注册,需要获取信息,插入用户表。将信息存入session,最后跳转到首页。
登陆模块分为管理员和普通用户,在输入账号密码后,获取用户信息,再判断身份,两者都需要判断是否存在,如存在,存入session,然后跳转到首页。如需要注销,则删除session并刷新界面(如图2所示)。
代码可做参考:
Login.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class Login extends JFrame implements ActionListener
{ Container cp=null;
JFrame f=null;
JButt
3.3.2. 题目管理
题目管理系统同上述表达一样,都需要在输入信息后获取,判断修改、添加还是删除题目(如图3所示)。
3.3.3. 师生互动
如图4所示,考虑到学生在提交作业或完成作业过程中遇到的困难,此平台支持学生在平台上与老师互动,也提供专门的互动平台。判断参数为addbbs或addreply,系统自动分析判断条件,获取不同的信息,使师生互动操作更加明了。
图2. 登录与注册
图3. 题目管理
图4. 师生互动
老师可以通过平台上传测试,如图5所示,为方便老师在平台上添加测试题,通过上传的信息判断题目是否符合条件,根据不同条件进行分配:
3.3.4. 上传界面
用户想要上传信息可通过我的上传界面上传相关信息,系统会判断信息类型,如图6所示。
图5. 测试题添加与判断
图6. 信息上传
3.3.5. 收取作业
老师可在作业截止日期前收齐作业,查询未交作业人数以及姓名,如图7所示。
图7. 作业收取
4. 详细设计
4.1. 任务概述
基于Java和MySQL的精品课程网站设计与实现由两位同学共同完成。程序的实现主要可分为数据库设计、前端页面设计、后台模块数据提取、前后台数据交互四个部分。其中数据库设计及前后台数据交互由两人共同讨论完成,本人则主要负责后台代码块的实现,从数据库中提取所需数据 [3]。
4.2. 开发环境
操作系统:Windows 10
开发平台:Intellij Idea
数据库:MySQL
Java Web服务器:apache-tomcat-7
Java 语言的软件开发工具包:jdk1.8
4.3. 代码模式结构
4.3.1. 业务逻辑层(Biz)
1) IBbsBiz(留言业务逻辑接口类):
创建新帖:
public boolean createBbs(String title, String subject, String content, int u_id);
查询单条留言内容:
public Bbs selDanBbs(int bbs_id);
添加回复:
public boolean addReply(int u_id,int bbs_id,String content);
查询多条留言:
public List
selBbs(String sql);
查询留言下所有回复:
public List
selReply(int bbs_id);
查询留言个数:
public int countBbs(String sql);
2) IHomeWorkBiz(作业业务逻辑接口类):
查询作业列表:
public List
selHomeWork(String sql);
提交作业:
public boolean addHomeWork(String subject, String give_time, int u_id,
String consignee, String filename);
提交作业人数:
public int countCollect(String sql);
未提交人列表:
public List
weiUsers(String sql);
3) IPostBiz(公告业务逻辑接口类):
发布公告:
public boolean fbPost(String title, String content);
删除公告:
public boolean delPost(int post_id);
查询公告列表:
public List
selPost(String sql);
查询单个公告详情:
public Post selPost(int post_id);
4) ITestBiz(试卷业务逻辑接口类):
查询试卷科目:
public List
selTopic(String sql);
生成试卷,存入试卷表:
public boolean createTest(String test_id,int u_id,List
topicLists);
将我的答案插入答案表:
public boolean addAnswer(String test_id,String myanswer,int u_id);
查找单个试卷对象:
public Test selDanTest(String sql);
5) ITopicBiz(公告业务逻辑接口类):
添加题目:
public boolean addTopic(String subject, String title, String optiona,
String optionb, String optionc, String optiond, String answer,
String difficulty, int u_id);
删除题目:
public boolean delTopic(int t_id);
修改题目:
public boolean updateTopic(int t_id, String subject, String title,
String optiona, String optionb, String optionc, String optiond,
String answer, String difficulty);
根据题目关键字,查询题目:
public List
selTopic(String sql,String title);
查询所有题目:
public List
selTopic(String sql,int u_id,int pageIndex,int pageSize);
查询题目个数:
public int countTopic(String sql);
按查询单个题目:
public Topic selOneTopic(String sql,int t_id);
6) IUpDownBiz(上传下载业务逻辑接口类):
上传文件:
public boolean upFile(String subject, String title, String path,
String ext, int u_id, String size);
查询所有文件:
public List
selUpload(String sql);
删除文件:
public boolean delUpload(int upload_id);
查询文件个数:
public int countUpload(String sql);
7) IUserBiz(用户业务逻辑接口类):
用户注册:
public boolean register(String userName, String password, String name, String school);
根据帐号密码查询用户,返回用户(判断登录):
public User login(String sql);
添加教师用户:
public boolean addTeacher(String username, String password, String name, String school, String subject);
根据查询单个用户:
public User selUser(String sql);
冻结用户:
public boolean delUser(String userName, int d);
初始化密码:
public boolean cshPassword(String userName);
查询帐号是否已存在:
public boolean cxzh(String userName);
修改密码:
public boolean updatepsw(String userName, String yuan,String xinpsw) [4].
4.3.2. 数据访问层(Dao)
4.3.3. 数据实体层(Model)
4.3.4. 控制层(Servlet)
4.3.5. 过滤器(Filter)
4.3.6. 工具包(Util)
获得连接:
public static Connection getConn();
关闭链接释放资源:
private static void close(ResultSet rs, PreparedStatement pst, Connection conn);
增删改:
public static int update(String sql, Object…objs);
查询结果为一条:
public static
T query(String sql,Class
t,Object…objs);
查询一个字段的数据:
public static Object selOne(String sql,Object…objs);
查询数量:
public static int count(String sql,Object…objs);
查询结果为多条:
public static
List
queryList(String sql,Class
t,Object…objs);
resultset转换MAP:
private static Map
rsToMap(ResultSet rs);
把Map转化为bean对象:
private static
T mapToBean(Class
t,Map
map);
4.4. 模块功能的实现
登录与注册
1) 用户注册:
String userName=request.getParameter("userName");
String school=request.getParameter("school");
String name=request.getParameter("name");
String password=request.getParameter("psd");
if(ub.register(userName, password, name, school))
{u.setUserName(userName);
u.setPassword(password);
u.setSchool(school);
u.setName(name);
u.setRole(3);
session.setAttribute("user", u);//把名字存入session
response.sendRedirect("/course/index.jsp");(6)
}
2) 用户登录:
int role=Integer.parseInt(request.getParameter("role"));
String userName=request.getParameter("userName");
String password=request.getParameter("password");
if(role==1){//管理员登录
String sql="select * from user where userName='"+userName+"' and password='"+password+"' and role=1";
u =ub.login(sql);//查找用户,返回用户信息
if(u!=null){//存在此用户
session.setAttribute("user", u);//用户信息存于session
}
response.sendRedirect("/course/backindex.jsp");
}else{//不是管理员
String sql="select * from user where userName='"+userName+"' and password='"+password+"' and role!=1 and del=1";
u =ub.login(sql);//查找用户,返回用户信息
if(u!=null){//存在此用户
session.setAttribute("user", u);//用户信息存于session
}
response.sendRedirect("/course/index.jsp");
}
3) 检测帐号:
if("zh".equals(p)){//检测帐号是否可用
String userName=request.getParameter("userName");
if(ub.cxzh(userName)){//帐号可用
out.print(1);
}else{
out.print(0);
}
out.flush();
out.close();
}else if("cslogin".equals(p)){//超时后登录
String userName=request.getParameter("userName");
String password=request.getParameter("password");
String sql="select * from user where userName='"+userName+"' and password ='"+password+"'";
u=ub.login(sql);
if(u!=null){
session.setAttribute("user", u);//用户信息存于session
}
out.flush();
out.close();
}
4.5. 系统界面展示
管理员和普通用户使用的首页是不同的,登陆成功后通过判断用户的账号类型来展示不一样的信息 [5]。同时也可以在登录系统上查看到网页不同的信息,如图8、图9所示。
图8. 用户登录界面
图9. 管理员登录界面
5. 结论
基于Java和MySQL的精品课程网站设计与实现,它是根据当下教育资源紧缺和广大教育需求而分析设计的,初步确定了网站系统具有的解决当下教务模式与需求之间的矛盾的功能,包括数据库设计、网页界面设计、Web应用层设计等,是一个具有实际应用意义和使用价值的资源共享网站。
写代码之前要设计好文案,操作步骤、流程图、数据结构等都要想好,命名规范,尽量多的思考需要什么,将整个流程都构思好。编写时思路要清晰,尽量避免重复代码,多加注释,等等。
平台有很好的权限管理方案,让平台的权限分配十分合理,同时也确保了平台的安全性 [6]。
基于Java和MySQL的精品课程网站设计与实现
摘要:基于Java和MySQL的精品课程网站是以JSP、Servlet和Java Bean为基础,采用MySQL数据库及Tomcat服务器技术进行网站设计和开发。本文首先对相关的Java Web成功案例进行学习,然后根据师生的使用需求,对精品课程网进行详细的系统需求分析,最后根据分析结果设计功能、处理逻辑、编写模块代码。
关键词:Java Web,课程网,在线学习