Java项目:成绩管理系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
源码获取:博客首页 "资源" 里下载!
一、项目简述
本系统功能包括: 超豪华成绩管理系统,学生,教师,管理员三类用户集 成,课程表管理,成绩查询,成绩详情数据统计,课程录 入,用户管理,账号管理。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX (Webstorm也 行)+ Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts都支 持)。
项目技术: Springboot + Maven + Mybatis + Vue + Redis等等组成, B/S模式+ Maven等等。
角色控制器:
@Controller
public class RoleController {@Autowiredprivate IRoleService roleService;@Autowiredprivate IPermissionService permissionService;@PreAuthorize("hasRole('管理员')")@ResponseBody@RequestMapping("/role/doAdd")public String doAdd(Role role){//角色添加return "ok";}//添加角色@RequestMapping("/role/addRole")@PreAuthorize("hasRole('管理员')")@ResponseBodypublic 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")@ResponseBodypublic PageList listpage(RoleQuery roleQuery){System.out.println("传递参数:"+roleQuery);return roleService.listpage(roleQuery);}//修改用户editSaveUser@RequestMapping("/role/editSaveRole")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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("/user/")
@Controller
public class UserController {@Autowiredprivate IUserService userService;@Autowiredprivate IRoleService roleService;@Resourceprivate ProcessEngineConfiguration configuration;@Resourceprivate 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("添加用户接口")@ResponseBodypublic 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('管理员')")@ResponseBodypublic 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('管理员')")@ResponseBodypublic 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('管理员')")@ResponseBodypublic 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]]}")})@ResponseBodypublic 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")@ResponseBodypublic 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();}
}
成绩管理接口:
@RequestMapping("/score")
@Controller
@Api(tags = "成绩管理接口")
public class ScoreController {@Autowiredprivate IScoreService scoreService;@Autowiredprivate IUserService userService;@Autowiredprivate ICourseService courseService;@Autowiredprivate IOperaterLogService operaterLogService;@GetMapping("/index")@ApiOperation("跳转成绩页接口")public String index(Model model){//查询学生List<User> users = userService.findAllStudent();model.addAttribute("users",users);model.addAttribute("courses",courseService.queryAll());//查询课程return "views/score/score_list";}@GetMapping("/listpage")@ApiOperation("查询成绩分页数据接口")@ApiImplicitParams({@ApiImplicitParam(name = "ScoreQuery", value = "成绩查询对象", defaultValue = "scoreQuery对象")})@ResponseBodypublic PageList listpage(ScoreQuery scoreQuery){return scoreService.listpage(scoreQuery);}/*** 添加成绩操作* @param score* @return*/@PostMapping("/addScore")@ApiOperation("添加成绩接口")@ResponseBodypublic Message addScore(Score score){if(StringUtils.isEmpty(score.getScore())){return Message.error("请填写该学生的成绩");}Map<String, Object> queryMap = new HashMap<>();queryMap.put("userId",score.getUserid());queryMap.put("courseId",score.getCourseid());Score byUidAndCid = scoreService.findByUidAndCid(queryMap);if(byUidAndCid!=null){return Message.error("该学生的课程成绩已经添加过了!");}try {scoreService.addScore(score);operaterLogService.add("添加学生成绩成功");return Message.success();} catch (Exception e) {e.printStackTrace();return Message.error("成绩添加失败");}}@PostMapping(value="/deleteBatchScore")@ApiOperation("批量删除成绩接口")@ApiImplicitParams({@ApiImplicitParam(name = "ids", value = "如:88,89,99")})@ResponseBodypublic AjaxResult deleteBatchScore(String ids){String[] idsArr = ids.split(",");List list = new ArrayList();for(int i=0;i<idsArr.length;i++){list.add(idsArr[i]);}try{scoreService.batchRemove(list);operaterLogService.add("删除学生成绩成功");return new AjaxResult();}catch(Exception e){return new AjaxResult("批量删除失败");}}}
源码获取:博客首页 "资源" 里下载!
相关文章:

NSThread 多线程相关
1.下面的代码,有2点需要注意,1>就是 就是thread:所传得参数,这里传得的是nsarray 当然也可以传其他的类型。2> [self performSelectorOnMainThread:selector(update) withObject:nil waitUntilDone:YES]; 这个函数的作用是通知主线程进…

Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面
原文地址: http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-19-Setting-up-the-RecordAudioxaml-Page 系列地址: http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners 源代码: http://aka.ms/abs…

9.path Sum III(路径和 III)
Level: Easy 题目描述: You are given a binary tree in which each node contains an integer value. Find the number of paths that sum to a given value. The path does not need to start or end at the root or a leaf, but it must go downwards…

字符串匹配算法 -- AC自动机 基于Trie树的高效的敏感词过滤算法
文章目录1. 算法背景2. AC自动机实现原理2.1 构建失败指针2.2 依赖失败指针过滤敏感词3. 复杂度及完整代码1. 算法背景 之前介绍过单模式串匹配的高效算法:BM和KMP 以及 基于多模式串的匹配数据结构Trie树。 1. BM和KMP 单模式串匹配算法细节 2. Trie树 多模式串的高效匹配数…

Java项目:仿小米商城系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
源码获取:博客首页 "资源" 里下载! 一、项目简述 本系统功能包括: 基于vue Springboot前后端分离项目精简版仿小米商城 系统,注册登录,首页展示,商品展示,商品购买,下单…

vb socket的使用
说明:原本在 csdn 博客 写博客的,因为使用的移动宽带,csdn的 博客无法访问,所以先暂时到博客园写博客了 有能解决移动宽带 有部分网站不能访问的问题,请联系我,QQ 809775607 /***************************/ 下面写wins…

不吹牛会死!国内音乐平台进入“大逃杀”
日前,一篇《看看海洋与腾讯音乐将如何“血洗”独立音乐应用》的文章引起了广泛关注。文中海洋声称长期独家签约的音乐及版权代理公司达40多家,占市场份额超过15%,一时间名不见经传的海洋音乐仿佛成了一匹跃然网上的“黑马”。然而据音乐圈深喉…

leetcode网学习笔记(1)
https://leetcode-cn.com/problems/reverse-linked-list/submissions/ 206 反转链表 错误原因:没有考虑到链表为空以及链表只有一个元素的情况 https://leetcode-cn.com/problems/swap-nodes-in-pairs/comments/ 24 两两交换链表 原方法:使用4个指针遍历…

贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码
1. 贪心算法概览 贪心算法是一种算法思想。希望能够满足限制的情况下将期望值最大化。比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用最少的代价找到解决问题的办法。 这个办法就是贪心算法…

Java项目:个人博客系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
源码获取:博客首页 "资源" 里下载! 一、项目简述 本系统功能包括:文章展示、热门文章、文章分类、标签云用户登录评论、匿名评论用户留言、匿名留言评论管理、文章发布、文章管理文章数据统计等等. 二、项目运行 环境…

第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器
第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器 原文:第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器 前言:在前一章已经演示了如何使用SSMS来配置资源调控器。但是作为DBA&a…

Android_开源框架_Volley实例
2019独角兽企业重金招聘Python工程师标准>>> 1.自定义相关类在 Android_开源框架_Volley(Google IO 2013)源代码及内部实现过程分析一文中,简单概述了Volley框架内部实现过程。如想理解彻底应该熟悉 android多线程通信机制( Android_Thread多线程_Handle…

maven的配置-2019-4-13
一.Maven的优点 1. 依赖管理 jar 包管理 2.一键构建 (编译-----测试------打包-----安装-----部署 ) 什么是项目构建? 指的是项目从编译-----测试------打包-----安装-----部署 整个过程都交给maven进行管理,这个过程称为构建 一…

WiredTiger引擎编译 及 LT_PREREQ(2.2.6)问题解决
近期需要为异构引擎做准备, wiredtiger 以其优异的性能(B-tree和LSM-tree都支持)和稳定性(Mongodb的默认存储引擎) 被我们备选为异构引擎里的一个子引擎,后续将深入wiredtiger 引擎原理。这里简单记录一下Wiredtiger 存储引擎的编译记录。 Environment …

Java项目:员工管理系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
源码获取:博客首页 "资源" 里下载! 一、项目简述 本系统功能包括:分为前端翻后端部分,包括用户,区分晋通用户以及誉里员用户,包括首页展示,部门管理,人事管理,…

缺陷重点内容分析
1.缺陷优先级 序号优先级描述1低暂时不影响继续测试,可以在方便时解决2中部分功能测试无法继续测试;需要优先解决3高测试暂停,无法进行,必须立即解决2.缺陷的状态(图片来自云测视频) 3.缺陷生命周期与管理流…

关于node.js的误会
昨天写了篇博客,介绍了一下我对node.js的第一次亲密接触后的感受,以为node.js很小众,出乎我意料很多人感兴趣,并且对博客中的细节问题做了评论,最多的是围绕node.js的异步与单线程展开的,当然还有很多关于n…

文本相关CSS
文本相关CSS 属性 word-breakoverflow-wrap(word-wrap)white-spacetext-overflowtext-wrap(目前主流浏览器都不支持)应用 一般断行需求实现文本不换行,以省略号表示超出的部分参考资料属性 word-break 作用:指定非CJK(中日韩)文本的断行规则。࿰…

Rocksdb 的优秀代码(三)-- 工业级 线程池实现分享
文章目录前言1. Rocksdb线程池概览2. Rocksdb 线程池实现2.1 基本数据结构2.2 线程池创建2.3 线程池 调度线程执行2.4 线程池销毁线程2.5 线程池优先级调度2.6 动态调整线程池 线程数目上限3. 总结前言 Rocksdb 作为一个第三方库的形态嵌入到各个存储系统之中存储元数据&#…

Java项目:网上电商项目(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
源码获取:博客首页 "资源" 里下载! 一、项目简述 本系统功能包括: 一款基于SpringbootVue的电商项目,前后端分离项目,前台后台都有,前台商品展示购买,购物车分类,订 单查…

3月7日 ArrayList集合
ArrayList与数组的区别: 数组是连续的、同一类型数据的一块区域,而集合可以是不连续的、多种数据类型的。 1.ArrayList ArrayList al new ArrayList(); al.Add(3); al.Add(5.09); al.Add("gfdg"); al.Inse…

什么时候出生好?
从年龄来说,女人头一胎的怀孕时间最好在35岁以前,因为过了35岁后不孕和头胎生育缺陷的比例会大幅度升高。那么,从孩子的角度,什么时候出生好?很多人不考虑这个问题,能不能怀上还难说那。迷信的人则追求出生…

数据库搜索与索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。 索引的一个主要目的就是加快检索表中数据&#x…

Clion 远程开发 配置
文章目录1. 增加远端服务工具2. 配置远端服务器3. 配置编译选项4. 设置远端开发路径Clion作为C/C语言友好的IDE,除了高效的代码索引 以及 基本的本地开发 能力之外还需要有远程开发能力,即我们工作中的代码处于远端linux服务器之上,通过在本地…

Java项目:朴素风个人博客系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
源码获取:博客首页 "资源" 里下载! 一、项目简述 本系统功能包括: 基于vue Springboo痼J后端分离项目个人博客系统,注册 登录,首页展示,喜爰图书展示,后台图书维护,个人…

NodeJS+Mongodb+Express做CMS博客系统
楼主正在用业余时间开发中…… ,目前的版本仅支持会员系统,尝鲜一下吧~ hi-blog 一个 nodejsexpressmongodb 的 cms 系统怎么启动 默认你已经安装了 mongodb ;那么你得这样操作:安装项目 -> 初始化管理员 -> 运行项目 1、请…

Piranha实验总结
操作系统:rhel5.8分别在DirectorMaster和DirectorBackup上部署浮动资源(VIP IPVS策略)测试2个Director在DR模式下是否都可以正常工作。测试完成后都撤掉浮动资源。DirectorMaster[rootlocalhost ~]#yum install piranha[rootlocalhost ~]#piranha-passwdNew Passwor…

虚IP切换原理
高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。HA系统是目前企业防止核心计算机系统因故障停机的…

vim 键盘宏操作 -- 大道至简
最近利用vim做一些文本处理时 发现vim 支持的键盘宏是一个好东西啊,高效优雅得处理大量需要重复性操作的文本,让人爱不释手!!! 希望接下来对键盘宏的分享能够实际帮助到大家。 后文中描述的一些vim操作会汇集成指令字…

Java项目:家居购物商城系统(java+html+jdbc+mysql)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能: Java Web精品项目源码,家居商城分类展示,商品展示, 商品下单,购物车,个人中心,后台管理,用…