一、项目介绍
基于知识图谱的中学生物学习APP系统是一个集成了现代信息技术与教育教学理念的创新学习平台。该系统通过构建生物学科的知识图谱,将复杂的生物知识点以结构化、可视化的方式呈现给学生,从而提高学习效率,增强学习兴趣。以下是对该系统的详细介绍:
基于知识图谱的中学生物学习APP系统是一个专为中学生设计的生物学习工具,它利用知识图谱技术将生物学科中的概念、原理、实验等内容进行系统化整理,形成一个清晰、全面的知识体系。通过该APP,学生可以轻松获取生物知识,理解生物现象,掌握生物规律。
二、开发环境
开发语言:Java
neo4j,SpringBoot, vue,python,mysql
协同过滤算法
————————————————
三、功能介绍
登录身份:
APP端有学生、教师、管理员三个登录身份
登录/注册:有登录和注册页,可以选择已有账号登录/注册新账号登录和注册页面输入账号和密码即可登录/注册,无需其它验证方式。
登录和注册页面可以互相跳转
知识系统知识结构每个知识点分为:名称、简单解释、网页链接三个部分知识点之间建立知识图谱的链接关系
学生端功能:
检索知识点:输入问题,在知识图谱中检索,弹出相关知识和网页链接。并能根据输入的问题推荐相关问题。点击跳转相关页;如果搜索的内容不存在,可以将内容保存在数据库中,等待教师处理最好将相关问题进行图示展示
交流论坛:可以发布讨论主题,学生之间、学生与教师可以进行交流教师端功能:
查询检索次数:统计学生每个知识点的查询次数,分析学生问题集中点
新建知识点:可以添加新的知识点的名称、解释、链接网址等;添加新知识点的同时可以与已有知识点产生链接。
知识点查询:查看每个问题提问的次数,并新建知识点的名称、简单解释、网页链接,并将其存储在数据库中
网页交流:论坛上发布问题、和学生互动
管理员端:
设置和教师端一样的功能和界面,
除此之外:1、能够查看已有用户,管理用户,
2、管理网络论坛,对帖子进行隐藏,对发布不合规内容的用户发出警告
四、核心代码
部分代码:
package com.example.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.Caiwu;
import com.example.exception.CustomException;
import com.example.service.CaiwuService;
import com.example.utils.MapWrapperUtils;
import com.example.utils.jwt.JwtUtil;
import com.example.vo.CaiwuVo;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping(value = "/caiwu")
public class CaiwuController {
@Resource
private CaiwuService caiwuService;
@PostMapping
public Result<Caiwu> add(@RequestBody CaiwuVo caiwu) {
caiwuService.add(caiwu);
return Result.success(caiwu);
}
@PostMapping("/deleteList")
public Result<Caiwu> deleteList(@RequestBody CaiwuVo caiwu) {
caiwuService.deleteList(caiwu.getList());
return Result.success();
}
@DeleteMapping("/{id}")
public Result delete(@PathVariable Long id) {
caiwuService.delete(id);
return Result.success();
}
@PutMapping
public Result update(@RequestBody CaiwuVo caiwu) {
caiwuService.update(caiwu);
return Result.success();
}
@GetMapping("/{id}")
public Result<Caiwu> detail(@PathVariable Integer id) {
Caiwu caiwu = caiwuService.findById(id);
return Result.success(caiwu);
}
@GetMapping
public Result<List<Caiwu>> all() {
return Result.success(caiwuService.list());
}
@PostMapping("/page")
public Result<CaiwuVo> page(@RequestBody CaiwuVo caiwuVo) {
return Result.success(caiwuService.findPage(caiwuVo));
}
@PostMapping("/login")
public Result login(@RequestBody Caiwu caiwu, HttpServletRequest request) {
if (StrUtil.isBlank(caiwu.getZhanghao()) || StrUtil.isBlank(caiwu.getMima())) {
throw new CustomException(ResultCode.PARAM_LOST_ERROR);
}
Caiwu login = caiwuService.login(caiwu);
// if(!login.getStatus()){
// return Result.error("1001","状态限制,无法登录系统");
// }
if(login != null) {
HashMap hashMap = new HashMap();
hashMap.put("user", login);
Map<String, Object> map = MapWrapperUtils.builder(MapWrapperUtils.KEY_USER_ID,caiwu.getId());
String token = JwtUtil.creatToken(map);
hashMap.put("token", token);
return Result.success(hashMap);
}else {
return Result.error();
}
}
@PutMapping("/updatePassword")
public Result updatePassword(@RequestBody Caiwu info, HttpServletRequest request) {
Caiwu caiwu = caiwuService.findById(info.getId());
String oldPassword = SecureUtil.md5(info.getMima());
if (!oldPassword.equals(caiwu.getMima())) {
return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);
}
info.setMima(SecureUtil.md5(info.getNewPassword()));
Caiwu caiwu1 = new Caiwu();
BeanUtils.copyProperties(info, caiwu1);
caiwuService.update(caiwu1);
return Result.success();
}
}
五、效果图