首页 毕业论文ATM机_银行存取款系统的设计与实现

毕业论文ATM机_银行存取款系统的设计与实现

举报
开通vip

毕业论文ATM机_银行存取款系统的设计与实现     题  目    银行ATM系统方案设计     学  号                姓  名                指导教师                顾问教师                起止日期                设计地点            目录 摘 要    3 Abstract    4 1、绪论    6 1.3、银行ATM系统的意义    8 1.4、拥有ATM管理系统的银行竞争优势分析    9 (3) 目标集聚型优势    10 (4) 知识...

毕业论文ATM机_银行存取款系统的设计与实现
    快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题   目    银行ATM系统 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计     学  号                姓  名                指导教师                顾问教师                起止日期                设计地点            目录 摘 要    3 Abstract    4 1、绪论    6 1.3、银行ATM系统的意义    8 1.4、拥有ATM管理系统的银行竞争优势分析    9 (3) 目标集聚型优势    10 (4) 知识型优势    10 1.5、 本 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 的目的    10 2、ATM系统相关知识介绍    11 2.1、C# 开发语言介绍    12 2.2、SQL Server数据库简介    13 2.3、Microsoft Visual Studio 开发工具简介    14 3、银行ATM系统需求分析    15 3.1、系统需求    15 3.2功能需求    16 3.2.2用户注册和登陆功能    16 3.2.3用户存取款转账和查询历史功能    16 3.2.4软件属性需求    16 3.3、业务流程描述    16 4、银行ATM系统总体设计    17 4.1系统设计概述    17 4.2开通帐户    17 4.3登录    17 4.4存款    18 4.5取款    18 4.6转账    18 4.7余额查询    18 4.8退出    18 5、MSSQL数据库的设计    18 5.1 MSSQL数据库设计概论    18 5.2 表的结构设计    18 4.2.1 Customer用户表    19 4.2.2卡号表    19 4.3 SQL库、表的设计    19 4.3.1用户表过程的设计    20 4.3.2 Account表的设计    20 4.4.3 Card表的设计    21 6、 ATM系统的实现    22 6.1用户注册模块    22 6.1.1界面样式    22 6.1.2功能实现    23 6.2新用户开户模块的实现    24 6.2.1界面样式    25 6.2.1功能实现    25 6.3用户操作模块的实现    26 6.3.1界面样式    26 6.3.2功能实现    26 6.4存款模块的实现    29 6.4.1界面样式    29 6.4.2功能实现    29 6.5取款模块的实现    30 5.6转账模块的实现    30 6.7.1 余额查询功能功能实现    31 6.8 程序开发说明    33 7、结 论    34 致 谢    37 参考文献    38 程序附录    38 ATM模块主要代码    38 摘 要 计算机科学技术的发展不仅极大地促进了整个科学的发展,而且明显加快了经济信息化和社会信息化的进程。绝大多数的公司的日常办公已经离不开计算机技术和软件技术。国内的银行大都大力发展银行自动取款机(ATM),以提高工作效率和降低成本。 ATM机是银行柜台传统业务的最佳替代渠道。一方面,ATM机在功能上最接近银行柜台,存款、取款、转帐、缴费、帐户查询等消费者最常使用的银行业务,ATM机均可办理。另一方面,消费者对自助渠道的接受程度高,在所有电子渠道渠道中(ATM机、网上银行、电话银行和手机银行等),ATM机的认知率最高,有超过90%的消费者认知ATM机,其中年轻人的认知比例更是高达97%。相比之下,网上银行和电话银行仅有70%和50%消费者认知。ATM机已经成为继银行柜台之后,消费者了解最多的银行渠道,此外,消费者使用ATM机的比例已高达78%,仅次于银行柜台,使用频率则高于银行柜台,全国有近70%的消费者至少每2-3周使用一次ATM机,其中近1/3的人一周会使用2-3次。第三,消费者对自助渠道的满意度在各种渠道中是最高的,全国有超过七成的消费者对ATM机满意,而对银行柜台的满意的人仅为4成,网上银行和电话银行也仅为5成左右 本系统采用.NET作为开发工具,使用C#语言编写,并连接MSSQL数据库,搭建和模拟银行最常见存款取款转账操作。可实现用户注册、用户登录、用户存款、用户取款、用户转账、查询该用户所有的操作记录的功能。 关键词ATM机;开户;存取款;转账; Abstract The development of computer science and technology not only greatly promote the development of science, and significantly accelerate the process of the economic information and social information. The vast majority of the company's daily work has been inseparable from the computer technology and software technology. Domestic Banks are mostly developing bank automatic teller machines (ATM), in order to improve the work efficiency and reduce costs. ATM machine is the best alternative to traditional bank counter business channel. ATM machine on the function, on the one hand, the most close to the bank counter, deposits, withdrawals, transfers, pay cost, account inquiry, such as consumer the most commonly used banking, atms all can be dealt with. Consumer acceptance of self-service channels, on the other hand, high, in all channels of electronic channels (ATM, online banking, telephone banking and mobile banking, etc.), ATM machine is not high, more than 90% of the consumer cognition of ATM machine, including young people's recognition rate is as high as 97%. Online banking and telephone banking, by contrast, only 70% and 50% of consumers' cognition. ATM machine has become after the bank counter, the consumer to understand the most of any bank in the channels, in addition, the proportion of consumers use atms has been as high as 78%, second only to the bank counter, use frequency is higher than the bank counter, the nearly 70% of consumers at least once every 2-3 weeks using an ATM, nearly a third of the people will use 2-3 times a week. Third, consumer satisfaction of self-service channels is the highest in the various channels, the country has more than seventy percent of consumers satisfied with the ATM, and satisfied with the bank's counter just 4, online banking and telephone banking is only for 5 or so The system USES.net as a development tool, using c # language, and connect MSSQL database, set up and simulated operating bank the most common deposit withdrawals by bank transfer. Can realize user registration, user login, users deposits, withdrawals, transfers and query the user users all operating records of function. Key words  ATM machine; To open an account; The deposit; Transfer; 1、绪论 随着市场经济的发展,经济信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。同时,随着国内银行机构的大量增加,我国的银行业面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。 随着信息技术对银行业的渗透和促进,银行卡业务近年来得到了迅猛发展,银行卡发卡量、交易量大幅激增,ATM设备数量也随之增加。而商业银行旧有的前置应用系统己不堪重负,日渐暴露出交易故障增多、设备接入管理不便、系统维护投入过大、交易安全隐患增多等弊端,这大大影响了银行的正常运作,对银行的业务发展造成了严重束缚。设计出功能完备、架构先进、性能卓越、高稳定性、高可靠性的前置应用系统成为各大银行的迫切任务。 本文针对行业发展及研究状况,详细分析了银行ATM前置系统的需求,并在此基础上,以克服银行旧有系统的弊端为目标,提出了改进的网络架构模型、 一致的数据模型、多层次的应用计算模式和完备的系统安全策略。由于系统设计 的可扩展性将直接影响系统后续的二次开发和升级,为达到系统良好的可扩展性,设计过程中对ATM的前置业务功能进行了抽象与综合,实现了代码框架复用设计。 ATM机是银行柜台传统业务的最佳替代渠道。一方面,ATM机在功能上最接近银行柜台,存款、取款、转帐、缴费、帐户查询等消费者最常使用的银行业务,ATM机均可办理。另一方面,消费者对自助渠道的接受程度高,在所有电子渠道渠道中(ATM机、网上银行、电话银行和手机银行等),ATM机的认知率最高,有超过90%的消费者认知ATM机,其中年轻人的认知比例更是高达97%。相比之下,网上银行和电话银行仅有70%和50%消费者认知。ATM机已经成为继银行柜台之后,消费者了解最多的银行渠道,此外,消费者使用ATM机的比例已高达78%,仅次于银行柜台,使用频率则高于银行柜台,全国有近70%的消费者至少每2-3周使用一次ATM机,其中近1/3的人一周会使用2-3次。第三,消费者对自助渠道的满意度在各种渠道中是最高的,全国有超过七成的消费者对ATM机满意,而对银行柜台的满意的人仅为4成,网上银行和电话银行也仅为5成左右 1.1、本课题的研究意义和目的 开发背景 随着科技发展和社会进步,尤其是计算机大范围的普及,计算机应用逐渐由大规模科学计算的海量数据处理转向大规模的事务处理和对工作流的管理,这就产生了以台式计算机为核心,以数据库管理系统为开发环境的管理信息系统在大规模的事务处理和对工作流的管理等方面的应用,特别是在银行帐目管理之中的应用日益收到人们的关注。 近年来我国信息产业发展迅速,手工管理方式在银行帐目管理等需要大量事务处理的应用中已显得不相适应,采用IT技术提高服务质量和管理水平势在必行。目前,对外开放必然趋势以使银行业直面外国银行巨头的直接挑战,因此,银行必须提高其工作效率,改善其工作环境,直面外国的挑战。这样,帐户管理的信息化势在必行。 在传统的银行帐户管理中,其过程往往是很复杂的,繁琐的,帐户管理以入帐和出帐两项内容为核心,在此过程中又需要经过若干道手续,因为整个过程都需要手工操作,效率十分低下,且由于他们之间关联复杂,统计和查询的方式各不相同;且会出现信息的重复传递问题。因此改过成必须实现信息化。 我们的系统开发的整体任务是实现银行ATM管理的系统化、规范化、自动化和智能化,从而达到提高企业管理效率的目的。 1.3、银行ATM系统的意义 随着社会的进步和计算机技术的发展,尤其是网络技术的飞速进步,信息观念已经深入人心。信息科学作为当代社会中的重要一环在国民经济中起着举足轻重的作用。自第三次科技革命以来,各交叉学科不断涌现,管理科学与信息科学的密切结合更是大大促进了生产效率,改变了人们久已习惯的人治理念。管理科学的信息化将人们调度优化任务的能力大大提高。我国政府审时度势,提出了以信息化带动工业化的明确战略发展决策。这对于我国占领科技制高点,普及科技教育,推动国民经济的健康可持续发展具有重要的意义。 第三产业在一个国家经济中所占据的比例是其经济结构是否先进成熟的重要 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 之一。而金融业是第三产业中最为重要的产业,是其他所有产业的力量后盾,为其他产业的正常运营提供保障。作为资金周转的核心层,金融业担负着国计民生的重要职责,其稳定高效的运营是国民经济发展的首要重点。目前每天国际金融及证券市场上的货币流通量远远大于同等时间内产品贸易的货币流通量。如果金融业出现纰漏,将对国民经济产生灾难性的影响。基于金融业的重要性,软件业的发展在很大程度上受到了金融业对信息化程度要求不断提高的影响。目前软件市场上相当大的份额是管理类软件,而且非专业管理类软件也大部分可以通用到金融领域的管理决策。 银行作为金融业的执行机构,其主要业务是吸纳存款、发放贷款并使之安全有效地运行。在中国经济蓬勃发展的今天,越来越庞大的储蓄用户数目和资金流通量对银行帐户管理的可靠性每天都在进行苛刻的考验。本文编制的银行ATM系统正是基于此考虑而编制的专用软件。 一般把与银行合作开展业务的单位叫做商户,如:若中国电信与交通银行开展代收话费业务则可被视为交行的商户。从目前看来,依靠电子化手段,加强银行帐户的管理,是各家银行提高其工作效率、增强其业务竞争力的重要因素。对银行来说,至少育如下几点益处: (1)有利于增加结算存款 开展各项业务时,商户一般会在银行开设本单位的结算帐户,发生更多的往来,帐户上也会保持一定数量的存款余额:同时,被代理商户的客户在银行办理代收代付业务时,也有可能在银行开设个人帐户并留有一定的存款,总之,高效的银行帐户管理系统能够提高银行的存款总量. (2)有利于扩大客户群、发掘潜在客户,从而带动银行传统业务的发展 通过提供高效,优质的业务,吸引更多的客户来银行办理业务,从而扩大了银行的客户群,加强了银行和客户的业务联系,也会带动其他业务的发展; (3)有利于提高银行的社会形象,稳固业务基础 开拓和发展高效的银行ATM系统,,不仅可以服务客户、联系客户、吸引客户、稳定客户,巩固银行业务经营基础,而且通过服务社会,可以塑造银行自身的市场形象,体现银行的综合实力; (4)加强了银业与商户的联系,为以后更广泛,更深入地开展银企合作打下了基础。高效的帐户管理系统,使银行从某种程度上为被代理单位拓展了业务,节省了一定的人力、物力和财力,通过业务交流和接触,双方加深了了解和友谊,加强了双方的信用协作关系,为以后的发展和合作奠定了良好的基础; (5)有利于改善银行的业务结构,扩大收益来源,增强抵御风险的能力。近年来,央行连续多次降低利率,迅速缩小了商业银行的利差水平,伴随着信贷业务风险意识的增强,商业银行之间竞争更加激烈,经营成本日趋提高;因此,银行管理系统在整个国际银行业获得了空前的发展,并受到广泛而高度的重视。所以,加快银行帐户系统的科学管理,有利于拓展金融服务的深度和广度,有助于银行获得新的利润增长点,从而改善业务结构、扩大收入来源,提高抗风险能力。 总之,现代商业银行的竞争和发展,已突破传统业务的框架,为了提高银行的业务竞争能力,扩大客户群,培育新的利润增长点,务必大力改良其ATM系统,因此建立一个功能齐全、灵活、通用、可靠、安全、统一的ATM系统成为银行当前业务发展的迫切之需。 1.4、拥有ATM管理系统的银行竞争优势分析 随着社会的进步和金融体制改革的不断深化,随着知识经济的到来和银行电子化建设的发展,我国的经济结构和金融市场结构正在发生深刻的变化,以间接融资为主向直接融资和间接融资并重转变,金融服务的社会需求日新月异,金融服务的外延和内涵更加广泛和丰富,从而对商业银行的ATM系统提出了新的要求,银行的经营方式和服务手段向电于化、网络化、虚拟化、多元化、个性化的方向发展,现代信息技术不再是银行开展业务的一种辅助工具,银行的电子化和现代化管理水平已经成为银行竞争力的重要构成要素,成为银行市场运作、金融创新、客户服务、量化管理的技术基础。大致说来,银行帐户管理的系统化,规范化,自动化,将使银行获得如下几个方面的竞争优势: (1)差别化竞争优势 随着新管理系统的的应用,银行的传统业务开始和信息技术紧密结合,银行通过客户需求变化的分析和市场的细分,可以为特定的客户定制专门的服务,谁能率先推出个性化的金融电于产品,抢占市场,就能取得胜人一筹的竞争优势; (2)低成本竞争优势 通过电话银行、网络银行等应用,银行业务越来越向自助化、虚拟化、非柜面化发展,从而减轻了劳动强度,减少了大量人力、物力,降低了经营成本; (3) 目标集聚型优势 通过开展个人理财、网上综合银行业务等个性化的服务,坚立银行的对银行业务发展空间的拓展、金融服务的多元化、提高银行竞争力起着十分重要的作用。 (4) 知识型优势 通过采用数据库等新技术进行管理系统的信息化改造,使银行具有量化的分析管理能力,决策更科学,更有效,更能适应客户和市场的需求变化; (5)产业聚集型优势 银行管理系统的不断向一体化,集中化,规范化的发展,电子化的金融产品越来越多,使银行业务空间不断拓展的同时,将形成银行金融的高度聚集化和规模经济型的优势;现代化的银行帐户管理系统作为银行建设的一个重要部分,对银行业务发展空间的拓展、金融服务的多元化、提高银行竞争力起着十分重要的作用。 1.5、 本论文的目的 随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是ATM系统,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。 2、ATM系统相关知识介绍   在本文研究过程中,程序开发构建涉及到程序开发、数据库、软件开发平台、服务器相关方面的相关知识,而在ATM系统这种网络应用程序开发过程中,应用到了更多的相关技术,如网络安全、服务器搭建、网络数据库的建立及操作等。下面就这些知识做简要的介绍。 本系统选题为基于.NET程序设计的银行存取款系统,是模拟银行存取款的管理。设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。鉴于本系统的特殊性,还需要本程序有良好的安全性和容错性。 随着我国金融电子化建设的深入发展和银行客户对金融服务质量要求的提高,自动柜员(ATM机)在金融行业的应用越来越广泛,自动柜员机(ATM机)在拉近客户与银行之间的距离,扩展营业网点,改善用卡环境,提供全天候、全方位的金融服务,降低经营成本,提高金融行业的服务质量和综合竞争实力等方面正发挥着不可替代的作用。对用户来说,自动柜员机(ATM机)的诞生,使原来必须到银行柜台办理的账务查询、转账等业务,可以在大街小巷的固定取款机前进行办理。对银行来说,自动柜员机的开通,将大大提高工作效率,在方便用户的同时可以节省大量的柜台服务为人员,从而降低生产经营成本。 CTR最新调查结果表明,消费者通过ATM机办理取款业务的比例高达68%,ATM机将成为解决银行柜台排队难的主要途径,但通过ATM机办理过存款、缴费等业务的比例还不到30%,所以ATM机仍有很大的发展空间。 2.1、C# 开发语言介绍   C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。 C#读作C Sharp。最初它有个更酷的名字,叫做COOL。微软从1998年12月开始了COOL项目,直到2000年2月,COOL被正式更名为C#。在1998年,Delphi语言的设计者Hejlsberg带领着Microsoft公司的开发团队,开始了第一个版本C#语言的设计。在2000年9月,国际信息和通信系统标准化组织为C#语言定义了一个Microsoft公司建议的标准。最终C#语言在2001年得以正式发布。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。 C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。  正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过INTERNET进行调用。  C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,因此绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。 在C#中类的声明与C++和Java很相似。但是,不象C++,C#结构体  C# Project与类是不支持继承。但是,与Java相同的是,一个结构体可以实现接口(interface)。Java的关键字import已经被替换成using,它起到了同样的作用。 2.2、SQL Server数据库简介 SQL Server是一个关系数据库管理系统。它虽初是由Microsoft Sybase和AshtOn—Tate三家公司共同开发的于1988年推出了第一个0S/2版本在Windows NT推出后Microsoft与Sybase在SQL Server的开发上就分道扬镳了Microsoft将SQLServer移植到Windows NT系统上专注于开发推广SQL Server的Windows NT版本Sybase则较专注于SQL Server在UNIX操作系统上的应用在本书中介绍的是Microsoft SQL Server以后简称为SQL Server或MS SQL Server,SQL Server 2000是Microsoft公司推出的SQL Server数据库管理系统的最新版本该版本继承了SQL Server 7.0版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运运行Microsoft Windows 2000的大型多处理器的服务器等多种平台使用。 由于今天Windows操作系统占领着主导地的位,选择SQL Server一定会在兼容性方面取得一些优势。另外,SQL Server2000除了具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤其是它可以直接存贮XML数据,可以将搜索结果以XML格式输出等特点,有利于构建了异构系统的互操作性,奠定了面向互联网的企业应用和服务的基石。这些特点在.NET战略中发挥着重要的作用。本课题中在进行网络应用程序设计时使用的后台数据库就是应用SQL Server2000数据库系统建立的,当然,由于本系统所涉及的数据库规模有限,因此只应用到了SQL Server2000较基础的数据库功能。 2.3、Microsoft Visual Studio 开发工具简介 Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight。而Visual Studio .NET是用于快速生成企业级ASP.NET Web应用程序和高性能桌面应用程序的工具。Visual Studio包含基于组件的开发工具(如Visual C#、Visual J#、Visual Basic和Visual C++),以及许多用于简化基于小组的解决方案的设计、开发和部署的其他技术。 Visual Studio 97 为第一代Visual Studio,于1997年推出。它包含当时大部份由微软推出的程序设计工具,包括Visual Basic 5.0、Visual C++ 5.0(主要用作视窗程序设计)、Visual J++ 1.1(用作Java及视窗程序设计)及Visual FoxPro(用作xBase设计)。它亦加入当时全新的Visual InterDev,使用ASP动态制作网站。Visual Studio 97是Microsoft第一次尝试对于多种语言使用同一种开发环境。Visual J++、InterDev、和MSDN Library全都使用同一个环境,名为Developer Studio。Visual C++ 和Visual Basic则是分开的,和Visual FoxPro相似。 Visual Studio .NET (2002) 支持.Net FrameWork 1.0。 微软在2002年发行了代号为“Rainier”的Visual Studio .NET(2001年在MSDN上发行过测试版)。其最大的改进就是使用.NET框架引入了受控代码开发环境。使用.NET开发的程序并不会像C++那样被编译为机器语言,而是被编译成一种叫做微软中间语言(MSIL)或者通用中间语言(CIL)的格式。当一个MSIL应用程序被执行的时候,它会被即时编译成适用于所运行平台的机器语言,这样就使代码可以跨平台运行。被编译成MSIL的程序只能运行在安装了通用语言架构(CLI)的平台上,而一些非微软.NET的环境,如Mono和DotGNU使得在Linux和Mac OS X上运行MSIL程序成为可能。这是第一个必须运行于基于Windows NT的Windows平台上的Visual Studio版本,其安装程序强化了这种需求。微软引入了一种被称为C#的新的编程语言,目标是.NET。它还引入了Visual J#作为Visual J++的继任者。Visual J#程序使用Java的语法,但是与Visual J++程序不同,Visual J#只能以.NET Framework为目标,而不是像其他Java工具那样以Java虚拟机为目标。Visual Basic被彻底地改变以适应新的框架,其新版被称为Visual Basic .NET。微软还为C++添加了C++托管扩展,这样C++程序员就可以创建.NET程序了。Visual Studio .NET可以被用来开发Windows应用程序(使用Windows Forms,.NET框架的一部分)、Web应用程序(使用ASP.NET和Web服务)以及移动设备(使用.NET Compact Framework) 微软于2012年8月2日正式发布Visual Studio 2012。这一版本集成了Windows 8的开发。微软重新设计了界面,以更好地配合Metro。同时,新的HTML和CSS编辑器更好地支持HTML5与CSS3 3、银行ATM系统需求分析 本系统选题为基于.NET程序设计的银行存取款系统,是模拟银行存取款的管理。设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。鉴于本系统的特殊性,还需要本程序有良好的安全性和容错性。 3.1、系统需求 本系统是模拟类似于银行ATM机的系统。主要模拟模拟银行系统存取款管理软件,其采用B/S结构来实现,有客户端和服务端,需要在客户端先注册用户,服务端会生成相关记录,其数据信息会存入数据库,用户也可以选择查询这些信息。 3.2功能需求 根据系统的需求分析,本系统的功能要求如下: 3.2.2用户注册和登陆功能 新用户必须先注册,注册需要填写用户名和密码; 老用户可以输入户名和密码直接登陆,通过读取数据库,获取该用户的信息,如果用户不存在则会提示错误。 3.2.3用户存取款转账和查询历史功能 用户登录成功后,可以选择存款、取款、转账或者查询历史记录四项业务,系统会自动进行各种计算,然后将结果返回给用户并将信息存入数据库。  3.2.4软件属性需求   本系统为银行存取款管理系统,要求程序具有一定的可移植,可扩展,安全性、完整性! 3.3、业务流程描述 启动程序 老用户 新用户 登录 余额查询 转账 取款 存款 图3.3-1  业务流程 4、银行ATM系统总体设计 4.1系统设计概述 本系统使用.NET作为开发工具,采用MSSQL作为后台数据库,使用.NET开发界面,用户所有的操作信息会自动记录在数据库中,用户界面简单明了,功能严谨合理,务求使用户有好的体验。 4.2开通帐户     填写注册信息,注册成功后,把用户信息存进数据库,(由于是模仿银行的ATM机系统,所以常规的银行卡需要在银行进行认证之后才能开通相关的业务。由于是模拟系统,所以此处是没有开通的认证模块) 4.3登录 输入帐户名和密码,读取数据库内容进行验证,如果用户存在,登录成功,否则提示无此账户,请确认后重新输入!登录成功后可进行存款取款转账查询历史操作; 4.4存款 输入的存款金额进行验证,如输入负数或字母,提示金额错误,否则提示存款成功,存储被修改的余额信息! 4.5取款 输入的取款金额进行验证,如输入负数或字母,提示金额错误。取款成功后,存入数据库!当取款金额大于余额,要有提示,并操作不成功。 4.6转账 输入对方户名可以进行转账,转账后自己余额减少,对方余额增加。 4.7余额查询 显示用户的余额等相关操作 4.8退出 退出系统。 5、MSSQL数据库的设计 5.1 MSSQL数据库设计概论 MS SQL是指微软的SQL Server数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库在银行存取款系统的设计中,多次使用了MSSQL作为存储信息和读取信息的工具。 5.2 表的结构设计 在银行存取款系统的设计中,我们建立了用户表和历史表用于存储信息; 4.2.1 Customer用户表 用户表用于存储用户的户名密码余额注册时间信息,当用户注册成功后这些信息会自动记录在数据库中,以便用户查询。 表4.2-1 用户表 字段名 数值类型 说明 AccountNO VARCHAR2(12) 用户id(主键) CustomerID VARCHAR2(18) 用户id Balance Money(8) 用户余额 Password Varchar(20) 密码 Starttime Datetime(8) 开户时间 4.2.2卡号表 卡号表用于存储用户从开卡开始的所有的操作,卡号表中的CardNO字段与用户表中的字段AccoutNO是外键关系,以实现2个表之间的关联。 表4.2.2-2 卡号表 字段名 数值类型 说明 CardNO VARCHAR2(12) 卡号id (主键) AccountNo VARCHAR2(15) 用户id Passwod VARCHAR2(100) 卡号密码 4.3 SQL库、表的设计 需要在sqlserver 上建立相关的库和表。 4.3.1用户表过程的设计 针对用户表的特点和ODBC连接的需要,SQL建表代码如下: /*创建Customer表*/ if exists(select name     from sysobjects     where name='Customer'     and type='u'     )     drop table Customer go create table Customer (     CustomerID varchar(18) not null,     Name varchar(20),     Gender char(2),     Birthday datetime,     Address varchar(50),     Phone varchar(50),     constraint pk_Customer     primary key(CustomerID) ) 4.3.2 Account表的设计 针对Account表的特点和ODBC连接的需要,现设计代码如下: /*创建Account表*/ if exists(select name     from sysobjects     where name='Account'         and type='u'     )     drop table Account go create table Account (        AccountNo varchar(12) not null,     CustomerID varchar(18) not null         references Customer(CustomerID),     Balance money not null         check(Balance>0),     Password varchar(20) not null,     StartTime datetime,     constraint pk_Account         primary key(AccountNo) ) Go 4.4.3 Card表的设计 针对card表的特点和ODBC连接的需要,现设计代码如下: /*创建Card表*/ if exists(select name     from sysobjects     where name='Card'         and type='U'     )     drop table Card go create table Card (     CardNo varchar(12),     AccountNo varchar(12) not null         references Account(AccountNo),     Password varchar(20),     constraint pk_Card         primary key(CardNo) ) go 6、 ATM系统的实现                                                                                            6.1用户注册模块 6.1.1界面样式 图6.1.1 主界面 第一个模块为新用户的注册,主要填写如下信息:客户id 、姓名等相关信息。记录到Customer用户表 中。 6.1.2功能实现 程序启动后调用bank类,显示用户注册界面。 新用户需要点击注册客户按钮调转到用户注册界面进行注册,同时提供老用户的注销操作,该模块主要代码如下: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using Bank; //注册客户         private void button1_Click(object sender, System.EventArgs e)         {             string CustomerID=textBox1.Text;             string Name=textBox2.Text;             string Gender;             if(radioButton1.Checked)                 Gender="男";             else                 Gender="女";             DateTime Birthday=DateTime.Parse(textBox3.Text);             string Address=textBox5.Text;             string Phone=textBox4.Text;             if(bank.CreateCustomer(CustomerID,Name,Gender,Birthday,Address,Phone))             {                 comboBox1.Items.Add(CustomerID);                 richTextBox1.AppendText("注册客户成功!\r\n");             }             else             {                 richTextBox1.AppendText("注册客户失败!\r\n");             }         }         //注销客户         private void button2_Click(object sender, System.EventArgs e)         {             string CustomerID=textBox1.Text;             ArrayList list=bank.GetAllCustomers();             if(list.Contains(CustomerID))             {                 ArrayList accounts=bank.GetAllAccountsByCustomerID(CustomerID);                 foreach(string account in accounts)                 {                     ArrayList cards=bank.GetAllCardsByAccountNo(account);                     foreach(string card in cards)                     {                         bank.DeleteCard(card);                     }                     bank.DeleteAccount(account);                     comboBox2.Items.Remove(account);                     listBox1.Items.Remove(account);                 }                 bank.DeleteCustomer(CustomerID);                 comboBox1.Items.Remove(CustomerID);                 richTextBox1.AppendText("注销客户成功,所有与该客");                 richTextBox1.AppendText("户有关的帐号和卡号都已经删除!\r\n");             }             else             {                 richTextBox1.AppendText("要注销的客户不存在!\r\n");             }         }         6.2新用户开户模块的实现 新用户在开户界面点击开户按钮,在程序中调用bank类; 6.2.1界面样式 图6.2.1-1 新用户开户界面 6.2.1功能实现 新用户输入卡号、密码。客户ID 与用户表中的ID 关联。该部分主要代码如下: //开户         private void button3_Click(object sender, System.EventArgs e)         {             string AccountNo=textBox6.Text;             string Password=textBox7.Text;             decimal Balance=decimal.Parse(textBox8.Text);             string CustomerID=comboBox1.SelectedItem.ToString();             if(bank.CreateAccount(AccountNo,CustomerID,Password,Balance))             {                 comboBox2.Items.Add(AccountNo);                 listBox1.Items.Add(AccountNo);                 richTextBox1.AppendText("开户成功!\r\n");             }             else             {                 richTextBox1.AppendText("开户失败!\r\n");             }         }         //消户         private void button4_Click(object sender, System.EventArgs e)         {             string AccountNo=textBox6.Text;             ArrayList list=bank.GetAllAccounts();             if(list.Contains(AccountNo))             {                 ArrayList cards=bank.GetAllCardsByAccountNo(AccountNo);                 foreach(string card in cards)                 {                     bank.DeleteCard(card);                 }                 bank.DeleteAccount(AccountNo);                 listBox1.Items.Remove(AccountNo);                 comboBox2.Items.Remove(AccountNo);                 richTextBox1.AppendText("消户成功,与该帐号有关的卡号都已删除!\r\n");             }             else             {                 richTextBox1.AppendText("你要消的帐号不存在!\r\n");             }         } 6.3用户操作模块的实现 用户登陆成功后,进入操作选择界面。在程序中应用bank类。 6.3.1界面样式 图6.3.1-1用户操作界面 6.3.2功能实现 用户登陆成功后,用户可以选择存款、取款、转账、查询等操作;选择不同的操作会跳转到对应的界面;该部分主要代码如下: /确认卡号和口令是否正确         private void button9_Click(object sender, System.EventArgs e)         {             string CardNo=textBox1.Text;             string Password=textBox2.Text;             if(bank.VerifyCardNo(CardNo,Password))             {                 IsVerified=true;                 richTextBox1.AppendText("卡号和口令正确,请执行其他操作!\r\n");             }             else             {                 IsVerified=false;                 richTextBox1.AppendText("卡号或口令错误,请重新输入!\r\n");             }         }         //检查输入的数据格式是否正确         private void textBox3_TextChanged(object sender, System.EventArgs e)         {             if(textBox3.Text!="")             {                 if(IsWithdraw==true||IsDeposit==true||IsTransfering==true)                 {                     try                     {                         decimal.Parse(textBox3.Text);                     }                     catch(Exception ex)                     {                         MessageBox.Show(ex.Message+"请输入正确的数据格式!\r\n");                         richTextBox1.AppendText(ex.Message+"请输入正确的数据格式!\r\n");                     }                 }             }             else             {                 MessageBox.Show("数据不能为空,请输入数据!");                 richTextBox1.AppendText("数据不能为空,请输入数据!\r\n");             }         }         //验证卡号是否为空,如果不为空,验证卡号和口令是否正确         private void textBox1_Leave(object sender, System.EventArgs e)         {             if(textBox1.Text=="")             {                 MessageBox.Show("卡号不能为空!");                 richTextBox1.AppendText("卡号不能为空!\r\n");             }             else if(textBox2.Text!="")             {                 string CardNo=textBox1.Text;                 string Password=textBox2.Text;                 if(!bank.VerifyCardNo(CardNo,Password))                 {                     IsVerified=false;                     richTextBox1.AppendText("卡号或口令错误,请重新输入!\r\n");                 }             }         }         //验证口令是否为空,如果不为空,验证卡号和口令是否正确         private void textBox2_Leave(object sender, System.EventArgs e)         {             if(textBox2.Text=="")             {                 MessageBox.Show("口令不能为空!");                 richTextBox1.AppendText("口令不能为空!\r\n");             }             else if(textBox1.Text!="")             {                 string CardNo=textBox1.Text;                 string Password=textBox2.Text;                 if(!bank.VerifyCardNo(CardNo,Password))                 {                     IsVerified=false;                     richTextBox1.AppendText("卡号或口令错误,请重新输入!\r\n");                 }             }         }     } } 6.4存款模块的实现 用户登录成功后,可点击存取款。在程序中应用bank类。 6.4.1界面样式 图6.4.1-1  用户存款按钮 6.4.2功能实现 用户输入的存款金额,金额不能为负数或字母。然后单击存款按钮,会提示存款成功该模块主要代码如下: //存款             if(IsDeposit)             {                 string CardNo=textBox1.Text;                 decimal amount=decimal.Parse(textBox3.Text);                 if(bank.DepositByCardNo(CardNo,amount))                 {                     richTextBox1.AppendText("存款操作成功!你所存金额是:"+                         amount.ToString()+"\r\n");                 }                 else                 {                     richTextBox1.AppendText("存款操作失败!\r\n");                 }                 IsDeposit=false;             } 6.5取款模块的实现 用户点击取款按钮,可进行取款操作。 用户输入取款金额,金额不能为负数或字母。然后单击取款按钮,如果取款数不大于余额,读取取款数额,将信息写入数据库,提示取款成功和当前余额,否则,提示取款错误。该模块主要代码如下: private void button6_Click(object sender, System.EventArgs e)         {             //取款             if(IsWithdraw)             {                 string CardNo=textBox1.Text;                 decimal amount=decimal.Parse(textBox3.Text);                 if(bank.WithdrawByCardNo(CardNo,amount))                 {                     richTextBox1.AppendText("取款操作成功!你所取金额是:"+                         amount.ToString()+"\r\n");                 }                 else                 {                     richTextBox1.AppendText("取款操作失败!\r\n");                     richTextBox1.AppendText("你的存款余额可能不足!\r\n");                 }                 IsWithdraw=false;             } 5.6转账模块的实现 用户点击转账按钮,可进行转载转账操作。 用户需要输入户名和转账金额,户名必须存在且金额不能为负数或字母。如果转账数不大于余额,读取转账数额,将信息写入数据库,提示转账成功,否则,提示转账错误。该部分主要代码如下: //转帐             if(IsTransfer)             {                 if(IsTransfering)                 {                     TransferAmount=decimal.Parse(textBox3.Text);                     string FromCardNo=textBox1.Text;                     string ToCardNo=TransferCardNo;                     decimal amount=TransferAmount;                     if(bank.TransferByCardNo(FromCardNo,ToCardNo,amount))                     {                         richTextBox1.AppendText("转帐成功操作成功!\r\n");                         richTextBox1.AppendText("帐号是:"+ToCardNo+"\r\n");                         richTextBox1.AppendText("转帐金额是:"+amount+"\r\n");                     }                     else                     {                         richTextBox1.AppendText("转帐操作失败,可能是余额不足!\r\n");                     }                     IsTransfering=false;                     IsTransfer=false;                 }                 else                 {                     IsTransfering=true;                     TransferCardNo=textBox3.Text;                     label3.Text="请输入转帐金额:";                     textBox3.ReadOnly=false;                 }             } 。 6.7.1 余额查询功能功能实现 用户单击余额查询按钮。文本框内会显示余额信息 //查询余额         private void button1_Click(object sender, System.EventArgs e)         {             decimal balance;             string CardNo=textBox1.Text;             if(IsVerified)             {                 balance=bank.QueryByCardNo(CardNo);                 if(balance!=-1)                 {                     richTextBox1.AppendText("你的余额是:"+balance.ToString()+"\r\n");                 }                 else                 {                     richTextBox1.AppendText("请输入你的卡号或者口令!");                 }             }             else             {                 richTextBox1.AppendText("请先验证卡号和口令!\r\n");             }         } 6.8 程序开发说明 可以使用.NET把一写文件压缩成.exe文件,来发布我们的应用程序,而且在本次项目中,每个项目都同时调用了bank的类,符合软件开发的规则,同时也减少的代码的重复编写。 程序分包及其功能如下: ATM部分: 类包:基础通用包,可以被所有调用 ,包含bank 类;ATM 部分就是整个程序的核心部分,包含了模拟ATM 机的所用功能。 BANK 类: 在bank 类中定义了很多通用的类供程序调用,属于公共类。 Clent :属于前台的注册部分,包含用户的注册,开户、开卡等记录, 7、结 论 随着我国信息产业发展迅速,国内银行之间以及与外国银行之间的竞争也越来越激烈,怎样发展业务以吸引更多顾客是各银行面队的当务之急。而存取款帐目管理是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着相当重要的作用。现在银行的业务越来越多,吸引的客户也越来越多,怎样消耗最少的资源达到最大的收益就越显重要。 ATM机是银行柜台业务分流的最佳渠道 调查发现,在众多电子渠道中,ATM机是银行柜台传统业务的最佳替代渠道。一方面,ATM机在功能上最接近银行柜台,存款、取款、转帐、缴费、帐户查询等消费者最常使用的银行业务,ATM机均可办理。另一方面,消费者对自助渠道的接受程度高,在所有电子渠道渠道中(ATM机、网上银行、电话银行和手机银行等),ATM机的认知率最高,有超过90%的消费者认知ATM机,其中年轻人的认知比例更是高达97%。相比之下,网上银行和电话银行仅有70%和50%消费者认知。ATM机已经成为继银行柜台之后,消费者了解最多的银行渠道,此外,消费者使用ATM机的比例已高达78%,仅次于银行柜台,使用频率则高于银行柜台,全国有近70%的消费者至少每2-3周使用一次ATM机,其中近1/3的人一周会使用2-3次。第三,消费者对自助渠道的满意度在各种渠道中是最高的,全国有超过七成的消费者对ATM机满意,而对银行柜台的满意的人仅为4成,网上银行和电话银行也仅为5成左右。 大部分用户仅通过ATM机办理取款业务 虽然ATM机满意度高,办理的业务种类也很丰富,但大部分用户却仅通过ATM机办理取款一项业务。调查显示,通过ATM机办理过存款业务的比例高达68%,年轻人中这一比例更是达到了85%,而办理过转帐/汇款、存款和缴费的人不足三成(27%、26%、25%)。   从设备种类上看,ATM机是使用最多的设备。在经常使用的ATM机类型中,有67%的用户表示经常使用,二线城市则高达73%,而其他设备,除存取款一机有21%的用户经常使用外,均未超过5%。     从使用地点来看,绝大部分用户使用附行式ATM机,调查显示,分别有61%和45%的消费者主要在银行门口和银行大厅内使用ATM机,但更多的消费者(55%)希望在住宅小区增加ATM机,希望增加的ATM机类型主要是存取款一体机(53%)。 --数据来源:CTR金融研究部《2007中国城市居民银行渠道使用调查》 研究发现,消费者使用ATM机来办理业务存在以下障碍: 业务认知度低。消费者对ATM机取款以外的服务认知很低。虽然消费者对ATM机渠道的存在有很高的了解(93%),但就ATM机可办理的业务而言,消费者知之甚少,例如,对转账/汇款以及缴费这样的业务,仅有40%和23%的消费者知道可以通过ATM机办理,老年人对这两项业务的认知度更明显低于中轻年人,仅分别为13%和17%。 消费者对ATM机安全性和服务质量评价低。调查显示,消费者在选择银行渠道时首先考虑的两个因素是安全(91%)和服务质量(90%)。ATM机尽管在便利性上超过柜台,但在安全和服务质量上的评价,却明显偏低(35%、38%),在老年人中这一比例则更低(31%、26%)。出于对安全和服务质量的担忧,消费者大多仅通过ATM机进行小额取款,遇转帐、存款等涉及金额较大,手续相对复杂且需要打印凭证的业务,仍倾向于使用传统银行柜台服务。 ATM机种类少,消费者使用ATM机办理的业务单一,固然与消费者对安全问题的担忧有关,也与ATM机种类少有一定关系,存取款一体机是消费者最希望增加的ATM机,这也说明目前这类设备目前布放较少,不能满足消费者的需求。 ATM机故障率高且操作复杂。ATM机“经常发生故障”和“操作复杂”是排在 “安全性”之后的阻碍消费者使用ATM机的主要原因,特别对于老年人而言,因为“操作复杂”而不使用ATM机的比例接近5成,而“设备经常发生故障”更是ATM机使用者最大的不满。 所以需要我们开发出更便捷、更安全的ATM系统来减少它自身存在的问题。 银行存取款系统是针对普通银行用户的需要而设计。银行存取款系统不仅要求操作方便而且要求界面简洁,它还需要实现存取款,用户查询和查询统计功能。     针对上述情况和要求,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试等过程开发了一个银行账目管理系统。采用C#作为编程语言,实现了银行存取款系统,完成存取款帐目管理、查询历史等功能。 致 谢 在项目开发和论文工作期间,我几乎每天都要面临着的挑战、经受着挫折,但在克服困难不断进取的过程中我也学到了新知识并磨砺了自身意志,也培养了自己的求实上进的精神作风。在我的论文顺利完成之际,首先对我的老师表示衷心的感谢! 本文是在老师的辛勤指导和亲切关怀下完成的,研究工作中的每一步都包含着导师的心血。导师广博的知识、严谨的治学风范、求实的科研作风、活跃的学术思想和诲人不倦的敬业精神给我留下了深刻的记忆,使我受益匪浅。导师在学术上给予我的悉心指导、生活方面给予我的关怀,我将会一直铭记在心,相信她的治学态度和科研精神将在以后的工作学习中~直激励我奋发向上。 同时我也要由衷的感谢在读期间东南大学的各位老师在课上课下给予我的各方面的帮助和鼓励,以及在资料搜索和项目设计各阶段给予我无私帮助的同事和朋友,他们在整个研究过程及其后续的实验阶段给予了大力的支持,使我的研究工作得以顺利开展。 参考文献 [1]基于校园网的教学网站建设探讨.海军院校教育,2002,6(4):47—49. [2]基于校园网的网络考试系统设计与实现.华北科技学院学报,2005,2(4). [3]计算机网络虾考试系统的设计与应用.辽宁高职学报,2002,4(3). [4]基于B/S模式的在线考试系统的ASP实现方案. [5]基于B/S模式的Web应用程序的设计.无锡轻工大学学报,2000(3):21—26. [6]陈浩.B/S结构校园网考试系统的设计与实现.广西师院学报(自然科学版), [7]《C#开发指南》清华大学出版社  作者:(美)内格尔(Nagel.C) [8]《精通MS-SQL2000》清华大学出版社  作者:梁冰,陈丹丹,苏宇 编著  [9]《计算机软件产品开发文件编制指南(GB 8567-88)》  [10]《C#经典案例分析》清华大学出版社  作者:张跃延,苏宇,贯伟红 编著  [11]《C#高级编程(第6版)》清华大学出版社作者:(美)内格尔(Nagel.C) [12]《ASP.NET 开发指南》清华大学出版社 作者:(美)贝尔利纳索著 [13]《Visual Studio 2005 开发技巧》清华大学出版社 作者:甘致 谢 程序附录 ATM模块主要代码 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using Bank; namespace ATM {     ///     /// Form1 的摘要说明。.     ///     public class Form1 : System.Windows.Forms.Form     {         private System.Windows.Forms.GroupBox groupBox1;         private System.Windows.Forms.GroupBox groupBox2;         private System.Windows.Forms.Button button1;         private System.Windows.Forms.Button button2;         private System.Windows.Forms.Button button3;         private System.Windows.Forms.Button button4;         private System.Windows.Forms.Button button5;         private System.Windows.Forms.Button button6;         private System.Windows.Forms.Button button7;         private System.Windows.Forms.TextBox textBox1;         private System.Windows.Forms.Label label1;         private System.Windows.Forms.Label label2;         private System.Windows.Forms.TextBox textBox2;         private System.Windows.Forms.Button button8;         private System.Windows.Forms.RichTextBox richTextBox1;         private System.Windows.Forms.Label label3;         private System.Windows.Forms.TextBox textBox3;         private System.Windows.Forms.Button button9;         private bool IsVerified;         private bool IsWithdraw;         private bool IsDeposit;         private bool IsTransfer;         private bool IsUpdatePwd;                 private bool IsTransfering;         private string TransferCardNo;         private decimal TransferAmount;         private Bank.Bank bank;         ///         /// 必需的设计器变量。         ///         private System.ComponentModel.Container components = null;         public Form1()         {             //             // Windows 窗体设计器支持所必需的             //             InitializeComponent();             IsVerified=false;             IsWithdraw=false;             IsDeposit=false;             IsTransfer=false;             IsUpdatePwd=false;             IsTransfering=false;             bank=new Bank.Bank();             //             // TODO: 在InitializeComponent 调用后添加任何构造函数代码             //         }         ///         ///清理所有正在使用的资源。         ///         protected override void Dispose( bool disposing )         {             if( disposing )             {                 if (components != null)                 {                     components.Dispose();                 }             }             base.Dispose( disposing );         }         #region Windows Form Designer generated code         ///         /// Required method for Designer support - do not modify         /// the contents of this method with the code editor.         ///         private void InitializeComponent()         {             this.groupBox1 = new System.Windows.Forms.GroupBox();             this.button9 = new System.Windows.Forms.Button();             this.textBox2 = new System.Windows.Forms.TextBox();             this.label2 = new System.Windows.Forms.Label();             this.label1 = new System.Windows.Forms.Label();             this.textBox1 = new System.Windows.Forms.TextBox();             this.groupBox2 = new System.Windows.Forms.GroupBox();             this.textBox3 = new System.Windows.Forms.TextBox();             this.label3 = new System.Windows.Forms.Label();             this.richTextBox1 = new System.Windows.Forms.RichTextBox();             this.button1 = new System.Windows.Forms.Button();             this.button2 = new System.Windows.Forms.Button();             this.button3 = new System.Windows.Forms.Button();             this.button4 = new System.Windows.Forms.Button();             this.button5 = new System.Windows.Forms.Button();             this.button6 = new System.Windows.Forms.Button();             this.button7 = new System.Windows.Forms.Button();             this.button8 = new System.Windows.Forms.Button();             this.groupBox1.SuspendLayout();             this.groupBox2.SuspendLayout();             this.SuspendLayout();             //             // groupBox1             //             this.groupBox1.Controls.Add(this.button9);             this.groupBox1.Controls.Add(this.textBox2);             this.groupBox1.Controls.Add(this.label2);             this.groupBox1.Controls.Add(this.label1);             this.groupBox1.Controls.Add(this.textBox1);             this.groupBox1.Location = new System.Drawing.Point(136, 8);             this.groupBox1.Name = "groupBox1";             this.groupBox1.Size = new System.Drawing.Size(360, 136);             this.groupBox1.TabIndex = 0;             this.groupBox1.TabStop = false;             this.groupBox1.Text = "卡号信息";             //             // button9             //             this.button9.Location = new System.Drawing.Point(264, 88);             this.button9.Name = "button9";             this.button9.TabIndex = 4;             this.button9.Text = "确认口令";             this.button9.Click += new System.EventHandler(this.button9_Click);             //             // textBox2             //             this.textBox2.Location = new System.Drawing.Point(88, 88);             this.textBox2.Name = "textBox2";             this.textBox2.PasswordChar = '*';             this.textBox2.Size = new System.Drawing.Size(168, 21);             this.textBox2.TabIndex = 3;             this.textBox2.Text = "";             this.textBox2.Leave += new System.EventHandler(this.textBox2_Leave);             //             // label2             //             this.label2.Location = new System.Drawing.Point(24, 88);             this.label2.Name = "label2";             this.label2.Size = new System.Drawing.Size(48, 23);             this.label2.TabIndex = 2;             this.label2.Text = "口令:";             //             // label1             //             this.label1.Location = new System.Drawing.Point(24, 40);             this.label1.Name = "label1";             this.label1.Size = new System.Drawing.Size(48, 23);             this.label1.TabIndex = 1;             this.label1.Text = "卡号:";             //             // textBox1             //             this.textBox1.Location = new System.Drawing.Point(88, 40);             this.textBox1.Name = "textBox1";             this.textBox1.Size = new System.Drawing.Size(264, 21);             this.textBox1.TabIndex = 0;             this.textBox1.Text = "";             this.textBox1.Leave += new System.EventHandler(this.textBox1_Leave);             //             // groupBox2             //             this.groupBox2.Controls.Add(this.textBox3);             this.groupBox2.Controls.Add(this.label3);             this.groupBox2.Controls.Add(this.richTextBox1);             this.groupBox2.Location = new System.Drawing.Point(144, 152);             this.groupBox2.Name = "groupBox2";             this.groupBox2.Size = new System.Drawing.Size(344, 256);             this.groupBox2.TabIndex = 1;             this.groupBox2.TabStop = false;             //             // textBox3             //             this.textBox3.Location = new System.Drawing.Point(32, 56);             this.textBox3.Name = "textBox3";             this.textBox3.ReadOnly = true;             this.textBox3.Size = new System.Drawing.Size(240, 21);             this.textBox3.TabIndex = 2;             this.textBox3.Text = "";             this.textBox3.TextChanged += new System.EventHandler(this.textBox3_TextChanged);             //             // label3             //             this.label3.Location = new System.Drawing.Point(32, 24);             this.label3.Name = "label3";             this.label3.Size = new System.Drawing.Size(216, 23);             this.label3.TabIndex = 1;             //             // richTextBox1             //             this.richTextBox1.Location = new System.Drawing.Point(8, 120);             this.richTextBox1.Name = "richTextBox1";             this.richTextBox1.Size = new System.Drawing.Size(328, 128);             this.richTextBox1.TabIndex = 0;             this.richTextBox1.Text = "";             //             // button1             //             this.button1.Location = new System.Drawing.Point(32, 168);             this.button1.Name = "button1";             this.button1.TabIndex = 2;             this.button1.Text = "查询余额";             this.button1.Click += new System.EventHandler(this.button1_Click);             //             // button2             //             this.button2.Location = new System.Drawing.Point(32, 216);             this.button2.Name = "button2";             this.button2.TabIndex = 3;             this.button2.Text = "取款";             this.button2.Click += new System.EventHandler(this.button2_Click);             //             // button3             //             this.button3.Location = new System.Drawing.Point(32, 264);             this.button3.Name = "button3";             this.button3.TabIndex = 4;             this.button3.Text = "存款";             this.button3.Click += new System.EventHandler(this.button3_Click);             //             // button4             //             this.button4.Location = new System.Drawing.Point(32, 312);             this.button4.Name = "button4";             this.button4.TabIndex = 5;             this.button4.Text = "转帐";             this.button4.Click += new System.EventHandler(this.button4_Click);             //             // button5             //             this.button5.Location = new System.Drawing.Point(32, 360);             this.button5.Name = "button5";             this.button5.TabIndex = 6;             this.button5.Text = "修改口令";             this.button5.Click += new System.EventHandler(this.button5_Click);             //             // button6             //             this.button6.Location = new System.Drawing.Point(520, 304);             this.button6.Name = "button6";             this.button6.TabIndex = 7;             this.button6.Text = "确认";             this.button6.Click += new System.EventHandler(this.button6_Click);             //             // button7             //             this.button7.Location = new System.Drawing.Point(520, 336);             this.button7.Name = "button7";             this.button7.TabIndex = 8;             this.button7.Text = "重新输入";             this.button7.Click += new System.EventHandler(this.button7_Click);             //             // button8             //             this.button8.Location = new System.Drawing.Point(520, 368);             this.button8.Name = "button8";             this.button8.TabIndex = 4;             this.button8.Text = "操作结束";             this.button8.Click += new System.EventHandler(this.button8_Click);             //             // Form1             //             this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);             this.ClientSize = new System.Drawing.Size(608, 429);             this.Controls.Add(this.button7);             this.Controls.Add(this.button6);             this.Controls.Add(this.button5);             this.Controls.Add(this.button4);             this.Controls.Add(this.button3);             this.Controls.Add(this.button2);             this.Controls.Add(this.button1);             this.Controls.Add(this.groupBox2);             this.Controls.Add(this.groupBox1);             this.Controls.Add(this.button8);             this.Name = "Form1";             this.Text = "自动桂员机";             this.groupBox1.ResumeLayout(false);             this.groupBox2.ResumeLayout(false);             this.ResumeLayout(false);         }         #endregion         ///         /// 应用程序的主入口点。         ///         [STAThread]         static void Main()         {             Application.Run(new Form1());         }         //查询余额         private void button1_Click(object sender, System.EventArgs e)         {             decimal balance;             string CardNo=textBox1.Text;             if(IsVerified)             {                 balance=bank.QueryByCardNo(CardNo);                 if(balance!=-1)                 {                     richTextBox1.AppendText("你的余额是:"+balance.ToString()+"\r\n");                 }                 else                 {                     richTextBox1.AppendText("请输入你的卡号或者口令!");                 }             }             else             {                 richTextBox1.AppendText("请先验证卡号和口令!\r\n");             }         }         //取款         private void button2_Click(object sender, System.EventArgs e)         {             if(IsVerified)             {                 label3.Text="请输入取款金额:";                 textBox3.ReadOnly=false;                                 IsWithdraw=true;                 IsDeposit=false;                 IsTransfer=false;                 IsUpdatePwd=false;             }             else             {                 richTextBox1.AppendText("请先验证卡号和口令!\r\n");                 label3.Text="";                 textBox3.ReadOnly=true;             }            }         //存款         private void button3_Click(object sender, System.EventArgs e)         {             if(IsVerified)             {                 label3.Text="请输入存款金额!";                 textBox3.ReadOnly=false;                                 IsWithdraw=false;                 IsDeposit=true;                 IsTransfer=false;                 IsUpdatePwd=false;             }             else             {                 richTextBox1.AppendText("请先验证卡号和口令!\r\n");                 label3.Text="";                 textBox3.ReadOnly=true;             }         }         //转帐         private void button4_Click(object sender, System.EventArgs e)         {             if(IsVerified)             {                 label3.Text="请输入帐号:";                 textBox3.ReadOnly=false;                                 IsWithdraw=false;                 IsDeposit=false;                 IsTransfer=true;                 IsUpdatePwd=false;             }             else             {                 richTextBox1.AppendText("请先验证卡号和口令!\r\n");                 label3.Text="";                 textBox3.ReadOnly=true;             }     }         //修改口令         private void button5_Click(object sender, System.EventArgs e)         {             if(IsVerified)             {                 label3.Text="请输入新的口令:";                 textBox3.PasswordChar='*';                 textBox3.ReadOnly=false;                 IsWithdraw=false;                 IsDeposit=false;                 IsTransfer=false;                 IsUpdatePwd=true;             }             else             {                 richTextBox1.AppendText("请先验证卡号和口令!\r\n");                 label3.Text="";                 textBox3.ReadOnly=true;             }         }         //确认输入的信息         private void button6_Click(object sender, System.EventArgs e)         {             //取款             if(IsWithdraw)             {                 string CardNo=textBox1.Text;                 decimal amount=decimal.Parse(textBox3.Text);                 if(bank.WithdrawByCardNo(CardNo,amount))                 {                     richTextBox1.AppendText("取款操作成功!你所取金额是:"+                         amount.ToString()+"\r\n");                 }                 else                 {                     richTextBox1.AppendText("取款操作失败!\r\n");                     richTextBox1.AppendText("你的存款余额可能不足!\r\n");                 }                 IsWithdraw=false;             }             //存款             if(IsDeposit)             {                 string CardNo=textBox1.Text;                 decimal amount=decimal.Parse(textBox3.Text);                 if(bank.DepositByCardNo(CardNo,amount))                 {                     richTextBox1.AppendText("存款操作成功!你所存金额是:"+                         amount.ToString()+"\r\n");                 }                 else                 {                     richTextBox1.AppendText("存款操作失败!\r\n");                 }                 IsDeposit=false;             }             //转帐             if(IsTransfer)             {                 if(IsTransfering)                 {                     TransferAmount=decimal.Parse(textBox3.Text);                     string FromCardNo=textBox1.Text;                     string ToCardNo=TransferCardNo;                     decimal amount=TransferAmount;                     if(bank.TransferByCardNo(FromCardNo,ToCardNo,amount))                     {                         richTextBox1.AppendText("转帐成功操作成功!\r\n");                         richTextBox1.AppendText("帐号是:"+ToCardNo+"\r\n");                         richTextBox1.AppendText("转帐金额是:"+amount+"\r\n");                     }                     else                     {                         richTextBox1.AppendText("转帐操作失败,可能是余额不足!\r\n");                     }                     IsTransfering=false;                     IsTransfer=false;                 }                 else                 {                     IsTransfering=true;                     TransferCardNo=textBox3.Text;                     label3.Text="请输入转帐金额:";                     textBox3.ReadOnly=false;                 }             }             //修改口令             if(IsUpdatePwd)             {                 string CardNo;                 string Password;                 CardNo=textBox1.Text;                 Password=textBox3.Text;                 if(bank.UpdateCardPassword(CardNo,Password))                 {                     richTextBox1.AppendText("口令修改成功!\r\n");                 }                 else                 {                     richTextBox1.AppendText("口令修改失败!\r\n");                 }                 textBox3.PasswordChar=char.Parse("\0");                 IsUpdatePwd=false;             }             if(!IsTransfering)             {                 label3.Text="";                 textBox3.ReadOnly=true;             }         }         //重新输入信息         private void button7_Click(object sender, System.EventArgs e)         {             if(textBox3.ReadOnly==false)             {                 textBox3.Text="";                 richTextBox1.AppendText("请重新输入你的信息!\r\n");             }         }         //操作结束,取卡,返回         private void button8_Click(object sender, System.EventArgs e)         {             richTextBox1.AppendText("谢谢你的使用!欢迎下次光临!\r\n");             textBox1.Text="";             textBox2.Text="";             textBox3.Text="";             textBox3.ReadOnly=true;         }         //确认卡号和口令是否正确         private void button9_Click(object sender, System.EventArgs e)         {             string CardNo=textBox1.Text;             string Password=textBox2.Text;             if(bank.VerifyCardNo(CardNo,Password))             {                 IsVerified=true;                 richTextBox1.AppendText("卡号和口令正确,请执行其他操作!\r\n");             }             else             {                 IsVerified=false;                 richTextBox1.AppendText("卡号或口令错误,请重新输入!\r\n");             }         }         //检查输入的数据格式是否正确         private void textBox3_TextChanged(object sender, System.EventArgs e)         {             if(textBox3.Text!="")             {                 if(IsWithdraw==true||IsDeposit==true||IsTransfering==true)                 {                     try                     {                         decimal.Parse(textBox3.Text);                     }                     catch(Exception ex)                     {                         MessageBox.Show(ex.Message+"请输入正确的数据格式!\r\n");                         richTextBox1.AppendText(ex.Message+"请输入正确的数据格式!\r\n");                     }                 }             }             else             {                 MessageBox.Show("数据不能为空,请输入数据!");                 richTextBox1.AppendText("数据不能为空,请输入数据!\r\n");             }         }         //验证卡号是否为空,如果不为空,验证卡号和口令是否正确         private void textBox1_Leave(object sender, System.EventArgs e)         {             if(textBox1.Text=="")             {                 MessageBox.Show("卡号不能为空!");                 richTextBox1.AppendText("卡号不能为空!\r\n");             }             else if(textBox2.Text!="")             {                 string CardNo=textBox1.Text;                 string Password=textBox2.Text;                 if(!bank.VerifyCardNo(CardNo,Password))                 {                     IsVerified=false;                     richTextBox1.AppendText("卡号或口令错误,请重新输入!\r\n");                 }             }         }         //验证口令是否为空,如果不为空,验证卡号和口令是否正确         private void textBox2_Leave(object sender, System.EventArgs e)         {             if(textBox2.Text=="")             {                 MessageBox.Show("口令不能为空!");                 richTextBox1.AppendText("口令不能为空!\r\n");             }             else if(textBox1.Text!="")             {                 string CardNo=textBox1.Text;                 string Password=textBox2.Text;                 if(!bank.VerifyCardNo(CardNo,Password))                 {                     IsVerified=false;                     richTextBox1.AppendText("卡号或口令错误,请重新输入!\r\n");                 }             }         }     } }
本文档为【毕业论文ATM机_银行存取款系统的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601191
暂无简介~
格式:doc
大小:376KB
软件:Word
页数:47
分类:生活休闲
上传时间:2017-09-19
浏览量:58