公共汽车刷卡计费系统

本文描述了一个公交刷卡计费系统的需求,系统需记录乘客上下车信息,根据乘车站数计算票价并扣除卡内余额。乘务员可查询乘客乘车状态及班次运营情况,管理员能调节费率和计费方式。系统分析包括静态类图和动态序列图。

需求描述:某公司准备开发公共汽车刷卡计费系统,具体需求如下:
司机在每到达一站时,点击到站按钮,通知系统已到达一站;乘客上下车时都要刷卡。上车刷卡通知系统该乘客已上车。在下车刷卡时,系统根据该乘客乘坐的站数,计算票价,并从卡中的余额中扣除。乘务员可查询某乘客的卡是否在上车时刷过,也可查询每个班次的运营情况(如,载客量和运营额)。管理员可以通过系统调节费率,记费方式等。



1、需求获取(usecase-diagram)
UseCaseDiagram

 用况详细描述

刷卡

参与者       系统

          待机

将一卡通靠近读卡器

          include(读写一卡通)

          include(显示余额)

          如果余额不足,提醒用户购买车票

          复位待机

通知目前到达哪一站

### 基于单片机的公交刷卡计费系统设计方案 #### 系统概述 基于单片机的公交刷卡计费系统的目的是为了提供一种高效、便捷且可靠的支付方式。此系统利用RFID技术识别乘客持有的卡片,并根据预设费率计算费用,从而完成自动扣款过程。 #### 主要硬件组件 - **STM32F103C8T6**:作为核心控制器负责整体逻辑运算以及与其他外设之间的通讯管理[^1]。 - **MFRC522 RFID读写模块**:用于感应并读取公交卡内的信息,通过SPI接口与MCU相连进行数据交换。 - **OLED显示屏(OLED12864)**:用来向用户提供余额查询、交易记录等重要信息反馈,借助I²C协议实现屏幕刷新操作。 - **蜂鸣器(Buzzer)**:当发生异常情况如余额不足发出提示音提醒用户注意,通常经由NPN晶体管放大电流后接入到指定IO端口上触发发声动作。 #### 软件架构描述 软件部分主要包括初始化配置、循环扫描等待卡片靠近、解析接收到的信息包、更新数据库中的账户状态等功能模块。具体来说: - 初始化阶段会设定好各外围设备的工作模式及其默认参数; - 循环体内不断监听是否有新的标签进入磁场范围之内一旦发现即刻启动后续处理流程; - 对获取来的UID序列号加以验证确认合法性之后再依据既定算法得出应缴金额; - 更新本地存储单元内对应条目的数值最后返回给前端界面展示出来。 ```c #include "stm32f1xx_hal.h" #include <mfrc522.h> #include <ssd1306.h> // 定义全局变量保存当前余额 float currentBalance; void System_Init(void); uint8_t Card_Detect(MFRC522 *rfid, uint8_t *uid); int main() { HAL_Init(); System_Init(); while (true) { if(Card_Detect(&RfidModule, UidBuffer)) { // 如果检测到了一张有效的卡片 float chargeAmount = CalculateCharge(); // 计算本次乘车所需扣除的费用 if(currentBalance >= chargeAmount){ DeductFromBalance(chargeAmount); // 执行扣款 DisplayTransactionInfo("Success", currentBalance); // 显示成功消息及剩余余额 }else{ PlayWarningSound(); // 发出警告声音表示余额不足 DisplayTransactionInfo("Insufficient Funds!", currentBalance); // 提示余额不足的消息 } Delay(2000); // 等待两秒以便让乘客查看结果后再继续下一次循环 } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值