基于javaweb的SpringBoot在线答疑系统(java+springboot+mybaits+vue+elementui+mysql)

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可

❗没学过node.js的不要搞前后端分离项目

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

241524092608

251524092608

261524092608

271524092608

291524092608

301524092608

311524092608

321524092608

331524092608

基于javaweb的SpringBoot在线答疑系统(java+springboot+mybaits+vue+elementui+mysql)

项目介绍

基于Springboot + vue实现的在线答疑系统

本系统包含学生、教师、管理员三个角色。

学生角色:

1.注册、登录功能:学生可以通过系统完成注册和登录操作,进入学生专属界面。

2.个人信息修改功能:学生可以查看和修改自己的个人信息,包括姓名、联系方式等。

3.问题发布功能:学生可以在线发布学习中遇到的问题,并等待教师或其他学生的解答。

4.查看疑难解答功能:学生可以查看针对复杂问题的深度讨论和解答,加深对知识点的理解。

5.参与考试功能:学生可以在规定的时间内完成在线考试,系统自动评分并给出反馈。

6.错题本管理功能:系统会自动记录学生的错题,并提供相应的解析和练习,帮助学生巩固知识点。

教师角色:

1.登录功能:教师可以通过系统登录,进入教师专属界面。

2.查看学生信息功能:教师可以查看学生的学习进度、成绩等信息,了解学生的学习状况。

3.发布课程资料功能:教师可以发布相关的课程资料,供学生下载和学习。

4.解答问题功能:教师可以查看学生发布的问题,并提供解答或引导,帮助学生解决问题。

5.参与疑难解答功能:对于复杂问题,教师可以参与深度讨论和解答,提供专业的指导。

6.组织考试功能:教师可以设置在线考试,包括试卷内容、考试时间等,系统自动完成考试的组织和评分。

7.查看错题本功能:教师可以查看学生的错题本,了解学生的薄弱环节,为后续教学提供参考。

管理员角色:

登录、学生管理、教师管理、问题发布管理、疑难解答管理、系统管理等

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;

3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;

4.数据库:MySql 5.7/8.0版本均可;

5.是否Maven项目:是;

技术栈

后端:SpringBoot+Mybaits

前端:Vue+elementui

使用说明

项目运行:

  1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;

  2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;

  3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;

4.运行项目,在浏览器中输入地址:

地址:http://localhost:8080/springboot65f25/admin/dist/index.html

管理员账户:abo 密码:abo

学生账户:学生1 密码:123456

教师账户:教师1 密码:123456

文档介绍展示:

 试卷管理展示页面:

 系统登录展示页面:

试题管理展示页面:

学生管理展示页面:

教师管理展示页面:

问题发布管理展示页面:

考试管理展示页面:

疑难解答管理展示页面: 

登录管理控制层:

@Controller

@RequestMapping(value=”/Member”)

public class MemberCotroller {

@Autowired

private MemberService memberService;

//1根据id查询会员信息

@RequestMapping(“/findMemberById”)

public @ResponseBody Member findMemberById(Model model,String m_id){

System.out.println(“===============findMemberById=================”);

System.out.println(“m_id:”+m_id);

int id=Integer.parseInt(m_id);

Member member=memberService.findMemberById(id);

System.out.println(“member:”+member.getM_name());

//model.addAttribute(“member”, member);

return member;

//2查询所有会员信息

@RequestMapping(“/findAllMember”)

public String findAllMember(Model model,String type,Integer pageNo,Integer pageSize){

System.out.println(“===========findAllMember==============”);

System.out.println(“传到type的值:”+type);

PagedResult pagedResult= memberService.findAllMember(pageNo, pageSize);

model.addAttribute(“pagedResult”, pagedResult);

List memberList=pagedResult.getDataList();

System.out.println(“当前页码:”+pageNo);

System.out.println(“条数:”+pageSize);

System.out.println(“总页面数目:”+pagedResult.getPages());

model.addAttribute(“memberList”, memberList);

if(type.equals(“show1”)){

return “jsp/sonpage/member/memberson/findMember”;

if(type.equals(“show2”)){

return “jsp/sonpage/member/memberson/delMember”;

return “”;

//3根据名字模糊查询

@RequestMapping(value =”/findLikeNameMember”)

public String findLikeNameMember(String m_id, String m_name, Model model,String type){

System.out.println(“===========模糊查询会员信息============”);

System.out.println(“m_id:”+m_id);

System.out.println(“m_name:”+m_name);

System.out.println(“type:”+type);

//String m_id=id;

//String m_name=name;

Map map = new HashMap();

map.put(“m_id”, m_id);

map.put(“m_name”, m_name);

List memberList=memberService.findLikeNameMember(map);

model.addAttribute(“memberList”, memberList);

if (type.equals(“show1”)) {

System.out.println(“===========从查询会员信息页面===========”);

if((“”).equals(m_id) && (“”).equals(m_name)){

System.out.println(“1没有传值”);

return “jsp/sonpage/member/memberson/findMember”;

System.out.println(“===================跳回查询页面======================”);

return “jsp/sonpage/member/memberson/findMember”;

if (type.equals(“show2”)) {

System.out.println(“===========从删除会员信息品页面===========”);

if((“”).equals(m_id) && (“”).equals(m_name)){

System.out.println(“2没有传值”);

return “forward:findAllMember.action?type?type=show”;

System.out.println(“===================跳回删除页面======================”);

return “jsp/sonpage/member/memberson/delMember”;

return “”;

//4添加会员

@RequestMapping(“/addMember”)

public String addMember(Member member,String type){

System.out.println(“===============addMember=================”);

if(member.getM_id() != 0) {

Member temp = memberService.findMemberByNum(member.getM_id()+””);

temp.setC_id(member.getC_id());

if(!StringUtils.isEmpty(member.getM_qq())) {

temp.setM_qq(member.getM_qq());

if(!StringUtils.isEmpty(member.getM_tel())) {

temp.setM_tel(member.getM_tel());

memberService.updateMember(temp);

}else{

memberService.addMember(member);

if(type.equals(“show3”)){

return “forward:/Community/findAllCommunity.action?type”;

}else if(type.equals(“show”)){

return “jsp/sonpage/member/memberson/addMember”;

}else if(type.equals(“show1”)){

return “jsp/sonpage/regist”;

return “”;

//4添加会员

@RequestMapping(“/addMember1”)

public @ResponseBody boolean addMember1(String m_num,String m_pwd,String m_name,String m_sex,String m_class){

System.out.println(“===============addMember=================”);

Member member=new Member();

member.setM_num(m_num);

member.setM_pwd(m_pwd);

member.setM_name(m_name);

member.setM_sex(m_sex);

member.setM_class(m_class);

member.setC_id(1);

member.setR_id(1);

memberService.addMember(member);

return true;

//5根据id删除会员

@RequestMapping(“/delMember”)

public String delMember(String m_id,String type){

System.out.println(“=============delMember==================”);

System.out.println(“m_id:”+m_id);

System.out.println(“type:”+type);

int id=Integer.parseInt(m_id);

memberService.delMember(id);

return “redirect:findAllMember.action?type=show2”;

//6修改会员信息

@RequestMapping(“/updateMember”)

public String updateMember(Member member){

System.out.println(“==========修改会员信息==========”);

memberService.updateMember(member);

return “redirect:findAllMember.action?type=show1”;

//7批量删除

@RequestMapping(“/delItem”)

public @ResponseBody boolean delItem(Model model, String ids) {

System.out.println(“==========批量删除会员==========”);

System.out.println(“ids:”+ids);

// 用数组接收获取的选中集合

String[] str = ids.split(“_”);

for (int i = 0; i < str.length; i++) {

int id = Integer.parseInt(str[i]);

memberService.delMember(id);

System.out.println(“删除的方法执行了”);

//return “forward:findAllMember.action?type=show2”;

return true;

//8登陆(根据学号查找)

@RequestMapping(“/findMemberByNum”)

public @ResponseBody boolean findMemberByNum(HttpSession session,String num,String pwd){

System.out.println(“===============findMemberByNum=================”);

System.out.println(“num:”+num);

Subject subject = SecurityUtils.getSubject();

subject.getSession().setAttribute(“userType”, “Member”);

// 保存至令牌环中,供MyRealm做验证

UsernamePasswordToken token = new UsernamePasswordToken(num, pwd);

// 保存用户类型供MyRealm获取

try {

// 跳转到MyRealm 做登录用户名和密码验证

subject.login(token);

session.setAttribute(“num”, num);

session.setAttribute(“role”, “3”);

System.out.println(“MemberCotroller–>>findMemberByNum–>>登录成功”);

return true;

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

System.out.println(“MemberCotroller–>>findMemberByNum–>>登录失败”);

return false;

// Member member=memberService.findMemberByNum(num);

// System.out.println(“manager:”+member.getM_pwd());

// String m_pwd=member.getM_pwd();

// session.setAttribute(“num”, num);

// session.setAttribute(“role”, “3”);

// if(m_pwd.equals(pwd)){

// System.out.println(“返回值是真”);

// return true;

// }else{

// return false;

// }

//9修改密码

@RequestMapping(“/updateMemberPwd”)

public @ResponseBody boolean updateMemberPwd(Model model,String num,String oldPwd,String newPwd){

System.out.println(“===============updateManagerPwd=================”);

System.out.println(“旧密码:”+oldPwd);

System.out.println(“新密码:”+newPwd);

String M_pwd=newPwd;

String M_num=num;

Member manager=memberService.findMemberByNum(num);

String pwd=manager.getM_pwd();

if(pwd.equals(oldPwd)){

memberService.updateMemberPwd(M_pwd,M_num);

return true;

}else{

return false;

系统管理员信息: 

@Controller

@RequestMapping(value = “/Manager”)

public class ManagerController {

@Autowired

private ManagerService managerService;

// 1根据id查询

@RequestMapping(“/findManagerById”)

public @ResponseBody Manager findManagerById(Model model,String ma_id){

System.out.println(“===============findManagerById=================”);

System.out.println(“MA_id:”+ma_id);

int id=Integer.parseInt(ma_id);

Manager manager=managerService.findManagerById(id);

System.out.println(“manager:”+manager.getMA_name());

model.addAttribute(“manager”, manager);

return manager;

// 2查询所有(分页显示)

@RequestMapping(“/findAllManager”)

public String findAllManager(Model model, String type, Integer pageNo,

Integer pageSize) {

System.out.println(“===========findAllManager==============”);

System.out.println(“传到type的值:” + type);

PagedResult pagedResult = (PagedResult) managerService

.findAllManager(pageNo, pageSize);

model.addAttribute(“pagedResult”, pagedResult);

List managerList = pagedResult.getDataList();

System.out.println(“当前页码:” + pageNo);

System.out.println(“总页数:” + pageSize);

System.out.println(pagedResult.getPages());

model.addAttribute(“managerList”, managerList);

if (type.equals(“show1”)) {

return “jsp/sonpage/manager/managerson/findManager”;

if (type.equals(“show2”)) {

return “jsp/sonpage/manager/managerson/delManager”;

return “”;

// 3模糊查询

@RequestMapping(“/findLikeNameManager”)

public String findLikeNameManager(String ma_id, String ma_name,

Model model, String type) {

System.out.println(“===========模糊查询系统管理员信息============”);

//String ma_id=id;

//String ma_name=name;

System.out.println(“ma_id:” + ma_id);

System.out.println(“ma_name:” + ma_name);

System.out.println(“type:” + type);

Map map = new HashMap();

map.put(“ma_id”, ma_id);

map.put(“ma_name”, ma_name);

List managerList = managerService.findLikeNameManager(map);

model.addAttribute(“managerList”, managerList);

if (type.equals(“show1”)) {

System.out.println(“===========从查询管理员信息页面===========”);

if ((“”).equals(ma_id) && (“”).equals(ma_name)) {

System.out.println(“1没有传值”);

System.out.println(“===========findAllManager==============”);

System.out.println(“传到type的值:” + type);

PagedResult pagedResult = (PagedResult) managerService

.findAllManager(0, 5);

model.addAttribute(“pagedResult”, pagedResult);

managerList = pagedResult.getDataList();

System.out.println(“当前页码:” + 1);

System.out.println(“总页数:” + 5);

System.out.println(pagedResult.getPages());

model.addAttribute(“managerList”, managerList);

return “jsp/sonpage/manager/managerson/findManager”;

System.out

.println(“===================跳回查询页面======================”);

return “jsp/sonpage/manager/managerson/findManager”;

if (type.equals(“show2”)) {

System.out.println(“===========从删除管理员信息页面===========”);

if ((“”).equals(ma_id) && (“”).equals(ma_name)) {

System.out.println(“2没有传值”);

System.out.println(“1没有传值”);

System.out.println(“===========findAllManager==============”);

System.out.println(“传到type的值:” + type);

PagedResult pagedResult = (PagedResult) managerService

.findAllManager(0, 5);

model.addAttribute(“pagedResult”, pagedResult);

managerList = pagedResult.getDataList();

System.out.println(“当前页码:” + 1);

System.out.println(“总页数:” + 5);

System.out.println(pagedResult.getPages());

model.addAttribute(“managerList”, managerList);

return “jsp/sonpage/manager/managerson/findManager”;

System.out

.println(“===================跳回删除页面======================”);

return “jsp/sonpage/manager/managerson/delManager”;

return “”;

// 4添加系统管理员

@RequestMapping(“/addManager”)

public String addManager(Manager manager) {

System.out.println(“=========添加系统管理员=========”);

System.out.println(“姓名:” + manager.getMA_name());

managerService.addManager(manager);

return “jsp/sonpage/manager/managerson/addManager”;

// 5删除系统管理员

@RequestMapping(“/delManager”)

public String delManager(String MA_id) {

System.out.println(“===========删除系统管理员===========”);

System.out.println(“MA_id:” + MA_id);

int id = Integer.parseInt(MA_id);

managerService.delManager(id);

return “forward:findAllManager.action?type=show2”;

// 6修改系统管理员

@RequestMapping(“/updateManager”)

public String updateManager(Manager manager) {

System.out.println(“=========修改系统管理员=========”);

System.out.println(“名字:”+manager.getMA_name());

managerService.updateManager(manager);

return “forward:findAllManager.action?type=show1”;

// 8批量删除管理员信息

@RequestMapping(“/delItem”)

public @ResponseBody boolean delItem(Model model, String ids) {

System.out.println(“==========批量删除已审批活动信息==========”);

System.out.println(“ids:” + ids);

// 用数组接收获取的选中集合

String[] str = ids.split(“_”);

for (int i = 0; i < str.length; i++) {

int id = Integer.parseInt(str[i]);

managerService.delManager(id);

System.out.println(“删除的方法执行了”);

// return “forward:findAllMember.action?type=show2”;

return true;

//9登陆(根据学号查找)

@RequestMapping(“/findManagerByNum”)

public @ResponseBody boolean findManagerByNum(HttpSession session,String num,String pwd){

System.out.println(“===============findManagerByNum=================”);

System.out.println(“num:”+num);

Subject subject = SecurityUtils.getSubject();

subject.getSession().setAttribute(“userType”, “Manager”);

// 保存至令牌环中,供MyRealm做验证

UsernamePasswordToken token = new UsernamePasswordToken(num, pwd);

// 保存用户类型供MyRealm获取

try {

// 跳转到MyRealm 做登录用户名和密码验证

subject.login(token);

session.setAttribute(“num”, num);

session.setAttribute(“role”, “2”);

System.out.println(“ManagerController–>>findManagerByNum–>>登录成功”);

return true;

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

System.out.println(“ManagerController–>>findManagerByNum–>>登录失败”);

return false;

// Manager manager=managerService.findManagerByNum(num);

// System.out.println(“manager:”+manager.getMA_pwd());

// String MA_pwd=manager.getMA_pwd();

// session.setAttribute(“num”, num);

// session.setAttribute(“role”, “2”);

// if(MA_pwd.equals(pwd)){

// System.out.println(“返回值是真”);

// return true;

// }else{

// return false;

// }

// 登出

@RequestMapping(“/logout”)

public String logout(Model model) {

try {

Subject subject = SecurityUtils.getSubject();

System.out.println(“==========>>>>>>>>logout>>>>>>======”+subject.getPrincipal().toString());

subject.logout();

System.out.println(“****logout成功*****“);

} catch (Exception e) {

return “/jsp/sonpage/login”;

//9修改密码

@RequestMapping(“/updateManagerPwd”)

public @ResponseBody boolean updateManagerPwd(Model model,String num,String oldPwd,String newPwd){

System.out.println(“===============updateManagerPwd=================”);

System.out.println(“旧密码:”+oldPwd);

System.out.println(“新密码:”+newPwd);

String MA_pwd=newPwd;

String MA_num=num;

Manager manager=managerService.findManagerByNum(num);

String pwd=manager.getMA_pwd();

if(pwd.equals(oldPwd)){

managerService.updateManagerPwd(MA_pwd,MA_num);

return true;

}else{

return false;

课程管理控制层:

@RestController

@RequestMapping(“/classes/“)

public class ClassesController {

@Autowired

private IClassesService iClassesService;

@RequestMapping(“add”)

public ServerResponse add(String className, String classNum,Integer limit) {

return iClassesService.add(className, classNum,limit);

@RequestMapping(“del”)

public ServerResponse del(Integer id) {

return iClassesService.del(id);

@RequestMapping(“update”)

public ServerResponse update(Integer id, String className, String classNum,Integer limit) {

return iClassesService.update(id, className, classNum,limit);

@RequestMapping(“find”)

public ServerResponse find(Integer id) {

return iClassesService.find(id);

@RequestMapping(“findAll”)

public ServerResponse<PageInfo> findAll(Integer pageNum, Integer pageSize) {

return iClassesService.findAll(pageNum, pageSize);

教师管理控制层:

@RestController

@RequestMapping(“/teacher/“)

public class TeacherController {

@Autowired

private ITeacherService iTeacherService;

@RequestMapping(“add”)

public ServerResponse add(String name, String phone,Integer countLimit) {

return iTeacherService.add(name, phone,countLimit);

@RequestMapping(“del”)

public ServerResponse del(Integer id) {

return iTeacherService.del(id);

@RequestMapping(“update”)

public ServerResponse update(Integer id, String name, String phone,Integer countLimit) {

return iTeacherService.update(id, name, phone,countLimit);

@RequestMapping(“find”)

public ServerResponse find(Integer id) {

return iTeacherService.find(id);

@RequestMapping(“findAll”)

public ServerResponse<PageInfo> findAll(Integer pageNum, Integer pageSize) {

return iTeacherService.findAll(pageNum, pageSize);


项目链接:
https://javayms.github.io?id=381524512608201nj
https://javayms.pages.dev?id=381524512608201nj