基于javaweb+mysql的springboot学生管理系统(java+springboot+maven+mybatis+vue+mysql)
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot学生管理系统(java+springboot+maven+mybatis+vue+mysql)
一、项目简述
本系统功能包括: 学生管理,教师管理,课程管理,成绩管理,系统管理等等。
二、项目运行
环境配置:
Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
项目技术:
Springboot + Maven + mybatis+ Vue 等等组成,B/S模式 + Maven管理等等。
return "admin/user/add";
@RequiresPermissions("sys:user:add")
@PostMapping("add")
@ResponseBody
@SysLog("保存新增系统用户数据")
public ResponseEntity add(@RequestBody User user){
if(StringUtils.isBlank(user.getLoginName())){
return ResponseEntity.failure("登录名不能为空");
if(user.getRoleLists() == null || user.getRoleLists().size() == 0){
return ResponseEntity.failure("用户角色至少选择一个");
if(userService.userCount(user.getLoginName())>0){
return ResponseEntity.failure("登录名称已经存在");
// if(StringUtils.isNotBlank(user.getEmail())){
result.setData(list);
result.setCount(count);
return result;
// 根据教师编号查询教师信息
@RequestMapping("/selTeacherId")
public String selTeacherId(Integer id, Model model){
List<TeacherDB> tea = lxxTeacherService.selTeacherId(id);
// 查询政治面貌
List<PoliticsTypeDB> selpol = lxxStudentService.selPolitics();
model.addAttribute("tea",tea);
model.addAttribute("selpol",selpol);
return "view/teacher/updTeacher";
// 根据教师编号查询教师详细信息
@RequestMapping("add")
public String add(ModelMap modelMap){
Map<String,Object> map = new HashMap();
map.put("parentId",null);
map.put("isShow",false);
List<Menu> menuList = menuService.selectAllMenus(map);
modelMap.put("menuList",menuList);
return "admin/role/add";
@RequiresPermissions("sys:role:add")
@PostMapping("add")
@ResponseBody
@SysLog("保存新增角色数据")
public ResponseEntity add(@RequestBody Role role){
@RequestMapping("admin/system/user")
public class UserController {
@Autowired
UserService userService;
@Autowired
RoleService roleService;
@Autowired
UploadService uploadService;
@RequestMapping("list")
@SysLog("跳转系统用户列表页面")
public String list(){
List<PoliticsTypeDB> selpol = lxxStudentService.selPolitics();
model.addAttribute("tea",tea);
model.addAttribute("selpol",selpol);
return "view/teacher/selTchMessage";
// 修改教师信息
@RequestMapping("/updateTeacher")
@ResponseBody
public LayuiResult<TeacherDB> updTeacher(TeacherDB teacherDB, String birthday) throws Exception{
LayuiResult result= new LayuiResult();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date=format.parse(birthday);
User u = userService.findUserById(r.getCreateId());
if(StringUtils.isBlank(u.getNickName())){
u.setNickName(u.getLoginName());
r.setCreateUser(u);
if(StringUtils.isNotBlank(r.getUpdateId())){
User u = userService.findUserById(r.getUpdateId());
if(StringUtils.isBlank(u.getNickName())){
u.setNickName(u.getLoginName());
r.setUpdateUser(u);
});
return roles;
userService.deleteUser(user);
return ResponseEntity.success("操作成功");
@RequiresPermissions("sys:user:delete")
@PostMapping("deleteSome")
@ResponseBody
@SysLog("删除系统用户数据(多个)")
public ResponseEntity deleteSome(@RequestBody List<User> users){
if(users == null || users.size()==0){
return ResponseEntity.failure("请选择需要删除的用户");
for (User u : users){
if(u.getAdminUser()){
return ResponseEntity.failure("不能删除超级管理员");
return ResponseEntity.failure("用户ID不能为空");
if(StringUtils.isBlank(user.getLoginName())){
return ResponseEntity.failure("登录名不能为空");
if(user.getRoleLists() == null || user.getRoleLists().size() == 0){
return ResponseEntity.failure("用户角色至少选择一个");
User oldUser = userService.findUserById(user.getId());
if(StringUtils.isNotBlank(user.getEmail())){
if(!user.getEmail().equals(oldUser.getEmail())){
if(userService.userCount(user.getEmail())>0){
return ResponseEntity.failure("该邮箱已被使用");
if(StringUtils.isNotBlank(user.getLoginName())){
if(!user.getLoginName().equals(oldUser.getLoginName())) {
User user = userService.findUserById(MySysUser.id());
byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);
String password = Encodes.encodeHex(hashPassword);
if(!user.getPassword().equals(password)){
return ResponseEntity.failure("旧密码错误");
user.setPassword(newPwd);
Encodes.entryptPassword(user);
userService.updateById(user);
return ResponseEntity.success("操作成功");
}else {
//小程序修改密码
User user = userService.findUserByLoginName(userName);
byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);
if (userService.userCount(user.getTel()) > 0) {
return ResponseEntity.failure("该手机号已经被绑定");
userService.updateById(user);
return ResponseEntity.success("操作成功");
@RequestMapping("changePassword")
public String changePassword(ModelMap modelMap){
modelMap.put("currentUser",userService.getById(MySysUser.id()));
return "admin/user/changePassword";
@CrossOrigin
@SysLog("用户修改密码")
@PostMapping("changePassword")
userPageData.setCount(userPage.getTotal());
userPageData.setData(userPage.getRecords());
return userPageData;
@RequestMapping("add")
public String add(ModelMap modelMap){
List<Role> roleList = roleService.selectAll();
modelMap.put("roleList",roleList);
return "admin/user/add";
@RequiresPermissions("sys:user:add")
@PostMapping("add")
// 查询政治面貌
List<PoliticsTypeDB> selpol = lxxStudentService.selPolitics();
model.addAttribute("tea",tea);
model.addAttribute("selpol",selpol);
return "view/teacher/selTchMessage";
// 修改教师信息
@RequestMapping("/updateTeacher")
@ResponseBody
public LayuiResult<TeacherDB> updTeacher(TeacherDB teacherDB, String birthday) throws Exception{
LayuiResult result= new LayuiResult();
if(file == null){
return ResponseEntity.failure("上传文件为空 ");
String url = null;
Map map = new HashMap();
try {
url = uploadService.upload(file);
map.put("url", url);
map.put("name", file.getOriginalFilename());
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.failure(e.getMessage());
public PageData<Role> list(@RequestParam(value = "page",defaultValue = "1")Integer page,
@RequestParam(value = "limit",defaultValue = "10")Integer limit,
ServletRequest request){
Map map = WebUtils.getParametersStartingWith(request, "s_");
PageData<Role> rolePageData = new PageData<>();
QueryWrapper<Role> roleWrapper = new QueryWrapper<>();
roleWrapper.eq("del_flag",false);
if(!map.isEmpty()){
String keys = (String) map.get("key");
if(StringUtils.isNotBlank(keys)) {
roleWrapper.like("name", keys);
IPage<Role> rolePage = roleService.page(new Page<>(page,limit),roleWrapper);
result.setCount(count);
return result;
// 根据教师编号查询教师信息
@RequestMapping("/selTeacherId")
public String selTeacherId(Integer id, Model model){
List<TeacherDB> tea = lxxTeacherService.selTeacherId(id);
// 查询政治面貌
List<PoliticsTypeDB> selpol = lxxStudentService.selPolitics();
model.addAttribute("tea",tea);
model.addAttribute("selpol",selpol);
modelMap.put("menuList",menuList);
modelMap.put("menuIds",menuIds);
return "admin/role/edit";
@RequiresPermissions("sys:role:edit")
@PostMapping("edit")
@ResponseBody
@SysLog("保存编辑角色数据")
public ResponseEntity edit(@RequestBody Role role){
if(StringUtils.isBlank(role.getId())){
return ResponseEntity.failure("角色ID不能为空");
return ResponseEntity.failure("登录名不能为空");
if(user.getRoleLists() == null || user.getRoleLists().size() == 0){
return ResponseEntity.failure("用户角色至少选择一个");
if(userService.userCount(user.getLoginName())>0){
return ResponseEntity.failure("登录名称已经存在");
// if(StringUtils.isNotBlank(user.getEmail())){
// if(userService.userCount(user.getEmail())>0){
// return ResponseEntity.failure("该邮箱已被使用");
// }
// }
// if(StringUtils.isNoneBlank(user.getTel())){
public ResponseEntity edit(@RequestBody User user){
if(StringUtils.isBlank(user.getId())){
return ResponseEntity.failure("用户ID不能为空");
if(StringUtils.isBlank(user.getLoginName())){
return ResponseEntity.failure("登录名不能为空");
if(user.getRoleLists() == null || user.getRoleLists().size() == 0){
return ResponseEntity.failure("用户角色至少选择一个");
User oldUser = userService.findUserById(user.getId());
if(StringUtils.isNotBlank(user.getEmail())){
if(!user.getEmail().equals(oldUser.getEmail())){
if(userService.userCount(user.getEmail())>0){
return ResponseEntity.failure("该邮箱已被使用");