开发背景
实习一直是大学生学习生涯中不可或缺的一部分,特别是对于学习计算机、软件等方面专业的学生。拥有一段丰富多彩的实习经历不仅可以在毕业后出去找工作时引起HR的注意,也会在读研究生选择导师时得到老师的青睐。因此,很多高校把实习作为学生的一种必修课程并计入了实习学分。但是由于有时学生们找的实习公司地址分布在全国各地,所以监管学生是否到岗实习以及学生是否安全则成为了一个很大的问题。在传统模式下,学生每日可能通过QQ等通信软件向老师报备。这种方式不但无法很好的进行数据统计而且低效。其次,有些学生初入职场时常常显得手足无措,找实习时由于没有恰当的方法屡遭拒绝甚至陷入培训骗局。所以,为解决这些问题,本系统应运而生。
解决痛点
- 传统模式对实习学生的监管漏洞百出且低效
- 实习信息分散,查找繁琐
- 学生初入职场时常常手足无措容易上当受骗
设计思路
考虑到本系统可能要获得学生的位置信息来记录学生活动轨迹,所以选择使用微信小程序开发,因为小程序可以较为精准的获得用户的位置,拥有无需下载、轻量、便捷等种种优点。
由于这次参加的是腾讯云开发活动,所以后端使用腾讯提供的包括云数据库、云存储、云函数的云开发框架。同时使用云开发省去了很多搭建后端环境的复杂环节,更适用于敏捷开发。
技术架构
小程序框架
小程序框架基于Vue.js的语法,框架中可以使用'wx:for'、‘wx:if'、’{{data}}'等语法更加便捷的渲染前端页面,避免繁琐复杂的直接对dom进行操作。
CSS框架
Vant Weapp 是移动端 Vue 组件库Vant的小程序版本,两者基于相同的视觉规范,提供一致的 API 接口,助力开发者快速搭建小程序应用。样式简约、可靠。
后端框架
使用4个云数据库来存储开发所需要的不同种类的数据。使用云存储来存放用户上传的照片。同时接入了腾讯地图提供的sdk服务来实现精准定位以及计算距离等功能。
结果展示
登录与主页
进入程序,首先要求用户输入账户,密码。然后后端进行身份识别,将返回的身份信息分为包括学生、教师两类,并跳转至不同的主页面。
学生实习信息填报
学生首先要填写自己的实习信息,其中使用wx.getLocation函数获取实习公司的具体位置(包括经纬度坐标等),实习信息提交后可修改。
学生每日打卡
在打卡页面,我们会判断学生当前所在的位置与实习公司位置的距离,具体服务由我们接入的腾讯地图sdk的api接口实现。可以得到当前位置与实习公司之间的直线距离和实际距离,如果判定学生在打卡范围内,则允许学生打卡。学生打卡时为验证是学生本人操作,我们调用手机摄像头拍摄一张学生照片,并上传至云存储。
学生查看自己的打卡记录
在打卡记录页面,学生可以查看自己之前的打卡记录,可以通过点击打卡的日期进入查看当日打卡详情(包括打卡时间,打卡地点,当时打卡所拍摄的照片)。
实习经验心得分享
在此页面中,我们会定期推送一些有助于学生获得更好的实习岗位的信息,或着实习时的注意事项,以及学长学姐的实习经验总结和心得体会,帮助学生获得更好的实习体验。信息来源真实 ! 可靠 !可以减少学生自行在网上查找实习公司信息的时间,减少学生被骗的风险,同时可以接入已毕业学长,学姐发来的接收实习生的信息,让学生浏览到一些真实有用的信息。
教师查询今日打卡情况
在教师主页中,教师可以查看今日已打卡的人数与未打卡的人数,并可以查看已打卡学生的打卡详情与未打卡学生的打卡名单。
检索学生的实习信息
老师可以通过输入学生学号来查询指定学生的实习信息(包括实习公司、实习地点、实习开始与结束时间等等。。。)
开发心得
云开发由于无需自建服务器、项目可快速上线、易于得到用户信息等优点,非常适合于敏捷开发的场景。云存储向我们提供的cdn加速服务也很使用,无需自行再去购买cdn。而且现在网络上有很多基于微信小程序的UI组件库,使我们在编写前端页面时也更加便捷。而且由于微信小程序的轻量与无需下载,也更容易得到用户的青睐。
不过在使用云数据库时,本人还是踩了一些坑。首先云数据库每次返回信息的上限为20条,即使使用云函数也只能得到100条。这对一些大型应用场景来说是远远不够的。其次,在一个业务场景中,我想去修改云数据库中的数据,调用后发现虽然结果返回成功,但最后云数据库中的数据没有得到修改。在上网查看大量资料后发现是数据库权限问题,也就是数据的创建者才能去修改数据,但在很多应用场景中,我们常常要求多用户去修改同一数据,如果使用云数据库实现相同功能,就使得我们的业务逻辑会变得更加复杂。最后云数据库的api接口远远没有sql强大,这也会使我们用云数据库实现相同功能时不得不去编写更复杂的业务逻辑。
人类的智慧在于在正确的场合使用正确的工具去解决问题。作为一名云开发布道师,也不能盲目在所有情况下都选用云开发开发项目。权衡利弊,三思而后行,正确使用云开发,才能成为一名成功的云开发布道师。