#小程序云开发挑战赛#-运动会管理系统-业余爱好队
[图片] 运动会管理系统适用于各级各类学校(单位)召开运动会进行在线报名管理查询,可以同时有多个单位使用。召开运动会是一件很繁琐的事情,团队上报名单后,工作人员需要对名单进行分组整理,工作量很大,且数据容易搞错,运动会召开期间,检录、上场、终点记录、发放奖品都需要比赛数据,传统的比赛,需要安排工作人员跑动传递纸质数据,应用本系统后,所有比赛数据可以在小程序里共享查阅,既准确又方便;面对当前疫情,同时也减少人员聚集。 基本思路是:单位注册后,管理员设置比赛分组、设置各组项目,设置各团队,设置裁判、给各裁判赋权,设置比赛日程等基础功能。然后各领队登录,可以添加运动员,同时可以给运动员报项目。运动员也可自己登录后填报项目。比赛期间,裁判登录后,可以依据管理员赋予的权限,对各个比赛项目进行运动员检录、安排运动员上场、记录运动员成绩、对比赛进行裁决(转下一赛程或确定名次)。管理员可以控制领队、运动员、裁判的登录权限,可以控制数据是否公开,如果设为数据公开,任何人可即时查阅报名、比赛的实时数据。管理员还可以下载报名后按项目分类运动员名单,可以下载比赛日程表等。 管理员、领队、裁判员可以使用密码登录,也可以使用“手机号+验证码”登录。管理员可以清理所有比赛数据。领队可以初始化运动员登录密码。各类人员登录后都可以修改基本信息、登录密码。 打开首页下“关于”页面中,选择不同身份,可以查阅详细的使用说明。 所有人员打开本系统后,在征得用户同意的情况下,读取地址确定当前所在省市县(区),注册时即切换到相应的区县进行信息填写。 开发本系统运用到如下技术:微信组件开发、云数据库开发、云文件存储、阿里云验证短信,百度位置获取。 程序架构图 [图片] 项目文件说明: 本软件常用变量、对象、数组名说明: 对象、变量、数组: 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月份开始,试着编写了的运动会管理小程序,本意是开学后给各中小学开运动会使用,刚好赶上“小程序云开发挑战赛”,于是就报名参加了这一比赛,希望我的作品能获奖。 ”