文末获取源码
开发语言:Java
使用框架:spring boot
前端技术:JavaScript、Vue 、css3
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven:apache-maven 3.8.1-bin
目录
一、前言介绍
系统采用了Java技术,将所有业务模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,开发工具选择IDEA来进行系统的设计。基本实现了大学生网络教学平台应有的主要功能模块
近年来,网络技术日新月异,互联网逐渐应用于教育领域,网络课件系统的发展已成为一个全球化的趋势。网络课件系线旨在通过网络共享资源实现帐号注期。用户管理、资料分类、课程资料、学习统计、在线考试、课程交流、论坛分类、校园资讯、新闻分类等功能。他利学生不受时间、空间的限制。进行自主学习。
本文在调查研究现代网络课程系统现状和发展趋势的基础,提出了本课件系统的研究和设计特点。采用Java技术与计算机数据库管理技术相结合的方法来实现本课件系规。在此论文中。阐述了网络课件系线的设计方案。展犹功能模块。本文探讨了本课件系线的多种测试方案,给出测试用例,表明本文提出的设计构想是具有切实的可行性的。
二、系统功能分析
按照大学生网络教学平台的角色,我划分为了学生用户管理模块、教师用户管理模块和管理员管理模块这三大部分。
2.1学生用户管理模块
(1)学生注册登录:学生注册为学生并登录大学生网络教学平台;学生对个人信息的增删改查,比如个人资料,密码修改。
(2)查看大学生网络教学平台的首页信息:大学生网络教学平台的首页信息包含了首页、交流论坛、随堂测试、公告消息、校园资讯、作业发布等。
(3)公告栏:用户在公告这一菜单下对用户提交的查看、同时也可以发布、评论。
(4)校园资讯:用户进行资讯的阅览,查看管理者发布的校园资讯信息。
(5)我的收藏:在“我的”下可以查看管理“我的收藏”信息,可以查看收藏,也可以对不喜欢的信息进行删除收藏;
(6)我的账户:当用户点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料以及登录系统的密码进行设置;
2.2教师用户管理模块
(1)系统内容:管理员可以对大学生网络教学平台中现有的论坛列表、在线考试进行增删改查。
(2)系统模块:在“系统模块”这一菜单下,可以对教师操作的课程管理、课程资料等增删改查。
2.3管理员管理模块
(1)用户管理:管理员可以对前台上注册过的学生用户信息以及教师用户进行管控,也可以对管理员信息进行管控。
(2)系统内容:管理员可以对大学生网络教学平台前台展示的课程交流、论坛分类、校园资讯、新闻分类、在线考试等进行管控。
(3)系统模块:在“系统模块”这一菜单下,可以对管理人员用户操作的课程管理、资料分类、课程资料、学习统计等进行管控。
(4)公共管理:管理员可以对大学生网络教学平台中首页显示的轮播图以及系统中的一些公告发布到系统当中,让用户及时的查看到系统信息,进行合理安排。
三、前台学生功能
3.1学生首页模块
3.2在线考试模块
3.3校园资讯模块
3.4课程资料模块
四、管理员功能模块
4.1系统首页模块
4.2教师管理模块
4.3课程交流管理模块
4.4在线考试管理模块
4.5学习统计管理模块
五、教师后台功能模块
5.1课程管理模块
5.2课程资料管理模块
六、部分核心代码
6.1用户管理关键代码
-
public String encryption(String plainText) {
-
-
String re_md5 = new String();
-
-
try {
-
-
MessageDigest md = MessageDigest.getInstance("MD5");
-
-
md.update(plainText.getBytes());
-
-
byte b[] = md.digest();
-
-
int i;
-
-
StringBuffer buf = new StringBuffer("");
-
-
for (int offset = 0; offset < b.length; offset++) {
-
-
i = b[offset];
-
-
if (i < 0)
-
-
i += 256;
-
-
if (i < 16)
-
-
buf.append("0");
-
-
buf.append(Integer.toHexString(i));
-
-
}
-
-
re_md5 = buf.toString();
-
-
} catch (Exception e) {
-
-
e.printStackTrace();
-
-
}
-
-
return re_md5;
-
-
}
6.2站点管理关键代码
-
@PostMapping(
"/add")
-
-
@Transactional
-
-
public
Map<
String,
Object>
add(
HttpServletRequest request) throws
IOException {
-
-
service.
insert(service.
readBody(request.
getReader()));
-
-
return
success(
1);
-
-
}
-
-
@Transactional
-
-
public
Map<
String,
Object>
addMap(
Map<String,Object> map){
-
-
service.
insert(map);
-
-
return
success(
1);
-
-
}
-
-
public
Map<
String,
Object>
readBody(
BufferedReader reader){
-
-
BufferedReader br =
null;
-
-
StringBuilder sb =
new
StringBuilder(
"");
-
-
try{
-
-
br = reader;
-
-
String str;
-
-
while ((str = br.
readLine()) !=
null){
-
-
sb.
append(str);
-
-
}
-
-
br.
close();
-
-
String json = sb.
toString();
-
-
return
JSON
Object.
parseObject(json,
Map.
class);
-
-
}
catch (
IOException e){
-
-
e.
printStackTrace();
-
-
}
finally{
-
-
if (
null != br){
-
-
try{
-
-
br.
close();
-
-
}
catch (
IOException e){
-
-
e.
printStackTrace();
-
-
}
-
-
}
-
-
}
-
-
return
null;
-
-
}
-
-
public
void
insert(
Map<String,Object> body){
-
-
StringBuffer sql =
new
StringBuffer(
"INSERT INTO ");
-
-
sql.
append(
"`").
append(table).
append(
"`").
append(
" (");
-
-
for (
Map.
Entry<
String,
Object>
entry:body.
entrySet()){
-
-
sql.
append(
"`"+
humpToLine(entry.
getKey())+
"`").
append(
",");
-
-
}
-
-
sql.
deleteCharAt(sql.
length()-
1);
-
-
sql.
append(
") VALUES (");
-
-
for (
Map.
Entry<
String,
Object>
entry:body.
entrySet()){
-
-
Object value = entry.
getValue();
-
-
if (value
instanceof
String){
-
-
sql.
append(
"'").
append(entry.
getValue()).
append(
"'").
append(
",");
-
-
}
else {
-
-
sql.
append(entry.
getValue()).
append(
",");
-
-
}
-
-
}
-
-
sql.
deleteCharAt(sql.
length() -
1);
-
-
sql.
append(
")");
-
-
log.
info(
"[{}] - 插入操作:{}",table,sql);
-
-
Query query =
runCountSql(sql.
toString());
-
-
query.
executeUpdate();
-
-
}
6.3系统模块管理关键代码
-
@RequestMapping(value =
"/del")
-
-
@Transactional
-
-
public
Map<
String,
Object>
del(
HttpServletRequest request) {
-
-
service.
delete(service.
readQuery(request), service.
readConfig(request));
-
-
return
success(
1);
-
-
}
-
-
@Transactional
-
-
public
void
delete(
Map<String,String> query,Map<String,String> config){
-
-
StringBuffer sql =
new
StringBuffer(
"DELETE FROM ").
append(
"`").
append(table).
append(
"`").
append(
" ");
-
-
sql.
append(
toWhereSql(query,
"0".
equals(config.
get(
FindConfig.
GROUP_BY))));
-
-
log.
info(
"[{}] - 删除操作:{}",table,sql);
-
-
Query query1 =
runCountSql(sql.
toString());
-
-
query1.
executeUpdate();
-
-
}
6.4注册关键代码
-
/
**
-
-
* 注册
-
-
* @param user
-
-
* @return
-
-
*/
-
-
@PostMapping("register")
-
-
public Map<String, Object> signUp(@RequestBody User user) {
-
-
// 查询用户
-
-
Map<String, String> query = new HashMap<>();
-
-
query.put("username",user.getUsername());
-
-
List list = service.select(query, new HashMap<>()).getResultList();
-
-
if (list.size()>0){
-
-
return error(30000, "用户已存在");
-
-
}
-
-
user.setUserId(null);
-
-
user.setPassword(service.encryption(user.getPassword()));
-
-
service.save(user);
-
-
return success(1);
-
-
}
-
-
/**
-
-
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
-
-
*/
-
-
@Id
-
-
@GeneratedValue(strategy = GenerationType.IDENTITY)
-
-
@Column(name = "user_id")
-
-
private Integer userId;
-
-
/**
-
-
* 账户状态:[
0,10](
1可用|2异常|3已冻结|4已注销)
-
-
*/
-
-
@Basic
-
-
@Column(name = "state")
-
-
private Integer state;
-
-
/**
-
-
* 所在用户组:[0,32767]决定用户身份和权限
-
-
*/
-
-
@Basic
-
-
@Column(name = "user_group")
-
-
private String userGroup;
-
-
/**
-
-
* 上次登录时间:
-
-
*/
-
-
@Basic
-
-
@Column(name = "login_time")
-
-
private Timestamp loginTime;
-
-
/**
-
-
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
-
-
*/
-
-
@Basic
-
-
@Column(name = "phone")
-
-
private String phone;
-
-
/**
-
-
* 手机认证:[
0,1](
0未认证|1审核中|2已认证)
-
-
*/
-
-
@Basic
-
-
@Column(name = "phone_state")
-
-
private Integer phoneState;
-
-
/**
-
-
* 用户名:[0,16]用户登录时所用的账户名称
-
-
*/
-
-
@Basic
-
-
@Column(name = "username")
-
-
private String username;
-
-
/**
-
-
* 昵称:[0,16]
-
-
*/
-
-
@Basic
-
-
@Column(name = "nickname")
-
-
private String nickname;
-
-
/**
-
-
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
-
-
*/
-
-
@Basic
-
-
@Column(name = "password")
-
-
private String password;
-
-
/**
-
-
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
-
-
*/
-
-
@Basic
-
-
@Column(name = "email")
-
-
private String email;
-
-
/**
-
-
* 邮箱认证:[
0,1](
0未认证|1审核中|2已认证)
-
-
*/
-
-
@Basic
-
-
@Column(name = "email_state")
-
-
private Integer emailState;
-
-
/**
-
-
* 头像地址:[0,255]
-
-
*/
-
-
@Basic
-
-
@Column(name = "avatar")
-
-
private String avatar;
-
-
/**
-
-
* 创建时间:
-
-
*/
-
-
@Basic
-
-
@Column(name = "create_time")
-
-
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-
-
private Timestamp createTime;
-
-
@Basic
-
-
@Transient
-
-
private String code;
-
-
}
6.5登录关键代码
-
/**
-
-
* 登录
-
-
* @param data
-
-
* @param httpServletRequest
-
-
* @return
-
-
*/
-
-
@PostMapping(
"login")
-
-
public
Map<
String,
Object>
login(
@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
-
-
log.
info(
"[执行登录接口]");
-
-
String username = data.
get(
"username");
-
-
String email = data.
get(
"email");
-
-
String phone = data.
get(
"phone");
-
-
String password = data.
get(
"password");
-
-
List resultList =
null;
-
-
Map<
String,
String> map =
new
HashMap<>();
-
-
if(username !=
null &&
"".
equals(username) ==
false){
-
-
map.
put(
"username", username);
-
-
resultList = service.
select(map,
new
HashMap<>()).
getResultList();
-
-
}
-
-
else
if(email !=
null &&
"".
equals(email) ==
false){
-
-
map.
put(
"email", email);
-
-
resultList = service.
select(map,
new
HashMap<>()).
getResultList();
-
-
}
-
-
else
if(phone !=
null &&
"".
equals(phone) ==
false){
-
-
map.
put(
"phone", phone);
-
-
resultList = service.
select(map,
new
HashMap<>()).
getResultList();
-
-
}
else{
-
-
return
error(
30000,
"账号或密码不能为空");
-
-
}
-
-
if (resultList ==
null || password ==
null) {
-
-
return
error(
30000,
"账号或密码不能为空");
-
-
}
-
-
//判断是否有这个用户
-
-
if (resultList.
size()<=
0){
-
-
return
error(
30000,
"用户不存在");
-
-
}
-
-
User byUsername = (
User) resultList.
get(
0);
-
-
Map<
String,
String> groupMap =
new
HashMap<>();
-
-
groupMap.
put(
"name",byUsername.
getUserGroup());
-
-
List groupList = userGroupService.
select(groupMap,
new
HashMap<>()).
getResultList();
-
-
if (groupList.
size()<
1){
-
-
return
error(
30000,
"用户组不存在");
-
-
}
-
-
UserGroup userGroup = (
UserGroup) groupList.
get(
0);
-
-
//查询用户审核状态
-
-
if (!
StringUtils.
isEmpty(userGroup.
getSourceTable())){
-
-
String sql =
"select examine_state from "+ userGroup.
getSourceTable() +
" WHERE user_id = " + byUsername.
getUserId();
-
-
String res =
String.
valueOf(service.
runCountSql(sql).
getSingleResult());
-
-
if (res==
null){
-
-
return
error(
30000,
"用户不存在");
-
-
}
-
-
if (!res.
equals(
"已通过")){
-
-
return
error(
30000,
"该用户审核未通过");
-
-
}
-
-
}
-
-
//查询用户状态
-
-
if (byUsername.
getState()!=
1){
-
-
return
error(
30000,
"用户非可用状态,不能登录");
-
-
}
-
-
String md5password = service.
encryption(password);
-
-
if (byUsername.
getPassword().
equals(md5password)) {
-
-
// 存储Token到数据库
-
-
AccessToken accessToken =
new
AccessToken();
-
-
accessToken.
setToken(
UUID.
randomUUID().
toString().
replaceAll(
"-",
""));
-
-
accessToken.
setUser_id(byUsername.
getUserId());
-
-
tokenService.
save(accessToken);
-
-
// 返回用户信息
-
-
JSON
Object user =
JSON
Object.
parseObject(
JSON
Object.
toJSONString(byUsername));
-
-
user.
put(
"token", accessToken.
getToken());
-
-
JSON
Object ret =
new
JSON
Object();
-
-
ret.
put(
"obj",user);
-
-
return
success(ret);
-
-
}
else {
-
-
return
error(
30000,
"账号或密码不正确");
-
-
}
-
-
}
转载:https://blog.csdn.net/m0_49113107/article/details/127891622