Java模拟ATM系统毕业设计
java课程设计ATM柜员机模拟程序

数据库连接:使用JDBC连接 数据库,进行数据查询
查询语句:编写SQL查询语句, 根据用户输入进行查询
结果展示:将查询结果以列表 或表格形式展示给用户
05
AT M 柜 员 机 的 数 据 库 设计
数据库表结构设计
用户表:存储用户信息,包括用户名、密码、余额等 交易表:记录用户的交易信息,包括交易时间、交易金额、交易类型等 账户表:存储账户信息,包括账户编号、账户类型、账户余额等 银行信息表:存储银行信息,包括银行名称、银行地址、银行电话等 系统日志表:记录系统操作日志,包括操作时间、操作人、操作内容等
网络中断等
性能测试与优化
测试方法:压力测 试、负载测试、稳 定性测试等
测试工具: JMeter、 LoadRunner等
优化目标:提高系 统响应速度、减少 资源消耗、提高系 统稳定性等
优化方法:代码优 化、数据库优化、 缓存优化等
调试过程与问题解决
测试环境搭建:安装Java开发环境,配置 数据库,安装模拟器等
06
AT M 柜 员 机 的 测试与调试
01 添加章节标题
02
AT M 柜 员 机 模 拟 程 序 概述
AT M 柜 员 机 的 基 本 功 能
存 款 : 用 户 可 以 将 现 金 存 入 AT M 柜 员 机 , 系统会自动识别并记录存款金额
转 账 : 用 户 可 以 通 过 AT M 柜 员 机 进 行 转 账操作,系统会自动记录转账信息
异地备份:将 备份数据存储 在异地,防止 自然灾害等意 外情况导致的
数据丢失
访问控制:设 置严格的访问 控制策略,防 止未授权访问
安全审计:定 期进行安全审 计,及时发现 并修复安全漏
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程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
基于java_ATM机_银行存取款系统的设计与实现(含源文件)

本科毕业论文(设计)银行存取款系统的设计与实现姓名:__ ________ 系别: 计算机与信息技术学院_专业:_ 计算机科学与技术_ 学号:__ _____指导教师:__ _ _________年月日目录引论 (1)1银行存取款系统概述 (1)1.1背景 (1)1.2意义 (1)2 银行存取款系统需求分析 (1)2.1系统需求 (1)2.2功能需求 (1)2.2.1用户注册和登陆功能 (1)2.2.2用户存取款转账和查询历史功能 (1)2.3软件属性需求 (2)2.4业务流程描述 (2)3.银行存取款系统总体设计 (2)3.1系统设计概述 (2)3.2注册帐户 (2)3.3登录 (2)3.4存款 (2)3.5取款 (2)3.6转账 (2)3.7查询历史 (2)3.8退出 (3)4 Oracle数据库的设计 (3)4.1 Oracle数据库设计概论 (3)4.2 表的结构设计 (3)4.2.1用户表 (3)4.2.2历史表 (3)4.3 PL/SQL存储过程的设计 (3)4.3.1用户表存储过程的设计 (4)4.3.2历史表存储过程的设计 (4)5 银行存取款系统的实现 (5)5.1用户登陆模块的实现 (5)5.1.1界面样式 (5)5.1.2功能实现 (5)5.2新用户注册模块的实现 (6)5.2.1界面样式 (6)5.2.2功能实现 (6)5.3用户操作模块的实现 (7)5.3.1界面样式 (8)5.3.2功能实现 (8)5.4存款模块的实现 (9)5.4.1界面样式 (9)5.4.2功能实现 (9)5.5取款模块的实现 (10)5.5.1界面样式 (11)5.5.2功能实现 (11)5.6转账模块的实现 (12)5.6.1界面样式 (12)5.6.2功能实现 (12)5.7查询历史记录模块的实现 (15)5.7.1界面样式 (15)5.7.2功能实现 (15)6发布程序及分包规范 (16)结论 (16)参考文献 (17)致谢 (17)银行存取款系统的设计与实现摘要计算机科学技术的发展不仅极大地促进了整个科学的发展,而且明显加快了经济信息化和社会信息化的进程。
java atm课程设计报告

Java ATM 课程设计报告1. 引言本报告旨在介绍一个基于 Java 编程语言的 ATM 课程设计项目。
该项目旨在设计一个简单的自动柜员机(ATM)系统,以实现基本的银行业务操作。
2. 需求分析在开始编写代码之前,我们首先需要对该系统的需求进行分析。
ATM 系统应具备以下功能: - 用户输入银行卡和密码进行身份验证。
- 用户能够查询账户余额和交易记录。
- 用户能够存款和取款。
- 用户能够转账给其他账户。
- 用户能够修改密码。
3. 设计思路基于以上需求,我们可以采用以下设计思路来实现该系统: 1. 设计一个ATM类,该类将作为系统的入口点。
2. 设计一个User类,用于表示 ATM 的用户。
该类应包含用户的银行卡号、密码、账户余额和交易记录等属性。
3. 设计一个Bank类,用于处理用户的交易请求。
该类应包含用户的账户信息,并提供存款、取款、转账和修改密码等方法。
4. 设计一个Main类,用于模拟用户与ATM 系统的交互过程。
4. 系统实现4.1 ATM类public class ATM {public static void main(String[] args) {// 创建用户对象User user = new User("1234567890", "123456", 1000);// 创建银行对象Bank bank = new Bank();// 用户输入银行卡和密码进行身份验证if (bank.authenticate(user.getCardNumber(), user.getPassword())) {// 用户通过身份验证,显示欢迎信息System.out.println("欢迎使用本 ATM 机!");// 进行后续操作,如查询余额、存款、取款、转账和修改密码等} else {// 身份验证失败,显示错误信息System.out.println("银行卡号或密码错误!");}}}4.2 User类public class User {private String cardNumber;private String password;private double balance;private List<String> transactionHistory;public User(String cardNumber, String password, double balance) { this.cardNumber = cardNumber;this.password = password;this.balance = balance;this.transactionHistory = new ArrayList<>();}// getter 和 setter 方法}4.3 Bank类public class Bank {private Map<String, User> users;public Bank() {ers = new HashMap<>();// 添加用户信息users.put("1234567890", new User("1234567890", "123456", 1000)); }public boolean authenticate(String cardNumber, String password) { // 验证用户身份User user = users.get(cardNumber);if (user != null && user.getPassword().equals(password)) {return true;}return false;}// 其他方法:存款、取款、转账和修改密码等}4.4 Main类public class Main {public static void main(String[] args) {ATM atm = new ATM();}}5. 测试与调试在完成代码的编写后,我们应进行测试和调试以确保系统的正常运行。
java模拟atm课程设计

java模拟atm 课程设计一、课程目标知识目标:1. 学生能理解ATM机的基本功能和工作原理,掌握运用Java语言实现ATM 功能的相关知识。
2. 学生能掌握面向对象编程思想,运用类和对象的概念实现ATM功能模块。
3. 学生了解异常处理在程序设计中的重要性,并能运用try-catch语句处理可能出现的异常。
技能目标:1. 学生能运用所学知识,设计并实现一个具备基本功能的ATM模拟系统。
2. 学生能运用控制台输入输出,实现用户与ATM机之间的交互。
3. 学生能运用所学调试技巧,对ATM模拟系统进行测试和优化。
情感态度价值观目标:1. 学生通过实际操作,培养解决问题的能力和团队合作精神。
2. 学生在编程实践中,增强对计算机科学的兴趣和热爱,树立正确的价值观。
3. 学生通过学习,认识到编程在实际生活中的应用,提高学习的积极性。
本课程针对高年级学生,课程性质为实践性较强的学科。
在教学过程中,要求关注学生的个体差异,充分调动学生的主观能动性,引导他们通过自主探究、合作学习等方式,实现课程目标。
课程目标分解为具体学习成果,以便教师在教学设计和评估中,关注学生在知识、技能和情感态度价值观方面的全面发展。
二、教学内容1. 理论知识:- Java面向对象编程基础:类与对象、继承与多态、封装与抽象;- 异常处理:异常的概念、try-catch-finally结构、自定义异常;- 控制台输入输出:Scanner类、System.out.print/println方法。
2. 实践操作:- ATM功能模块设计:账户类、ATM类、用户界面类;- 功能实现:登录、查询余额、取款、存款、退出;- 异常处理:输入非法数据、余额不足等异常处理。
3. 教学大纲:- 第一阶段:Java面向对象编程基础学习(1课时);- 第二阶段:异常处理知识学习(1课时);- 第三阶段:控制台输入输出操作学习(1课时);- 第四阶段:ATM功能模块设计及功能实现(2课时);- 第五阶段:项目测试与优化(1课时)。
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柜员机的整体布局。
毕业论文-基于javaee的atm机取款系统的设计与实现
基于JavaEE的ATM机取款系统的设计与实现摘要随着科技的发展,城市人口的增加,人民生活水平的日益提高,银行的业务也日益增加,客户日益增多,银行工作人员的工作量日益增加,为了减轻银行工作人员的负担,提高效率,减少错误率,方便客户,银行ATM柜员机得到普遍运用。
ATM机是银行柜台传统业务的最佳替代渠道。
在ATM机上储户可以自助完成存款、取款、转账、缴费、账户查询及密码修改的等业务,此外ATM机还具有维护、测试、事件报告、监控和管理等多种功能,大大提高了银行的工作效率和管理水平。
本文阐述ATM机取款系统的设计过程,设计中通过Hibernate技术连接oracle数据库,并且运用JSP动态页面技术、Servlet和web service来完成的,该系统界面友好,操作方便,安全性高,有一定的实际应用价值。
关键词:ATM机;存取款;JSPDesign and implementation of ATM machine system basedon JavaEEAbstractWith the development of science and technology, the increase of urban population, the increasing of people's living standard. The business of banks is also increasing, more and more customers, the bank staff workload increased, the bank in order to reduce the burden on the staff, improve the efficiency, reduce the error rate, the convenience of customers.Bank ATM teller machines are widely used.ATM machine is the best alternative to traditional bank counter business channel.In the ATM machine depositors to complete the self deposits, withdrawals, transfers, payment, account inquiry and password changes of business. In addition the ATM machine also has maintenance, testing, event reporting, monitoring and management and other functions, greatly improving the work efficiency and the management level of Bank.In this paper, the ATM system design process, the design through the hibernate technology to connect Oracle database, and the use of JSP dynamic web page technology, servlet and web service to accomplish, the system has a friendly interface, convenient operation, high safety, certain practical application value.Key words:ATM; access; JSP目录1 概述 (1)1.1 系统开发工具 (1)1.1.1 MyEclipse 10 (1)1.1.2 Tomcat 7.0服务器 (2)1.1.3 Oracle数据库 (3)1.2 关键技术 (4)1.2.1 JSP动态网页技术 (4)1.2.2 Servlet服务器程序 (4)1.2.3 Hibernate框架 (5)1.2.4 Web Service技术 (5)2 系统需求分析 (7)2.1 功能需求 (7)2.2 性能需求 (7)2.3 开发环境 (8)2.3.1 硬件环境 (8)2.3.2 软件环境 (8)3 总体设计 (9)3.1 系统设计概述 (9)3.2 系统的功能模块分析 (9)4 数据库设计 (15)4.1 数据库创建用户 (15)4.2 数据库概念结构设计 (15)4.3 数据库逻辑结构设计 (16)4.3 数据库表结构设计 (17)4.4 数据库连接 (18)5 详细设计与实现 (22)5.1 插卡模块的设计 (22)5.1.1 插卡模块业务流程 (22)5.1.2 实现的界面 (22)5.1.3 代码实现 (23)5.2 密码验证模块的设计 (24)5.2.1 密码输入模块业务流程 (24)5.2.2 实现的界面 (25)5.2.3 代码实现 (25)5.3 登录成功问候模块的设计 (26)5.3.1 登录成功问候模块业务流程 (26)5.3.2 实现的界面 (26)5.3.3 代码实现 (26)5.4 查询余额模块的设计 (28)5.4.1 查询余额模块业务流程 (28)5.4.2 实现的界面 (28)5.4.3 代码实现 (29)5.5 修改密码模块的设计 (30)5.5.1 修改密码模块业务流程 (30)5.5.2 实现的界面 (30)5.5.3 代码实现 (30)5.6 取款模块的设计 (32)5.6.1 取款模块业务流程 (32)5.6.2 实现的界面 (32)5.6.3 代码实现 (33)5.7 转账模块的设计 (34)5.7.1 转账模块业务流程 (34)5.7.2 实现的界面 (34)5.7.3 代码实现 (34)5.8 退卡模块的设计 (35)5.8.1 退卡模块业务流程 (35)5.8.2 实现的界面 (35)5.8.3 代码实现 (36)6 系统的测试与维护 (38)6.1 测试的目的 (38)6.2 测试的意义 (38)6.3 测试的任务 (38)6.4 测试的原则 (38)6.5 测试的方法 (39)6.5.1 测试案例 (40)结束语................................................ 错误!未定义书签。
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申请监听
本科毕业设计-atm模拟系统论文
基于JavaEE的ATM模拟系统的设计与实现摘要本文详细论述了此ATM机系统在开发过程中用到的些许技术,通过系统分析、系统设计以及实现模块构成一个完整的系统,文末以系统测试方法对系统进行测试,保证系统的基本可用性。
本系统在开发过程中,贯穿软件开发流程准则,使系统在易于操作的情况下,兼容各种平台,最终成为一套出色的通用性系统。
关键词:ATM管理;管理平台;系统设计;java三大框架The attendance management system based on JavaAbstractThis paper discusses in detail the attendance system used in the development process of some technologies, through system analysis, system design and implementation modules constitute a complete system, at the end of the article to the system test method to test of check on work attendance, basic guarantee system availability.This system in the process of development, throughout the software development process standards, make the system under the condition of the easy to operate, compatible with a variety of platforms, and finally become a excellent versatility system.Key words: The attendance management; Platform management;System design;Java three frameworks目录1.绪论 (6)1.1.开发背景 (6)1.2.开发目的和意义 (6)2.系统开发技术 (7)2.1.B/S开发模式 (7)2.1.1.作用 (7)2.1.2.架构特点 (8)2.2.C3P0连接池 (8)2.3.基于角色的权限管理 (9)2.4.多线程编程 (9)2.5.开发工具介绍 (11)2.5.1.程序编译工具MyEclipse (11)2.5.2.Tomcat小型服务器 (11)2.5.3.开源数据库MySQL (12)3.系统分析 (13)3.1.项目概述及基本需求 (13)3.2.系统可行性分析 (13)3.2.1.技术可行性 (13)3.2.2.经济可行性 (13)3.3.性能需求 (14)4.系统总体设计 (15)4.1.系统目标设计和流程设计 (15)4.2.系统功能模块设计 (16)5.数据库设计 (18)5.1.数据库概念结构设计 (18)5.2.数据库逻辑结构设计 (20)5.3.数据库物理结构设计 (23)6.系统详细设计 (24)6.1.登录界面设计 (24)6.2.主界面设计 (24)7.系统测试 (26)7.1.测试目的 (26)7.2.测试环境方案 (26)7.2.1.硬件环境(最低要求) (26)7.2.2.软件环境 (26)7.3.系统测试 (26)7.3.1.距离测试 (27)7.3.2.测试项目 (28)7.3.3.测试方法 (29)8.结束语 (30)9.参考文献 (31)10.致谢 (33)1.绪论1.1.开发背景随着计算机技术的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃。
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java模拟ATM系统摘要随着Internet网络的迅速发展,作为电子商务的ATM自动取款系统以其方便、快捷和高效的优势,逐步成为新兴电子商务的经营模式和理念,人们已经不再只是满足于低效率的排队等待,而是渴望能够充分享受网络所带来的更多的便利。
ATM自动取款系统恰恰适应了如今的快节奏生活。
本文以实际ATM取款机应用为背景,阐述了系统开发过程的开发方法、系统分析以及一般步骤。
全文共分为ATM系统综述、ATM系统的开发方法、系统分析、系统设计、系统实现和系统维护等六个部分,利用JA V A语言强大的跨平台性和面向对象开发等特点,联系实际ATM应用界面,采用Eclipse开发环境,以win7为操作系统、MySQL为后台数据库开发出了一套自动取款机系统,基本上实现了ATM自动取款机的全过程。
关键词:Java;Eclipse;MySQL;ATM自动取款系统ATM simulation systemAbstractWith the development of the Internet, ATM system as a form of e-commerce with its convenient and efficient, has gradually become a new business model and philosophy, people have not longer meet the waiting queue on the low efficiency, but eager to the full enjoyment of the network brought about by the more convenient.ATM automated teller system is precisely adapted to the fast pace of life today.Based on the background of the practical application of the ATM, expounds the development method, system development process of the system analysis and general steps.The full text is divided into ATM system, ATM system development method,system analysis, system design, system implementation and system maintenances even parts, using the JA V A language cross platform and object-oriented features, contact the actual ATM application interface, using Eclipse development environment, using win7 as the operating system, MySQL the backstage database to develop a set of automatic teller machine system, basically realizing the ATM drawing process.Key words:Java; Eclipse; MySQL; ATM simulation system目录摘要 (i)Abstract (ii)1 绪论 (1)1.1 ATM概述 (1)1.2 选题意义 (1)2 ATM系统开发方法 (2)2.1 系统开发方法概述 (2)2.2 该系统开发方法 (2)2.3 开发工具eclipse介绍 (3)2.3.1 主要组成 (3)2.3.2 软件开发包 (3)3 系统分析 (4)3.1 系统分析方法概述 (4)3.1.1 限定问题 (4)3.1.2 确定目标 (4)3.1.3 调查研究,收集数据 (4)3.1.4 提出方案和评价标准 (4)3.1.5 方案评估 (4)3.1.6 提交可行方案 (5)3.2 系统功能结构图 (5)3.3 系统主要处理流程图 (6)3.3.1 系统办理所有业务流程图 (6)3.3.2 用户登录流程图 (7)3.3.3 用户转账流程图 (8)4 系统设计 (9)4.1 系统设计概述 (9)4.1.1 系统设计原则 (9)4.1.2 系统设计的方法 (9)4.2 系统总体结构设计 (10)4.3 系统详细设计 (12)4.3.1 系统详细设计概述 (12)4.3.2 基本任务 (12)4.4 系统逻辑设计 (12)4.5 界面模块设计 (13)4.5.1 首页设计的窗体实现 (13)4.5.2 查询信息页面的设计 (16)4.5.3 修改密码界面的设计 (18)4.5.4 转账页面的窗体设计 (19)4.5.5 取款界面的窗体设计 (21)4.5.6 退出界面设计 (23)5 系统实现 (25)5.1 程序设计 (25)5.2 程序调试 (25)5.2.1 程序调试的原则 (25)5.2.2 调试方法 (25)5.2.3 调试分类 (26)5.3 试运行 (27)6 系统维护 (28)6.1 系统维护概述 (28)6.2 软件维护类型 (28)7 ATM银行取款系统测试 (30)7.1 引言 (30)7.2 测试方法 (30)7.3 部分测试用例 (31)7.3.1 系统启动测试 (31)7.3.2 测试用户登录模块 (31)7.3.3 测试修改密码模块 (32)7.3.4 测试取款管理模块 (32)7.3.5 测试查询模块 (32)7.3.6 测试转账功能 (32)结论 (33)参考资料 (34)致谢 (35)外文资料 (36)资料翻译 (42)1 绪论1.1 ATM概述近年来,随着Internet网络的迅速发展,其在现实生活中应用很广泛。
互联网给现实生活带来很大的方便。
如今,人们的交流已越来越多,对信息传送的要求更严格,“信息高速公路”也就应运而生了。
其中,Internet已拥有了数千万个用户,通过Internet我们就可以与全世界来联网。
对于当中各种各样的信息,人们都可以通过网络来共享和使用。
比如ATM自动取款系统,我们可以把它当作一个虚拟的市场销售中心,每个人都可以在这个网络上享受所提供的服务,这样既节约了时间,又满足了需求。
尤其是人们的生活速度越来越快,没有大量的时间花费在银行等待长时间的排队。
ATM银行取款系统的出现,使这一问题迎刃而解。
自动取款机又称ATM,是Automatic Teller Machine的缩写,又称自动柜员机,是指银行在不同地点设置一种小型机器,利用一张信用卡大小的胶卡上的磁带记录客户的基本户口资料(通常就是银行卡),让客户可以透过机器进行提款、存款、转帐等银行柜台服务,尽管大多数客户都把这种自助机器称为提款机。
自动存取款机是一种客户进行自助服务的电子化设备,它具有存款、取款、卡卡转账、查询余额、修改密码等功能,是一种新型的银行电脑终端。
它是一种高度精密的机电一体化装置,利用磁性代码卡或智能卡实现金融交易的自助服务系统。
1.2 选题意义随着Internet网络的迅速发展,作为电子商务的ATM自动取款系统以其方便、快捷和高效的优势,逐步成为新兴电子商务的经营模式和理念,人们已经不再只是满足于低效率的排队等待,而是渴望能够充分享受网络所带来的更多的便利。
ATM自动取款系统恰恰适应了如今的快节奏生活。
本文以实际ATM取款机应用为背景,阐述了系统开发过程的开发方法、系统分析以及一般步骤。
2 ATM系统开发方法2.1 系统开发方法概述结构化系统开发方法(Structured System Analysis And Design,SSA&D,)又称结构化生命周期法,是系统分析员、软件工程师、程序员以及最终用户按照用户至上的原则,自顶向下分析与设计和自底向上逐步实施的建立计算机信息系统的一个过程,是组织、管理和控制信息系统开发过程的一种基本框架。
是用系统的思想和系统工程的方法,按照用户至上的原则结构化、模块化,自顶向下对系统进行分析与设计。
步骤如下:(1)先将整个信息系统开发过程划分为若干个相对独立的阶段(系统规划、系统分析、系统设计、系统实施等);(2)在前三个阶段坚持自顶向下地对系统进行结构化划分;(3)在系统调查和理顺管理业务时,应从最顶层的管理业务入手,逐步深入至最基层;(4)在系统分析、提出目标系统方案和系统设计时,应从宏观整体考虑入手,先考虑系统整体的优化,然后再考虑局部的优化问题;(5)在系统实施阶段,则坚持自底向上地逐步实施,即组织人员从最基层的模块做起(编程),然后按照系统设计的结构,将模块一个个拼接到一起进行调试,自底向上、逐步地构成整个系统。
其主要特点为:(1)自顶向下整体地进行分析与设计和自底向上逐步实施的系统开发过程:在系统规划、分析与设计时,从整体全局考虑,自顶向下地工作;在系统实施阶段则根据设计的要求,先编制一个个具体的功能模块,然后自底向上逐步实现整个系统。
(2)用户至上是影响成败的关键因素,整个开发过程中,要面向用户,充分了解用户的需求与愿望。
(3)符合实际,客观性和科学化,即强调在设计系统之前,深入实际,详细地调查研究,努力弄清实际业务处理过程的每一个细节,然后分析研究,制定出科学合理的目标系统设计方案。
(4)严格区分工作阶段,把整个开发过程划分为若干工作阶段,每一个阶段有明确的任务和目标、预期达到的工作成效,以便计划和控制进度,协调各方面的工作。
前一阶段的工作成果是后一阶段的工作依据。
(5)充分预料可能发生的变化:环境变化、内部处理模式变化、用户需求变化。
(6)开发过程工程化,要求开发过程的每一步都要按工程标准规范化,工作文体或文档资料标准化。
系统开发工作的自动化、计算机化是提高系统开发效率与质量的重要途径。
计算机辅助软件工程(简记为CASE)也是当前信息系统领域和计算机应用领域的热门话题。
CASE技术的目标是实现系统开发生命周期内各阶段工作基于计算机的自动化。
这将导致系统开发工作的根本变化。
2.2 该系统开发方法比较各种开发方法的特点,结合银行取款系统的实际情况,整个系统采用结构化生命周期法,以原型法和面向对象的开发方法作为辅助,即系统总体上采用结构化生命周期法进行系统分析和系统设计,系统实施等步骤采用面向对象方法。
本系统开发工具使用的是基于 Java 的可扩展开发平台的Eclipse。