ATM自动取款机系统毕业设计论文

上传人:沈*** 文档编号:79316335 上传时间:2022-04-23 格式:DOC 页数:30 大小:727.55KB
收藏 版权申诉 举报 下载
ATM自动取款机系统毕业设计论文_第1页
第1页 / 共30页
ATM自动取款机系统毕业设计论文_第2页
第2页 / 共30页
ATM自动取款机系统毕业设计论文_第3页
第3页 / 共30页
资源描述:

《ATM自动取款机系统毕业设计论文》由会员分享,可在线阅读,更多相关《ATM自动取款机系统毕业设计论文(30页珍藏版)》请在装配图网上搜索。

1、江苏财经职业技术学院综合毕业实践说明书标题:基于WCF的ATM自动取款机系统系 别: 计算机技术与艺术设计系 专 业: 计算机应用技术 学 号: 0620718109 姓 名: 廖礼辉 指导教师: 涂 刚 2009年 05月10日摘 要随着我国社会主义市场经济的建立,银行电子化建设迅速发展ATM自动取款机的数量不断增加和普及。因为ATM机具有自动取款功能和无人值守这一使用环境,使得利用ATM机犯罪的案件和纠纷不断增加。如何保证ATM机的安全运行,防范和降低银行与储户的风险,打击利用ATM机的犯罪,保护银行与储户的利益,是一个亟待解决的问题。随着社会经济的发展,人们不满足于仅仅只能从ATM上取钱

2、,很多时候还希望能方便的进行现金存款。特别是近年来信用卡使用量的快速增长,很多信用卡持卡人都希望能够方便的通过ATM进行还款,这就需要银行投放更多的存取款一体机。为加强ATM机的安全性,更方便的让客户进行操作,保护客户的利益,增强ATM自动取款机系统的分布处理能力,设计系统采用了Microsoft公司的较新技术WCF;在对当前ATM自动取款机系统进行分析后,结合客户不断增长的需求,将ATM系统主要分为登录模块、客户模块和管理模块;主要运用了面向对象和面向服务的技术对ATM自动取款机系统进行架构和具体的实现。最后,对所开发的ATM自动取款机系统进行了必要的测试。关键词:ATM(Auto Tell

3、er Machine);WCF(Windows Communication Foundation);契约;分布式系统;服务;数据库I目 录摘要I目录II引言11开发工具11.1 .NET11.2 C#语言21.3 SQL Server 200521.4 数据访问接口21.5 WCF32需求分析32.1 功能模块42.2 系统框架图43设计思想53.1 面向对象技术53.2 面向服务技术54系统设计64.1 概要设计64.1.1 系统数据流图64.1.2 数据库设计74.2 详细设计94.2.1 登陆模块设计104.2.2 客户模块设计114.2.3 管理模块及服务器设计174.2.4 关键代码

4、的设计195系统测试24结束语24致谢26参考文献27II基于WCF的ATM自动取款机系统的开发引 言 随着我国社会主义市场经济的建立、银行电子化建设迅速发展、ATM自动取款机的数量不断增加和普及,ATM机在方便百姓生活,活跃金融市场等方面起到了积极的作用。但正因为ATM机具有自动取款功能和无人值守这一使用环境,使得利用ATM机犯罪的案件和纠纷不断增加。如何保证ATM机的安全运行,防范和降低银行与储户的风险,打击利用ATM机的犯罪,保护银行与储户的利益,是一个亟待解决的问题。同时ATM系统应该更方便客户的操作,保护客户的利益。ATM机市场上增长最快的是存取款一体机,市场份额不断上升到。随着社会

5、经济的发展,人们不满足于仅仅只能从ATM上取钱,很多时候还希望能方便的进行现金存款。特别是近年来信用卡使用量的快速增长,很多信用卡持卡人都希望能够方便的通过ATM进行还款,这就需要银行布放更多的存取款一体机,预计存取款一体机仍将快速增长。ATM系统中常用术语:银行:一个金融机构,负责保存客户的账号信息。可以经授权访问账号。卡:储蓄卡,银行发行的可以在ATM终端交易的一种储蓄凭证介质。客户:在ATM系统上交易的银行账户拥有者。一个持卡人就是一个客户,可能拥有多个银行帐号。ATM:Auto Teller Machine,简称ATM;主要分为两部分:一部分是ATM服务器,另一部分是ATM终端。ATM

6、终端负责和银行卡持有者(客户)进行交互;ATM服务器负责处理交易,并记录每次交易的信息,一个ATM服务器可以同时连接多个ATM终端。账号:一张银行卡对应一个账户,卡号与账号之间是一对一关系。1 开发工具1.1 .NET.NET通过Visual Studio .NET为其提供了统一集成开发环境(Integrated Development Environment 即IDE),简化了程序员的编程工作,提高了模块的可重用性;集成了许多可视化辅助工具,实现了直观、可视的程序设计风格,方便地编和管理各种类,维护程序的源代码;大大简化了应用程序的开发,提高编程效率,同时使不同语言之间的数据和代码交换更加便

7、利;其封装了Windows的API函数、DATA、.Net、GDI函数,简化了编程时创建、维护窗口等许多复杂的工作。1.2 C#语言C#是当前功能最为强大可视化开发语言,它不仅支持传统的软件开发方法,更重要的是它支持面向对象和可视化的开发风格。因此又称作是一个集成开发工具,它提供了软件代码自动生成和可视化的资源编辑功能。开发ATM系统中使用较频繁的Winform中系统预定义控件主要有以下几种:(1)Button(按钮控件):产生某些命令或改变某些选项设置。(2)Textbox(编辑框控件):完成文字的输入输出双向操作,查看并编辑文字。(3)Label(标签控件):为控件提供运行时信息或说明性文

8、字。1.3 SQL Server 2005微软开发的SQL Server 2005是在Windows95/98/2000及Windows NT平台中应用的关系型数据库管理系统,可以通过各种数据库对象对数据进行控制和管理,不论客户创建的独立桌面数据库适用于个人、部门还是整个企业,SQL Server 2005都可以为管理数据生成易于使用的数据库,SQL Server 2005不仅拥有众多传统数据库管理软件所具备的功能,同时还进一步增强了与web页集成,能够更方便的共享跨越各种平台和不同客户级别的数据。引进四个新的数据挖掘运算法,改进的工具和精灵,它们会使数据挖掘,对于任何规模的企业来说,都变得简

9、单起来。SQL Server 2005旨在通过数据库加密、更加安全的默认设置、加强的密码政策和细化许可控制、及加强的安全模型等特性,为企业数据提供最高级别的安全性。1.4 数据访问接口数据访问对象接口引用了ADO.NET数据访问对象及OLEDB(OLE data Base,OLE数据库)。ADO.NET采用了专门为.NET平台设计的数据访问结构,就是离线访问模式。ADO.NET可以把数据库中的任何数据转换为XML。可以使数据传输轻松的通过防火墙。ADO.NET提供了DataSet新特性,支持回滚和前滚或修改操作代替等。1.5 WCF在Windows平台下,尤其是在.NET平台下开发面向服务的应

10、用程序,或者开发分布式系统,最佳选择就是WCF。WCF既支持具有互操作性的Web服务,也能够实现.NET客户端与.NET服务端的通信,提供了分布式事务的支持,同时在安全性上,它完全遵循了WS-*的标准;此外,它还支持队列服务,可以非常方便地利用消息队列完成异步操作与脱机调用。而这些功能,在微软公司以前推出的技术中都只是部分的得以实现。WCF引入了通道封装消息的通信细节,例如编码、事务处理、安全等,然后又通过引入绑定的概念,封装了通道的组成顺序与处理细节。最后,引入了独有的Endpoint元素,集成了地址、绑定和契约之间的“三位一体”,以最简单的方式定义和发布服务。WCF的运行过程如图1.1所示

11、。图1.1 WCF的运行过程2 需求分析根据系统需求,将ATM取款机系统主要分为客户端和服务器。服务器应用WCF技术提供相应的服务。客户端又分为:管理模块和客户模块。其中管理模块主要包括:配款、维护、统计和报表打印功能;客户模块主要包括:存/取款、转账、修改密码和查询等功能。2.1 功能模块根据系统安全性的要求,无论是管理员还是客户都必须先登录,然后才能进行相关业务的处理,按照面向对象和面向服务的编程思想,将登录功能单独设计为一个模块。ATM自动取款机系统的开发主要包括登陆模块、客户模块和管理模块等三个模块的设计。登陆模块:用以核对客户身份,使拥有权限的客户进入自己的账号进入系统进行存/取款、

12、转账、查询等操作或管理员进入后台进行维护等。客户模块:其主要功能是对满足客户存/取款、转账、查询等功能需求,方便客户的操作。管理模块:主要实现用以对ATM自动取款机系统的一些设置、日常维护、统计和报表打印等功能。2.2 系统框架图ATM自动取款机系统框架如图2.1所示。ATM自动取款式机系统客户模块身份验证管理模块身份验证存款取款查询余额转账修改密码统计报表管理维护配款图2.1 ATM自动取款式机系统框架图2.2 模块数据分析通过对ATM自动取款机系统需求分析,以及各模块之间数据传输分析,得出各模块涉及数据项主要有:客户的信息:卡号及密码,管理员登录名及密码,交易的类型、金额等。3 设计思想3

13、.1 面向对象技术面向对象技术是一个非常实用而强有力的软件开发方法。它具有许多特色。一是方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。二是从生存期的一个阶段到下一个阶段的高度连续性,即在一个阶段所用到的部分与在下一个阶段所使用的部分是衔接的,所使用的技术经过生存期每一阶段后不改变。三是把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)及面向服务体系结构(SOA)集成到生存期的相应阶段。对象(OBJECT)的基本成分。每个对象可用其一组属性和它执行的一组操作来定义。属性一般只能通过执行对象的操作改变。操作又称为方法或服务,在C+中成为成员函数,它描述

14、了对象执行的功能。类(CLASS)同数据结构和相同操作的对象的集合。类的定义包括一组数据属性和在数据上的某组合法操作。类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。在一个类中,每个对象都是类的实例(Instance),它们都可使用类中提供的函数。一个对象的状态则包含在它的实例变量中。继承(Inheritance)是使用已存在的(现存)定义作为基础建立新定义的技术。使用继承设计一个新的类,可以视为描述一个新的对象集合,它是现存类所描述对象集合的字集合。这个新的类可以认为是现存类的一个特化。面向对象的程序设计已成为软件界主流的程序设计思想和方法。传统的过程是程序设计本质的缺

15、陷是非常不自然、不符合客观世界本身的特点以及人们分析和思考问题的习惯。面向对象的程序设计一方面是为了满足日益复杂的程序开发所提出的,一方面为程序设计提供了一个更为合理和自然的分析和思考方式。3.2 面向服务技术SOA(Service-Oriented Architecture)既服务导向架构,是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实现的一种软件系统架构。该定义的学术味道较浓,但其核心思想并不难理解:让应用不受限于技术,让企业轻松应对商业服务变化和发展的需要。面向服务架构(SOA)是一种应用框架,它着眼于日常的业务应用,并将它们划分为单独的业务功能和

16、流程,即所谓的服务。SOA 使用户可以构建、部署和整合这些服务,且无需依赖应用程序及其运行计算平台,从而提高业务流程的灵活性。这种业务灵活性可使企业加快发展速度,降低总体拥有成本,改善对及时、准确信息的访问。SOA 有助于实现更多的资产重用、更轻松的管理和更快的开发与部署。在当今的业务环境中,变化是毫无疑问的,因此快速响应客户需求、市场机遇和外部威胁的敏捷性比以往任何时候都更显重要。SOA在本质上是一种分布式的架构方法,因此其治理需求比集中式环境更显重要。要获得必需的业务和技术适应能力,企业需要适当的功能、资产和流程。SOA 环境的治理目标就是要确保在这些功能、资产和流程中实现面向服务的战略。

17、SOA与Web Services之间的关系:Web Services并不一定要转向SOA,也并非所有的SOA都要基于Web Services,这两种技术方向之间的关系是非常重要的,并且它们是相互影响的。Web Services将使SOA能够为大型机客户所用;与此同时,SOA的最佳实践架构将有助于使Web Services获得成功。SOA不是一定需要 Web Services来实现,并且一个基于Web Services开发出来的应用也不代表就是一个基于 SOA 构架应用。Web Services只是服务实现的一个典型,是实现企业 SOA的一个组件(非必需组件)。SOA 为基于服务的分布式系统提供

18、了概念上的设计模式。Web Services则是基于标准的、可经济实惠地实现 SOA的一项技术。SOA将IT资源透过服务这样一个在业务上有重要涵义的概念来提供、共享,把IT与业务的距离更加拉近了一步。服务在涉及的层次上要比组件、函数、流程等更高,而且往往在业务上可以找到与之直接对应的概念或实体,例如报价、订单。服务打破了IT系统间的藩篱,就像一家公司的各个部门,平常各自扮演特定对内或对外服务的角色,但彼此间如果能有效地通过共通的语言及文字,进行良好的沟通,便能协力达成更大、更高的目标。4 系统设计4.1 概要设计4.1.1 系统数据流图系统流程图如图4.1所示。图4.1 系统数据流4.1.2

19、数据库设计(1) 数据表的结构cardInfo表:主要相关信息,包括:卡号,存储的货币类型,存款方式,开户时间、开启金额、存款、密码、是否挂失、客户ID号。其结构如表4-1。表4-1 cardInfo表结构字段名称字段类型字段大小说明约束要求cardIDchar20卡号必填,主健,银行的卡号规则和电话号码一样,一般前8位代表特殊含义,如某总行某支行等。假定该行要求其营业厅的卡号格式为:1010 3576 xxxx xxx开始,每4位号码后有空格,卡号一般是随机产生.curTypechar10货币种类必填,默认为RMBsavingTypechar8存款类型活期/定活两便/定期openDateda

20、tatime50开户日期必填,默认为系统当前日期openMoneymoney8开户金额必填,不低于1元balancemoney8余额必填,不低于1元,否则将销户Passchar6密码必填,6位数字,开户时默认为6个“8”IsReportLossbit1是否挂失必填,是/否值,默认为”否”customerIDint4顾客编号外键,必填,表示该卡对应的顾客编号,一位顾客允许办理多张卡号transInfo表:主要相关信息,包括:交易日期, 卡号, 交易类型, 交易金额, 备注。表结构如表4-2。表4-2 transInfo表结构字段名称字段类型字段大小说 明约束要求transDatedatetime

21、8交易日期必填,默认为系统当前日期cardIDchar4卡号必填,外健,可重复索引transTypechar19交易类型必填,只能是存入/支取transMoneymoney8交易金额必填,大于0remarktext16备注可选输入,其他说明userInfo表:主要相关信息,包括:顾客编号,开户名,身份证号,联系电话,居住地址。表结构如表4-3。表4-3 userInfo表结构字段名称字段类型字段大小说 明约束要求customerIDint4顾客编号自动编号(标识列),从1开始,主键customerNamechar8开户名必填PIDchar18身份证号必填,只能是18位或15位,身份证号唯一约束

22、telephonechar13联系电话必填,格式为xxxx-xxxxxxxx或手机号13位addressdecimal18居住地址可选输入(2) 存储过程为了加强系统的安全性,防止SQL注入攻击,存/取款、转账等功能采用了存储过程来处理,同时也提高了系统的性能。对客户的存/取款用一个存储过程根据是客户的操作类型(存款/取款)分别进行控制,如果是存款则为客户加上相应的金额,取款时要提供密码,密码正确则减去相应的金额,如果余额不足则则会调用了触发器,触发器触发事务,对刚才所有进行的操作进行回滚,并提示客户余额不足。对客户的转账也使用了存储过程进行相应的控制,首先要让转账一方进行登录,登录成功后才能

23、进行转账。转账的存储过程需要我们提供三个参数,转账方卡号、被转账方卡号以及转账金额。如果转账方金额不足,则会调用了触发器,触发器触发事务,对刚才所有进行的操作进行回滚,并提示客户余额不足。当所有条件满足时才会转账成功。(3) 触发器由于系统可能存在未知的错误以及客户的误操作,所以对客户的存/取款、转账功能等操作使用触发器进行相应的控制,触发中使用事务对系统进行控制,并对系统的未知错误和客户的误操作在数据库中进行必要的回滚,如有错误发生时则进行回滚,以保证客户和银行双方的利益,减少不必要的冲突。4.2 详细设计4.3服务器端框架图4.2客户端框架系统的后台数据库为SQL Server 2005,

24、开发平台为Visual Studio 2008;ATM系统客户端框架如图4.2所示,其中ATM_Form_Client是客户端系统的解决方案,当中的ATM_Client项目为客户端界机窗体(包括登录,主界面,取款等等),BankServiceBLL项目为调用WCF Service服务器;其中ATM_Form_Service是服务器端系统的解决方案,ATM系统服务器端框架如图4.3所示,BlankModel项目为实体层,BankServicesDAL项目为数据访问层,对数据库进行相关操作,主要是对数据库服务器的访问方法,BankServicesIDAL项目为数据库服务器的访问接口层,WCF Se

25、rvice就是在这一层中进行实现的。4.2.1 登陆模块设计要进行“登陆”模块验证就必须拥有该账号的信息:如:卡号、密码。如果身份正确的话就可以对系统中的取款、存款等相关功能进行操作。否则登录失败,停止在登录界面,如果三次密码错误,则在当天对此卡进行禁用。考虑ATM系统的安全性,将普通客户登录与管理员登录,在界面层和业务逻辑层上分别调用不同的登录方法。通过在界面选择身份后,会跳出不同的登录按钮,不同的按钮调用不同的逻辑层的方法。(1) 客户登录客户输入:IC卡卡号;客户密码。处理过程:将客户输入的信息传到后台服务器上,再在数据库服务器上进行查询操作;(首先客户输入的数据的格式的正确与否是在客户

26、端就进行判断的,这样心以减少服务器的负担,防止有不法分子恶意攻击,当只有在用户输入格式正确的数据,才会传递到服务器,进行处理。并将结果返回给客户端进行显示。)如果客户输入正确,除在ATM机终端显示客户登录成功,进入客户模块,同时在控制台显示“客户XXX在XXXXX进行了登录”,从而可监视各终端的运行情况,提高系统安全性和鲁棒性。如果客户输入错误,则可逐步进行提示;如卡号有误,则直接提示客户卡号有误,从而避免了客户须输入完所有内容后才能得错误提示,消费了客户的时间,提高了客户的体验。为提高系统的鲁棒性,同一卡号一天登录最多只能出现三次密码错误,如果连续三次登录错误或一天内有三次登录错误则该卡号当

27、日将禁止再登录,系统会在第二天将卡号恢复成正常状态。客户登录界面如图4.4所示。图4.4客户登录界面(2) 管理员登录管理员的登录大致与客户登录过程相似,同样是输入一个账号和一个密码,但管理员账号为不少于15位的不规则字符组成,与客户登录后进行的操作一样,可以对ATM客户端进行相应的维护、配款、打印客户端的报表。管理员进行入系统后的每一步操作都将记入数据库中。如果发现管理的错误操作,可以根据记录,发现是谁对ATM机进行的管理,追究责任到人。管理员的登录是在登录界面增加了“请选择身份”项,当选择管理员身份,会跳转到管理员登录的界面,然后输入账号和密码,把数据发送到服务器进行相应的验证,当验证就可

28、以进入管理界面,方便系统的后台调试与模拟。管理员的登录界面和客户的登录基本一样。4.2.2 客户模块设计客户模块:对储户的取款,查询余额、修改密码,转账的操作。(1) 主界面客户输入IC卡卡号、客户密码后,登录成功则进入主界面。主界面方便客户对存取款,转账,修改密码,查询余额等操作进行快速方便的操作,不需要对存取款,转账,修改密码,查询余额的操作都输入密码。加强客户的体验。如果客户在30秒内对任何一个界面没有任何操作,则返回到输入密码的界面。防止客户离开时忘记带走磁卡,防止不法分子进行恶意操作。当密码短时间内三次输入失败,则进行吞卡。尽力保证客户的利益。客户主界面如图4.5所示。图4.5 客户

29、主界面(2) 取款客户在主界面点击了取款按钮后跳入到取款界面。处理过程:从主界面跳入取款界面,进行取款。本界面中,为客户提供了方便的取款按钮(100,300,500,800,1000)。如果客户想自己输入金额,可以点击“其他”这个按钮,则跳出一个输入框(这时点击100、300等按钮时会进行相应的相加,相加结果放在输入框中,实现一个这个数的计算器,方便客户操作),客户根据自己的需要输入相应的金额,进行取款。当点击相应的按钮时,客户端会把相应的数据,传入到服务器,服务器进行的处理;如卡号余额不足,则会返回一条信息给客户端,提示客户余额不足。ATM机上的钞票是有限的,当ATM机中的钞票不足时客户是不

30、能进行取款的,当客户在取款时遇到这种情况,客户端是提示客户ATM机余额不足,请联系管理员,进行配款操作。最后当客户的操作满足:ATM的余额大于客户的余额大于客户想取出的钱数,那么则让客户取出客户所需要的金额。同时,我们还针对信用卡客户的一些服务,比如一个信用卡客户,在取款时想到进行透支,我们会根据客户的各项资料(信用度,抵押金,以前的还钱时间等)得到一个他可以透支的额度。让他可以进行相应额度的透支取款。为了防止客户的误操作,在客户点击按钮时,会对客户进行相应的提示(比如:客户按100元按钮,会提示客户“您需要取款100元吗?”)。加强与客户的的交互,增强客户体验。客户取款界面如图4.6所示。图

31、4.6 客户取款界面(3) 存款客户在主界面点击了存款按钮后跳入到存款界面。处理过程:从主界面跳入存款界面,进行存款。同样本界面中,为客户提供了方便的存款按钮(100,300,500,800,1000)。如果客户想自己输入金额,可以点击“其他”这个按钮,跳出一个输入框(这时点击100、300等按钮时会进行相应的相加,相加结果放在输入框中,实现一个这个数的计算器,方便客户操作),客户根据自己的需要输入相应的金额,进行存款。当点击相应的存款按钮时,首先ATM进行点钞,计算客户存入的金额,然后与客户在客户端输入的数据比对,相同时则将相应的数据传入到服务器进行的存款处理;如存入的金钱数与客户输入的金额

32、不同时,则会返回一条信息给客户端,提示客户“您存入的金额数与您输入的金额数不等,请点清后再进行存款操作”。如果存入的金钱数与客户输入的金额相同时,则把相应的金额存入到ATM中,并对数据库服务器上进行相应的处理,客户账号上加上相应的金额。然后提示客户“您的*金额已存入到你的账号中”,同时对ATM机里的金额进行更新。为了让信用卡客户不必在营业厅排队进行还款,对信用卡客户提供了在ATM上进行还款功能,节约了客户的宝贵时间。为了防止客户的误操作,在客户点击按钮时,会对客户进行相应的提示(比如:客户按100元按钮,会提示客户“您需要存款100元吗?”)。加强与客户的交互,增强客户体验。客户存款界面如图4

33、.7所示。图4.7 客户存款界面(4) 修改密码客户在主界面点击了修改密码按钮后跳入到修改密码界面。处理过程:从主界面跳入修改密码界面,进行修改密码。在此界面中要求客户输入原密码、新密码以及确认密码。每个一个输入对话框都有相应的验证。当客户输入原密码后,点击除了该对话以外的任何一个地方会验证客户输入的原密码是否正确,如果不正确则跳出对话框提示客户重新输入,当客户点击OK时,原密码的对话框清空,并获取焦点。如果正确则可以进行新密码的输入。同样客户输新密码后,点击除了新密码对话以外的任何一个地方会验证客户输入的新密码是否与原密码一样,如果一样则跳出对话框提示客户输入的密码和原密码一样,不安全,提示

34、客户重新输入,当客户点击OK时,新密码的对话框清空,并获取焦点。如果正确则可以进行确认新密码的输入。客户输确认密码后,点击除确认密码对话以外的任何一个地方会验证客户输入的确认密码是否与新密码一样,如果不一样则跳出对话框提示客户输入的密码和原密码不一样,提示客户重新输入,当客户点击OK时,新密码的对话框清空,并获取焦点。如果确认密码与原密码一致,则会把新密码写入到数据库,并提示客户密码已修改成功。客户修改密码界面如图4.8所示。图4.8 客户修改密码界面(5) 转账客户在主界面点击了转账按钮后跳入到转账界面。处理过程:从主界面跳入转账界面,进行转账操作。在此界面中要求客户输入需要转账的卡号、以及

35、转账的金额。当客户在转入对话框中输入转入卡号后。点击其他任意一处,会对输入的卡号进行判断,首先判断是不是本行的客户,如果是本行的则直接进行转账。如果不是本行,则提示客户是跨行转账,会产生手续费,询问客户是否继续,当客户点击OK时,会获取一个转账手续费比率,当客户在金额输入框输入金额后点击确定点。会根据比率计算出转账所用的费用,与转出的金额加在一起扣除。并会把客户转出的钱,转到相应的卡号上。当转出客户的余额不足时,则会在数据库中引发触发器,然后对这个转账操作进行回滚(交易表与客户表同时回滚),提示客户余额不足,无法转账。并在服务器上提示,客户的操作错误。客户转账界面如图4.9所示。图4.9 客户

36、转账界面(6) 余额查询客户在主界面点击了查询余额按钮后,跳入到余额查询界面。处理过程:从主界面跳入余额查询界面,显示客户卡上的余额。此界面中返回客户的卡号的余额。当客户在主界面点击查询按钮时,就对余额进行了计算,当客户跳到账户余额这一界面时,余额已经查询出来,然后直接返回在界面,让客户很快的就看到查询的结果。提高软件的效率节省客户的时间。增强客户的体验效果。客户余额查询界面如图4.10所示。图4.10 客户余额查询界面4.2.3 管理模块及服务器设计管理模块:用以对系统统计报表,配款,管理维护。(1) 系统维护管理员从登录界面登录成功后,进入管理员管理界面。处理过程:在管理员界面,选择到系统

37、维护。对ATM机的进行简单的维护。(2) 配款管理员从登录界面登录成功后,进入管理员管理界面。处理过程:在管理员界面,选择到管理员配款。从中输入要配的金额数。然后ATM进行点款,是否与管理员输入的金额进行对比,相同后自动放入到ATM机中,关上来,使客户继续使用。管理员配款界面如图4.11所示。图4.11 管理员配款界面(3) 打印报表管理员从登录界面登录成功后,进入管理员管理界面。处理过程:在管理员界面,选择到打印报表。管理可以选择需要打印的时间,选择好时间点击查看按钮,可以查看出所需要时间段ATM机所有有客户的存取款的操作的记录。然后要打印时,点击打印按钮,打印出表格。(4) 服务器基于WC

38、F的服务器的配置:首先要设置service的name,behaviorConfiguration;再设置host的baseAddress;然后设置endpoin的address、contract,binding,binding Configuration,设置endpoint 的MEX地址(表示元数据交换,是一个HTTP端占地址,用于获得服务信息。),identity的dns。再设置behaviors的behavior等属性。服务器配置完成后,ATM服务器运行后控制台输出如图4.12所示。图4.12 ATM服务器运行后控制台输出4.2.4 关键代码的设计(1) 将接口指定成一个WCF契约Ser

39、viceContract public interface ICardInfoService OperationContract int LoginByByCardIDPWD(string cardID,string CardPwd); OperationContract int UpdateCardPwd(string cardID, string pass); OperationContract Double GetBalance(string cardID); OperationContract int SaveMoney(string transType, string cardID,

40、 double transMoney); OperationContract int LoginByByAdminIDPWD(string adminID, string adminPwd); OperationContract int GetMoney(string cardID, double money, string type, string adminPwd); OperationContract int TransMoney(string cardIDout, string cardIDint, double money); OperationContract int QuotaM

41、anage(string adminNo,double money); OperationContract double GetQuotaMoney(); (2) 服务端配置 (3) 连接和访问数据库 连接数据库的语句 调用数据库访问语句private static readonly string connString = ConfigurationManager.ConnectionStringsbankDBConnectionString.ToString();(4) 数据库的存储过程代码往交易信息表transInfo中添加一条交易记录,同时会自动更新用户信息表CREATE TRIGGER

42、 trig_trans ON transInfo FOR INSERT AS DECLARE myTransType char(4),outMoney MONEY,myCardID char(19) SELECT myTransType=transType,outMoney=transMoney ,myCardID=cardID FROM inserted DECLARE mybalance money SELECT mybalance=balance FROM cardInfo WHERE cardID=myCardID if (myTransType=支取) if (mybalance=o

43、utMoney+1) update cardInfo set balance=balance-outMoney WHERE cardID=myCardID else begin raiserror (交易失败!余额不足!,16,1) rollback tran print 卡号+myCardID+ 余额:+convert(varchar(20),mybalance) return end else update cardInfo set balance=balance+outMoney WHERE cardID=myCardID print 交易成功!交易金额:+convert(varchar

44、(20),outMoney) SELECT mybalance=balance FROM cardInfo WHERE cardID=myCardID print 卡号+myCardID+ 余额:+convert(varchar(20),mybalance) (5) 转账的关键代码public int TransMoney(string cardIDout, string cardIDint, double money)int result = 0;using (SqlConnection conn = new SqlConnection(connString)SqlCommand cmd =

45、 new SqlCommand(proc_transfer, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue(card1, cardIDout); cmd.Parameters.AddWithValue(card2, cardIDint); cmd.Parameters.AddWithValue(outmoney, money); try conn.Open(); result = cmd.ExecuteNonQuery(); catch (Exception e) Consol

46、e.WriteLine(e.Message.ToString(); if (result != 0) Console.WriteLine(ntt用户0在1进行了转帐给了2 3元, cardIDout, DateTime.Now, cardIDint, money); return 1; else return 0; (6) 存/取款的关键代码 取钱或存钱的存储过程Create procedure proc_takeMoney card char(19),m money,type char(4),inputPass char(6)= AS print 交易正进行,请稍后. if (type=支取

47、) if (SELECT pass FROM cardInfo WHERE cardID=card)inputPass ) begin raiserror (密码错误!,16,1) return end INSERT INTO transInfo(transType,cardID,transMoney) VALUES(type,card,m) 程序中存钱的代码public int SaveMoney(string transType, string cardID, double transMoney)int result = 0, resultquota = 0;string sqladmin

48、quota = UPDATE AdminManage SET Money=Money+ + transMoney; using (SqlConnection conn = new SqlConnection(connString) try conn.Open(); SqlCommand objSqlComSave = new SqlCommand(proc_takeMoney, conn); objSqlComSave.CommandType = CommandType.StoredProcedure; objSqlComSave.Parameters.AddWithValue(card, c

49、ardID); objSqlComSave.Parameters.AddWithValue(m, transMoney); objSqlComSave.Parameters.AddWithValue(type, transType);SqlCommand objSqlComAdminquota = new SqlCommand(sqladminquota, (sqladminquo ta, 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222

50、22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222conn); result = objSqlComSave.ExecuteNonQuery(); resultquota = objSqlComAdminquota.ExecuteNonQuery(); catch (Exception e) Console.WriteLine(e.Message.ToString(); if (result != 0 & resultq

51、uota != 0) Console.WriteLine(ntt用户0在1进行了存款2元, cardID, DateTime.Now, transMoney); return 1; else return 0; 程序中取钱的代码public int GetMoney(string cardID, double money, string type, string adminPwd)int result = 0; int result2 = 0; using (SqlConnection conn = new SqlConnection(connString) string sqlout = U

52、PDATE AdminManage SET Money=Money- + money; SqlCommand cmd = new SqlCommand(proc_takeMoney, conn); cmd.CommandType = CommandType.StoredProcedure; SqlCommand cmdadmin = new SqlCommand(sqlout, conn); cmd.Parameters.AddWithValue(card, cardID); cmd.Parameters.AddWithValue(m, money); cmd.Parameters.AddWi

53、thValue(type, type); cmd.Parameters.AddWithValue(inputPass, adminPwd); try conn.Open(); result = cmd.ExecuteNonQuery(); result2 = cmdadmin.ExecuteNonQuery(); catch (Exception e) Console.WriteLine(e.Message.ToString(); if (result != 0 & result2 != 0) Console.WriteLine(ntt用户0在1进行了取款2元, cardID, DateTim

54、e.Now, money); return 1; else return 0; (7) 客户端配置 5 系统测试系统开发过程中,为检测各模块功能及模块之间的调用和数据的传输情况,首先在Visual Studio 2008开发环境下应用其自带的测试工具对各个方法和模块进行了黑盒测试、性能测试等;并通过把服务器和客户端分布在不同的电脑上进行了最终测试,系统的取款、存款、余额查询、密码修改、转账等功能都以实现。数据修改正确。测试环境:服务器配置(ACER-Aspire 5584,系统Windows Server 2008,CPUIntel Core2 Duo processor T5600(1.83

55、GHz),内存1G、DDR2,系统类型32位操作系统);客户端配置(华硕X81,系统Windows XP,CPUIntel Core T5750(2.0GHz) ,内存1G、DDR2,系统类型32位操作系统)。结束语:通过这次的毕业设计,不仅拓宽了自己的知识面,还在实践过程中巩固和加深了所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时专业水平也有了很大的进步。在该系统的开发过程中积累到了不少的经验,特别是刚接触WCF不久,自己通过翻阅资料,上网查询,以及老师同学的帮助指导下完成了该系统的设计。经过一段时间的努力,“基于WCF的ATM自动取款机系统的开发”终于完成,受益颇多,只有在不断的学与用的过程中,才能真正不断地汲

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!