Java项目:学生信息管理系统(java+SSM+JSP+layui+maven+mysql)
源码获取:博客首页 "资源" 里下载!
一、项目简述
功能包括:
三角色管理: 学生,教师,管理员,在线选课,成绩录入,学生管理,选课管理,教室管理等等。学生管理可以查看所有学生并操作、添加学生;查看学生选报课程详情等等。教师管理可以查看所有教师并操作、添加教师等等。班级管理可以查看所有班级信息并操作、添加班级等等。
二、项目运行
环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等;
用户管理控制器:
/*** 用户管理控制器*/
@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();}
}
角色管理控制层:
@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("/student")
@Controller
@Api(tags = "学生管理接口")
public class StudentController {@Autowiredprivate IUserService userService;@Autowiredprivate ICourseService courseService;@Autowiredprivate IClassesService classesService;@Resourceprivate ProcessEngine engine;@Autowiredprivate 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")@ResponseBodypublic PageList listpage(UserQuery userQuery){userQuery.setType(3L);//2表示老学生return userService.listpage(userQuery);}/*** 添加学生操作* @param user* @return*/@PostMapping("/addSaveStu")@ApiOperation("添加学生接口")@PreAuthorize("hasRole('管理员')")@ResponseBodypublic 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('管理员')")@ResponseBodypublic 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 = "学生选课")})@ResponseBodypublic AjaxResult editSaveStuXk(User user){try {userService.editSaveXk(user);operaterLogService.add("修改学生选课成功,学生名称:"+user.getUsername());return new AjaxResult();} catch (Exception e) {e.printStackTrace();}return new AjaxResult("修改失败");}}
源码获取:博客首页 "资源" 里下载!
相关文章:

Java for LeetCode 067 Add Binary
Given two binary strings, return their sum (also a binary string). For example, a "11" b "1" Return "100". 解题思路: JAVA实现如下: static public String addBinary(String a, String b) {if (a.length() <…

ON DUPLICATE KEY UPDATE 导致mysql自增主键ID跳跃增长
具体解决方案可以根据项目来选择,如果项目不大,可以考虑1和2。如果不考虑高并发问题,可以考虑3。

一起学JDK源码 -- System类
System类是被final修饰的,不能被继承。

python csv模块心得
2019独角兽企业重金招聘Python工程师标准>>> with open(tiger.csv, wb) as csvfile:writer csv.writer(csvfile, quotingcsv.QUOTE_ALL)row [中国, 美国, 台湾, 马来西亚]writer.writerow([unicode(s).encode("utf-8") for s in row]) 转载于:https://m…

全局变量及输出语句
全局变量 是系统已经定义好的变量,主要反映sql数据库的操作状态。 全局变量名称以开头‘ 举例 identity:返回最后插入的标识值 error:返回执行的上一个T_sql语句的错误号 常用的输出语句 print:结果有消息中以文的形式显示 select:…

Nested Mappings
/*hanzhiguang coded at 2009.07.30 1:20*/ // nesting_map.cpp : Defines the entry point for the console application. // /*------------------------------------------------------------------------- 给定自然数n,找出所有不同的有序对i和j,其中 1<j<i<n,使得…

Java项目:CRM客户关系管理系统(java+Springboot+maven+mysql)
源码获取:博客首页 "资源" 里下载! Springboot项目CRM客户关系管理系统: 系统实现了CRM客户关系系统的基本功能,主要有看板(当月参与的业务机会、当月转化情况、将要结束的业务机会等)、业务机会࿰…

linux下occi操作oracle数据库,中文乱码的问题
转载:http://www.linuxidc.com/Linux/2008-02/11238.htm 前几日调通了OCI连接数据库的问题后,用Oracle自带的例子测试了一下,能正常读取数据(都是英文的),就放心了,转去开发别的模块。这几天做数…

tomcat启动时一闪而过的问题
在CMD窗口中输入 cd E:\apache-tomcat-7.0.52\bin 后再输入E:显示进入相应目录E:\apache-tomcat-7.0.52\bin后,再输入startup 后窗口一闪而过,可通过以下步骤进行调试解决:1.检查确认JAVA_HOME配置正确,可以在命令行中输入java显示…

The Long-Term Stability of Ecosystems
The Long-Term Stability of Ecosystems Plant communities assemble themselves flexibly, and their particular structure depends on the specific history of the area. Ecologists use the term “succession”to refer to the changes that happen in plant communities…

big endian little endian
大端(big-endian)和小端(little-endian)<转>2007-12-07 20:36补:x86机是小端(修改分区表时要注意),单片机一般为大端 今天碰一个关于字节顺序的问题,虽然看起来很简单,但一直都没怎么完全明白这个东西,索性就找了下资料,把它弄清楚. 因为现行的…

Java项目:学生考勤管理系统(java+SSM+Poi导出+Easyui+JFreeChart+maven+mysql)
源码获取:博客首页 "资源" 里下载! 这个项目适合SSM框架的初学者(涉及大量增删改查,很适合初学者)以及对Shiro安全框架和Poi技术感兴趣的同学。 项目功能: 用户管理功能(登录、退出登…
【STL源码剖析读书笔记】【第5章】关联式容器之hashtable
1、hashtable在插入、删除、搜寻操作上具有“常数平均时间”的表现,不依赖输入元素的随机性。 2、hashtable通过hashfunction将元素映射到不同的位置,但当不同的元素通过hash function映射到相同的位置时,便产生了“碰撞”问题。解决碰撞问题…

Event自定义事件
//index.html文件<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible"…
byte endian(biglittle endian)
1. 大小端的区别 little endian:把低位字节存放在内存的低位; // big endian: 将低位字节存放在内存的高位; 比如:0x1234,则12 就属于高位字节;34 属于低位字节 假如从地址0x0000 0000开始的一个字节中保存数据0x12345678, 这2中字节序在内存当中存…

鸡啄米vc++2010系列32(标签控件Tab Control 下)
上一节中鸡啄米讲了标签控件知识的上半部分,本节继续讲下半部分。 标签控件的创建 MFC为标签控件的操作提供了CTabCtrl类。 与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Control,也可以使用CTabCtrl类的Create成员函数创建。…

Java项目:网上图书商城系统(java+SSM+Jsp+MySQL+Redis+JWT+Shiro+RabbitMQ+EasyUI)
源码获取:博客首页 "资源" 里下载! 这个项目涉及到Shiro整合JWT、秒杀功能所具备的基本要求(限流、乐观锁、接口隐藏、JMeter高并发测试等等)、消息中间件RabbitMQ的异步邮件通知和死信队列、沙箱支付宝模拟支付等等技术亮点。 项目功能&#…

虚拟机使用镜像文件安装系统
场景说明:指定Linux镜像之后,点击电源开始安装,安装完成之后,卸载ISO,进入BIOS,设置从硬盘启动。vmvare有提供快速安装的方式。当前的安装类似于手动安装,模拟真实的环境操作步骤:1&…

cmd命令简单别木马的蛛丝马迹
一些基本的Windows命令往往可以识别木马的蛛丝马迹,而且在保护网络安全上起到很大的作用。 检测网络连接 如果你怀疑自己的计算机上被别人安装了木马,或者是中了病毒,但是手里没有完善的工具来检测是不是真有这样的事情发生,那可以…

ubuntu常用翻译工具stardict
日常办公应用中,我们经常会碰到一些陌生的外文单词或文章需要翻译,在Windows平台上,可通过很多翻译工具来帮忙解决。当我们转到Ubuntu系统 中办公时,肯定也希望能有一款简单易用、功能强大的翻译工具。 这里给大家推荐Linux平…

Java项目:教务管理系统(java+JSP+Spring+SpringBoot+layui+maven)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能包括: 三角色教师 管理员,学生教务管理系统,包括院系管理,课题综合管理,信息管理,以及差旅管理,学生选题…

jsp 环境配置记录
1. jdk,下载地址1 环境变量配置: 1)新建 JAVA_HOME 变量 。 变量值填写jdk的安装目录(本人是 C:\Java\jdk1.7.0) 2) 系统变量→寻找 Path 变量→编辑 在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (注意原…

一些关于找工作的书籍
技术类 算法导论:不要纠缠太难的部分(红黑树、斐波那契额堆、NP、近似算法); 编程之美:仔细阅读,包括上面的智力题,纸上手写代码; 编程珠玑:建议仔细阅读,尤其…

最快地复制一张表
1.mysqldump方法 一种方法是,使用mysqldump命令将数据导出成一组INSERT语句。你可以使用下面的命令: mysqldump -h$host -P$port -u$user --add-locks --no-create-info --single-transaction --set-gtid-purgedOFF db1 t --where"a>900" …

Linux下C++开发工具介绍
概述 就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样。Emacs, vi, eclipse, anj…

Linked List Cycle II
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Follow up:Can you solve it without using extra space? 分析:和Linked List Cycle类似,还是用map。 用时:60ms 1 /**2 * Definition …

Java项目:考试管理系统(java+Springboot+Maven+Jpa+Vue+Mysql)
源码获取:博客首页 "资源" 里下载! 一、项目简述本系统功能包括: 支持单选题、多选题、判断题支持学生(student)、教师(teacher)、管理员(admin)三种角色学生:参加考试和查看我的考试教师:学生的所有权限创建…

[物理学与PDEs]第1章第7节 媒质中的 Maxwell 方程组 7.2 媒质交界面上的条件
通过 Maxwell 方程组的积分形式易在交界面上各量应满足交界面条件: $$\beex \bea \sez{{\bf D}}\cdot{\bf n}\omega_f,&\sex{\omega_f:\ \mbox{交界面上自由电荷密度}};\\ \sez{{\bf B}}\cdot{\bf n}0,&\sex{\ra\mbox{ 磁感应强度法向分量在交界面上连续}};\\ \sez{{\b…

第十二周编程总结
这个作业属于的课程C语言程序设计2这个作业要求在哪里https://edu.cnblogs.com/campus/zswxy/MS/homework/3239我在这个课程的目标是使用编程实现简单的游戏设计这个作业在哪个具体方面帮助我实现目标使用指针解决问题,熟悉指针与函数之间的关系和指针作为函数返回值…

什么是交叉编译
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上…