java课程设计(ATM机)

合集下载

《Java程序设计》课程设计-ATM柜员机

《Java程序设计》课程设计-ATM柜员机

宝鸡文理学院计算机科学系《Java程序设计》课程设计设计题目:ATM柜员机班级:2008级本科2班组长:组员:指导教师:二零一零年六月二十九日目录1、项目任务书 (2)2、项目开发计划 (4)3、项目需求说明书 (8)4、项目设计说明书 (9)5、项目开发总结报告 (21)6、使用说明 (28)7、项目源程序代码 (28)8、成绩评定表 (29)1、项目任务书1.1 设计的目的和要求1.1.1 设计目的加深学生对面向对象概念以及JAVA面向对象程序设计思想的理解和掌握;使学生熟悉开发一个项目的基本过程,培养学生分析问题和解决问题的能力,增强学生的动手能力。

为后续学习和应用打下一定的基础。

1.1.2 设计要求四个人一组协作完成,组长分工,并负责组内程序联试、文档质量检查及与教师联系。

组内每个组员协调合作完成分工的课程设计部分。

所完成的项目软件需经指导教师检查认可。

1.2 设计内容1.功能需求(1)用户登陆:检查用户使用的合法性。

(2)用户取款:可按1000,500,200,100元面额取款,1天内取款最多不能超过3000元,并记录取款信息。

(3)余额查询:显示余额。

(4)用户密码修改:密码只能由字母和数字组成,不少于6个字符。

(5)帮助:给出作者信息和帮助信息。

2.信息需求①登陆表客户账号②存取款表密码客户账号余额2、项目开发计划2.1编写目的我们的开发目的是在于了解ATM柜员机系统开发项目的流程,把在开发过程中对各项工作的人员、分工、系统资源条件等问题的安排用文档形式记载下来,以便根据本计划开展和检查本项目工作,保证项目开发成功。

2.2项目概述2.2.1工作内容1)需求分析2)软件设计3)代码设计:实现ATM柜员机代码4)系统测试:测试程序5)项目总结:收获2.2.2主要参加人员张少婷,宝鸡文理学院计算机科学系08级2班学生,精通java语言, 熟悉SQL语言。

宋红艳,宝鸡文理学院计算机科学系08级2班学生,熟悉java语言,熟悉SQL语言。

java实训ATM取款机设计报告

java实训ATM取款机设计报告

吉林工程技术师范学院信息工程学院《 Java项目实训》课程设计报告题目: ATM取款机JAVA实训课程设计专业:计算机科学与技术班级: C1341 姓名:姜秋红学号: 25摘要我选择的是“ATM取款机”,其目的主要是现在市面上的取款机功能不完善还有许多功能没有实现,用户对界面很熟悉,做起来更得心应手,所以的采用的界面和现在用户所用的界面基本相同,可以实现后台与前台的交互以及数据库之间的连接,使得我设计的ATM取款机更加完善。

利用jps网页设计一个总页面设计选择使用的用户是用户页面还是管理员页面,让使用的人根据权限去使用不同的功能。

在我的ATM取款机上实现了ATM机的基本功能,其界面参照了和原系统基本相同的界面。

增加了一些管理员的功能。

首先选择是用户登入还是管理员登入。

选择用户登入,有查看,存款,取款,转账和修改密码等功能。

选择管理员登入,有开户,销户,查询等功能;利用这些更能,使得ATM更加完善。

关键字:ATM,查询,取款,转账,修改,界目录程序设计概念 (4)程序设计的目的 (4)课程设计的内容 (4)设计方案的论证 (5)概要设计 (5)需求分析 (5)技术可行性 (5)经济可行性 (5)设计实现内容 (6)数据字典 (6)成员变量 (6)方法设计 (6)页面如下 (7)数据流程图 (7)测试运行及结果分析 (10)测试及问题探讨 (11)课设总结与体会 (12)致谢 (13)参考文献 (14)附录 (115)一、课程设计的概念1.1课程设计的目的现代社会,ATM可以说是一种使用非常广泛的机器, ATM使用是非常频繁的,然而由于程序及其机器本人的一些漏洞,导致ATM 机的犯罪现象屡有发生。

该项目的开发有利于进一步提高ATM机的性能及安全性,模拟开发ATM系统软件,掌握系统开基本流程,在开发系统中可以巩固所学的有关软件开发的知识,有利于提出优化改进现代ATM系统的建议。

1.2课程设计的内容银行ATM机的使用已经普及,人们都已习惯利用自动柜员机来提取现金,查询存款,转账,修改密码等等,我设计的ATM取款机添加了新的功能,具体功能如下:1.2.1管理员状态登入:1.2.1.1开户:添加一个新的用户1.2.1.2销户:删除一个无用用户1.2.1.3查询:管理员可以查询用户的相关信息1.2.2普通用户状态登入:1.2.2.1查询:用户可以查询自己的银行卡信息1.2.2.2存款:提供用户提取现金的功能1.2.2.3转账:提供用户在统一银行内的转账功能1.2.2.4查询交易情况:查询交易文件中的交易记录1.2.2.5修改密码:能够修改用户的银行卡密码二、设计方案的论证2.1概要设计《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

简单ATM(JAVA)(DOC)

简单ATM(JAVA)(DOC)

《C/S项目实训》课程设计报告组别2组学生姓名冯雯雨学号01学生姓名高雪倩学号06学生姓名高赛学号07专业班级2014级信息管理与信息系统1班题目河北金苑银行ATM指导教师张红霞教授2015 年 12 月 28日1引言 ................................................................................................... - 2 -1.1 研究背景与现状 ...................................................................... - 2 -1.2 研究意义 ................................................................................. - 2 - 2系统分析............................................................................................. - 3 -2.1 可行性分析.............................................................................. - 3 -2.1.1.功能................................................................................ - 3 -2.1.2.性能要求 ........................................................................ - 3 -2.1.3.输出................................................................................ - 3 -2.1.4.输入................................................................................ - 3 -2.1.5.基本的数据流程和处理流程 .......................................... - 3 -2.2 需求分析 ................................................................................. - 3 -2.2.1性能需求 ........................................................................ - 3 -2.2.2安全性需求 .................................................................... - 3 -2.3 功能分析 ................................................................................. - 4 -2.3.1 登陆功能 ....................................................................... - 4 -2.3.2 查询功能 ....................................................................... - 4 -2.3.3 取款功能 ....................................................................... - 4 -2.3.4 存款功能 ....................................................................... - 4 -2.3.5 无卡存款 ....................................................................... - 4 -2.3.6 修改密码 ....................................................................... - 4 -2.3.7 公益众筹 ....................................................................... - 4 - 3概要设计............................................................................................. - 5 -3.1 系统设计指导思想 .................................................................. - 5 -3.2 数据库设计.............................................................................. - 5 - 4详细设计............................................................................................. - 6 -4.1 无卡存款 ................................................................................. - 6 -4.2 公益众筹 ................................................................................. - 6 -4.3 存款(定期,活期)............................................................... - 8 -4.4 取款(定期,活期)............................................................. - 11 -4.5.修改密码 ................................................................................ - 14 - 5总结 .................................................................................................. - 16 - 参考文献........................................................................................ - 17 -摘要现在的社会,是一个高技术时代,在科技的快速发展下,大部分系统都趋向于自动化,同时节约了人力物力,给人们带来很大的方便。

java实训ATM取款机设计方案

java实训ATM取款机设计方案

java实训ATM取款机设计报告1.1课程设计的目的现代社会,ATM可以说是一种使用非常广泛的机器, ATM使用是非常频繁的,然而由于程序及其机器本人的一些漏洞,导致ATM 机的犯罪现象屡有发生。

该项目的开发有利于进一步提高ATM机的性能及安全性,模拟开发ATM系统软件,掌握系统开基本流程,在开发系统中可以巩固所学的有关软件开发的知识,有利于提出优化改进现代ATM系统的建议。

1.2课程设计的内容银行ATM机的使用已经普及,人们都已习惯利用自动柜员机来提取现金,查询存款,转账,修改密码等等,我设计的ATM取款机添加了新的功能,具体功能如下:1.2.1管理员状态登入:1.2.1.1开户:添加一个新的用户1.2.1.2销户:删除一个无用用户1.2.1.3查询:管理员可以查询用户的相关信息1.2.2普通用户状态登入:1.2.2.1查询:用户可以查询自己的银行卡信息1.2.2.2存款:提供用户提取现金的功能1.2.2.3转账:提供用户在统一银行内的转账功能1.2.2.4查询交易情况:查询交易文件中的交易记录1.2.2.5修改密码:能够修改用户的银行卡密码二、设计方案的论证2.1概要设计《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

2.2需求分析2.2.1技术可行性ATM设计的主要目标为:管理员登陆时要写入账户的名和身份证号在数据库里进行匹配,匹配成功则登入否则在前台显示账号或密码错误;普通用户登入时要写入银行卡号和所属银行卡号的密码,在数据库中进行匹配,匹配成功即登入否则在前台显示账号或密码错误2.2.2经济可行性可行性分析法是对工程项目技术经济论证技术经济论证经济合理性综合分析的方法。

java课设 atm机

java课设 atm机

软件学院课程设计报告书课程名称面向对象程序课程设计设计题目 A T M 柜员机模拟程序专业班级学号姓名指导教师2013 年6 月目录1设计时间 (3)2设计目的 (3)3设计任务 (3)4设计内容 (4)4.1 概要设计 (4)4.1.1 设计思想 (4)4.1.2 实现方法 (5)4.1.3程序所能达到的功能 (5)4.2 总体设计 (5)4.2.1 Java类和自定义类的层次关系 (5)4.2.1 自定义类的说明 (6)4.3 详细设计 (7)4.3.1 程序代码 (7)4.3.2 运行效果 (35)5总结与展望 (43)参考文献 (44)成绩评定 (45)1 设计时间2013年06月8日至2013年06月14日2 设计目的《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。

JAVA程序设计的设计加深了学生对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用。

本次面向对象程序课程设计目标为:通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。

通过此次课程设计巩固所学Java语言基本知识增进Java语言编辑基本功掌握JDK 等开发工具的运用拓宽常用类库的应用。

通过该环节与课程及相关知识加以融会贯通全面掌握Java语言的编程思想及面向对象程序设计的方法为今后从事实际工作打下坚实的基础。

通过实践加深学生对面向对象程序设计的类、对象、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,帮助学生建立面向对象的思维模式。

在实践中,通过对Java程序的调试,提高学生分析程序中出现的错误和解决这些错误的能力。

3设计任务题目:ATM柜员机模拟程序要求:使用图形用户界面。

当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:(1)查询余额功能:初始余额为10000元。

JAVA课程设计-ATM机模拟系统

JAVA课程设计-ATM机模拟系统

《Java语言程序设计》课程设计报告题目:ATM柜员机专业:信息与计算科学学号:23*名:**指导教师:***成绩:2010 年 12 月 10 日目录1课程设计研究背景及意义 (2)2课程设计题目描述和基本功能设计要求 (2)3系统需求分析 (2)3.1 功能需求分析 (2)3.2 其他需求分析 (3)4 系统设计 (3)4.1 总体设计 (3)4.2 ATM柜员机界面设计 (4)4.3 各功能模块设计 (5)4.3.1 登陆页面模块设计 (5)4.3.2 选择服务模块设计 (6)4.3.3 取款模块设计 (7)4.3.4 修改密码模块设计 (8)4.3.5 查询余额模块设计 (9)4.3.6 退卡模块设计 (9)4.4 异常处理情况说明 (10)5 系统实现与测试 (10)6 课程设计总结 (13)6.1 遇到的问题及解决办法 (13)6.2 心得体会 (14)参考文献 (14)附录(源码) (14)1课程设计研究背景及意义这次课程设计是通过JAVA编程来实现ATM柜员机的功能。

以前,人们用手算取钱,不管从方便的角度还是速度的角度来看都不及现在。

电子技术的不断发展使得ATM自动化的功能不断完善。

在二十一世纪的今天,A TM柜员机是人们生活中重要的工具,所以,对ATM柜员机的研究的课程设计具有重大意义。

这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象开发的思维,初步了解软件开发的一般流程,提高用JA V A编程的实际动手能力并增强大家对面向对象的了解。

这次课程设计的主要内容是独立用JA V A语言开发一个小的应用程序。

2 课程设计题目描述和基本功能设计要求本次设计的ATM柜员机主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。

它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。

组员分工:组长(单焱):负责分配其他组员的任务,构建需求分析,系统实现及异常处理情况,调试程序等,把握ATM柜员机的整体布局。

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位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

ATM柜员机模拟程序-课程设计报告

《Java程序设计》课程设计报告题目ATM柜员机模拟程序姓名学号性别所在班级指导教师二〇一二年十二月二十九日目录一前言 (1)1.1 课程设计题目 (1)1.2 课程设计完成地点 (1)1.3 系统概述 (1)1.3.1课程设计介绍 (1)1.3.2 课程设计目的 (1)1.3.3 课程设计内容 (2)1.4 相关技术 (2)二需求分析 (3)2.1 功能需求 (3)2.2 界面需求 (3)2.2.1窗体的设计 (4)2.2.2窗体的主要结构的设计 (4)三功能设计 (5)3.1 系统总体结构 (5)3.2 系统模块 (5)3.3 主要相关类 (6)四详细设计 (8)4.1登陆页面模块设计 (8)4.2选择服务模块设计 (9)4.3取款模块设计 (10)4.4修改密码模块设计 (11)4.5退卡模块设计 (12)4.6异常处理情况说明 (12)4.7系统实现与测试 (12)五总结 (14)5.1遇到的问题及解决办法 (14)5.2心得体会 (14)六感谢 (15)一前言1.1 课程设计题目ATM柜员机模拟程序1.2 课程设计完成地点文理楼A5041.3 系统概述1.3.1课程设计介绍本次JAVA游戏开发课程设计在文理楼机房进行,为期一周。

这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。

这次课程设计的主要内容是独立用JAVA语言开发一个简单的应用程序。

我所设计的是ATM柜员机。

随着市场经济的繁荣发展,人们物质生活得到了极大的提高,手中剩余资金日益增多,受传统观念的影响,绝大多数人喜欢把暂时不用的资金存入银行,而在需要现金时去银行提现,这就导致了银行业务的急剧增加。

最然银行网点越来越多,银行工作人员效率也随着信息化有明显增长,但依旧不能及时满足广大储户的需求。

而一味的增加营业网点,从理论上讲虽有缓解此问题的功效,但是建立一个网点需要付出昂贵的资金,还要不断注入人力资源。

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申请监听

javaATM课程设计报告

ATM自动取款机一、需求分析运用了事件监听技术来实现ATM的各种功能例如:存款、取款、修改密码、查询。

利用NetBeans进行用户图形的界面排版,符合日常软件使用规范来设计菜单和界面,方便用户操作,同时也使的程序更加简单。

利用NetBeans对图形用户界面进行排版;用JDBCUtil.java文件进行数据库的连接。

本次设计的需求还有设计一个有存款、取款、修改密码、查询功能。

二、概要设计三、运行环境、开发语言1软件环境:操作系统:windows98/ME/2000/xp/windows7 2硬件环境:处理器:Intel Pentium 166MX或更高内存:32MB硬盘空间:1GB显卡:SVGA显示适配开法工具:MyEclipse8.5四、详细设计1 程序清单类名功能JFrame frame1ATM 自动柜员模拟登陆类名功能JFrame frame2选择业务类名功能JFrame frame3修改密码类名功能JFrame frame4ATM 取款类名功能JFrame frame5ATM 存款2 主要代码图片1ATM 自动柜员机登陆://第一个窗口界面设计:ATM自动柜员模拟登陆frame1=new JFrame("模拟ATM柜员机");frame1.setSize(400, 200);frame1.setLocation(300, 200);frame1.setResizable(false);//拖动鼠标时,其框架不会改变其大小GridBagLayout gridbag=new GridBagLayout(); //定义一个布局管理器GridBagConstraints constraints=new GridBagConstraints(); //创建该对象constraints.fill=GridBagConstraints.CENTER; //指定组件填充网格constraints.insets=new Insets(2,2,2,2);frame1.setLayout(gridbag);lb1=new JLabel("请输入您的银行卡号:");lb4=new JLabel("");text1=new JTextField(10);lb2=new JLabel("请输入您的银行卡密码:");text2=new JPasswordField(10);text2.setEchoChar('●');lb3=new JLabel("");zh=new JLabel("123456");zh.setVisible(false);mm=new JLabel("123456");mm.setVisible(false);pane=new JPanel();bt1=new JButton("更正");bt2=new JButton("确定");bt3=new JButton("退出");pane.add(bt1);pane.add(bt2);pane.add(bt3);buildConstraints(constraints,0,0,1,1,20,25); //指定其组件在网格中的存放位置及与其他组件之间的距离gridbag.setConstraints(lb1, constraints);frame1.add(lb1); //在框架上添加按钮buildConstraints(constraints,1,0,1,1,40,20); //设置其在网格中的位置gridbag.setConstraints(text1, constraints);frame1.add(text1);buildConstraints(constraints,1,1,1,1,20,12);gridbag.setConstraints(lb4, constraints);frame1.add(lb4);buildConstraints(constraints,0,1,1,1,20,12);gridbag.setConstraints(zh, constraints);frame1.add(zh);buildConstraints(constraints,0,2,1,1,20,5);gridbag.setConstraints(lb2, constraints);frame1.add(lb2);buildConstraints(constraints,1,2,1,1,40,10);gridbag.setConstraints(text2, constraints);frame1.add(text2);buildConstraints(constraints,1,3,1,1,20,12);gridbag.setConstraints(lb3, constraints);frame1.add(lb3);buildConstraints(constraints,0,3,1,1,20,12);gridbag.setConstraints(mm, constraints);frame1.add(mm);buildConstraints(constraints,1,4,1,1,20,5);gridbag.setConstraints(pane, constraints);frame1.add(pane);bt1.addActionListener(this); //为一些按钮注册监听器bt2.addActionListener(this);bt3.addActionListener(this);pack();frame1.setVisible(true);图2当帐户号和密码都对时进入“选择业务”界面,在里面可以选择您所修要办理的业务://第二个窗口界面设计:选择业务frame2=new JFrame("选择业务");frame2.setSize(400, 200);frame2.setLocation(300, 200);frame2.setResizable(false);p1=new JPanel();p2=new JPanel();p3=new JPanel();b1=new JButton("修改密码");b2=new JButton("查询余额");b3=new JButton("我要取款");b4=new JButton("我要存款");b5=new JButton("退出");b6=new JButton("返回");p1.add(b1); //将按钮添加到面板上p1.add(b2);p2.add(b3);p2.add(b4);p3.add(b6);p3.add(b5);frame2.add(p1,BorderLayout.NORTH); //设置按钮在框架中的位置frame2.add(p2,BorderLayout.CENTER);frame2.add(p3,BorderLayout.SOUTH);b1.addActionListener(this); //为其注册监听器b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b6.addActionListener(this);b5.addActionListener(this);图三“选择业务”界面选择“修改密码”进入下面的界面(密码长度大于6位长度)://第三个窗口界面设计:修改密码frame3=new JFrame("修改密码");frame3.setSize(400, 180);frame3.setLocation(300, 200);frame3.setResizable(false);GridBagLayout gridbag1=new GridBagLayout();GridBagConstraints constraints1=new GridBagConstraints(); //创建GridBagLayout所对应的类constraints1.fill=GridBagConstraints.BOTH;constraints1.insets=new Insets(2,2,2,2);frame3.setLayout(gridbag);lbe1=new JLabel("旧密码:");lbe2=new JLabel("新密码:");lbe3=new JLabel("确认密码:");cw1=new JLabel("");cw2=new JLabel("");cw3=new JLabel("");button1=new JButton("确认");button2=new JButton("业务");button3=new JButton("退出");tf1=new JPasswordField(10);tf2=new JPasswordField(10);tf3=new JPasswordField(10);tf1.setEchoChar('●'); //设置文本区域显示字符tf2.setEchoChar('●');tf3.setEchoChar('●');buildConstraints(constraints,0,0,1,1,20,12); gridbag.setConstraints(lbe1, constraints); frame3.add(lbe1);buildConstraints(constraints,1,0,1,1,40,0); gridbag.setConstraints(tf1, constraints); frame3.add(tf1);buildConstraints(constraints,2,0,1,1,40,5); gridbag.setConstraints(cw1, constraints); frame3.add(cw1);buildConstraints(constraints,0,1,1,1,20,12); gridbag.setConstraints(lbe2, constraints); frame3.add(lbe2);buildConstraints(constraints,1,1,1,1,40,0); gridbag.setConstraints(tf2, constraints); frame3.add(tf2);buildConstraints(constraints,2,1,1,1,40,5); gridbag.setConstraints(cw2, constraints); frame3.add(cw2);buildConstraints(constraints,0,2,1,1,20,12); gridbag.setConstraints(lbe3, constraints); frame3.add(lbe3);buildConstraints(constraints,1,2,1,1,40,0); gridbag.setConstraints(tf3, constraints); frame3.add(tf3);buildConstraints(constraints,2,2,1,1,40,5); gridbag.setConstraints(cw3, constraints); frame3.add(cw3);buildConstraints(constraints,0,3,1,1,20,12); gridbag.setConstraints(button1, constraints); frame3.add(button1);buildConstraints(constraints,1,3,1,1,40,5); gridbag.setConstraints(button2, constraints); frame3.add(button2);buildConstraints(constraints,2,3,1,1,40,5);gridbag.setConstraints(button3, constraints);frame3.add(button3);button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);图4选择业务”界面的“查询余额”,初始余额为10000元://第四个窗口界面设计:查询余额frame4=new JFrame("查询余额");frame4.setSize(400, 200);frame4.setLocation(300, 200);frame4.setResizable(false);GridBagLayout gridbag2=new GridBagLayout();GridBagConstraints constraints2=new GridBagConstraints();constraints2.fill=GridBagConstraints.BOTH;constraints2.insets=new Insets(2,2,2,2);frame4.setLayout(gridbag);label=new JLabel("您当前的可用余额为:");tt=new JLabel("10000");tt1=new JLabel("元");bb1=new JButton("业务");bb2=new JButton("退出");buildConstraints(constraints,0,0,1,1,20,30);gridbag.setConstraints(label, constraints);frame4.add(label);buildConstraints(constraints,1,0,1,1,1,30);gridbag.setConstraints(tt, constraints);frame4.add(tt);buildConstraints(constraints,2,0,1,1,30,30);gridbag.setConstraints(tt1, constraints);frame4.add(tt1);buildConstraints(constraints,0,1,1,1,1,2);gridbag.setConstraints(bb1, constraints);buildConstraints(constraints,2,1,1,1,1,2);gridbag.setConstraints(bb2, constraints);frame4.add(bb2);bb1.addActionListener(this);bb2.addActionListener(this);图5“选择业务”界面中的“我要取款”,进入“ATM取款”界面://第五个窗口界面设计:ATM取款frame5=new JFrame("ATM取款");frame5.setSize(400, 200);frame5.setLocation(300, 200);frame5.setResizable(false);GridBagLayout gridbag3=new GridBagLayout();GridBagConstraints constraints3=new GridBagConstraints();constraints3.fill=GridBagConstraints.CENTER;constraints3.insets=new Insets(2,2,2,2);frame5.setLayout(gridbag3);aa=new JLabel("请输入您要取的数目");ff=new JTextField(10);bb=new JLabel("元");pp=new JPanel();qq1=new JButton("确定");qq2=new JButton("业务");qq3=new JButton("退出");ww1=new JLabel("");pp.add(qq1);pp.add(qq2);pp.add(qq3);buildConstraints(constraints3,0,0,1,1,20,10);gridbag3.setConstraints(aa, constraints3);frame5.add(aa);buildConstraints(constraints3,0,1,1,1,1,1);gridbag3.setConstraints(ff, constraints3);buildConstraints(constraints3,1,1,1,1,30,0);gridbag3.setConstraints(bb, constraints3);frame5.add(bb);buildConstraints(constraints3,0,2,1,1,20,10);gridbag3.setConstraints(pp, constraints3);frame5.add(pp);buildConstraints(constraints3,2,2,1,1,20,0);gridbag3.setConstraints(ww1, constraints3);frame5.add(ww1);qq1.addActionListener(this);qq2.addActionListener(this);qq3.addActionListener(this);pack();图6用户点击存款功能://第六个窗口界面设计:ATM存款frame6=new JFrame("ATM存款");frame6.setSize(400, 200);frame6.setLocation(300, 200);frame6.setResizable(false);GridBagLayout gridbag4=new GridBagLayout();GridBagConstraints constraints4=new GridBagConstraints();constraints4.fill=GridBagConstraints.CENTER;constraints4.insets=new Insets(2,2,2,2);frame6.setLayout(gridbag4);w1=new JLabel("请输入您要存款的数目");f=new JTextField(10);w2=new JLabel("元");p3=new JPanel();q1=new JButton("确定");q2=new JButton("业务");q3=new JButton("退出");ww=new JLabel("");p3.add(q1);p3.add(q2);p3.add(q3);buildConstraints(constraints4,0,0,1,1,20,10);gridbag4.setConstraints(w1, constraints4);frame6.add(w1);buildConstraints(constraints4,0,1,1,1,1,1);gridbag4.setConstraints(f, constraints4);frame6.add(f);buildConstraints(constraints4,1,1,1,1,30,0);gridbag4.setConstraints(w2, constraints4);frame6.add(w2);buildConstraints(constraints4,0,2,1,1,20,10);gridbag4.setConstraints(p3, constraints4);frame6.add(p3);buildConstraints(constraints4,2,2,1,1,20,0);gridbag4.setConstraints(ww, constraints4);frame6.add(ww);q1.addActionListener(this);q2.addActionListener(this);q3.addActionListener(this);pack();}public void actionPerformed(ActionEvent aa) {//第一个窗口事件:A TM自动柜员模拟登陆if(aa.getSource()==bt1){lb3.setText("");lb4.setText("");text1.setText("");text2.setText("");}if(aa.getSource()==bt2){String zh1=zh.getText();String mm1=mm.getText();if(text1.getText().equals(zh1) && text2.getText().equals(mm1)){ frame1.setVisible(false);frame2.setVisible(true);}if(!(text1.getText().equals("123456"))){//设置初始密码为123456 text1.setText("");text2.setText("");lb4.setText("");lb4.setText("帐户不存在,请重新输入!");}if(text1.getText().equals("123456") && !(text2.getText().equals("123456"))){ if(text2.getText().equals("")){text2.setText("");lb4.setText("");lb3.setText("请输入密码!");}else{text2.setText("");lb4.setText("");lb3.setText("密码不正确,请重新输入!");}}}if(aa.getSource()==bt3){System.exit(0);}//第二个窗口事件:选择业务if(aa.getSource()==b1){tf1.setText("");tf2.setText("");tf3.setText("");cw1.setText("");cw2.setText("");cw3.setText("");frame2.setVisible(false); //显示该设定窗口frame3.setVisible(true); //不显示该设定窗口}if(aa.getSource()==b2){frame2.setVisible(false);frame4.setVisible(true);}if(aa.getSource()==b3){frame2.setVisible(false);frame5.setVisible(true);ww1.setText("");ff.setText("");}if(aa.getSource()==b4){ww.setText("");frame2.setVisible(false);frame6.setVisible(true);f.setText("");}if(aa.getSource()==b6){text1.setText("");text2.setText("");lb4.setText("");lb3.setText("");frame2.setVisible(false);frame1.setVisible(true);}if(aa.getSource()==b5){System.exit(0);}//第三个窗口事件:修改密码if(aa.getSource()==button1){String mm2=mm.getText();int xmms=tf2.getText().length();if(tf1.getText().equals(mm2)){ //if语句判定密码是否与默认密码一致if(xmms>=6){if(tf3.getText().equals(tf2.getText())){cw1.setText("");cw2.setText("");mm.setText(tf2.getText());cw3.setText("密码修改成功!");}else{cw1.setText("");cw2.setText("");tf2.setText("");tf3.setText("");cw3.setText("两次密码不一致!");}}else{tf2.setText("");tf3.setText("");cw1.setText("");cw3.setText("");cw2.setText("长度应不小于6位!"); //密码长度大于或等于6位}}else{tf1.setText("");tf2.setText("");tf3.setText("");cw1.setText("原密码输入不对!");cw2.setText("");cw3.setText("");}}if(aa.getSource()==button2){frame3.setVisible(false);frame2.setVisible(true);}if(aa.getSource()==button3){System.exit(0);}//第四个窗口事件:余额查询if(aa.getSource()==bb1){frame4.setVisible(false);frame2.setVisible(true);}if(aa.getSource()==bb2){System.exit(0);}//第五个窗口事件:A TM取款if(aa.getSource()==qq1){String qu=ff.getText();double qu1=Double.parseDouble(qu);String yu2=tt.getText();double yu21=Double.parseDouble(yu2);if(qu1%100==0 && qu1<=5000){//取款必须为100的整数倍,并且其数目小于5000 if(qu1<=yu21){double sum1=yu21-qu1;tt.setText(""+sum1);ff.setText("");ww1.setText("取款成功!您可以查询余额!");}else{ff.setText("");ww1.setText("余额不足!");}}else{ff.setText("");ww1.setText("应为100的倍数且<5000!");}}if(aa.getSource()==qq2){frame5.setVisible(false);frame2.setVisible(true);}if(aa.getSource()==qq3){System.exit(0);}//第六个窗口事件:A TM存款if(aa.getSource()==q1){String cun=f.getText();double cun1=Double.parseDouble(cun);String yu=tt.getText();double yu1=Double.parseDouble(yu);if(cun1>=0){double sum=yu1+cun1;tt.setText(""+sum);f.setText("");ww.setText("存款成功!您可以查询余额!");}else{f.setText("");ww.setText("必须为非负数!");}}if(aa.getSource()==q2){frame6.setVisible(false);frame2.setVisible(true);}if(aa.getSource()==q3){System.exit(0); } }public static void main(String[] args) {new ATM(); } }五、调试与分析1)在编写过程中当向JFrame窗口添加组件,其实是在内容嵌板上添加,自己在编写是没注意到这个问题,导致老出错,为获取这个内容嵌板,就使用getC ontentpane;2)在给按钮注册监听器时,没有给对象创建空间,也导致程序出现错误:3)还有一些主要是在编写过程中的语法错误,在同学的帮助下加以改正。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目 录 1 前言 ............................................................................................................... 1 2 需求分析 ....................................................................................................... 1 2.1 任务和要求 ......................................................................................... 1 2.2 运行环境 ............................................................................................. 1 2.3 开发工具 ............................................................................................. 1 3 分析和设计 ................................................................................................... 1 3.1 系统分析及设计思路 ......................................................................... 1 3.2 主要类图 ............................................................................................. 1 4 具体代码实现 ............................................................................................... 5 5 课程设计总结 ............................................................................................... 5 5.1 程序运行结果或预期运行结果 ....................................................... 16 5.2 设计结论 ........................................................................................... 16 参考文献 ......................................................................................................... 20 致 谢 ............................................................................................................. 21 1

1 前言 本次的课程设计,主要是编写一个程序来管理ATM机模拟系统。ATM机模拟系统主要是由各个Windows窗口组成,它是由登录页面、选择服务、存款、取款、查询余额、修改密码和退卡等功能。它的各种按钮的事件和功能可以简单的模拟ATM机系统的要求。

2 需求分析 2.1 任务和要求 设计一个ATM机模拟系统。要求: 可以登录ATM柜员机系统,用户可以按照以下规则进行:查询余额:初始余额为50000元;ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支;ATM存款:不能出现负存款;修改密码:只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。以Windows窗口形式显示,标题栏为ATM机名称,右上角有最小化按钮、最大化按钮、关闭按钮,不同的窗口中有不同的按钮和选择菜单。

2.2 运行环境 (1)WINDOWS7/XP系统 (2)myeclipse

2.3 开发工具 Java 3 分析和设计 3.1 系统分析及设计思路 ATM机模拟系统主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由存款模块、取款模块、查询余额模块、修改密码模块、退卡模块组成。 2

登录页面模块:我们对于ATM机最关心的是安全问题,当然是密码,所以第一个界面就是要输入密码和卡号才能继续服务。首先定义了文本框类的对象tf1,tf2,用于输入单行的文本;调用public String getPassword()方法,获取用户想要的字符串;判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose()关掉窗口。定义一个Account类来实现这一功能。 选择服务模块:在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。每一个按钮都有监听器,在选择了按钮后,java.awt.event中的ActionEvent类创建一个事件对象,并将它传递给方法public void actionPerformed(ActionEvent e)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。定义一个Selection类来实现这一功能。其中部分代码: p.add(new Label("请选择你要的服务")); this.add(p); /*各种服务功能*/ buttonCUN = new Button(" 存 款 "); p1.add(buttonCUN);this.add(p1); buttonQU = new Button(" 取 款 "); p2.add(buttonQU);this.add(p2); buttonCHA = new Button(" 查询余额 "); p3.add(buttonCHA);this.add(p3); buttonGAI = new Button(" 修改密码 "); p4.add(buttonGAI); this.add(p4); buttonTUI = new Button(" 退 出 "); p5.add(buttonTUI); this.add(p5); 存款模块:在存款模块中,有一个文本框和一个按钮还有标签组成的。用户在文本框中输入他想存的数额,但是必须是100的倍数且是正整数。否则就会弹出报错的窗口。定义一个SetBalance类来实现这一功能。 取款模块:在取款模块中,也是有一个文本框和一个按钮还有标签组成的。用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000元块。当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不可以为负,否则就会弹出报错的窗口。定义一个GetBalance类来实现这一功能。部分代码为: 3

public String withdrawMoney(double money){ String str = null ; if(money<=0){ str = "取款数目须是正数!"; }else{ if(getMoney()<0){//判断余额是否为负 str="余额为负数!"; }else if(money<=getMoney()){ if((money%100!=0)||(money>=5000)){//取钱数为100的倍数或不大于5000 str= "取款数目须是一百的整数倍!"; }else{ setBalance(money); str = "取款成功:余额为"+getMoney(); } }else{ str = "余额不足!"; } } return str ; } 查询余额模块:,运用panel1.add(new Label("你的余额为: " + act.getMoney()));方法来查询的你余额,余额可以是任何格式的,没有要求限制。定义了一个Query类来实现这一功能。 修改密码模块:在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次要匹配,否则也会报错,然后再重新回到修改密码的界面。定义了一个ChangePassword类,来实现这一功能。 退卡模块:在退卡模块设计中,只是用了 if(e.getSource()==buttonTUI) {//退出 System.exit(0); dispose(); } 这个方法就可以实现了。 4

3.2 主要类图 Frame-base: String-nameCounter: int-serialVersionUID: long

+getState(): int+setExtendedState(int state): void+setState(int state): void+removeNotify(): void

Account-code: string-name: string-password: string-money: double+Account()+getCode(): string+getName(): string+getPassword(): string+changePassword(String pwd): void+getMoney(): double-setBalance(double mon): double+withdrawMoney(double money): string+depositMoney(double money): stringChangePassword~panel1: panel~panel2: panel~panel3: panel~panel: panel~tf4: JPasswordField~tf5: JPasswordField~tf6: JPasswordField~button: Button~act: Account+ChangePassword(String s, Account act)+actionPerformed(ActionEvent e): voidGetBalance~baseBox: box~box1: box~box2: box~button: Button~tf: TextField~act: Account+GetBalance(String s, Account act)+actionPerformed(ActionEvent e): voidQuery~button: Button~act: Account+Query(String s, Account act)+actionPerformed(ActionEvent e): voidSetBalance~baseBox: box~box1: box~box2: box~button: Button~tf: TextField~act: Account+SetBalance(String s, Account act)+windowClosing(WindowEvent e): void+actionPerformed(ActionEvent e): voidSelection~p1: panel~p2: panel~p3: panel~p4: panel~p5: panel~p: panel~act: Account+Selection()+Selection(String s, Account act)+windowClosing(WindowEvent e): void+actionPerformed(ActionEvent e): voidWindowBox~baseBox: box~box1: box~box2: box~tf1: TextField~tf2: JPasswordField~button1: Button~button2: Button

相关文档
最新文档