# CMR售票机 **Repository Path**: marstomato/cmr-ticket-vending-machine ## Basic Information - **Project Name**: CMR售票机 - **Description**: 一个简单的基于Python命令行的模拟铁路售票机,但内置API - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-04-15 - **Last Updated**: 2025-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, 模拟, 铁路 ## README ### **CMR 售票机 v0.1 代码介绍** ### **1. 程序功能概述** 这是一个基于命令行的简易售票机程序,主要实现以下功能: 命令交互:通过输入特定指令执行对应操作(如查询帮助、购买车票、指定价格购票)。 票价计算:根据起始站和终点站的付费区编号,自动计算票价(大数减小数)。 出票模拟:包含等待出票的动画效果(通过 time.sleep 实现延迟)。 ### **2. 核心模块与代码结构** 程序分为 API 函数定义 和 功能交互逻辑 两部分: ### **2.1 API 函数** `cmrteckethelp():` 功能:显示命令帮助列表,告知用户可用指令(如 help 查看帮助、tacket add 买票等)。 输出:命令列表及说明。 `cmrtecket_add(station_name1, station_name2):` 功能:处理 “买票” 流程,输入起始站和终点站编号,计算票价并模拟出票。 逻辑: 输入站点编号。 确认输入后,通过条件判断 if station_name1 > station_name2 计算票价(大数减小数)。 模拟出票过程(延迟 3.7 秒)。 `cmrtacket_sts_add(tacket_money):` 功能:处理 “价格购票” 流程,直接输入票价并出票。 逻辑:输入价格后确认,通过固定延迟模拟出票。 ### **2.2 主交互循环** 通过 while True 实现持续运行,等待用户输入命令。 支持的命令: help/hp:调用帮助函数。 tacket add/ta:调用买票函数。 tacket sts/sts:调用价格购票函数。 card add/ca:调用买卡函数 card moneyset/cmt:调用对卡充值函数 命令匹配逻辑:使用 if code == '命令' or '简写' ### **3. 核心功能实现细节** ### **3.1 票价计算** 输入:用户输入起始站和终点站编号(如 3 和 5)。 计算逻辑: ``` python if station_name1 > station_name2: tacket_money = station_name1 - station_name2 else: tacket_money = station_name2 - station_name1 ``` 直接比较两个编号的大小,用大数减小数得到票价。 ### **3.2 出票模拟** 通过 time.sleep(3.7) 实现延迟效果,模拟真实出票过程中的等待时间。 输出提示信息:“正在出票” → 延迟 → “出票成功!”。 ### **4. 操作流程示例** 启动程序: plaintext CMR售票机v0.1 使用“help(hp)来查看命令表。” >> 查看帮助: plaintext >> help 以下是命令: help(hp):帮助 tacket add(ta):买票 tacket sts(sts):价格购票 注意:此处可能与实际情况有所不同。 购买车票示例(按站点编号): plaintext >> ta 输入起始站付费区编号:3 输入终点站付费区编号:5 起始站编号3、终点站编号5。键入N开始出票,否则键入B退出:N 正在计算票价 票价计算完成。一共2元。正在出票 (等待3.7秒) 出票成功! 价格购票示例(直接输入金额): plaintext >> sts 输入价格......:10 价格为10元。键入N开始出票,否则键入B回到上一步:N 正在出票 (等待3.7秒) 出票成功! ### **5. 代码特点与已知问题** ### 5.1 特点 模块化设计:将功能拆分为帮助、买票、价格购票等独立函数,结构清晰。 用户交互友好:通过输入确认机制(N/B)避免误操作。 流程模拟:使用延迟函数增强操作反馈感。 ### **5.2 目前版本已知问题** 1.`cmrtacket_sts_add` 函数里的 `bool_a` 变量定义不当 ### **6. 附则** 依赖环境:Python 3.x(需导入 time 模块,默认自带)。 对于开发者:在使用API对卡操作的部分前,请先定义一个空字典card! 语言:Python