南京地铁售票的C++实现

合集下载

地铁自动售票系统AFC系统-文档资料

地铁自动售票系统AFC系统-文档资料

2021/4/21
20
车票
2021/4/21
21
按照功能可分
面向乘客系统、面向地铁管理系统。 面向乘客系统中的设备可分为:票卡、自动 充值机、自动售票机、自动验票机、顶棚导 向标志、闸机等。
2021/4/21
22
票卡
2021/4/21
23
自动充值机
2021/4/21
24
自动售票机
2021/4/21
系统设计采用分布式处理结构。
2021/4/21
15
AFC系统运行模式
2021/4/21
16
系统组成
按照层次 AFC系统主要由中央计算机系统、站点计算 机系统、终端设备和车票四部分组成。
2021/4/21
17
中央计算机系统
2021/4/21
18
站点计算机系统
2021/4/21
19
终端设备
是票务系统的一种体现和实施方法
是乘客直接面对和使用的一套系统,一定程 度上代表着运营企业的形象
2021/4/21
5
自动售检票系统示意图
AFC系统线路中心计 算机系统 LC (Line Computer)
车站终端设备 SLE
2021/4/21
6
AFC系统的内涵
票务收益管理 提供信息支持 客流导向 提升企业形象 社会效益2021/4/源自138站点计算机系统
站点计算机系统连接多个非接触卡设备、操作 控制管理系统、线路中心计算机和总部计算机、 打印机等设备。
站点计算机系统控制非接触卡设备和产生设备 事件的报告,打印每天的总计报表,格式化非 接触卡的用户数据和为线路中心计算机和总部 中心计算机的审计记录交易,格式化单程票交 易数据,从操作控制管理系统/线路中心计算机 和总部中心计算机接收配置数据、设备配置和 设备应用程序。

地铁afc

地铁afc

地铁afc一、引言地铁(Metro)是一种高速高容量的城市公共交通工具,被广泛应用于全球各大城市。

为了确保地铁系统的安全和高效运营,地铁自动售票系统(Automatic Fare Collection,简称AFC)被引入。

AFC是一种用于收取地铁乘客票款的技术手段,其包括了自动售票机、地铁门禁系统以及后台数据管理系统等。

本文将对地铁AFC系统进行详细介绍。

二、地铁AFC系统的组成地铁AFC系统由以下几个组成部分构成:1. 自动售票机(Ticket Vending Machine,TVM):自动售票机是乘客购买地铁票的主要设备。

它通常安装在地铁站的售票大厅或入口处,提供各种购票方式,例如现金、信用卡、电子钱包等。

乘客只需按照屏幕上的提示,选择购票方式并支付相应费用,便可获取地铁乘车证。

2. 地铁门禁系统(Ticket Gate System,TGS):地铁门禁系统是用于控制地铁入口和出口的设备,主要用于验证乘客是否已购买有效车票。

当乘客持有效车票接近门禁系统时,系统会自动辨别票的有效性,并开启相应的闸门,方便乘客进入或离开地铁站。

3. 后台数据管理系统:后台数据管理系统是地铁AFC系统的核心,负责存储和处理所有与票款相关的数据。

它能够实时监控各个地铁站点的票款收入情况,并进行统计、分析和报告,为地铁管理部门提供有价值的数据支持,用于决策和优化地铁运营。

三、地铁AFC系统的优势地铁AFC系统带来了诸多优势,对地铁运营和乘客体验都具有积极的影响。

1. 提高乘客出行效率:地铁AFC系统使购票和通过门禁变得更加快捷和便利,减少了排队时间,提高了地铁乘车效率。

2. 降低票款流失风险:由于地铁AFC系统的自动化和数字化特点,票款的收取与管理过程更加规范和透明,有效减少了票款流失的风险。

3. 数据化运营管理:通过后台数据管理系统实时监控票款收入情况,地铁管理部门能够及时了解各个站点的客流状况、热点区域分布等信息,从而进行合理的运营和调整。

自动售检票系统

自动售检票系统

自动售检票系统城市轨道交通自动吿检票系统(AFC)是基于计算机、通信.网络、自动控制等技术,实现轨道交通售票、检票、收费、讣费.统汁、清分.管理等全过程的自动化系统,广泛应用于城市地铁、城际铁路、有轨电车、BRT 等领域。

自动售检票系统目前有两种架构.一种为典型架构.按层次结构划分为清分中心系统、线路中央讣算机系统、乍站汁算机系统、午站终端设备、牟票五个层次:另一种为互联网+架构.按结构划分为云服务器、云终端设备和移动终端。

典型架构互联网十架构自动停检票系统产品包括系统软件和系统设备两部分.其中系统软件含淸分中心系统(ACC).线路中央计算机系统(LCC)和车站计算机系统(SC):新科佳都的系统设备有自动售票机(TVM)、自动检票机(AGM)、自动验票机(TCM)、半自动售票机(BOM) x编码分拣机(ES).边门检票机(SDG)、有轨电午自动售票机、有轨电千自动检票机、有轨电午乍载检票机<TTM) x云购票机(M-TVM)、云自动检票机(H-AGH〉.人脸识别闸机等。

新科佳都十筝年來坚持自主创新•堂握核心科技,拥有完备的自主知识产权体系.全套自助终端设备. 核心模块研发.广泛运用于国内地诜、城际诜路和有轨电午等领域项目°自动售检票系统,简称AFC.是实现轨道交通售票.检票、il•费、收费、统计、淸分、管理等全过程的自动处理。

基木信息英文翻译:Automatic Fare Collection system, (AFC)自动皆检票系统是国际化大城市轨道交通运行中普遍应用的现代化联网收费系统.随着自动售检票系统的启用,乘客现在可以通过各入口处的自动售票机购买电子票。

目前上海、北京、广州.天津、深圳、南京等大城市的轨道交通地铁站都广泛使用r AFC系统作为重要客运管理应用.更女的应用场合包括电影院,体育馆,歌剧院,火车站,机场等。

AFC系统实现轨道交通售票、检票、计费.收费.统计乙淸分.管理等全过程的自动处理。

AFC运营模式

AFC运营模式

AFC运营模式AFC系统,指城市轨道交通自动售检票系统。

该系统是一种由计算机集中控制的自动售票(包括半自动售票)、自动检票以及自动收费和统计的封闭式自动化网络系统。

AFC自动售检票系统基于计算机、通信、网络、自动控制等技术,能够实现轨道交通售票、检票、计费、收费、统计、清分、管理通过自动化进行。

以下是关于AFC运行模式的介绍:AFC运行模式进行了层次划分,共分为车票、车站终端设备、车站计算机系统、线路中央计算机系统、清分系统五个层次。

层次结构是按照全封闭的运行方式,以计程收费模式为基础,采用非接触式IC卡为车票介质的组成原则,根据各层次设备和子系统各自的功能、管理职能和所处的位置进行划分的。

已经确定的五层结构型式,是根据我国国情和城市发展现状,综合考虑了轨道交通建设的特点(如线路多而复杂、建设周期长、多个业主单位等情况)而设置的,具有一定的可伸缩性。

对各层次必须实现的功能和要求做出如下规定:第一层——车票,乘客所持有的车费支付媒介。

第二层——车站终端设备安装在各车站的站厅,直接为乘客提供售检票服务的设备,规定了车站终端设备及其运营管理的技术要求。

第三层——车站计算机系统,其主要功能是对第二层车站终端设备进行状态监控、以及收集本站产生的交易和审计数据,规定了系统的数据管理、运营管理及系统维护管理的技术要求。

第四层———线路中央计算机系统,其主要功能是收集本线路AFC系统产生的交易和审计数据,并将此数据传送给城市轨道交通清分系统,以及与其进行对帐,规定了对该线路的车票票务管理、运营管理及系统维护的技术要求。

第五层———清分系统,其主要功能是统一城市轨道交通AFC系统内部的各种运行参数、收集城市轨道交通AFC系统产生的交易和审计数据并进行数据清分和对帐、同时负责连接城市轨道交通AFC系统和城市一卡通清分系统,规定了对车票管理、票务管理、运营管理和系统维护管理的技术要求。

在自动检票闸机系统中,需要多串口应用,例如车票自动吞吐口、非接触式IC卡、用于显示提示信息的显示屏、阻挡装置控制器、中心控制器、报警器等等,同时需要网口、USB接口与系统终端进行信息通讯。

虚拟技术实现南京地铁AFC系统服务器成功迁移

虚拟技术实现南京地铁AFC系统服务器成功迁移

D oI :1 0 . 3 9 6 9 / j . i s s n . 1 6 7 3 — 4 4 4 0 . 2 0 1 4 . 0 2 . 0 1 4
1 A F C 系统服务器介绍 、现状 、更换必 要性
1 . 1 A F C 系统服务器介绍 2 0 0 3 年 ,南京地铁一号线 A FC系统投入使用 , 据统计一号线的服务器共计 2 l 台 ,主要分为中央计
虚拟技术实现南京地铁 A F C 系统服务器成功迁移
韩 洁 徐 钟 全
2 1 0 0 0 0 ;
( 1 . 南京地 铁 运 营有 限责任 公 司 ,南京
2 .北京 全路 通信 信 号研 究设 计 院有 限公 司,北京 1 0 0 0 7 3 )

摘 要 :2 0 0 5 年 ,南京地 铁 一 号线A F C 系统投 入使 用 ,中央和 车 站服 务 器承担 着A F C 系统 的主 要 业 务 , 如数据 处理 、参 数 管理 、设 备 管理 等 。各 个 服 务 器随 着 系统运 行年 限 的增 长 ,服 务器硬 件 故障 出现 上升趋 势 ,且 服 务 器 的备 件 厂 家已不再提 供 ,服 务 器的维 护 工作 难度 日趋 加 大 。为避 免不可 恢 复的
算 机 系 统服 务 器 和 车 站 计算 机 系 统 服务 器 。 中央 服 务器和车站服务器 ( 简称 服 务 器 )是 AFC系 统 的 主 要 组成 部 分 ,主要 承 担 的 系统 功 能 有 各层 级 的数
1 . 2 A F C 系统服 务器 现 状及迁 移必 要
1 . 2 . 1 设备 使 用 已超过 设计 年 限
a n d s t a t i o n s e r v e r s u n d e  ̄ a k e t h e ma i n b u s i n e s s o f t h e AF C s y s t e m s u c h a s d a t a p r o c e s s i n g , p a r a me t e r ma n a g e me n t a n d e q u i p me n t ma n a g e me n t . Wi t h t h e s y s t e m o p e r a t i n g f o r y e a r s . h a r d wa r e f a i l u r e s o f t h e s e r v e r s h a v e b e c o me a n u p wa r d t r e n d , me a n wh i l e , t h e r e i s n o l o n g e r a v a i l a b l e s p a r e p a r t s f r o m ma n u f a c t u r e r s ,S O s e r v e r ma i n t e n a n c e d i ic f u l t y i s i n c r e a s i n g . I n o r d e r t o a v o i d t h e s y s t e m f a i l u r e , t h e t r a n s i t i o n o f a l l s e r v e r s or f l i n e l i s ma d e t h r o u g h a p r i o r r e s e a r c h o n v i r t u a l t e c h n o l o g y a n d r e p e a t e d s y s t e m t r a n s i t i o n t e s t a n d v e r i i f c a t i o n . Ke y wo r d s : AF C s y s t e m; s e r v e r ; v i r t u a l t e c h n o l o g y ; ra t n s i t i o n

AFC解决方案

AFC解决方案

AFC解决方案AFC解决方案是指自动售票系统(Automatic Fare Collection System)的解决方案,它是一种用于公共交通领域的先进技术,旨在提高乘客购票和进出站的便利性、安全性和效率。

本文将详细介绍AFC解决方案的定义、功能、优势以及实施过程。

一、定义AFC解决方案是一种集成为了硬件设备、软件系统和网络通信技术的自动售票系统。

它通过自动识别乘客身份、实时计费和数据管理,实现公共交通的智能化运营管理。

二、功能1. 自动售票:AFC解决方案通过自动售票机,实现乘客购买车票的自助化,减少人工售票的繁琐过程,提高购票效率。

2. 电子支付:AFC解决方案支持多种电子支付方式,如IC卡、二维码支付、挪移支付等,方便乘客选择适合自己的支付方式。

3. 闸机进出站:AFC解决方案通过闸机设备,实现乘客刷卡进出站,自动识别乘客身份,减少人工查验的时间和工作量。

4. 实时计费:AFC解决方案能够根据乘客的出行距离和时间,实时计算票价,并自动扣除相应费用,提高计费的准确性和便利性。

5. 数据管理:AFC解决方案能够实时采集、存储和分析乘客的出行数据,为公共交通管理部门提供数据支持,优化路线规划和运营管理。

三、优势1. 提升乘客体验:AFC解决方案实现了公共交通购票和进出站的自助化,减少了乘客排队等候的时间,提高了乘客的出行体验。

2. 提高运营效率:AFC解决方案通过自动化的售票和进出站过程,减少了人工操作的环节,提高了运营效率,降低了运营成本。

3. 加强安全管理:AFC解决方案通过自动识别乘客身份和实时计费,减少了人工操作的错误和漏洞,提高了安全管理水平,防止票款的流失和乘客的逃票行为。

4. 数据分析决策:AFC解决方案能够实时采集和分析乘客的出行数据,为公共交通管理部门提供数据支持,优化路线规划和运营决策,提高运营效益。

四、实施过程1. 硬件设备安装:根据具体的场景需求,安装自动售票机、闸机设备等硬件设备,确保设备的正常运行和稳定性。

浅谈轨道交通网络化AFC系统票务管理

浅谈轨道交通网络化AFC系统票务管理

浅谈轨道交通网络化AFC系统票务管理随着现代化城市进程的加快,轨道交通逐渐成为人们交通出行的重要工具,而票务管理是轨道交通日常运营的关键,这项服务工作的优劣对于整个轨道交通运营都有着直接的影响。

随着城市轨道交通线路的扩充,轨道交通网络化AFC系统票务管理越来越重要,在未来发展过程中,应进一步推动AFC系统的快速发展。

一、轨道交通网路化AFC系统票务管理流程南京地铁AFC票务系管理系统主要包括售票、退票、显示时间表、查询、更新、票务、浏览信息、更新车次等模块,为地铁站的日常运营提供极大的便利。

同时,AFC系统实现了地铁站的多线建设,为乘客提供无障碍换乘和统一服务界面,基于信息化系统,实现了南京地铁线路的互联互通。

网络化AFC系统的票务管理主要实现票卡的库存、预赋值、初始化、采购等业务,网络化多线路运营过程中,AFC系统采用三级管理模式:车站、线路票务中心和票卡清分部。

票卡清分部统一进行车标采购,在空白车票库存中管理全部采购车票。

车票投入使用之前,首先完成初始化,没有进行初始化的车票无法进入AFC系统使用。

当车票库存小于标准值时,开始车票采购,通过票卡清分部对单程车票进行初始化然后存入车票库,分配到各个线路,已经完成初始化的计次票、记账票、储值票等非单程票通过车票预赋值、个性化管理提交到售票代理站或者存入车票库。

轨道交通系统正常运营过程中,由票卡清分部完成各条线路车票的调配,票务中心来完成同一条线路各个站之间的车票管理和调配。

同时,票卡清分部负责车票预赋值,然后分配到各个线路,各个线路上的票务中心在对一些紧急车票进行预赋值之前,必须获得清分中心的相关授权,然后将相关数据传送到票卡清分部。

另外,轨道交通网络系统中,对于车票替换、退票、退款、挂失等业务,票卡信息自动保存在AFC系统中,一旦发现有问题的票卡,相关信息反馈到票卡清分部,最后完成车票的统一销毁和注销,重新进行初始化以后再投入使用。

二、轨道交通网络化AFC系统票务管理架构1、车票轨道交通AFC系统票务管理中心对车票进行初始化,然后分配到各条线路。

南京地铁自动售检票_AFC_系统网络故障诊断浅谈

南京地铁自动售检票_AFC_系统网络故障诊断浅谈

获通过过程交换的报文。调试命令会 视时最好不要使用这些命令。在获 请求报文组成,如果网络正常运行
明显增加处理器的负载。某一些命令 得足够的信息后,应立刻中止调试 将返回一组回应应答报文。 I C M P
的负载很小,但是另一些处理器敏感 命令的执行。首先,需要了解的是有 消息以 IP 数据包传输,因此,接收
户端开始检查。可以沿着客户端计 件的基本信息。show hardware 等有价值的信息,包括最大传输单
算机→端口模块→水平线缆→跳线 ( 显 示 硬 件 信 息 ) 命 令 的 功 能 与 元、带宽、延迟、可靠性、负载、每
→交换机这样一条路线,逐个检查, s h o w v e r s i o n 命令类似。s h o w 1 ms通过路由器接口的平均信息量
管理员关闭,或者配置上的原因。如 内存利用率,CPU 利用率可以使用 网络故障时的特殊功能,可以减少用
果排除了系统和配置上的各种可能, show process(显示进程统计信息) 户对协议分析仪的需求。在使用调试
80 MODERN URBAN TRANSIT 6 / 2009 现代城市轨道交通
南京地铁自动售检票(AFC)系统网络故障诊断浅谈 李 黎
距离较远(90 m 以上),都使用了光 合 布 线 系 统 的 线 路 故 障 有 以 下 几 分析过程、故障解决方案、故障归类
纤连接,采用 4 芯多模室内光纤。 种:跳线对应关系错;信息点标签 总结等工作,积累经验。
管理子系统在此综合布线中比 对 应 关 系错 ;手 工 制 作 的 R J - 4 5 3.1.1 交换机故障诊断方法
先排除远端故障的可能。
h a r d w a r e 命令的输出信息包括: (以字节为单位)以及报文数、输入
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<windows.h>#include<iostream>using namespace std;#include<string.h>#include<math.h>HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);char start[80],end[80];//保存当前站点和目的站点的数组int GetCurX(){int curX;HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_SCREEN_BUFFER_INFO bInfo;GetConsoleScreenBufferInfo(hout,&bInfo);curX=bInfo.dwCursorPosition.X;return curX;}int GetCurY(){int curY;HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_SCREEN_BUFFER_INFO bInfo;GetConsoleScreenBufferInfo(hout,&bInfo);curY=bInfo.dwCursorPosition.Y;return curY;}void GotoXY(int x,int y){HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X=x;pos.Y=y;SetConsoleCursorPosition(hout,pos);}void Move(){HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);HANDLE hin=GetStdHandle(STD_INPUT_HANDLE);INPUT_RECORD mouseRec;DWORD res;for(;;){ReadConsoleInput(hin,&mouseRec,1,&res);SetConsoleCursorPosition(hout,mouseRec.Event.MouseEvent.dwMousePosition);if(mouseRec.Event.MouseEvent.dwEventFlags==0){if(mouseRec.Event.MouseEvent.dwButtonState==0){break;}}}}void draw_picture(){SetConsoleTextAttribute(hout,0x0E);//亮黄色GotoXY(0,0);cout<<"〖南京地铁运营线路图〗";//画一号线路图,包括南延线SetConsoleTextAttribute(hout,0x0A);//亮绿色GotoXY(35,33);cout<<"南京地铁一号线";GotoXY(40,1);cout<<"⊙奥体中心";GotoXY(40,2);cout<<"┃";SetConsoleTextAttribute(hout,0xE9);GotoXY(40,3);cout<<"●元通";SetConsoleTextAttribute(hout,0x0A);GotoXY(40,4);cout<<"┃";GotoXY(40,5);cout<<"⊙中胜";GotoXY(40,6);cout<<"┃";GotoXY(40,7);cout<<"⊙小行";GotoXY(40,8);cout<<"┃";SetConsoleTextAttribute(hout,0xB9);GotoXY(40,9);cout<<"◆安德门";SetConsoleTextAttribute(hout,0x0A);GotoXY(40,10);cout<<"┃";GotoXY(40,11);cout<<"⊙中华门";GotoXY(40,12);cout<<"┃";GotoXY(40,13);cout<<"⊙三山街";GotoXY(40,14);cout<<"┃";GotoXY(40,15);cout<<"⊙张府园";GotoXY(40,16);cout<<"┃";SetConsoleTextAttribute(hout,0xE9);GotoXY(40,17);cout<<"●新街口";SetConsoleTextAttribute(hout,0x0A);GotoXY(40,18);cout<<"┃";GotoXY(40,19);cout<<"⊙珠江路";GotoXY(40,20);cout<<"┃";GotoXY(40,21);cout<<"⊙鼓楼";GotoXY(40,22);cout<<"┃";GotoXY(40,23);cout<<"⊙玄武门";GotoXY(40,24);cout<<"┃";GotoXY(40,25);cout<<"⊙新模范马路";GotoXY(40,26);cout<<"┃";GotoXY(40,27);cout<<"⊙南京站";GotoXY(40,28);cout<<"┃";GotoXY(40,29);cout<<"⊙红山动物园";GotoXY(40,30);cout<<"┃";GotoXY(40,31);cout<<"⊙迈皋桥";/*南延线*/GotoXY(3,8);cout<<"南京地铁一号线南延线";GotoXY(2,9);cout<<"┏━━━━━━━━━━━━━━━━━━"; GotoXY(2,10);cout<<"⊙天隆寺";GotoXY(2,11);cout<<"┃";GotoXY(2,12);cout<<"⊙软件大道";GotoXY(2,13);cout<<"┃";GotoXY(2,14);cout<<"⊙花神庙";GotoXY(2,15);cout<<"┃";GotoXY(2,16);cout<<"⊙南京南站";GotoXY(2,17);cout<<"┃";GotoXY(2,18);cout<<"⊙双龙大道";GotoXY(2,19);cout<<"┃";GotoXY(2,20);cout<<"⊙河定桥";GotoXY(2,21);cout<<"┃";GotoXY(2,22);cout<<"⊙胜太路";GotoXY(2,23);cout<<"┃";GotoXY(2,24);cout<<"⊙百家湖";GotoXY(2,25);cout<<"┃";GotoXY(2,26);cout<<"⊙小龙湾";GotoXY(2,27);cout<<"┃";GotoXY(2,28);cout<<"⊙竹山路";GotoXY(2,29);cout<<"┃";GotoXY(2,30);cout<<"⊙天印大道";GotoXY(2,31);cout<<"┃";GotoXY(2,32);cout<<"⊙龙眠大道";GotoXY(2,33);cout<<"┃";GotoXY(2,34);cout<<"⊙南医大";GotoXY(2,35);cout<<"┃";GotoXY(2,36);cout<<"⊙南京交院";GotoXY(2,37);cout<<"┃";GotoXY(2,38);cout<<"⊙中国药科大学";//画二号线路图SetConsoleTextAttribute(hout,0x0C);//亮红色GotoXY(60,1);cout<<"南京地铁二号线"; GotoXY(38,3);cout<<"━";GotoXY(28,3);cout<<"⊙雨润大街";GotoXY(26,3);cout<<"━";GotoXY(18,3);cout<<"⊙油坊桥";GotoXY(46,3);cout<<"━━━━━━━"; GotoXY(60,3);cout<<"┓";GotoXY(60,4);cout<<"⊙奥体东";GotoXY(60,5);cout<<"┃";GotoXY(60,6);cout<<"⊙兴隆大街";GotoXY(60,7);cout<<"┃";GotoXY(60,8);cout<<"⊙集庆门大桥";GotoXY(60,9);cout<<"┃";GotoXY(60,10);cout<<"⊙云锦路";GotoXY(60,11);cout<<"┃";GotoXY(60,12);cout<<"⊙莫愁湖";GotoXY(60,13);cout<<"┃";GotoXY(60,14);cout<<"⊙汉中门";GotoXY(60,15);cout<<"┃";GotoXY(60,16);cout<<"⊙上海路";GotoXY(48,17);cout<<"━━━━━━┛"; GotoXY(20,17);cout<<"┏━━━━━━━━━";GotoXY(20,18);cout<<"⊙大行宫";GotoXY(20,19);cout<<"┃";GotoXY(20,20);cout<<"⊙西安门";GotoXY(20,21);cout<<"┃";GotoXY(20,22);cout<<"⊙明故宫";GotoXY(20,23);cout<<"┃";GotoXY(20,24);cout<<"⊙苜蓿园";GotoXY(20,25);cout<<"┃";GotoXY(20,26);cout<<"⊙下马坊";GotoXY(20,27);cout<<"┃";GotoXY(20,28);cout<<"⊙孝陵卫";GotoXY(20,29);cout<<"┃";GotoXY(20,30);cout<<"⊙钟灵街";GotoXY(20,31);cout<<"┃";GotoXY(20,32);cout<<"⊙马群";GotoXY(20,33);cout<<"┃";GotoXY(20,34);cout<<"⊙金马路";GotoXY(20,35);cout<<"┃";GotoXY(20,36);cout<<"⊙仙鹤门";GotoXY(20,37);cout<<"┃";GotoXY(20,38);cout<<"⊙学则路";GotoXY(20,39);cout<<"┃";GotoXY(20,40);cout<<"⊙仙林中心";GotoXY(30,40);cout<<"━";GotoXY(32,40);cout<<"⊙羊山公园";GotoXY(42,40);cout<<"━";GotoXY(44,40);cout<<"⊙南大仙林校区";GotoXY(58,40);cout<<"━";GotoXY(60,40);cout<<"⊙经天路";SetConsoleTextAttribute(hout,15);GotoXY(90,4);cout<<"注意:1~8站:2元9~12站:3元12站以上:4元";GotoXY(90,6);cout<<"当前站名:";GotoXY(90,8);cout<<"目的站名:";GotoXY(90,10);cout<<"请点击下面选择购票张数:";SetConsoleTextAttribute(hout,0xDF);GotoXY(90,12);cout<<"1 2 3 4 5";SetConsoleTextAttribute(hout,15);GotoXY(90,16);cout<<"请开始投币!";GotoXY(90,18);cout<<"请点击下面选择面值:";SetConsoleTextAttribute(hout,0xDF);GotoXY(90,20);cout<<"1元,5元,10元,20元";SetConsoleTextAttribute(hout,15);GotoXY(90,24);cout<<"应付款数:";GotoXY(90,26);cout<<"已付款数:";GotoXY(90,28);cout<<"找零:";for(int i=2;i<=40;i++){GotoXY(85,i);cout<<"§";}SetConsoleTextAttribute(hout,0x0B);}void main(){char Line1[][16]={"奥体中心","元通","中胜","小行","安德门","中华门","三山街","张府园","新街口","珠江路","鼓楼","玄武门","新模范马路","南京站","红山动物园","迈皋桥"};char Line1_ny[][16]={"安德门","天隆寺","软件大道","花神庙","南京南站","双龙大道","河定桥","胜太路","百家湖","小龙湾","竹山路","天印大道","龙眠大道","南医大","南京交院","中国医科大学"};char Line2[][26]={"油坊桥","雨润大桥","元通","奥体东","兴隆大桥","集庆门大桥","云锦路","莫愁湖","汉中门","上海路","新街口","大行宫","西安门","明故宫","苜蓿园","下马坊","孝陵卫","钟灵街","马群","金马路","仙鹤门","学则路","仙林中心","羊山公园","南大仙林校区","经天路"};int m,n,number_cur,number_des,s;//mumber_cur代表当前站点在数组中的号码,number_des代表目的站点在数组中的序号int a,money,money_in=0,mianzhi;//a代表站点数void Cur_Station();//当前站点void Des_Station();//目地站点draw_picture();while(1)//选择当前站点和目的站点{Move();Cur_Station();Move();Des_Station();break;}while(1){Move();//选择购票数if(GetCurX()==90 && GetCurY()==12){GotoXY(111,10);cout<<"1";s=1;}if(GetCurX()==92 && GetCurY()==12){GotoXY(111,10);cout<<"2";s=2;}if(GetCurX()==94 && GetCurY()==12){GotoXY(111,10);cout<<"3";s=3;}if(GetCurX()==96 && GetCurY()==12){GotoXY(111,10);cout<<"4";s=4;}if(GetCurX()==98 && GetCurY()==12){GotoXY(111,10);cout<<"5";s=5;}for(int i=0;i<=25;i++){if(strcmp(Line2[i],start)==0)number_cur=i,m=0;else{for(int j=0;j<=15;j++)if(strcmp(Line1[j],start)==0) number_cur=j,m=1;else{for(int l=0;l<=15;l++)if(strcmp(Line1_ny[l],start)==0)number_cur=l,m=2;}}}for(i=0;i<=25;i++){if(strcmp(Line2[i],end)==0)number_des=i,n=0;else{for(int j=0;j<=15;j++)if(strcmp(Line1[j],end)==0)number_des=j,n=1;else{for(int l=0;l<=15;l++)if(strcmp(Line1_ny[l],end)==0)number_des=l,n=2;}}}//计算站点数if(m==n)a=fabs(number_cur-number_des);else{if(m==0&&n==1)a=fabs(number_cur-2)+fabs(number_des-1)<=fabs(number_cur-10)+fabs(number_des-8)?fabs(n umber_cur-2)+fabs(number_des-1):fabs(number_cur-10)+fabs(number_des-8);if(m==0&&n==2)a=number_des+3+fabs(number_cur-2)<=number_des+4+fabs(number_cur-10)?number_des+3+f abs(number_cur-2):number_des+4+fabs(number_cur-10);if(m==1&&n==0)a=fabs(number_des-2)+fabs(number_cur-1)<=fabs(number_des-10)+fabs(number_cur-8)?fabs(n umber_des-2)+fabs(number_cur-1):fabs(number_des-10)+fabs(number_cur-8);if(m==1&&n==2)a=fabs(number_cur-4)+number_des;if(m==2&&n==0)a=number_cur+3+fabs(number_des-2)<=number_cur+4+fabs(number_des-10)?number_cur+3+f abs(number_des-2):number_cur+4+fabs(number_des-10);if(m==2&&n==1)a=fabs(number_des-4)+number_cur;}if(a>=1 && a<=8)money=2*s;if(a>=9 && a<=12)money=3*s;if(a>=13)money=4*s;GotoXY(99,24);cout<<money;//输出应付款数break;}while(1)//付款,找零{Move();if(GetCurX()>=90 && GetCurX()<=92 && GetCurY()==20){GotoXY(109,18);cout<<"1元";mianzhi=1;}if(GetCurX()>=94 && GetCurX()<=96 && GetCurY()==20){GotoXY(109,18);cout<<"5元";mianzhi=5;}if(GetCurX()>=98 && GetCurX()<=101 && GetCurY()==20){GotoXY(109,18);cout<<"10元";mianzhi=10;}if(GetCurX()>=103 && GetCurX()<=106 && GetCurY()==20){GotoXY(109,18);cout<<"20元";mianzhi=20;}money_in=money_in+mianzhi;if(money_in<money){GotoXY(99,26);cout<<money_in;}else{GotoXY(99,26);cout<<money_in;GotoXY(95,28);cout<<money_in-money;GotoXY(95,34);cout<<"欢迎下次乘坐南京地铁,祝您一路平安!";}}}void Cur_Station()//当前站点{//一号线站点if(GetCurX()>=40 && GetCurX()<=49 && GetCurY()==1){GotoXY(99,6); cout<<"奥体中心"; strcpy(start,"奥体中心");}if(GetCurX()>=40 && GetCurX()<=45 && GetCurY()==3){GotoXY(99,6); cout<<"元通"; strcpy(start,"元通");}if(GetCurX()>=40 && GetCurX()<=45 && GetCurY()==5){GotoXY(99,6); cout<<"中胜";strcpy(start,"中胜");}if(GetCurX()>=40 && GetCurX()<=45 && GetCurY()==7){GotoXY(99,6); cout<<"小行";strcpy(start,"小行");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==9){GotoXY(99,6); cout<<"安德门";strcpy(start,"安德门");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==11){GotoXY(99,6); cout<<"中华门";strcpy(start,"中华门");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==13){GotoXY(99,6); cout<<"三山街";strcpy(start,"三山街");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==15){GotoXY(99,6); cout<<"张府园";strcpy(start,"张府园");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==17){GotoXY(99,6); cout<<"新街口";strcpy(start,"新街口");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==19){GotoXY(99,6); cout<<"珠江路";strcpy(start,"珠江路");}if(GetCurX()>=40 && GetCurX()<=45 && GetCurY()==21){GotoXY(99,6); cout<<"鼓楼";strcpy(start,"鼓楼");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==23){GotoXY(99,6); cout<<"玄武门";strcpy(start,"玄武门");}if(GetCurX()>=40 && GetCurX()<=51 && GetCurY()==25){GotoXY(99,6); cout<<"新模范马路";strcpy(start,"新模范马路");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==27){GotoXY(99,6); cout<<"南京站";strcpy(start,"南京站");}if(GetCurX()>=40 && GetCurX()<=51 && GetCurY()==29){GotoXY(99,6); cout<<"红山动物园";strcpy(start,"红山动物园");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==31){GotoXY(99,6); cout<<"迈皋桥";strcpy(start,"迈皋桥");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==10){GotoXY(99,6); cout<<"天隆寺";strcpy(start,"天隆寺");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==12){GotoXY(99,6); cout<<"软件大道";strcpy(start,"软件大道");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==14){GotoXY(99,6); cout<<"花神庙";strcpy(start,"花神庙");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==16){GotoXY(99,6); cout<<"南京南站";strcpy(start,"南京南站");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==18){GotoXY(99,6); cout<<"双龙大道";strcpy(start,"双龙大道");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==20){GotoXY(99,6); cout<<"河定桥";strcpy(start,"河定桥");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==22){GotoXY(99,6); cout<<"胜太路";strcpy(start,"胜太路");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==24){GotoXY(99,6); cout<<"百家湖";strcpy(start,"百家湖");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==26){GotoXY(99,6); cout<<"小龙湾";strcpy(start,"小龙湾");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==28){GotoXY(99,6); cout<<"竹山路";strcpy(start,"竹山路");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==30){GotoXY(99,6); cout<<"天印大道";strcpy(start,"天印大道");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==32){GotoXY(99,6); cout<<"龙眠大道";strcpy(start,"龙眠大道");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==34){GotoXY(99,6); cout<<"南医大";strcpy(start,"南医大");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==36){GotoXY(99,6); cout<<"南京交院";strcpy(start,"南京交院");}if(GetCurX()>=2 && GetCurX()<=15 && GetCurY()==38){GotoXY(99,6); cout<<"中国药科大学";strcpy(start,"中国药科大学");}//二号线站点if(GetCurX()>=28 && GetCurX()<=37 && GetCurY()==3){GotoXY(99,6); cout<<"雨润大街";strcpy(start,"雨润大街");}if(GetCurX()>=18 && GetCurX()<=25 && GetCurY()==3){GotoXY(99,6); cout<<"油坊桥";strcpy(start,"油坊桥");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==4){GotoXY(99,6); cout<<"奥体东";strcpy(start,"奥体东");}if(GetCurX()>=60 && GetCurX()<=69 && GetCurY()==6){GotoXY(99,6); cout<<"兴隆大街";strcpy(start,"兴隆大街");}if(GetCurX()>=60 && GetCurX()<=71 && GetCurY()==8){GotoXY(99,6); cout<<"集庆门大桥";strcpy(start,"集庆门大桥");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==10){GotoXY(99,6); cout<<"云锦路";strcpy(start,"云锦路");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==12){GotoXY(99,6); cout<<"莫愁湖";strcpy(start,"莫愁湖");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==14){GotoXY(99,6); cout<<"汉中门";strcpy(start,"汉中门");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==16){GotoXY(99,6); cout<<"上海路";strcpy(start,"上海路");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==18){GotoXY(99,6); cout<<"大行宫";strcpy(start,"大行宫");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==20){GotoXY(99,6); cout<<"西安门";strcpy(start,"西安门");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==22){GotoXY(99,6); cout<<"明故宫";strcpy(start,"明故宫");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==24){GotoXY(99,6); cout<<"苜蓿园";strcpy(start,"苜蓿园");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==26){GotoXY(99,6); cout<<"下马坊";strcpy(start,"下马坊");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==28){GotoXY(99,6); cout<<"孝陵卫";strcpy(start,"孝陵卫");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==30){GotoXY(99,6); cout<<"钟灵街";strcpy(start,"钟灵街");}if(GetCurX()>=20 && GetCurX()<=25 && GetCurY()==32){GotoXY(99,6); cout<<"马群";strcpy(start,"马群");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==34){GotoXY(99,6); cout<<"金马路";strcpy(start,"金马路");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==36){GotoXY(99,6); cout<<"仙鹤门";strcpy(start,"仙鹤门");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==38){GotoXY(99,6); cout<<"学则路";strcpy(start,"学则路");}if(GetCurX()>=20 && GetCurX()<=29 && GetCurY()==40){GotoXY(99,6); cout<<"仙林中心";strcpy(start,"仙林中心");}if(GetCurX()>=32 && GetCurX()<=41 && GetCurY()==40){GotoXY(99,6); cout<<"羊山公园";strcpy(start,"羊山公园");}if(GetCurX()>=44 && GetCurX()<=55 && GetCurY()==40){GotoXY(99,6); cout<<"南大仙林校区";strcpy(start,"南大仙林校区");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==40){GotoXY(99,6); cout<<"经天路";strcpy(start,"经天路");}}void Des_Station()//目地站点{//一号线站点if(GetCurX()>=40 && GetCurX()<=49 && GetCurY()==1){GotoXY(99,8); cout<<"奥体中心";strcpy(end,"奥体中心");}if(GetCurX()>=40 && GetCurX()<=45 && GetCurY()==3){GotoXY(99,8); cout<<"元通";strcpy(end,"元通");}if(GetCurX()>=40 && GetCurX()<=45 && GetCurY()==5){GotoXY(99,8); cout<<"中胜";strcpy(end,"中胜");}if(GetCurX()>=40 && GetCurX()<=45 && GetCurY()==7){GotoXY(99,8); cout<<"小行";strcpy(end,"小行");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==9){GotoXY(99,8); cout<<"安德门";strcpy(end,"安德门");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==11){GotoXY(99,8); cout<<"中华门";strcpy(end,"中华门");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==13){GotoXY(99,8); cout<<"三山街";strcpy(end,"三山街");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==15){GotoXY(99,8); cout<<"张府园";strcpy(end,"张府园");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==17){GotoXY(99,8); cout<<"新街口";strcpy(end,"新街口");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==19){GotoXY(99,8); cout<<"珠江路";strcpy(end,"珠江路");}if(GetCurX()>=40 && GetCurX()<=45 && GetCurY()==21){GotoXY(99,8); cout<<"鼓楼";strcpy(end,"鼓楼");}";strcpy(end,"玄武门");}if(GetCurX()>=40 && GetCurX()<=51 && GetCurY()==25){GotoXY(99,8); cout<<"新模范马路";strcpy(end,"新模范马路");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==27){GotoXY(99,8); cout<<"南京站";strcpy(end,"南京站");}if(GetCurX()>=40 && GetCurX()<=51 && GetCurY()==29){GotoXY(99,8); cout<<"红山动物园";strcpy(end,"红山动物园");}if(GetCurX()>=40 && GetCurX()<=47 && GetCurY()==31){GotoXY(99,8); cout<<"迈皋桥";strcpy(end,"迈皋桥");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==10){GotoXY(99,8); cout<<"天隆寺";strcpy(end,"天隆寺");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==12){GotoXY(99,8); cout<<"软件大道";strcpy(end,"软件大道");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==14){GotoXY(99,8); cout<<"花神庙";strcpy(end,"花神庙");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==16){GotoXY(99,8); cout<<"南京南站";strcpy(end,"南京南站");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==18){GotoXY(99,8); cout<<"双龙大道";strcpy(end,"双龙大道");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==20){GotoXY(99,8); cout<<"河定桥";strcpy(end,"河定桥");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==22){GotoXY(99,8); cout<<"胜太路";strcpy(end,"胜太路");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==24){GotoXY(99,8); cout<<"百家湖";strcpy(end,"百家湖");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==26){GotoXY(99,8); cout<<"小龙湾";strcpy(end,"小龙湾");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==28){GotoXY(99,8); cout<<"竹山路";strcpy(end,"竹山路");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==30){GotoXY(99,8); cout<<"天印大道";strcpy(end,"天印大道");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==32){GotoXY(99,8); cout<<"龙眠大道";strcpy(end,"龙眠大道");}if(GetCurX()>=2 && GetCurX()<=9 && GetCurY()==34){GotoXY(99,8); cout<<"南医大";strcpy(end,"南医大");}if(GetCurX()>=2 && GetCurX()<=11 && GetCurY()==36){GotoXY(99,8); cout<<"南京交院";strcpy(end,"南京交院");}if(GetCurX()>=2 && GetCurX()<=15 && GetCurY()==38){GotoXY(99,8); cout<<"中国药科大学";strcpy(end,"中国药科大学");}//二号线站点if(GetCurX()>=28 && GetCurX()<=37 && GetCurY()==3){GotoXY(99,8); cout<<"雨润大街";strcpy(end,"雨润大街");}";strcpy(end,"油坊桥");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==4){GotoXY(99,8); cout<<"奥体东";strcpy(end,"奥体东");}if(GetCurX()>=60 && GetCurX()<=69 && GetCurY()==6){GotoXY(99,8); cout<<"兴隆大街";strcpy(end,"兴隆大街");}if(GetCurX()>=60 && GetCurX()<=71 && GetCurY()==8){GotoXY(99,8); cout<<"集庆门大桥";strcpy(end,"集庆门大桥");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==10){GotoXY(99,8); cout<<"云锦路";strcpy(end,"云锦路");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==12){GotoXY(99,8); cout<<"莫愁湖";strcpy(end,"莫愁湖");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==14){GotoXY(99,8); cout<<"汉中门";strcpy(end,"汉中门");}if(GetCurX()>=60 && GetCurX()<=67 && GetCurY()==16){GotoXY(99,8); cout<<"上海路";strcpy(end,"上海路");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==18){GotoXY(99,8); cout<<"大行宫";strcpy(end,"大行宫");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==20){GotoXY(99,8); cout<<"西安门";strcpy(end,"西安门");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==22){GotoXY(99,8); cout<<"明故宫";strcpy(end,"明故宫");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==24){GotoXY(99,8); cout<<"苜蓿园";strcpy(end,"苜蓿园");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==26){GotoXY(99,8); cout<<"下马坊";strcpy(end,"下马坊");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==28){GotoXY(99,8); cout<<"孝陵卫";strcpy(end,"孝陵卫");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==30){GotoXY(99,8); cout<<"钟灵街";strcpy(end,"钟灵街");}if(GetCurX()>=20 && GetCurX()<=25 && GetCurY()==32){GotoXY(99,8); cout<<"马群";strcpy(end,"马群");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==34){GotoXY(99,8); cout<<"金马路";strcpy(end,"金马路");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==36){GotoXY(99,8); cout<<"仙鹤门";strcpy(end,"仙鹤门");}if(GetCurX()>=20 && GetCurX()<=27 && GetCurY()==38){GotoXY(99,8); cout<<"学则路";strcpy(end,"学则路");}if(GetCurX()>=20 && GetCurX()<=29 && GetCurY()==40){GotoXY(99,8); cout<<"仙林中心";strcpy(end,"仙林中心");}if(GetCurX()>=32 && GetCurX()<=41 && GetCurY()==40){GotoXY(99,8); cout<<"羊山公园";strcpy(end,"羊山公园");}if(GetCurX()>=44 && GetCurX()<=55 && GetCurY()==40){GotoXY(99,8); cout<<"南大仙林校。

相关文档
最新文档