基于Python的校园爱心帮扶平台

作者主页:IT毕设梦工厂✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

一、开发环境

  • 开发语言:Python
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:Django
  • 前端:Vue

二、系统功能模块

  • 角色:用户、管理员
  • 功能:
    用户
    物品捐赠管理、物品义卖管理、帮扶行动管理、校内求助管理、爱心资讯;
    管理员
    用户管理、物品分类管理、物品捐赠管理、物品义卖管理、帮扶行动管理、校内求助管理、爱心资讯管理。

三 、系统界面展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、部分代码设计

class Heart:
  """
  爱心类
  """

  def __init__(self, generate_frame=20):
    self._points = set() # 原始爱心坐标集合
    self._edge_diffusion_points = set() # 边缘扩散效果点坐标集合
    self._center_diffusion_points = set() # 中心扩散效果点坐标集合
    self.all_points = {} # 每帧动态点坐标
    self.build(2000)

    self.random_halo = 1000

    self.generate_frame = generate_frame
    for frame in range(generate_frame):
      self.calc(frame)

  def build(self, number):
    # 爱心
    for _ in range(number):
      t = random.uniform(0, 2 * pi) # 随机不到的地方造成爱心有缺口
      x, y = heart_function(t)
      self._points.add((x, y))

    # 爱心内扩散 重复若干次
    for _x, _y in list(self._points):
      for _ in range(3):
        x, y = scatter_inside(_x, _y, 0.05)
        self._edge_diffusion_points.add((x, y))

    # 爱心内再次扩散 调整参数 再做一次填充
    point_list = list(self._points)
    for _ in range(4000):
      x, y = random.choice(point_list)
      x, y = scatter_inside(x, y, 0.17)
      self._center_diffusion_points.add((x, y))

  @staticmethod
  #让心中间有挤压感
  def calc_position(x, y, ratio):
    # 调整缩放比例
    force = 1 / (((x - CANVAS_CENTER_X) ** 2 + (y - CANVAS_CENTER_Y) ** 2) ** 0.520) # 魔法参数

    dx = ratio * force * (x - CANVAS_CENTER_X) + random.randint(-1, 1)
    dy = ratio * force * (y - CANVAS_CENTER_Y) + random.randint(-1, 1)

    return x - dx, y - dy

  def calc(self, generate_frame):
    ratio = 10 * curve(generate_frame / 10 * pi) # 圆滑的周期的缩放比例

    halo_radius = int(4 + 6 * (1 + curve(generate_frame / 10 * pi)))
    halo_number = int(3000 + 4000 * abs(curve(generate_frame / 10 * pi) ** 2))

    all_points = []

    # 光环
    heart_halo_point = set() # 光环的点坐标集合
    for _ in range(halo_number):
      t = random.uniform(0, 2 * pi) # 随机不到的地方造成爱心有缺口
      x, y = heart_function(t, shrink_ratio=11.6) # 魔法参数
      x, y = shrink(x, y, halo_radius)
      if (x, y) not in heart_halo_point:
        # 处理新的点
        heart_halo_point.add((x, y))
        x += random.randint(-14, 14)
        y += random.randint(-14, 14)
        size = random.choice((1, 2, 2))
        all_points.append((x, y, size))

    # 轮廓
    for x, y in self._points:
      x, y = self.calc_position(x, y, ratio)
      size = random.randint(1, 3)
      all_points.append((x, y, size))

    # 内容
    for x, y in self._edge_diffusion_points:
      x, y = self.calc_position(x, y, ratio)
      size = random.randint(1, 2)
      all_points.append((x, y, size))

    for x, y in self._center_diffusion_points:
      x, y = self.calc_position(x, y, ratio)
      size = random.randint(1, 2)
      all_points.append((x, y, size))

    self.all_points[generate_frame] = all_points

  def render(self, render_canvas, render_frame):
    for x, y, size in self.all_points[render_frame % self.generate_frame]:
      render_canvas.create_rectangle(x, y, x + size, y + size, width=0, fill=HEART_COLOR)


五、论文参考

在这里插入图片描述

结语

大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我

精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值