已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
天津科技大学2010届本科生毕业设计第一章 前言第一节 介绍本课题的目的和意义随着时代的进步,生活节奏的加快,越来越多的人进入银行。在银行业务量爆炸式增长的时候,atm已经开始悄悄的走入人们的生活。atm机作为银行服务的扩展终端,大大的提高了银行离柜业务办理能力,24小时为客户提供最基础的银行服务,使得银行客户在面对长长的队伍时有更加主动的选择。atm设备已经成为我们日常生活中不可或缺的重要设备。因此我决定学习了解atm设备的工作愿意,探究atm机的工作机制,并自行模拟atm系统能。第二节 国内外发展概况及存在问题随着银行业务的扩展,业务量的增长,人们的生活和银行连接的越来越紧密,这个时候银行的长龙开始出现,银行方面不得不投入巨大的来那个人难以想象的人力和物力来解决个人储户的存取款的问题,在1969年汉华银行(chemical bank)的一个广告拉开了这场革命的序幕: “我行将在 9 月 2 日早晨九点开门后永不关门!”汉华银行在纽约长岛北村街 10 号的洛克维尔中心(rockville centre)设有一家分行。从那天起,凡持该行带磁条塑料卡的客户再也不用排队等候银行出纳员为他们兑现支票。银行在大街的一面墙上安装了一台机器,客户可以通过它随时取款。这个时候第一台真正意义上的atm机投入使用,一直到现在,在我国在大街小巷也能看到各个银行的atm柜员机在工作。相比国外国内的atm机起步较晚,atm(auto teller machine)称自动取款机,实质是一种集光、机、电技术的银行业自动化设备。我国的atm是伴随着银行卡业务的成长而逐步发展起来的,为了满足持卡人在银行营业时间外也能够用卡存、取款,银行投资并安装了atm,以此提供24小时的自助服务。1987年2月,我国第一台atm在广东珠海投入使用。1993 年我国“金卡工程”启动后,国内银行对atm 需求激增。1998年,全国atm突破2万台。进入21世纪后,atm数量速度迅猛。到2007年底,中国联网atm机已经达到12.3万台,近5年国内atm设备保有量实现了年均20.22%的复合增长,整体atm机市场保有量已经达到13.8万台,预计2011年会达到20万台。atm是社会发展过程中电子技术与银行业务完美结合的产物之一,信息技术的创新推动着atm向更加智能化和人性化的方向发展。现在的atm机使用方便、界面更加友好,为广大客户提供了一种便捷的自助服务方式,不但增强了银行服务的灵活性,而且提升了银行的整体形象。现在国内主要生产厂家有:广电运通、深圳怡化;广州御银、广州广利、深圳新达通等。虽然起步较晚,但是发展势头良好,在短短的几年之内实现了年均20%多的增长率。随着atm机功能的复杂化,界面越来越良好。相信会有更加良好的发展前景当然在飞速发展的同时也存在很多的问题(1) 没有树立正确的atm经营发展理念 大部分商业银行是将atm作为形象宣传或者营业网点的补充,没有树立起一种新的经营理念,对atm缺乏科学管理和经济效益的考核,导致银行在确定atm安装选点时没有考虑经济效益,更多地考虑银行形象和减轻网点人员的工作压力。(二)各商业银行对atm管理不规范首先是银行间管理差距较大,有些商业银行的形象设计不够人性化。有的银行功能齐全、形象统一,设备维护保养好;但也有的银行功能单一、外观五花八门,各类操作标识和提示牌随意张贴。其次,对于因atm的设备问题导致客户遇到错账、出钞故障等的解决处理也没有统一的服务承诺。(3) atm布局不合理 从atm交易量分析,业务量较大的地区主要集中在经济发展热点地区、繁华商业区、大型居民社区、大型批发市场周边,经常出现排队取款的现象。而偏远地区和城填的交易量较小。应该实际状况进行调整,交易量多的地区可以多装,少的地区可以少装或不装,以讲究实效、降低交易成本。(4) 目前atm功能单一、技术安全还待进一步提高 大多数的atm仅有修改密码、查询、取现等功能。随着中间业务的发展,atm应开发多种业务,既方便客户也减轻柜台压力。此外,各地atm技术故障事件屡见报端,如重庆观音桥步行街邮政储蓄atm机取出48张同号百元假钞事件、“许霆案”等第三节 相关技术一 c#3.0技术简介c#3.0在原有的基础上改变了很多,再加上和vs2008一起推出,绝对有理由进入到一般编程爱好者的视野之中第一个特性:隐式类型化本地变量这个特性非常简单,有些javascript的影子,我们可以统一使用使用var关键字来声明局部变量,而不再需要指明变量的确切类型了,变量的确切类型可通过声明变量时的初始值推断出来。这样一来,可以大大简化我们声明局部变量的工作量了。第二个特性:匿名类型有些时候我们需要临时保存一些运算的中间结果,特别是当这些中间结果是由多个部份组成时,我们常常会去声明一个新的类型,以方便保存这些中间结果。表面上看起来这很正常,而细想之后就会发现,这个新类型只服务于这个函数,其它地方都不会再使用它了,就为这一个函数而去定义一个新的类型,确实有些麻烦。第三个特性:隐式类型化数组这个特性是对隐式类型化本地变量的扩展,有了这个特性,将使我们创建数组的工作变得简单。我们可以直接使用new关键字来声明数组,后面跟上数组的初始值列表。在这里,我们并没有直接指定数组的类型,数组的类型是由初始化列表推断出来的。 第四个特性:对象构造者我们在声明数组时,可以同时对其进行初始化,这样就省去了很多麻烦,但是在创建类的对象时,这招可就不灵了,我们要么调用该类的构造函数完成对象的初始化,要么就手工进行初始化。这两种方法都不太方便,使用构造函数来对对象进行初始化时,我们为了某种灵活性,可能需要编写构造函数的多个重载版本,实在是麻烦。c#3.0中加入的对象构造者特性,使得对象的初始化工作变得格外简单,我们可以采用类似于数组初始化的方式来初始化类的对象,方法就是直接在创建类对象的表达式后面跟上类成员的初始化代码。第五个特性:集合构造者我们可以在声明数组的同时,为其指定初始值,方法是直接在数组声明的后面跟上初始值列表。这样就使数组的初始化工作变得简单,而对于我们自己创建的集合类型,就无法享受到与普通数组一样的待遇了,我们无法在创建自定义集合对象的同时,使用数组的初始化语法为其指定初始值。 c# 3.0中加入的集合构造者特性,可使我们享受到与普通数组一样的待遇,从而在创建集合对象的同时为其指定初始值。为了做到这一点,我们需要让我们的集合实现icollection接口,在这个接口中,完成初始化操作的关键在于add函数,当我使用初始化语法为集合指定初始值时,c#编译器将自动调用icollection中的add函数将初始列表中的所有元素加入到集合中,以完成集合的初始化操作。第六个特性:lambda表达式c# 2.0中加入的匿名代理,简化了我们编写事件处理函数的工作,使我们不再需要单独声明一个函数来与事件绑定,只需要使用delegate关键字在线编写事件处理代码。而c# 3.0则更进一步,通过lambda表达式,我们可以一种更为简洁方式编写事件处理代码,新的lambda事件处理代码看上去就像一个计算表达式,它使用=符号来连接事件参数和事件处理代码。我可以这样写:someevent += 事件参数 = 事件处理代码;第七个特性:扩展方法当我们需要对已有类的功能进行扩展时,我们通常会想到继承,继承已有类,然后为其加入新的行为。而c# 3.0中加入的扩展方法特性,则提供了另一种实现功能扩展的方式,我们可以在不使用继承的前提下实现对已有类本身的扩展,这种方法并不会产生新的类型,而是采用向已有类中加入新方法的方式来完成功能扩展。在对已有类进行扩展时,我们需将所有扩展方法都写在一个静态类中,这个静态类就相当于存放扩展方法的容器,所有的扩展方法都可以写在这里面。而且扩展方法采用一种全新的声明方式:public static 返回类型 扩展方法名(this 要扩展的类型 sourceobj ,扩展方法参数列表),与普通方法声明方式不同,扩展方法的第一个参数以this关键字开始,后跟被扩展的类型名,然后才是真正的参数列表。第八个特性:linq查询表达式c# 3.0中加入的最为复杂的特性就是linq查询表达式了,这使我们可直接采用类似于sql的语法对集合进行查询,这就使我们可以享受到关系数据查询的强大功能。linq查询表达式是建立在多种c# 3.0的新特性之上的二 ado.net连接数据库技术1、 dataset许多的工作都是围绕一个对象dataset来展开工作的,dataset是从数据库查询得来的缓存信息。dataset最革命性的特点是它是无连接的并且同时可以存储多个表并且可以定义他们之间的关系。2、 无连接特性无连接特性是最重要的特点,在先前的连接都是在代码工作的时候保持数据库连接,可以保持即时的更新但是它限制了连接的数目。无连接就不会出现这样的问题。但是无连接也会带一些新的问题,它很容易造成不一致的更新。但是提供了一套特性来解决这些问题。3、 xml集成a很好的支持xml,当你用dataset对象时这个事实可能不是很明显,那是因为dataset的内置方法和属性可以很好的完成你需要管理的数据。但是如果你深入研究,你将会发现你接触dataset中的信息是作为一个xml文档。你甚至可以通过修改xml来修改值和删除行和增加记录,这个dataset会立马更新。a 的功能主要依赖于一小部分核心对象的集合。可以将这些对象分成两部分:1、容纳和管理数据的对象(比如dataset,datatable,datarow,datareleation)2、用来连接某些数据源(比如 connection,command,datareader数据容器对象是完全通用的,无论你使用什么数据源,一旦你提取了数据,都是用同一个dataset类来存储。 第二组对象存在很多不同的形式。数据连接对象的每一个集合都被称为 data provider. data providers都是自定义的,所以每一个都用自己最好的表现方式来连接它形相应的数据源。比如说sql server data provider是为sql server 7或以后版本而设计的。在内部,它用sql serverstds(tabular data stream)协议来进行通信,这样就能保证他最好的表现形式常用的编程语言有c,c+,java等。(一) cc语言的特点 1. 简洁紧凑、灵活方便 c语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 c 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。 2. 运算符丰富 c的运算符包含的范围很广泛,共有种34个运算符。c语言把括号、赋值、强制类型转换等都作为运算符处理。从而使c的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。3. 数据结构丰富c的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外c语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。4. c是结构式语言 结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。c语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 5. c语法限制不太严格、程序设计自由度大 一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而c语言允许程序编写者有较大的自由度。 6. c语言允许直接访问物理地址,可以直接对硬件进行操作 因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。7. c语言程序生成代码质量高,程序执行效率高 一般只比汇编程序生成的目标代码效率低1020%。 8. c语言适用范围大,可移植性好 c语言有一个突出的优点就是适合于多种操作系统, 如dos、unix,也适用于多种机型。用法补充:c语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用c语言明显优于其它高级语言,许多大型应用软件都是用c语言编写的。c语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言(二)java1 面向对象:其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。 所有面向对象编程语言都支持三个概念:封装、多态性和继承,java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。java语言的封装性较强,因为java无全程变量,无主函数,在java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,java也提供了相应的对象类型以便与其他对象交互操作。 2 可移植性:就是在这个系统上作的程序经过一次编译后可以移植到别的系统上解释执行,只要经过简单的粘贴和复制就行了,不影响程序的效果3 安全性:在 iseries 服务器上运行的大多数 java(tm) 程序是应用程序,而不是 applet,所以“砂箱”安全性模型对它们不起限制作用。从安全性的观点看,java 应用程序所受的安全性限制与 iseries 服务器上的任何其它程序相同。要在 iseries 服务器上运行 java 程序,您必须对集成文件系统中的类文件具有权限。程序一旦启动,它就在该用户权限控制下运行。 您可以使用沿用权限来访问具有运行程序的用户的权限和程序拥有者权限的对象。沿用权限临时地将用户原先无权访问的对象的权限授予用户。4 并发性:java支持多线程技术,就是多个线程并行机制,多线程是java的一个重要方法,特别有利于在程序中实现并发任务.java提供thread线程类,实现了多线程的并发机制.然而,程序的并发执行必定会出现多个线程互斥访问临界资源的局面,因而并发系统解决的关键就是对临界资源的管理和分配问题,而在进行临界资源分配时有两方面需要考虑,即安全性和公平性.文中首先讨论了多线程并发系统中的安全性与公平性问题,指出安全性与公平性在并发系统中访问临界资源时的重要性.并通过火车行驶单行隧道的实例,演示各种条件下的行驶情况来进一步说明该问题。(三)rubyruby语言的主要特点如下。1 纯的面向对象语言在ruby中,一切皆是对象。下面举一个例子来更直观地说明ruby语言的这一特点。在java中,求一个数的绝对值的代码如下。int c = math.abs(-20);而在ruby语言中,一切皆是对象,也就是说“-20”这个数也是一个对象,因此,求一个数绝对值的ruby代码形式如下。c = -20.abs这样的代码编写方式是不是更形象一些呢?2解释型脚本语言ruby 语言是解释型脚本语言,它既有脚本语言强大的字符串处理能力和正则表达式,又不失解释型语言的动态性。一方面,在最初设计ruby语言时,ruby的研发者松本行弘考虑到文字处理方面的需要,他借鉴了perl语言在文字处理方面的成功经验。另一方面,松本行弘将ruby语言设定为一种解释型语言,ruby 的动态性使得由ruby语言编写的程序不需要事先编译即可直接运行,这为程序的调试带来了方便。同时,这一特点可以实现开发过程中的快速反馈。3其他特点(1)动态载入。可以在运行时候重定义自己,类也可以在运行时继承或取消继承。(2)自动内存管理机制。(3)多精度整数。(4)迭代器和闭包。(5)开源项目。有大量活跃的社区支持ruby语言(四)c+ c+语言既保留了c语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。用c+编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢10%20%。c+语言具有以下特点:(1) c+是c语言的超集。它既保持了c语言的简洁、高效和接近汇编语言等特点,又克服了c语言的缺点,其编译系统能检查更多的语法错误,因此,c+比c语言更安全。(2) c+保持了与c语言的兼容。绝大多数c语言程序可以不经修改直接在c+环境中运行,用c语言编写的众多库函数可以用于c+程序中。(3) 支持面向对象程序设计的特征。c+既支持面向过程的程序设计,又支持面向对象的程序设计。(4) c+程序在可重用性、可扩充性、可维护性和可靠性等方面都较c语言得到了提高,使其更适合开发大中型的系统软件和应用程序。第二章 系统概述本atm机模拟管理系统主要实现atm机的取现、查询、转账、修改密码功能。 第一节 系统及需求分析一 系统需求:通过调查,要求系统要有以下功能:(1) 由于操作人员的计算机知识水平参差不齐,要求有良好的人机交互界面。(2) 信息显示格式清晰,达到一目了然的效果。(3) 按钮的位置尽量在醒目位置。(4) 方便数据查询,支持多条件查询和模糊查询。二 可行性分析:经过调查、研究、分析、计算,在atm机模拟系统中的应用已经条件成熟,我将从以下几个方面总结系统开发的可行性,就具体情况如下:1技术可行性以windows为操作系统,运用sql server2000的数据库技术,开发以windows xp为用户的操作平台,界面友善、功能齐全的atm机模拟系统。新系统的运行硬件环境pc机,当用户使用系统时,通过正确的用户名及密码进入系统,进行数据库的维护操作和运用。2经济可行性一方面,新系统中有好的人机界面和更强劲的功能支持,会使管理人员的工作进一步提高,从而节省人力、物力,进而提高经济效益;另一方面,系统开发成本低,现有pc机即可提供该系统开发工作需要的所有硬件设备环境。3操作可行性主要使用简单的几个按钮,还有数字键来进行操作,方便简洁。能做到一目了然。第二节 系统设计的背景随着时代的进步,社会生产力高速发展,新技术层出不穷,信息量急剧膨胀,整个人类社会已成为金融化信 息化的社会,并开始朝着自动化智能化发展。以往人们去银行存款取款进行各种财务处理都必须通过柜台,随着越来越多的人们进入银行,使用银行的服务,使银行出现了工作效率低,顾客等待时间过长等等问题,既加大了银行工作人员的工作量,又使得人们享受银行服务的质量大幅度降低,所以银行交易的自动化智能化已经成为了一个不可逆转的趋势,而且必将成为各个银行今后发展的重点。atm机作为银行服务的扩展终端,大大的提高了银行离柜业务办理能力,24小时为客户提供最基础的银行服务,使得银行客户在面对长长的队伍时有更加主动的选择。atm设备已经成为我们日常生活中不可或缺的重要设备。因此我决定学习了解atm设备的工作愿意,探究atm机的工作机制,并自行模拟atm系统能。第三节 系统的功能简介经过对比真实的银行提款机系统,同时方便系统程序的使用者,在经过分析后,本系统需要实现以下的几种任务:1.两种语言选择:可以选择中文和英文两种语言服务。2.数据库管理功能:提供一个可直接在前台管理用户信息的界面。3.身份认证:每个用户对应自己的登录口令。不能修改和查看他人帐号的内容。4.密码修改:用户可以对自己的账户口令进行修改。5.取款:辨认用户输入的取款金额是否正确。6.存款:辨认用户存入的金额是否正确。7.转帐:与系统中其他用户进行转账,需要对象用户同样存在于数据库中。8.查询余额:查询自己的余额。9.查询交易明细:用户可以查询自己账户的过往操作记录,并打印。以上是本系统在功能呢方面的需求,根据这些需求设计了各个功能模块,各功能模块的详细设计及实现将在以后章节中进行详细的分析和介绍。第四节 系统开发的目标在对现有系统和现状认真调查分析的基础上,明确了atm机模拟系统工作本身存在的问题和建立管理信息系统的初步要求,进一步研究确定新系统的开发目标如下:1 按照管理信息系统的原理和方法,采用成熟的信息技术和手段,支持atm工作的全过程,提高了银行处理业务的能力,提高管理效率。2 针对现代计算机广泛应用的情况以及数据的封闭性,atm机模拟系统基于windows系统研制、设计和开发。3 考虑经费等原因,新系统使用pc机和现有其他打印设备以节省资金,降低成本。4由于这是一个模拟系统所以对安全性方面的考虑较差,数据库为了方便并没有采取加密方式,实际应用的时候应当注意安全性方面。第三章 系统分析第一节 业务流程分析 windows xp是时下最流行的电脑操作系统稳定性安全性都非常不错,而随着atm提款机逐步采用个人电脑,以及性能的升级,winxp也有了可能成为这些提款机的操作系统,所以本次系统也在winxp下进行开发。由于需要开发出前台客户友好界面及后台数据库系统,而对于前台只要能满足其界面开发需要即可,所以我采用了相对简单易用并且功能强大的vb6.0,后台数据库则采用了与之相连方便且功能同样强大的sqlserver2000。采用以上两个开发软件完全能够满足atm模拟系统的开发需要。系统主要是由前台(客户操作界面)与后台(数据库)两个部分组成:业务流程图:用户登陆 身份验证选择服务查询余额取款转账修改密码查询明细退出存款选择语言管理登陆管理界面图3.1 影院管理系统业务流程图第二节 数据流程分析数据流图是在对系统分析调查的基础上,以系统的科学性、管理的合理性、技术的可行性角度出发,将信息处理功能和彼此之间的联系,自顶向下、逐层分解,从逻辑上精确的描述具有的数据加工功能、数据输入、数据输出、数据存储及数据的来源和去向。影院管理系统经划分出各子系统及其各自的功能,以及相互联系,绘制出的数据流图如下:影院管理系统数据流图:用户atm机模拟系统用户数据密码正确修改图3.2 atm机模拟系统顶层数据流图第四章 系统设计第一节 网站结构模块设计1)系统前台设计前台部分整个代码程序采用一个主模块,在里面定义程序全局变量,把各种功能函数写入其中,每个界面制作一个独立窗体,在各个窗体代码中来调用主模块中的各个函数来,来实现相应功能。具有类似功能的界面之间采用了窗口的复用,如返回错误窗口的form3能够根据各个功能返回的不同错误来显示相应的错误信息。同时前台提供两种语言界面的选择。 在控制界面语言的选择时用到两种方式,一种是已经写好中文界面,当选定语言种类为英文时,通过变量控制界面语言换为英文。另一种是只有界面的框架,没有已经写好的内容,一开始登陆的时候选择哪种语言,就给界面赋值为哪种语言。2)后台数据库设计经过充分考虑,认为系统并不需要非常复杂的数据库系统就能够达到模拟atm系统的效果,所以建立了一个名为ayuatm的sql服务器,创建了名为user的数据库,用户登陆名为sa密码为空,并在odbc数据源中将user数据库添加进去。其中实际上只运用到两个表,一个用户信息表和一个用户操作表。图2-2-1用户信息表用户信息表(如图2-2-1)用以存放用户的卡号,密码,存款金额等信息,由于该系统只是为了模拟运用,故对安全性的要求并不高,所以密码采用了明文方式存放,便于使用与查看。本次模拟系统同时还具有创建新用户的功能,可以通过管理界面对后台的数据库进行简单的管理,如添加和删除用户。当然现实中的atm机的这项功能肯定是不对普通用户开放的,银行的数据全部存在于分行的计算机中,atm只是与银行数据库的一个交互式作用。 图2-2-2用户操作表用户操作表(如图2-2-2)则用来记录用户在atm机上所使用的服务,它包括了所有用户对自己账户的操作信息,包括时间,操作类型,金额,转帐卡号,成功与否等等。用户查询明细与打印清单的功能就是通过搜集检索这张表来实现。同时管理人员也可以从这张表上很方便的查阅用户使用情况。当然,真实的银行atm系统,其后台的数据库系统肯定是十分庞大的一个系统,对保密性的要求也非常的高,在这次的模拟中当然不可能达到那样的要求。 系统功能的实现系统功能的实现包括18个窗口文件和一个模块文件,每个窗口分别实现各个实际功能,以及主要功能函数的调用。模块里定义窗口中使用的各种自定义函数,包括身份验证函数checkuser、修改密码函数changewd、操作写入数据库函数insertdatabase、取款函数takemoney、存款函数save、余额查询函数qurey、转账函数trans和trans2。具体函数实现方式在各个窗口中会具体来说明。重要全局变量在程序设计时,一些全局变量发挥了重要的作用。下面介绍其中起到关键作用的部分变量。整型变量i是本系统实现中英文界面的重要变量,i=2代表中文、i=1代表英文,欢迎界面(图3-2-1)选择语言时,会将i赋予相应的值,以实现中英文的功能。若不设置这个变量,每个界面的功能都要有两个窗口来实现,代码重复,功能相同。i的存在不仅代表中英文界面的基本成型,更重要的是简化了程序代码,将窗口数量缩减了一倍,代码更加简洁优化。字符串型变量j的每个值代表着系统中的每个操作,j=1代表取款操作,j=2代表修改密码操作,j=3代表转账操作、j=4代表查询余额操作、j=5代表查看交易清单操作、j=6代表存款操作。j的值具体应用于用户操作表的插入中,每次操作将插入代表其操作内容的信息,是变量文字的很好的相互转化媒介。字符串型变量u,这是登陆验证、信息查询等各种操作安全行的重要变量。通过登陆时输入的卡号值赋给u,之后的操作都将围绕这个卡号来运行,保证每个用户只能对自己相应的卡号来进行操作,不能进入到其他人的页面,也不能对其他用户的信息查询和修改。 欢迎界面实现 在欢迎界面(图3-2-1)我们可以自由的选择两种语言,分别为我们最常用的中文和英语,语言种类选择后,通过上述变量i对接下来的操作区分中英文。任意点击一种服务都将进入登陆界面。由于中英文仅是提示语言不同,功能实现完全相同,以后功能介绍时仅以中文界面为例。点击中文按钮i值赋予2,点击english按钮i将被赋予1并进入相应语言的登陆界面进行操作。管理系统也是由此窗口进入,具体功能将在后面进行介绍。退出系统将结束程序运行。图3-2-1欢迎界面登陆的实现 下面请看登陆界面:图3-3-1登陆界面(中文)图3-3-1所示的就是登陆界面的窗口,用户应在相应的textbox中输入自己的卡号和密码。密码和卡号的格式是受限的,卡号为8位,密码为6位,点击确认按钮时,将实现对其的检测,若不符合条件则进入错误输出界面form3,显示相应的错误信息。重输按钮将textbox内容清空,语句为text1.text=”。本窗口要重点说明的是模块中验证身份函数checkuser函数checkuser函数的代码如下:public sub checkuser() dim strr as stringset con = new adodb.connection /设置con为新的ado连接对象strr = provider=sqloledb.1;password= ;persist security info=true;user id=sa;initial catalog=user;data source=(local) /这里采用的是sql oledb应用接口con.open strru = form2.text1.textstr = select 密码 from 用户信息 where 卡号= & u & /只打开密码列set rs = new adodb.recordsetrs.open str, con, adopendynamic, adlockpessimistic /recordset对象的打开语句 动态游标 悲观锁无用户情况if rs.eof = true then /未查找到用户,当前记录被定位于最后一条记录后面。当前记录指针无效 if i = 2 then form3.show form3.label1.caption = 没有此用户,请检查并重新输入! u = form2.text1.text = form2.text2.text = else form3.show form3.label1.caption = wrong customer! u = form2.text1.text = form2.text2.text = end if exit sub /没有此用户则退出不再进行以下步骤重新输入end if密码错误情况if trim(rs.fields(0) = trim(form2.text2.text) then /检验密码是否相同就一列所以0 form4.show rs.close /关闭记录集 unload form2else if pcount 2 then pcount = pcount + 1 form3.show if i = 2 then form3.label1.caption = 密码不正确,请重新输入! elseif i = 1 then form3.label1.caption = incorrect password,please try again! end if form2.text2.text = else form3.show if i = 2 then form3.label1.caption = 由于您已经输错三次密码,您的卡暂时由本行保管请您于明日拿身份证来领取! elseif i = 1 then form3.label1.caption = your card have been eaten ,please take it tomorrow end if pcount = 0 /置成原值 unload form2 form1.show form3.setfocus end ifend ifend sub此页面的label1,label2,command1,command2,command3的caption默认都为空,通过i的赋值而变换中英文的显示。这个方法在后面的窗口也多有应用,能够极大的减少页面的使用量,我称之为窗口的复用,将在本章的最后一节详细的介绍。主服务界面实现下面介绍主服务界面:图3-4-1 服务界面在主界面中(如图3-4-1)有5个服务按钮,设置了一个整型变量j,在点击选择各种服务的同时,j也被赋予了不同的数值,用以后面记录用户的操作信息,写入数据库。j的赋值方式采用的是option控件,若optinon.value=ture代表选中相应操作,则将j置成对应的值。j=1代表取款操作,j=2查询操作,j=3代表转账操作、j=4代表修改操作、j=5代表退卡操作。同时这里也使用了如登陆界面使用的两种语言的选择。查询余额功能的实现查询功能的实现相对来说就比较简单了,直接连接数据库,搜索到相应的数据后输出到文本框中即可(如图3-5-1)。在主模块中的查询函数为query函数:query函数的代码为:public sub query() /查询余额dim str2 as stringstr2 = select * from 用户信息 where 卡号= & u & set rs = new adodb.recordsetrs.open str2, con, adopendynamic, adlockpessimistic /第一个函数已经定义form8.label5.caption = rs.fields(金额)call insertdatabase /查询计入操作明细中end sub图3-5-1 查询界面取款功能的实现取款页面如图3-6-1所示。图3-6-1 取款界面取款函数相对于其他函数就相对复杂一点,因为有很多情况需要判断,因为atm机只能提供面值100元的人民币,所以输入的取款金额只能是100的倍数,实现方法就是对100求余。还需要判断所取金额是否大于卡上的余额,余额不足那也是没法成功取款的。其次单次取款金额不得大于3000元。用户取了一定数量的钱后还需要把新的数据重新写入数据库。界面的实现方面可以直接输入金额,也可点击快捷取款按钮,金额都会直接显示在textbox中,整个窗口textbox为唯一接口,与函数和数据库相连。下面具体列出模块中的takemoney函数的伪码:public sub takemoney()建立数据库连接dim str1 as stringstr1 = select * from 用户信息 where 卡号= & u & set rs = new adodb.recordsetrs.open str1, con, adopendynamic, adlockpessimistic 金额= form5.text1.text if 金额输入为空 then 标记操作失败 form3显示出错信息请您正确输入金额! elseif 输入金额不是100的倍数then 标记操作失败 form3显示出错信息 请您正确输入金额! elseif 数据库中用户u的余额 取款值 then 标记操作失败 form3显示出错信息 金额不足! elseif 单次取款超过3000 then 标记操作失败 form3显示 单次取款不得超过3000 else 取款金额符合操作 标记操作成功 数据库中用户余额更新为原值减去取款值 call insertdatabase 把操作插入用户操作表 form9显示 交易成功,谢谢您的使用,请拿好您的钞票! end iftakemoney代码中的insertdatabase函数是将相应的操作内容以及成功与否加入到用户操作表中。insertdatabase的伪码为public sub insertdatabase()str = select * from 用户操作表set rs = new adodb.recordsetrs.open str, con, adopendynamic, adlockpessimisticif j为相应操作值 and k所标志的操作成功或不成功 then rs.addnew rs.fields(卡号) = urs.fields(操作) = j对应的操作值rs.fields(时间) = nowrs.fields(取款金额) = val(form5.text1.text)rs.fields(是否成功) = k所标识的成功或不成功rs.updaters.closeend sub转账功能的实现转帐功能要求用户输入对方卡号及转帐金额,并且对方卡号也必须是在数据库中存在的卡号,否则会出错,这里对数额上没有要求,并不要求是整数,可随意输入转帐金额。转账界面如图3-7-1所示: 图3-7-1 转账界面在程序实现中,同样要对用户输入的信息要验证其正确性,对方卡号必须真实存在,所输入金额不得超过卡上金额等等。输入转入用户卡号时如果输入错误,不同的错误也会显示出不同的结果。如当输入的转入用户账号与自己的账号相同时就显示“操作错误,同账户不能转账!”转账的函数trans伪码如下: public sub trans()dim str3 as stringtranscard = form7.text1.texttransmoney = form7.text2.textstr3 = select * from 用户信息 where 卡号= & transcard & set rs = new adodb.recordsetrs.open str3, con, adopendynamic, adlockpessimisticif i = 2 then if form7.text2.text = or form7.text1.text = then k = 0 form3.show form3.label1.caption = 请你正确输入! form7.text1.text = form7.text2.text = transcard = 0 transmoney = 0 call insertdatabase exit sub end if if rs.eof = true then k = 0 form3.show form3.label1.caption = 没有此用户,请检
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 传感器员工培训
- 2025版胆石症常见症状及护理手册
- 宠物营养师证演讲
- 白菜的营养价值及功效和作用
- 2025版胃癌常见症状及护理规范
- 高流量健康宣教
- 空间几何体截面制作方法
- 大班营养午餐教案
- 检验科血清甲状腺功能检测规范
- 痔疮症状解读及护理技巧
- 校园欺凌预防与干预实务操作手册
- 第三类医疗器械产品注册申报流程
- DBS教材04战略部署
- 2025年202X年幼儿园履行全面从严治党主体责任情况报告
- 2025年(新版)叉车司机证考试题库附答案(含各题型)
- 巡察整改进度汇报
- 肥皂盒注塑模具设计(全套CAD图纸)
- 2025年初级(五级)健康照护师(五级)《理论知识》试卷真题(后附答案和解析)
- 2024年河南省商丘市辅警协警笔试笔试测试卷(含答案)
- 2026版创新设计高考总复习数学(人教B版)-学生答案一~五章
- 企业软件项目管理办法
评论
0/150
提交评论