基于javaweb的SpringBoot+MyBatis在线教学考试作业系统(后台、前台)(java+springboot+html+thymeleaf+mysql+maven)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

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

功能说明

管理员:用户管理、班级、题库、考试、作业等模块管理

学生:考试、写作业

260123232502

前台

050123232502

060123232502

070123232502

080123232502

090123232502

100123232502

110123232502

120123232502

140123232502

150123232502

160123232502

后台

170123232502

180123232502

190123232502

200123232502

210123232502

220123232502

230123232502

250123232502

技术框架

JSP JavaScript layui SpringBoot SpringMVC MyBatis

基于javaweb的SpringBoot+MyBatis在线教学考试作业系统(后台、前台)(java+springboot+html+thymeleaf+mysql+maven)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 */
@RequestMapping("homeworkDetailPage")
public String homeworkDetailPage(Long userId,Long paperId,Model model){
model.addAttribute("userId",userId);
model.addAttribute("paperId",paperId);

QueryWrapper<UserPaperDetail> userPaperDetailQueryWrapper=new QueryWrapper<>();
userPaperDetailQueryWrapper.eq("model_type",1);//模式:1 作业;2 试卷;3.自测练习
userPaperDetailQueryWrapper.eq("user_id",userId);
userPaperDetailQueryWrapper.eq("paper_id", paperId);
userPaperDetailQueryWrapper.orderByAsc("id");
List<UserPaperDetail> paperDetailList = userPaperDetailService.list(userPaperDetailQueryWrapper);
List<UserPaperDetail> type1List=new ArrayList<>();//单选题
List<UserPaperDetail> type2List=new ArrayList<>();//多选题
List<UserPaperDetail> type3List=new ArrayList<>();//翻译题
List<UserPaperDetail> type4List=new ArrayList<>();//小作文选题
for(UserPaperDetail paperDetail:paperDetailList){
switch (paperDetail.getQuestionType()){
case 1:type1List.add(paperDetail);break;
case 2:type2List.add(paperDetail);break;
case 3:type3List.add(paperDetail);break;
case 4:type4List.add(paperDetail);break;
}
}
for(int i=0;i<type1List.size();i++){
type1List.get(i).setField0((i+1)+"");
}
for(int i=0;i<type2List.size();i++){
int j = type1List.size() + i + 1;
type2List.get(i).setField0(j+"");
}
for(int i=0;i<type3List.size();i++){
int j = type1List.size() +type2List.size()+ i + 1;
type3List.get(i).setField0(j+"");
}
for(int i=0;i<type4List.size();i++){
int j = type1List.size() +type2List.size()+type3List.size()+ i + 1;
type4List.get(i).setField0(j+"");
}
model.addAttribute("type1List",type1List);
model.addAttribute("type2List",type2List);
model.addAttribute("type3List",type3List);
model.addAttribute("type4List",type4List);

return "home/homework/detail";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

/**
* <p>
* 家庭作业表 前端控制器
* </p>
*
*/
@Controller
@RequestMapping({"/homework","home/homework"})
public class HomeWorkController {

private static final Logger logger= LoggerFactory.getLogger(HomeWorkController.class);

@Autowired
SysClassService classService;

@Autowired
SysPaperService paperService;

@Autowired
SysUserService userService;

@Autowired
SysQuestionService questionService;

@Autowired
PaperDetailService paperDetailService;

@Autowired
UserPaperService userPaperService;

private static final String prefix="admin/homework/";

@ModelAttribute
private void addModelInfo(Model model){
QueryWrapper<SysUser> userQueryWrapper=new QueryWrapper<>();
userQueryWrapper.ne("code","admin");
List<SysUser> userList = userService.list(userQueryWrapper);
model.addAttribute("userList",userList);

List<SysClass> classList = classService.list();
model.addAttribute("classList",classList);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    QueryWrapper<UserPaperDetail> userPaperDetailQueryWrapper=new QueryWrapper<>();
userPaperDetailQueryWrapper.eq("model_type",1);//模式:1 作业;2 试卷;3.自测练习
userPaperDetailQueryWrapper.eq("user_id",userId);
userPaperDetailQueryWrapper.eq("paper_id", paperId);
userPaperDetailQueryWrapper.orderByAsc("id");
List<UserPaperDetail> paperDetailList = userPaperDetailService.list(userPaperDetailQueryWrapper);
List<UserPaperDetail> type1List=new ArrayList<>();//单选题
List<UserPaperDetail> type2List=new ArrayList<>();//多选题
List<UserPaperDetail> type3List=new ArrayList<>();//翻译题
List<UserPaperDetail> type4List=new ArrayList<>();//小作文选题
for(UserPaperDetail paperDetail:paperDetailList){
switch (paperDetail.getQuestionType()){
case 1:type1List.add(paperDetail);break;
case 2:type2List.add(paperDetail);break;
case 3:type3List.add(paperDetail);break;
case 4:type4List.add(paperDetail);break;
}
}
for(int i=0;i<type1List.size();i++){
type1List.get(i).setField0((i+1)+"");
}
for(int i=0;i<type2List.size();i++){
int j = type1List.size() + i + 1;
type2List.get(i).setField0(j+"");
}
for(int i=0;i<type3List.size();i++){
int j = type1List.size() +type2List.size()+ i + 1;
type3List.get(i).setField0(j+"");
}
for(int i=0;i<type4List.size();i++){
int j = type1List.size() +type2List.size()+type3List.size()+ i + 1;
type4List.get(i).setField0(j+"");
}
model.addAttribute("type1List",type1List);
model.addAttribute("type2List",type2List);
model.addAttribute("type3List",type3List);
model.addAttribute("type4List",type4List);


return "home/homework/edit";
}

/**
* 提交家庭作业
* @param userValue
* @param userId
* @param paperId
* @return
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

@Autowired
SysUserService userService;

@Autowired
SysClassService classService;


@Value("${com.jane.file.baseFilePath}")
private String baseFilePath;

private static final String prefix="admin/user";
private static final String prefix_home="home/user";


@ModelAttribute
private void addModelInfo(Model model){
List<SysClass> classList = classService.list();
model.addAttribute("classList",classList);

}

/**
* 跳到前台个人中心页面
* @param id
* @param model
* @return
*/
@RequestMapping("/personPage/{id}")
public String person(@PathVariable Long id,Model model){
SysUser user = userService.getById(id);
model.addAttribute("user",user);
model.addAttribute("userId",id);
return prefix_home+"/person";
}

/**
* 跳到前台个人信息修改页面
* @param id
* @param model
* @return
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
            user.setSex(sex);
user.setType(Integer.parseInt(type));
userService.save(user);
}
return ResultUtil.success("导入成功!");

} catch (IOException e) {
logger.error(e.getMessage(),e);
}
return ResultUtil.error();
}


/**
* 用户添加
* @param user
* @return
*/
@RequestMapping("add")
@ResponseBody
public ResponseBean addUser(SysUser user, MultipartFile file){
logger.debug("addSysUser:"+user);
if(user==null){
return ResultUtil.error(CommonEnum.BAD_PARAM);
}
String mobile = user.getMobile();
if(!StringUtils.isEmpty(mobile)&&!RegexUtil.checkMobile(mobile)){
logger.error("手机号为空!");
return ResultUtil.error("手机号不合法!");
}
SysClass sysClass = classService.getById(user.getClassId());
user.setClassName(sysClass.getName());

String password= StringUtils.isEmpty(user.getPassword())?"123456":user.getPassword();
//对密码进行MD5盐值加密,数据库保存密码的密文
//MD5Util.md5(password,md5Key md5key就是盐值
user.setPassword(MD5Util.md5(password,md5Key));
boolean add = userService.save(user);
logger.debug("用户添加结果:"+user);
//保存文件并更新saveName到user.field1
if (file!=null&&!file.isEmpty()) {
SysFile sysFile=new SysFile();
sysFile.setObjectId(user.getId());
sysFile.setCategoryCode(ComCodeEnum.category_code_user);
SysFile saveFile=fileService.saveOrUpdateFile(sysFile,file);
if(saveFile!=null&&!StringUtils.isEmpty(saveFile.getSaveName())){
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
        int j = type1List.size() +type2List.size()+ i + 1;
type3List.get(i).setField0(j+"");
}
for(int i=0;i<type4List.size();i++){
int j = type1List.size() +type2List.size()+type3List.size()+ i + 1;
type4List.get(i).setField0(j+"");
}
model.addAttribute("type1List",type1List);
model.addAttribute("type2List",type2List);
model.addAttribute("type3List",type3List);
model.addAttribute("type4List",type4List);

return "home/homework/dohomework";

}

/**
* 跳到前台家庭作业列表页面
* @param type 类型:1 作业;2 试卷
* @param model
* @return
*/
@RequestMapping("homeworkListPage")
public String homeworkListPage(Integer type,Model model,HttpSession session){
if(session.getAttribute("user")==null){
return "/home/login";
}
model.addAttribute("type",type);
return "home/homework/list";
}


/**
* 根据tb_user_paper.id 从tb_user_paper_detail下载学生答题明细数据
* @param id--tb_user_paper.id
* @param request
* @return
*/
@RequestMapping(value = "/export")
public ResponseEntity<byte[]> fileExport(Integer id, HttpServletRequest request){
InputStream fileInputStream=null;
try {
//获取到文件流
fileInputStream = FileController.class.getClassLoader().getResourceAsStream("downloadUserPaperTemplate.xlsx");
XSSFWorkbook xssfWorkbook=new XSSFWorkbook(fileInputStream);
XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
if(sheet==null){
sheet=xssfWorkbook.createSheet();
}


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