基于SpringBoot+Vue的无偿献血后台管理系统

浏览 11 次

Voluntary Blood Donation Management System Based on SpringBoot+Vue

该系统是一个基于SpringBoot和Vue框架开发的无偿献血后台管理系统,旨在实现献血流程的数字化管理。核心功能包括献血者信息管理、献血记录追踪、血液库存监控、活动预约与统计报表生成等。该系统设计适用于公益组织或医疗机构,支持高效的信息管理与数据分析,可作为毕业设计或实际项目实现的参考案例,提升献血服务的管理效率与透明度。

SpringBootVue权限控制后台管理前后端分离PC端

项目简介

该系统是一个基于SpringBoot和Vue框架开发的无偿献血后台管理系统,旨在实现献血流程的数字化管理。核心功能包括献血者信息管理、献血记录追踪、血液库存监控、活动预约与统计报表生成等。该系统设计适用于公益组织或医疗机构,支持高效的信息管理与数据分析,可作为毕业设计或实际项目实现的参考案例,提升献血服务的管理效率与透明度。

项目基础信息

适合专业计算机科学与技术 / 软件工程 / 信息管理
技术栈SpringBoot + Vue + MySQL + Redis
系统架构前后端分离
项目类型后台管理系统
运行环境JDK1.8、MySQL5.7+、Node14+
开发工具IntelliJ IDEA、VSCode、Git

项目包含内容

  • 前后端完整源码
  • 数据库完整脚本
  • 参考论文(如有)
  • 部署软件及部署说明
  • 项目介绍文档(如有)

项目详细介绍

一、项目背景介绍:

第一:完善献血者管理,建立一个真正的“献血者信息管理系统”,既能为献血者提供便利的服务,又能为采供血机构和卫生行政部门提供一个献血招募决策依据。

第二:我国感染艾滋病、丙肝、乙肝等患者不断增多,其中输血感染已成为一个主要感染途径,如何从源头上堵住携带或感染艾滋病病毒、各种肝炎病毒者进行献血,确保用血者的安全已经变得刻不容缓。

第三:该系统运用计算机网络技术的发展,带来了新的设计思想、管理思想和系统实行的方式,它使血液管理系统能主动实现这些变化,确保采供血业务的正常开展。

本课题依此为出发点,以建立一个网站为基础,在基础上实现给医疗行业提供一个平台,无偿献血者管理服务系统就是为各地中心血站、卫生行政主管部门提供一个决策依据,帮助中心血站和卫生主管部门掌握献血者的情况[1],稳定和壮大无偿献血者队伍,保证有充足的血源,建立全面、快速、有效的血液预警机制。献血者信息系统建立能保障患者充足、安全输血,满足各医疗单位的需求和为献血者提供血液化验结果方面的查询等而搭建深层次的献血者人性化服务和管理平台,实现新形势、新阶段献血者服务管理工作方式的转变,为当前献血招募和管理的重要工作提供了坚实的基础。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。

Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。

  1. Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。

  2. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

  3. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。

  4. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。

  5. Html:HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。

超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。

三、系统功能模块介绍:

16aa44f6ac400e6d1e01a04e6983e62f.png

四、数据库设计:

1:'管理员表'(admin)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | id |

| user_name | varchar | NULL | 用户名 |

| pass_word | varchar | NULL | 密码 |

| nick_name | varchar | NULL | 昵称 |

| head_img | varchar | NULL | 头像 |

2:'审核表'(audit)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | id |

| user_id | bigint | NULL | 用户ID |

| organ_id | bigint | NULL | 器官ID |

| remark | varchar | NULL | 备注 |

| status | int | NULL | 申请状态[0:审核中,1:审核通过,2审核不通过,3:撤销申请] |

| create_time | datetime | NULL | 创建时间 |

3:'逝者信息表'(dead_info)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | id |

| user_id | bigint | NULL | 用户ID |

| create_time | datetime | NULL | 创建时间 |

| end_age | int | NULL | 享年岁数 |

| info | varchar | NULL | 逝世原因 |

| address | varchar | NULL | 家庭住址 |

| home_name | varchar | NULL | 家庭联系人 |

| home_tel | varchar | NULL | 家庭电话 |

4:'器官类型表'(organ)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | id |

| organ_name | varchar | NULL | 器官名称 |

| attention | text | NULL | 捐赠注意事项 |

5:'用户表'(users)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | id |

| user_name | varchar | NULL | 用户名 |

| pass_word | varchar | NULL | 密码 |

| tel | varchar | NULL | 联系方式 |

| header_img | varchar | NULL | 基本照片 |

| name | varchar | NULL | 真实姓名 |

| sex | int | NULL | 性别[0:未知,1:男,2:女] |

| age | int | NULL | 年龄 |

| create_time | datetime | NULL | 创建时间 |

五、功能模块:

  1. 管理员登录:当管理员在浏览器上输入项目访问地址进入时,会优先显示系统的登录页面,进入登录界面之后,管理员输入刚好的账号密码进行登录,当管理员选择退出时,可以直接关闭浏览器,也可通过管理员管理选择退出登录操作。

    管理员登录

  2. 管理员信息页面:当系统管理员登录后,可以查看所有管理员列表,会对应显示每个管理员的基本信息

    管理员信息页面

  3. 用户基本信息管理:当有新的献血者前来献血是,管理员需要在此页面登记献血者的基本信息情况,以便后面统计每一位献血者的总献血量。

    用户基本信息管理

  4. 献血者体检信息:每一位献血者在献血之前都需要进行身体检查,献血中心的护士人员都是为他们做免费的血液检查,以确保每一份鲜血都是健康可用的

    献血者体检信息

  5. 体检结果管理:界面记录每一位献血者的体检结果信息,如果体检合格,医护人员才会为改用户进行血液抽取工作

    体检结果管理

  6. 献血记录:该界面用来记录每一位献血者总的献血次数和总的献血量,当献血量达到一定的标准,系统将会把改用户记录到表彰档案中。

    献血记录

  7. 稀有血型管理:该界面记录着每一位献血者的血液稀有程度,以便为每一位血液需求者提供精确的血型

 稀有血型管理

六、代码示例:

管理员登录



    @PostMapping(/login)

    public ReturnMsg login(String userName,String password){

        QueryWrapper<User> wrapper = new QueryWrapper<>();

        wrapper.lambda().eq(User::getUserName,userName);

        User one = userService.getOne(wrapper);

        if(ObjectUtil.isNotEmpty(one)){

            // 密码比较

            String dbPwd = one.getPassword();

            if(myCipherUtil.encry(password).equals(dbPwd)){

                return ReturnMsg.ok(用户登录成功).put(data,one);

            }

        }

        return ReturnMsg.error(用户名或密码错误);

    }
管理员信息页面



    /**

     * 查询单个

     *

     * @param user

     * @return

     */

    @PostMapping(/findOne)

    public ReturnMsg findOne(@RequestBody User user) {

        return ReturnMsg.ok().put(item, baseService.getOne(new QueryWrapper<>(user)));

    }
用户基本信息管理

    /**

     * 根据id删除信息

     *

     * @param id

     * @return

     */

    @GetMapping(/removeById)

    public ReturnMsg removeById(String id) {

        if (StrUtil.isNotEmpty(id)) {

            return baseService.removeById(id)

                    ? ReturnMsg.ok().put(msg, 信息删除成功)

                    : ReturnMsg.error().put(msg, 信息删除失败);

        }

        return ReturnMsg.error().put(msg, 传入的信息有误,请联系管理员);

    }





    /**

     * 批量删除

     *

     * @param ids 类型 List 集合

     * @return JsonReturn

     */

    @GetMapping(/removeByIds)

    public ReturnMsg delete(List<String> ids) {

        return baseService.removeByIds(ids)

                ? ReturnMsg.ok().put(msg, 信息删除成功)

                : ReturnMsg.error().put(msg, 信息删除失败);

    }
献血者体检信息

    /**

     * 保存修改公用 POST请求方式

     * @param blood 修改或保存的对象

     * @return JsonReturn

     */

    @PostMapping(/saveOrUpdate)

    public ReturnMsg saveOrUpdate(@RequestBody Blood blood) {

        QueryWrapper<Inspect> wrapper = new QueryWrapper<>();

        wrapper.lambda().eq(Inspect::getInspectName,blood.getBloodName());

        wrapper.lambda().eq(Inspect::getInspectResult,合格);

        List<Inspect> list = inspectService.list(wrapper);

        if(list.size() > 0){

            Inspect inspect = list.get(0);

            blood.setBlood(inspect.getInspectBlood());

            return baseService.saveOrUpdate(blood)

                    ? ReturnMsg.ok().put(msg , 提交信息成功)

                    : ReturnMsg.error().put(msg , 信息提交失败);

        }else{

            return ReturnMsg.error().put(msg , 献血成员未在个人信息中找到或体检不合格);

        }

    }
体检结果管理

    @Override

    public void insertFill(MetaObject metaObject) {

        log.info(start insert fill ....);

        this.strictInsertFill(metaObject, createTime, LocalDateTime.class, LocalDateTime.now());

    }



    @Override

    public void updateFill(MetaObject metaObject) {

        log.info(start update fill ....);

        this.strictUpdateFill(metaObject, updateTime, LocalDateTime.class, LocalDateTime.now());

    }
献血记录

    /**

     * 查询所有

     * @param

     * @return

     */

    @GetMapping(/findAll)

    public ReturnMsg findAll(){

        PageDto pageDto = new PageDto();

        List<Blood> list = baseService.list(null);

        pageDto.setList(list);

        pageDto.setTotalNum(list.size());

        return ReturnMsg.ok().put(items,pageDto);

    }
稀有血型管理

    @Override

    public PageDto getListPage(Map<String, Object> params) {

        List<RareDto> resultList = new ArrayList<>();

        QueryWrapper<Rare> wrapper =new QueryWrapper();

        Object rareName = params.get(rareName);

        if(ObjectUtil.isNotEmpty(rareName)){

            wrapper.lambda().like(Rare::getRareName,rareName);

        }

        Object rareBlood = params.get(rareBlood);

        if(ObjectUtil.isNotEmpty(rareBlood)){

            wrapper.lambda().like(Rare::getRareBlood,rareBlood);

        }

        List<Rare> list = baseMapper.selectList(wrapper);

        List<String> donateNameList = new ArrayList<>();

        for (Rare rare : list) {

            donateNameList.add(rare.getRareName());

        }

        if(donateNameList.size()<=0){

            return MyPageUtil.toPage(resultList,params);

        }

        Map<String,Donate> donateMap = donateService.listByDonateNames(donateNameList);

        for (Rare rare : list) {

            RareDto rareDto = new RareDto();

            rareDto.setRareId(rare.getId());

            rareDto.setRareName(rare.getRareName());

            rareDto.setRareBlood(rare.getRareBlood());

            rareDto.setCreateTime(rare.getCreateTime());

            rareDto.setUpdateTime(rare.getUpdateTime());



            Donate donate = donateMap.get(rare.getRareName());

            rareDto.setRareAddress(donate.getDonateAddress());

            rareDto.setRareId(donate.getDonateId());

            rareDto.setRarePhone(donate.getDonatePhone());

            resultList.add(rareDto);

        }

        return MyPageUtil.toPage(resultList,params);

    }

七、论文参考:

论文参考···论文参考图

八、项目总结:

这次设计开始是根据需求做一个大致的系统业务流程图,通过参考全国血液中心等平台的业务模式,再结合系统本身计划服务的市场范围,设计出属于自己的,适用于各大医院无偿献血者信息管理平台的业务模式。再是根据系统的业务流程设计数据库,总共设计了七张表用来存放连接系统所有的数据。

数据库设计完善之后再进行页面的设计搭建,用h5+css+js基本技术搭配Element-UI+Vue等前端框架对界面进行样式统一以及数据双向绑定渲染。基础界面搭建好之后,采用SSM+SpringBoot+Mybatis-plus搭建后端的低层框架,运用ajax实现前后端的交互。在整个系统基本完善之后,进行一次完整的业务流程测试,测试系统的功能、业务bug及设计缺陷,过程中对发现的bug或者缺陷即时进行修改。系统从登陆开始到献血者个人信息的保存、查看等功能都能够顺利实现,最终一个初始版本的,服务于医院的无偿献血者信息管理平台就完成了。

程序设计需要态度严谨、逻辑思维敏捷、良好的编程习惯和系统设计实力。通过这次做项目,也学习到许多宝贵的经验。例如,如何更好的去设计实现系统的业务逻辑、完善界面、设计数据库,写代码也变得更严谨,对一些框架搭建和方法的使用也更加熟练。

联系咨询区

可沟通项目方向、预算、交付周期与答辩时间安排,支持按学校要求定制交付内容。

为你推荐

根据你的浏览兴趣与热门趋势,精选可能适合你的毕业设计项目。

基于JAVA+SpringBoot+Vue+uniapp的微信小程序点餐平台

SpringBootVue微信小程序UniAppMySQL前后端分离支付功能小程序端

该系统是一个基于Java+SpringBoot后端、Vue+Uniapp前端的微信小程序点餐平台。平台实现了在线菜单浏览、购物车管理、订单提交与支付、后台数据统计等核心功能,为餐饮商家提供高效便捷的数字化点餐解决方案。项目采用前后端分离架构,适合作为毕业设计或实际项目开发,展示了现代Web与移动应用系统的完整实现流程。

基于JAVA+SpringBoot+Vue+uniapp+协同过滤算法+爬虫+AI的减肥小程序

SpringBootVueUniAppAI智能推荐算法小程序端

该项目是一个集成了协同过滤推荐算法、网络爬虫与AI技术的智能减肥小程序。系统采用JAVA+SpringBoot构建后端服务,Vue+uniapp实现跨平台前端,旨在为用户提供个性化的饮食与运动方案。核心功能包括基于用户行为的智能推荐、健康数据管理及社区互动,适合作为毕业设计或实际项目开发,展示了现代Web与移动应用在信息管理与系统开发中的综合实践。

基于JAVA+SpringBoot+Vue的自动阅卷分析系统

SpringBootVueMySQLAI智能数据可视化前后端分离PC端

该系统是一个基于JAVA+SpringBoot后端与Vue前端的自动阅卷分析系统,旨在实现高效、准确的试卷批改与学习数据分析。核心功能包括智能识别与评分、错题统计分析、成绩报告生成以及教学效果评估。该系统开发专注于提升阅卷效率与信息管理深度,适用于在线教育、考试机构及毕业设计项目实现,为教学管理与学习分析提供一体化解决方案。

基于JAVA+SpringBoot+Vue+uniApp小程序的心理健康测试平台

SpringBootVue微信小程序UniAppMySQL前后端分离小程序端

该心理健康测试平台是一个集前端小程序与后端管理系统于一体的综合系统开发项目。平台采用JAVA与SpringBoot构建稳健后端,结合Vue与uniApp实现跨端小程序开发,为用户提供便捷的心理测评与报告服务。系统核心功能包括题库管理、在线测试、数据分析及报告生成,旨在通过信息化手段提升心理健康服务的可及性与专业性,适用于毕业设计或实际项目实现。

基于JAVA+SpringBoot+Vue+uniapp的前后端分离的微信小程序的艺术品陶瓷商城

SpringBootVue微信小程序UniAppMySQL前后端分离小程序端

该项目是一个基于JAVA+SpringBoot+Vue+uniapp技术栈的前后端分离微信小程序艺术品陶瓷商城系统。系统开发实现了艺术品陶瓷的在线展示、商品管理、用户订单处理及支付集成等核心功能,为陶瓷艺术品的数字化交易提供了完整的信息管理解决方案,适合作为毕业设计或商业项目实现。

基于JAVA+SpringBoot+Vue的二手车交易系统

SpringBootVueMySQL前后端分离PC端

该系统是一个基于Java+SpringBoot+Vue的二手车交易管理系统,旨在为用户提供便捷的在线车辆买卖平台。核心功能包括车辆信息发布、智能搜索、在线咨询、交易管理及用户评价等模块。通过前后端分离的系统开发模式,实现了高效的信息管理和流畅的用户体验,适合作为毕业设计或实际项目实现,帮助提升二手车交易效率与透明度。

基于JAVA+SpringBoot+Vue的故障报修平台

SpringBootVueMySQL前后端分离PC端

该项目是一个基于Java、SpringBoot和Vue的故障报修平台,旨在实现高效的设备故障管理与维修流程。系统提供用户在线报修、工单分配、进度跟踪及数据统计等核心功能,适用于企业或校园的日常运维。通过前后端分离架构,确保了系统的可扩展性和维护性,适合作为毕业设计或实际项目实现,展示了现代Web信息管理系统的开发实践。

基于JAVA+SpringBoot+Vue的前后端分离的学校请假管理系统

SpringBootVueMySQL权限控制多角色系统前后端分离PC端

这是一个基于JAVA+SpringBoot+Vue的前后端分离学校请假管理系统,旨在实现学生请假流程的数字化与高效管理。系统开发涵盖了学生在线提交申请、辅导员与院系审批、请假记录统计等核心功能,优化了传统纸质流程。该项目可作为信息管理系统的毕业设计或实际应用案例,展示了前后端分离架构在项目实现中的优势。