Bootstrap

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

 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 发放记录

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

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

;