Java實(shí)戰(zhàn)在線選課系統(tǒng)的實(shí)現(xiàn)流程
一、項(xiàng)目簡(jiǎn)述
功能: 系統(tǒng)分為三個(gè)角色。最高權(quán)限管理員,學(xué)生,教師,包括 學(xué)生管理,教師管理,課程管理,選課,退課,成績(jī)查 詢。,教學(xué)課程,查看選課名單等等功能完全齊備。
二、項(xiàng)目運(yùn)行
環(huán)境配置: Jdk1.8 + Tomcat8.5 + Mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
項(xiàng)目技術(shù): 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("跳轉(zhuǎn)用戶頁(yè)接口")
@PreAuthorize("hasRole('管理員')")
public String index(String menuid,Model model){
List<Role> roles = queryAllRole();
model.addAttribute("roles",roles);
model.addAttribute("menuid",menuid);
//用戶首頁(yè)
return "views/user/user_list";
}
@GetMapping("/listpage")
@ApiOperation("查詢用戶分頁(yè)數(shù)據(jù)接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "UserQuery", value = "用戶查詢對(duì)象", defaultValue = "userQuery對(duì)象")
})
@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","請(qǐng)?zhí)顚?xiě)用戶名");
return ret;
}
if(StringUtils.isEmpty(user.getPassword())){
ret.put("msg","請(qǐng)?zhí)顚?xiě)密碼");
return ret;
}
if(StringUtils.isEmpty(user.getEmail())){
ret.put("msg","請(qǐng)?zhí)顚?xiě)郵箱");
return ret;
}
if(StringUtils.isEmpty(user.getTel())){
ret.put("msg","請(qǐng)?zhí)顚?xiě)手機(jī)號(hào)");
return ret;
}
if(StringUtils.isEmpty(user.getHeadImg())){
ret.put("msg","請(qǐng)上傳頭像");
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("請(qǐng)?zhí)顚?xiě)用戶名");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("請(qǐng)?zhí)顚?xiě)郵箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("請(qǐng)?zhí)顚?xiě)手機(jī)號(hào)");
}
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 {
//添加用戶對(duì)應(yīng)的角色
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());
// 添加用戶對(duì)應(yīng)的組關(guān)系
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) {
//保存學(xué)生組
userService.saveRel(is, userInfo, stuGroup);
}
Long userId = user.getId();
return userId;
}
/**
* 修改密碼頁(yè)面
* @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("傳遞參數(shù):"+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;
}
//添加角色權(quán)限 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 {
//添加角色對(duì)應(yīng)的權(quán)限
roleService.addRolePermission(roleId,permissionIds);
return ajaxResult;
}catch (Exception e){
e.printStackTrace();
return new AjaxResult("保存權(quán)限失敗");
}
}
}
學(xué)生控制器:
@RequestMapping("/student")
@Controller
@Api(tags = "學(xué)生管理接口")
public class StudentController {
@Autowired
private IUserService userService;
@Autowired
private ICourseService courseService;
@Autowired
private IClassesService classesService;
@Resource
private ProcessEngine engine;
@Autowired
private IOperaterLogService operaterLogService;
//老師列表
//后臺(tái)查詢學(xué)生列表
@RequestMapping("/index")
public String index(Model model){
//用戶首頁(yè)
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表示老學(xué)生
return userService.listpage(userQuery);
}
/**
* 添加學(xué)生操作
* @param user
* @return
*/
@PostMapping("/addSaveStu")
@ApiOperation("添加學(xué)生接口")
@PreAuthorize("hasRole('管理員')")
@ResponseBody
public Message addSaveStudent(User user){
if(StringUtils.isEmpty(user.getUsername())){
return Message.error("請(qǐng)?zhí)顚?xiě)用戶名");
}
if(StringUtils.isEmpty(user.getPassword())){
return Message.error("請(qǐng)?zhí)顚?xiě)密碼");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("請(qǐng)?zhí)顚?xiě)郵箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("請(qǐng)?zhí)顚?xiě)手機(jī)號(hào)");
}
if(StringUtils.isEmpty(user.getStunum())){
return Message.error("請(qǐng)?zhí)顚?xiě)學(xué)號(hào)");
}
User userByUserName = userService.findUserByUserName(user.getUsername());
if(userByUserName!=null){
return Message.error("用戶名已存在");
}
if(userService.findByStuNum(user.getStunum())!=null){
return Message.error("該學(xué)號(hào)已存在");
}
user.setType(3);
if(userService.addUser(user)<=0){
return Message.error("學(xué)生添加失敗");
}
//保存工作流程操作
IdentityService is = engine.getIdentityService();
// 添加用戶組
org.activiti.engine.identity.User userInfo = userService.saveUser(is, user.getUsername());
// 添加用戶對(duì)應(yīng)的組關(guān)系
Group stuGroup = new GroupEntityImpl();
stuGroup.setId("stuGroup");
userService.saveRel(is, userInfo, stuGroup);
operaterLogService.add("添加學(xué)生成功,學(xué)生名稱:"+user.getUsername());
return Message.success();
}
//修改用戶editSaveUser
@PostMapping("/editSaveStu")
@ApiOperation("修改學(xué)生接口")
@PreAuthorize("hasRole('管理員')")
@ResponseBody
public Message editSaveStu(User user){
if(StringUtils.isEmpty(user.getUsername())){
return Message.error("請(qǐng)?zhí)顚?xiě)用戶名");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("請(qǐng)?zhí)顚?xiě)郵箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("請(qǐng)?zhí)顚?xiě)手機(jī)號(hào)");
}
User userByUserName = userService.findUserByUserName(user.getUsername());
if(userByUserName!=null){
if(!userByUserName.getId().equals(user.getId())){
return Message.error("該用戶名已存在");
}
}
try {
userService.editSaveUser(user);
operaterLogService.add("編輯學(xué)生成功,學(xué)生名稱:"+user.getUsername());
return Message.success();
} catch (Exception e) {
e.printStackTrace();
return Message.error("學(xué)生編輯失敗");
}
}
//editSaveStuXk
@PostMapping("/editSaveStuXk")
@ApiOperation("修改用戶接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "User", value = "學(xué)生選課")
})
@ResponseBody
public AjaxResult editSaveStuXk(User user){
try {
userService.editSaveXk(user);
operaterLogService.add("修改學(xué)生選課成功,學(xué)生名稱:"+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){
//用戶首頁(yè)
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("請(qǐng)?zhí)顚?xiě)用戶名");
}
if(StringUtils.isEmpty(user.getPassword())){
return Message.error("請(qǐng)?zhí)顚?xiě)密碼");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("請(qǐng)?zhí)顚?xiě)郵箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("請(qǐng)?zhí)顚?xiě)手機(jī)號(hào)");
}
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("請(qǐng)?zhí)顚?xiě)用戶名");
}
if(StringUtils.isEmpty(user.getEmail())){
return Message.error("請(qǐng)?zhí)顚?xiě)郵箱");
}
if(StringUtils.isEmpty(user.getTel())){
return Message.error("請(qǐng)?zhí)顚?xiě)手機(jī)號(hào)");
}
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("教師信息編輯失敗");
}
}
}
到此這篇關(guān)于Java實(shí)戰(zhàn)在線選課系統(tǒng)的實(shí)現(xiàn)流程的文章就介紹到這了,更多相關(guān)Java 在線選課系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
聊聊ResourceBundle和properties讀取配置文件的區(qū)別
這篇文章主要介紹了ResourceBundle和properties讀取配置文件的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Java經(jīng)緯度小數(shù)與度分秒相互轉(zhuǎn)換工具類示例詳解
這篇文章主要介紹了Java經(jīng)緯度小數(shù)與度分秒相互轉(zhuǎn)換工具類,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
springboot?aop里的@Pointcut()的配置方式
這篇文章主要介紹了springboot?aop里的@Pointcut()的配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Springboot集成RabbitMQ并驗(yàn)證五種消息模型
RabbitMQ 提供了5種常用消息模型,本文主要介紹了Springboot集成RabbitMQ并驗(yàn)證五種消息模型,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
如何解決SpringBoot集成百度UEditor圖片上傳后直接訪問(wèn)404
在本篇文章里小編給大家整理的是一篇關(guān)于如何解決SpringBoot集成百度UEditor圖片上傳后直接訪問(wèn)404相關(guān)文章,需要的朋友們學(xué)習(xí)下。2019-11-11
mybatis插件pageHelper實(shí)現(xiàn)分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了mybatis插件pageHelper實(shí)現(xiàn)分頁(yè)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Java 實(shí)戰(zhàn)項(xiàng)目之倉(cāng)庫(kù)管理系統(tǒng)的實(shí)現(xiàn)流程
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)倉(cāng)庫(kù)管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11
Java實(shí)現(xiàn)的斷點(diǎn)續(xù)傳功能的示例代碼
本篇文章主要介紹了Java實(shí)現(xiàn)的斷點(diǎn)續(xù)傳功能的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
Java之SpringBoot實(shí)現(xiàn)基本增刪改查(前后端分離版)
這篇文章主要介紹了Java中SpringBoot如何實(shí)現(xiàn)基本的增刪改查,前后端分離版,沒(méi)有和前端進(jìn)行聯(lián)系,感興趣的小伙伴可以借鑒閱讀本文2023-03-03

