搜索
您的当前位置:首页正文

羊城通卡销售充值系统的设计与开发

来源:爱go旅游网
摘要摘要随着广州市城市公共交通电子收费系统(俗称“公交‘一卡通’系统”)的建成投产,现已覆盖广州市所有公共汽车、电车、出租小汽车等公共交通系统,并将进一步扩展到其他小额消费应用。该系统通过使用先进的感应式Ic卡技术(“羊城通”卡)提供方便、快捷的付费乘车服务和帐务结算服务。本文主要对广州邮政代理羊城通卡销售、充值系统的开发进行了研究。首先介绍了现时广州各商业银行运行的羊城通充值系统现状、本课题的来源、系统可行性分析及研究开发这个项目的意义,然后对整个销售、充值系统进行需求分析何设计,重点介绍了羊城通卡发卡和充值的设计,最后具体介绍终端营业窗口和后台管理系统的功能实现和代码实现。该系统采用客户,服务器的体系结构,选用Informix7.2Esql/C为开发后台数据库,以UnixC和c++BuiIder作为前台开发工具开发而成。具有界面友好,使用灵活,数据安全,可靠性高等特点。系统的运行,将为广大市民的日常生活带来更多的便利,提高城市居民生活水平。关键字;羊城通卡;羊城通卡销售、充值系统;客户/服务器』查三当盔兰堡圭兰堡丝兰AbstractWiththepubliCtransportationelectroniCSofCitychargeSsystemhasbeensetupandputintoproductioninGuangZhou,ithascovereda11public—bus、electriCcar、taxandSoonDublictransportationsystem,andwillexpendtomoreapplicationinsmallsumconsumeS.InUSingadvancedrespondtypeICcardtechnique(YangChengTong—card),thesystemwilloffermoreconvenience,fastpaytOgo—by—carserviceandaccountSbalanceofaccotintSServiCe.InthiSpaper,westudiedthedevelopmentofYangChengTong—cardsaleandchargesystem,whichGuangzhotipostactasanagent.First,itgiveasimpleintroductionofthesittiationofsaleandchargesysteminothercommercialbanktheoriginoftheproblemandsystemfeasibilityandthemeaningresearchingthesystem.Then,itdiSCUSSthereqtlirementSanddesignofwholesystem.Finally,theconereteexamplesaccomplishedcodesofterminalbusinesswindowandbackstagesystem.ThesystemiShasedonstructureofc/sand7.2EsqI/C,itiSdevelopedbyUnixandC++Builder.Itmanyfeaturesuchasfriendlyinterface,convenientoperating,SecuritYandhighdependabilitYete.Withtheapplicationofsystem,itwillbringmoreconvenienceforthelargeCitizenheightentheIevelofeityresident’S1ife.yangChengTong—Card:YangChengTong—CardsaleandSyStem;Client/serrer.ⅡYangChengTong—cardandofanalysiandmanagementInformixhasdatatheandKEYWORDS:charge第一章绪论第一章1.1引言绪论据了解,羊城通系统开通运行已将近4年,票卡发行量已突破350万张,日刷卡量也超过了150多万人次,使用范围遍及公交、轮渡、地铁、停车场、出租车、路边泊车、电信、医院、超市、自动售货机等领域,应用区域也延伸到增城、花都、南海等地。随着系统的发展,羊城通公司也积极加紧羊城通充值网点的建设,截至2003年12月,累计开通人工充值点571个,自助充值点683个,尤其是从03年下半年开始,羊城通的人工充值服务有计划地吸收了各类小银行、便利店、士多等加盟服务网络后,市民得到了更为便捷的充值服务……1.2课题来源本课题来源于广州市邮政局中间业务系统。羊城通卡销售、充值系统是在广卅『市邮政局领导下由广州市邮政储汇局研究开发的,旨在利用全区广大的邮政网络资源开展羊城通卡的销售、充值业务,拓广中间业务面,增强与其他商业银行的竞争力,同时加强广州邮政“服务为民形象工程”的建设。1.3课题研究现状及意义广州市交通电子收费营运有限公司负责设计建设和运营管理的广州市城市公共交通电子收费系统(俗称“公交‘一卡通’系统”)于2001年12月中旬建成投产。现已覆盖广州市所有公共汽车、电车、客轮、地铁、出租小汽车、路边停车等公共交通系统,并将进一步扩展到其他小额消费应用。该系统通过使用先进的感应式Ic卡技术(“羊城通”卡)提供方便、快捷的付费乘车服务和应用大型应用软件系统完成交易数据的清算、分账及提供数据处理的分析服务。目前,羊城通在银行的网点占了全部人工充值服务网点总数的75%,作为发行充值的主要渠道,这些网点为广大羊城通用户提供了大量的服务,为羊城通的发展壮大作出了不可磨灭的贡献。部分银行网广东工业大学硕士学位论文点为了减轻柜台服务的压力,在未得到其主管上级允许的情况下,擅自缩减了人工充值服务,导致部分不懂得操作自助充值机或持有羊城通异形卡的市民非常不便。为此,羊城通公司先后与工商银行、中国银行和交通银行的高层领导进行了积极而坦诚的沟通,就银行网点的人工充值服务问题达成了共识,银行高层领导承诺各网点在其营业时间内将继续向市民提供羊城通发行和人工充值服务,并欢迎广大市民监督各银行网点的服务质量。广州市邮政局一直积极与广州市交通电子收费营运有限公司联系,提出发挥邮政的网点优势,为公众提供高效、优质、便利的羊城通交通卡综合客户服务的邮政代理“羊城通”项目,并已与广州市交通电子收费营运有限公司达成业务合作协议。广州市邮政局利用现有的遍布市区角落的邮政营业网点资源,实现羊城通卡的客户服务系统功能,为公众提供高效、优质、便利的羊城通卡综合客户服务,向企业及普通用户提供羊城通卡的发行、充值、业务咨询、余额查询、消费等服务。从而实现多方共赢的经营效果。全市羊城通卡充值、销售系统的投入使用,将丰富了金融机构业务品种,提供了高性能、拓展性广的计算机综合服务系统,为市民提供更加方便、快捷、优质的服务。相信,广州邮政能利用其庞大的网络优势,应用羊城通销售充值系统推动储蓄中间业务的快速发展,为邮政新业务的拓展、推广起到很好的作用。1.4设计构想我们针对羊城通卡的使用特点,参考羊城通公司自身的充值系统,并结合广卅『邮政自身网络平台的具体情况着手进行系统方案的设计工作。基于邮政综合网开发的本系统,硬件方面的投入主要包括后台管理服务器、流动服务用笔记本电脑、带I—SAM卡座的感应式Ic卡读写限公司的技术规范将有关安全的读写操作封装在硬件里,需要在该公2器等。带I—SAM卡座的感应式Ic卡读写器不仅在硬件上具备两个(接触式、感应式)IC卡读写器,而且需要根据广州交通电子收费营运有第一章绪论司指定的厂家定制。由于该系统实际类似金融应用系统,对于系统的安全性与稳定性要求非常高,因此推荐后台管理系统使用SCOUNIX作为操作系统,Informix作为数据库平台,用C/ESQLC作为开发工具。为了保证系统的可靠性和安全性,本系统的设计采用传统的C1ient/Server体系结构,发卡、充值交易采用三次握手的本地联机记帐,可实现数据的集中处理,方便数据的统计和分析,防止因为充值机器损坏造成所有数据丢失。1.5本人设计部分本人有幸参与了次系统的设计开发,并负责了终端窗口管理子系统中的登陆模块、发卡充值模块、系统管理模块及后台管理子系统中的查询统计模块、业务报表模块的开发。1.6系统简介1.6.1系统结构从充分利用现有资源、尽量节省投资的角度出发,该系统构架在广州邮政金融网和综合网上,利用综合网现有的网络、Pc、打印机等硬件环境,只需在邮储中心机房增加专门的业务处理服务器、在营业终端增加Ic卡读写器等硬件设备。为了增加安全性,系统结构的设计采用client/Server的体系结构,主要包括终端应用系统、中心业务处理系统、通信系统、后台管理系统、认证中心。该系统可实现发卡、充值的联机记帐,数据的集中存放。1.6.2系统特色羊城通交通卡使用先进的感应式Ic卡技术,本身是具有认证功能的电子钱包,它不同于银行的存折或借记卡需要联机操作,消费时完全是可以脱机的。羊城通充值系统对羊城通卡充值或发新卡时,也不需要实时联机到羊城通公司。只需要每天晚上将交易的数据打包发给羊城通公司即可,这些交易数据作为充值代理方与羊城通公司的结算依据。由于羊城通卡本身不记名,一但交易数据丢失将很难追查这些数据。这就要求系统在设计的时候具有很高的可靠性和安全性。广东工业大学硕士学位论文1.7相关术语解释・IC卡:又称“集成电路卡”、“智能卡”,英文名称“IntegratedCireuitCard”或“SmartCard”,将具有存储、加密及数据处理能力的集成电路芯片模块封装于和信用卡尺寸一样大小的塑料片基中,便构成了IC卡。・Ic卡读写器:可以对Ic卡中电子钱包进行充值的终端设备。・非接触IC卡:使用时通过卡内的天线将卡内集成电路与外部接口设备进行互换的IC卡。・SAM卡:即安全认证卡,用于公共交通POS机在对卡进行交易时对密码进行加密和解密处理,以保证系统密钥的安全。・电子钱包:一种为方便持卡入进行小额消费而设计的IC卡,它支持圈存、消费等交易,除圈存交易外,购物交易需提交个人密码,其他任何交易均无需提交个人密码。・ISAM卡:充值SAM卡,内置于充值机。・IC卡初始化:在卡发行前,由卡的发行机构对Ic卡进行格式化,并在卡中写入卡的发行信息的过程。・个人识别号:是一个用于鉴别电子支付系统中各种Ic卡持有者身份的秘密代码。・交易流水:电子收费终端系统记录Ic卡消费的交易明细、充值点充值系统记录充值金额、卡号等交易明细。・密钥:对数据进行加密或解密时使用的参数,在保密条件下难以预测。・脱机记帐:卡发行或充值时相关信息只记录在充值机上,没有实时上传服务器。・联机记帐:卡发行或充值时相关信息实时上传中心服务器。4第二章需求分析第二章需求分析2.1需求分析综述需求收集和分析是数据库设计的第一阶段,需求(Requirement)是指用户要求软件系统必须满足的所有功能和限制。该阶段收集和分析用户对系统的要求,确定系统的工作范围,需求分析是系统开发的一个重要步骤,是整个系统开发的基础。如果需求定义错误(例如需求不完全、不合乎逻辑、不贴切或使人易于发生误解),那么不论以后的工作质量如何,都必然导致系统开发的失败。大量实践证明,信息系统产生的许多错误都是由于需求定义不准确或错误导致,而且,如果在需求定义阶段发生错误,则修改这些错误的代价是非常高的。因此,信息系统开发中需求定义是系统成功的关键一步,必须引起足够的重视。在需求分析中,首先要分清人、财、物、信息内部和它们互相之间的关系和作用,这就需要组织理论、决策理论、管理学、行为学、法律和道德等多方面的知识,否则很容易产生失误。因此,需求分析只依靠软件人员(其它人员最多充当顾问的角色),显然是一种失策。为了保证需求分析的完备性,最有效的方式是“昕、问、论、手、讲、定”,就是先让用户讲述,问清其中的疑问,再与用户进行深入的讨论,如果条件许可,还应亲手在现行的系统上进行足够的实践,最后再确定(即写出需求分析说明书),如果对其中的内容有不同看法,这个过程就得反复进行,有时反复多次”””“。调查的重点是“数据”和“处理”。通过调查要从中获得每个用户对数据库的如下要求:(1)信息要求:用户从数据库中获得的信息的内容、性质。(2)处理要求:用户要完成什么处理功能:对某种处理要求的响应时间。(3)安全性和完整性的要求。具体的做法是:广东工业大学硕士学位论文(i)了解组织机构情况。调查这个组织由哪些部门组成的,各部门的职责是什么,为分析信息系统做准备。(2)了解各部门的业务活动情况。调查各部门输入恶化使用什么数据,如何加工处理这些数据,输出什么信息,输出到什么部门,输出结果的格式如何。(3)确定新系统的边界。确定哪些功能由计算机完成,哪些活动由人工完成。由计算机完成的功能就是新系统应该实现的功能。(4)分析系统数据。按照用户的真正要求,弄清所涉及数据的性质、流向和所需的处理。分析要细腻、周全,以至深入到每一个数据项。在这一步结束时,要产生各个应用的“数据流图”和“数据字典”,前者表明数据的流向与数据接受加工的过程;后者时进行详细的数据收集和数据分析所获得的主要成果。数据字典是在需求分析阶段建立的,并在数据库过程中不断修改、充实、完善的。它能把数据和处理有机地结合起来,可以使概念结构涉及变得相对容易。2.2系统业务流程分析系统业务流程包括了:数据采集、数据交换、数据管理。2.2.1数据采集代办营业点通过专门的读写设备处理羊城通交通卡的发行、充值、咨询、余额查询等客户服务信息,实现交易数据的采集和处理交易结果。该部分功能由网点控制软件实现。数据采集流程图如图2.I所示:6第二章需求分析图2.1数据采集流程图2.2.2数据交换采集到的交易信息上送到中心服务器后,按照处理主体的不同,服务器进行相应的处理或提交金融网主机和系统运营商处理,并将处理结果返回给代办营业点,从而达到数据交换的目的。该部分功能由中心控制软件实现。流程图如图2.2所示:后台服务进程处理结果交易数据认证结果认证数据后台接收数据进后台服务通信进认证数据处理结果}l交易数据谈证结果营业前台生成数据包或显示处理2,2数据交换流程图认证服务进7广东工业大学硕士学位论文2.2.3数据管理对于各种交易信息、处理结果在中心服务器统一进行管理,并完成数据清分工作,从而确保与系统运营商结算的准确。该部分功能由中心控制软件实现。业务处理流程图2.3如下:数据采集图2.3业务处理流程图2.3系统数据流程分析中心服务器由通信守护进程和业务处理进程组成,通信守护进程负责与终端和服务商的通信,业务处理进程处理各项业务数据。数据流程图如图2.4所示:第二章需求分析操作员请求数据Il回显应答信息I1和打印凭证—甄疆鬲——。。———荫青求数据,/—、...............E相关哆/::二营业终端l/台法性————r——J不台法信,息、{金查——r—r藉再磊虿l橙量数据文件不通过应答信息检查的信息嫩黜务匿(麓r磊~机图2.4数据处理流程图数据处理的基本流程1)营业终端接收操作员输入的请求信息2)终端对输入数据进行合法性检查3)终端向业务主机发送请求数据4)业务主机接收终端的上送数据5)业务主机对交易做合法性检查(对端口交易限制的检查)及对上送的数据进行必要检查(每笔交易要检查的内容不同)6)业务主机对终端的请求数据迸行业务上的和技术上的处理7)业务主机把处理结果的送回营业终端8)营业终端接收主机应答数据9)营业终端把接收到的应答数据进行处理,营业终端回显应答信息和打印凭证。2.4通讯接口本系统的通讯系统的接口采用与邮政金融网一样的编写方法,即采用基于工业标准TCP/IP协议的SOCKET插口,既方便系统间的融合,也便于系统以后的扩展以适应不断增加的新业务应用环境。9广东工业大学硕士学位论文2.5系统功能需求经过对业务流程的分析,系统应包括营业窗口管理、中心业务处理管理、数据通信管理、后台管理及认证中心共五大部分功能。其中认证中心管理由羊城通营运公司负责提供。2.5.1营业窗口管理在前台营业窗口管理中,应包括登陆管理、羊城通卡发卡充值管理、业务管理、查询统计、系统维护等功能。・登陆管理应实现用户登陆、退出系统功能,用户输入操作员工号和密码后,发送主机验证,验证成功后方可登陆系统。每个营业网点在登陆营业窗口系统后,首先读取I—SAM卡有关信息并上传到认证中心,认证中心按照协议对照检查,判断该终端是否合法,只有通过认证合法的网点终端才能启动ISAM卡,使ISAM卡有能力导出票卡密钥,进行“羊城通”相关业务处理。・发卡充值管理通过读卡器将所要发售的卡的相关信息发送至主机,等待主机发送确认标志,收取用户现金后便可进行发卡交易。发卡时需计取押金、票款并打印凭单一式三联,凭单上的信息必须能够保证在数据库数据丢失的情况下可以从中恢复。充值交易时,通过读卡器将卡信息发送主机验证交通卡的合法性,判断充值前的余额加上充值金额是否会超过规定的限额,收到主机返回确认应答后,收取用户现金便可进行充值交易并打印发票、收据。此外,还应能在发卡充值管理中实现查询票卡余额功能。・业务管理应能实现票卡领用和发票单证领用功能。营业员输入营业局所号、票卡号、发票单证号等信息,发送主机后,应能查询到该营业网点的票卡结余,发票单证的使用情况等。・查询统计管理应可根据营业网点号,交易日期等信息,实现查询该网点的交易第二章需求分析流水、交易明细及网点业务量统计等功能。・系统管理应包括对营业网点资料维护和人员资料维护功能。此外,营业窗口管理中还应有系统维护管理,包括终端参数设置、版本升级、帮助等功能。2.5.2后台管理在后台管理中,应包括登陆管理、查询统计、业务报表、业务管理、日始日终处理和系统维护等功能。・登陆管理根据普通操作员号、密码和业务管理员工号、密码的不同,进入后台管理系统后所能执行的权限也有所不同。普通操作员只能进行查询统计等操作,业务管理员则除查询操作等权限外,还有票卡、发票单证的发放权限。・查询统计管理能根据输入的支局所号、查询日期等信息,统计各支局的交易明细、交易量等信息。根据输入的统计日期信息,将数据库中符合条件的记录显示出来,生成报表。并且能根据营业网点提供的终端号、操作员号、流水号等信息,对票卡和发票单证进行恢复处理。・业务管理应实现网点管理、人员资料维护、票卡管理、发票管理、密钥管理等功能。网点管理、人员资料维护应包括新增、修改、删除等功能。票卡、发票管理应包括入库、领出、回交、使用情况统计功能,并实现向各营业支局分发票卡、发票单证。・日始日终管理根据输入的当天日期,进行当天的日终处理,并将系统日期切换至下一工作日,并进行初始化操作。此外,系统管理应包括对支局所管理和后台终端人员资料管理功能。系统维护应包括参数设置、版本发布、控制文件发布、系统日志等功能。广东工业大学硕士学位论文2.5.3中心业务处理为后台业务处理系统,对各类交易进行必要的合法性和权限检查、流水登记、帐务登记等。2.5.4数据通讯管理应包括对终端的通信守护进程、对羊城通的通信守护进程的功能。2.5.5认证中心(由羊城通营运公司提供)第三章系统总体方案设计第三章系统总体方案设计3.1方案选定3.1.1系统体系结构图由于羊城通交通卡为公交“一卡通”系统专用票卡,采用非接触式射频Ic卡技术,所以需采用专门的读写设备进行操作,并根据系统运营商的技术规范要求开发专门的应用软件提供客户服务功能。该系统在系统结构上分为三个部分,营业前台部分、后台服务器部分和认证部分,营业前台部分主要负责交易数据的采集和数据的初处理,而后台服务器主要负责交易数据的保存、处理和转发等各种操作,而认证部分只是负责对交易数据的合法性进行认证。图3.1系统体系结构图从充分利用现有资源、尽量节省投资的角度出发,该系统基于邮政综合网进行开发,利用综合网现有的网络、Pc、打印机等硬件环境,只需增加中心服务器、IC卡读写器等硬件设备。广东工业大学硕士学位论文3.1.2设计原则・可靠性系统的可靠性主要是由平均无故障运行时间和平均故障恢复时间两个指标来衡量的,它与设备的选型(计算机、发卡机等)、系统软件(操作系统及数据库系统)的选择、应用软件的可靠性等几大因素有关。因此,一方面,系统选用可靠的设备,同时配备成熟的系统软件保障系统的可靠运行,采用成熟的数据库系统及操作系统,所有应用软件的设计编制应遵循规范化标准;另一方面,还要从管理入手,制定科学合理的规章管理制度,以确保系统可靠地运行。・先迸性该系统采用具有一定先进性软、硬件产品,系统设计既采用先进的概念、方法和技术,采用了当前一些最新技术研究成果,又注意了结构、设备、工具的相对成熟。这样不但能反映当今的先进水平,而且具有发展潜力,能保证在未来若干年内占主导地位。・可扩充性硬件的系统设计采用分布系统,计算机留有充分余量和通讯接口.软件设计采用功能模块,子系统的增加或子系统功能的增加只是功能模块的增加,因此系统不会受技术改造或机构网点的增多(扩大)而重新调整。・开放性为便于与相关的其他系统(综合网、金融网等)的相结合,必须要预留接入接口,使系统具有良好的开放性。3.2数据库选择Informix数据库系统是由美国Informix软件公司开发出来的关系型数据库产品。多年来经过不断地更新及升级,目前已经形成了以数14第三章系统总体方案设计据库系统核心InformiX—Online(或InformiX—SE)为基础,以多种数据库软件开发工具相互配合而构成的综合数据库系列产品,具有非常强大、丰富的开发及应用功能。Informix是一个关系数据库管理系统,可用于开发功能强大的应用程序,它可在多个平台上运行,例如:MicrosoftWindows和UNIX。Informix数据库动态服务器(InformixDynamicServer简称IDS)是Informix数据库技术产品的核心,具有可伸缩性、可扩展性、易管理性和高效运行的特点“”。在Unix上数据库通常采用MySql。MySql虽然快速,但是也有致命弱点:一是不支持事务处理,二是不支持SQL子查询。这些弱点(特别是不支持事务处理)使得MySql无法运用到关键业务中(比如银行业务数据库,涉及到上百亿资金的安全)。因此在涉及关键业务的地方我们可以选择大型数据库,如Oracle、Sybase、DB2和Informix等。Informix与Oracle等数据库相比,速度并不占优,但可靠性非常好。Informix在开放系统上提供了开发和执行信息管理应用的产品。核心产品包括应用开发和调度工具、数据库服务器和连接软件。所有的产品都基于ANSI标准的SQL。InformiX提供双进程结构。双进程结构把前端的用户应用代码与后台的数据库服务器分开。SQL用于客户应用向Informix服务器发数据请求,在双进程结构中,客户和服务器既可以在同一台机器上也可以驻留在通过网络连接的不同的计算机上。当两个进程驻留在不同的机器上时,称之为客户机/服务器(简称c/s模式)体系结构。3.3数据库模式选择数据库技术从最早的单机模式、主从模式,发展到近年来应用广泛的客户机/服务器(client/Server,简称c/s)模式,又到目前流行的浏览器/服务器(Browser/Server,简称B/S)模式。针对羊城通卡销售、充值系统内容复杂,数据量大、功能全面、涉及繁多、管理面广等特点,系统平台主要考虑上述的c/s模式。下面,结合系统的功广东工业大学硕士学位论文能具体分析采用c/s模式的优缺点。Client/Server模式,即客户机/N务器模式,简称c/s,是一种非常成熟的应用体系结构,被广泛应用于各种信息管理系统中。在这种模式中,将应用系统分为两部分:一部分是由多个用户共享的信息与功能,称为服务器部分;另一部分是每个用户所专有,称为客户部分¨”。c/s是建立在局域网的基础上,由客户机与服务器端组成,其结构如下图所示。c/s模式是客户机发出请求,服务器直接将结果返回客户机的一种资源共享的工作方式。客户工作站的应用请求被送往数据库服务器,数据库服务器接受请求、并把执行结果传回给客户端。在c/s模式中,由服务器承担对数据库的全面管理,服务器是整个系统的主控中心,在服务器和客户机上分别运行服务器程序和客户程序。恒到等陌碟数据库服务器两层c/s模式图C/S模式比较适合小规模的、用户较少、单一数据库且有安全性和快速性保障的局域网环境下,它有下列有点:1、C/S模式有很强的实时处理能力,适合对数据库的实时处理和大批量的数据更新。2、C/S模式在客户端有一套完整的应用程序,具有很强的交互性,在营业人员进行羊城通卡的充值时,系统能及时准确的提供应答信息、在线帮助等功能。3、由于C/S模式是配对的点对点的结构模式,通常采用的是适用于局域网、安全性较好的网络协议,因此,C/S模式能提供更为安全的存取模式。4、C/S模式只有两层逻辑结构,把处理任务划分给两个系统减少了网络线路上的数据传输量,使得网络传输速度较快。在C/S模式中,数据现实和事物处理部分均被放在客户端,从而16第三章系统总体方案设计使客户端承受着双重任务,负担较重,相对服务器端的任务较轻,成为瘦身服务器。负荷不均成为这种结构的致命缺陷,随着网络的发展和信息处理量的增加,单独采用C/S模式产生的不利结果,主要表现在:1、由于客户端和服务器直接连接,服务器将消耗部分系统资源用于处理与客户端的连接工作。如果请求终端的数量较大,服务器因产生的进程增多,造成服务器系统资源的枯竭或进程间的死锁,使得系统不稳定甚至崩溃。如羊城通卡的充值子系统。2、C/S模式在一定程度上限制了信息的发布(如数据报表的统计)3、由于每一客户端都要安装应用程序,因此,当系统升级时得给每个客户端的应用程序升级,大大增加了系统的成本,不利于系统的维护。4、在C/S模式中,唯一在线的数据库服务器成为系统可靠性的极大隐患。如果数据库服务器因为某种原因停止工作,那么整个系统将趋于瘫痪。3.4开发技术及运行环境由于该系统实际类似金融应用系统,对于系统的安全性与稳定性要求非常高,因此推荐后台管理系统使用SC0UNIX作为操作系统。营业前台终端使用Windows98作为操作系统。网络平台的设计:利用综合网现有的设备作为硬件平台,以SC0UNIX和Windows98网络操作系统,采用Informix数据库服务器开发平台:UniXC语言、C++Builder、InformiX数据库连接工具:InformixCLIfor7.2OnlineDS作为7.2ESql/CWindows、BDE数据引擎在系统硬件方面,投入主要包括后台管理服务器、流动服务用笔记本电脑、带I—SAM卡座的感应式Ic卡读写器等。广东工业大学硕士学位论文3.5系统相关技术3.5.1非接触式IC卡非接触Ic卡,又名感应卡,诞生于90年代初,由于存在着条码卡、磁卡和接触式Ic卡不可比拟的优点,使之一经问世,便立刻引起了广泛的关注,并以惊人的速度得到推广应用。非接触式Ic卡由Ic芯片,感应天线组成,并完全密封在一个标准PVC卡片中,无外露部分。非接触式Ic卡的读写过程,通常由非接触型Ic卡与读写器之间通过无线电波来完成读写操作。非接触型Ic卡本身是无源体,当读写器对卡进行读写操作时,读写器发出的信号由两部分叠加组成:一部分是电源信号。该信号由卡接收后,与其本身的LIC产生谐振,产生一个瞬间能量来供给芯片工作。另一部分则是结合数据信号,指挥芯片完成数据的读取、修改、存储等,并返回给读写器。由非接触式Ic卡所形成的读写系统,无论是硬件结构,还是操作过程都得到了很大的简化,同时借助于先进的管理软件,可脱机的操作方式,都使数据读写过程更为简单。非接触式Ic卡与条码卡、磁卡、接触式Ic卡相比较,条码卡、磁卡由于其结构简单,存储容量小,安全保密性差,读写设备复杂且维护费用高,作为七、八十年代技术水平的产品,已风光不再,逐渐被取代。接触式Ic卡与条码卡、磁卡相比,更加安全可靠,除了存储容量大,还可一卡多用,同时可靠性比条码卡、磁卡高,寿命长;读写机构比条码卡、磁卡读写机构简单可靠,造价便宜,维护方便,容易推广“”。正由于以上优点,使得接触式Ic卡市场遍布世界各地,风靡一时。然而,当前风头正健的接触式Ic卡面临着后来者非接触式Ic卡的强劲挑战。非接触式Ic卡与传统的接触式Ic卡相比,它在继承了接触式Ic卡的优点的同时,如大容量、高安全性等,又克服了接触式所无法避免的缺点,如读写故障率高,由于触点外露而导致的污染、损伤、磨损、静电以及插卡这不便的读写过程等。非接触式Ic卡完全密封的形式及无接触的工作方式,使之不受外界不良因素的影响,从而使用寿第三章系统总体方案设计命完全接近Ic芯片的自然寿命,因而卡本身的使用频率和期限以及操作的便利性都大大的高于接触式Ic卡。可见,非接触式Ic卡不仅代表着卡技术发展多年的结晶,也是象征着卡的应用又提高到一个新阶段的里程碑“”。同时,非接触IC卡国际标准IS014443的诞生,将使之兼容接触式Ic卡,从而为非接触Ic卡带来了无穷无尽的潜力。毫无疑问,集众家之大成的非接触Ic卡将在身份识别、金融、电子货币、公共交通、智能楼宇、小区物业、社会保障诸多领域独领风骚。3.5.2ND5加密算法在现阶段,一般存在两种加密方式,单向加密和双向加密。双向加密是加密算法中最常用的,它将我们可以直接理解的明文数据加密为我们不可直接理解的密文数据,然后,在需要的时候,可以使用一定的算法将这些加密以后的密文解密为原来可以理解的明文。双向加密适合于隐秘通讯,比如在网上购物的时候,需要向网站提交信用卡密码,我们当然不希望我们的数据直接在网上明文传送,因为这样很可能被别的用户“偷听”,我们希望我们的信用卡密码是通过加密以后,再在网络传送,这样,网站接受到我们的数据以后,通过解密算法就可以得到准确的信用卡账号。单向加密刚好相反,只能对数据进行加密,也就是说,没有办法对加密以后的数据进行解密。可能我们立即就会想,这样的加密有什么用处?不能解密的加密算法有什么作用呢?在实际中的一个应用就是数据库中的用户信息加密,当用户创建一个新的账号或者密码,他的信息不是直接保存到数据库,而是经过一次加密以后再保存,这样,即使这些信息被泄露,也不能立即理解这些信息的真正含义““。而MD5就是采用单向加密的加密算法。MD5的全称是meSsage—digestalgorithm5(信息一摘要算法),在90年代初由mitdatasecuritYlaboratoryforaomputersCience和rsaitic的ronald1.riyest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被4压缩”成一种保密的格式19广东工业大学硕士学位论文(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个i28位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。MD5的典型应用是对一段信息(message)产生信息摘要(message—digest),以防止被篡改。比如,在unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:md5(tal2aJiya.tar.gz)=Ocal75b9cOf726a831d895e269332461这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。如果在以后传播这个文件的过程中。无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算md5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的’抵赖”,这就是所谓的数字签名应用。MD5广泛应用于加密和解密技术上。比如在Ill2ix系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。3.6系统结构系统功能由营业窗口子系统、中心业务处理子系统、后台管理子系第三章系统总体方案设计统、认证中心和数据通信子系统组成。系统结构图如图3.3所示系统功能组l1Il3.6.1营业窗口子系统图3.4营业窗口子系统・登陆管理功能说明:用户登陆系统,同时通过读卡器读取ISAM卡信息,上传至认证中心,得到返回确认后,才能进行前台营业操作。输入信息:操作员号、操作员密码、ISAM卡信息主机处理:检查操作员号、密码是否匹配,将ISAM卡信息传至羊城通认证中心验证广东工业大学硕士学位论文输出信息:返回成功或失败标志・发卡充值模块发卡充值模块,必须是联机在中心数据库记帐,系统可用现金、存折、储蓄卡进行划帐购卡和充值。系统的功能结构如图3.5:图3.5发卡充值模块・普通卡发放普通卡发放首先对空白交通卡进行初始化,在卡中写入卡的相关信息(卡号等),最后将卡激活,通过充值后就可使用。(1)第一次处理输入信息:逻辑卡号、物理卡号、押金金额、收现金额;系统检查:检查该卡是否该支局该端口所领取;检查该卡的状态;主机处理:记交易流水,设流水状态为“挂起”,修改该卡的状态为“使用”,从发票状态表中查取该终端所领取未使用的发票号,设置该发票为“使用”,记操作日志表;主机下送:交易流水号、允许发放标志,本次使用的押金发票的号码;(2)第二次处理输入信息:交易流水号、逻辑卡号、物理卡号、SAM卡号、操作类型、操作设备号、操作日期时间、操作员卡号、用户第三章系统总体方案设计资料标识、备注、SAM卡流水号、金额(押金);系统检查:检查交易流水;主机处理:记发卡明细表,设流水状态为“成功”,记操作日志表;主机下送:找赎的金额、打印票据;・票卡充值通过营业终端的充值机向交通卡的电子钱包存入充值金额,必须先验证交通卡的合法性,判断充值前的余额加上充值金额是否会超过规定的限额。涉及的表:操作日志表、交易流水表、名单表、卡充值明细表、票卡状态表(1)第一次处理接收信息:逻辑卡号、物理卡号、上次余额、收现金额、充值金额;系统检查:检查金额的合法性,上次余额加充值金额是否大于限额;主机处理:记交易流水,设流水状态为“挂起”,记操作日志表;主机下送:交易流水号、允许充值标志;处理说明:若允许充值,终端驱动读写卡器对交通卡进行存款操作,将卡充值结果以及卡充值交易数据记录到本地曰志:(2)第二次处理接收信息:交易流水号、SAM卡流水号、逻辑卡号、物理卡号、上次交易设备编号、上次交易日期时间、本次交易设备编号、本次交易日期时间、交易金额、本次余额、交易类型、票卡交易计数、本次交易入口设备编号、本次交易入口日期时间、分帐信息、校验码、交易认证码;系统检查:检查交易流水;主机处理:记卡充值明细表,设流水状态为“成功”,记操作日志广东工业大学硕士学位论文表;主机下送:找赎的金额、打印票据・余额查询功能描述:输入信息:系统检查:无上送主机:无主机下送:无输出信息:・挂起查询功能描述:输入信息:系统检查:主机下送:输出信息:处理说明:・挂起确认功能描述:输入信息:系统检查;上送主机:显示出卡中电子钱包中的实际余额;询问系统是否真的退出卡的余额检查本终端挂起的交易营业员号营业员号一非必输项,不输或00表示查询本终端;交易流水、挂起明细个数(n)、流水号1、流水号2…、流水号n挂起交易明细数据对于充值发卡交易因为采用了三唯的交易方式,可能会由于通信线路故障导致交易挂起,此时需要依据流水号从本地日志文件中提取交易信息。确认挂起的交易,将本地日志文件中交易信息上送中心:原来交易流水号、处理类型码、金额处理类型码一一只能是充值或发卡;金额一一发卡时,金额为空;交易流水号、SAM卡流水号、逻辑卡号、物理卡号、上次交易设备编号、上次交易日期时间、本次交易设第三章系统总体方案设计备编号、本次交易日期时间、交易金额、本次余额、交易类型、票卡交易计数、本次交易入口设备编号、本次交易入口日期时间、分帐信息、校验码、交易认证码;主机下送:处理说明:交易流水号、票卡押金金额、发票号;对于充值发卡交易因为采用了三唯的交易方式,可能会由于通信线路故障导致交易挂起,这时必须由终端发起确认交易,将本地记录的发卡充值业务数据上送主机。・查询统计模块查询统计模块中,营业员可以进行当天的网点扎帐处理,及查询交易流水和当天的业务量。营业网点扎帐功能说明:营业员统计当天的充值、发卡交易量,统计库存的票卡和发票;输入信息:终端选择、营业员号系统检查:终端选择一O.全局,1一本终端营业员号:非必输项,不输入表示统计本终端所有营业员的交易上送主机:终端号、营业员号主机下送:交易流水号、扎帐报表交易流水查询功能说明:查询本支局的交易流水信息;上送主机:交易流水号、起始时间、终止时间、下限金额、上限金额、卡号、处理类型码、交易状态、操作员号、结果代码;主机下送:交易流水号、交易流水查询报表输出信息:显示交易流水查询报表业务量统计广东工业大学硕士学位论文功能说明:按营业员工号、终端号、支局在指定时间范围内进行交易量统计,内容包括发卡种类、发卡数量、收取押金金额;充值卡数量、金额。输入信息:终端选择、操作员号、起始日期、终止日期系统检查:终端选择一O一全局,l一本终端操作员号一非必输项起始日期<:终止日期上送主机;终端号、操作员号起始日期、终止日期主机下送:交易流水号、交易统计表输出信息:显示交易统计表・系统维护模块系统维护模块包括网点资料维护和人员资料维护。人员资科维护功能描述:对支局操作员和后台管理人员资料进行维护,包括建立人员档案资料、人员删除、人员资料修改、人员资料查询以及个人登录密码更改;人员交易权限的控制(不同权限的人员签到使用不同的功能);对各级人员的签到、签退进行管理。输入信息:维护代码、工号、姓名、级别、启用日期、到期日期、状态系统检查:维护代码:i--增加;2一删除;3一修改工号:必输项;姓名:必输项;级别:必输项,O一操作员I一业务管理2一技术管理;状态:0一正常状态(为未登录)I一为己登录2一暂停用(可恢复)3一作废(不可恢复)4一锁住上送主机:操作员号、姓名、类别、级别、授权者、启用日期、到期日期、状态;主机下送:交易流水号,输出成功信息。第三章系统总体方案设计人员资料查询功能说明:查询人员资料;上送主机:工号、姓名主机下送:交易流水号、人员明细资料:输出信息:成功或失败信息人员登录密码更改功能说明:修改当前营业员的密码;输入信息:工号、旧密码、新密码第一次、新密码第二次;系统检查:新密码第一次和第二次是否一致;上送主机:旧密码、新密码;主机下送:交易流水号;输出信息:成功或失败信息。、・业务管理模块终端营业窗口的业务管理包括票卡管理和发票管理。・终端票卡管理票卡维护功能说明:用于网点班组长维护本网点的票卡;输入信息:维护代码、终端号、票卡种类、起始号、终止号、领用数量;系统检查:票卡种类:起始号码+领用数量=终止号码;维护代码:O一发放、1一回收(从终端收回本局)、2一坏设、3一丢失;上送主机:维护代码、票卡种类、起始号、终止号主机下送:交易流水号;输出信息:显示成功或失败信息;处理说明:营业点的票卡由中心发放、终端的票卡由营业点班组长发放。票卡查询功能说明:查询本局的票卡使用状态;广东工业大学硕士学位论文上送主机:票卡种类、起始号码、终止号码;系统检查:起始号码<=终止号码:主机下送:所属终端号、状态;处理说明:只能查询发放到本网点的票卡。票卡统计功能说明:统计本局的票卡使用情况;上送主机:终端号、票卡种类系统检查:票卡种类:不输入为全部;终端号:空格或OO或本终端号,空格或OO一表示统计本网点的票卡使用情况;主机下送:统计报表・终端发票管理发票管理功能说明:用于支局所维护库存的发票;输入信息:维护代码、支局所号、发票种类、起始号、终止号、领用数量系统检查:发票种类、检查维护代码、检查发票种类、起始号码+领用数量=终止号码;系统处理:记流水;根据不同的维护代码做相应的处理,如发放、回收、作废、丢失等。输出信息:显示成功或失败信息发票统计功能说明z统计各支局的发票使用情况;输入信息:支局所号系统处理:从发票管理表中统计指定支局或中心发票的使用情况;输出信息:统计报表第三章系统总体方案设计发票查询功能说明:在全市范围中查询的发票使用状态;输入信息:起始号码、终止号码主机检查:起始号码<=终止号码主机处理:从发票状态表查询发票的使用状态;输出信息:列出指定号码范围的发票状态3.6.2后台管理子系统图3.6后台管理子系统・登陆管理模块功能描述:中心操作员或管理人员登录后台管理系统。所涉及表:人员资料表、操作日志表输入:操作员工号、操作员密码系统检查:系统检查工号和密码的合法性(中心局);系统处理:获取系统工作时间、该工号的类别、级别、权限表征码和其他系统参数,存放入定义好的全局变量中;根据该人员的权限表征码来设菜单的操作许可;修改人员状态为已登录,写操作日志表。输出:显示登录成功并显示主菜单。・查询统计模块查询统计模块中,能查询下面各营业网点的交易流水、交易明细,及对某个时间段的交易量统计,同时能够根据营业网点提供的终端号、广东工业大学硕士学位论文操作员号、交易流水号等信息,对票卡和发票单证进行恢复处理。交易流水查询功能描述:所涉及表:输入信息:系统检查:输出信息:交易明细查询功能描述:所涉及表;输入信息:系统检查:输出信息:交易垂统计功能描述:所涉及表:输入信息:系统处理:输出信息:票卡发票恢复功能描述:输入信息:输出信息:按组合条件查询系统交易的流水数据;交易流水表系统流水号、交易日期时间范围、支局所号、终端号、逻辑卡号、交易金额、操作员号、处理类型码、交易结果检查输入项的合法性符合组合条件查询的交易流水数据按组合条件查询系统充值发卡的明细数据;交易明细表交易流水号、交易日期、物理卡号、逻辑卡号、印刷检查输入条件的合法性符合条件的交易明细数据统计各个支局的交易量,内容包括发卡种类、发卡数量、收取押金金额;充值卡数量、金额:发卡明细表、充值明细表支局所、卡种类统计发卡明细表、充值明细表统计数据对票卡和发票进行查询恢复。交易支局所、交易日期、操作员号、交易流水号、终端号交易流水号、局所号、终端号、交易日期、交易时间、交易类型码、交易金额、逻辑卡号、发票号卡号、交易金额、处理类型码、操作员号第三章系统总体方案设计・业务管理模块业务管理模块中,主要实现对中心票卡、发票单证管理,包括入库、发放、回交、查询统计等功能。・中心票卡管理票卡入库可以在系统中登记从营运公司领取的交通卡的信息(卡的种类、张数等)。票卡领出可以在系统中登记营业网点从票库中领出卡的信息(卡的种类、张数等)。票卡回交可以在系统中登记营业网点回交票卡的信息(卡的种类、张数等、回交原因等);对于坏卡必须设置标志,以便于统计和退回营运公司。票卡统计查询统计中心和网点票卡库存量和使用情况,可以统计各网点日、月、年的平均发卡量。・中心发票管理发票入库根据系统的提示或查询未用发票信息后,得知需要领取发票,从广州市建设电子收费营运有限公司领取发票,并把领取回来的发票信息,录入系统中未用发票库中。(录入内容:领取发票的种类、每种数量、面额、号码)。发票领出某营业网点前来领取发票时,选择录入该营业网点名后,自动检测该营业网点现库存发票情况,如果大于营业网点发票最低库存量标准,提示该营业网点不允许领取发票,及该营业网点现库存发票情况(发票种类、每种数量、号码)。如果低于或等于营业网点发票最低库存量标准,进入出库发票界面,可继续录入出库发票信息(领发票日期、领发票部门、发票种类、每种数量、号码、领票人、经办人)。广东工业大学硕士学位论文并打印一张领票单:日期、领发票部门、发票种类、每种数量、号码、领票人签字、经办人。回交发票某营业网点前来回交发票时,可通过系统选择该营业网点名,进入回交发票界面(录入信息:回交发票的种类、数量、号码、交票人、经办人)。在该营业网点发票库存信息中自动减去回交发票的信息,并在回交发票库中自动加入本次发票回交信息(发票种类、数量、号码、回交人、经办人)。发票统计、查询可对各个营业网点某段时间所领取、回交发票、使用发票信息进行统计(发票种类、数量);也可统计出各营业网点平均每月使用发票的情况。可按发票种类和号码查询该发票的使用情况(是否使用、用于哪个网点、何时使用等)・业务报表模块该模块主要功能是统计当天或历史各营业网点羊城通卡发卡充值业务报表。功能描述:生成各类报表如:充值统计表、发卡统计表、发卡明细表、充值明细表等;所涉及表:发卡明细表、充值明细表输入:日期范围、支局所号(或区局)系统检查:日期范围和支局所号的合法性检查,支局所号不输入时表示统计全局的数据;系统处理:根据条件生成各类报表,包括业务日统计报表和业务月统计报表。・系统管理模块系统管理模块包括支局所管理和后台终端人员维护两个功能。支局所管理功能说明:对支局所资料进行维护。包括增加、删除、修改等篁三塞至堡垒篁枣塞兰生对支局所得终端资料进行维护,包括增加、删除、修改等;可建立局所的会计核算关系,可建立局所的行政关系涉及的表:支局所资料表、终端定义表输入:支局所号、终端号、IP地址、邮政编码、联系电话、所属支局、所属区局、所属清算、单位、起用时间、停用时间等系统检测:局所代码正确和是否名称正确,支局属性码是否正确系统处理:写入或更新支局所资料表输出:显示成功或失败信息人员资料管理共由人员资料维护,操作员密码维护两个子模块组成。人员资料维护子模块用来查询操作员信息,增加和删除操作员,便于各级人员以及权限的维护,查询、增加、删除、修改。涉及的表:人员资料表、人员角色代码表输入:局所号、操作员工号、操作员姓名、人员类别,人员级别(下拉式菜单形式,分为一级、二级、三级等),操作种类(查询、增加、删除、修改四种)系统检查:系统根据检查局所号的合法性,检查本身是否具备维护该类别和级别人员的权限;系统处理:如果是增加或修改,局所号、操作员工号、操作员姓名、操作员类别操作员级别作为写入或修改数据表的信息;如果是查询,就作为条件组合查询数据库;如果是删除则对相应记录做作废标志。操作员密码维护字模块用来修改操作员的密码,增加系统的安全性。涉及的表:人员资料表输入:操作员工号、操作员原始密码、操作员新密码(输入两次)系统检查:操作员工号:系统检查该操作员存在否系统处理:系统将操作员资料表中的旧密码记录删除,写入新的广东工业大学硕士学位论文密码记录。・日始日终管理模块日始日终管理中,主要是实现对系统进行日期切换、El始初始化的功能。系统启动,暂停,关闭启动,暂停,关闭系统,启动系统时,自动下载名单。日终处理功能描述:日终处理输入:提示当天的日期。确认是否开始El终处理;系统检查:工作日期合法性系统处理:日志清理、清除临时数据、将当前业务数据迁移到历史数据库,初始化相关数据等操作输日期切换功能描述:更改系统工作日期、日始初始化、生成加密密钥输入:下一天的工作日期出:成功或失败的提示信息系统检查:系统工作日期的合法化系统处理:更新工作日期输出:成功或失败的提示信息日始初始化功能描述:每天系统启动使用前必须初始化,随机生成密钥匙所涉及表:密钥表输入:日期系统检查:检查上一个工作日是否已经日终处理系统处理:设置初始化标志输出:成功或失败的提示信息第三章系统总体方案设计3.7处理类型码定义3.7.1处理类型码组成处理代码(ProcessingCode)定长为6个数字字符,用于描述交易对业务数据造成何种影响的代码。组成如下:第一位:交易处理位置,0一本局处理交易,卜授权验证中心、2-其他地方处理的交易第二位:业务种类,0一羊城通业务、卜金融业务第三位:发起位置,0一营业前台、卜后台第四、五位:具体交易的编号第六位:请求/应答标志,0一请求交易,卜应答交易,2一确认交易3.7.2处理类型码定义000010用户登录000020退出系统100030ISAM卡启动000040普通卡发放000050普通卡充值000060挂起查询000070挂起确认000080人员资料查询000090人员资料增加000100人员资料修改000110人员资料删除000130票卡维护000140票卡查询000150票卡统计000160发票维护000170发票查询广东工业大学硕士学位论文000180000190000200发票统计营业员扎帐交易流水查询交易明细查询交易量统计0002100002203.8数据库设计数据库设计是羊城通卡销售、充值系统设计中很重要的部分,设计质量的好坏、数据结构的优劣,直接影响到该系统的成败。3.8.1数据库设计原则数据库设计的基本原则是在系统总体信息方案的指导下,各个库应当为它所支持的管理目标服务,在设计数据库系统时,应当重点考虑以下几个因素:(1)数据库必须层次分明,布局合理。(2)数据库必须高度结构化,保证数据的结构化、规范化和标准化,这是建立数据库和进行信息交换的基础。数据结构的设计应该遵循国家标准和行业标准,尤其要重视编码的应用。(3)在设计数据库的时候,一方面要尽可能地减少冗余度,减小存储空间的占用,降低数据一致性问题发生的可能性:另一方面,还要考虑适当的冗余,以提高运行速度和降低开发难度。(4)必须维护数据的正确性和一致性。在该系统中,多个用户共享数据库,由于并发操作,可能影响数据的一致性。(5)设定相应的安全机制,由于数据库的信息对特定的用户有特定的保密要求,安全机制必不可少[26]。3.8.2数据库基表的设计在羊城通卡销售、充值系统的开发过程中,最基础最重要的工作就是数据库中的基表的设计,基表可以简单地说是数据库中所有的数据库对象。在基表中,数据按照类似于电子表格的形式组织,每一行成为一条记录,每一列成为一个字段,这就是当今最流行的关系数据库的基本逻辑存储方式。在设计数据库时,系统设计者的责任是决定需要什么样的基表,每张基表的具体字段的名称,类型,长度,表的主键(Primarykey),外键(Foreignkey)和索引等方面的信息。下面,列出了本系统数据库中的一些关键的基表。表1:系统操作日志表(YCT_OprLog)表名YCT-OprLog数据库名数据类型Char(10)Char(8)YCTDB序号12字段名SeqNOTransDate空值非空非空非空非空字段中文名系统流水号缺省值备注交易日期交易时间支局所号终端号3456789TransTimeBranchIDTermlDOpriDTransCodeIPResultMessageSeqNoChar(6)Char(7)Char(2)非空非空非空非空非空非空Char(2)Char(6)操作员号处理类型码发出方IPChar(15)Char(4)交易结果请求报文0000表示交易成功10Char(1024)主键索引备注BranchID+OprID表2:系统参数表(YCT_SysParameter)说明存放各类系统参数,包括系统日期等字段名CodeNameStartDTEndDTYaluesCommentLastUpdOpr序号1234数据类型Char(3)Char(20)空值非空非空非空字段中文名参数代码参数名称起用日期终止日期参数值参数说明最后更新人员缺省值备注Char(8)Chat(8)非空非空非空567Char(30)Char(40)Char(12)Char(8)非空非空为“工号”+“姓名”组成8LastUpdDTCodeLockmoderow:最后更新日期主键备注广东工业大学硕士学位论文表3:支局所资料表(YCT_Branch)序字段名数据类型空值字段中文名缺省值各注号1.BranehIDChar(7)非空支局所号2.NameChar(30)非空支局所名称3.AddressChar(40)非空地址4.ZipChar(6)非空邮政编码5.PhoneChar(30)非空联系电话6.BranchTypChar(1)非空支局性质码0一邮政所,卜邮政支局2一区局。3一中心局7.SupBranchChar(7)非空所属支局ID8.SupArealDChar(7)非空所属区局9.SupRecCodChar(4)非空所属清算代码10.StatusChar(1)非空状态码卜启用,0一停用11.StartDTChar(8)非空启用日期12.EndDTChar(8)非空停用日期13.LicenseChar(32)非空许可证号(未使用)14.AddOprChar(12)非空建立者为”工号”+t’姓名”组成15.AddDTChar(8)非空建立日期16.LastUpdOpChar(12)非空最后更新操作为“工号”+“姓名”组员号成17.LastUpdDTChar(8)非空最后更新日期主BranehlD键索引表4:当前流水号表(YCTCurSeqNo)表YCTCurSeqNo数据库名YGTDB名序字段名数据类型空值字段中文名缺省值备注号第三章系统总体方案设计lTypeChar(1)非空类型卜系统流水号,整个系统唯一2-Ftp文件编写3~控制文件编号4~黑名单顺序号5~终端收益审计流水号6~数据交换审计流水号2SeqNOInteger非空流水号主键索引备注每天日始初始化时候必须对类型为2和6的流水号初始化为1表5:人员资料表(YCTOperator)序号l字段名BranchlDOprIDNamePasswordOprTypeOprLevel数据类型Char(7)Char(2)空值非空字段中文名支局所号操作员号姓名缺省值备注23456789非空非空非空非空非空非空非空非空非空只能是数字字符Char(10)Char(16)Char(1)口令人员类别人员级别加密为16位的密文见角色定义表见角色定义表Char(1)StartDTEndDTCanceIDTPwdErrTimChar(8)Char(8)启用日期到期日期Char(8)Integer作废日期密码错次数最近登录时间用户状态最后修改者最后修改日期0一为未登录,正常状态卜为已登录1011LastLogTSChar(14)非空非空非空12StatusChar(1)Char(12)13LastUpdOp14LastUpdDTChar(8)非空主BranchID,OprlD键索引三童三些查兰鎏圭耋堡篁兰旧表6:票卡种类(YCTCardType)说明记录票卡种类定义的信息;字段名Type序号12数据类型Char(2)Integer空值非空非空非空字段中文名票卡种类缺省值备注Value面值票卡名称3NameTypeChar(40)主键表7:票卡状态表序号l字段名TypeBranchlD数据类型Char(2)Char(7)Char(2)空值非空非空非空字段中文名票卡种类支局所号终端号卡号缺省值备注2当值为‘5810999’时为未分发31bⅡⅡⅢCardIDEnterDateEnterDate当值为‘00’时为分发到局所45char(16)Char(8)非空非空非空领入日期领入人员状态使用日期使用人员0一未用,L售出,2一坏卡,3一丢失67Char(12)Char(1)Char(8)Char(12)Stares非空非空非空89TransDateTransOprCardID主键索引BranchID表8:票卡管理表(YCT_CardKanage)序号123Date字段名数据类型Char(8)空值非空非空非空字段中文名日期缺省值备注TypeBranchlDChar(2)Char(7)票卡种类支局所号40篓三耋至篓皇竺垄量堡茎45TermIDPreBalTodInTodRetTodPutTodGetTodLostTodBadTodBalStartIDChar(2)integer非空非空终端号昨日结存67Integer非空非空非空非空非空非空非空非空今日领入今日退回今日发放今日回收今日丢失今日坏卡今日结存IntegerIntegerIntegerIntegerIntegerInteger8910111213Char(16)起始号码主键各注Date+BranchID+TermID+Type终端号为00表示支局库存、非00表示终端库存、支局所5810999表示中心库存当支局号为5810999或终端为00时候表9:交易流水表(YCT_TransSeqNO)序号l234567字段名数据类型Char(10)Char(8)空值非空字段中文名系统流水号交易日期缺省值备注SeqNOTransDateTransTimeBranchIDTermID非空非空非空非空Char(6)Char(7)Char(2)交易时间支局所号终端号ISAM卡号SAMCardIDLogCardIDPhyCardlDPreBalAmountAcceptAmtRetAmtCashCheckFlagChar(8)Char(16)非空非空非空非空非空非空非空逻辑卡号物理卡号89Char(8)Decimal(16。2)Decimal(16。2)上次余额交易金额收取现金金额找赎金额现金支票标志发票号原交易流水号原交易日期原交易金额发出方IP0一现金,卜支票.2一转帐充值金额或押金10ll12Decimal(16。2)Decimal(16,2)Char(1)13非空非空非空非空非空141516VchlDOrigSeqNOOrigWransDatechar(16)Char(10)Char(8)Decimal(16,2)Char(15)Char(2)17OrigAmount18IPAuthlD非空非空非空非空192021授权者代码操作员号处理类型码41OptIDTraasCodeChar(2)Char(6)三奎三些查兰堡圭兰堡篁兰22ResultChar(4)Char(1)非空非空交易结果交易状态0000表示交易成功23Status0一成功,卜失败,2挂起主SeqNo键备注表10发卡明细表(YCT_CardIssuList)序号1234567字段名数据类型Char(10)空值非空非空非空字段中文名缺省值备注SeqNOBranchID系统流水号支局所号终端号操作员号交易日期交易时间只能是数字字符Char(7)Char(2)TmmlDOprlDTransDateTransTimeTransSeqNoChar(2)Char(8)Char(6)Char(12)Char(16)Char(8)Char(8)非空非空非空非空非空非空非空非空非空脱机业务流水号与SeqNO相同后补空格89101l12131415161718LogCardlDPhyCardlDSAMCardIDOpeTypeOpeDevNO0peTSOprCardIDUserIDMemo逻辑卡号物理卡号ISAM卡号操作类型操作设备号操作日期时间操作员卡号用户资料标识备注SAM卡流水号金额是指服务费和押金0一无,卜有Char(1)Char(12)Char(14)A--M项说明另见文档非空非空非空非空非空非空非空Char(16)Char(1)Char(40)Char(8)SamSeqnoAmountDecimal(16,2)19CashCheckFlagChar(1)Char(200)Char(16)现金支票标志交易数据包押金发票号码0一现金,卜支票,2一转帐2021TextVchlDSeqNO非空非空终端上送原封不变主键索引LogCardlD、BranchlD、TransDate42第三章系统总体方案设计表11:充值明细表(YCT_CardSaveList)表名说明YCT』ardSaveList数据库名YCTDB序号l2字段名SeqNOBranchID数据类型Char(i0)空值非空非空非空非空非空非空非空非空非空非空非空非空非空非空非空非空非空非空非空字段中文名缺省值各注系统流水号支局所号终端号操作员号交易日期交易时间只能是数字字符Char(7)Char(2)Char(2)Char(8)3456789101lTcrmIDOprIDTransDateTransTimePerBalSamSeqNOLogCardIDPhyCardIDPTransSAMIDChar(6)Decimal(16,2)Char(8)上次余额sAM卡流水号逻辑卡号Char(16)Char(8)Char(8)物理卡号上次交易SAM卡号上次交易日期时间12PtransTSChar(14)Char(8)13TTransSAMID本次交易SAM卡号14TtransTSChar(14)Decimal(16,2)本次交易日期时间15Amount交易金额本次余额交易类型票卡交易计数本次交易入口161718BalanceTransTypeDecimal(16,2)Char(2)Char(5)Char(8)TransCountETransSAMID19设备编号20EtransTSChar(14)Char(2)非空非空非空非空非空非空非空本次交易入口日期时间2l222324AccountInfoⅡAcTransAuthCodeCashCheckFlag分帐信息校验码交易认证码现金支票标志交易数据包0一现金,卜支票,2一转帐Char(1)Char(8)Char(1)25TextChar(200)Char(16)终端上送原封不变26VchID充值发票号码43£童三些奎兰塑圭兰竺鲨兰SeqNOLogCardlD、BranchlD、TransDate主键索引第四章系统详细设计与实现第四章系统详细设计与实现4.1营业窗口子系统由于“羊城通”卡属于有价票卡,且公交“一卡通”系统属于开放式应用系统,为了保证系统安全,每个授权代理网点均需通过用户口令和I—SAM卡到认证中心进行认证。・用户登陆启动系统时,需要操作员输入用户号和口令,只有合法的操作员才能登录系统,同一操作员不能在多个地方同时登录,登录后系统按该操作员的类型(终端、中心)和级别所定义的权限赋予相应操作的权限赋予相应操作的权利。取得登录权限后,读取系统配置参数,检查是否需要版本升级、检查是否有控制文件需要更新、检查是否有名单信息需要更新。中心对登录的操作员进行登记(支局、工号、登录时间),并且检查终端设备的合法性(Ⅲ地址、认适璺的撞验)。系统允许两种权限的用户登陆,一种是业务管理员(业务管理员初始密码为6个1);一种是操作员(操作员初始密码为6个1),登陆界面图4.1(操作员登陆)所示:圈4.1登陆界面如果操作员号或者操作密码输入错,系统会报出相应的出错信息,操作员返回重新登录即可。业务管理员只可对系统进行参数维护、管理,而一般操作员只能进行相关的业务操作。成功登录后,系统按照此操作员的权限定义赋予相应操作的权利,显广东工业大学硕士学位论文示“羊城通”业务系统主界面,如图4.2所示图4,2。羊城通”业务系统主界面・退出系统退出系统时候,需要复位ISMVI卡(充值终端),中心记录该操作员退出时间。・ISAM卡启动(充值终端)各网点操作终端首先读取I—SAM卡有关信息并上传到认证中心,认证中心按照协议对照检查,判断该终端是否合法,只有通过认证合法的网点终端才能启动IS,aAVl卡,使ISAM卡有能力导出票卡密钥,进行“羊城通”相关业务处理。只有操作员才有权限启动ISAM卡。如图4.3所示:第四章系统详细设计与实现圈4.3启动ISAM卡・ISAM卡复位通过指令,使ISAM卡复位到初始状态。4.2发卡充值发卡充值子系统,必须是联机在中心数据库记帐,系统可用现金、存折、储蓄卡进行划帐购卡和充值。发卡充值子系统可安装于综合网和金融网的营业窗口。涉及的表:操作日志表、交易流水表、名单表、卡发放明细表、票卡状态表4.2.1普通卡发放普通卡发放首先对空白交通卡进行初始化,在卡中写入卡的相关信息(卡号等),若是记名卡需要对卡进行个人化处理,向卡中写入卡持有人的基本信息,最后将卡激活,通过充值后就可使用。发卡时需计取押金、票款并打印凭单一式三联,凭单上的信息必须能够保证在数据库数据丢失的情况下可以从中恢复。普通卡发放的流程图如图4.4所示:47广东工业大学硕士学位论文该交易采用三维交易,首先营业前台根据顾客购买交通卡充值卡的要求,按系统提示的顺序取出相应的空白卡放入读卡器,终端发放系统读出该卡的相应信息(卡号),将信息发送到中心服务器,服务器记录交易流水,检查该卡是否由邮储发行,设置交易流水状态为:挂起:,并向终端返回流水登记成功,允许发卡的信息,充值终端收到确认的信息后对交通卡进行初始化激活,登记本地交易日志,最后卡发放终端将卡初始化成功的信息发给中心服务器,服务器将流水的状态改为:盛功:,并将该卡信息记录到卡发放表中。48第四章系统详细设计与实现4.2.2发卡功能实现本模块包括预充值卡销售,空白卡发行充值,普通卡充值,余额查询及挂起查询确认五种发卡充值业务。其界面如图4.5所示:图4.5发卡充值界面营业员将空白卡放在读卡器上,在主界面点击【发卡充值】选择【空白卡发行】进入票卡发行界面,选择“现金交易”方式,按“发卡”按钮,营业员根据系统提示收现金额,并打印小票,给予客户对应押金发票,如下面的图所示:广东工业大学硕士学位论文图4.6收取现金图4.7提示使用发票第四章系统详细设计与实现图4.8发卡成功4.2.3票卡充值通过营业终端的充值机向交通卡的电子钱包存入充值金额,必须先验证交通卡的合法性,判断充值前的余额加上充值金额是否会超过规定的限额。充值时需打印凭单一式三联,凭单上的信息必须能够保证在数据库数据丢失的情况下可以从中恢复。涉及的表:操作日志表、交易流水表、名单表、卡充值明细表、票卡状态表票卡充值流程图如图4.9所示:广东工业大学硕士学位论文图4.9票卡充值流程图对交通卡进行充值,该交易采用三维交易。首先,在充值终端的读卡器上放入交通卡,读卡器校验卡的合法性并读出卡的相关信息(卡的类型、卡号、余额、持卡人信息等),营业员输入充值金额并提交交易信息到中心服务器,服务器记录卡充值的交易流水,设置交易流水状态为:蕉起:,并向终端返回流水登记成功,允许充值的信息,充值终端收到确认的信息后向交通卡写入充值金额,并显示充值后的金额(为保证充值成功,最后做余额查询判断余额是否等于充值前余额加上充值金额),登记本地交易曰志,最后充值终端将充值成功的信息发给中心服务器,服务器将充值流水的状态改为!廑功:,J并将该卡信息记录到卡充值表中。第四章系统详细设计与实现4.2.4充值功能实现在【发卡充值】中选择【普通卡充值】,显示如图4.10所示图4.10普通卡充值界面营业员将普通卡放在读卡器上,按“读卡”按钮,票卡信息框中会显示票卡逻辑号,票卡物理号及票卡余额信息。记下卡内余额,在充值信息中输入充值金额(最少为50元的倍数),选择“现金交易”,按“充值”按钮充僮,下面是充值的部分截图。图4.11现金充值53广东工业大学硕士学位论文图4.12打印充值小票图4.13现金充值成功充值完毕后再按“读卡”按钮,确认充值金额相符;若要接着进行充值下一张普通卡,先按“清除”按钮清除前一张普通卡的信息再读下一张的卡;若要退出按“关闭”按钮。第四章系统详细设计与实现4.2.5交易挂起查询确认处理流程图如图4.14所示:图4.14交易挂起查询确认流程图・功能实现挂起查询:营业员输入工号,按“查询”按钮,即可在下方白框中显示该终端挂起的交易信息,如图4.15所示;按“清除”按钮为清除框中内容(交易未作解挂处理),清除后可再输入工号继续查询。广东工业大学硕士学位论文图4.15交易挂起界面挂起确认:选中自框中要解挂的一条交易信息(每次只允许确认一条),检查右边框中显示的交易类型,交易时间,逻辑卡号及交易金额信息对照无误,按“解挂”按钮确认,系统显示解挂成功或失败信息;按“退出”按钮退出挂起查询确认界面。以下是发卡充值时,调用的一些函数,及部分源程序代码:/+FImc曲nName:b00】fastcallC_IsNumbcr(constStringstr,boolempty,intminvalue。intboolfastcallC_IsFloat(constStringstr,boolempty,doubleminvalue,doubleDescription:检查字符串数据的合法性InputParameter:sll'-一被检查的字符串empty~是否允许为空minvalue一最小值maxvalue一最大值4.2.6部分实现代码maxvalue);maxvalue);第四章系统详细设计与实现OutputbcolParameter:判断合法则返回true,非法返回false+,fastcallC_IsNumber(constStringstr,boolempty,mtminvalue,intmaxVaIue){Stringmap;Imp=Trim(slT);if(trap.LengthO!=0){try{StrToInt(tmp);lcatch(constException&e){return(false);们俞入字符非法}if((StrToInt(s曲<minvalue)ll(SIrToInt(str)>maxvalue)){return(false);,倚入范围错}}if(empty==false){,/不允许为空(包括空格)if(trap,Length()=O){return(false);//不能为空}lreturn(mle);}bool—fastcaUC_IsFloat(constString{Stringmap;sh,boolemp吼doubleminvalue,doublemaxvalue)tmp=Trim(str);if(map.Lengthot=O){57!查三些奎差墨圭主竺鲨銮try{StrToFloat(tmp);lcatch(constException&c){return(false);椭俞入字符非法lif((StrToFloat(str)<minvalue)ll(strToFloat(str)>maxvalue)){return(false);,腧入范围错}}if(empty==false){,,不允许为空(包括空格)if(nnp.LeⅡg山0一o){return(false);,,不能为空}}return(true):FunctionName:TDateTimeC_GetDBSC-MrDateTlme(sU-ingdbname);DescriptionInput:取数据库服务器的日期时间值;Parameter:dbname-一指数据库名称OutputParameter:数据库服务器的日期时间值,如果失败返回0值;TDateTtrncC_GetDBSCurDateTmlc(Stringdbname){TDateTimecur_dt=0;StringansiSQL;58第四章系统详细设计与实现if(P_Database_Typ#=DBTYPE_INFORMIX){//linweieall}elseif(P—Databas曲pe==DBTYPE—SQLSERVEIU{//ansiSQL=”select’curdatetime’=CURRENT_TIiVIESTAMP”:ansiSQL=”select’curdatetime’=GetDate0”;}elseif(P_Database_Typ#DBTYPE_DBASE){retum(C_GetCurDateTime0);}TQuery8Queryl;Queryl=newTQuery(Application);try{try{Queryl->DatabaseName=dbname;if(Queryl->Active)Qucryl一>Close();Queryl一>SQL->Clear0;Queryl-->SQL-・>Add(ansiSQL);Queryl一>ope《);cur_dt=Queryl一>FieldByName(”curdatetime”1一>AsDateTmae;)catch(Exception&exceptioⅡ){Application->MessageBox((”提数据库服务器时间出错!、ll、n错误信息:”+exception.Message).c_strO,,,系统错误",MB_ICONERROR);deleteQueryl;,,注意:以为return之前不执行以下的一finally部分,所以在此要删除Querylreturn(0);J}59广东工业大学硕士学位论文一flnallyfdeleteQnerylreturn(cur_d0}pFunctionName:TDateTimeC_GetCurDateTime();:toDescriptionInputobtainthecurrentdateandtimeasaTDateTunevalue;Parameter:asaOutputParameter:thecurrentdateandtimeTDateT'maevalueretum(NowO);//终端充值交易void—fasteallTFSupplyForm::BitBtn4Click(TObject+Sender){StringTempStr,RetSeqNO;charPCSN[9]:∥物理卡号charLCSN[17];//i墅辑卡号Searchcard(PCSN.LCSN)∥查询票卡的物理卡号和逻辑卡号charCardstams[1024]∥返回的票卡状态信息boolTempB=false;TempB=QueryStams(Card__Status);//查询票卡的状态信息if(TempB--=f-alse){ShowMessage(Card_Status);Application->MessageBox(“票卡有问题,请检查票卡”,”失败”,64);return;}//Value为充值前票卡余额intValue,UpLiIIli‘TotaICharge,LastChargeMoney,Testa;charLastChargeTime[13],Machine_Code[17],Oper_Code[5];西(QueryCardValue(&Value,&UpLimit,&TotalCharge,&LastChargeMoney,LastChargeTime。Machine60Co第四章系统详细设计与实现de.OperCode)--false)H查询充值前票卡余额{Apphcafion一>MessageBox(”读卡失败”.”错误”,16);return:}P_Max_SupplyValue=UpLimit;StringSupplyValue;//充值金额SupplyValue=Editl一>Text;ff(C_IsFloat(SupplyValue,false,0.01,P_Max_SupplyValue)一false)//检查充值金额是否正确{Appfication一>MessageBox(”请检查输入的充值金额!!_',”错误”,16);return;}if(int((SffroFloat(SupplyValue)+100)+Value)>P_Max_SupplyValue4100){Application->MessageBox(”你耍充值的金额过大”,”注意”,16);return;Js吐唱TakeMoney;H收现金额for(;;)//检查收现金额是否正确{TakeMoney=InputBox(”请输入收现金额”。”收现金额”,”0.00”);if(C_IsFloat(TakeMoney'f址se,0,999999999)==false){Application->MessageBox(”请检查输入的收现金额!…’错误”,llelse6);{break;}JfloatTempFloat;TempFloat=StrToFloat(TakeMoney);TakeMoney=FormatFloat(“0m”,(TempFloaffl.0));TempStr=”你的收现金额是:”+TakeMoney+”元吗?”:if(Application->MessagcBox(TempStr,c_s砥),”注意M8_OKCANCEL+MB_DEFBI兀’IDN2)一IDCANCEL)fApplication->MessageBox(”此交易已取消”,”注意”,16);return;}if(StrToFloat(SupplyValue)>StrToFloat(TakeMoney)){Application->MessageBox(”你收到的现金不足”,”注意”,16)'return;妫票卡进行充值boolTradeB=false;6l}二查三些奎兰堡圭兰堡墼三TradeB=TradeProcess(int(StrToFloat(SupplyValue)4100.0),Transaction);if(TmdeB=--false){Application->MessageBox(”充值失败…,”错误”,16);return;胜成交易确认数据包TempStr=Transaction;Ret_SeqNO=…’;}Pack..Body=P_Ret_SeqNO+TempStr;RetSeqNO=P_Ret_SeqNO;TempSlr=-”0000521”+Pack_Body;WTradeLog(TempStr);//把交易确认包数据写入交易日志,,发送交易确认包try{inttransact;RcvStr=-ToTranscation(”000052",Paek_Body,&tTans_ret);if(trans...ret!=0)throwEMyError(trans_ret);)catch(EMyError&e){WRunLog(e.EnCode,"交易出错!错误信息是,4-e.Message);Application->MessageBox((”交易出错!ku、n错误信息是:n+e.Message).1s缸),”系统错误”,MBICONERROR);return;}/*if(P_Ret_En'Code!=“0000”){ShowMessage(P_Ret_ErrMsg);return;14,SlrLugTimeStr=FormatDateTune(”YYYY-唧-ddhh:im:ss”,№wO);Temfinal..,ID=P_TerminalID;Opr.ID=P_Opr_ID;TmaeStr,Terminal_ID,Opr_m,Branch_Name;Branch_Name=P_Branch_Name;Applieation->MessageBox(”现在打印交易小票,准备好了吗??”.”打印”,64);{,,打印交易小票函数…~if(PrintVoucher(Ret_SeqNO,FormatFloat(”0.00”,(Value/100.0)),”票卡充值“。”0.00",SupplyValue,"000052”+Pack._Body,TakeMoney,TtrneStr,Terminal_ID,Opr_ID,Branch_Name)=--false){Application->MessageBox(”打印小票失败,请检查打印机”,”错误”,16):return;}第四章系统详细设计与实现TempSti=-”交易成功lXn找赎金额为”+FloatToSu-(StrToFloat(TakeMoney)-StrToFloat(SupplyValue))+”元、Il”:Applicafion一>MessageBox(TempStr.c_str0,,,成功“,64);INalue为票卡余额Value=OxO;if(QuelyCardValue(&Value,&UpLimit,&TotalCharge,&LastChargeMoney,LastChargeTime,MachineCode,Oper_Code)一false){Application->MessageBox(”读卡失败”,”错误”,16);return;}SmallDisplayShow(FormatFloat(”0.00”,Value/100.o))∥再资费屏上显示票卡金额BitBmlClick(Sender);14.3后台管理终端子系统4.3.1登陆管理羊城通业务系统后台管理平台,对各开展“羊城通”业务工作的营业网点进行系统管理和系统维护,给各营业网点进行查询统计工作、业务报表工作及进行日始日终工作提供业务和技术支持的系统。系统启动时,需要用户输入操作员号及操作密码,只有合法的用户才能登陆系统,非法的用户不能登录。成功登录后,系统按照此操作员的权限定义赋予相应操作的权利,显示“羊城通”后台管理系统主界面,如图4.16所示:广东工业大学硕士学位论文图4.16后台管理系统界面在【查询统计】界面中选择【查询交易流水】,显示如图4.17所示:圈4,17交易流水查询在上图所示界面中,输入支局所号,交易流水号,日期范围(如果前后日期相同4.3.2查询统计耋晋主至釜童堡兰茎皇童堡则为统计当天交易流水信息),逻辑卡号,金额范围。处理类型码,交易状态(分成功,失败和挂起三种),操作员号,结果代码。以上条件可进行一种或多种组合查询(如不输入且明细太多系统会提示相应的错误信息)。确定输入信息正确后按“查询”按钮,系统将在数据库中查询符合条件的纪录并将结果显示出来,即交易流水查询表。输出的显示内容包括系统流水号,操作流水号,交易日期,交易时间,支局所号,终端号,ISAM卡号,逻辑卡号,物理卡号,上次余额,交易金额,收取现金金额,找赎金额,现金支票标志,发票号等。票卡发票恢复在【查询统计】中选择【票卡发票恢复】,输入界面如图4.18所示:图4.18票卡发票恢复界面在明细框中选中要进行恢复的某条票卡或发票资料,按“恢复”按钮即可对其进行初始化恢复;按“退出”按钮退出票卡发票恢复维护界面。4.3.3部分调用函数代码pFunctionNme:int.fastcallC_StrToInt(constAnsiStringS1广东工业大学硕士学位论文long—_fasmallC_StrToLong(constAnsiStringS);doublefastcaUC_StrToReal(constStringstr);DescriFltionInput:检查字符串数据的合法性Parameter:s*一被检查的字符串empty一是否允许为空fixlen一是否规定为固定长度len一规定长度或最大长度OutputintParameter:判断合法则返回true,非法返回false+,fastcallC_StrToInt(constAnsiStringsb●{Stringtmpstr;tmpstr=Trim(str);intresult;if(tC_IsNumber(tmpstr,tme,INT_MIN,INT_MAX))freturn(-1);}if(tmpstr.Length0==0)tmpstr=…0’;try{resul仁StrToInt(tmps岫;}catch(…)freturn(・2);}return(result);}long—.fastcallC_StrToLong(constAnsiStringstr)(Stringlanpstr;66丝塑量至丝童垫堡兰兰塞璺tmpstr=Trim(s仃);if(!C-IsNumber(tmpstr,true,LONG_MIN,LONG_MAX)){return(o);lif(mapstr.LengthO==O)return(0);charstring[20];longlnumber;strcpy(string,tmpstr.c_str0);lnumber=atol(slfing);retum(1number);)pfloatfastcallC_StrToFloat(constAnsiSUingstn{Stringtmps忙;doubleresult;tmpstr=Trim(str);if(tmpstr.LeugthO==O)//没有输入return(O);if(!CLIsFloat(tmpstr,false,0,99999999999.99)),,非法return(O);impPos,vLen,V1,V2;doubleR2:SlringS1,S2;pPos=tmpstr.Pos(”.”);vLen=tmpstr.Length0;if(pPos>0)fS1=tmpstr.SubString(1,pPos一1);S2=tmpstr.SubString(pPos+1,vLen-pPos);V1=C-S扛1bInt(S1);67』童三些奎兰堡圭兰堡丝兰V2=C—StrToInt(S2);vLen=S2.LengthO;R2=(float)V2;for(inti_1;k=vLen;“+)fR2=R2/10.O:}result=Vl+R2;}else{result=(double)CStrToInt(tmpstr):}ShowMessage(String(result));return((float)result);}c-StrToReat(coastStzings呻{SUngtmpstr;doubleresult;tmpstr=Trim(str);if(tmpstr.LengthO==O-),,没有输入return(O);if(!C_IsFloat(tmpstrffalse,0,999999999999.99))删}法returnl(0);hatpPos,vLen,V1,V2;doubteR2:StringS1,S2:pPos=tmpstz.Pos(”.”);vLen=tnapstr.Length();让0Pos>0){68},double—且stcall第四章系统详细设计与实现Sl=tmpstr.SubString(1,pPos-1);S2=tmpstr,SubString(pPos+1,vLen-pPos);Vl=C_StrToInt(S1);V2=C—StrToInt(S2);vLen=S2.Length();R2=(double)V2;forOuti=l;i<=vLen;i++)fR2=R2/10.0:}result=Vl+R2;lelse{result=(double)C_StrToLong(tmpstr);lreturn(result);}pFunctionName:TDateTimeC_AnyStrToDate(constAnsiStringS);DescripfionInput:将规定格式的字符串日期转换为日期类型Parameter:以下规定几种格式的字符串日期yymmdd、yyyymmdd、YY-mm・dd、yy/mm/dd、YYYY—mm-dd、yyyy/mm/dd、YYYY年inln月dd日:OutputParameter:返回TDateTime类型的日期,如果日期非法则返回0:},TDateT'maeC_AnyStrToDate(constAnsiStl'ingS){TDateTimedt;Strings,dLstr;hatlen:广东工业大学硕士学位论文s=S.Trim();len=s.LengthO;try{dt=StrToDate(s);}catch(…){删}标准的日期格式需要进行转换switch(1en){case6:dt_str=s.SubString(1,2)+IIU+s.SubString(3,2)+”-”+s.SubString(5,2);break;case8:if(C_IsDigitStr(s,false,true,8))//如果是8位长的数字dLstr=s.SubSlring(1,4)+”一”+s.SubString(5,2)+”-”+s.SubString(7,2);elsedLsW=-s.SubString(1,2)+”一”+s.SubSlring(4。2)+”一”+s.SubString(7,2);break;CasC10:dLstr=s.SubSlring(1,4)+”-”+s.SubString(6,2)+”・”+s.SubString(9,2);break;case14:dLstr=s.SubString(1,4)+”一”+s.SubString(7,2)+”-”+s.SubString(11,2);break;default:return(0);}try{dt=StrToDate(dt_slr);70第四章系统详细设计与实现}catch(..){return(0);l}retum(dt);)产FunctionName:TDateT'tmeC_AnyStrToTime(constAnsiStringS);Description:将规定格式的字符串时间转换为日期类型inputParameter:以下规定几种格式的字符串时间hhlllillSS、hh:HRn:ss、hh时mm分ss秒outputParameter:返回TDateTime类型的时间,如果时间非法则返回0;吖TDateT'uneC_AnyStrToTtme(constAnsiStringS){TDateTimedt;Strings,dt_str;intlen;s=S.Trim();len=s.Length();try{dt=StrToTime(s);}catch(…){删}标准的日期格式需要进行转换switch0en){case6:dt_str=s.SubStriag(1,2)+”:”+s.SubString(3,2)+”:”+s.SubString(5.2)71』查三些奎兰堡圭兰堡丝兰dt_str=s.SubString(1,2)+”:”+s.SubString(4,2)+”:”+s.SubString(7,2);break;dt_str=s.SubString(1,2)+”:”+s.SubString(5,2)+”:”+s.SubString(9,2);break;default:return(o);try{dt=StrToTime(dUsⅡ,;}catch(…){mtura(O);}}return(d0;hatfastcaUUnCString(char+Buf,intBulLen,charStr[][50],血ItemCount){charItem[50】;intflen,i=0:flen=O;while(i<=ItemCount){strcpy(Item,Buf+flen);//ShowMessage(String(i)+”=”+String(Item));if((strlen(Item)~-----O)&&(i>O))return(i);72第四章系统详细设计与实现tlen=tlen+strlen(Item)+l;if(tlen>=BufLen)remm(i)strcpy(Str[i],Item);i++:}return(i);4.3.4业务管理生成各类业务报表功能实现在【业务报表】中选择【业务统计报表】,输入工作日期(默认为当天日期,可指定一个日期范围进行统计。确定输入信息正确按“生成报表”按钮,系统将在数据库中查询符合条件的纪录并将结果显示出来,即羊城通业务统计报表。如图4.19所示:图4.19业务统计报表报表内容包括支局所号,局所名称,发卡(张数、现金、转帐),售预充值卡(张数、现金、转帐),充值(现金、转帐),合计金额等。广东工业大学硕士学位论文结束语广州邮政代理羊城通卡销售、充值系统已经基本完成,系统经过多方面的测试和试运行,证明系统运行稳定、操作简便、流程清晰、安全可靠、功能齐全并符合业务发展的需求。从投入使用至今看,该系统从经济效益和社会效益方面都达到了预期的目的。本系统具有如下几个特点:l、界面友好,操作方便2、数据采集准确而及时3、系统运行安全,可靠性好4、开发效率高,可维护性好由于该系统启动到完成时限比较短,可能在某些方面还不尽人意,比如系统在外界环境的影响下(如病毒、断电),会丢失交易数据。此外,由于本人开发经验和水平有限,因此在系统的设计和实现技术方面都存在不少欠缺之处,同时随着计算机技术的迅速发展,自身也需要不断去追求和超越。羊城通代理业务发展呈稳步发展的方向。邮政局在各代理银行中占主要的地位,并成为羊城通公司代理的中坚力量,在广大的市民中树立了。根据对市场的调查,羊城通代理业务还存在一定的市场,可以迸一步扩大区域进行市场拓展。我们下一步的工作就是让营业员进一步熟悉本系统,同时进行羊城通卡的二期开发,主要功能有:1、在终端开通羊城通200卡开户功能。开通羊城通200卡开户业务处理,并生成开户统计、开户对帐报表,分别与96200省中心、邮政羊城通代理服务器对帐。2、电子钱包充值至200卡。前置机开通羊城通电子钱包充值至对应的200卡功能,与96200省中心、邮政羊城通代理服务器对帐。3、96200营业终端开通售卡、充值、查询余额功能,上送邮政代理服务器进行相关交易,并通过代理服务器完成轧帐、查询功能。相信,随着羊城通系统一期开发的完善和羊城通卡的二期开发的深入进行,广州邮政代理羊城通业务将在各大商业银行中名列前矛,邮政“服务为民”的形象也将在社会上进一步得到提升。参考文献参考文献【1】.陈战林等,c++Builder组件大全,电子工业出版社,2002年8月【2】.刘光,c++Builder数据库系统设计与开发,清华大学出版社,2003年8月【3】.肖建等,C++Bui]der编程基础,清华大学出版社,2002年11月[41.刘华等,c十+Builder程序设计,清华大学出版社,2003年4月[51.杨飞等,c++Builder编程实例与技巧,机械工业出版社,2002年2月[61.李立功、赵杨,MYSQL程序设计与数据库管理,科学出版社,2001年2月【7】.清宏计算机工作室,MYSQL编程技巧(编程和数据库管理篇),2002年8月【8】.徐小青、路晓村译,MySql完全手册,电子工业出版社,2003年11月[91.方娟,ESQL/C编程指南,科学出版社,2000年9月:16~21【10].森林图书工作室,Linux&UnixC程序员参考大全,国防工业出版社,2001年9月【11】.喻志虎,Unix平台下c语言编程,清华大学出版社,2001年10月【121.洪锦魁,Unixc程序设计入门与应用,清华大学出版社,2002年8月【13].唐靖飚等,Unix平台下c语言高级编程,北京希望电子出版社,2000年6月【141.邱仲潘等译,Informix实用全书,电子工业出版社,2002年1月:【15].陆晓、郭进等,Informix高级编程指南,清华大学出版社,2000年11月:44~50【16].徐捷,Informix系统应用指南,电子工业出版社,2000年11月:35~37【17].何玉洁、梁琦译.数据库设计教程.机械工业出版社.2003年6月:17~20【18].看雪学院,软件加密技术内幕,电子工业出版社,2003年8月:2~5【191.张健沛,王玉红等,Informix关系数据库系统管理与软件设计.中国水利水电出版社,1999年4月:121~125【20】.张光业译.Informix向导——InformixSQL参考与语法.2001年5月.[21】.侯云峰.三层次Client/Server应用开发指南.北京:电子出版社,2000.【22】.王爱英.智能卡技术——Ic卡(第二版).清华大学出版社,2003年5月:12~16【23】.王卓人,刘宗样等,Ic卡的技术与应用,电子工业出版社,1999年5月:3~5广东工业大学硕士学位论文【24】.陈大才译.射频识别(RFID)技术——无线电感应的应答器和非接触式IC卡的原理与应用(第二版),2001年6月:25~30【25】.段钢,加密与解密(第二版>,电子工业出版社,2003年6月:104~i07[281.何舒,赵刚.基于WEB的成人教育信息管理系统的设计与实现[J].情报科学,2003,21(5):56~57【29】.范一鸣,黄云龙等.现代远程教育教学管理信息系统的探索与实践[J].计算机时代,2003,9:38~39【30】.杨宗志,c++Builder数据库程序设计,清华大学出版社.2001年10月.[31】。CarltonDoe.INFORMIX—OnlineDynamicServerHandbook.1999.3.【32】.RonFlannery.PersonPublishion.TheInformixHandbook.2002.h56~59[331.JarrodHollingwort等.SAMSPublishion.c+十Builder5Developer’S2002.1Guide[341.GeorgeReeseRandyJayYargerTimKing.0’ReillyPublishion.Managing&UsingMySQL,secondedition.2003.5.[351.(美)W.RichardStevens.PrenticeHall/PearsonPublishion。UNIXNetworkProgrammingVolum2InterproeessCommunications(SecondEdition).2000.7.【36】.(美)GeorgeBaklarz、BillWong,DB2UniversalDatabasev8.1forLinux,UnixDatabaseAdministrationCertification2003.8Guide(StbEdition),【37】.(美)RyanK.StephensRonaldR.Plew.Sams/Macmillan/PearsonPublishion.DatabaseDesign.2001.9[381.(美)JohnEditionShapleyGray.InterprocessCommunicationsinUNIX,Second.2001.3SchildtGregGuntle.McGraw-Hill.BorlandC++Builder:The【39】.(美)HerbertCompleteReference.2002.2【40】.Borland/InpriseCompany.BorlandC十+Builder5forDeveloper’SGuide.2000.11独创性声明独创性声明秉承学校严谨的学风与优良的科学道德,本人声明所呈交的论文是我个人在导师的指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,不包含本人或其他用途使用过的成果。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明,并表示了谢意。本学位论文成果是本人在广东工业大学读书期间在导师的指导下取得的,论文成果归广东工业大学所有。申请学位论文与资料若有不实之处,本人承担一切相关责任,特此声明。论文作者签字:嚷住晕指导教师繇翻嘶>晒年肛月归日

因篇幅问题不能全部显示,请点此查看更多更全内容

Top