# wechat_sign_project **Repository Path**: chasonlin/wechat_sign_project ## Basic Information - **Project Name**: wechat_sign_project - **Description**: 微信课堂签到小程序 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 2 - **Created**: 2020-04-30 - **Last Updated**: 2022-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 课堂签到小程序 ## 效果图 ![](imgs/thum.png) ## 介绍 * 此微信小程序用与学生的课堂签到,老师可以登录账号发起签到,管理课程的学生名单等;学生可以通过搜索课程申请加入,并且在签到时间内完成签到。 * 本项目的开发环境为PHP7.3、MySQL8.0,如果版本差别过大可能会存在兼容性问题。 * [phpstudy_pro](https://www.xp.cn/)集成环境包,这也是本项目开发所使用的环境集成包,这里集成了大部分的开发环境,意见是安装,十分方便,推荐使用(当然其他的环境集成软件也可以)。 ## 开始使用 1. 确保本地环境已经搭建完毕,否则功能无法实现 2. 下载项目到本地,运行项目包中的SQL文件,搭建本地数据库,如果不熟悉数据库操作,可以下载可视化工具(例如:Navicat For MySQL) 3. 使用微信开发者工具打开项目,输入你的APPID(如果没有的话可以去微信公众平台注册一个) 4. 进入`miniprogram/assets/js/request.js`,修改url地址,将ip地址改为你电脑当前的ip 运行`cmd`,输入`ipconfig` ![](imgs/ip.png) ```javascript export const request=(url,data)=>{ return new Promise((resolve,reject)=>{ wx.request({ url: 'http://你的ip地址/nfuSignIn-program/server'+url, data: data, success:(result)=>{ resolve(result); }, fail:(err)=>{ reject(err); }, complete:()=>{ wx.hideLoading(); } }); }) } ``` 注意:如果想在手机中编译预览,需要将你的手机和电脑连接同一wifi ## 功能介绍 ### 用户注册 1. 选择身份,`teacher/student` 2. 填写相关信息,账号不能重复 3. 填写正确的班级编号(班级编号可在`SQL`文件中的`class_info`表查询 ### 修改个人信息 1. 在“我的”页面点击顶部标签进入信息修改页面 2. 除了学号/工号不可修改,其余项均可修改,学生修改班级编号将联动更新院系、专业、年级、班级的信息 ### 签到 1. 老师可以在首页中选择要进行签到的课程,发起签到,需要设置签到的位置,签到范围为直线距离10米内 2. 学生点击正在签到的课程进行签到,通过获取当前位置和输入正确的签到口令完成签到,否则失败 ```javascript formSubmit:function(e){ var dis = ''; //保存当前位置到签到中心的直线距离 // 使用腾讯地图sdk进行直线距离的测量 qqmapsdk.calculateDistance({ mode: 'straight', //测量方式为直线距离 from: this.data.signLocation, //签到的中心位置 to: this.data.nowLocation, //当前所在位置 success: (res) => { var res = res.result; dis = res.elements[0].distance; }, fail: function (error) { Notify({ type: 'danger', message: '请查看权限是否开启' }); } }); if(e.detail.value.signPwd == null){ Notify({ type: 'danger', message: '请输入口令' }); }else{ if (this.data.nowLocation == '') { Notify({ type: 'danger', message: '请先获取当前所在位置' }); } else if (dis > 30) { Notify({ type: 'danger', message: '签到失败,您当前的位置不在签到范围内' }); } else { wx.showLoading({ title: '请稍后', mask: true, }) let reqData = { uid: wx.getStorageSync('uid'), classId: wx.getStorageSync('classId'), signPwd: e.detail.value.signPwd } request('/signNow.php', reqData) .then((res)=>{ if (res.data == 'ok') { Toast({ type: 'success', message: '签到成功', mask: true, duration: 1000 }) } else if (res.data == 'fail') { Toast({ type: 'fail', message: '口令错误', mask: true, duration: 1000 }) } else if (res.data == 'repeat') { Toast({ type: 'fail', message: '请勿重复签到', mask: true, duration: 1000 }) } }) .catch((err)=>{ Notify({ type: 'danger', message: '服务器繁忙,请稍后再试' }); }) } } }, ``` ### 其他功能 * 老师可以添加新的课程,学生可通过发现页进行关键字搜索相关课程,选择需要的课程申请加入,申请的课程需要老师通过审核方可加入成功 * 老师可以对学生签到记录进行增删查功能,也可以对课程的学生名单进行删和差操作 * 功能详细造作不再一一赘述,大家可以自行体验 ## 总结 * 本次的小程序是自主开发,可能存在漏洞,欢迎留言反馈!!!