移动校园(5):课程表数据获取及展示

首先写下静态页面,起初打算做成一周的课表,由于是以小程序的形式展现,所以显示一周的话会很拥挤,所以放弃下面的方案,改作一次显示一天

改后结果如下,后期还会进行外观优化

 

真正困难的部分是数据获取 大家大致看下数据库中的数据

可以看到timeandlocation这一列非常复杂,而且包含了课程表需要的关键信息,需要对其中的数据进行抽丝剥茧般的处理

我的思路大致如下:首先前端要传入专业名称和 年级以及班级,然后数据取查询匹配classname这一列,然后得到初步的结果,然后对结果的timeandlaction列进行提却,然后进行正则匹配,我使用了二次正则匹配,第一次匹配周数,周数格式是 %d-%d,要求就是大于等于前者,同时小于等于后者,然后对第二步的结果进行第二次匹配,因为传入的是数字类型的星期,但是数据库中的星期几最后一个字是汉字,所以需要完成数字到汉字的映射代码如下

router.get('/course/:str/:week/:day',async (req,res)=>
{let NumToStr=['','一','二','三','四','五','六','日']let {str,week,day}=req.paramslet {recordset}=await req.app.locals.db.query(`select * from courses where classname like '%${str}%'`)let weeks=recordset.filter((value)=>{if(value.timeandlocation!=""){let array=value.timeandlocation.split(',')let result=array[0].match(/(\d+-\d+)周/)[1]let time=result.split('-')return  time[0]<=week&&time[1]>=week}})let days=weeks.filter((value)=>{if(value.timeandlocation!=""){let array=value.timeandlocation.split(',')let flag=falselet result=array.map(value=>{let d= value.match(/星期(一|二|三|四|五|六|日)/)if(d[1]==NumToStr[day])flag=true})return flag}})res.send(days)
})

最后的结果如图,完成对规定周数内,指定星期课程的查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024用友实习笔试

题目一 解题思路&#xff1a; 动态规划&#xff0c;对于当前位置&#xff0c;如果选择&#xff0c;那前一个不能选&#xff0c;前两个及以上不影响。如果不选&#xff0c;那前一个及以上不影响。 题目二 解题思路 数据范围比较小&#xff0c;可以用前缀和然后双重循环遍历每个…

分数的表示和运算方法fractions.Fraction()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 分数的表示和运算方法 fractions.Fraction() 选择题 以下代码三次输出的结果分别是&#xff1f; from fractions import Fraction a Fraction(1, 4) print(【显示】a ,a) b Fraction(1, 2…

解决Visual Studio 一直弹出管理员身份运行问题(win10/11解决办法)

不知道大家是否有遇到这个问题 解决办法也很简单 找到启动文件 如果是快捷方式就继续打开文件位置 找到这个程序启动项 右键 选择 兼容性疑难解答&#xff08;win11 则需要 按住 shift 右键&#xff09; win10 解决办法 这样操作完后就可以了 win11解决办法按以下选择就行

Leetcode 17.10.主要要素

数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组&#xff0c;找出其中的主要元素。若没有&#xff0c;返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。示例 1&#xff1a;输入&#xff1a;[1,2,5,9,5,9,5,5,5] 输出&#xff1a;5 示例 2&…

远程内核连接秘籍:IPython %connect 命令的深度指南

远程内核连接秘籍&#xff1a;IPython %connect 命令的深度指南 在 IPython 的强大功能中&#xff0c;%connect 命令是一个允许用户连接到远程 IPython 内核的魔术命令。这对于在远程服务器上进行数据分析和计算尤其有用&#xff0c;因为它可以让你利用远程资源&#xff0c;同…

3.js - 模板渲染 - 金属切面效果

md&#xff0c;狗不学&#xff0c;我学 源码 // ts-nocheck// 引入three.js import * as THREE from three// 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls// 导入lil.gui import { GUI } from three/examples/jsm/libs/lil-gui.m…

新手入门渗透必刷靶场(overthewire_bandit系列0~11关)

前言&#xff1a;overthewire系列的靶场是国外的网址&#xff0c;如果连接不上试试用魔法&#xff0c;每一个关卡拿到的flag,都是下一个关卡的登录密码&#xff08;靶场每段时间都会更新&#xff0c;所以是没法直接抄秘钥的&#xff0c;只能跟着过关方法来拿到秘钥&#xff09;…

【SpringBoot】SpringBoot内置Servlet容器源码分析-Tomcat

自动装配加载 ServletWebServerFactoryAutoConfiguration 在自动装配的时候&#xff0c;会加载spring.factories&#xff0c;并且添加到IOC容器中。这里包含web自动配置类ServletWebServerFactoryAutoConfiguration &#xff0c;其中本类中注入三个bean&#xff0c;分别是Embed…

Threejs将场景生成全景图导出

实现思路&#xff1a; 创建全景相机CubeCamera&#xff08;六个方位的透视相机&#xff09;并渲染场景 读取六个面的纹理数据 填充进canvas中 即可按照常规的canvas导出图片了 demo https://gitee.com/honbingitee/three-template-next.js/tree/HDR 核心代码 const cubeRender…

分享大厂对于缓存操作的封装

hello&#xff0c;伙伴们好久不见&#xff0c;我是shigen。发现有两周没有更新我的文章了。也是因为最近比较忙&#xff0c;基本是993了。 缓存大家再熟悉不过了&#xff0c;几乎是现在任何系统的标配&#xff0c;并引申出来很多的问题&#xff1a;缓存穿透、缓存击穿、缓存雪崩…

C#——Array类详情

Array类 Array 类是 C# 中所有数组的基类&#xff0c;其中提供了一系列用来处理数组的操作&#xff0c;例如对数组元素进行排序、搜索数组中指定的元素等。 Array 类中的属性 Array 类中提供了一系列属性&#xff0c;通过这些属性可以获取数组的各种信息。 属性 描述 IsF…

深入理解Spring Boot中的容器与依赖注入

深入理解Spring Boot中的容器与依赖注入 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代Java应用程序开发中&#xff0c;Spring Boot已经成为了一个非常流行的框架&#xff0c;它通过其强大的…

将缓冲文件写到磁盘中的命令sync

将缓冲文件写到磁盘中的命令sync There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave quick…

C语言调试技巧

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.bug 是什么2.debug 是什么3.两种模式的区别4.IDE 调试介绍4.1.模…

RedHat运维-LinuxSELinux基础3-用布尔值调整SELinux政策

1. 获取所有的布尔值SELinux政策的命令是_____________________________&#xff1b; 2. 获取所有的布尔值SELinux政策的命令是_____________________________&#xff1b; 3. 获取所有的布尔值SELinux政策的命令是_____________________________&#xff1b; 4. 获取httpd_ena…

嵌入式c语言5——位运算符

<<与>>是c语言中两个移位运算符&#xff0c;分别有乘以2与除以2的意义 位运算符还包括&#xff0c;与&&#xff0c;或|&#xff0c;均进行按位操作 同时&#xff0c;还可以进行取反以及异或操作

synchronized和ReentrantLock

ReentrantLock ReentrantLock fairLock new ReentrantLock(true);// 这里是演示创建公平锁&#xff0c;一般情况不需要。 fairLock.lock(); try {// do something } finally {fairLock.unlock(); }

商家店铺电商小程序模板源码

橙色通用的商家入驻&#xff0c;商户商家&#xff0c;商家店铺&#xff0c;购物商城&#xff0c;商家购物平台app小程序网页模板。包含&#xff1a;商家主页、优先商家、商品详情、购物车、结算订单、个人中心、优惠券、会员卡、地址管理等功能页面。 商家店铺电商小程序模板源…

Spark SQL----内置函数Csv Functions Misc Functions

Spark SQL----内置函数Csv Functions& Misc Functions Csv Functions 例子&#xff1a; -- from_csv SELECT from_csv(1, 0.8, a INT, b DOUBLE); ---------------- |from_csv(1, 0.8)| ---------------- | {1, 0.8}| ----------------SELECT from_csv(26/08/2015,…

《妃梦千年》第二十六章:风暴前夕

第二十六章&#xff1a;风暴前夕 经过一系列的斗争&#xff0c;宫中的局势暂时得到了稳定。然而&#xff0c;林清婉知道&#xff0c;这一切只是表面的平静&#xff0c;敌人不会轻易放弃&#xff0c;他们必定会再次发动进攻。为了迎接即将到来的挑战&#xff0c;林清婉决定进一…