javaATM柜员机模拟程序文件
java课程设计ATM柜员机模拟程序
数据库连接:使用JDBC连接 数据库,进行数据查询
查询语句:编写SQL查询语句, 根据用户输入进行查询
结果展示:将查询结果以列表 或表格形式展示给用户
05
AT M 柜 员 机 的 数 据 库 设计
数据库表结构设计
用户表:存储用户信息,包括用户名、密码、余额等 交易表:记录用户的交易信息,包括交易时间、交易金额、交易类型等 账户表:存储账户信息,包括账户编号、账户类型、账户余额等 银行信息表:存储银行信息,包括银行名称、银行地址、银行电话等 系统日志表:记录系统操作日志,包括操作时间、操作人、操作内容等
网络中断等
性能测试与优化
测试方法:压力测 试、负载测试、稳 定性测试等
测试工具: JMeter、 LoadRunner等
优化目标:提高系 统响应速度、减少 资源消耗、提高系 统稳定性等
优化方法:代码优 化、数据库优化、 缓存优化等
调试过程与问题解决
测试环境搭建:安装Java开发环境,配置 数据库,安装模拟器等
06
AT M 柜 员 机 的 测试与调试
01 添加章节标题
02
AT M 柜 员 机 模 拟 程 序 概述
AT M 柜 员 机 的 基 本 功 能
存 款 : 用 户 可 以 将 现 金 存 入 AT M 柜 员 机 , 系统会自动识别并记录存款金额
转 账 : 用 户 可 以 通 过 AT M 柜 员 机 进 行 转 账操作,系统会自动记录转账信息
异地备份:将 备份数据存储 在异地,防止 自然灾害等意 外情况导致的
数据丢失
访问控制:设 置严格的访问 控制策略,防 止未授权访问
安全审计:定 期进行安全审 计,及时发现 并修复安全漏
ATM柜员机模拟程序文档
西安科技大学软件工程课程设计报告题目:ATM柜员机模拟程序班级:信计0801学号:080806013008080601260808060125姓名:覃永贤上官恩辉申松2010年12月目录1概述1.1目的及意义1.2 设计内容1.3 人员组成及分工2系统分析2.1 问题背景及概况2.2 系统需求分析3 系统设计3.1 软件结构设计3.2 数据库设计4系统实现4.1 开发环境4.2 关键技术4.3 主要功能代码5系统测试参考文献日历系统设计文档1 概述1.1目的及意义目的:1、培养独立的Java语言与算法设计方法,具备初步的独立分析和设计能力;2、学习软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3、训练综合运用所学的理论知识和方法进行独立分析和解决问题的能力;4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
意义:模拟ATM柜员机的相关功能,实现其取款、余额查询、密码修改等相关功能,通过课程设计让我们了解其相关方面的运作过程。
1.2 设计内容使用图形用户界面模拟ATM柜员机的相关功能。
功能如下:1.实现用户登录功能。
2.实现余额查询功能。
3.实现取款功能。
4.实现密码修改功能。
1.3 人员组成及分工1、组员名单:覃永贤申松上官恩辉2、组员分工:(1)覃永贤负责程序设计(2)上官恩辉负责需求分析(3)申松负责软件测试2系统分析2.1 问题背景及概况人们日常生活中经常使用ATM柜员机,其极大的方便了人们的日常生活,同时在使用的过程中也会遇到这样那样的问题,如果有一款软件模拟ATM,可以帮助人们了解其运行过程,避免有些不必要的麻烦。
2.2 系统需求分析:2.2.1功能需求分析(1)用图形用户界面实现。
本系统基于JA V A采用多线程的程序设计,使得界面清晰直观,系统全部通过界面来实现系统的功能需求。
2.2.2性能需求分析(1)可靠性高,能在由于系统问题或其它原因产生错误后,作出相对应处理,比如数据未初始化等,在出现不可知的错误以后,可以尽量安全的退出程序。
JAVA版ATM自动取款机程序
}
public void setPassword(String p) {
this.password=p;
}
public void setMoney(double m) {
this.money=m;
}
protected String getCode() {
M0p.setLayout(new FlowLayout());
M1p.setLayout(new FlowLayout());
M2p.setLayout(new FlowLayout());
M3p.setLayout(new FlowLayout());
M4p.setLayout(new FlowLayout());
return code;
}
protected String getPassword() {
return password;
}
public double getMoney() {
return money;
}
}
class ATM extends JFrame implements ActionListener
}
//登录后的初始界面
public void init(){
contentpane.remove(Mpane);
Mpane = new JPanel();
JPanel M0p = new JPanel();
JPanel M1p = new JPanel();
JPanel M2p = new JPanel();
Jb2 = new JButton("ATM取款");
javaATM柜员机模拟程序
课程论文现代软件工程与实践题目:ATM柜员机模拟程序学院(系):信息工程学院专业班级:学生:指导教师:2011 年12月4日摘要通过设计ATM柜员模拟程序,加深自己对Java编程尤其是对Java图形用户界面编程的了解,将自己的学到的编程知识融会贯通,同时培养自身面向对象软件开发的思维,初步了解软件开发的一般流程,提高用Java实际动手能力并增强自己对面向对象的了解。
通过这次编程设计,加深了对Java图形界面编程中各个模块和组件的应用了解,以及类和类之间的关系,界面排版的处理等。
设计要,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行(规则可以按照实际系统做需求):(1)查询余额:初始余额为10000元。
(2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
(3)ATM存款:不能出现负存款。
(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
该程序设置了7个类,1个主类6个辅助类,6个辅助类都是部类的形式,辅助类包括五个实现ATM的功能,一个存放客户资料,之所以用部类来实现是为了在各个界面转换时不至于要创建多个对象,每一个辅助类的对象只要在主类中创建一次就可以在各个部类中引用。
该程序利用的功能是利用Java事件监听技术来实现的,各种功能单独的创建一个类来实现,不会互相混淆,更加容易理清楚思路。
设计的程序完美的实现了设计要求,具有查询、取款、存款、修改密码等功能。
目录摘要 (I)目录 (II)1 前言 (1)1.1设计任务 (1)1.1.1 需求说明 (1)1.2设计容 (1)2 程序要求 (1)3 算法分析 (2)4 流程图 (3)5 程序源代码及说明 (4)5.1程序源代码 (4)5.2源代码说明 (21)5.2.1 源代码中自定义类的说明: (21)5.2.2源代码中的事件监听器 (22)6 调试及运行结果 (22)7 体会 (29)8 参考文献 (29)1 前言1.1 设计任务1.1.1 需求说明随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。
java自动取款机模拟程序报告含源代码
合肥学院计算机科学与技术系课程设计报告2013~2014学年第一学期课程面向对象课程设计课程设计名称自动取款机模拟程序学生姓名夏中雨学号1204013021专业班级12计本(3)指导教师胡春玲、张贯虹20 13年12月一、前言 3二、需求分析 31、功能需求 3A、管理端方面 3B、客户端方面 32、基本的安全控制机制。
43、性能需求: 44、出错处理需求 4三、设计理论和环境 41、系统设计理论 42、系统设计环境 4四、系统数据库设计 41、数据库构建语句 42、表构建语句 5五、总体设计 5B、管理端界面 53、删除银行卡账户对话框: 74、查询: 75、显示全部: 8C、客户端界面 92、客户端操作界面 103、余额查询 104、修改密码 115、存款 116、取款 12六、具体设计 121、各类主要功能及相互关系。
122、关键代码。
13(2)、删除银行卡 14(3)、验证客户登陆 15(4)、余额查询 16(5)、修改密码 17(7)、取款 19(8)、连接数据库 21七、总结 21八、参考文献 221、前言基于进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力的考虑和全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
学院进行了此项课程设计教学活动,此次课程设计的主要任务是为了训练同学们利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
针对这次课程设计任务,我对于给定的题目,进行了详细分析,理清了思路,弄明白了应该分几步走,每一步应该怎么走。
顺利完成了课程设计任务。
项目任务要求:1、程序分为两部分:管理端和客户端。
2、管理端负责管理所有的银行卡,管理员(省略身份验证)可以增加和删除银行卡。
(1)每张银行卡由卡号唯一标识,卡号由12位阿拉伯数字组成;(2)新增的银行卡密码均为“123456”,卡内金额均为0元;(3)只有管理员增加的银行卡才能登陆客户端;(4)删除后的银行卡将不能再登陆客户端。
ATM柜员机模拟程序JAVA课程设计
}
4.2ATM主界面模块设计:
classATMextendsJFrameimplementsActionListener//导入接口类
{
JPanel p1,p2, p3;//定义个面板
JLabel l1, l2, l3,l4;//定义个标签
JPasswordField pswf;//定义一个密码文本
}
publicvoidactionPerformed(ActionEvente)//监听类
{
Stringx = jc1.getText();
if(e.getSource() == jb1)//如果点击是jb1按钮就进入For
{
for(inti = 0; i < 4; i++)//判断名字在数组的位置
this.pack();
this.setTitle("ATM柜员机");//定义为窗口名称
this.setBounds(300, 300, 400, 300);//定义窗口的大小
this.setResizable(false);
this.show();//显示
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭、退出
content.setLayout(newBorderLayout());
content.add(p1,BorderLayout.NORTH);
content.add(p2,BorderLayout.CENTER);//定义中部为面板p2
content.add(p3,BorderLayout.SOUTH);//定义底部为面板p3
jb1.addActionListener(this);//jb1申请监听
java课程设计-ATM柜员机模拟程序
java课程设计-ATM柜员机模拟程序ATM柜员机模拟程序文档1、简介1.1 目的1.2 背景1.3 范围2、系统需求分析2.1 功能需求2.1.1 用户身份认证2.1.2 查询账户余额2.1.3 存款2.1.4 取款2.1.5 转账2.1.6 交易明细查询2.1.7 修改密码2.2 非功能需求2.2.2 可靠性2.2.3 可维护性3、概要设计3.1 系统结构3.1.1 用户界面模块 3.1.2 业务逻辑模块 3.1.3 数据访问模块 3.2 类图3.3 时序图3.4 数据库设计4、详细设计4.1 用户身份认证模块设计 4.1.1 输入验证4.1.2 身份验证4.2 查询账户余额模块设计 4.2.1 数据库查询4.3 存款模块设计4.3.1 输入验证4.3.2 更新账户余额 4.4 取款模块设计4.4.1 输入验证4.4.2 更新账户余额 4.5 转账模块设计4.5.1 输入验证4.5.2 更新账户余额 4.6 交易明细查询模块设计 4.6.1 数据库查询4.6.2 显示交易明细 4.7 修改密码模块设计4.7.1 输入验证4.7.2 更新密码5、测试计划5.1 单元测试5.2 集成测试5.3 系统测试5.4 用户验收测试6、部署计划6.1 环境要求6.2 部署步骤7、维护与支持7.1 维护流程7.2 支持渠道8、附件8.1 用户界面设计稿8.2 数据库设计文档9、法律名词及注释9.1 ATM(Automatic Teller Machine):自动柜员机9.2 用户身份认证:通过用户输入的身份信息进行验证确认用户身份的过程9.3 查询账户余额:用户查询银行账户中的可用余额的操作9.4 存款:用户将现金存入银行账户的操作9.5 取款:用户从银行账户中取出指定金额的现金的操作9.6 转账:用户将一定金额从自己的账户转移到其他账户的操作9.7 交易明细查询:用户查询银行账户的交易明细记录的操作9.8修改密码:用户修改自己的银行账户密码的操作。
java课程设计-ATM柜员机模拟程序
感谢您的耐心观看
汇报人:
添加标题
操作选择:用户选择 要进行的操作
添加标题
操作执行:执行用户 选择的操作,如存款、 取款、转账等
添加标题
操作结果:显示操作 结果,如存款成功、 取款成功、转账成功 等
添加标题
用户退出:用户选择 退出系统,结束程序
程序运行环境
操作系统: Windows、 Linux、Mac
OS等
开发环境: Java
登录按钮:点击登录,验证用户名和密 码
界面美化:使用美观的图标和颜色,提 高用户体验
账户管理模块实现
账户创建: 用户输入 账户信息, 系统自动 生成账户
账户查询: 用户输入 账户号, 系统返回 账户信息
账户修改: 用户输入 账户号和 修改信息, 系统更新 账户信息
账户删除: 用户输入 账户号, 系统删除 账户信息
系统从用户账户 中扣除存款金额
系统将存款金额 存入用户账户
查询余额模块实现
系统从数据库中获取用户银 行卡余额信息
系统将余额信息显示在界面 上
用户输入银行卡号,系统验 证银行卡号是否正确
用户可以查看自己的账户余 额
ATM柜员机模拟程序测 试
测试用例设计
不足:在程序实现过程中遇到了一些困难,如算法优化、界面设计等
展望:希望在未来的学习中,能够更深入地了解Java编程,提高编程能力,实现 更复杂的程序设计
对未来改进和发展的建议
增加用户界面友 好性,提高用户 体验
优化算法,提高 程序运行效率
增加安全机制, 确保用户数据安 全
拓展功能,如支 持在线支付、转 账等
转账:用户可以将资金从一个账户转移到另一个账户。
添加项标题
我的java类,ATM模拟程序,共参考.doc
我的java类,ATM模拟程序,共参考自动柜员机模拟器首先,个人电脑培训设备和工具(奔腾486文件以上),视窗XP,JCCreator或Editplus编译和开发环境二、实验的目的和要求:掌握图形用户界面设计方法,掌握常用挥杆组件的使用和事件处理程序设计;掌握文件的输入输出操作或程序对数据库的访问要求;当输入给定的卡号和密码(初始卡号和密码为123456)时,系统可以登录自动柜员机系统,用户可以:1.查询余额:初始余额为1000元2。
自动取款机取款:每笔提款金额是100的倍数,总额不超过5000元。
取款金额不允许透支。
3.自动柜员机存款:负存款不能出现4。
更改密码:新密码长度不小于6位,不允许6位数字完全相同。
只有旧密码正确,新密码符合要求,且两次输入相同,才能成功修改密码。
三、实验步骤1.主题分析2、根据自己的想法构建主程序界面3.为每个菜单项添加事件处理程序四、自动柜员机接口设计图1自动柜员机功能结构图1.客户类代码如下:类客户//定义客户类{字符串zh;//定义账号stringswf//定义密码双jine//定义公共来宾的数量(){} //构造来宾公共来宾(stringzh,stringswf,double Jie){ this . zh=zh;//将账号、密码、金额放入顶部容器。
this.jine=jine} string zh()//定义成员变量帐号{返回zh;//member method } double SetMiMa(double pswf)//定义成员变量密码{ return pswf//成员方法}双getJine()//定义成员变量{返回jine//定义成员方法}作废存款(双倍货币)//定义成员可变存款{jine=jine货币;//定义成员方法}作废屈谦(双币)//定义成员变量支取{ jine=jine-money;//定义成员方法}字符串后缀(字符串mi)//定义成员变量密码{ pswf=mi//定义成员方法返回pswf}}2.自动柜员机的主要接口模块设计主要包括按钮、文本框、组合框和标签。
java课程设计-ATM柜员机模拟程序文件
课程设计(大作业)报告课程名称:面向对象程序设计课程设计设计题目:ATM柜员机模拟程序院系:信息技术学院班级:设计者:学号:指导教师:设计时间:2016-1-4-2016-1-8 信息技术学院学院课程设计(大作业)任务书课程设计(大作业)报告一、题目分析1.系统需求分析(1)设计目标:随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。
受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。
这就导致银行业务的急剧增加。
虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。
而一味的增加营业网点,从理论上虽然能稍微的缓解银行的压力,但是治标不治本,而且每增加一个网点,不仅要付出昂贵的资金成本,还需要长期投入人力资本,成本非常之昂贵。
这时候就迫切的需要一种自动的,易于普及的,低成本的设备来解决这一问题。
于是ATM机系统应运而生了。
自动柜员机,即ATM,是指银行在不同地点设置一种小型机器,利用一信用卡大小的胶卡上的磁带记录客户的基本户口资料(通常就是银行卡),让客户可以透过机器进行提款、存款、转账等银行柜台服务,大多数客户都把这种自助机器称为自动提款机。
本文正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的Java知识进行设计编程。
(2)题目设计要求:本ATM柜员机的主要功能如下所述:要求使用图形用户界面。
当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:●查询余额:初始余额为10000元。
●ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
●ATM存款:不能出现负存款。
●修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
javTM柜员机模拟程序
课程论文现代软件工程与实践题目: ATM柜员机模拟程序学院(系):信息工程学院专业班级:学生姓名:指导教师:2011 年 12月 4日摘要通过设计ATM柜员模拟程序,加深自己对Java编程尤其是对Java图形用户界面编程的了解,将自己的学到的编程知识融会贯通,同时培养自身面向对象软件开发的思维,初步了解软件开发的一般流程,提高用Java实际动手能力并增强自己对面向对象的了解。
通过这次编程设计,加深了对Java图形界面编程中各个模块和组件的应用了解,以及类和类之间的关系,界面排版的处理等。
设计要求是,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行(规则可以按照实际系统做需求):(1)查询余额:初始余额为10000元。
(2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
(3)ATM存款:不能出现负存款。
(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
该程序设置了7个类,1个主类6个辅助类,6个辅助类都是内部类的形式,辅助类包括五个实现ATM的功能,一个存放客户资料,之所以用内部类来实现是为了在各个界面转换时不至于要创建多个对象,每一个辅助类的对象只要在主类中创建一次就可以在各个内部类中引用。
该程序利用的功能是利用Java事件监听技术来实现的,各种功能单独的创建一个类来实现,不会互相混淆,更加容易理清楚思路。
设计的程序完美的实现了设计要求,具有查询、取款、存款、修改密码等功能。
目录1 前言设计任务需求说明随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。
受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。
这就导致银行业务的急剧增加。
虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。
课程设计_ATM柜员机模拟程序文件
软件学院课程设计报告书课程名称面向对象程序设计设计题目ATM柜员机模拟程序专业班级软件工程学号姓名指导教师腊梅2015年月目录1 设计时间 (1)2 设计目的 (1)3 设计题目 (1)4 设计任务 (1)5 设计容 (1)5.1 kehu类代码 (1)5.2 ATM主界面模块设计 (2)5.3 选择页面模块设计 (5)5.4 存款模块设计 (8)5.5 取款模块设计 (11)5.6 查询余额模块设计 (16)5.7 修改密码模块设计 (18)6 总结与展望 (23)参考文献 (24)成绩评定 (24)new ATM();}}主界面密码输入错误提示栏5.3 选择页面模块设计class XUANZE extends JFrame implements ActionListener//导入接口类{new CUNKUAN(key); //进入CUNKUANsetVisible(false);}if (event.getSource() == jb3) //判断是否是jb3{new CHAXUN(key); //进入CHAXUNsetVisible(false);}}}进入选择界面5.4存款模块设计class CUNKUAN extends JFrame implements ActionListener//导入接口类{JPanel p2, p3; //定义个面板JLabel l1; //定义个标签JButton jb1, jb2; //定义个按钮JTextField jtf1; //定义一个文本框Container content; //定义一个容器存款界面存款成功5.5 取款模块设计class QUKUAN extends JFrame implements ActionListener//导入接口类{JPanel p2, p3; //定义个面板JLabel l1; //定义个标签JOptionPane.showMessageDialog(this, "金额不足不许透支");//一个提示框提示你你的卡即将要已透支}}if (e.getSource() == jb2)//判断是是否是jb2{new XUANZE(key); //返回XUANZEsetVisible(false);}}取款界面取款成功金额不足取款失败提示提取金额不许超过五千提取金额需为一百的整数{new XUANZE(key); //返回XUANZEsetVisible(false);}}开户资金10000元存700后查询余额再取款900后查询余额5.7 修改密码模块设计class Xgmm extends JFrame implements ActionListener//导入接口类{JPanel p2, p3; //定义个面板JLabel l1, l2, l3, l4; //定义个标签JPasswordField jtf1, jtf2, jtf3; //定义个文本框JButton jb1, jb2; //定义个按钮Container content; //定义一个容器kehu key; //定义客户类传从参数key public Xgmm(kehu key){this.key=key; //把key传到顶层容器p2=new JPanel(); //定义第二个面板l2=new JLabel("请输入原始密码:"); //定义标签请输入原始密码:l3=new JLabel("输入要修改的密码:"); //定义标签输入要修改的密码l4=new JLabel("确认输入的新密码:"); //定义标签确认输入的新密码:jtf1 = new JPasswordField(15); //定义文本框jtf1原密码输入错误提示修改失败两次输入密码不一修改失败密码不足六位修改失败密码各位都相同修改失败输入规修改密码成功6 总结与展望通过本次的课程设计,是我更加的喜欢上了JA V A,这正是我一直想学的计算机实用语音。
java基础:模拟ATM取款机
java基础:模拟ATM取款机package com.atm;import java.util.Scanner;/*** ATM类实现** @author 向往的⽣活*/public class ATM {public static void main(String[] args) {String[] user = new String[2];String[] password = new String[2];double[] amount = new double[2];loginSelect(user, password, amount);}/*** 登录业务的菜单选择** @param user* @param password*/public static void loginSelect(String[] user, String[] password,double[] amount) {System.out.println("#####欢迎#####");int n = 1;while (true) {System.out.println("A.开户");System.out.println("B.登录");System.out.println("C.退出");System.out.println("D.修改密码");Scanner scanner = new Scanner(System.in);System.out.println("选择菜单:");String number = scanner.nextLine();number = number.toUpperCase();char[] chr = number.toCharArray();switch (chr[0]) {case'A':openAnAccount(user, password);loginSelect(user, password, amount);break;case'B':int index = login(user, password);// 记录登录⼈的下标if (index != -1) {select(user, password, amount, index);} else {n++;// 登录3次失败,则退出if (n == 3) {break;}}break;case'C':System.out.println("退出ATM");System.exit(-1);break;case'D':updatePassword(user, password);System.out.println("修改密码");break;default:System.out.println("录⼊的操作错误!");break;}}}/*** 核⼼业务菜单选择** @param user* @param password*/public static void select(String[] user, String[] password,double[] amount, int index) {while (true) {System.out.println("###########您好:" + user[index] + "#########"); System.out.println("A.存款");System.out.println("B.取款");System.out.println("C.转账");System.out.println("D.查询账户余额");System.out.println("E.返回主菜单");Scanner scanner = new Scanner(System.in);System.out.println("选择菜单:");String input = scanner.nextLine();input = input.toUpperCase();char chr = input.toCharArray()[0];switch (chr) {case'A':saveMoney(user, amount, index);break;case'B':getMoney(user, amount, index);break;case'C':transferAccounts(user, amount, index);break;case'D':query(user, amount, index);break;case'E':loginSelect(user, password, amount);break;default:System.out.println("操作错误请重新输⼊!");break;}}}/*** 登录** @return*/public static int login(String[] user, String[] password) {Scanner input = new Scanner(System.in);System.out.println("请输⼊⽤户名:");String userName = input.nextLine();System.out.println("请输⼊密码:");String pwd = input.nextLine();// 通过userName数据,找到user下标,int index = -1;for (int i = 0; i < user.length; i++) {if (user[i] == null) {System.out.println("请去开户,您没有注册卡号!");loginSelect(user, password, null);return -1;} else {if (user[i].equals(userName)) {index = i;break;}}}// 然后通过user下标找到password中相应的密码。
ATM柜员机Java文档
一、摘要1、题目说明ATM取款机集取款、存款、转账以及各种业务于一身,它具有强大的功能,同时它的使用解决了用户信息和资金信息的繁杂问题,对于ATM取款系统数据的统计和核实等都是采用卡号进行核对的,对于用户的信息资料、以及资金统计等用人工办理。
数据信息处理工作量大,繁琐。
数据处理手工操作,工作量大,工作时需实时认真办理,一但出现错误将带来很大的损失,ATM取款系统采取数据库进行管理且由人工进行处理、维护等工作。
由于信息一定要准确真实,认真的进行各项核对工作,工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。
ATM取款机系统是建立一个客户平台,然后通过数据链接操作来达到独立的客户与机器交互从而进行取款、查询余额、修改密码等业务办理。
针对这一系列问题,我们利用java语言在NetBeans下设计了这么一个系统,使得用户可以安全的进行操作,便捷,快速的进行取款以及完成一些商业上的交易,大大提高办公效率,能够及时、准确、有效的帮用户办理各种繁琐的手续,也银行员工的工作压力。
2、设计要求我们设计的A TM柜员机主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。
它的各种按钮的事件和功能可以简单的模拟A TM柜员机的要求。
ATM柜员机模拟系统提供一个登录界面,当输入给定的卡号和密码时,系统能登录ATM柜员机系统,主界面要与ATM机相似。
3、开发工具介绍NetBeans 由Sun公司在2000年创立,它是开放源运动以及开发人员和客户社区的家园,旨在构建世界级的Java IDE。
NetBeans当前可以在Solaris、Windows、Linux 和Macintosh OS X平台上进行开发,并在SPL(Sun公用许可)范围内使用。
此外,NetBeans 最新牒还预装了两个Web服务器,即Tomcat和GlassFish,从而免除了繁琐的配置和安装过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程论文现代软件工程与实践题目: ATM柜员机模拟程序学院(系):信息工程学院专业班级:学生:指导教师:2011 年 12月 4日摘要通过设计ATM柜员模拟程序,加深自己对Java编程尤其是对Java图形用户界面编程的了解,将自己的学到的编程知识融会贯通,同时培养自身面向对象软件开发的思维,初步了解软件开发的一般流程,提高用Java实际动手能力并增强自己对面向对象的了解。
通过这次编程设计,加深了对Java图形界面编程中各个模块和组件的应用了解,以及类和类之间的关系,界面排版的处理等。
设计要,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行(规则可以按照实际系统做需求):(1)查询余额:初始余额为10000元。
(2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
(3)ATM存款:不能出现负存款。
(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
该程序设置了7个类,1个主类6个辅助类,6个辅助类都是部类的形式,辅助类包括五个实现ATM的功能,一个存放客户资料,之所以用部类来实现是为了在各个界面转换时不至于要创建多个对象,每一个辅助类的对象只要在主类中创建一次就可以在各个部类中引用。
该程序利用的功能是利用Java事件监听技术来实现的,各种功能单独的创建一个类来实现,不会互相混淆,更加容易理清楚思路。
设计的程序完美的实现了设计要求,具有查询、取款、存款、修改密码等功能。
目录摘要 (I)目录 (II)1 前言 (1)1.1设计任务 (1)1.1.1 需求说明 (1)1.2设计容 (1)2 程序要求 (1)3 算法分析 (2)4 流程图 (3)5 程序源代码及说明 (4)5.1程序源代码 (4)5.2源代码说明 (21)5.2.1 源代码中自定义类的说明: (21)5.2.2源代码中的事件监听器 (22)6 调试及运行结果 (23)7 体会 (29)8 参考文献 (30)1 前言1.1 设计任务1.1.1 需求说明随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。
受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。
这就导致银行业务的急剧增加。
虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。
而一味的增加营业网点,从理论上虽然能稍微的缓解银行的压力,但是治标不治本,而且每增加一个网点,不仅要付出昂贵的资金成本,还需要长期投入人力资本,成本非常之昂贵。
这时候就迫切的需要一种自动的,易于普及的,低成本的设备来解决这一问题。
于是ATM 机系统应运而生了。
本文正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的Java知识进行设计编程。
1.2 设计容(1)程序要求(2)算法分析(3)流程图(4)源程序(5)调试及运行结果(6)体会2 程序要求本ATM柜员机的主要功能如下所述:要求使用图形用户界面。
当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:●查询余额:初始余额为10000元。
●ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
●ATM存款:不能出现负存款。
修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
3 算法分析通过程序要求,我们可以清楚的知道本次设计的ATM柜员模拟程序需要实现四大功能,即查询余额、取款、存款、修改密码。
初次之外,作为ATM系统,还需要最基本的两大功能,即登陆和退出。
根据上述的功能分析,我们可以吧整个ATM系统分为登陆模块、查询模块、取款模块、存款模块、修改密码模块。
除此之外,还有在登陆系统后的功能选择模块,退出功能则镶嵌在各个需要的模块中。
由于各个模块的功能实现是通过界面显示出来的,则程序设计又可以理解为几大界面的设计:登陆界面、主界面、查询余额界面、取款界面、存款界面、修改密码界面。
除了几大界面之外,还有系统的初始化,主要是初始卡号、密码的设定等。
在程序的大体框架确定之后,我们需要了解各个模块所要实现和需要具有的功能。
根据现有的银行ATM系统,我们可以很快就可以了解本次设计的ATM系统应该具有的操作。
(1)登陆界面用户输入正确的账号和密码就可以登录到该系统的主界面中去,进行相应的操作:取款、存款、查询、修改密码。
(2)主界面主界面包括查询、存款、取款、修改密码、退出的功能按钮,按下相应的按钮,可以进行相应的操作。
(3)查询界面在主界面中按下查询按钮可以进行查询操作。
通过查询功能我们可以查询账户的余额,在查询过程中我们可以选择取款的业务,除此之外,查询界面之中还有返回和退出的操作。
返回的操作会使用户回到主界面,退出的操作会使用户直接回到登陆界面。
(4)取款界面取款界面既可以通过主界面进入,也可以通过查询、存款等操作过程中的界面进入。
取款功能在对话框中输入你想要取出的金额,但是次金额不可以比账户的余额大,且必须是100的整数倍,取款完毕,会弹出是否显示余额的提示,选“是”的话就会进入查询界面,选“否”的话,则回到主界面。
(5)存款界面在主界面按下存款按钮可以进行存款操作,在对话中输入你需要存入的金额,所输入的数字也要是100的整数倍,而且不可以是负数。
存款完毕,会弹出是否显示余额的提示,选“是”的话就会进入查询界面,选“否”的话,则回到主界面。
(6)修改密码选择修改密码按钮可以进行修改密码房,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。
修改完成后,会返回主界面。
4 流程图图1 程序流程图5 程序源代码及说明5.1 程序源代码import javax.swing.*;import javax.swing.JOptionPane;import java.awt.event.*;public class ATMmodel {Account myaccount=new Account();Load load=new Load();MainFrame Jmain=new MainFrame();Take take=new Take();Input input=new Input();Display dis=new Display();Setpw setpw=new Setpw();public ATMmodel() {JOptionPane.showMessageDialog(null,"欢迎使用ATM柜员模拟系统"); }public static void main(String[] args) {ATMmodel atm=new ATMmodel();}/*创建账户*/class Account {private int count=10000; //初始账户余额10000private String account="123456"; //初始账号private String password="123456"; //初始密码public Account() {}public void setpw(String password){this.password=password;}public void deccount(int money){count-=money;}public void reccount(int money){count+=money;}public int get(){return count;}public String getaccount(){ //账号return account;}public String getpw(){return password;}}/* 主界面*/class MainFrame extends JFrame {public JButton checked;public JButton cunkuan;public JButton quit;public JButton qukuan;public JButton reset;public MainFrame() {initComponents();this.setLocationRelativeTo(null);// this.setVisible(false);}/* 控件初始化*/private void initComponents() {cunkuan = new JButton();qukuan = new JButton();checked = new JButton();reset = new JButton();quit = new JButton();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setTitle("ATM柜员模拟程序");setName("mianframe");setResizable(false);cunkuan.setText("存款");cunkuan.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {cunkuanActionPerformed(evt);}});qukuan.setText("取款");qukuan.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {qukuanActionPerformed(evt);}});checked.setText("查询");checked.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {checkedActionPerformed(evt);}});reset.setText("修改密码");reset.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {resetActionPerformed(evt);}});quit.setText("退出");quit.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {quitActionPerformed(evt);}});GroupLayout layout = new GroupLayout(getContentPane()); //GroupLayout它将组件按层次分组,以决定它们在 Container 中的位置getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING).addGroup(layout.createSequentialGroup().addComponent(cunkuan).addPreferredGap(ponentPlacement.RE LATED, 105, Short.MAX_VALUE).addComponent(reset)).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addComponent(qukuan).addPreferredGap(ponentPlacement.RELATED, 143, Short.MAX_VALUE).addComponent(quit)).addComponent(checked)).addContainerGap()));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(46, 46, 46).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(cunkuan).addComponent(reset)).addGap(51, 51, 51).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(quit).addComponent(qukuan)).addGap(57, 57, 57).addComponent(checked).addGap(39, 39, 39)));pack();}private void quitActionPerformed(ActionEvent evt) {load.setVisible(true);this.setVisible(false);}private void resetActionPerformed(ActionEvent evt) {setpw.setVisible(true);this.setVisible(false);}private void checkedActionPerformed(ActionEvent evt) {dis.setVisible(true);this.setVisible(false);}private void qukuanActionPerformed(ActionEvent evt) {take.setVisible(true);this.setVisible(false);}private void cunkuanActionPerformed(ActionEvent evt) {input.setVisible(true);this.setVisible(false);}}/*登录界面*/class Load extends JFrame{public JPasswordField Jpassword;public JTextField accountnum;public JButton commit;private JLabel jL1;private JLabel jL2;public Load() {initComponents();this.setLocationRelativeTo(null);this.setVisible(true);}private void initComponents() {jL1 = new JLabel();jL2 = new JLabel();accountnum = new JTextField();commit = new JButton();Jpassword = new JPasswordField();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);setTitle("ATM柜员模拟程序");setResizable(false);jL1.setText("账号:");jL2.setText("密码:");commit.setText("确定");commit.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {commitActionPerformed(evt);}});javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING).addGroup(layout.createSequentialGroup().addContainerGap(50, Short.MAX_VALUE).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.A lignment.TRAILING).addComponent(jL1).addComponent(jL2)).addGap(31, 31, 31).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.A lignment.LEADING, false).addComponent(Jpassword).addComponent(accountnum,javax.swing.GroupLayout.DEFAULT_SIZE, 143, Short.MAX_VALUE))).addGroup(layout.createSequentialGroup().addGap(122, 122, 122).addComponent(commit))).addContainerGap(72, Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(85, 85, 85).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(accountnum, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jL1)).addGap(41, 41, 41).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(jL2).addComponent(Jpassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)).addPreferredGap(ponentPlacement.RELATED, 72, Short.MAX_VALUE).addComponent(commit).addGap(64, 64, 64)));pack();}private void commitActionPerformed(ActionEvent evt) {if(accountnum.getText().equals(myaccount.getaccount()) && Jpassword.getText().equals(myaccount.getpw())){Jmain.setVisible(true);this.setVisible(false);accountnum.setText("");Jpassword.setText("");}else{JOptionPane.showMessageDialog(null,"密码与账户不匹配,请重新输入","出错提示",1);accountnum.setText("");Jpassword.setText("");}}}/*取款界面*/class Take extends JFrame {public JButton back;public JButton clear;public JButton commit;private JLabel jL1;public JTextField jT1;public JButton quit;String str="";public Take() {initComponents();this.setLocationRelativeTo(null);this.setVisible(false);}private void initComponents() {jL1 = new JLabel();jT1 = new JTextField();commit = new JButton();back = new JButton();quit = new JButton();clear = new JButton();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);jL1.setText("取款金额:");commit.setText("确定");commit.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {commitActionPerformed(evt);}});back.setText("返回");back.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {backActionPerformed(evt);}});quit.setText("退出");quit.addActionListener(new ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {quitActionPerformed(evt);}});clear.setText("清除");clear.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {clearActionPerformed(evt);}});javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(41, 41, 41).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING).addGroup(layout.createSequentialGroup().addComponent(jL1).addGap(33, 33, 33).addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, 174, javax.swing.GroupLayout.PREFERRED_SIZE)).addGroup(layout.createSequentialGroup().addComponent(clear).addPreferredGap(ponentPlacement.RE LATED, 147, Short.MAX_VALUE).addComponent(quit)).addGroup(layout.createSequentialGroup().addComponent(commit).addPreferredGap(ponentPlacement.RE LATED, 147, Short.MAX_VALUE).addComponent(back))).addContainerGap(69, javax.swing.GroupLayout.PREFERRED_SIZE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(103, 103, 103).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(jL1).addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(61, 61, 61).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(commit).addComponent(back)).addGap(29, 29, 29).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(clear).addComponent(quit)).addContainerGap(65, Short.MAX_VALUE)));pack();}private void clearActionPerformed(ActionEvent evt) {str="";jT1.setText(str);}private void quitActionPerformed(ActionEvent evt) {load.setVisible(true);this.setVisible(false);}private void backActionPerformed(ActionEvent evt) {Jmain.setVisible(true);this.setVisible(false);}private void commitActionPerformed(ActionEvent evt) {if(Integer.parseInt(jT1.getText())>0 && Integer.parseInt(jT1.getText())%100==0 && Integer.parseInt(jT1.getText())<=5000){myaccount.deccount(Integer.parseInt(jT1.getText()));int result=javax.swing.JOptionPane.showConfirmDialog(null,"是否显示余额?","",javax.swing.JOptionPane.YES_NO_OPTION,javax.swing.JOptionPane.QUESTION_MESSAGE);if(result==javax.swing.JOptionPane.YES_OPTION){dis.set(String.valueOf(myaccount.get()));str="";jT1.setText(str);dis.setVisible(true);this.setVisible(false);}else{Jmain.setVisible(true);this.setVisible(false);}}else{JOptionPane.showMessageDialog(null,"取款金额不能为负数"+"\n取款金额不能为0"+"\n取款金额必须是100的倍数"+"\n金额一次不能超过5000"+"\n请重新输入你要取的金额数","出错提示",1);str="";jT1.setText(str);}}}/*存款界面*/class Input extends JFrame {private JButton clear;private JButton commit;private JLabel jL1;private JTextField jT1;String str="";public Input() {initComponents();this.setLocationRelativeTo(null);this.setResizable(false);this.setVisible(false);}private void initComponents() {jL1 = new JLabel();jT1 = new JTextField();commit = new JButton();clear = new JButton();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);jL1.setText("存款金额:");commit.setText("确认");commit.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {commitActionPerformed(evt);}});clear.setText("清除");clear.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {clearActionPerformed(evt);}});javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(47, 47, 47).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING).addGroup(layout.createSequentialGroup().addGap(12, 12, 12).addComponent(commit).addGap(111, 111, 111).addComponent(clear)).addGroup(layout.createSequentialGroup().addComponent(jL1).addGap(27, 27, 27).addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE))).addContainerGap(50, Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(88, 88, 88).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(jL1).addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(87, 87, 87).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(clear).addComponent(commit)).addContainerGap(88, Short.MAX_VALUE)));pack();}// </editor-fold>private void clearActionPerformed(ActionEvent evt) {str="";jT1.setText(str);}private void commitActionPerformed(java.awt.event.ActionEvent evt) { if(Integer.parseInt(jT1.getText())%100==0){int a=Integer.parseInt(jT1.getText());if(a<0)JOptionPane.showMessageDialog(null,"存款不能为负数","出错",1);elsemyaccount.reccount(a);dis.set(String.valueOf(myaccount.get()));int result=javax.swing.JOptionPane.showConfirmDialog(null,"是否显示余额?","",javax.swing.JOptionPane.YES_NO_OPTION,javax.swing.JOptionPane.QUESTION_MESSAGE);if(result==javax.swing.JOptionPane.YES_OPTION){str="";jT1.setText(str);dis.setVisible(true);this.setVisible(false);}else{Jmain.setVisible(true);this.setVisible(false);}}else{JOptionPane.showMessageDialog(null,"存款金额必须为100的整数倍!"+"\n请确认你的金额","出错提示",1);jT1.setText("");}}}/*显示余额界面*/class Display extends JFrame {public JButton back;private JLabel jL1;public JTextField jT1;public JButton quit;public JButton qukuan;public Display() {initComponents();jT1.setText(String.valueOf(myaccount.get()));this.setLocationRelativeTo(null);this.setVisible(false);}public void set(String str){jT1.setText(str);}private void initComponents() {jL1 = new JLabel();jT1 = new JTextField();quit = new JButton();back = new JButton();qukuan = new JButton();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);jL1.setText("您的余额为:");jT1.setEditable(false);quit.setText("退出");quit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { quitActionPerformed(evt);}});back.setText("返回");back.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { backActionPerformed(evt);}});qukuan.setText("取款");qukuan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {qukuanActionPerformed(evt);}});javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(27, 27, 27).addComponent(jL1).addPreferredGap(ponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE).addContainerGap(36, Short.MAX_VALUE)).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addContainerGap(215, Short.MAX_VALUE).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .TRAILING).addComponent(back).addComponent(qukuan).addComponent(quit)).addContainerGap()));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(93, 93, 93).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(jL1).addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(54, 54, 54).addComponent(qukuan).addPreferredGap(ponentPlacement.RELATED).addComponent(back).addPreferredGap(ponentPlacement.RELATED).addComponent(quit).addContainerGap()));pack();}private void qukuanActionPerformed(ActionEvent evt) {take.setVisible(true);this.setVisible(false);}private void quitActionPerformed(ActionEvent evt) {load.setVisible(true);this.setVisible(false);}private void backActionPerformed(ActionEvent evt) {Jmain.setVisible(true);this.setVisible(false);}}/**修改密码 */class Setpw extends JFrame {public JButton commit;public JLabel commitpw;public JPasswordField jPwcommit;public JPasswordField jPwnew;public JPasswordField jPwold;public JLabel newpw;public JLabel oldpw;public JButton quit;public Setpw() {initComponents();this.setResizable(false);this.setLocationRelativeTo(null);//this.setVisible(false);}private void initComponents() {oldpw = new JLabel();newpw = new JLabel();commitpw = new JLabel();jPwold = new JPasswordField();jPwnew = new JPasswordField();jPwcommit = new JPasswordField();commit = new javax.swing.JButton();quit = new javax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);oldpw.setText("旧密码:");newpw.setText("新密码:");commitpw.setText("确认密码:");commit.setText("确认");commit.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {commitActionPerformed(evt);}});quit.setText("退出");quit.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {quitActionPerformed(evt);}});javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(46, 46, 46).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING).addComponent(oldpw).addComponent(newpw).addComponent(commitpw)).addGap(25, 25, 25).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .LEADING, false).addGroup(layout.createSequentialGroup().addComponent(commit).addPreferredGap(ponentPlacement.RE LATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(quit)).addComponent(jPwnew, javax.swing.GroupLayout.DEFAULT_SIZE, 180, Short.MAX_VALUE).addComponent(jPwold).addComponent(jPwcommit)).addContainerGap(48, Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(53, 53, 53).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(oldpw).addComponent(jPwold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(36, 36, 36).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(newpw).addComponent(jPwnew, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(40, 40, 40).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(commitpw).addComponent(jPwcommit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)).addPreferredGap(ponentPlacement.RELATED, 47, Short.MAX_VALUE).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment .BASELINE).addComponent(commit).addComponent(quit)).addGap(36, 36, 36)));pack();}private void commitActionPerformed(ActionEvent evt) {boolean flag=false;//标志密码不能出现全部相同的数字if(!jPwold.getText().equals(myaccount.getpw())){JOptionPane.showMessageDialog(null,"你输入的密码与老密码不匹配!","错误提示",1);//1是符号二是标题}else if(jPwnew.getText().length()<6)JOptionPane.showMessageDialog(null,"新密码长度必须大于或等于6位","错误提示",1);else{//用一个循环来查询密码是否全部一样for(int i=0;i<jPwnew.getText().length();i++){if(jPwnew.getText().charAt(0)==jPwnew.getText().charAt(i))flag=true;else{flag=false;break;}}//密码全部一样则给出提示if(flag)JOptionPane.showMessageDialog(null,"密码不能全都相同","错误提示",1);//以上情况都没出现则修改成功else if(jPwold.getText().equals(myaccount.getpw()) && jPwnew.getText().equals(jPwcommit.getText())){myaccount.setpw(jPwnew.getText());JOptionPane.showMessageDialog(null,"密码修改成功,请记住你的新密码","",1);Jmain.setVisible(true);this.setVisible(false);}}}private void quitActionPerformed(java.awt.event.ActionEvent evt) {load.setVisible(true);this.setVisible(false);}}}5.2 源代码说明5.2.1 源代码中自定义类的说明:代码中出现的Account类、MainFrame类、Load类、Take类、Input类、Setpew 类和Display类都继承了Java类JFrame。