当前位置: 首页 > news >正文

停车计时自动收费程序,入场出场时间上链,按规则计费,避免人工乱收费。

用于停车场计时自动收费 + 区块链存证。

设计目标是:入场/出场时间上链、计费规则透明、防止人为篡改收费结果。

一、实际应用场景描述

某高校校园停车场 / 科技园区 / 共享车位:

- 车辆入场时记录时间

- 车辆出场时记录时间

- 根据停留时长自动计算费用

- 收费规则公开透明(如:首小时免费,之后按阶梯计费)

当前常见问题:

- 保安手动登记时间

- Excel 或纸质记录

- 收费金额可随意调整

本程序目标:

- 入场 & 出场事件写入区块链

- 计费规则代码化

- 任何人可验证计费是否合规

二、引入痛点分析

传统方式 问题

人工登记时间 易错、易改

手工算费 规则不统一

无审计日志 无法追溯

中心化数据库 管理员可篡改

核心诉求:

时间不可伪造,计费不可干预。

三、核心逻辑讲解(简化区块链模型)

1️⃣ 数据结构设计

每个停车事件为一个 Block:

Block:

├─ index

├─ car_id

├─ event_type (entry / exit)

├─ timestamp

├─ fee (仅 exit 时存在)

├─ previous_hash

└─ hash

2️⃣ 计费逻辑

- 出场时计算:

duration = exit_time - entry_time

fee = billing_rule(duration)

- 计费规则写在代码中,不可在链外随意调整

3️⃣ 防篡改机制

- 出场记录包含入场记录哈希

- 修改任意时间 → 哈希断裂 → 链无效

四、代码模块化设计

parking_chain/

├── block.py # 区块定义

├── blockchain.py # 链管理

├── billing.py # 计费规则

├── cli.py # 命令行入口

├── data/

│ └── chain.json

└── README.md

五、核心代码实现(Python)

✅ block.py

import hashlib

import json

from datetime import datetime

class Block:

def __init__(self, index, car_id, event_type, timestamp, fee, previous_hash):

self.index = index

self.car_id = car_id

self.event_type = event_type

self.timestamp = timestamp

self.fee = fee

self.previous_hash = previous_hash

self.hash = self.calculate_hash()

def calculate_hash(self):

data = {

"index": self.index,

"car_id": self.car_id,

"event_type": self.event_type,

"timestamp": self.timestamp,

"fee": self.fee,

"previous_hash": self.previous_hash

}

return hashlib.sha256(json.dumps(data, sort_keys=True).encode()).hexdigest()

✅ billing.py

from datetime import datetime

def calculate_fee(entry_time, exit_time):

"""

计费规则示例:

- 首小时免费

- 之后每小时 5 元

- 不足 1 小时按 1 小时计

"""

delta = exit_time - entry_time

minutes = delta.total_seconds() / 60

if minutes <= 60:

return 0

hours = int((minutes - 60) // 60 + 1)

return hours * 5

✅ blockchain.py

import json

import os

from block import Block

CHAIN_PATH = "data/chain.json"

class Blockchain:

def __init__(self):

self.chain = []

self.load_chain()

def create_genesis_block(self):

genesis = Block(0, "GENESIS", "init", None, 0, "0")

self.chain.append(genesis)

self.save_chain()

def add_event(self, car_id, event_type, timestamp, fee=None):

last_block = self.chain[-1]

block = Block(

index=last_block.index + 1,

car_id=car_id,

event_type=event_type,

timestamp=timestamp,

fee=fee,

previous_hash=last_block.hash

)

self.chain.append(block)

self.save_chain()

def get_last_entry(self, car_id):

for block in reversed(self.chain):

if block.car_id == car_id and block.event_type == "entry":

return block

return None

def save_chain(self):

os.makedirs("data", exist_ok=True)

with open(CHAIN_PATH, "w", encoding="utf-8") as f:

json.dump([b.__dict__ for b in self.chain], f, indent=2)

def load_chain(self):

if not os.path.exists(CHAIN_PATH):

self.create_genesis_block()

else:

with open(CHAIN_PATH, "r", encoding="utf-8") as f:

data = json.load(f)

self.chain = [Block(**b) for b in data]

✅ cli.py

from datetime import datetime

from blockchain import Blockchain

from billing import calculate_fee

bc = Blockchain()

print("停车计时区块链系统")

print("1. 车辆入场")

print("2. 车辆出场")

print("3. 查看记录")

choice = input("选择操作:")

if choice == "1":

car_id = input("车牌号:")

bc.add_event(car_id, "entry", datetime.now())

print("✅ 入场记录已上链")

elif choice == "2":

car_id = input("车牌号:")

entry_block = bc.get_last_entry(car_id)

if not entry_block:

print("❌ 未找到入场记录")

else:

exit_time = datetime.now()

fee = calculate_fee(entry_block.timestamp, exit_time)

bc.add_event(car_id, "exit", exit_time, fee)

print(f"✅ 出场成功,应缴费用:{fee} 元")

elif choice == "3":

for b in bc.chain:

print(f"{b.index} | {b.car_id} | {b.event_type} | {b.timestamp} | 费用:{b.fee}")

六、README 文件(节选)

# 停车计时区块链收费系统

## 功能

- 入场 / 出场时间上链

- 自动按规则计费

- 记录不可篡改

- 可审计、可验证

## 使用方式

bash

python cli.py

## 适用场景

- 校园停车场

- 园区共享车位

- 教学演示

七、使用说明(简要)

1. 车辆入场 → 记录时间并上链

2. 车辆出场 → 自动计算费用并上链

3. 管理员/车主可查看完整记录

4. 任意记录被修改 → 链校验失败

八、核心知识点卡片

概念 说明

时间戳 客观时间证据

区块链 防篡改账本

智能计费 规则代码化

事件驱动 entry / exit 模型

审计机制 可追溯、可验证

九、总结

本项目不是构建一个复杂的公链,而是:

- 将 区块链的“时间证明 + 不可篡改”特性

- 应用到 高频、低信任成本的现实场景

- 用工程手段替代“人情管理”

对开发者而言,是一次完整的区块链思维训练;

对管理者而言,是一种低成本、高透明度的信任机制升级。

如果你愿意,可以继续:

- 增加 Web 可视化界面

- 引入二维码 / NFC 入场

- 或改写成课程实验指导书版本

利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!

http://www.jsqmd.com/news/701796/

相关文章:

  • 零样本视觉模型编排框架Overeasy:快速构建定制化AI视觉流水线
  • Activepieces:开源AI自动化平台,用TypeScript构建可扩展工作流
  • AWPortrait-Z实测体验:无需修图技能,一键生成高质量人像照片
  • 国内湿疹霜代加工头部企业排行:儿童湿疹膏代加工/化妆品oem贴牌/化妆品代加工/压片糖果oem贴牌/选择指南 - 优质品牌商家
  • 工业仿真软件扩展:探索Phi-4-mini-reasoning与ExtendSim的集成可能性
  • Z-Image Turbo入门教程:如何输入有效提示词
  • VSCode远程容器连接失败率骤降63%的秘密(2026新版SSH通道复用与TLS 1.3握手加速全解)
  • 图文对话AI新选择:Qwen3-VL-8B开箱即用教程,5分钟搞定环境搭建
  • 强化学习算法诊断利器:DeepMind bsuite基准测试套件详解
  • 【仅限前500名车载开发者】VSCode 2026调试证书密钥包泄露事件后续:已验证影响17家Tier1供应商产线,附官方补丁+离线调试降级方案(兼容2023.3 LTS)
  • PHP奇偶商城系统源码(完美增强版)含独立代理管理后台
  • 从图表图像中提取数据:5个步骤告别手动描点烦恼
  • MathModelAgent:多智能体协作如何自动化数学建模全流程
  • 锻造加工厂技术深度解析:工艺精度与交付保障全维度指南 - 优质品牌商家
  • 20250922_140847_为什么运维工程师都想着转行网络安全?
  • 04-进阶方向:自然语言处理(NLP)——Hugging Face实战
  • 多项式回归实战:从原理到工业级应用技巧
  • 为什么92%的团队在2026Q1已弃用Copilot?VSCode原生AI插件三大不可逆替代逻辑
  • SharpKeys:Windows键盘重映射的专业深度优化解决方案
  • VSCode 2026车载调试必须关闭的4个默认设置(否则导致CAN FD总线误触发、BootROM断点失效、多核核间同步丢失),92%工程师仍在错误启用!
  • FinRobot开源框架:构建金融AI智能体的四层引擎与实战指南
  • Gemma-3 Pixel Studio作品集:音乐专辑封面→风格识别→相似艺人推荐→歌单生成
  • Hugging Face Auto Classes原理与高效实践指南
  • 2026年3月异形泡沫公司推荐,搬家打包泡沫板/保温泡沫/地暖隔热泡沫板/泡沫填充块,异形泡沫生产厂家哪家好 - 品牌推荐师
  • 远程容器开发总掉线、断联、同步延迟?深度解析WSL2网络栈、SSH KeepAlive与VS Code Remote-SSH协同机制
  • 终极SMAPI完全指南:10分钟学会星露谷物语模组安装与管理
  • WeDLM-7B-Base惊艳续写效果:中英双语科技文本生成质量对比展示
  • 用Markdown驱动设计:提升团队协作效率的工程化实践
  • 阿里面试官问:MCP 到底值不值得做
  • MPS:用Go语言打造轻量级媒体服务器,让旧安卓设备变身家庭流媒体中心