Java模拟ATM取款机系统
摘要
21世纪是催人奋进的时代,科学技术飞速发展,金融业ATM取款机的诞生可以说是世界金融行业中的一大进步,更是其发展历史性的转折点。本文以实际提款机应用为背景,阐述了系统开发过程的开发
、系统分析和一般步骤。
全文共分为ATM系统综述、ATM系统的开发方法、系统分析、系统设计、系统实现和系统维护与评价七个部分,利用JAVA语言强大功能,并具有面向对象开发等的特点,联系实际ATM应用界面,采用Eclipse开发工具,以winXP操作系统、Access为后台开发出了一套自动取款机系统,基本上实现了账户查询、修改密码、转账和取款等业务。
针对这一系列问题,我们利用JAVA语言在Eclipse下设计了这么一个系统,使得用户可以安全的进行操作,便捷,快速的进行取款以及完成一些商业上的交易,大大提高办公效率,能够及时、准确、有效的帮用户办理各种繁琐的手续,也减缓了银行工作人员的压力。
关键字:ATM Java Eclipse 计算机科学
目录
第一章 ATM系统综述 3
1.1 概述 3
1.2 ATM发展 3
1.3 ATM取款机系统的影响 3 第二章 ATM系统开发方法 4
2.1 方法概述 4
2.2 系统使用方法描述 5 第三章 ATM系统分析 5 3.1系统初步调查 5
3.2 系统可行性研究 5 3.3系统详细调查及提出 6 第四章 系统设计 8
4.1系统总体结构设计 8 4.2系统详细设计 10 第五章 系统实现 15 5.1软件开发环境 15 5.2 程序设计与调试 15 5.3试运行 16
第六章 系统维护 16 第七章 系统评价 16 第八章 结束总结 17 附:参考资料和源代码部分
第一章 ATM系统综述 1.1 概述
ATM自动取款机是由计算机控制的持卡人自我服务型的金融专用设备。
ATM是英文Automatic Teller Machine的缩写。ATM是最普遍的自助银行设备,可以提供最基本的银行服务之一,即出钞交易,有些全功能的产品还可以提供信封存款业务。在ATM自动取款机上也可以进行账户查询、修改密码和转账的业务。
同时在制作这个系统的过程中也应用了数据库的知识,这个相对于我们专业来说是比较重要的内容,这个也是这个学期学习的重点知识,同时数据库链接是必须要学会的,因为这个是最核心的内容,培养自己坚实的逻辑
达能力和沟通能力,和培养自己良好的文案能力。掌握ATM取款机的具体工作原理以及java简单系统的设计方法。
1.2 ATM的发展
众所周知随着信息时代科技的飞速发展和随着全球金融行业的兴起,使用ATM取款机、计算机信息技术以及计算机科学技术的发展,给人们的生活带来了天翻地覆的变化,同时这些技术在人们生活中的运用,随着科学技术的进步,经营方式的转变,处理信息系统的内容和形式也在发生变化。当前,以计算机和通信技术为基础的信息系统正处在蓬勃发展的时期,ATM取款系统可充分利用网络技术和数据库技术的发展,形成一种全新的运作方式。随着因特网的形成和发展,基于网络技术的信息系统除了它传统的功能外,实现了特定地方刷卡消费等。不仅提高了银行的业务处理能力,而且大大的节省了人们取钱所花费的时间和价值;并且在有效防止了一些非法的业务操作,对于一些复杂的信息,就能够充分的发挥它们的优越性。
虽然起步较晚,近几年发展却较快,优其是随着微型计算机的出现和普及,为信息处理提供了物美价廉的手段,对于推动我国信息处理的现代化起了重要的作用。ATM取款系统正在朝着自适应、自学习的方向发展,也就是更好的实现模
拟人性化过程。
1.3 ATM取款机系统的影响
ATM取款机诞生可以说是世界金融行业的一大进步,也是历史性的转折点。ATM自动取款机不仅能提高了银行的业务处理能力,还能大大的节省人们取钱所花费的时间和价值;并且在有效防止了一些非法的业务操作,对于一些复杂的信息,就能够充分的发挥它们的优越性。
ATM系统对金融业的变革产生了和正在产生着深远的影响。从现代金融业新概念来看,ATM系统就是电子信息技术在金融业金融管理的一种应用。它避免了对于用户的信息资料、以及资金统计等用人工办理。数据信息处理工作量大,繁琐,数据处理手工操作,工作量大,工作时需实时认真办理,一但出现错误将带来很大的损失。从而解决了用户信息和资金信息的繁杂问题,对于ATM取款系统数据的统计和核实等都是采用卡号进行核对的,进而实现了数据的准确性、完整性、及时性,避免了工作人员和管理员工作时间一长,再进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。
同时也得用户可以安全的进行操作,便捷,快速的进行取款以及完成一些商业上的交易,大大提高办公效率,能够及时、准确、有效的帮用户办理各种繁琐的手续,也减缓了银行工作人员的压力。
第二章 ATM系统开发方法
2.1 系统开发方法概述
软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软
件生产的过程。开发目标是在规定的投资和时间内,开发出符合用户需求的高质量的软件。任何系统均有其产生、发展、成熟、消亡或更新换代的过程。这个过程称为系统的生命周期。系统生命周期法提供的思路、逻辑、技能、工具与工作规范,是系统开发、处理管理信息系统建设中各类实际问题的重要基础,对复杂系统的建设具有重要的指导意义。系统开发是管理信息系统建设中工作任务最为繁重,也是最重要的一个阶段。从项目开发到结束的整个过程,称为系统开发的生命周期。系统开发的生命周期一般分为系统分析、系统设计和系统实施。
结构化生命周期法是一种面向数据流的开发方法。该方法简单实用、应用较广、技术成熟,方法的指导思想是自顶向下、逐步求精,基本原则是动能的分解与抽象,特别适合于数据处理领域的问题,随着开发项目规模的变化,该方法也就暴漏出了它的缺点:(1)对于规模大、特别复杂的项目不太适应(2)难于解决软件重用问题(3)难于适应需求变化问题,难于彻底解决维护问题。
到了90年代,主流的开发方法是面向对象的开发方法,它的基本出发点是尽可能的按照人类认识世界的方法和思维方式来分析和解决问题。面向对象方法支持软件重用和原型概念,提高了系统开发的效率,因而得到了ATM系统各计算机界的极大关注。该方法包括面向对象分析、面向对象设计、面向对象实现。
系统开发工作的自动化、计算机化是提高系统开发效率与质量的重要途径。计算机辅助软件工程(简记为CASE)也是当前信息系统领域和计算机应用领域的热门话题。CASE技术的目标是实现系统开发生命周期内各阶段工作基于计算机的自动化。这将导致系统开发工作的根本变化。
2.2 该系统开发方法
比较各种开发方法的特点,结合银行取款系统的实际情况,整个系统采用结构化生命周期法,以原型法和面向对象的开发方法作为辅助,即系统总体上采用结构化生命周期法进行系统分析和系统设计,系统实施等步骤采用面向对象方法。本系统开发工具使用的是基于 Java 的可扩展开发平台的Eclipse。
第三章 系统分析
系统分析是管理系统开发的起始阶段,也是MIS开发工作中最重要的一环。系统分析阶段的主要活动有:系统初步调查、可行性研究、系统详细调查、新系统逻辑
的提出。系统分析的目标是明确系统开发的目标和用户信息需求,提出系统的逻辑方案。为系统设计做好准备。
3.1 系统初步调查
系统的初步调查是系统分析阶段的第一项活动,也是系统开发的第一项活动,初步调查的主要目标是从系统分析人中和管理人员的角度看新系统开发有无必要和可能。
通过亲身体验总结各银行ATM提款机界面流程,得到本系统开发的主要流程界面(主要功能取款、转账、查询、修改密码等)。并决定亲自开发取款机系统,测试自己水平。
3.2 可行性研究
可行性研究的目的就是用最小的代价在最短的时间内确定该软件项目是否能够开发,是否值得去开发。实质上就是进行一次简化、压缩了的需求分析、
设计过程。可从以下三个方面分析研究每种解决问题的可行性:
a.技术可行性:对项目的功能、性能、限制条件进行分析,确定在现有的资源条件下项目是否能实现。(开发的风险、资源的有效性、技术)
b.社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有#管理
#、人员素质、操作方式是否可行。
c.经济可行性:进行开发成本的估算以及了解得到效益的评估,确定要开发项目是否值得投资开发。对银行业来说,是靠存款贷款之间的差额来生存的,所以要尽可能的拉拢更多的客户使用本行,ATM取款机是为了能让为客户更便捷的服务,从而更具有吸引力。银行角度出发还是非常还是愿意把一部分资金投入到这方面的。
3.3系统详细调查及提出
系统详细调查是在可行性研究的基础上进一步对现行系统进行全面、深入的调查和分析,弄清现行系统运行状况,发现其薄弱环节,确保新系统比原系统更有效。详细调查的重点在于对系统的内部情况更详细和具体的了解,从而可以提供在新系统建设时改进或更换的内容。
明确用户的信息需求,明确新系统的逻辑功能。主要工作是对用户需求进行进一步调查分析,创建新系统的逻辑模型。逻辑模型主要以数据流程图和数据典为主要描述工具。
通过仔细调查得以下功能图和业务流程图:
一般登陆模块只输入账号、密码,当然在实际应用中没有要求用户输入账
号,这是因为在磁卡上有个感应区,编此模块时加上了验证码。
图3-1 功能图
----
该系统主要实现银行卡用户的存取款,以及进行一些简单的查询和转账业务,同时能够在系统里面进行客户密码的修改,实现简单的机器与客户交互。
图3-2 业务流程图:
第四章 系统设计
系统设计阶段的主要目的是将系统分析所提出的反映用户信息需求的系统逻辑方案转换成可以实施的基本计算机(ATM取款机)与通信系统的物理(技术)方案。
系统设计主要包括系统总体结构设计和详细设计。系统设计的依据主要有系统分析的成果、现行技术、用户需求、系统运行环境。
4.1 系统总体结构设计
系统总体结构是指整个系统由哪些部分组成,以及各部分在物理上、逻辑上的相互关系,包括硬件部分和软件部分,该设计包括:系统总体布局方案的确定、软件系统总体结构的设计、计算机硬件方案的选择和设计、数据存储的总体设计。根据业务流程图转化为软件的体系结构,进而用软件结构图建立物理模型,得系统活动图,如下:
图4-1系统结构图:
图4-2系统活动图:
4.2 系统详细设计
详细设计的实现根据结构程序设计原理,将每个模块的功能用相应的标准语句表示出来。包括代码设计、数据库设计、用户界面设计、处理过程设计。代码设计是指把系统管理对象数字化或字符化,便于计算机的处理。遵照代码设计的原则:合理性、简明性、系统性、稳定性、可扩充性、标准化、便于识别和记忆。
数据库设计指对系统所采用的数据模式、子模式、应用程序、数据库等根据用户的具体要求进行分析和设计。它也是管理信息系统设计的重要组成部分。数据库设计的基本原则是尽可能提高数据组织的相对独立性,简化其结构,即用规范化方法设施数据存储的结构,提高数据的可维护性、完整性、一致性。通过收集和分析用户需求,确定了数据库要保存的信息,我将此次数据库设计为二个如下所示表的设计如下:
一、系统设置
1、客户表user CardID
字段信息 字段名称 类型 宽度 小数位数 空特性
姓名 uname varchar 18
性别 usex varchar 18
身份证号 uid int 10N
卡号 ucno int 10N
图 4-3用户信息设计表
2、账户表card CardID
字段信息 字段名称 类型 宽度 小数位数 空特性 卡号 cno int 10N
账户余额 cjine int 10N
密码 cnima int 10N
图 4-4 账户信息设计表
二、界面模块设置
用户界面设计目前已成为评价软件质量的一条重要指标,所谓用户界面是
批软件系统与用户交互的接口,通常包括输入、输出设计、人机对话的界面设计。
图 4-5登录模块
当插入现金卡之后出现界面, 系统出现选择中英文的登入方式,点击按钮之
后(中文)出现后对话框: 图 4-6输入界面
登录模块依然采用的是密码验证的方式,需要用户输入卡号、密码和验证码然后点击确认进行验证,程序将根据输入卡号查找密码,第一没有找到提示,找到继续下一步,在这里我用了验证码方式,输入正确继续,程序系统将根据卡号调用后台数据库查找与卡号对应的密码并与用户输入的密码相对比。密码正确继续,否则当输入的次数达到三次时,系统将提示你与前台服务员取得联系。第二如果没有找到,提示输入账号错误。
图 4-7首页设计
首页的设计主要是设计了查询余额、取款、转账、密码更改及退出按钮等ATM的一些标准操作界面。
图 4-8查询模块
在此模块中,将通过用户所使用的账户编号来进行余额的查询,将显示账户的实际余额,点击“查询”按钮,通过按钮的Action方法进行方法调用,就可以实现查询的功能并把查询到的账户余额显示到界面上。当用户点击“返回”时,程序返回到初始主界面。
图 4-9 查询卡信息模块
此功能用来显示持卡人的基本信息包括姓名、性别、身份证、卡号等,点击查询按钮后系统将根据与输入的卡号相一致的字段信息,显示输出在该页面上。当点击取消按钮时系统将返回到初始主界面。
图 4-10 修改密码模块此模块需要用户输入旧密码后,两次输入新密码进行确认,然后,点击确定,修改密码,成功后给出提示信息,其中考虑到一些用户的输入错误问题,我做出了一些异常的判断和处理,空输入,输入两次新密码不匹配和原密码不正确等问题。修改更新密码的完成仍然依靠按钮控件的Action事件完成。图 4-11 转账业务模块在此模块,用户根据需要自己输入卡号及欲转金额,这里的设计其实最终归结于具体的SQL语句而言,系统将根据输入的卡号查找与只对应的用户数据表,从而修改金额。第一,系统首先根据本卡号,查找本卡金额与输入的金额对比,如果找到,且金额允许就提示转账成功。第二,如果,没有找到输入的卡号,提示没有该用户,重新输入欲转账号。 图 4-12 取款模块
取款模块是一个相对比较重要的模块,因为ATM机就要的功能就是取款业务,用户选择账户名点击取款金额然后点击取款进行取款操作,所以几个数字按钮的设计比较大,方便用户操作,其中一些提示信息也相应地给出,以防用户误操作。由于此模块不需要用户输入,所以没有对输入的异常处理。根据所查资料我所采用的SQL语句调用方法是预处理指令方法,这种方法对于处理此程序具有很大的益处,而且可以防止非法SQL注入。当用户点击数组按钮后系统将根据输入的卡号查找卡号余额并与按钮的数字相对比,如果选择的金额大于本卡余额将提示(不允许透支)。
图 4-13 退卡模块
退卡模块相对简单多了,没有什么具体的界面设计,只是一个消息的提示,也是一种友好的处理方式,以防止用户误操作的方法。
第五章 系统实现
系统实施是ATM系统开发过程中的最后一个阶段。它的目标是将技术设计转化成物理实现。系统实施阶段的主要任务有:按总体设计方案购置和安装计算机网络系统、建立数据库、编程与调试、整理基础数据、
操作人员、程序试运行和系统切换。
5.1 开发环境
1、软件开发具的选择
本系统采用Java作为编程语言,采用Eclipse软件开发环境,Eclipse对数据库应用的强大支持,使数据库应用开发功能更强大,控制更灵活,编译后的程序运行速度更快。
2、数据库管理系统的选择
由于本次设计所采用的是Microsoft Office Access 型数据库,这种数据库用来存储少量数据,在设计和实施上有很大的优势,根据之前所做的功能分析,以及ATM柜员机自身所具备的功能。
3、开发平台的选择
windows 平台以其全新的界面简单快捷的操作方式而成为软件开发的趋势。根据本系统的运行环境和实际情况,选择Windowsxp作为开发测试和运行的
平台。
5.2 程序设计与调试
1、程序设计程序设计语言的选择通常考虑到项目的应用领域、软件开发方法、软件执行环境、算法和数据结构的复杂性、和软件开发人员的知识。程序设计是指使用选定的程序设计语言,把经过概要设计各详细设计所得到的信息处理过程,转换成能在计算机上运行的程序源代码。
本系统中用Eclipse编程工具,采用结构化的编程方法对模块进行程序编写。具体源程序见附页。
2、程序调试
软件测试的目的是尽可能多的发现程序中的错误,而调试则是在进行了成功的测试之后才开始的工作。程序调试是指在系统测试的基础上,将发现的问题进行改正,使之符合设计标准。本系统采用的主要方法如下:
单元测试:是指原程序中每个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。采用白盒法对各模块进行逻辑错误排查,用黑盒法录入一些有特征的数据从不同角度验证结果。
集成测试:在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行测试。
确认测试(有效性测试):它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合。一般分为用黑盒进行确认测试,再检查软件所有文档的完整性、正确性??软件配置审查。
5.3 试运行
系统试运行是指对系统的运行环境和资源进行设置、系统运行和控制参数设定、数据加载以及调整系统与业务工作同步等。
第六章 系统维护
系统维护是软件生存周期中时间最长的一个阶段,所花费的精力和费用也是最多的一个阶段,系统维护的目的是保证系统中的各个要素随着环境的变化始终处于最新的、正确的工作状态。系统维护是信息系统可靠运行的重要技术保障,我们应给予足够的重视。
系统维护内容有校正性维护、适应性维护、完善性维护和预防性维护四种。
校正性维护:为了识别和纠正错误,修改软件性能上的缺陷,进行确定和修改错误的过程。
适应性维护:为了使应用软件适应变化而修改软件的过程
完善性维护:为了适应变化,应用软件原来的功能和性能需要扩充和增强。从而达到提高软件运行效率,增强软件性能而进行的维护。
预防性维护:为了提高软件的可维护性和可靠性而对软件的修改。
第七章 系统评价
系统评价应是贯穿系统整个生命周期各个阶段的重要决策手段和工作环节。狭义上的系统评价是指系统投入运行后从功能性能、经济效益、社会效益上
的评价
本系统基本实现了取款、查询余额、转账、修改密码等功能,但由于时间短、知识水平有限,经验不足,系统仍存在不足,该系统主要有以下特点: 1、程序可读性强,易懂易维护
2、用户界面简洁,方便了用户使用。
3、安全性好,系统仍然使用输入密码方式,保证了系统的安全。
4、系统稳定,基本达到预期的功能要求。
5、系统还存在着许多不足,特别是在数据库的链接上,在代码的编写上也存在着很多的不足,代码存在着很多的缺陷。
6、在系统的的界面效果上也存在不足,系统界面显示应在屏中间。
总的来说,本次设计当中存有许多的不足之处,基本上设计出了和自己预想中的效果,但同时在设计上也还存在着很多的,很多事没有什么用的代码,我想是因为时间和经验的问题,以后多练习就肯定能提高,UI设计方面,仔细地看,还有一些小问题,系统运行时的警告就多达36处,但不会影响程序的运行,只会在美观方面有一定的影响,今后一定改善。
第八章 结束语
1.通过java编写简单的ATM登录系统的设计,我不仅复习了上学期的java编程设计基础知识,并且增强了我对java语言的领悟和应用,同时也更深刻的懂得了学好学会了并不是代表能够真正的在实践中运用得流畅,这次实践给了我们
一个既动手又动脑独立实践的机会,但其中也包含了自我寻找资料的能力和同学间的合作能力。这个系统将理论和实践相结合,提高自己的分析、解决问题的能力,并且让我明白了计算机的技术一定要从实际出发才能真正的提高自己的能力;
2.经过了一个多月的设计和编写这个系统,我深刻的认识到了自己的不足和缺点,自己处在什么水平,和同学相比自己的差距有多大,但是我也发现了自己的优点和长处,不管怎么样,通过这次学习,我懂得了怎样取长补短,充分利用网络资源的重要性。
3.撰写论文,受到了杨占敏老师的悉心指导,同事朋友的热心帮助,在此表示衷心的感谢!
附:一、要参考资料:
参考文献
[1] 夏宽理《Java语言程序设计1》 机械工业出版社 2008-04出版 [2]张孝祥,《Java就业培训教程》,清华大学出版社. 2008.6 [3] 陆丽娜 《软件工程》 经济科学出版社2000年3月 [4] 丁宝康 《数据库系统原理》 经济科学出版社 2007年版
二、源代码部分
import java.awt.*;import //.nection;
import //.verManager;
import //.ultSet;
import //.Exception;
import //.tement;
import javax.swing.*;
import //.nt.*;
class Panel1 extends JPanel
JLabel label1,label2;
Panel1
setLayoutnew GridLayout4,1;
label1new JLabel" "+"银行存取款系统";label2new JLabel" "+"
欢迎你成为本行用户,你可以选择中文或英文方式";
addnew JLabel;addlabel1;addlabel2;addnew JLabel;
class Panel2 extends JPanel
JButton button1,button2;
Panel2
setLayoutnew GridLayout3,6;
button1new JButton"中文";button2new JButton"英文";
addnew JLabel;addnew JLabel;addnew JLabel;addnew JLabel;addnew JLabel;
addnew JLabel;addnew JLabel;addbutton1;addnew JLabel;addnew JLabel;
addbutton2;addnew JLabel;addnew JLabel;addnew JLabel;addnew JLabel;
addnew JLabel;addnew JLabel;addnew JLabel;
class Client extends JFrame implements ActionListener
Panel1 panel1;Panel2 panel2;JFrame frame;
ClientString s
supers;
Container conthis.getContentPane;
con.setLayoutnew GridLayout2,1;
panel1new Panel1;panel2new Panel2;
con.addpanel1;con.addpanel2;
panel2.button1.addActionListenerthis;
panel2.button2.addActionListenerthis;
this.setVisibletrue;this.pack;
public void actionPerformedActionEvent e
ife.getActionCommand"中文"
this.setVisiblefalse;
new Client00"输入密码";
else ife.getActionCommand"英文"String inputValue
JOptionPane.showInputDialog"Please input a value";
public class bankSystem
public static void mainString []args
new Client"用户取款系统";
class Panel01 extends JPanel
JLabel label1,label2,label3,label4;JPasswordField textA;JTextField textC;
static JTextField textB;char t[]new char[4];
Panel01
setLayoutnew GridLayout4,4;
forint i0;i4;i++t[i]charMath.random*26+'a';
String mmnew Stringt;
label2new JLabel"请输入卡号:";label1new JLabel"请输入密码:";
label3new JLabel;label4new JLabel"请输入验证
码:";label3.setBackgroundColor.white;
label3.setForegroundColor.red;
textCnew JTextField10;//.e;
label3.setTextmm;
textAnew JPasswordField6;textA.setEchoChar'*';textBnew
JTextField"";
forint i0;i5;i++addnew JLabel;
addlabel2;addtextB;addnew JLabel;addnew JLabel;
addlabel1;addtextA;addnew JLabel;addnew JLabel;
addlabel4;addtextC;addlabel3;
class Panel02 extends JPanel
JButton button1,button2;
Panel02
setLayoutnew GridLayout3,6;
button1new JButton"确定";button2new JButton"取消";
forint i0;i7;i++addnew JLabel;addbutton1;addnew JLabel;addnew
JLabel;
addbutton2;forint i0;i6;i++addnew JLabel;
class Client00 extends JFrame implements ActionListener
Panel01 panel1;Panel02 panel2;JFrame frame;int i0,j0;
Client00String s
supers;
Container conthis.getContentPane;
con.setLayoutnew GridLayout2,1;
panel1new Panel01;panel2new Panel02;
con.addpanel1;con.addpanel2;
panel2.button1.addActionListenerthis;
panel2.button2.addActionListenerthis;
this.setVisibletrue;this.pack;
public void actionPerformedActionEvent e
char[] passwordspanel1.textA.getPassword;String passwordnew
String"112626";//设置账号123456789的初始密码为112626,每输入一次都有
提示,在连续输入三次不正确后系统自动退出。
//.als"确定"
ifpanel1.//.alspanel1.label3.getText
heshi;
elseJOptionPane.showMessageDialogframe,"你输入的验证码有误,请
重新输入。";
else ife.getActionCommand"取消"this.setVisiblefalse;new Client08“”;
public void heshi
ifpanel1.//.als""||panel1.//.als""
JOptionPane.showMessageDialogframe," 请输入账号、密码!";
return;
String url "jdbc:odbc:driverMicrosoft Access Driver
*.mdb;DBQbankSystem.mdb";//程序直接使用当前类目录下的数据库文件
try
Class.forName"//.c.JdbcOdbcDriver";
Connection conDriverManager.getConnectionurl;
Statement sqlcon.createStatement; String qlpanel1.textB.getText;
ResultSet rssql.executeQuery"select cnima from card where
cno"+ql+"";
ifrs.next
String qerycmimapanel1.textA.getText;
String srs.getString1;
ifqerycmima.equalss
JOptionPane.showMessageDialogframe," 连接成功!";
this.setVisiblefalse;new Client01"用户取款系统";
else ifi!2i++;j3-i;
JOptionPane.showMessageDialogframe,"密码有误! 你还有"+j+"次机
会,请你再仔细想想.";
panel1.textA.setText"";
else JOptionPane.showMessageDialogframe,"对不起,你输入的密码次
数达三次,下次再见。";System.exit0;
con.close;
frame.repaint;
elseJOptionPane.showMessageDialognull,"该用户不存在,重新输入!","警告!", JOptionPane.YES_NO_OPTION;
panel1.textA.setText"";panel1.textB.setText"";panel1.textC.setText"";
return;
catchSQLException g
//.ntln"E Code"+g.getErrorCode;
//.ntln"E M"+g.getMessage;
catchException e
e.printStackTrace;
class bankSystem00
public static void mainString []args
new Client00"用户取款系统";
class Panel03 extends JPanel
JButton button1,button2,button3,button4,button5;
Panel03
setLayoutnew GridLayout8,6;
button1new JButton"查询";button2new JButton"取款";
button3new JButton"转账";button4new JButton"退出";button5new
JButton"修改密码";
forint i0;i7;i++addnew JLabel;addbutton1;addnew JLabel;addnew JLabel;
addbutton2;forint i0;i8;i++addnew JLabel;addbutton3;addnew JLabel;addnew JLabel;addbutton5;
forint i0;i17;i++addnew JLabel;addbutton4;forint i0;i7;i++addnew JLabel;
class Client01 extends JFrame implements ActionListener
Panel03 panel1;JFrame frame;
Client01String s
supers;
Container conthis.getContentPane;
panel1new Panel03;con.addpanel1;
panel1.button1.addActionListenerthis;panel1.button2.addActionListener
this;
panel1.button3.addActionListenerthis;panel1.button4.addActionListener
this;panel1.button5.addActionListenerthis;
this.setVisibletrue;this.pack;
public void actionPerformedActionEvent e
ife.getActionCommand"取款"
this.setVisiblefalse;
new Client02"请选择取款金额";
else ife.getActionCommand"查询"
this.setVisiblefalse;
new Client06"查询服务";
else ife.getActionCommand"修改密码"
this.setVisiblefalse;
new Client05"修改密码服务";
else ife.getActionCommand"转账"
this.setVisiblefalse;
new Client04"用户转账服务";
else ife.getActionCommand"退出" this.setVisiblefalse;new
Client08“”;
class bankSystem01
public static void mainString []args
new Client01"用户取款系统";
class Panel04 extends JPanel
JButton button1,button2,button3,button4;
Panel04
setLayoutnew GridLayout4,6;
button1new JButton"100";button2new JButton"200";
button3new JButton"300";button4new JButton"500";
forint i0;i7;i++addnew JLabel;addbutton1;addnew JLabel;addnew JLabel;
addbutton2;forint i0;i8;i++addnew JLabel;addbutton3;addnew JLabel;
addnew JLabel;addbutton4;addnew JLabel;
class Panel05 extends JPanel
JButton button1,button2,button3,button4;
Panel05
setLayoutnew GridLayout4,6;
button1new JButton"800";button2new JButton"1000";
forint i0;i7;i++addnew JLabel;addbutton1;addnew JLabel;addnew JLabel;
addbutton2;forint i0;i13;i++addnew JLabel;
class Client02 extends JFrame implements ActionListener
Panel04 panel1;Panel05 panel2;JFrame frame;
Client02String s
supers;
Container conthis.getContentPane;
con.setLayoutnew GridLayout2,1;
panel1new Panel04;panel2new Panel05;
con.addpanel1;con.addpanel2;
panel1.button1.addActionListenerthis;panel1.button2.addActionListenerthis;
panel1.button3.addActionListenerthis;panel1.button4.addActionListenerthis;
panel2.button1.addActionListenerthis;panel2.button2.addActionListenerthis;
this.setVisibletrue;this.pack;
public void actionPerformedActionEvent e
ife.getActionCommand"100"
this.setVisiblefalse;
qukuan; //程序根据输入金额和输入卡号,修改数据库。
new Client01"用户取款系统";
else ife.getActionCommand"200"this.setVisiblefalse;new Client01"用户取款系统"; //这里当点击取款金额200时,程序返回上层操作界面。
public void qukuan
String url "jdbc:odbc:driverMicrosoft Access Driver *.mdb;DBQbankSystem.mdb";//程序直接使用当前类目录下的数据库文件
try
Class.forName"//.c.JdbcOdbcDriver";
Connection conDriverManager.getConnectionurl;
Statement sqlcon.createStatement;String
qlPanel01.textB.getText;
ResultSet rssql.executeQuery"select cjine from card where cno"+ql+"";
ifrs.next
String mmrs.getString1;
int nn Integer.parseIntmm;
String qerycjinepanel1.button1.getActionCommand;
int queryjineInteger.parseIntqerycjine;
ifqueryjinenn
int newjinenn-queryjine;String newjinString.valueOfnewjine;
int updateMimasql.executeUpdate"update card set
cjine'"+newjin+"'where cno"+ql+"";
ifupdateMima1
JOptionPane.showMessageDialogframe,"操作已成功,谢谢使用!";
this.setVisiblefalse;
new Client01"用户取款系统";
elseJOptionPane.showMessageDialognull,"你的卡余额已不足,请注
意!","警告!", JOptionPane.Y