公交卡信息管理系统
公交卡管理系统 (2)

公交卡管理系统1.引言公交交通是城市基础事业的重要组成部分,与城市经济、文化发展和广大市民的生活息息相关,随着城市人口的增多,人流量增加,为了减少堵车,保护环境,国家制定相应的政策,人民积极相应,乘车公交车拥挤的现象也随之产生,为了解决这一现象,就需要建立一个良好的公交管理系统,一方面,加快上车速度,减少站点停车时间,增加人们的出行效率;另一方面,帮助公交车公司管理客流量和货币,减少人工开支。
公交卡管理信息系统主要解决一些公交卡的信息管理的问题,设计开发公交卡管理系统,一是实现公交卡一般功能的注册、充值、挂失、激活和注销功能,二是随着经济的逐步发展,完善公交卡功能,相应出现的新功能如电子钱包,异地刷卡,自行车的租借功能,对用户支持用户信息的修改,网上支付充值等功能,操作员密码的修改和一些简单的查询功能。
在课程设计中,系统开发平台为Win7,数据库采用SQL Server 2008,程序运行平台为Win7。
程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在公交管理部门的管理中,解决实际问题。
2.需求分析2.1调查与初步分析在编写需求前,我们根据各个公交公司的公交卡占有率和使用情况和市场上对公交卡管理系统的相应的功能需要情况进行相应的调查和分析,首先是对各大网上公交卡管理系统进行了调查,其中包括:公交卡管理系统的界面设计、公交业务流程、公交卡相应功能以及管理员的操作,这几大块进行了调查。
结合当时的经济环境和市场需求,合并我们的调查和分析,总结出一套并属于自己特色的设计思路。
用户分析:公交卡的使用者主要有以下几种:管理人员:公交卡管理系统的操作者和记录者,公交卡管理系统主要分为:注册管理系统、充值管理系统、注销管理系统、挂失管理系统、激活管理系统、电子钱包管理系统、异地刷卡管理系统、异地刷卡管理系统,而公交卡的记录者主要是管理注册、充值、注销、挂失几个一般活动,而公交卡管理系统的操作者主要是对公交卡管理系统的主要操作者,需要对数据库的操作有一定的要求。
项目二“走进”公交IC卡收费系统

(1)具有功能边界 (2)具有适用范围 (3)存在一定的安全风险 信息系统存在一定的安全风险,如软件、硬件损 坏,数据信息被盗等,须建立安全防范机制,确保 系统能够安全、可靠地运行。
第一单元 主要内容
2、公交IC卡收费系统主要功能及整体结构
(3)交易结算:系统将存储在管理中心服务器中 的刷卡付费记录按照不同交通公司进行分类汇总。 据此,将相应资金通过银行账户划拨给各公交公司。
一、信息系统的功能
2、公交IC卡收费系统
主要功能及整体结构
刷卡付费、售卡充值和交易 结算是公交IC卡收费系统的 三个子系统。三者通过网络 与交通卡管理中心连接在一 起,息系统的基本功能是进行信息处理,具体包括 输入、存储、处理、输出和控制,为用户提供有用、 准确和及时的信息。
输入 通过输入设备采集外部数据
存储
利用存储设备存储数 据
处理
对数据进行加工处理,获得 有用的信息
输出
以各种方式呈现获得 的有用信息
控制
通过程序对整个信息加工、处理、传输、输出等环节进行 控制
用户的余额信息以加密的形式保存在交通卡中,基于非对称加密算法。
一、信息系统的功能
2、公交IC卡收费系统主要功能及整体结构
(2)刷卡付费:刷卡后,付费金额等数据记录在 车载POS机中,同时交通卡内的余额数据相应变化。
付费数据和交通卡内数据需要由公交公司专人用 数据采集器收集,经数据采集中心进行汇总,并上 传至服务器。有些车载POS机可以直接通过网络将数 据上传至服务器,不需要专用的采集器。
高中信息技术 必修二 信息系统与社会
第一单元 走进“全新” 信息社会
项目二 “走进”公交IC卡收费系统
授课教师:
校园一卡通管理系统课件

表现层
负责与用户进行交互,提 供友好的操作界面和用户 体验。
系统实施流程
需求分析 系统设计 系统开发 系统测试 上线运行
对校园内各类用户的实际需求进行详细调查 和分析,明确系统功能需求。
根据需求分析结果,进行系统架构设计、数 据库设计、界面设计等。
依据系统设计,进行程序编写、数据库建立 等工作。
在系统开发完成后,进行全面测试,确保系 统稳定性和安全性。
数据加密传输
采用SSL/TLS等加密协议,确保数据在传输过程中的安全性。
数据存储加密
对存储在数据库中的敏感数据进行加密处理,保证数据的安全性 。
访问控制机制
对系统用户进行角色和权限划分,确保只有授权用户才能访问相 应数据。
用户隐私信息的保护与管理
隐私政策制定
明确告知用户个人信息的收集、使用和保护政策,保障用户知情 权。
系统通过测试后,正式上线运行,并进行持 续的维护和升级。
系统测试与评估
功能测试
对系统的各项功能进行全面测 试,确保功能实现正确、完整
。
性能测试
在不同负载情况下对系统进行 测试,评估系统的性能和稳定 性。
安全测试
对系统的安全性进行全面检测 ,包括数据加密、用户权限等 方面。
评估与反馈
收集用户对系统的使用情况和 反馈意见,对系统进行持续改
其他行业一卡通管理系统应用案例
企业园区一卡通系统
实现了员工食堂、停车场、门禁等多个场景的刷卡支付和身份认证,提高了企业 管理效率和员工便利性。
公共交通一卡通系统
通过一卡通实现了公交、地铁、出租车等多种交通方式的刷卡支付,方便了市民 出行。
校园一卡通管理系统的设计与
05
实施
接触式IC卡公交收费系统解决方案

接触式IC卡公交收费系统解决方案城市公交的系统经过多年的运作,在管理上已日趋完善,但新的课题又呈现在我们的面前。
“零钞不够”,这是实行无人售票以来乘客与公交公司之间最大的矛盾。
“无人售票”对车辆的承运速度和业务管理无疑起了很大的促进作用,但是由于“不设找赎”,对身上没有足够零钞的乘客来讲,肯定是增加了经济负担,这正是推行“无人售票”之后,乘客最大意见之处。
还有假币流行,给企业和政府带来巨大的损失。
“无人售票”需要完善,另外随着经济环境的变化,取消月票,也是势在必行。
非接触式IC卡技术的推出为实现城市公交自动收费提供了现代技术的支持。
为了适应公共交通发展的需要,满足和方便广大市民出行,提高企业效益,提升运营与管理的科技水品,加速城市公共交通事业的现代化建设,提升城市公共形象。
深圳市永豪电子有限公司一直致力于开发非接触式IC卡城市公交自动电子收费一卡通系统,以非接触式IC卡做为存储介质,结合计算机技术、网络技术等信息技术,为用户提供一个良好的信息平台。
(1) 加快乘客上车速度,减少车辆停站时间,加速车辆周转等于减少车辆。
(2)学生采用学生计费后刷卡依然给予优惠,老年人采用老年计费刷卡给予优惠。
用IC卡替代月票及钱币方式,最终取代月票,消除福利月票的种种弊病,对促进管理,加强经济改革,打破大锅饭具有重要的意义,并为最终减少公交企业亏损,减少依赖政府补贴创造前提。
(3) 及时掌握客流情况,科学合理调度而创造效益。
(4) 可以节省无人售票点钞工作人员的费用。
(5) 广告费收入,IC卡面可印广告,抵消IC卡的部分成本。
(6)可以预收票款,增加企业周转资金。
(7)有效制止了假币的流通。
(1) 可以提高公共交通的服务档次,符合建设国际城市的目标。
目前我们所选用的系统,香港、澳门在九五年才小规模使用,西欧、澳大利亚等国也是近年才使用,与国际先进水平同步。
(2) 可以方便市民,减少社会现金流通量。
现在由于市面上缺少零钱,乘车购物很不方便,使用IC卡后,一卡在手,可以乘坐所有公共汽车。
公交系统中的信息管理系统

公交系统中的信息管理系统在当今快节奏的城市生活中,公交系统扮演着至关重要的角色。
它不仅是人们日常出行的主要方式之一,也是城市交通体系的重要组成部分。
而在公交系统的高效运行背后,信息管理系统发挥着不可或缺的作用。
公交信息管理系统涵盖了从车辆调度、线路规划到乘客服务等多个方面。
首先,车辆调度是公交运营的核心环节之一。
通过信息管理系统,公交公司可以实时掌握每辆公交车的位置、行驶速度和载客情况。
这使得调度员能够根据实际需求,灵活调配车辆,确保公交服务的及时性和稳定性。
比如,在高峰时段增加车辆投入,以满足乘客的出行需求;在低峰时段则适当减少车辆,降低运营成本。
线路规划也是信息管理系统的重要功能之一。
系统可以收集和分析大量的交通数据,包括不同区域的人口密度、出行需求以及道路状况等。
基于这些数据,公交公司能够设计出更加合理和优化的线路,提高公交的覆盖范围和服务质量。
例如,对于新建的居民小区或商业区,及时规划新的公交线路,以方便居民出行。
在乘客服务方面,信息管理系统也带来了显著的改善。
现在,很多城市的公交站台都配备了电子站牌,通过与信息管理系统的连接,实时显示公交车的预计到达时间。
乘客可以提前了解车辆的到达情况,合理安排自己的出行时间,减少等待的焦虑。
此外,一些城市还推出了手机应用程序,乘客可以通过手机查询公交线路、车辆实时位置以及换乘信息等,极大地提高了出行的便利性。
公交信息管理系统还在票务管理方面发挥着重要作用。
传统的纸质车票逐渐被电子车票所取代,如公交卡、手机支付等。
这些电子支付方式不仅方便了乘客,也提高了票务管理的效率和准确性。
信息管理系统能够实时记录票务交易数据,为公交公司的财务核算和运营分析提供支持。
同时,信息管理系统有助于提高公交系统的安全性。
系统可以对车辆的运行状态进行实时监控,包括车辆的机械故障、驾驶员的操作行为等。
一旦发现异常情况,能够及时发出警报并采取相应的措施,保障乘客的生命财产安全。
然而,要实现一个高效、可靠的公交信息管理系统并非易事。
智能交通中的智慧公交站台系统研究

智能交通中的智慧公交站台系统研究智能交通是指运用计算机、通信、控制和测量技术等现代科技手段,对交通运输系统进行综合优化和智能化升级。
在智能交通领域,公交站台是一个非常重要的组成部分。
而随着智能技术的不断发展和应用,智慧公交站台系统也愈发成为研究的热点。
本文将对智能交通中的智慧公交站台系统进行探讨。
一、智慧公交站台系统的概述智慧公交站台系统是指通过依托智能交通技术,为乘客提供更加安全、便捷、智能的公交服务。
智慧公交站台系统拥有多种物联网技术,可以实现智能包括公交班次查询、公交路线规划、公交车辆监控、公交到站提醒、公交站台售卖机等功能。
智慧公交站台系统的目的是将公交站台打造成一个“信息互动中心”,打造更加智能、高效的公共交通服务。
二、智慧公交站台系统的功能1. 告知公交车准确到站时间使用智慧公交站台系统后,乘客可以实时地知道公交车的到站时间,并能够提前做好准备,避免等车过程中浪费时间。
2. 公交智能售票机在公交站台上安装智能售票机,作为补充车站售票窗口的服务渠道,乘客可以通过它购买公交车票、充值公交卡等。
3. 全线路智能导航通过智慧公交站台的全线路智能导航,乘客可以实现自己从位于一个站点到相邻的网络站点的全部路线导航、公交信息查询和动态调度。
4. 全线路公交信息一键查询将智慧公交站台系统与公交车路线进行联接,使乘客能够实现全线路公交信息一键查询。
5. 公交车实时监控系统智慧公交站台系统可以通过具备实时监控功能的卡口设备,实时监控公交车辆的行驶路线和信息,确定公交车的行驶轨迹以及准确位置。
三、智慧公交站台系统的应用案例1. 北京地铁智慧公交站台系统北京地铁智慧公交站台系统是北京地铁开发的公交站台信息管理平台,针对不同类型公交车站点设计不同的信息管理器,实现智慧公交站台系统更新公交车线路、停靠点,车辆实时定位、仓位状态查询、到站信息管理员等多项功能。
2. 上海智能公交站台系统上海智能公交站台系统利用科技手段将公交站台升级为一个小型的人工服务中心,在服务窗口间设置LED显示屏和触摸屏,为乘客提供实时公交信息、路线图、公交卡充值、车票售卖等服务。
智慧公交系统app设计方案

智慧公交系统app设计方案智慧公交系统是指通过应用程序(APP)与公交车辆以及相关设施进行智能互联,提供用户定位、线路查询、车辆接送、付款等服务的系统。
该系统旨在提高公交出行的便利性和效率性,为用户提供更好的出行体验。
以下是智慧公交系统APP的设计方案。
1. 用户界面设计:- 简洁直观的首页:包括线路查询、车辆实时位置、附近车站的信息等功能。
- 用户个人中心:包括个人信息管理、历史记录、优惠券等个性化设置和功能。
- 车辆导航页面:显示当前车辆位置、行驶路线、到站时间等信息。
2. 线路查询功能:- 用户可以输入起始地点和目的地,系统将智能匹配合适的线路。
- 显示线路的详细信息,包括发车时间、到站时间、途经站点、估计到达时间等。
- 用户可以设置提醒功能,提醒用户何时下车。
3. 车辆实时位置功能:- 用户可以查看附近公交车辆的实时位置。
- 显示车辆行驶路线、到站时间和车辆拥挤程度等信息。
- 用户可以选择预约座位或车辆接送服务。
4. 付款功能:- 用户可以绑定银行卡或第三方支付账户,实现快捷支付。
- 使用近场支付技术,用户只需在车辆上刷手机或扫码即可完成支付。
- 提供交通卡充值功能,方便用户使用公交卡支付。
5. 智能导航功能:- 根据用户选择的线路,系统提供智能导航功能。
- 实时提醒用户何时下车,并给出步行至目的地的导航路线。
- 提供目的地周边的实时公交信息和推荐路线。
6. 互动社交功能:- 用户可以查看其他乘客的实时评论和评分,选择更优质的车辆和线路。
- 用户可以进行车内服务评价,提供反馈和建议。
- 提供公交车票分享功能,用户可以与好友分享行程。
7. 数据分析功能:- 收集用户出行和评价数据,进行统计和分析。
- 为用户推荐更适合的线路和出行方案。
- 向运营方提供数据报告,用于公交线路优化和服务改进。
8. 安全保障:- 全程加密用户数据,确保用户隐私和安全。
- 提供紧急联系方式,方便用户在紧急情况下寻求帮助。
一卡通是什么卡

一卡通是什么卡所谓“一卡通”,就是在同一张卡上实现多种不同功能的智能管理。
本质上是一套由卡片、器具和上位管理软件所构成的特殊信息管理系统。
其核心内容是利用卡片这种特定的物理媒介,实现从业务数据的生成、采集、传输到汇总分析的信息资源管理的规范化和自动化。
同时企业一卡通作为企业信息化管理的一部分和企业的ERP系统、财务系统以及HR系统有着密不可分的联系。
一卡通系统最根本的需求是“信息共享、集中控制”。
由于“信息共享、集中控制”的基本思想,一卡通被广泛应用于各行各业,比如社区一卡通、校园一卡通,企业一卡通,医保一卡通,银行一卡通,城市一卡通,亲情一卡通,手机一卡通,游戏点卡一卡通等。
根据一卡通的介质来分,分为只读型和读写型。
只读型的一卡通一般是运用卡上的ID号来实现身份认证,并在后台进行数据交互,如磁条卡,条码卡,载有ID号的PVC卡,非接触式IC卡(RFID射频卡)。
读写型的一卡通运用范围比较广泛,卡片即作为身份认证ID,也可以写卡操作,读写型的卡片,即IC卡,分接触式和非接触式的,非接触式的是当今及以后的主流。
非接触式IC卡就是射频(RFIC)卡,卡内有内置芯片,以飞利浦的Mifare卡为例,是有多个读写扇区组成,可以进行加密、存储、读取、改写。
现今的射频卡技术发展到CPU卡阶段,除加密、存储、读取、改写外,并具有运算及动态加密功能。
CPU卡为今后的主流。
而手机SIM/UIM卡与射频技术融合在一起,形成一个新的介质,即手机一卡通。
根据运用的行业性质来划分,可以分为公用一卡通和民用一卡通。
公用一卡通,一般是政府的单位发放,发卡量非常大,后台软件平台比较复杂,稳定性要求高,如消费卡,公交卡,市民卡,社保卡,医疗卡等,广义的说,身份证,也是公用一卡通的一种,只是仅限于公民的身份认证。
民用一卡通,就是五花八门,企业一卡通,居民小区一卡通,校园一卡通,消费一卡通,俱乐部会所一卡通等等,一般应用于门禁、停车场管理、员工考勤就餐管理、会员消费管理、控水控电管理、学生上机管理、学校图书管理等等,各个运用子系统逐年细化,发卡量相对较小,参与厂家众多,呈百花齐放的态势。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计(论文)程序设计实训课程名称公交卡信息管理系统题目信息与控制工程学院院(系)软件1402专业班级姓名学号指导教师年月日目录1. 题目 (2)2. 需求分析 (2)2.1功能分析 (2)3.概要设计 (3)4. 详细设计 (5)4.1、程序流程图 (5)4.2、loading()函数实现用链表读取文件中数据 (6)4.3、display()函数显示所用用户信息 (8)5. 实现与测试 (9)5.1管理员及用户登录界面 (9)5.2管理员操作界面 (9)5.3显示所有用户信息 (9)6.总结 (10)第 1 页第 2 页1.题目公交卡模拟系统2.需求分析2.1功能分析系统需要满足管理员和持卡用户两类使用者,管理员能实现对数据的添加、删除、查找、修改、显示全部用户五项功能。
持卡用户可以实现对数据的添加、查找功能。
添加用户删除用户 查找用户修改用户信息显示全部用户e管理员公交卡模拟系统用 户3.概要设计3.1类的设计1)管理员类及持卡者类管理者类:可实现对数据的添加、删除、查找、修改、显示操作class administratorpublic:administrator();void menu();void add();void Delete();void search();void modify();void display();持卡者类(用户类):实现数据的添加和查找操作。
class userpublic:user();void menu();void add();void search();2)公交卡分为三类一般卡、老年卡和学生卡一般卡:包含可执行多个操作的成员函数及卡号和余额两个数据成员class adult_cardpublic:virtual void add();virtual int Delete(char *p);virtual int search(char *p);virtual int modify(char *p);第 3 页virtual void display();adult_card *loading()double balance;char card_number[10];adult_card *next;老年卡:使用public继承adult_card类并新增姓名、优待证证件号class seniors_card:public adult_cardpublic:virtual void add();virtual int Delete(char *p);virtual int search(char *p);virtual int modify(char *p);virtual void display();seniors_card *loading()char name[20];char discount_number[10];seniors_card *next;学生卡:使用public继承adult_card类并新增姓名、学生证证件号class student_card:public adult_cardpublic:virtual void add();virtual int Delete(char *p);virtual int search(char *p);virtual int modify(char *p);virtual void display();student_card *loading()char name[20];char student_number[10];student_card *next;第 4 页4.详细设计4.1、程序流程图第 5 页Y N开始输入账户、密码登录类型选择管理员(admin)用户(user)定义int变量账号:numberInt变量密码:passward账号密码是否正确功能选择新增用户查找用户删除用户修改用户显示全部用户查找用户结束第 6 页第 7 页4.2、loading()函数实现用链表读取文件中数据adult_card *loading() //loading()函数从文件中载入数据到链表 { adult_card *head, *p1;head = p1 = new adult_cardwhile (!in.eof()) //使用eof()函数判断是否到文件末尾 { in >> p1->card_number >> p1->balance;if (p1->card_number[0] == '\0')break ;p1->next = new adult_card ; p1 = p1->next;}NY新建两个adult_card 类的指针head 、p1将从文件中读取到的值赋给p1->card_number 和p1->balance ;新建adult_card 赋给p1->next开 始创建adult_card 类的指针*head 、*p1打开adult.txt 文件 文件中数据传给P1->number 和p1->balance是否到达文件末尾结 束 返回值headp1=p1->nextp1->next=new adult_card第 8 页4.3、display()函数显示所用用户信息void adult_card ::display() { adult_card *p1=loading(); //调用loading()函数义链表形式从文件中读取数据 while (p1->next != NULL ) { cout << "卡号:" << p1->card_number<<"\t"<< "余额:" << p1->balance; cout << endl << endl; p1 = p1->next;}Y NWhile 语句与链表实现数据的遍历,并输出所有用户信开 始新建adult_card 类的指针*p调用loading()函数(返回值为adult_card 类的指针)将返回值赋给pp1->number 和p1->balance 输出到显示器判断是否到达链表末尾结 束 p1=p1->next5.实现与测试5.1管理员及用户登录界面5.2管理员操作界面5.3显示所有用户信息第9 页第 10 页6.总结参考资料和程序示例,通过链表的使用和文件的输入输出我感受到了自己亲自动手编程序、调程序的重要性,我们要熟悉C++的语法、体会调试的思想,最好的一个手段就是自己动手编程、调试,这会比我们一味的看书效果好得多。
另外,对于学C++的我们来说,对类相关知识的掌握也尤为重要。
在这次课程设计中,通过各个函数实现及文件读取方式,更进一步加深了我们对基础知识的认识。
通过这一次课程设计,我们最大的收获就是分析问题解决问题能力的有了大幅提高。
但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。
在今后学习中,必须精通至少一门编程语言,并且日后的课程也要认真学习,不断的用知识武装自己的头脑,为以后的学习打一个坚定的基础。
FileTest 类-headhousinginfo:HousingInfo -temphousinginfo1:HousingInfo+ReadFile():void+AppendtoFile(HousingInfo housinginfo):void+OverrideFile(HousingInfo housinginfo):void图3.2文件操作FileTest 类公交卡信息管理系统源码//注意:程序涉及到文件读写,必须提前在相应工程目录新建adult.txt;seniors.txt;student.txt三个txt文件# include<iostream># include<fstream># include<string>using namespace std;class adult_card{public:virtual void add();virtual int Delete(char *p);virtual int search(char *p);virtual int modify(char *p);virtual void display();adult_card *loading() //loading()函数从文件中载入数据到链表{adult_card *head, *p1;head = p1 = new adult_card;ifstream in;in.open("adult.txt", ios::in); //打开目标文件if (!in){cerr << "open error!" << endl;abort();}while (!in.eof()) //利用循环实现链表对数据的连续载入{in >> p1->card_number >> p1->balance;if (p1->card_number[0] == '\0')break;p1->next = new adult_card;p1 = p1->next;}第11 页in.close(); //关闭目标文件return head; //返回值为类的指针};double balance;char card_number[10];adult_card *next;};void adult_card::add(){balance = 0;system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << "请输入新添加的卡号:";cin >> card_number;fstream out("adult.txt", ios::app);out << card_number<<"\t"<<balance<<'\n';out.close();cout << "余额:0.00" << endl;};int adult_card::Delete(char *p){adult_card *head, *p1, *p2;head = p1 = p2 =loading();while (p1->next != NULL){if (strcmp(p1->card_number, p) == 0){char ch;cout << "!确认删除?";cin >> ch;if (ch == 'y' || ch == 'Y'){p2->next = p1->next;}第12 页p1 = head;remove("adult.txt");ofstream out;out.open("adult.txt");if (!out){cerr << "open error!" << endl;abort();}while (p1->next != NULL){out << p1->card_number << "\t" << p1->balance << '\n';p1 = p1->next;}out.close();return 1;}p2 = p1;p1 = p1->next;}return 0;};int adult_card::search(char *p){adult_card *p1 = loading();while (p1->next!=NULL){if (strcmp(p1->card_number, p)==0){cout << "卡号:" << p1->card_number << "\t" << "余额:" << p1->balance;cout << endl << endl; return 1;}p1 = p1->next;第13 页}return 0;};int adult_card::modify(char *p){adult_card *head, *p1;head = p1 = loading();while (p1->next != NULL){if (strcmp(p1->card_number, p) == 0){cout << "请输入修改后的余额:";cin >> p1->balance;p1 = head;remove("adult.txt");ofstream out;out.open("adult.txt");if (!out){cerr << "open error!" << endl;abort();}while (p1->next != NULL){out << p1->card_number << "\t" << p1->balance << '\n';p1 = p1->next;}out.close();return 1;}p1 = p1->next;}return 0;};第14 页void adult_card::display(){adult_card *p1=loading();while (p1->next != NULL){cout << "卡号:" << p1->card_number<<"\t"<< "余额:" << p1->balance;cout << endl << endl;p1 = p1->next;}};class seniors_card:public adult_card{public:virtual void add();virtual int Delete(char *p);virtual int search(char *p);virtual int modify(char *p);virtual void display();seniors_card *loading(){seniors_card *head, *p1;head = p1 = new seniors_card;ifstream in;in.open("seniors.txt", ios::in);if (!in){cerr << "open error!" << endl;abort();}while (!in.eof()){in >> p1->card_number >> p1->name >> p1->discount_number >> p1->balance;if (p1->card_number[0] == '\0')break;第15 页p1->next = new seniors_card;p1 = p1->next;}in.close();return head;};char name[20];char discount_number[10];seniors_card *next;};void seniors_card::add(){balance = 0;system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << "请输入新添加的卡号:";cin >> card_number;cout << "请输入持卡人姓名:";cin >> name;cout << "请输入持卡人老年优待证号码:";cin >> discount_number;fstream out("seniors.txt", ios::app);out << card_number << "\t"<< name << "\t"<< discount_number << "\t"<< balance << '\n';out.close();cout << "余额:0.00" << endl;};int seniors_card::Delete(char *p){seniors_card *head, *p1, *p2;head = p1 = p2 = loading();while (p1->next != NULL){if (strcmp(p1->card_number, p) == 0){第16 页char ch;cout << "!确认删除?";cin >> ch;if (ch == 'y' || ch == 'Y'){p2->next = p1->next;}p1 = head;remove("adult.txt");ofstream out;out.open("adult.txt");if (!out){cerr << "open error!" << endl;abort();}while (p1->next != NULL){out << p1->card_number << "\t" << p1->name << "\t" << p1->discount_number << "\t" << p1->balance << '\n';p1 = p1->next;}out.close();return 1;}p2 = p1;p1 = p1->next;}return 0;};int seniors_card::search(char *p){seniors_card *p1=loading();while (p1->next != NULL)第17 页{if (strcmp(p1->card_number, p) == 0){cout << "卡号:" << p1->card_number << "\t";cout << "姓名:" << p1->name << "\t";cout << "老年优待证号码:" << p1->discount_number << "\t";cout << "余额:" << p1->balance << "\t";cout << endl << endl;return 1;}p1 = p1->next;}return 0;};int seniors_card::modify(char *p){seniors_card *head, *p1;head = p1 = loading();while (p1->next != NULL){if (strcmp(p1->card_number, p) == 0){cout << "请输入修改后的姓名";cin >> p1->name;cout << "请输入修改后的优待卡号";cin >> p1->discount_number;cout << "请输入修改后的余额:";cin >> p1->balance;p1 = head;remove("seniors.txt ");ofstream out;out.open("seniors.txt");if (!out){第18 页cerr << "open error!" << endl;abort();}while (p1->next != NULL){out << p1->card_number << "\t" << p1->name << "\t" << p1->discount_number << "\t" << p1->balance << '\n';p1 = p1->next;}out.close();return 1;}p1 = p1->next;}return 0;};//董老师说:“13级的都说我很慈祥”哈哈哈//朱老师很严厉哈哈哈;void seniors_card::display(){seniors_card *p1 = loading();while (p1->next != NULL){cout << "卡号:" << p1->card_number << "\t";cout << "姓名:" << p1->name << "\t";cout << "老年优待证号码:" << p1->discount_number << "\t";cout << "余额:" << p1->balance << "\t";cout << endl << endl;p1 = p1->next;}};class student_card:public adult_card{第19 页public:virtual void add();virtual int Delete(char *p);virtual int search(char *p);virtual int modify(char *p);virtual void display();student_card *loading(){student_card *head, *p1;head = p1 = new student_card;ifstream in;in.open("student.txt", ios::in);if (!in){cerr << "open error!" << endl;abort();}while (!in.eof()){in >> p1->card_number >> p1->name >> p1->student_number >> p1->balance;if (p1->card_number[0] == '\0')break;p1->next = new student_card;p1 = p1->next;}in.close();return head;};char name[20];char student_number[10];student_card *next;};void student_card::add(){balance = 0;第20 页system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << "请输入新添加的卡号:";cin >> card_number;cout << "请输入持卡人姓名:";cin >> name;cout << "请输入持卡人学生证证号码:";cin >> student_number;fstream out("student.txt", ios::app);out << card_number << "\t" << name << "\t" << student_number << "\t" << balance << '\n';out.close();cout << "余额:0.00" << endl;};int student_card::Delete(char *p){student_card *head, *p1, *p2;head = p1 = p2 = loading();while (p1->next != NULL){if (strcmp(p1->card_number, p) == 0){char ch;cout << "!确认删除?";cin >> ch;if (ch == 'y' || ch == 'Y'){p2->next = p1->next;}p1 = head;remove("adult.txt");ofstream out;out.open("adult.txt");if (!out){第21 页cerr << "open error!" << endl;abort();}while (p1->next != NULL){out << p1->card_number << "\t" << p1->name << "\t" << p1->student_number << "\t" << p1->balance << '\n';p1 = p1->next;}out.close();return 1;}p2 = p1;p1 = p1->next;}return 0;};int student_card::search(char *p){student_card *p1 = loading();while (p1->next != NULL){if (strcmp(p1->card_number, p) == 0){cout << "卡号:" << p1->card_number << "\t";cout << "姓名:" << p1->name << "\t";cout << "学生证号码:" << p1->student_number << "\t";cout << "余额:" << p1->balance << "\t";cout << endl << endl;return 1;}p1 = p1->next;}return 0;第22 页};int student_card::modify(char *p){student_card *head, *p1;head = p1 = loading();while (p1->next != NULL){if (strcmp(p1->card_number, p) == 0){cout << "请输入修改后的姓名:";cin >> p1->name;cout << "请输入修改后的学生证号:";cin >> p1->student_number;cout << "请输入修改后的余额:";cin >> p1->balance;p1 = head;remove("student.txt");ofstream out;out.open("student.txt");if (!out){cerr << "open error!" << endl;abort();}while (p1->next != NULL){out << p1->card_number << "\t" << p1->name << "\t" << p1->student_number << "\t" << p1->balance << '\n';p1 = p1->next;}out.close();return 1;}p1 = p1->next;第23 页}return 0;};void student_card::display(){student_card *p1=loading();while (p1->next != NULL){cout << "卡号:" << p1->card_number<<"\t";cout << "姓名:" << p1->name << "\t";cout << "学生证号码:" << p1->student_number << "\t";cout << "余额:" << p1->balance << "\t";cout << endl << endl;p1 = p1->next;}};void password(){int administrator_number, administrator_password;system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << " 请输入管理员账号:";cin >> administrator_number;while (administrator_number != 123){system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************" << endl;cout << "*** !账号不存在 ***"<< endl;cout << "*** 请重新输入管理员账号: ***"<< endl;cin >> administrator_number;第24 页}cout << " 请输入管理员密码:";cin >> administrator_password;while (administrator_password != 123){cout << "*** !管理员密码错误 ***"<< endl;cout << "*** 请重新输入管理员密码: ***"<< endl;cin >> administrator_password;}};class administrator{public:administrator();void menu();void add();void Delete();void search();void modify();void display();};administrator::administrator(){password();menu();};void administrator::menu(){char m;system("cls");第25 页cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << "*** 请选择您需要的操作: ***"<< endl;cout << "*** 1.添加用户信息 ***"<< endl;cout << "*** 2.删除用户信息 ***"<< endl;cout << "*** 3.查找用户信息 ***"<< endl;cout << "*** 4.修改用户信息 ***"<< endl;cout << "*** 5.显示全部用户 ***"<< endl;cout << "*** 6.退出 ***"<< endl;cout << "请选择:";cin >> m;while (m != '1'&&m != '2'&&m != '3'&&m != '4'&&m != '5'&&m != '6'&&m != '7'){cout << "输入错误:";cout << "请重新选择:";cin >> m;}switch (m){case'1':add(); break;case'2':Delete(); break;case'3':search(); break;case'4':modify(); break;case'5':display(); break;case'6':exit(0); break;}};void administrator::add(){int o;system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << "*** 请选择需要添加的用户类型: ***"<< endl;cout << "*** 1.普通用户 ***"<< endl;第26 页cout << "*** 2.老年卡用户 ***"<< endl;cout << "*** 3.学生卡用户 ***"<< endl;cout << "请选择:";cin >> o;if (o == 1){adult_card Adult;Adult.add();}else if (o == 2){seniors_card Seniors;Seniors.add();}else if (o == 3){student_card Student;Student.add();}cout << "添加成功" << endl;system("PAUSE");menu();};void administrator::Delete(){char card_number[10];system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << " 请输入您要删除的公交卡卡号:";cin >> card_number;adult_card Adult;seniors_card Seniors;student_card Student;if (Adult.Delete(card_number) == 0 && Seniors.Delete(card_number) == 0 &&第27 页Student.Delete(card_number) == 0)cout << "!无法查到该卡信息" << endl;system("PAUSE");menu();};void administrator::search(){char card_number[10];system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << " 请输入您要查询的公交卡卡号:";cin >> card_number;adult_card Adult;seniors_card Seniors;student_card Student;if (Adult.search(card_number) == 0 && Seniors.search(card_number) == 0 &&Student.search(card_number) == 0){cout << "!无法查到该卡信息" << endl;}system("PAUSE");menu();};void administrator::modify(){char card_number[10];system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << " 请输入您要修改的公交卡卡号:";cin >> card_number;adult_card Adult;seniors_card Seniors;student_card Student;第28 页if (Adult.modify(card_number) == 0 && Seniors.modify(card_number) == 0 &&Student.modify(card_number) == 0)cout << "!无法查到该卡信息" << endl;system("PAUSE");menu();};void administrator::display(){system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << "*** 所有用户信息: ***"<< endl;adult_card Adult;seniors_card Seniors;student_card Student;Adult.display();Seniors.display();Student.display();cout << "输出完毕!";system("PAUSE");menu();};class user{public:user();void menu();void add();void search();};user::user(){menu();第29 页};void user::menu(){char m;system("cls");cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << "*** 请选择您需要的操作: ***"<< endl;cout << "*** 1.添加用户信息 ***"<< endl;cout << "*** 2.查找用户信息 ***"<< endl;cout << "*** 3.退出 ***" << endl;do{cout << "请选择:";cin >> m;} while (m != '1' && m != '2'&&m!='3');switch (m){case'1':add(); break;case'2':search(); break;case'3':exit(0); break;}};void user::add(){int o;cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << "*** 请选择需要添加的用户类型: ***"<< endl;cout << "*** 1.普通用户 ***"<< endl;cout << "*** 2.老年卡用户 ***"<< endl;cout << "*** 3.学生卡用户 ***"<< endl;cout << "请选择:";cin >> o;if (o == 1)第30 页{adult_card Adult;Adult.add();}else if (o == 2){seniors_card Seniors;Seniors.add();}else if (o == 3){student_card Student;Student.add();}cout << "添加成功" << endl;};void user::search(){char card_number[10];cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << " 请输入您要查询的公交卡卡号:";cin >> card_number;adult_card Adult;seniors_card Seniors;student_card Student;if (Adult.search(card_number) == 0 && Seniors.search(card_number) == 0 &&Student.search(card_number) == 0){cout << "!无法查到该卡信息" << endl;}};void main()第31 页{char n;cout << "" << endl;cout << "" << endl;cout << "*******************欢迎使用西安公交卡信息管理系统*******************"<< endl;cout << "*** (管理员登陆请选择 1 / 非管理员请选择 2) ***"<< endl;cout << "*** 1.管理员登陆 ***"<< endl;cout << "*** 2.非管理员登陆 ***"<< endl;do{cout << "请选择:";cin >> n;}while (n!='1'&&n!='2');if (n=='1')administrator A;elseuser B;system("PAUSE");}第32 页学长只能帮你到这了,其他的自己解决吧!第33 页。