基于.NetCore+Vue的贫困地区儿童资助系统

news/2025/1/21 16:08:59/

 1.业务需求

1.1 业务角色分析

贫困地区儿童资助系统分为用户和管理员两个角色。管理员具有用户管理、贫困儿童信息管理、儿童参与项目管理、资助项目管理、社会资助记录管理、发放记录、统计分析功能;用户具有贫困儿童登记(代填)、通知公告、贫困儿童公示、贫困儿童项目参与、查个人中心功能。

1.2 业务需求分析

用例图,是用于描述系统功能和用户需求的一个工具,通过用例图,可以直观的展示系统的参与者和系统的关系。贫困地区儿童资助系统的中的参与者分为管理员和用户。用户可以通过系统进行注册登录系统,可以在系统中查看所有的贫困儿童信息,查看系统的通知,用户可以直接进行项目资助或者指定资助项目的某个儿童。也可以帮助儿童进行提交资助申请,成为资助儿童。作为管理员,可以去管理该系统的所有人员,维护系统通知,及时为大家通知最新的资助信息,上传系统的封面轮播图,对贫困儿童进行管理,对资助项目进行管理,对社会资助记录、发放记录进行管理,对所有的资助情况有跟踪记录。

2 功能需求

统管理模块

  1. 用户管理:管理员可以添加、修改和删除系统用户账户,查看用户列表信息,通过关键字搜索用户,并根据其角色分配相应的权限。
  2. 系统通知:管理员发布系统级别的通知消息,如系统维护、升级通知和重要通知等,确保有用户可以及时的被通知。
  3. 封面管理:管理员进行上传和更换系统的封面图片,以保持界面的更新和吸引力。

贫困儿童管理模块:

  1. 查看贫困儿童信息:提供详细的儿童个人信息,包括家庭背景、教育状况等。
  2. 移除贫困儿童:允许管理员从系统中移除不再需要资助或有其他原因需要移除的的儿童信息。
  3. 是否显示贫困儿童:管理儿童信息在前端界面的公开展示与否。
  4. 贫困儿童登记:提供一个表单,用于录入新发现的贫困儿童信息至系统。
  5. 贫困儿童公示:将资助儿童的信息以列表的形式进行公示。

资助项目管理模块:

  1. 删除资助项目:管理员可以进行移除已完成或取消的资助项目。
  2. 参与项目的儿童:列出所有参与特定资助项目的儿童名单,并提供管理功能。
  3. 修改资助项目:让管理员能够更新资助项目的详细信息,如资金使用情况、进度更新等。
  4. 搜索资助项目:通过关键词快速找到想要资助的项目。
  5. 参与资助项目:使其能选择特定的儿童或项目进行资助。
  6. 添加贫困儿童:向项目中添加新的贫困儿童作为资助对象。
  7. 删除贫困儿童:从特定资助项目中移除贫困儿童。
  8. 我的捐赠:供资助者查看自己过去的捐赠记录和当前捐赠状态。

记录管理模块:

  1. 社会资助记录:详细记录社会各界对贫困儿童的资助情况,包括资助金额、时间、资助者信息等。
  2. 发放记录:跟踪和记录资助款项的分配和实际发放情况,确保资助的正确使用。

3 系统总体设计

3.1系统功能结构

       贫困儿童资助系统通过现代信息技术手段,为贫困地区的儿童提供有效的资助管理服务,该系统主要分为四个模块,系统模块包含用户管理,系统通知,封面通知;贫困儿童管理模块包含查看贫困儿童信息,移除贫困儿童,可设置是否显示贫困儿童信息,贫困儿童等级,公示儿童信息;资助项目管理模块包含对资助项目增删改查,查看参与项目的儿童,查看我的捐赠;记录管理模块包含社会资助记录,发放记录。

4 系统开发环境搭建

4.1 硬件配置

CPU:Intel(R) Core(TM) i5-8250U

内存:大于8GB

硬盘:SAMSUNG MZNLN128HAHQ-000H1

显卡:Intel(R)UHD Graphics 620

4.2 软件环境配置

操作系统:Windows10

开发工具:Visual Studio 2022,VScode

数据库管理:SQL Server,SQL Server Management

5系统功能实现

5.1 贫困儿童

管理员拥有对贫困儿童进行管理的权力。管理员可以决定是否在前台展示贫困儿童的信息,通过关键字搜索查询贫困儿童的信息。管理员还可以查看贫困儿童的详细信息,包括他们的背景、家庭情况以及需求等,以便更好地了解他们的困境并提供帮助。管理员还可以根据需要对由于信息错误或者不再需要展示等原因删除贫困儿童的信息。

用户可以在前台界面中看到一个专门展示贫困儿童信息的公示界面。这个界面设计得非常直观,让用户能够一目了然地了解到贫困儿童的基本情况。在这个公示界面上,用户可以看到每个贫困儿童的照片、姓名、年龄、性别等基本信息。这些信息以列表的形式展示,方便用户快速浏览和了解每个贫困儿童的具体情况。

关键代码如下: 

//查询贫困儿童表var items = DbContext.Queryable<Children>().WhereIF(input.Name.IsNotNullOrNotWhiteSpace(), x => x.Name.Contains(input.Name)).WhereIF(input.Gender.IsNotNullOrNotWhiteSpace(), x => x.Gender.Contains(input.Gender)).WhereIF(input.DateOfBirthRange.HasItem(), x => x.DateOfBirth >= input.DateOfBirthRange[0] && x.DateOfBirth <= input.DateOfBirthRange[1]).WhereIF(input.HouseholdRegistrationAddress.IsNotNullOrNotWhiteSpace(), x => x.HouseholdRegistrationAddress.Contains(input.HouseholdRegistrationAddress)).WhereIF(input.CurrentResidentialAddress.IsNotNullOrNotWhiteSpace(), x => x.CurrentResidentialAddress.Contains(input.CurrentResidentialAddress)).WhereIF(input.FamilyBackground.IsNotNullOrNotWhiteSpace(), x => x.FamilyBackground.Contains(input.FamilyBackground)).WhereIF(input.HealthCondition.IsNotNullOrNotWhiteSpace(), x => x.HealthCondition.Contains(input.HealthCondition)).WhereIF(input.FamilyHead.IsNotNullOrNotWhiteSpace(), x => x.FamilyHead.Contains(input.FamilyHead)).WhereIF(input.FamilyHeadPhone.IsNotNullOrNotWhiteSpace(), x => x.FamilyHeadPhone.Contains(input.FamilyHeadPhone)).WhereIF(input.Photo.IsNotNullOrNotWhiteSpace(), x => x.Photo.Contains(input.Photo)).WhereIF(input.AuditStatus.HasValue, x => x.AuditStatus == input.AuditStatus).WhereIF(input.IsPutaway.HasValue, x => x.IsPutaway == input.IsPutaway).WhereIF(input.CreatorId.HasValue, x => x.CreatorId == input.CreatorId).WhereIF(input.Id.HasValue, x => x.Id == input.Id).OrderByDescending(x => x.CreationTime).Select<ChildrenDto>().ToPageList(input.Page, input.Size, ref totalCount);foreach (var item in items){//查询加入的项目var projectIds=DbContext.Queryable<FundingChildren>().Where(x => x.ChildrenId == item.Id&&x.AuditStatus== AuditStatus.审核成功).Select(x => x.FundingProjectId).ToList();item.FundingProjectList = DbContext.Queryable<FundingProject>().Where(x => projectIds.Contains(x.Id)&&x.IsCompleted==false).Select<FundingProjectDto>().ToList();item.UserDto = DbContext.Queryable<AppUser>().Where(x => x.Id == item.UserId).Select<AppUserDto>().ToList().FirstOrDefault() ?? new AppUserDto();}

5.2 资助项目

管理员能够对资助项目进行管理。可以查看包括但不限于资金的使用情况、项目的进度更新等。通过这样的操作,管理员可以确保项目信息的及时性和准确性,以便更好地管理和监督资助项目的执行情况。管理员还可以查看该项目下有多少个儿童参加了此项目。这一功能可以帮助管理员了解项目的实际参与情况,从而评估项目的影响力和覆盖范围。通过查看参加项目的儿童数量,管理员可以更好地了解项目的实施效果,并据此做出相应的调整和决策。管理员还具备对参加了的儿童进行移除的权限。例如他们可能已经离开了该地区或者不再符合项目的参与条件。管理员可以通过系统界面上的相应功能,选择要移除的儿童,并进行移除操作。


用户可以查看所有的资助项目,用户可以对感兴趣的项目进行捐赠,在捐赠过程中,需要填写一些必要的资料,以便能够记录捐赠信息并进行后续的处理。如图5.4-5.5所示。

关键代码: 

 var items = DbContext.Queryable<FundingProject>().WhereIF(input.Title.IsNotNullOrNotWhiteSpace(), x => x.Title == input.Title).WhereIF(input.ProcessStartRange.HasValue, x => x.Process >= input.ProcessStartRange).WhereIF(input.ProcessEndRange.HasValue, x => x.Process <= input.ProcessEndRange).WhereIF(input.Files.IsNotNullOrNotWhiteSpace(), x => x.Files == input.Files).WhereIF(input.Id.HasValue, x => x.Id == input.Id).OrderByDescending(x => x.CreationTime).Select<FundingProjectDto>().ToPageList(input.Page, input.Size, ref totalCount);

5.3 社会资助记录

管理员可以查看所有社会资助记录,包括每条记录的详细信息,如资助项目名称、资助数量、物品种类等。管理员可以检查每条资助记录是否已经全部发放,系统应显示每个项目的发放状态,包括已发放和未发放的数量。管理员可以查看与特定资助项目相关的所有记录,以便对该项目的整体进展进行监控和管理。

用户可以在个人中心或相应的捐赠页面查看自己捐赠的物品列表,包括物品名称、数量、是否发放等消息。用户也可以选择隐藏自己的捐赠信息,以便保护个人隐私。在捐赠物品尚未发放之前,用户应有权取消自己的捐赠。

关键代码:     

      //查询社会资助记录表var items = DbContext.Queryable<FundingProjectDet>().WhereIF(input.Name.IsNotNullOrNotWhiteSpace(), x => x.Name.Contains(input.Name)).WhereIF(input.Unit.IsNotNullOrNotWhiteSpace(), x => x.Unit.Contains(input.Unit)).WhereIF(input.CreatorId.HasValue, x => x.CreatorId == input.CreatorId).WhereIF(input.IsComm.HasValue, x => x.IsComm == input.IsComm).WhereIF(input.QtyStartRange.HasValue, x => x.Qty >= input.QtyStartRange).WhereIF(input.QtyEndRange.HasValue, x => x.Qty <= input.QtyEndRange).WhereIF(input.Remark.IsNotNullOrNotWhiteSpace(), x => x.Remark.Contains(input.Remark)).WhereIF(input.LinkName.IsNotNullOrNotWhiteSpace(), x => x.LinkName.Contains(input.LinkName)).WhereIF(input.Phone.IsNotNullOrNotWhiteSpace(), x => x.Phone.Contains(input.Phone)).WhereIF(input.Leave.IsNotNullOrNotWhiteSpace(), x => x.Leave.Contains(input.Leave)).WhereIF(input.Id.HasValue, x => x.Id == input.Id).WhereIF(input.FundingProjectId.HasValue, x => x.FundingProjectId == input.FundingProjectId).OrderByDescending(x => x.CreationTime).Select<FundingProjectDetDto>().ToPageList(input.Page, input.Size, ref totalCount);

5.2.4 发放记录

管理员可以查看所有发放记录,包括每条记录的详细信息,如资助项目名称、资助数量、发放的状态等。

用户实时跟踪自己捐赠物品的去向。一旦用户完成了捐赠行为,系统便会立即生成一份详细的记录,这份记录不仅包括了捐赠物品的基本信息,还详细展示了这些物品的流转情况。


http://www.ppmy.cn/news/1564999.html

相关文章

ubuntu 系统 ,docker建的服务 ,其他局网机器可以通过IP:端口的方式访问。不是docker的不行。

根据您的描述&#xff0c;docker 建的服务可以通过 IP&#xff1a;端口的方式被局网其他机器访问&#xff0c;而非 docker 的服务不行&#xff0c;以下是可能的原因及解决方法&#xff1a; 网络配置方面 • 检查非 docker 服务的网络监听配置&#xff1a;确保非 docker 服务是…

Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像

一、制作openjdk8基础镜像【基于自定义alpine-3.18.0:v1 】 docker pull maven:3.5.0-jdk-8-alpine 78.56 MB https://hub.docker.com/_/maven/tagspage8&namealpine openjdk二进制下载地址 https://blog.csdn.net/fenglllle/article/details/124786948 https://adoptope…

RabbitMQ集群安装rabbitmq_delayed_message_exchange

1、单节点安装rabbitmq安装延迟队列 安装延迟队列rabbitmq_delayed_message_exchange可以参考这个文章&#xff1a; rabbitmq安装延迟队列-CSDN博客 2、集群安装rabbitmq_delayed_message_exchange 在第二个节点 join_cluster 之后&#xff0c;start_app 就会报错了 (CaseC…

封装svg图片展示及操作组件——svgComponent——js技能提升

template部分 <template><div class"canvas-wrapper" ref"canvasWrapper"><svg:viewBox"computedViewBox"ref"svgCanvas"xmlns"http://www.w3.org/2000/svg"xmlns:xlink"http://www.w3.org/1999/xlink…

UDP/TCP ②-三次握手 || 四次挥手 || 确认应答 || 超时重传

这里是Themberfue 在讲完了UDP协议后&#xff0c;我们进入更为重要也是更为复杂的TCP协议&#xff0c;探究其是如何让数据可靠传输的。 TCP协议报文格式 关于TCP协议的一些特点我也不过多赘述了&#xff0c;详情请见&#xff1a;TCP✨TCP&#xff1a;有连接、可靠传输、面向字…

人工智能之深度学习_[3] -PyTorch自动微分模块和构建线性回归模型

文章目录 自动微分模块9.1 梯度基本计算9.2 梯度下降法求最优解9.3 梯度计算注意点9.4 自动微分模块应用 10 PyTorch构建线性回归模型 自动微分模块 自动微分就是自动计算梯度值,也就是计算导数。 什么是梯度 对函数求导的值就是梯度 什么是梯度下降法 是一种求最优梯度值的方法…

以太网实战AD采集上传上位机——FPGA学习笔记27

一、设计目标 使用FPGA实现AD模块驱动采集模拟电压&#xff0c;通过以太网上传到电脑上位机。 二、框架设计 数据位宽转换模块&#xff08;ad_10bit_to_16bit&#xff09;&#xff1a;为了方便数据传输&#xff0c;数据位宽转换模块实现了将十位的 AD 数据转换成十六位&#…

畅游Diffusion数字人(14):基于3D人体网格的语音驱动手势视频生成 ECCV 2024

畅游Diffusion数字人(0):专栏文章导航 前言:根据语音输入生成与说话内容、情感和节奏相匹配的自然、流畅且逼真的手势视频。该技术在虚拟形象、虚拟现实、动画制作等领域具有重要应用价值。然而这方面的研究非常少,这篇博客解读一篇ECCV 2024的最新论文。 目录 研究背景与挑…