评论

#小程序云开发挑战赛#-运动会管理系统-业余爱好队

运动会管理系统适用于各级各类学校(单位)召开运动会进行在线报名管理查询,可以同时有多个单位使用。

 

运动会管理系统适用于各级各类学校(单位)召开运动会进行在线报名管理查询,可以同时有多个单位使用。召开运动会是一件很繁琐的事情,团队上报名单后,工作人员需要对名单进行分组整理,工作量很大,且数据容易搞错,运动会召开期间,检录、上场、终点记录、发放奖品都需要比赛数据,传统的比赛,需要安排工作人员跑动传递纸质数据,应用本系统后,所有比赛数据可以在小程序里共享查阅,既准确又方便;面对当前疫情,同时也减少人员聚集。

基本思路是:单位注册后,管理员设置比赛分组、设置各组项目,设置各团队,设置裁判、给各裁判赋权,设置比赛日程等基础功能。然后各领队登录,可以添加运动员,同时可以给运动员报项目。运动员也可自己登录后填报项目。比赛期间,裁判登录后,可以依据管理员赋予的权限,对各个比赛项目进行运动员检录、安排运动员上场、记录运动员成绩、对比赛进行裁决(转下一赛程或确定名次)。管理员可以控制领队、运动员、裁判的登录权限,可以控制数据是否公开,如果设为数据公开,任何人可即时查阅报名、比赛的实时数据。管理员还可以下载报名后按项目分类运动员名单,可以下载比赛日程表等。

管理员、领队、裁判员可以使用密码登录,也可以使用“手机号+验证码”登录。管理员可以清理所有比赛数据。领队可以初始化运动员登录密码。各类人员登录后都可以修改基本信息、登录密码。

打开首页下“关于”页面中,选择不同身份,可以查阅详细的使用说明。

所有人员打开本系统后,在征得用户同意的情况下,读取地址确定当前所在省市县(区),注册时即切换到相应的区县进行信息填写。

开发本系统运用到如下技术:微信组件开发、云数据库开发、云文件存储、阿里云验证短信,百度位置获取。

程序架构图

项目文件说明:

本软件常用变量、对象、数组名说明:

  

  对象、变量、数组:

  dw、danwei-单位对象,与数据集合danwei对应,dwid-单位id,dwmc-单位名称,diqu-地区,ydhmc-运动会名称;

  fz、fenzu-分组,指的是运动会分组,与数据集合fenzu对应,fzid-分组id,zm-组名;

  xiangmu、xm-项目,比赛项目,与数据集合xiangmu对应,xmid-项目id,xmm-项目名;

  td、tuandui-团队,与数据集合tuandui对应,tdid-团队id,tdmc-团队名称,ldsj-领队手机;

  caipan、cp-裁判,与数据集合caipan对应,cpid-裁判id,cpsj-手机,cpxm-裁判姓名;

  yundongyuan、ydy-运动员,与数据集合yundongyuan对应,bh-编号,xm-姓名;

  

  其他数据集合:

  baoming-报名数据集合,运动员报名数据,下次运动会报名覆盖,建议每次报名前先清空;

  bisaishuju-比赛数据集合,比赛过程中记录数据,下次比赛覆盖,建议正式比赛前先清空;

  chengji-成绩数据集合,比赛结束,获奖者数据,长久保存,便于查阅;

  

  方法名:

  hqsj-获取数据,hqfz-获取分组,hqxm-获取项目,hqcp-获取裁判,hqydy-获取运动员,一般是页面(组件)加载时读取数据,需要重新获取时也会调用此方法,返回对象数组的第一个数据对象

  xzfz-选中分组,xzxm-选中项目,xzcp-选中裁判,一般是下拉框选中时触发的方法,返回选中的对象;

  ip??-一般是input组件触发,对绑定变量进行赋值;

  

  文件夹说明:

  

  pages-页面文件夹,这里的每个页面都含有tab面板

  pages/caipan-裁判页面

  pages/default-首页

  pages/guanliyuan-管理员页面

  pages/lingdui-领队页面

  pages/yundongyuan-运动员页面

  

  component-组件文件夹

  component/caipan-“裁判”页面所用的组件

  component/caipan/caipan-裁判页面裁判面板所用组件

  component/caipan/caipan/caijue-裁决组件

  component/caipan/caipan/jianlu-检录组件

  component/caipan/caipan/jilu-记录组件

  component/caipan/caipan/shangchang-上场组件

  component/caipan/shezhi-裁判页面设置面板所用组件

  

  component/default/about-“关于”页面组件

  component/default/about/gly-管理员使用说明

  component/default/about/cp-裁判使用说明

  component/default/about/ld-领队、运动员使用说明

  

  component/default/chakan-“查看”页面组件

  component/default/chakan/bisaijindu-比赛情况

  component/default/chakan/bisaixiangmu-比赛项目

  component/default/chakan/bmtj-报名统计

  component/default/chakan/mcb-名次榜

  component/default/chakan/tdcj-团队成绩

  component/default/chakan/tdjf-团队积分

  component/default/chakan/tdtj-团队统计

  

  component/default/denglu-“登录”页面组件

  component/default/denglu/caipan-裁判登录

  component/default/denglu/guanliyuan-管理员登录

  component/default/denglu/lingdui-领队登录

  component/default/denglu/yundongyuan-运动员登录

  

  component/default/zhuce-“注册”页面组件

  

  component/guanliyuan-管理员组件

  component/guanliyuan/caipan-“裁判”面板

  component/guanliyuan/caipan/tianjiacaipan-添加裁判

  component/guanliyuan/caipan/caipanfuquan-裁判赋权

  

  component/guanliyuan/shezhi-管理员设置面板

  component/guanliyuan/shezhi/jibenshezhi-基本设置

  component/guanliyuan/shezhi/richengshezhi-日程设置

  

  component/guanliyuan/tuandui-团队管理

  

  component/guanliyuan/xiangmu-项目管理

  component/guanliyuan/xiangmu/fenzu-分级管理

  component/guanliyuan/xiangmu/xiangmu-项目管理

  

  component/lingdui-领队组件

  component/lingdui/baoxiangmu-报项目

  component/lingdui/shezhi-设置

  component/lingdui/yundongyuan-运动员管理

  

  component/yundongyuan-运动员组件

  component/yundongyuan/baoxiangmu-报项目

  component/yundongyuan/shezhi-设置

   

  compoent/tongyong-通用组件

    biaoti-标题;bmlb-报名列表;bslb-比赛数据列表;button-按钮;caipan-裁判下拉框;

    cjlb-比赛成绩列表;danwei-单位选择组件;fenzu-分组下拉框;richeng-日程列表;

    saicheng-赛程下拉框;tuandui-团队下拉框;xiangmu-分组项目组合下拉框;

    xiugaimima-修改密码;yanzheng-验证码;ydybh-运动员编号下拉框;ydylb-运动员列表。 

  


效果图展示:

首页:

查看:

管理员:

领队:

运动员:

裁判员:

部分功能代码:

收发阿里云短信云函数:

// 云函数入口文件

const cloud = require('wx-server-sdk')

const Core = require('@alicloud/pop-core');

const accessKeyId = '' // 你的appid

const accessKeySecret = '' // 你的secret

const SignName = '运动会管理微信小程序' // 你的签名 

const TemplateCode = 'SMS_179130189' // 你的模版CODE 

var client = new Core({

  accessKeyId,

  accessKeySecret,

  endpoint: 'https://dysmsapi.aliyuncs.com',

  apiVersion: '2017-05-25'

})

let params = {

    SignNameJson: JSON.stringify([SignName]),

    TemplateCode: TemplateCode,

}

cloud.init({})

exports.main = async(event, context) => {

  return new Promise(async(resolve, reject) => {

      try {

          var xx={yzm:'xxxx',ts:''}

          if(!event.phone) xx={yzm:'xxxx',ts:'手机不能为空!'}

          if(!/^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(event.phone)) xx.ts='手机号码格式错误!'

          if(xx.ts==''){

            let code = Math.floor(Math.random() * 9000) + 1000

            //发送短信 

            let {

                Code

            } = await client.request('SendBatchSms', Object.assign({

                PhoneNumberJson: JSON.stringify([event.phone]),

                TemplateParamJson: JSON.stringify([{code}])

            },params), {

                method: 'POST'

            })

            if(Code == 'OK') {xx.yzm=code;xx.ts='发送成功!'}

          }

          resolve(xx)

      } catch (error) { 

          resolve({yzm:'xxxx',ts:'发送出错!'})

      }

  })

}

批删除云函数:

// 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init({env: '',})

const db = cloud.database()

// 云函数入口函数

exports.main = async (event, context) => {

  const wxContext = cloud.getWXContext()

  try {

    return await db.collection(event.jihe).where(event.tiaojian).remove()

  } catch(e) {

    console.error(e)

  }

  return {

    event,

    openid: wxContext.OPENID,

    appid: wxContext.APPID,

    unionid: wxContext.UNIONID,

  }

}

自定义button组件:

wxml文件:     

     

js文件:

Component({

  /**

   * 组件的属性列表

   */

  properties: {

    width:{

      type:String,

      value:'160rpx'

    },

    text:{

      type:String,

      value:'确定'

    }

  },

  /**

   * 组件的初始数据

   */

  data: {


  },


  /**

   * 组件的方法列表

   */

  methods: {

    bttap(){      

      this.triggerEvent("bttap",'')

    }

  }

})

wxl文件:

.zdybt{  

  display: flex;

  flex-direction: column;

  align-items:center;   

  margin: 5rpx;

  border-width: 1rpx;

  border-color: black;

  border-style: solid; 

  background-color: gold;  

}

.zdybt2{  

  display: flex;

  flex-direction: column;

  align-items:center;  

  background-color: goldenrod; 

}

作品二维码:

团队介绍:张建明,男,1988年中师毕业,从事中小学教学工作三十余年,曾教过中小学数学、物理、计算机等课程,现在浙江省杭州市淳安县教育局招生考试服务中心工作。中师读书时接触计算机以来,一直是计算机编程爱好者,自学了BASIC语言、C语言、C#语言、SQL数据库查询语言、JS语言等,用VB6.0编写过中小学排课软件、自2003年起一直用Visual Studio+SQLserver系列软件做过一些学校报名、信息管理类桌面软件或web网站,其中淳安县中考报名录取管理系统已平稳使用七年。 2019年下半年初步接触微信小程序编程,做了高考体检数据录入小程序,疫情和暑假期间自学了VUE前端编程,对小程序编程有了进一步的理解,于是8月份开始,试着编写了的运动会管理小程序,本意是开学后给各中小学开运动会使用,刚好赶上“小程序云开发挑战赛”,于是就报名参加了这一比赛,希望我的作品能获奖。




最后一次编辑于  2020-09-17  
点赞 18
收藏
评论

11 个评论

  • lěi
    lěi
    2020-09-11

    功能挺好,就是ui有点难受

    2020-09-11
    赞同 2
    回复
  • 尽我一世温柔
    尽我一世温柔
    发表于移动端
    2020-09-21
    很好。加油加油加油
    2020-09-21
    赞同 1
    回复
  • 青寒
    青寒
    2020-09-22

    这个业务场景可以深挖。

    2020-09-22
    赞同
    回复 6
    • 张建明
      张建明
      2020-09-24
      我的小程序就是运动会全程管理
      2020-09-24
      回复
    • 青寒
      青寒
      2020-09-24回复张建明
      比如开始检录的时候,系统直接给参赛运动员推送通知。
      2020-09-24
      回复
    • 张建明
      张建明
      2020-09-24
      好的,我考虑把它补上去,问题是学生得有手机、还得打开这个小程序,同时还要登录在那里
      2020-09-24
      回复
    • 张建明
      张建明
      2020-09-24回复青寒
      谢谢
      2020-09-24
      回复
    • 青寒
      青寒
      2020-09-24回复张建明
      可能“有手机”这个是最主要的,其他的推送好说,如果是全程管理,那学生肯定是登录小程序报名,教育行业应该可以申请长期订阅模板,到时候直接推送订阅消息;或者和公众号结合,给学生推公众号模板消息。
      当然这些都是后续可能完善的内容,现阶段弄好比赛的事就好。
      2020-09-24
      回复
    查看更多(1)
  • 金玉兰,林秀绿
    金玉兰,林秀绿
    发表于移动端
    2020-09-21
    很好,祝你成功
    2020-09-21
    赞同
    回复 1
    • 张建明
      张建明
      2020-09-21
      谢谢
      2020-09-21
      回复
  • 冰雪
    冰雪
    发表于移动端
    2020-09-21
    很好,值得推荐
    2020-09-21
    赞同
    回复
  • 冰雪
    冰雪
    发表于移动端
    2020-09-21
    很好,值得推荐
    2020-09-21
    赞同
    回复
  • 冰雪
    冰雪
    发表于移动端
    2020-09-21
    很好,值得推荐
    2020-09-21
    赞同
    回复
  • 璐璐🍟
    璐璐🍟
    发表于移动端
    2020-09-21
    点赞!
    2020-09-21
    赞同
    回复
  • 小布师叔
    小布师叔
    2020-09-07

    一个小小的建议:导航栏第一项(查看)的图片有白色背景

    2020-09-07
    赞同
    回复 1
    • 张建明
      张建明
      2020-09-07
      谢谢,现在修改过了,再看看怎么样?
      2020-09-07
      回复
  • 猛男陈阔
    猛男陈阔
    2020-09-07

    界面可以优化

    2020-09-07
    赞同
    回复 1
    • 张建明
      张建明
      2020-09-07
      谢谢,界面修改过了,请再提宝贵意见
      2020-09-07
      回复

正在加载...

登录 后发表内容