Java实战在线选课系统的实现流程
作者:qq_1334611189 发布时间:2022-12-19 10:34:30
标签:Java,在线选课系统,实战
一、项目简述
功能: 系统分为三个角色。最高权限管理员,学生,教师,包括 学生管理,教师管理,课程管理,选课,退课,成绩查 询。,教学课程,查看选课名单等等功能完全齐备。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + Mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP +Spring + SpringMVC + MyBatis + Bootstrap4+ css + JavaScript + JQuery + Ajax + particles.js+ maven等等。
用户管理控制器:
/**
* 用户管理控制器
*/
@RequestMapping("/user/")
@Controller
public class UserController {
@Autowired
private IUserService userService;
@Autowired
private IRoleService roleService;
@Resource
private ProcessEngineConfiguration configuration;
@Resource
private ProcessEngine engine;
@GetMapping("/index")
@ApiOperation("跳转用户页接口")
@PreAuthorize("hasRole('管理员')")
public String index(String menuid,Model model){
List<Role> roles = queryAllRole();
model.addAttribute("roles",roles);
model.addAttribute("menuid",menuid);
//用户首页
return "views/user/user_list";
}
@GetMapping("/listpage")
@ApiOperation("查询用户分页数据接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "UserQuery", value = "用户查询对象", defaultValue = "userQuery对象")
})
@ResponseBody
@PreAuthorize("hasRole('管理员')")
public PageList listpage(UserQuery userQuery){
return userService.listpage(userQuery);
}
//添加用户
@PostMapping("/addUser")
@ApiOperation("添加用户接口")
@ResponseBody
public Map<String,Object> addUser(User user){
Map<String, Object> ret = new HashMap<>();
ret.put("code",-1);
if(StringUtils.isEmpty(user.getUsername())){
ret.put("msg","请填写用户名");
return ret;
}
if(StringUtils.isEmpty(user.getPassword())){
ret.put("msg","请填写密码");
return ret;
}
if(StringUtils.isEmpty(user.getEmail())){
ret.put("msg","请填写邮箱");
return ret;
}
if(StringUtils.isEmpty(user.getTel())){
ret.put("msg","请填写手机号");
return ret;
}
if(StringUtils.isEmpty(user.getHeadImg())){
ret.put("msg","请上传头像");
return ret;
}
if(userService.addUser(user)<=0) {
ret.put("msg", "添加用户失败");
return ret;
}
ret.put("code",0);
ret.put("msg","添加用户成功");
return ret;
}
/**
* 修改用户信息操作
* @param user
* @return
*/
@PostMapping("/editSaveUser")
@ApiOperation("修改用户接口")
@PreAuthorize("hasRole('管理员')")
@ResponseBody
public Message editSaveUser(User user){
if(StringUtils.isEmpty(user.getUsername())){
return Message.error("请填写用户名");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("请填写邮箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("请填写手机号");
}
try {
userService.editSaveUser(user);
return Message.success();
} catch (Exception e) {
e.printStackTrace();
return Message.error("修改用户信息失败");
}
}
//添加用户
@GetMapping("/deleteUser")
@ApiOperation("删除用户接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "如:88",required = true)
})
@PreAuthorize("hasRole('管理员')")
@ResponseBody
public AjaxResult deleteUser(@RequestParam(required = true) Long id){
AjaxResult ajaxResult = new AjaxResult();
try {
userService.deleteUser(id);
} catch (Exception e) {
e.printStackTrace();
return new AjaxResult("删除失败");
}
return ajaxResult;
}
@PostMapping(value="/deleteBatchUser")
@ApiOperation("批量删除用户接口")
@PreAuthorize("hasRole('管理员')")
@ResponseBody
public AjaxResult deleteBatchUser(String ids){
String[] idsArr = ids.split(",");
List list = new ArrayList();
for(int i=0;i<idsArr.length;i++){
list.add(idsArr[i]);
}
try{
userService.batchRemove(list);
return new AjaxResult();
}catch(Exception e){
return new AjaxResult("批量删除失败");
}
}
//查询所有角色
public List<Role> queryAllRole(){
return roleService.queryAll();
}
//添加用户的角色
@PostMapping("/addUserRole")
@ApiOperation("添加用户角色接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "paramMap", value = "如:{userId:1,[1,2,3,4]]}")
})
@ResponseBody
public AjaxResult addUserRole(@RequestBody Map paramMap){
AjaxResult ajaxResult = new AjaxResult();
String userId = (String)paramMap.get("userId");
List roleIds = (List) paramMap.get("roleIds");
try {
//添加用户对应的角色
roleService.addUserRole(userId,roleIds);
return ajaxResult;
}catch (Exception e){
e.printStackTrace();
return new AjaxResult("保存角色失败");
}
}
//添加用户
@RequestMapping("/regSaveUser")
@ResponseBody
public Long addTeacher(User user){
System.out.println("保存用户...."+user);
userService.addUser(user);
//保存工作流程操作
IdentityService is = engine.getIdentityService();
// 添加用户组
org.activiti.engine.identity.User userInfo = userService.saveUser(is, user.getUsername());
// 添加用户对应的组关系
Group stuGroup = new GroupEntityImpl();
stuGroup.setId("stuGroup");
Group tGroup = new GroupEntityImpl();
tGroup.setId("tGroup");
if(user.getType() == 2) {
//保存老师组
userService.saveRel(is, userInfo, tGroup);
}
if(user.getType() == 3) {
//保存学生组
userService.saveRel(is, userInfo, stuGroup);
}
Long userId = user.getId();
return userId;
}
/**
* 修改密码页面
* @return
*/
@RequestMapping(value="/update_pwd",method=RequestMethod.GET)
public String updatePwd(){
return "views/user/update_pwd";
}
/**
* 修改密码操作
* @param oldPwd
* @param newPwd
* @return
*/
@ResponseBody
@PostMapping("/update_pwd")
public Message updatePassword(@RequestParam(name="oldPwd",required=true)String oldPwd,
@RequestParam(name="newPwd",required=true)String newPwd){
String username = CommonUtils.getLoginUser().getUsername();
User userByUserName = userService.findUserByUserName(username);
if(userByUserName!=null){
String password = userByUserName.getPassword();
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
boolean matches = bCryptPasswordEncoder.matches(oldPwd, password);
if(!matches){
return Message.error("旧密码不正确");//true
}
userByUserName.setPassword(bCryptPasswordEncoder.encode(newPwd));
if(userService.editUserPassword(userByUserName)<=0){
return Message.error("密码修改失败");
}
}
return Message.success();
}
/**
* 清除缓存
* @param request
* @param response
* @return
*/
@ResponseBody
@PostMapping("/clear_cache")
public Message clearCache(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragrma","no-cache");
response.setDateHeader("Expires",0);
return Message.success();
}
}
角色控制器:
@Controller
public class RoleController {
@Autowired
private IRoleService roleService;
@Autowired
private IPermissionService permissionService;
@PreAuthorize("hasRole('管理员')")
@ResponseBody
@RequestMapping("/role/doAdd")
public String doAdd(Role role){
//角色添加
return "ok";
}
//添加角色
@RequestMapping("/role/addRole")
@PreAuthorize("hasRole('管理员')")
@ResponseBody
public AjaxResult addRole(Role role){
System.out.println("保存角色...."+role);
try {
roleService.saveRole(role);
return new AjaxResult();
} catch (Exception e) {
e.printStackTrace();
return new AjaxResult("操作失败");
}
}
@PreAuthorize("hasRole('管理员')")
@RequestMapping("/role/index")
public String index(Model model){
List<Permission> permisisons = permissionService.findAllPermisisons();
model.addAttribute("permissions",permisisons);
//返回角色
return "views/role/role_list";
}
@RequestMapping("/role/listpage")
@ResponseBody
public PageList listpage(RoleQuery roleQuery){
System.out.println("传递参数:"+roleQuery);
return roleService.listpage(roleQuery);
}
//修改用户editSaveUser
@RequestMapping("/role/editSaveRole")
@ResponseBody
public AjaxResult editSaveRole(Role role){
System.out.println("修改角色...."+role);
try {
roleService.editSaveRole(role);
return new AjaxResult();
} catch (Exception e) {
e.printStackTrace();
}
return new AjaxResult("修改失败");
}
//添加角色
@RequestMapping("/role/deleteRole")
@ResponseBody
public AjaxResult deleteRole(Long id){
System.out.println("删除角色...."+id);
AjaxResult ajaxResult = new AjaxResult();
try {
roleService.deleteRole(id);
} catch (Exception e) {
e.printStackTrace();
return new AjaxResult("删除失败");
}
return ajaxResult;
}
//添加角色权限 addRolePermission
@RequestMapping("/role/addRolePermission")
@ResponseBody
public AjaxResult addRolePermission(@RequestBody Map paramMap){
AjaxResult ajaxResult = new AjaxResult();
String roleId = (String)paramMap.get("roleId");
List permissionIds = (List) paramMap.get("permissionIds");
try {
//添加角色对应的权限
roleService.addRolePermission(roleId,permissionIds);
return ajaxResult;
}catch (Exception e){
e.printStackTrace();
return new AjaxResult("保存权限失败");
}
}
}
学生控制器:
@RequestMapping("/student")
@Controller
@Api(tags = "学生管理接口")
public class StudentController {
@Autowired
private IUserService userService;
@Autowired
private ICourseService courseService;
@Autowired
private IClassesService classesService;
@Resource
private ProcessEngine engine;
@Autowired
private IOperaterLogService operaterLogService;
//老师列表
//后台查询学生列表
@RequestMapping("/index")
public String index(Model model){
//用户首页
model.addAttribute("courses",courseService.queryAll());
model.addAttribute("classes",classesService.queryAll());
return "views/student/student_list";
}
@RequestMapping("/listpage")
@ResponseBody
public PageList listpage(UserQuery userQuery){
userQuery.setType(3L);//2表示老学生
return userService.listpage(userQuery);
}
/**
* 添加学生操作
* @param user
* @return
*/
@PostMapping("/addSaveStu")
@ApiOperation("添加学生接口")
@PreAuthorize("hasRole('管理员')")
@ResponseBody
public Message addSaveStudent(User user){
if(StringUtils.isEmpty(user.getUsername())){
return Message.error("请填写用户名");
}
if(StringUtils.isEmpty(user.getPassword())){
return Message.error("请填写密码");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("请填写邮箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("请填写手机号");
}
if(StringUtils.isEmpty(user.getStunum())){
return Message.error("请填写学号");
}
User userByUserName = userService.findUserByUserName(user.getUsername());
if(userByUserName!=null){
return Message.error("用户名已存在");
}
if(userService.findByStuNum(user.getStunum())!=null){
return Message.error("该学号已存在");
}
user.setType(3);
if(userService.addUser(user)<=0){
return Message.error("学生添加失败");
}
//保存工作流程操作
IdentityService is = engine.getIdentityService();
// 添加用户组
org.activiti.engine.identity.User userInfo = userService.saveUser(is, user.getUsername());
// 添加用户对应的组关系
Group stuGroup = new GroupEntityImpl();
stuGroup.setId("stuGroup");
userService.saveRel(is, userInfo, stuGroup);
operaterLogService.add("添加学生成功,学生名称:"+user.getUsername());
return Message.success();
}
//修改用户editSaveUser
@PostMapping("/editSaveStu")
@ApiOperation("修改学生接口")
@PreAuthorize("hasRole('管理员')")
@ResponseBody
public Message editSaveStu(User user){
if(StringUtils.isEmpty(user.getUsername())){
return Message.error("请填写用户名");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("请填写邮箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("请填写手机号");
}
User userByUserName = userService.findUserByUserName(user.getUsername());
if(userByUserName!=null){
if(!userByUserName.getId().equals(user.getId())){
return Message.error("该用户名已存在");
}
}
try {
userService.editSaveUser(user);
operaterLogService.add("编辑学生成功,学生名称:"+user.getUsername());
return Message.success();
} catch (Exception e) {
e.printStackTrace();
return Message.error("学生编辑失败");
}
}
//editSaveStuXk
@PostMapping("/editSaveStuXk")
@ApiOperation("修改用户接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "User", value = "学生选课")
})
@ResponseBody
public AjaxResult editSaveStuXk(User user){
try {
userService.editSaveXk(user);
operaterLogService.add("修改学生选课成功,学生名称:"+user.getUsername());
return new AjaxResult();
} catch (Exception e) {
e.printStackTrace();
}
return new AjaxResult("修改失败");
}
}
教师管理控制器:
@RequestMapping("/teacher")
@Controller
@Api(tags = "教师管理接口")
public class TeacherController {
@Autowired
private IUserService userService;
@Autowired
private IClassesService classesService;
@Resource
private ProcessEngine engine;
@Autowired
private IOperaterLogService operaterLogService;
//老师列表
@RequestMapping("/index")
public String index(Model model){
//用户首页
model.addAttribute("classes",classesService.queryAll());
return "views/teacher/teacher_list";
}
@RequestMapping("/listpage")
@ResponseBody
public PageList listpage(UserQuery userQuery){
userQuery.setType(2L);//2表示老师
return userService.listpage(userQuery);
}
/**
* 添加教师操作
* @param user
* @return
*/
@PostMapping("/addTeacher")
@ApiOperation("添加教师接口")
@ResponseBody
@PreAuthorize("hasRole('管理员')")
public Message addTeacher(User user){
if(StringUtils.isEmpty(user.getUsername())){
return Message.error("请填写用户名");
}
if(StringUtils.isEmpty(user.getPassword())){
return Message.error("请填写密码");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("请填写邮箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("请填写手机号");
}
User userByUserName = userService.findUserByUserName(user.getUsername());
if(userByUserName!=null){
return Message.error("用户名已存在");
}
user.setType(2);
if(userService.addUser(user)<=0){
return Message.error("教师添加失败");
}
//保存工作流程操作
IdentityService is = engine.getIdentityService();
// 添加用户组
org.activiti.engine.identity.User userInfo = userService.saveUser(is, user.getUsername());
Group tGroup = new GroupEntityImpl();
tGroup.setId("tGroup");
userService.saveRel(is, userInfo, tGroup);
operaterLogService.add("添加教师成功,教师名称:"+user.getUsername());
return Message.success();
}
/**
* 修改教师操作
* @param user
* @return
*/
@PostMapping("/editSaveStu")
@ApiOperation("修改教师接口")
@PreAuthorize("hasRole('管理员')")
@ResponseBody
public Message editSaveStu(User user){
if(StringUtils.isEmpty(user.getUsername())){
return Message.error("请填写用户名");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("请填写邮箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("请填写手机号");
}
User userByUserName = userService.findUserByUserName(user.getUsername());
if(userByUserName!=null){
if(!userByUserName.getId().equals(user.getId())){
return Message.error("该用户名已存在");
}
}
try {
userService.editSaveUser(user);
operaterLogService.add("编辑教师成功,教师名称:"+user.getUsername());
return Message.success();
} catch (Exception e) {
e.printStackTrace();
return Message.error("教师信息编辑失败");
}
}
}
来源:https://blog.csdn.net/m0_59687645/article/details/121468272
0
投稿
猜你喜欢
- 一、校验分类数据的校验一般分为**前端校验、后端校验**二、前端校验前端校验是最为明显的,先说一下:① HTML非空校验 如 HTML5 新
- 之前在使用SpringBoot进行文件上传时,遇到了很多问题。于是在翻阅了很多的博文之后,总算将上传功能进行了相应的完善,便在这里记录下来,
- Glide开源框架是Google推荐的图片加载和缓框架,其在Github上的开源地址是:https://github.com/bumptec
- 老生常谈的配置 但是还是需要说明一下EurekaApplication @EnableEurekaServer指定为server端
- 这篇文章从系统源代码分析,讲述如何将程序创建的多媒体文件加入系统的媒体库,如何从媒体库删除,以及大多数程序开发者经常遇到的无法添加到媒体库的
- 在C#中,在处理字符串拼接的时候,使用StringBuilder的效率会比硬拼接字符串高很多。到底有多高,如下:static void Ma
- 相似处  C++作为C的进阶版,可以调用C的库函数。C++标准库包括了C标准库,C++头文件cctype
- 前言Inotify会对工程内的所有文件夹设置”watch handle”。不幸的是,Linux默认的watch handle的限值不能满足实
- 注册BeanPostProcessorrefresh()调用registerBeanPostProcessors(beanFactory)方
- 验证码逻辑以前在项目中也做过验证码,生成验证码的代码网上有很多,也有一些第三方的jar包也可以生成漂亮的验证码。验证码逻辑很简单,就是在登录
- 这篇文章主要介绍了通过实例了解spring使用构造器注入的原因,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- springboot整合mybatis实现数据库更新批处理1.在mapper接口中编写方法/** * 修改book表中的销量和库存
- 1. 服务端配置java启动命令增加以下参数即可:-Dcom.sun.management.jmxremote \-Dcom.sun.man
- 1. 介绍这个项目让你可以去读取并解析一个PDF文件,并将其内部结构展示出来. PDF文件的格式标准文档可以从Adobe那儿获取到. 这个项
- maven简介及优势 maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告
- 快速入门在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖:<dependen
- 线程状态NEW:刚创建未启动的线程RUNNABLE:正在执行状态BLOCKED:处于阻塞状态的线程WAITING:正在等待另一个线程执行特定
- 最新Android版本、API级别与代号对应关系代号版本号API/NDK级别发布时间-O8.0API level 262017-3-21牛轧
- 问题:在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码。原因其实很简单,就是系统的编码和程序的编码采用了不
- Redis 简介Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 与其他 key - v