Java项目:springboot少年宫活动中心后台管理系统

108 篇文章 2 订阅

作者主页:源码空间站2022

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

本项目是少年儿童活动中心的选课系统,本选课系统是基于SpringBoot2.0 + Mybatis + Thymeleaf + Shiro 开发的后台管理系统,建立以Browser/Server 为结构模式、以数据库为后台核心应用、以服务为目的信息化办公平台。实现对课程安排、报名缴费、数据记录和处理、工作流程的信息化,提高工作效率和数据管理效率,并具备安全性、可升级、可扩展性

面向对象

* 少年儿童活动中心学生家长:通过微信公众号进入系统,进行课程查询、选课支付等操作。具备基本手机使用水平。
* 少年儿童活动中心老师:通过web管理平台进行课程安排、调课退课、选课数据整理及历史数据维护等工作。具备基本计算机使用水平。

* 少年儿童活动中心制定的其他用户:活动中心根据自身的业务需要,指定的其他用户。具备基本计算机使用水平。

技术选型

SpringBoot + Mybatis + Thymeleaf + Shiro + Easyexcel + EhCache

功能列表

- 课程管理 管理活动中心的课程分类以及课程信息
- 教师管理 管理活动中心的授课教师信息
- 学员管理 和管理活动中心的学员信息
- 收费管理 查询学员课程的收费信息以及课程的收费报表
- 用户管理 管理后台系统用户,管理员身份可以进行修改、删除
- 角色管理 分配权限的最小单元,通过角色对用户分配权限
- 菜单管理 管理系统菜单,同时作为权限资源

- 日志管理 记录登录用户的地址和时间,以及未授权越界操作的记录

快速部署

- 环境与插件要求

- Jdk8+
- Mysql5.5+
- Maven
- Redis 3.2+

- Lombok 重要

- 导入项目

- IntelliJ IDEA:Import Project -> Import Project from external model -> Maven

- Eclipse:Import -> Exising Mavne Project

- 准备数据

- 创建数据库,将项目sng.sql文件导入到mysql数据库中

- 修改配置

- 修改项目资源目录,application-dev.yml文件的datasource配置和redis配置

- 运行项目

- 运行项目SngApplication.java
- 访问地址:http://localhost:8090/

- 默认帐号密码:admin/admin(其他账号密码在realpwd表中)

运行截图

代码相关

学生管理控制器

@Controller
@RequestMapping("/stu")
public class StuController {
    @Autowired
    private StuService stuService;
    @Autowired
    private CourseService courseService;

    /**
     * 学生信息页面跳转
     * @param pageNum
     * @param pageSize
     * @param model
     * @return
     */
    @RequiresPermissions("stu:list")
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public String list(@Valid StuSearchParam stu, @RequestParam(name = "pn", defaultValue = "1") Integer pageNum,
                       @RequestParam(name = "pSize", defaultValue = "5") Integer pageSize, Model model) {
        model.addAttribute("page", PageHelper.startPage(pageNum, pageSize));
        List<StuInfo> list = this.stuService.findStus(stu);
        //给学生监护人手机号码加密
        list.forEach((item)-> {
            String encryptPhone = EncryptDataUtil.encryptPhone(item.getStuParentPhone());
            item.setStuParentPhone(encryptPhone);
        });
        model.addAttribute("stus", list);
        model.addAttribute("courses", this.courseService.findCourseColumns());
        return "stu/list";
    }

    /**
     * 学生添加页面跳转
     * @param model
     * @return
     */
    @RequiresPermissions("stu:add")
    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public String toAddStu(Model model) {
        model.addAttribute("courses", this.courseService.findCourseColumns());
        return "stu/add";
    }

    /**
     * 学生信息添加
     * @param stu
     * @param br
     * @return
     */
    @RequiresPermissions("stu:add")
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String addStu(@Valid StuParam stu, BindingResult br) {
        ValidationUtil.validateData(br);
        if (stu.parseStuParentRelation()){
            this.stuService.addStu(stu);
        }
        return "success";
    }

    /**
     * 学生修改页面跳转
     * @param stuId
     * @param model
     * @return
     */
    @RequiresPermissions(value = {"stu:list","stu:add"},logical = Logical.AND)
    @RequestMapping(value = "/edit", method = RequestMethod.GET)
    public String toEditStu(Integer stuId, Model model) {
        StuFind stu = this.stuService.findStu(stuId);
        model.addAttribute("courses", this.courseService.findCourseColumns());
        model.addAttribute("stu", stu);
        return "stu/edit";
    }

    /**
     * 学生信息修改
     * @param stu
     * @param br
     * @return
     */
    @RequiresPermissions(value = {"stu:list","stu:add"},logical = Logical.AND)
    @RequestMapping(value = "/edit", method = RequestMethod.POST)
    public String editStu(@Valid StuParam stu, BindingResult br) {
        ValidationUtil.validateData(br);
        if (stu.parseStuParentRelation()){
            this.stuService.editStu(stu);
        }
        return "success";
    }

    /**
     * 学生信息删除
     * @param id
     * @return
     */
    @RequiresRoles(value = {"0","1"},logical = Logical.OR)
    @RequiresPermissions(value = {"stu:list","stu:add"},logical = Logical.AND)
    @RequestMapping(value = "/remove", method = RequestMethod.POST)
    @ResponseBody
    public String removeStu(Integer id) {
        return this.stuService.removeStu(id) ? "success" : "fail";
    }

    /**
     * 学生信息恢复
     * @param id
     * @return
     */
    @RequiresRoles("0")
    @RequiresPermissions(value = {"stu:list","stu:add"},logical = Logical.AND)
    @RequestMapping(value = "/recover", method = RequestMethod.POST)
    @ResponseBody
    public String recoverStu(Integer id) {
        return this.stuService.recoverStu(id) ? "success" : "fail";
    }

    /**
     * 学生信息批量删除
     * @param ids
     * @return
     */
    @RequiresRoles(value = {"0","1"},logical = Logical.OR)
    @RequiresPermissions(value = {"stu:list","stu:add"},logical = Logical.AND)
    @RequestMapping(value = "/removes", method = RequestMethod.POST)
    @ResponseBody
    public String removeStus(Integer[] ids) {
        return this.stuService.batchRemoveStus(Arrays.asList(ids)) ? "success" : "fail";
    }

    /**
     * 学生信息批量恢复
     * @param ids
     * @return
     */
    @RequiresRoles("0")
    @RequiresPermissions(value = {"stu:list","stu:add"},logical = Logical.AND)
    @RequestMapping(value = "/recovers", method = RequestMethod.POST)
    @ResponseBody
    public String recoverStus(Integer[] ids) {
        return this.stuService.batchRecoverStus(Arrays.asList(ids)) ? "success" : "fail";
    }

    /**
     * 根据学生姓名查询学生信息
     * @return
     */
    @RequestMapping(value = "/findStuInfo", method = RequestMethod.POST)
    @ResponseBody
    public List<StuSearchFind> findStuInfo(String stuName) {
        return this.stuService.findStuColumns(stuName);
    }

    /**
     * 查询学生课程信息
     * @return
     */
    @RequestMapping(value = "/findStuCourse", method = RequestMethod.POST)
    @ResponseBody
    public StuCourseFind findStuCourseInfo(Integer stuId) {
        return this.stuService.findStuCourseInfo(stuId);
    }

    /**
     * 导出学生信息
     * @param stuIds
     * @param response
     * @throws Exception
     */
    @RequiresPermissions("stu:list")
    @RequestMapping(value = "/exportStuInfo", method = RequestMethod.POST)
    public void exportStuInfo(Integer[] stuIds, HttpServletResponse response) throws Exception {
        ServletOutputStream outputStream = null;
        try {
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            // 使用URLEncoder的encode来防止中文乱码
            String fileName = URLEncoder.encode("学生信息表", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
            outputStream = response.getOutputStream();
            EasyExcel.write(outputStream, StuInfo.class).sheet("学生信息表").doWrite(this.stuService.findStuInfo(Arrays.asList(stuIds)));
        } finally {
            try {
                //关闭流
                if (outputStream != null) {
                    outputStream.flush();
                    outputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 教师管理控制器

@Controller
@RequestMapping("/teacher")
public class TeacherController {
    @Autowired
    private TeacherService teacherService;
    @Autowired
    private CourseService courseService;
    @Autowired
    private CourseTypeService courseTypeService;

    /**
     * 教师信息页面跳转
     * @param teacherName
     * @param teacherType
     * @param pageNum
     * @param model
     * @return
     */
    @RequiresPermissions("teacher:list")
    @RequestMapping(value = "/list",method = RequestMethod.GET)
    public String list(Integer teacherType, String teacherName, @RequestParam(name="flag",defaultValue="0")Integer flag,
                       @RequestParam(name="pn",defaultValue="1")Integer pageNum,
                       @RequestParam(name = "pSize", defaultValue = "5") Integer pageSize, Model model){
        Map<String, Object> params = new HashMap<>();
        params.put("teacherName",teacherName);
        params.put("teacherType",teacherType);
        params.put("flag",flag);
        model.addAttribute("page", PageHelper.startPage(pageNum, pageSize));
        List<TeacherInfo> list = this.teacherService.findTeachers(params);
        //给教师手机号加密
        list.forEach((item)-> {
            String encryptPhone = EncryptDataUtil.encryptPhone(item.getTeacherPhone());
            item.setTeacherPhone(encryptPhone);
        });
        model.addAttribute("teachers",list);
        model.addAttribute("courseTypes",this.courseTypeService.findCourseTypeColumns());
        return "teacher/list";
    }

    /**
     * 教师信息录入页面跳转
     * @param model
     * @return
     */
    @RequiresPermissions("teacher:add")
    @RequestMapping(value = "/add",method = RequestMethod.GET)
    public String toAddTeacher(Model model){
        model.addAttribute("courseTypes",this.courseTypeService.findCourseTypeColumns());
        return "teacher/add";
    }

    /**
     * 教师信息录入
     * @param teacher
     * @param br
     * @return
     */
    @RequiresPermissions("teacher:add")
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    public String addTeacher(@Valid TeacherParam teacher, BindingResult br){
        ValidationUtil.validateData(br);
        this.teacherService.addTeacher(teacher);
        return "success";
    }

    /**
     * 教师信息修改页面跳转
     * @param teacherId
     * @param model
     * @return
     */
    @RequiresPermissions(value = {"teacher:list","teacher:add"},logical = Logical.AND)
    @RequestMapping(value = "/edit",method = RequestMethod.GET)
    public String toEditTeacher(Integer teacherId,Model model){
        TeacherFind teacher = this.teacherService.findTeacher(teacherId);
        model.addAttribute("teacher",teacher);
        model.addAttribute("courseTypes",this.courseTypeService.findCourseTypeColumns());
        return "teacher/edit";
    }

    /**
     * 教师信息修改
     * @param teacher
     * @param br
     * @return
     */
    @RequiresPermissions(value = {"teacher:list","teacher:add"},logical = Logical.AND)
    @RequestMapping(value = "/edit",method = RequestMethod.POST)
    public String editTeacher(@Valid TeacherParam teacher, BindingResult br){
        ValidationUtil.validateData(br);
        this.teacherService.editTeacher(teacher);
        return "success";
    }

    /**
     * 教师信息删除
     * @param id
     * @return
     */
    @RequiresPermissions(value = {"teacher:list","teacher:add"},logical = Logical.AND)
    @RequestMapping(value = "/remove",method = RequestMethod.POST)
    @ResponseBody
    public String removeTeacher(Integer id){
        return this.teacherService.removeTeacher(id)?"success":"fail";
    }

    /**
     * 教师信息恢复
     * @param id
     * @return
     */
    @RequiresRoles("0")
    @RequiresPermissions(value = {"teacher:list","teacher:add"},logical = Logical.AND)
    @RequestMapping(value = "/recover",method = RequestMethod.POST)
    @ResponseBody
    public String recoverTeacher(Integer id){
        return this.teacherService.recoverTeacher(id)?"success":"fail";
    }

    /**
     * 教师信息批量删除
     * @param ids
     * @return
     */
    @RequiresPermissions(value = {"teacher:list","teacher:add"},logical = Logical.AND)
    @RequestMapping(value = "/removes",method = RequestMethod.POST)
    @ResponseBody
    public String removeTeachers(Integer[] ids){
        return this.teacherService.batchRemoveTeachers(Arrays.asList(ids))?"success":"fail";
    }

    /**
     * 教师信息批量恢复
     * @param ids
     * @return
     */
    @RequiresRoles("0")
    @RequiresPermissions(value = {"teacher:list","teacher:add"},logical = Logical.AND)
    @RequestMapping(value = "/recovers",method = RequestMethod.POST)
    @ResponseBody
    public String recoverTeachers(Integer[] ids){
        return this.teacherService.batchRecoverTeachers(Arrays.asList(ids))?"success":"fail";
    }

    /**
     * 根据专业查询价格、授课教室和教师
     * @param teacherType
     * @return
     */
    @RequiresPermissions("teacher:add")
    @RequestMapping(value = "/findClassroom",method = RequestMethod.POST)
    @ResponseBody
    public Map<String,Object> findClassroom(Integer teacherType){
        List<Map<String, Object>> crs = courseService.findClassrooms(teacherType);
        HashMap<String, Object> classrooms = new HashMap<>();
        classrooms.put("classrooms",crs);
        return classrooms;
    }

}

如果也想学习本系统,下面领取。回复:039springboot

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、项目简介本课程演示的是一套基于SSM实现的社团管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。课程包含:1. 项目源码、项目文档、数据库脚本、软件工具等所有资料2. 带你从零开始部署运行本套系统3. 该项目附带的源码资料可作为毕设使用4. 提供技术答疑二、技术实现后台框架:SpringSpringMVC、MyBatisUI界面:JSP、jQuery 、H-ui数据库:MySQL 三、系统功能本社团管理系统是根据大学社团管理的实际应用而开发的,采用JSP技术,JAVA编程语言,基于SSM框架,使用MySQL数据库,充分保证系统的安全性和稳定性,使得社团管理工作系统化、规范化、高效化。该系统主要分为前台和后台两大功能模块,共包含两个角色:用户、管理员。具体的系统功能如下:1.前台功能 前台首页、新闻公告、规章制度、社团活动、活动报名、互动交流、用户注册、用户登陆、用户中心、修改密码、个人信息、我的社团活动、物资申请、退出登陆等功能。2.后台功能 后台系统登陆、社团用户管理、管理员管理、网站公告管理、社团活动管理、申请类型管理、用户申请管理、活动报名管理、留言交流管理等功能。该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 四、项目截图1)前台首页2)新闻公告3)用户注册4)社团用户管理5)社团活动管理  更多Java毕设项目请关注【毕设系列课程】https://edu.csdn.net/lecturer/2104   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值