NoCode 实战 | 想要开发在线选课系统?何必那样大费周章!

2024-01-21 17:40

本文主要是介绍NoCode 实战 | 想要开发在线选课系统?何必那样大费周章!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

å¾ç

 「关注」「星标」我们,
每天接收关于亚马逊云科技的最新资讯

作为课余生活丰富多彩的大学生,你也许参加过很多兴趣小组。如果你读到了本文,那么很大概率猜测,你八成也会参加各种计算机兴趣小组。

那么不妨试着和组员们一起,给大家开发个在线订课选课系统吧!不仅可以借此机会锻炼一下软件开发技能,学习新技术,在实践中掌握新技能,还能让更多老师同学从中受益,岂不美哉?

å¾ç

 就算你已经进入职场,类似的技术也可以换个角度应用到工作中很多与预订有关的场景中。快来一起来看看吧!

 01.定义数据表

数据表是低代码或零代码的根基,本质上就是通过对数据表的操作来定制化展现数据首先讲解下本项目中会使用到的数据表。

本例一共涉及七张表,分别如下:

1. ClassTab 表,用来展现本周的全部课程安排

å¾ç

2. MyClass表,用来记录学生选择的将要参加的本周课程。表中的“value”列的数据提取自WeekDays表中的“value”列,用作工作日排序,后面会用到。

=FINDROW(WeekDays,"WeekDays[工作日]=%",[Weekday])[Value]

å¾ç

3. ClassList表,记录着本周所有的课程目录

å¾ç

4. ClassLocation表,这个表中记录着每个课程对应的上课地点

å¾ç

 5. ClassMap表记录着每个课程对应的教师名称

å¾ç

6. Teachers表是教师目录表,记录着本周课程对应的所有教师的名称

å¾ç

7. WeekDays表是本周工作日的记录表,表中的Value列是编号列,用做排序使用

å¾ç

上面七张表的对应关系为:

● ClassList表和WeekDays表对应ClassTab表的“工作日”列和“课程时段”列的PickList引用数据源表

● ClassList表和Teachers表是ClassMap表的“Name”和“Teacher”列的PickList引用数据源表

● ClassList表也是ClassLocation表的“Class”列的PickList引用表

可以看出 ClassList 课程表是大部分其他表的引用数据源,其本质上是通过逻辑对应关系,把 ClassList 中的课程展现出来。这里需要重点理解下。

02.分析业务逻辑

接下来我们介绍下本例的业务逻辑,业务逻辑决定着底层数据的展现方式。

1. 首页数据展示,数据来自ClassTab表,每个工作日的课程按照行的方式进行展现,不同的课程时段作为列来分割。

å¾ç

2. 每日课程展示,在首页的每个数据行代表一个工作日的课程,点击后展开每日课程详细,在本页中可以通过点击“详细”按钮查看本日每个课程的详细信息(课程名称、课程时间、对应的老师、上课地点),还可以点击“参加”按钮来决定是否参加自己感兴趣的课。

å¾ç

3.我的课程展示,在我的课程页面中列出了所有订阅过的课程,可以看到这些课程对应的工作日、时间及课程名信息。还可以对其进行取消操作。本页数据来自 MyClass 表,并将依照“工作日”和“时间”列进行排序。

å¾ç

03.开始构建App

在介绍了数据表设计和业务逻辑后,我们开始着手对 APP 进行构建。

1. 登录 Honeycode 网站,新建一个Workbook并将其命名为ClassBooking。

å¾ç

2. 创建第一部分介绍的七张数据表,并设置好引用关系。

图片

3. 在首页中添加Column List列表对象,数据源选择“Classtab”数据表。选中添加详细页。

图片

图片

4. 列表属性页面添加条件显示,用来使用蓝绿色来间隔显示每行,同时对边缘进行钝化,增加界面美观度。

其条件表达式为:

=MOD(ROW(THISROW()),2)=0

表达式中使用ROW对当前数据行进行标号,然后使用 MOD 来对行号取模判奇偶行并设置对应的颜色。

图片

å¾ç

5. 在自动生成行内容详细页中,每行的后面分别添加两个按钮“详细”和“参加”。

图片

6. 在详细页底部增加一个 Block 和四个 DataCell 用来展示课程详细内容。

图片

7. 对第5步中的“详细”按钮设置可见性。

表达式内容为:

=NOT(ISBLANK($[0800  0950 column data]))

通过判断课程时段列的值是否为空,决定是否显示“详细”按钮。

图片

å¾ç

8. 设置“详细”按钮的ACTIONS,把数据从InputRow中取出并且写入到第6步的属性Block中。需要注意的是,DataCell变量teacher和location的值取自ClassMap和ClassLocation表,通过FINDROW函数进行匹配。

图片

9. 设置“参加”按钮的可见性。

表达式为:

=AND(NOT(ISBLANK($[0800  0950 column data])),ROWS(FILTER(MyClass,"MyClass[Time]=% AND MyClass[Class]=% AND MyClass[Weekday]=%",$[0800  0950 column header],$[0800  0950 column data],$[Weekday column data]))=0)

通过 AND 函数来连接两个条件语句,第一个是判断对应的课程时段值是否为空,第二个是判断这个时段的课程是否已经存在于我的课程 MyClass 表中。条件均满足的情况下才会显示“参加”按钮。

图片

图片

10. 设置“参加”按钮的 ACTIONS,把要参加的课程信息写入到我的课程 MyClass 表中。

图片

图片

11. 为每个时间段列重复7-10步的设置。

12. 值得注意的是课程详细页的工作日DataCell取值的设置。

图片

图片

仔细考虑下为什么这么写?

前面我们提到过 WeekDays 表是作为 ClassTab 表中“工作日”列的 PickList 外部数据源表,在详细页面中展示的数据是 ClassTab 表的每行的数据,那么工作日这个DataCell所对应的值就是指向WeekDays表中一行的RowLink,所以这么写的意思是从ClassTab的“工作日”列指向的WeekDays表的行数据中取出“工作日”列的值。

13. 增加一个新的Screen,用来显示要参加的课程,并且在页面中添加一个Column List的对象,并且设置数据源。

图片

图片

数据源表达式为:

=FILTER(MyClass,"ORDER BY MyClass[value],MyClass[Time]")

注意表达式中的ORDER BY的使用,这里我们依据MyClass的“value”列和“Time”进行排序。

14. 在上面新创建的 Screen 中的列表行里添加一个“取消”按钮,用来将对应的课程记录从MyClass表中删除。设置其 ACTIONS 为删除当前行。

图片

图片

至此,本 APP 构建全部完成,所有页面的显示效果如下:

图片

图片

图片

04.总结

在本例中涉及到了很多 Amazon Honeycode 的核心操作,例如对 PickList 及 RowLink 的使用以及对数据源进行过滤和基于条件的样式设置等,但是没有对课程发布的环节进行设置,大家可以尝试通过判断当前登录用户,为其绑定角色和权限,然后对课程表进行增删改的操作。

相信通过这些动手练习,一定可以对 Honeycode 低代码平台有更深入的了解同时积累相当的动手经验。

如果您想要更深入地学习 Amazon Honeycode 更多内容,我们向您推荐「Amazon Honeycode community」,在这里,您可以与其他 Honeycoders 联系,一起交流、学习新技能!

复制网址(https://honeycodecommunity.aws/)或扫描下方二维码即可访问哦~

图片

本文作者介绍

图片

李军强

亚马逊云科技专业服务团队

云架构咨询顾问

负责企业级客户的云上架构咨询,基础架构现代化改造及优化。在基础架构和容器领域有多年运维管理经验,对 DevOps、持续交付及云原生服务框架、运维自动化等有深入的理解。

 END

这篇关于NoCode 实战 | 想要开发在线选课系统?何必那样大费周章!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/630324

相关文章

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j