基于springboot校园缴费管理系统

博主主页猫头鹰源码

博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

主要内容 :毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

文末联系获取

项目介绍:

随着社会的不断发展和教育事业的不断壮大,各种信息化技术的应用也越来越广泛,校园缴费系统作为一种信息化管理工具,也得到了越来越多学校和教育机构的重视和使用。在这个背景下,研究和开发一款完善、高效、易用的校园缴费系统具有非常重要的意义。

首先,校园缴费业务管理系统这块发展速度较慢,大部分中学、小学主要是集中在学杂费收取系统的建设,缴费业务过于单一,加上不同年级具有不同的学费标准,收取各种类型的费用,以及统计各种类型的缴费情况都需要投入大量的人力物力,随着学校规模的扩大,由此带来的问题更加突出。其次,校园缴费系统可以提高工作效率,减轻工作负担。而传统的缴费方式需要学校财务部门手动核对每一笔缴费记录,需要大量的人力物力,而校园缴费系统则可以自动完成数据的收集和核对,从而提高工作效率,减轻工作负担。此外,校园缴费系统还可以提高缴费的便捷性。同时可以实现线上支付这种缴费方式,方便学生进行缴费。

用例描述:

本系统的用例主要分为管理员用例和学生用例,其用例描述如下:

(1)注册与登录用例:学生用户可以通过注册功能创建账号并登录系统。在注册时,学生需要提供正确的学号,否则无法进行注册,符合学号格式则可以选择一个安全密码的后进行注册。学生登录时需要输入正确的学号和密码。管理员可以通过预先设置的账号登录功能进入系统管理界面,输入正确的管理员账号和密码即可进入系统管理界面。

(2)学生账号管理用例:管理员都可以对学生账号等进行操作。在添加学生账号时,管理员需要输入学生的账号资料,并为其分配账号和密码。在调整学生帐户时,管理者能够更改学生的基本资料和登录凭据。同样,学生也可以更新自己帐户的信息和更改密码。但修改密码需要确认原密码后才能修改成功,管理员则不需要。

(3)缴费管理用例:缴费管理用例包括缴费类型管理、费用管理、管理员可以添加、修改、删除缴费类型,如学费、住宿费、杂费等。对每个缴费类型,管理员可以设置费用标准。管理员可以发送费用催缴通知,提醒学生及时缴费,并可以设置费用减免数目。

(4)消息通告与催缴信息用例:学生用户可以查看系统发布的消息通告,如学校活动、通知等,同时也可以收到费用催缴通知。管理员可以发布、修改、删除消息通告,查看催缴信息。

(5)管理员管理用例:管理员可以编辑操作管理员账号,在添加管理员账号时,需要输入管理员的账号资料,也就是分配账号和密码。在修改管理员账号时,管理员可以修改登录信息。在删除管理员账号时,直接点击删除即可。

系统包含技术:

后端:springBoot、mybatis

前端:bootstrap、js、css等,html页面

开发工具:idea

数据库:mysql 5.7

JDK版本:jdk1.8

部分截图说明:

下面是登录页面

下面是首页

管理员可以进行学生管理

管理员对费用类型管理

管理员查看费用缴纳信息

管理员对缴费管理

学生查看费用

部分代码:

复制代码
/**列表数据*/
    @GetMapping("/list")
    @ResponseBody
    public PageResultVo findCost(Cost cost, Integer limit, Integer page, HttpSession session){
        String type = (String)session.getAttribute("type");
        if(type.equals("02")){
            Student student = (Student)session.getAttribute("userInfo");
            cost.setSid(student.getId().toString());
        }
        PageHelper.startPage(page,limit);
        List<Cost> costList = costService.selectByCondition(cost);
        for(int i=0;i<costList.size();i++){
            Map mp = new HashMap();
            mp.put("cid",costList.get(i).getCid());
            mp.put("sid",costList.get(i).getSid());
            List<Waiver> waivers = waiverService.queryFilter(mp);
            if(waivers.size()>0){
                BigDecimal money = new BigDecimal(costList.get(i).getMoney());
                BigDecimal fee = new BigDecimal(waivers.get(0).getFee());
                costList.get(i).setFeeMoney(fee.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
                BigDecimal actual = money.subtract(fee).setScale(2, BigDecimal.ROUND_HALF_UP);
                costList.get(i).setActualMoney(actual.toString());
            }else{
                BigDecimal money = new BigDecimal(costList.get(i).getMoney());
                costList.get(i).setFeeMoney("无减免");
                costList.get(i).setActualMoney(money.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
            }
        }
        PageInfo<Cost> pages = new PageInfo<>(costList);
        return JsonData.table(costList,pages.getTotal());
    }


    /**编辑详情*/
    @GetMapping("/edit")
    @ResponseBody
    public Cost edit(Model model, String id){
        return costService.selectById(id);
    }


    /**编辑*/
    @PostMapping("/edit")
    @ResponseBody
    public JsonData edit(Cost cost){
        int a = costService.updateById(cost);
        if (a > 0) {
          return JsonData.success(null,"编辑成功!");
        } else {
          return JsonData.fail("编辑失败");
        }
    }


    /**删除*/
    @PostMapping("/del")
    @ResponseBody
    public JsonData del(String id){
        try{
          costService.deleteById(Integer.parseInt(id));
        }catch(Exception ex){
          JsonData.fail("出现错误");
        }
        return JsonData.success(null,"删除成功");
    }

    /**新增*/
    @PostMapping("/add")
    @ResponseBody
    public JsonData add(Cost cost){
        cost.setStatus("01");
        Date date = new Date();
        cost.setCreateTime(date);
        int num = costService.addByCondition(cost);
        if(num > 0){
          return JsonData.success(null,"添加成功");
        }else {
          return JsonData.fail("添加失败");
        }
    }

以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。

好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~

相关推荐
LawsonJin10 小时前
springboot实现微信小程序支付(服务商和普通商户模式)
spring boot·后端·微信小程序
浮游本尊10 小时前
Java学习第25天 - Spring Cloud Alibaba微服务生态
java
Cg1362691597410 小时前
Super的详解
java
毕设源码-朱学姐10 小时前
【开题答辩全过程】以 便利店库存管理系统为例,包含答辩的问题和答案
java·eclipse
福大大架构师每日一题10 小时前
2025-10-16:有向无环图中合法拓扑排序的最大利润。用go语言,给定一个由 n 个节点(编号 0 到 n-1)构成的有向无环图,边集合用二维数组 edge
后端
只玩代码10 小时前
技术拆解:基于 Rokid CXR-M SDK 构建“AI 实时翻译眼镜伴侣”核心逻辑
后端
码码宇10 小时前
技术拆解:Rokid CXR-M SDK 如何构建流畅AR演讲提词功能
后端
沐眼10 小时前
技术拆解:Rokid CXR-M SDK 构建 AI 智能提词眼镜助手连接到场景落地
后端
阑梦清川10 小时前
docker基础学习通关教程
后端
Nero1810 小时前
代码随想录二刷第九天 | 232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项
java