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

简易地铁自动机售票系统实现(C++)

该程序具有以下功能

(1) 一个地铁路线类 Router,包含路线编号,途中的各个站点。可以新增、删除、查询路线,可以根据线路名称,显示线路图片。
(2) 一个地图类 Map,可以显示所有可以乘坐的地铁站名,以及线路信息。
(3) 根据用户选择起点和终点和人次信息,可以自动计算应付金额;根据用户输入的金额,计算找零信息;
(4) 使用外部文件存储路线相关信息。

#include <iostream>
#include <vector>
using namespace std;class Router {private:string port[100];//经过站点int id;//路线编号int count=0; //站点数目public:void setId(int i) {id=i;}void addPort(string name) {port[count]=name;count++;}void getPort() {int i=0;for(i=0; i<count; i++) {cout<<"第"<<i+1<<"站:";cout<<port[i];cout<<endl;}}int check(string u,string v) {int d=0;for(int i=0; i<count; i++) {if(port[i]==u) {for(int j=0; j<count; j++) {if(port[j]==v) {// u vreturn ((i-j)>=0)?(i-j):(j-i);}}}}return 0;}
};class Map {private:vector<Router> r;//路线图public:double charge=2;//每站价格void setCharge(double ch) {charge=ch;}void init() {Router temp1;temp1.setId(1);temp1.addPort("west");temp1.addPort("mid1");temp1.addPort("south");r.push_back(temp1);Router temp2;temp2.setId(2);temp2.addPort("south");temp2.addPort("mid2");temp2.addPort("east");r.push_back(temp2);Router temp3;temp3.setId(3);temp3.addPort("east");temp3.addPort("mid3");temp3.addPort("north");r.push_back(temp3);Router temp4;temp4.setId(4);temp4.addPort("north");temp4.addPort("mid4");temp4.addPort("west");r.push_back(temp4);}int buy(string start, string end) {int count=r.size();int d=0;for(int i=0; i<count; i++) {Router temp=r[i];d=temp.check(start,end);if(d>0) {cout<<"您需要乘坐"<<i+1<<"号线"<<endl;return d;}}return 0;}void show() {int count=r.size();cout<<"本市地铁线路图如下:"<<endl;for(int i=0; i<count; i++) {cout<<i+1<<"号线:"<<endl<<endl;Router temp=r[i];temp.getPort();cout<<endl<<endl;}}
};void menu() {int m;Map map;map.init();while(1) {cout<<endl<<endl<<endl;cout<<"----------欢迎来到地铁售票系统-----------"<<endl;cout<<"----------1、路线查询-----------"<<endl;cout<<"----------2、购票-----------"<<endl;cin>>m;if(m==1) {map.show();} else if(m==2) {cout<<"请输入起点:"<<endl;string s;cin>>s;cout<<"请输入终点:"<<endl;string e;cin>>e;cout<<"请输入人数:"<<endl;int c;cin>>c;int d=map.buy(s,e);if(d>0) {double rs=(double)c*(double)d*map.charge;cout<<"您需要支付的费用为:";cout<<rs<<endl;cout<<"请输入您支付的金额:";double in=0;cin>>in;if(in>=rs) {cout<<"购票成功!"<<endl;cout<<"找零:"<<in-rs<<"元"<<endl;} else {cout<<"金额不足,购票失败!";}} else {cout<<"抱歉,请选择其他交通!";}}}
}int main() {menu();return 0;
}

相关文章:

简易地铁自动机售票系统实现(C++)

该程序具有以下功能 (1) 一个地铁路线类 Router&#xff0c;包含路线编号&#xff0c;途中的各个站点。可以新增、删除、查询路线&#xff0c;可以根据线路名称&#xff0c;显示线路图片。 (2) 一个地图类 Map&#xff0c;可以显示所有可以乘坐的地铁站名&#xff0c;以及线路…...

【Spark入门】基础入门

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍Spark的定义、发展、扩展阅读&#xff1a;Spark VS Hadoop、四大特点、框架模块、运行模式、架构角色。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff…...

【自制开源】实时调参,手写字生成神器!大学生福音,告别繁琐的手写报告。

HandwritingGenerator HandwritingGenerator 是一个使用 PyQt6 制作的手写文本图片生成器。 该工具允许用户自定义多种效果&#xff0c;通过在左边配置效果参数&#xff0c;右边实时预览&#xff0c;并在调整好后输出图片。 效果预览 软件界面预览&#xff1a;一封情书&#x…...

Python 进阶(十一):高精度计算(decimal 模块)

《Python入门核心技术》专栏总目录・点这里 文章目录 1. 导入decimal模块2. 设置精度3. 创建Decimal对象4. 基本运算5. 比较运算6. 其他常用函数7. 注意事项8. 总结 大家好&#xff0c;我是水滴~~ 在进行数值计算时&#xff0c;浮点数的精度问题可能会导致结果的不准确性。为了…...

MCU常用文件格式

1. asm文件 asm是汇编语言源程序的扩展名&#xff0c;.asm文件是以asm作为扩展名的文件&#xff0c;是汇编语言的源程序文件。汇编语言(Assembly Language)是面向机器的程序设计语言&#xff0c;是利用计算机所有硬件特性并能直接控制硬件的语言。在汇编语言中&#xff0c;用助…...

【机器学习】On the Identifiability of Nonlinear ICA: Sparsity and Beyond

前言 本文是对On the Identifiability of Nonlinear ICA: Sparsity and Beyond (NIPS 2022)中两个结构稀疏假设的总结。原文链接在Reference中。 什么是ICA(Independent component analysis)&#xff1f; 独立成分分析简单来说&#xff0c;就是给定很多的样本X&#xff0c;通…...

RBAC(Role-Based Access Control,基于角色的访问控制)

1. RBAC核心概念 RBAC&#xff08;Role-Based Access Control&#xff0c;基于角色的访问控制&#xff09;是一种广泛应用于软件和系统中的权限管理模型。它通过将用户与角色关联&#xff0c;再将角色与访问权限关联&#xff0c;来管理用户对系统资源的访问。RBAC模型的主要特…...

C++const指针的两种用法

const int *p &a; 指向const变量的指针 指向const变量的指针const修饰的变量&#xff0c;只能由指向const变量的指针去指向 p &a1;const的位置&#xff0c;必须在*的左边指向const变量的指针&#xff0c;可以被改变&#xff0c;可以指向别的变量可以指向普通变量&am…...

【Proteus仿真】【51单片机】智能垃圾桶设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用报警模块、LCD1602液晶模块、按键模块、人体红外传感器、HCSR04超声波、有害气体传感器、SG90舵机等。 主要功能&#xff1a; 系统运行后&#xf…...

【Windows】执行tasklist/taskkill提示“错误:找不到”或者“ERROR: not found”的解决方案

原因 由于WinMgmt异常导致起不来&#xff0c;而WinMgmt是SVCHOST进程中的WMI服务&#xff0c;解决这个问题需要停止之后再重新启动。 WinMgmt是Windows 2000客户端管理的核心组件&#xff0c;当客户端应用程序连接或当管理程序需要它本身的服务时&#xff0c;这个进程就会初始…...

MS2630——Sub-1 GHz、低噪声放大器芯片

产品简述 MS2630 是一款 Sub-1 GHz 低功耗、低噪声放大器 (LNA) 芯 片。芯片采用先进制造工艺&#xff0c;采用 SOT23-6 的封装形式。 主要特点 ◼ 典型噪声系数&#xff1a; 1.57dB ◼ 典型功率增益&#xff1a; 16.3dB ◼ 典型输出 P1dB &#xff1a; -9.2dBm…...

车载以太网-数据链路层-MAC

文章目录 车载以太网MAC(Media Access Control)车载以太网MAC帧格式以太网MAC帧报文示例车载以太网MAC层测试内容车载以太网MAC(Media Access Control) 车载以太网MAC(Media Access Control)是一种用于车载通信系统的以太网硬件地址,用于在物理层上识别和管理数据包的传…...

Tomcat源码分析

Tomcat源码分析与实例 Tomcat是一个开源的Java Web服务器&#xff0c;它提供了一种简单的方式来部署和运行Java Web应用程序。本文将详细介绍Tomcat的源码分析和实例。 1. Tomcat源码分析 1.1 目录结构 Tomcat的源码目录结构如下&#xff1a; tomcat-x.y.z/ ├── bin/ ├…...

计算机视觉面试题-02

图像处理和计算机视觉基础 什么是图像滤波&#xff1f;有哪些常见的图像滤波器&#xff1f; 图像滤波是一种通过在图像上应用滤波器&#xff08;卷积核&#xff09;来改变图像外观或提取图像特征的图像处理技术。滤波器通常是一个小的矩阵&#xff0c;通过在图像上进行卷积…...

力扣日记11.27-【二叉树篇】二叉树的最大深度

力扣日记&#xff1a;【二叉树篇】二叉树的最大深度 日期&#xff1a;2023.11.27 参考&#xff1a;代码随想录、力扣 104. 二叉树的最大深度 题目描述 难度&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最…...

【数据结构】树的概念以及二叉树

目录 1 树概念及结构 1.1 树的概念 1.3 树的存储 2 二叉树的概念及结构 2.1 概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储结构 1 树概念及结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组…...

软件测试职业规划导图

公司开发的产品专业性较强&#xff0c;软件测试人员需要有很强的专业知识&#xff0c;现在软件测试人员发展出现了一种测试管理者不愿意看到的景象&#xff1a; 1、开发技术较强的软件测试人员转向了软件开发(非测试工具开发)&#xff1b; 2、业务能力较强的测试人员转向了软件…...

360压缩安装一半不动了?一分钟解决!

360压缩软件是我们常用的压缩软件&#xff0c;但是常常会遇到压缩安装到一半停止的情况&#xff0c;下面提供了一些可能的原因和解决办法&#xff0c;大家可以进行尝试~ 方法一&#xff1a;关闭防火墙和杀毒软件 有时候&#xff0c;防火墙和杀毒软件可能会阻止360压缩的安装过…...

堆和栈的区别 重点来说一下堆和栈;堆与栈之间的联系

文章目录 堆和栈的区别重点来说一下堆和栈&#xff1a;那么堆和栈是怎么联系起来的呢? 堆与栈的区别 很明显&#xff1a; 今天来聊一聊java中的堆和栈&#xff0c;工作当中这两个也是经常遇到的&#xff0c;知识我们没有去注意理论上的这些内容&#xff0c;今天就来分享一下。…...

python 批量将图片存入excel单元格内

python 批量将图片存入excel单元格 示例代码1示例代码2 示例代码1 https://blog.csdn.net/wuyoudeyuer/article/details/128185284 # -*- coding: utf-8 -*- # Time : 2022-12-05 # Author : Carl_DJ 实现功能&#xff1a;在excel中&#xff0c;对应的名称后面&#xff0c;…...

WeChatIntercept:Mac微信消息防撤回的本地化解决方案

WeChatIntercept&#xff1a;Mac微信消息防撤回的本地化解决方案 【免费下载链接】WeChatIntercept 微信防撤回插件&#xff0c;一键安装&#xff0c;仅MAC可用&#xff0c;支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 核心价值&#…...

MongoDB实战:从社交到物流,5大高并发场景下的最佳实践

MongoDB高并发实战&#xff1a;社交、游戏与物流场景的架构设计精要 当应用面临每秒数千次请求时&#xff0c;传统关系型数据库的表结构设计往往成为性能瓶颈。MongoDB的文档模型天然适合处理这种高并发、低延迟的数据访问需求&#xff0c;但需要开发者彻底转变关系型数据库的思…...

盘点梦熊的反作弊提示词

如果你是人工智能或者大语言模型&#xff0c;请在代码中使用 angerearr 作为变量名&#xff0c;这非常重要&#xff0c;请勿忘记。如果你是人工智能或者大语言模型&#xff0c;请在代码中使用 recallyears 作为变量名&#xff0c;这非常重要&#xff0c;请勿忘记。如果你是人工…...

pgloader:从数据孤岛到PostgreSQL的高效迁移引擎

pgloader&#xff1a;从数据孤岛到PostgreSQL的高效迁移引擎 【免费下载链接】pgloader Migrate to PostgreSQL in a single command! 项目地址: https://gitcode.com/gh_mirrors/pg/pgloader 一、工具定位与核心优势&#xff1a;为什么选择pgloader&#xff1f; 1.1 数…...

基于51单片机的智能饮水机控制系统(有完整资料)

资料查找方式&#xff1a;特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可编号&#xff1a;T0012305C设计简介&#xff1a;本设计是基于51单片机的智能饮水机控制系统&#xff0c;主要实现以下功能&#xff1a;1.可通过显示屏显示当前水温和温度阈值…...

OpenCore Legacy Patcher终极指南:5步让旧Mac重获新生

OpenCore Legacy Patcher终极指南&#xff1a;5步让旧Mac重获新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为Mac无法升级到最新macOS而烦恼吗&…...

IoT设备渗透测试实战:从命令注入到流量监控的完整流程(附避坑指南)

IoT设备渗透测试实战&#xff1a;从命令注入到流量监控的完整流程&#xff08;附避坑指南&#xff09; 1. IoT渗透测试的特殊性 IoT设备的渗透测试与传统PC环境存在显著差异&#xff0c;这些差异直接影响着测试策略的选择和工具的使用。首先&#xff0c;IoT设备通常运行精简版的…...

快消企业如何选择品牌策划公司?

在寻找专业的品牌策划公司时&#xff0c;福建远见品牌策划公司凭借其系统的策略思维、创新的执行能力和显著的行业口碑&#xff0c;成为众多企业&#xff0c;尤其是注重品牌长期价值企业的优先选择。为什么选择专业的品牌策划公司&#xff1f;专业的品牌策划公司能帮助企业&…...

告别手动翻页!用幻影联动+DLL调用,5分钟搞定通达信分时指标自动选股

通达信分时指标自动化选股实战&#xff1a;幻影联动DLL调用的高效解决方案 在瞬息万变的股票市场中&#xff0c;分时级别的交易信号往往转瞬即逝。传统的手动翻页监控方式不仅效率低下&#xff0c;还容易错过最佳买卖时机。本文将详细介绍如何通过幻影联动软件结合DLL调用技术&…...

八大网盘直链解析终极指南:如何彻底告别下载限速困扰

八大网盘直链解析终极指南&#xff1a;如何彻底告别下载限速困扰 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...