前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一位教师的诉求:excel学生成绩,能不能让学生扫二维码查询?能!

一位教师的诉求:excel学生成绩,能不能让学生扫二维码查询?能!

作者头像
程序员小助手
发布2020-04-08 14:36:53
7720
发布2020-04-08 14:36:53
举报
文章被收录于专栏:程序员小助手

前言

分析需求:

1 - 表格:本文使用excel。wps同理。

2 - 查询:本文提供的接口,可供本地电脑使用,或部署到服务器,提供学生查询。

3 - 鉴权:默认使用学生学号作为其权限。

下面是使用界面的实际效果图。

准备数据表

新建一个数据表,我们写一些随机数字,用于模拟学生各科成绩。

上表一共7列,分别是学号,姓名,班级,班别,语文数学英文成绩。

我们使用学生学号,用于鉴别身份,和返回成绩。

如果有身份验证需求,可以为每个学生,生成一个自己的密码,配合学号,就可以查看自己的数据了。

这是下面的数据基础。

使用golang创建应用

golang构建本需求的优点在于,便于部署。

我们仅需要一个页面表单,用于学生填写自己的学号,然后返回其成绩。

首先,把这个表单页面设计出来。

用最简单的页面元素,为了美观和使用方便,我们使用Bootstrap渲染样式,使用Gin框架的模板引擎渲染页面

下图表单的样式。

仅包含一个输入框,类型为“number”数字,和一个查询按钮。

代码如下图。

其次,将显示结果用表格展示出来。

下图是没有查询结果时候的空白显示。

上方是状态提示信息,下方是学生的得分情况。

表格代码如下图。

第三,规划路由

因为要开发出来二维码,所以首页使用GET请求,也就是默认的空白页。

查询表单,使用POST方法,用于区分。这样可以只用一个根路由“/”就可以解决问题。实际上我们也是这么做的。

下图是Gin的路由表。

其中要说明的是,r.Static()是注册的“静态资源路由”为了templates模板内引入js,css等静态文件发挥作用,否则无法导入其他路由地址的资源

第四,操作excel文件

我们主要使用学生学号,在excel内匹配,如果找到,就返回该学生整条数据,写入结构变量内。如果没有找到,就返回“未找到记录”

我们使用 360EntSecGroup-Skylar/excelize 这个库操作excel。其中函数方法 extract() 就是用于根据学号检索数据的。

代码如下图。

返回的结构化数据,可以固定查询结果的数据结构。

第五,项目目录结构

下图是本项目使用的所有文件目录树。

其中 bootstrap的js,font等文件未使用。

测试一下

先要将上述代码编译通过,运行以下指令

go build

没有错误提示,则编译成功,根目录下生成一个 src 可执行文件。在命令行直接运行,输出内容如下图。

在浏览器直接输入 localhost:20315 就可以访问到如下界面。

然后我们访问一条有效的数据,看查询结果。

可以看到,excel内的数据,正确地查询出来了。

在来一条不存在的数据测试,结果如下图。

可以看到,查询失败的提示信息。

二维码

有了以上这些铺垫,可以知道,二维码可有可无。

因为网页应用,使用网址访问也好,使用二维码扫码,跳转至网页也好,都是行的通的。

只需要将网址,生成一个二维码,就可以了。

结语

本文通过Go语言框架Gin,构造了一个web服务页面,并通过Go语言excel库操作查询excel文件内的表格数据。通过路由方式,展示到网页内。是一个完整的闭环

本文代码同步发布在仓库,需要的私信关键字“成绩查询”获取代码资源地址。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备数据表
  • 使用golang创建应用
  • 测试一下
  • 二维码
  • 结语
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档