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

9f58022845294358ebadfd80723d90ef.png

前言

分析需求:

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

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

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

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

f0759b177ebd4bfa81902c3ad5ad11e2.png

准备数据表

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

96bfc63edf76739983de5ef4b5404a5e.png

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

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

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

这是下面的数据基础。

使用golang创建应用

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

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

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

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

下图表单的样式。

6acee139295ca48b2423ee9b7d0b72db.png

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

代码如下图。

374dbee1073c5d699212806974817573.png

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

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

972fa2cacc1c31e741a5717ab59ce0e4.png

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

表格代码如下图。

361cdd73158dfaf5960e072df9187231.png

第三,规划路由

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

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

下图是Gin的路由表。

0da392c300881a233e0f260a6ebb63a5.png

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

第四,操作excel文件

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

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

代码如下图。

65ad6c18fcf0055e57eec624449ac60f.png

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

第五,项目目录结构

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

8191dceadc9ab27460c768ee4908faeb.png

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

测试一下

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

go build

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

627a29022f81a7852785671d5c33b2df.png

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

9b0314c86f575b56154cc333f162f123.png

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

de889527f5faaf5339d7512344060e07.png

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

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

4544d0aa7ac10ae7afef66b2fe62c8e5.png

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

二维码

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

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

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

结语

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

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

【本文由 @程序员小助手 发布,持续分享编程故事,欢迎关注】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值