基于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("添加失败");
        }
    }

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

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

相关推荐
魔道不误砍柴功15 分钟前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_23415 分钟前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨18 分钟前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
种树人2024081918 分钟前
如何在 Spring Boot 中启用定时任务
spring boot
Chrikk2 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*2 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue2 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man2 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang
测开小菜鸟2 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
P.H. Infinity3 小时前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq