基于javaweb和mysql的springboot在线答疑系统(java+springboot+mybaits+vue+elementui+mysql)
私信源码获取及调试交流
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Node.js≥14
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于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
使用说明
项目运行:
-
使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
-
使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;
-
将项目中application.yml配置文件中的数据库配置改为自己的配置;
4.运行项目,在浏览器中输入地址:
地址:http://localhost:8080/springboot65f25/admin/dist/index.html
管理员账户:abo 密码:abo
学生账户:学生1 密码:123456
教师账户:教师1 密码:123456
文档介绍展示:
试卷管理展示页面:
系统登录展示页面:
试题管理展示页面:
学生管理展示页面:
教师管理展示页面:
问题发布管理展示页面:
考试管理展示页面:
疑难解答管理展示页面:
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("旧密码:"+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;
系统管理员信息:
@RequestMapping("find")
public ServerResponse<Classes> find(Integer id) {
return iClassesService.find(id);
@RequestMapping("findAll")
public ServerResponse<PageInfo<Classes>> findAll(Integer pageNum, Integer pageSize) {
return iClassesService.findAll(pageNum, pageSize);
教师管理控制层:
@RestController
@RequestMapping("/teacher/")
public class TeacherController {
@Autowired
private ITeacherService iTeacherService;
.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<Manager> pagedResult = (PagedResult<Manager>) managerService
// 保存用户类型供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-->>登录失败");
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 {
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);
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);
@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("_");
@RequestMapping("find")
public ServerResponse<Classes> find(Integer id) {
return iClassesService.find(id);
@RequestMapping("findAll")
public ServerResponse<PageInfo<Classes>> findAll(Integer pageNum, Integer pageSize) {
return iClassesService.findAll(pageNum, pageSize);
教师管理控制层:
@RestController
@RequestMapping("/teacher/")
public class TeacherController {
@Autowired
PagedResult<Manager> pagedResult = (PagedResult<Manager>) managerService
.findAllManager(pageNo, pageSize);
model.addAttribute("pagedResult", pagedResult);
List<Manager> 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")) {
@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;
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())) {
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-->>登录失败");
//2查询所有会员信息
@RequestMapping("/findAllMember")
public String findAllMember(Model model,String type,Integer pageNo,Integer pageSize){
System.out.println("===========findAllMember==============");
System.out.println("传到type的值:"+type);
PagedResult<Member> pagedResult= memberService.findAllMember(pageNo, pageSize);
model.addAttribute("pagedResult", pagedResult);
List<Member> memberList=pagedResult.getDataList();
System.out.println("当前页码:"+pageNo);
System.out.println("条数:"+pageSize);
System.out.println("总页面数目:"+pagedResult.getPages());
model.addAttribute("memberList", memberList);
if(type.equals("show1")){
map.put("ma_id", ma_id);
map.put("ma_name", ma_name);
List<Manager> 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<Manager> pagedResult = (PagedResult<Manager>) managerService
.findAllManager(0, 5);
map.put("ma_name", ma_name);
List<Manager> 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<Manager> pagedResult = (PagedResult<Manager>) managerService
.findAllManager(0, 5);
model.addAttribute("pagedResult", pagedResult);