智慧饮水系统_Android客户端
智慧饮水系统(又名:水牛 APP)
1.介绍
该项目基于 Rfid-RC522、ESP-32 进行下位机开发,硬件模块 Rfid-RC522 主要读取用户的卡号,ESP32 单片机通过 WiFi 模块访问网络,将用户的卡号作为参数通过 POST 方式调用后端 API 接口进行数据比对得到用户的余额等数据,手机端通过调用后端 API 接口获取数据库中的数据,实现查询用户的消费记录、用户的消费统计、用户的余额、设备数量和设备是否在线等,通过 MQTT 协议向下位机发送用水和停止用水的指令,从而控制饮水机是否出水。C#应用程序通过直接对数据库数据进行增删查改等操作,实现用户消费统计,收入统计,用户信息修改,用户余额充值,用户消费记录等。SpringBoot 后端 AP 负责处理用户的各种请求,以及对数据库中的数据的增删查改等操作。
技术栈:Android、C#、SpringBoot、Arduino、RFID、MQTT、MySQL、Docker 容器、阿里云短信 SDK、邮箱验证码。
开发工具:Intellij IDEA、Android Studio、Visual Studio Code(搭配)、Git For Windows。
2.项目结构
- 安卓端 APP:供用户手机端使用,实现用户的登录、注册、修改密码、修改个人信息、充值、消费记录查询、消费统计查询、设备状态查询等功能。
- C#端:供管理员使用,实现管理员的登录、修改密码、修改个人信息、用户管理、设备管理、消费统计、收入统计等功能。
- SpringBoot 后端:负责处理用户的各种请求,以及对数据库中的数据的增删查改等操作。
- 下位机:饮水机端,通过读取用户的卡号,向服务器发送请求,获取用户的余额,通过 MQTT 协议向下位机发送用水和停止用水的指令,从而控制饮水机是否出水。
3.系统概述
整个系统大致分为感知层、网络层、控制层、应用层这四层架构,系统执行流程模型图如下图所示。

图 1 系统架构图

图 2 系统执行流程模型图

图 3 用户刷卡用水流程图

图 4 用户手机端用水流程图
4.功能演示
4.1 刷卡用水
4.1.1 设备刷卡

4.1.2 数据库新添加一条消费记录

4.2 手机 App 用水
4.2.1 选用设备
用户点击开始用水按钮,通过 MQTT 协议发送开始用水指令到下位机,下位机接收到指令开始控制蓝色 LED 点亮。如图所示。

4.2.2 开始用水

4.2.3 设备不能同时被多个用户使用

4.3 消费记录和消费统计模块
消费记录模块通过 Recycle View 控件以列表的形式展示用户的消费记录,用户可以按年月日进行筛选。消费统计模块使用柱状图展示用户每个月的消费额以及余额。

4.4 用户注册模块
该模块调用了后端 API 的验证码功能。一个手机号或邮箱只能注册一个账号,防止用户恶意重复注册造成资源浪费。
4.4.1 填写注册用户完整信息,点击发送验证码

4.4.2 填写验证码,点击注册

4.5 找回验证码模块
该模块是为了方便当用户忘记密码而不能登录时,可以通过手机号或邮箱辅助验证进行重置密码的功能。

4.6 用户登录模块
该模块的设计分为密码登录和验证码登录,用户可以通过两种方式登录
4.6.1 验证码登录

4.6.2 密码登录

4.7 用户余额充值模块
用户余额充值模块连接服务器 MySQL,对数据库中的余额进行修改。当输入卡号时,自动补全用户的其它信息,输入金额,点击充值即可完成充值。
4.7.1 充值之前余额

4.7.2 充值之后余额

4.8 消费记录和消费统计模块
消费记录模块可以按年月日展示所有用户的消费订单记录,还可以模糊查找消费订单。消费统计模块可以按年月日统计收入,及按用户统计消费额度

智慧饮水系统_Android客户端的更多相关文章
- iOS系统及客户端软件测试的基础介绍
iOS系统及客户端软件测试的基础介绍 iOS现在的最新版本iOS5是10月12号推出,当前版本是4.3.5 先是硬件部分,采用iOS系统的是iPad,iPhone,iTouch这三种设备,其中iPho ...
- 团队项目-北航MOOC系统Android客户端 NABC
北航MOOC系统Android客户端 NABC (N) Need 需求 MOOC的全名是Massive Open Online Course,被称作大型开放式网络课程.2012年,美国的顶尖大学陆续设 ...
- 冬季里有温度的 3D 可视化智慧供热系统
前言 随着供暖季来临,我国北方大部分省市开始陆续供热.一年一度的供暖问题被提上了日程.在我们的印象里,供热的设施不论是锅炉.管道还是暖气片,都是坚硬的钢铁.铸铁.HT 通过自主研发的强大的基于 HTM ...
- Windows系统Stunnel客户端的配置
Stunnel官方就有Windows版本,到下面的地址下载: https://www.stunnel.org/downloads.html 选择”stunnel-X.XX-installer.exe“ ...
- cas单点登录系统:客户端(client)详细配置
最近一直在研究cas登录中心这一块的应用,分享一下记录的一些笔记和心得.后面会把cas-server端的配置和重构,另外还有这几天再搞nginx+cas的https反向代理配置,以及cas的证书相关的 ...
- 基于SpringMVC+Spring+MyBatis实现秒杀系统【客户端交互】
前言 该篇主要实现客户端和服务的交互.在第一篇概况里我已经贴出了业务场景的交互图片. 客户端交互主要放在seckill.js里来实现.页面展现基于jsp+jstl来实现. 准备工作 1.配置web.x ...
- 北航MOOC系统Android客户端NABC
北航MOOC手机客户端NABC分析 1) N (Need 需求) MOOC是Massive Open Online Course的缩写,通常被译为大型开放式网络课程,它最早在08年的时候由一位加拿大的 ...
- 【Tech】单点登录系统CAS客户端demo
服务器端配置请参考: http://www.cnblogs.com/sunshineatnoon/p/4064632.html 工具:myeclipse或者javaee-eclipse 1.启动jav ...
- cas单点登录系统:客户端(client)详细配置(包含统一单点注销配置)
最近一直在研究cas登录中心这一块的应用,分享一下记录的一些笔记和心得.后面会把cas-server端的配置和重构,另外还有这几天再搞nginx+cas的https反向代理配置,以及cas的证书相关的 ...
- InChatter系统之客户端实现原理与阶段小结
InChatter客户端的开发可以说是目前系统的阶段性结尾了.很抱歉的是,这篇文章来的这么晚,迟到了这么久. 在客户端的开发主要针对两个方面: 消息的传输与处理 消息的UI交互处理 一.消息的传输与处 ...
随机推荐
- Laf v1.0 发布:函数计算只有两种,30s 放弃的和 30s 上线的
一般情况下,开发一个系统都需要前端和后端,仅靠一个人几乎无法胜任,需要考虑的特性和功能非常多,比如: 需要一个数据库来存放数据: 需要一个文件存储来存放各种文件,比如图片文件: 后端需要提供接口供前端 ...
- AI工具导航
.xe-comment-entry img { float: left; display: block; background: rgba(136, 136, 136, 0.15); margin-r ...
- JSTL标签fmt:formatDate格式化日期出错
现象&背景: 异常: "org.apache.jasper.JasperException: 在 [115] 行处理 [/WEB-INF/jsp/modules/receivedya ...
- [Java SE]Unicode解码
文由 将ASCII等其他非Unicode字符与Unicode混合的"脏的.不规范的"编码文本转为正常文本. 源码 unicodetoString(String unicodeTex ...
- 四月二十六java基础知识
1..对文件的随机访问:前面介绍的流类实现的是磁盘文件的顺序读写,而且读和写分别创建不同的对象,java语言中还定义了一个功能强大.使用更方便的随机访问类RandomAcessFile它可以实现文件的 ...
- Ubuntu系统Flameshot使用问题
Ubuntu系统Flameshot使用问题 系统:Ubuntu22.04 问题:使用Flameshot,每次都会先截取整个屏幕,提示需要先分享,再使用Flameshot的功能 安装Flameshot ...
- DG:模拟failover故障与恢复
问题描述:情形是当主库真正出现异常之后,才会执行的操作,那么我们执行过failover 之后,如何在重新构建DG,这里我们利用flashback database来重构.模拟前主库要开启闪回区,否则要 ...
- homebrew 无法从 API 更新错误问题
今天中午吃饭前,想看看有没有更新,于是打开终端模拟器(我用的是 WezTerm),brew update,结果更新出了点问题 大致情况就是我不能从 API 更新,这个特性是从 homebrew 进入 ...
- RDIFramework.NET开发框架WinForm版新增编码管理
1.概述 编码管理是企业管理和信息化建设过程中一个至关重要的环节.各信息化系统是通过编码来标识业务对象的,统一的编码方案可以作为各系统的通话语言,也可以为信息化系统的集成提供便利.建设数据编码的基本原 ...
- Go语言核心知识回顾(接口、Context、协程)
温故而知新 接口 接口是一种共享边界,计算机系统的各个独立组件可以在这个共享边界上交换信息,在面向对象的编程语言,接口指的是相互独立的两个对象之间的交流方式,接口有如下好处: 隐藏细节: 对对象进行必 ...