javaATM柜员机模拟程序
java银行存取款程序设计的实验步骤
一、介绍1.1 Java银行存取款程序设计的背景1.2 实验目的二、实验步骤2.1 设计思路在设计Java银行存取款程序之前,需要先明确程序的功能和流程。
程序的功能主要包括用户登入、存款、取款、查询余额等。
程序的流程主要包括用户输入账号和密码登入、选择存款或取款操作、输入操作金额、更新账户余额等。
2.2 环境准备在进行Java程序设计之前,需要安装好Java开发环境,比如Eclipse、IntelliJ IDEA等集成开发环境,以及Java开发工具包(JDK)。
2.3 创建Java工程在集成开发环境中创建一个新的Java工程,为该工程命名,并创建一个新的Java类作为程序的入口。
2.4 编写用户登入功能创建一个User类,包括用户账号和密码等属性,设计一个登入方法用于验证用户输入的账号和密码是否正确。
2.5 编写存款和取款功能创建一个BankAccount类,包括账户余额等属性,设计存款和取款方法,用于更新账户余额。
2.6 编写查询余额功能在BankAccount类中设计查询余额方法,用于展示账户当前余额。
2.7 编写主程序在主程序中实例化User类和BankAccount类,实现用户登入后的存取款操作。
三、实验总结3.1 实验结果分析经过以上步骤的设计和实现,得到了一个简单的Java银行存取款程序,可以实现用户登入、存款、取款、查询余额等功能。
3.2 实验收获通过本次实验,加深了对Java面向对象编程的理解,掌握了如何设计和实现一个简单的银行存取款程序。
3.3 实验不足与改进在程序设计和实现过程中,可能存在一些不足之处,比如对异常情况的处理不够完善,可以进一步完善程序的健壮性和稳定性。
四、参考文献4.1 Java编程思想4.2 Java核心技术以上就是Java银行存取款程序设计的实验步骤,通过本次实验,可以更好地掌握Java面向对象编程的知识,并且对程序设计和实现有了更深入的理解。
希望本文对您有所帮助。
ATM(JAVA课程设计)
ATM柜员机模拟程序摘要使用图形用户界面。
当输入给定的卡号和密码(初始卡号为123456和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:查询余额:初始余额为50000元ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
ATM存款:不能出现负存款。
修改密码:只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、查询余额模块、修改密码模块、退卡模块组成。
一个系统界面的好坏直接影响到用户的操作,界面设计要求样式美观、简单明了、方便易操作。
我设计的界面主要分为窗体、菜单、按钮和文本输入框几个部分,分别执行相应的操作。
关键字:图形用户界面;ATM;柜员机;模拟程序;模块;ATM machines simulation programAbstractUse the graphical user interface. When the input given card number and password (initial card number for 123456 and password for 123456), the system can login ATM machines system, users can according to the following rules:Inquires the balance: initial balance is 50000 yuan ATM withdrawals: every time a multiple of the amount of, the total will not more than 5000 yuan, the amount of withdrawals allows no overdraft.ATM deposits: can't negative deposits.Change the password: only the correct password is old, the new password accords with a requirement, and two enter the same case can be modified successfully password.I designed by ATM machines is mainly composed of the login page module by choice service module is, selecting the service module by withdrawals and module, inquires module, modify the password balance module, return card modules. A system interface has a direct influence on the user's operation, interface design requirements style beauty, simple and clear, make the operation easy. I design interface are divided into form, menu, button and text input box sectionsKeywords:graphical user interface; ATM; Automated Teller Machine; simulation program; module;1 系统需求分析1.1 功能需求分析本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一、课程设计的概念课程设计的目的现代社会,ATM可以说是一种使用非常广泛的机器, ATM使用是非常频繁的,然而由于程序及其机器本人的一些漏洞,导致ATM机的犯罪现象屡有发生。
该项目的开发有利于进一步提高ATM机的性能及安全性,模拟开发ATM系统软件,掌握系统开基本流程,在开发系统中可以巩固所学的有关软件开发的知识,有利于提出优化改进现代ATM系统的建议。
课程设计的内容银行ATM机的使用已经普及,人们都已习惯利用自动柜员机来提取现金,查询存款,转账,修改密码等等,我设计的ATM取款机添加了新的功能,具体功能如下:管理员状态登入:无用用户二、设计方案的论证概要设计《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
ATM机的代码(作业)
ATM机的代码(作业)import java.util.Scanner;public class ATMDemo {/*** 简单ATM机取款过程模拟*/public static void main(String[] args) {String pass = ""; // 保存⽤户输⼊密码int amount = 0; // 取款⾦额String password = "111111"; // ⽤户密码int count = 0; // 记录密码输⼊次数boolean isPass = false; // 密码是否通过验证Scanner input = new Scanner(System.in);while (count < 3 && !isPass) {System.out.print("请输⼊密码:");pass = input.next();if (!password.equals(pass)) {count++;continue;}isPass = true; // 密码通过验证System.out.print("请输⼊⾦额:");amount = input.nextInt();while (amount > 0) {if (amount <= 1000 && amount % 100 == 0) {System.out.println("您取了" + amount + "元");System.out.println("交易完成,请取卡!");break; // 完成交易,退出} else {System.out.print("您输⼊⾦额的⾦额不合法,请重新输⼊:");amount = input.nextInt();continue; // 继续让⽤户输⼊⾦额}}}if (!isPass) { // ⽤户输⼊了3次错误密码System.out.print("密码错误,请取卡!");}}}。
模拟ATM程序代码
if(p)
{
while(t<3)
{
i=0;
printf("\n\t密码: ");
while((ch=getch())!='\r')
{
pass[i++]=ch;
putchar('*');
}
pass[i]='\0';
if(strcmp(p->password,pass)==0)
p=head;
system("cls");
if(p)
{
printf("\n");
printf("\n\t账号: ");
scanf("%s",acc);
while(p)
{
if(strcmp(p->account,acc)==0)
break;
else p=p->next;
}
while(t<3)
{
i=0;
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
{
system("cls");
printf("\n\t杰西银行ATM自动存取款机用户登录成功\n");
ATM自助取款机系统java代码(大全)
ATM自助取款机系统java代码(大全)第一篇:ATM自助取款机系统java代码(大全)public void actionPerformed(ActionEvent e)//界面显示控制 {String IC_Number=“";String password=”“;String IC_No=”“;z30.setVisible(false);floatleftmoney=0;floatmoneys=0;float mon=0;float money1=0;float money2=0;if(true){int No_50=0,No_100=0;String strin=”select NO_50,NO_100 from ATM ATM_ID='123456789'“;ResultSetrsSQLSelect=executeQuery(stri n);try{ if(rsSQLSelect.next()){No_50=Integer.parseInt(rsSQLSelect.getString(”NO_50“));No_100=Integer.parseInt(rsSQLSelect.getString(”NO_100“));where}}catch(Exception er){System.out.println(”查询ATM机信息出错!“);}if(No_50==0&&No_100==0){z1.setVisible(false);t1.setText(”对不起,本ATM自动取款机暂停服务!“);cl.show(c,”1“);}}cl.show(c,”1“);if(e.getSource()==z1){t3.setText(”“);text1.setText(”“);cl.show(c,”2“);}if(e.getSource()==z4||e.getSource()==z6||e.getSource()==z1 1||e.getSource()==z16||e.getSource()==z18||e.getSource()==z22) { closeDBConnectio n();cl.show(c,”1“);}if(e.getSource()==z2){ closeDBConnection();System.exit(0);}if(e.getSource()==z3){ IC_Number=text1.getText().trim();if(getname(IC_Number)){z5.setVisible(true);pw1.setVisible(true);t4.setVisible(true);pw1.setText(”“);t5.setText(”“);cl.show(c,”3“);}else{t3.setText(”您输入的卡号不存在,请重新输入!“);cl.show(c,”2“);}}if(e.getSource()==z5){password=pw1.getText().trim();IC_Number=text1.getText().tr im();if(!login(IC_Number,password)){t5.setText(”您输入的密码错误,请重新输入!“);pw1.setText(”“);n--;cl.show(c,”3“);}else{t5.setText(”“);cl.show(c,”4“);}if(n<0){n=2;t5.setText(”您已经三次输入错误密码,谢谢您的使用,欢迎下次光临!“);z5.setVisible(false);pw1.setVisible(false);t4.setVisible(false);cl.show(c,”3“);}}if(e.getSource()==z7){t33.setText(”“);cl.show(c,”5“);}if(e.getSource()==z8)//余额查询 { DBAccess d=new DBAccess();String str3=”“;String stri=”“;IC_Number=text1.getText().trim();t29.setText(IC_Number);leftmoney=getmoney(IC_Number);t30.setText(Float.toString(leftmoney));stri=”selectbank_name from IC,bank where IC.bank_NO=bank.bank_NO and IC_ID='“+IC_Number+”'“;ResultSetrsSQLSelect=d.executeQu ery(stri);try{if(rsSQLSelect.next()){str3=rsSQLSelect.getString(”bank_name“);//mit();}} catch(Exception er){}t32.setText(str3);cl.show(c,”10“);}if(e.getSource()==z9){t23.setText(”“);cl.show(c,”9“);}if(e.getSource()==z10){t28.setText(”“);cl.show(c,”11“);}if(e.getSource()==z12){ DBAccess d=new DBAccess();IC_Number=text1.getText().trim();fetchmoney=Integ er.parseInt(text2.getText());if(fetchmoney<=0){t9.setText(”取款金额非法!请重新输入!“);text2.setText(”“);cl.show(c,”6“);return;}if(fetchmoney>1000){t9.setText(”每次交易金额最大为1000元!“);text2.setText(”“);cl.show(c,”6“);return;}if(fetchmoney%50!=0){t9.setText(”取款金额只能为50的倍数!“);text2.setText(”“);cl.show(c,”6“);return;} leftmoney=getmoney(IC_Number);if(fetchmoney>leftmoney){t9.setText(”您的余额不足,请重新输入取款金额!“);text2.setText(”“);cl.show(c,”6“);return;}int No_50=0,No_100=0,x_50=0,x_100=0,mo=0;String str1=”select NO_50,NO_100 from ATM where ATM_ID='123456789'“;ResultSetrsSQLSelect=d.executeQuery(s tr1);try{ if(rsSQLSelect.next()){No_50=Integer.parseInt(rsSQLSelect.getString(”NO_50“));No_100=Integer.parseIn t(rsSQLSelect.getString(”NO_100“));}}catch(Exception er){System.out.println(”查询ATM机信息出错!“);}x_100=fetchmoney/100;if(No_100{ mo=fetchmoney-No_100*100;x_50=mo/50;if(x_50>No_50){t9.setText(”取款机现钞不足!“);text2.setText(”“);cl.show(c,”6“);return;}else{No_50=No_50-x_50;No_100=0;}}else{No_100=No_100-x_100;x_50=(fetchmoney-x_100*100)/50;if(x_50>No_50){t9.setText(”取款机50面值现钞不足!“);text2.setText(”“);cl.show(c,”6“);return;}else{No_50=No_50-x_50;}}String str2=”update ATM set NO_50=“+No_50+” where ATM_ID='“+ATM_id+”'“;String str3=”update ATM set NO_100=“+No_100+” whereATM_ID='“+ATM_id+”'“;d.executeUpdate(str2);d.executeUpd ate(str3);setmoney(fetchmoney,IC_Number);t12.setText(Float.toString(fetchmoney));cl.show(c,”7“);text2.setText(”");第二篇:ATM取款机java课程设计黄淮学院JAVA 课程设计报告题目:《ATM柜员机》课程设计学院:信息工程学院专业:计算机科学与技术指导老师:二0一三年六月目录课程设计过程概述.......................................................................................3 2 课程设计题目描述和基本设计要求...........................................................3 3 系统需求分析...............................................................................................3 3.1 功能需求分析···················································································· 3 3.2 其他需求分析.................................................................................... 4 4 系统设计........................................................................................................4 4.1 总体设计........................................................................................... 4 4.2 ATM柜员机界面设计......................................................................... 5 4.3 各功能模块设计.. (7)4.3.1 登陆页面模块设计............................................................. 7 4.3.2 选择服务模块设计............................................................. 8 4.3.3 取款模块设计..................................................................... 9 4.3.4 修改密码模块设计............................................................. 9 4.3.5 退卡模块设计. (10)4.4 异常处理情况说明.......................................................................... 10 5 系统实现与测试.........................................................................................11 6 课程设计总结.............................................................................................13 6.1 遇到的问题及解决办法.................................................................. 13 6.2 心得体会......................................................................................... 14 参考文献..........................................................................................................15 附录 (15)ATM初始账号:000000初始密码:123456ATM柜员机课程设计过程概述2013年6月,JAVA课程设计在1#楼六楼机房进行,持续时间为两周。
基于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)银行存取款系统的设计与实现摘要计算机科学技术的发展不仅极大地促进了整个科学的发展,而且明显加快了经济信息化和社会信息化的进程。
ATM综合练习
Java程序设计综合实验练习——ATM一、实验目的:通过综合实验ATM机的模拟练习,使学生掌握面向对象程序开发的思想。
能够综合运用所学的知识解决实际问题。
二、实验内容:ATM Case1. The screen displays Welcome! and prompts the user to enter an account number.屏幕显示内容2. The user enters a five-digit account number using the keypad.输入账号3. The screen prompts the user to enter the PIN (personal identification number) associated with the specified account number.4. The user enters a five-digit PIN using the keypad.输入PIN5. If the user enters a valid account number and the correct PIN for that account , the screen displays the main menu (Fig.12.2). If the user enters an invalid account number or an incorrect PIN, the screen displays an appropriate message, then the A TM returns to Step 1 to restart the authentication process.如果用户输入的账号和PIN相符合,则进入屏幕主界面。
如果不相匹配,则显示相关信息,返回第一步。
If the user enters 1 to make a balance inquiry(用户选择菜单项1,是查询账号余额), the screen displays the user’s account balance. To do so, the ATM must retrieve(检索)the balance from the bank’s database. The following steps describe what occurs when the user enters 2 to make a withdrawal(用户选择菜单项2,是取钱):1. The screen displays a menu (Fig. 12.3) containing standard withdrawal amounts:$20 (option 1), $40 (option 2), $60 (option 3), $100 (option 4) and $200 (option 5). The menu also contains an option to allow the user to cancel the transaction (option 6). 屏幕显示的菜单选项2. The user enters a menu selection using the keypad.用户从键盘输入菜单选项3. If the withdrawal amount chosen is greater than the user’s account balance, the screen displays a message stating this and telling the user to choose a smaller amount. The ATM then returns to Step 1. If the withdrawal amount chosen is less than or equal to the user’s account balance (i.e., an acceptable amount), the A TM proceeds to Step4. If the user chooses to cancel the transaction (option 6), the ATM displays the main menu and waits for user input.如果提取金额大于用户可用金额,屏幕显示用户输入现在提款金额。
综合实践题目
1、题目:编写一个银行ATM自动取款机模拟程序。
要求:实现ATM取款机的基本功能,如给用户提供查询余额、取款、修改密码、吃卡、退出系统等服务,可根据实际情况添加(如缴费、转账等服务)。
(1)对于用户要求输入相应的帐号和密码,如果三次出错则将卡吃掉并打印出相应凭条。
(2)若输入的取款金额超出账户余额,则提示用户输入有误并提供更正功能2题目:制作一个简易评分系统,要求:(1)用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序;(2)在评委所打的分数中,去掉一个最高分,去掉一个最低分,得出各选手的平均分,然后按平均分进行排序,得出各选手的名次。
(3)设计出菜单,使用户能够设置评委的人数并输入姓名,设置选手的人数,并能将最后的得分及名次情况能够保存到文件中记录下来。
(4)参考所给出的程序,其它未说明功能可自行添加设计。
3、题目:设计一个宿舍电话查询系统要求:(1)用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序;(2)进入系统的用户可以浏览所有用户的电话号码及相关资料;(3)参考所给出的程序,自行设定数据库(要求至少包括:宿舍号、班级、电话号码三个字段,其它字段可选),系统菜单及其未说明功能可自行添加设计。
4题目:简单文件管理系统功能要求:能够实现命令dir、rename、del、move,完成对文件的查看、重命名、删除和移动。
5题目:银行账户信息管理系统功能要求:1、具有查询帐户余额的功能2、具有简单的存取款功能3、能够实现帐户的插入、删除和修改4、具有帐户信息的保存功能6题目:通信录的设计[设计要求]一、定义人员(person)类,其中至少包括姓名、性别、电话、地址、邮政编码、邮箱、QQ号和类别(例如:同学、朋友等)。
二、实现下面的功能1、设计菜单实现功能选择;2、输入功能:输入人员信息,并保存到文件中;3、查询功能:1)能够根据姓名、电话精确查询人员信息;2)能够根据地址进行模糊查询人员信息;3)根据人员类别查询人员信息4、根据姓名对人员信息排序输出5、能根据姓名、电话修改人员信息6、能根据姓名、电话删除人员信息7 题目:职工信息管理一、定义职工(employee )类,其中至少包括姓名、性别、工号、电话、所在科室和工资。
ATM
•
可增加新功能,比如转账功能,获取附加 分。
技术要求: 1. 用面向对象的方法进行分析,可以借助 UML图来进行设计。 2. 界面要完善,包含键盘、显示器及出钞入 抄口。
• 详细描述各种用例流程。 • 画出类图之间的关系。比如各个界面类与 ATM之间的关系 • 确定类的属性(域)和类的各种操作 • 得出类图 注明:可以把存取款等操作设计成单独的类, 也可以把它简化成账户类的操作。 • 画出每个功能实入给定的卡号和密码(初始卡号和密码为123456) 时,系统能登录ATM柜员机系统,用户可以进行: 1. 查询余额:初始余额为10000元 2. ATM取款:每次取款金额为100的倍数,总额不超过 5000元,支取金额不允许透支。 3. ATM存款:不能出现负存款。 4. 修改密码:新密码长度不小于6位,不允许出现6位完全 相同的情况,只有旧密码正确,新密码符合要求,且两 次输入相同的情况下才可以成功修改密码。
•
用Java语言实现你的设计。
• 提交: 1. 设计报告,说明分析和设计的过程。 2. 实现功能的代码。
C语言模拟ATM机的编写程序
C语言模拟ATM机的编写程序#include <stdio.h>void main(){long int a,b,c,d,e,f,g,k,l,m,n,o,p,h;n=0;h=10000;k=123456;loop0: printf("\t\t\t欢迎使用中国邮政ATM取款机!\n\n");printf("请插入你的银行卡,并输入你的密码,三次密码输入错误,将终止程序:\n");scanf("%ld",&l);if(k==l){loop1: printf("请输入你选择的操作类型:\n");printf("请输入0-4进行选择:\n");printf("1:<转账>\t2:<查询>\t3:<取款>\t4:<修改密码>\t0:<取卡>\n");scanf("%ld",&a);switch(a){case 1: printf("请输入转账账号:\n");scanf("%d",&o);printf("请输入你需要转账的金额:\n");scanf("%d",&p);printf("请输入你选择的操作类型:\n");printf("请输入0或1进行选择:\n");printf("1:<确认>\t0:<返回>\n");h=10000-p;scanf("%ld",&b);switch(b){case 1:printf("\n转账%d元人民币成功!\n\n",p);goto loop1;break;case 0:goto loop1;break;default :printf("\n无此操作项!\n\n");goto loop1;}break;loop4:case 2:printf("请输入你选择的操作类型:\n");printf("请输入0-2进行选择:\n");printf("1:<查询余额>\t2:<查询明细>\t0:<返回>\n");scanf("%ld",&c);switch(c){case 1:printf("\n你的余额为:%5d\n\n",h);goto loop1;break;case 2:printf("\n你的账单为:******。
JAVA大作业题目
JAVA大作业题目大作业要求:(1)最后提大作业报告电子版,报告内容格式见“JA V A程序设计(大作业)报告格式”要求。
(2)每个学生可任意选择下述十三个题目之一作为大作业,一人一组,独立完成。
大作业题目:1、基于java 的记事本要求:(1)设计一个登录界面,如果密码正确,则进入主界面(文件编辑器),如果不正确,则给出消息框,提示正确的密码(2)主界面JFrame的监听器接口至少用到2个(3)主界面JFrame的窗体要美观,利用Java能够把文本、图像、声音集成在一起。
2、Java版即时聊天程序功能要求:(1)用户登录及登录验证:用户能够使用固定帐号(帐号程序内置即可,无需完成额外的注册功能)登录系统,系统能对预定的帐号、密码进行验证。
(2)聊天功能:能够在两台以上的机器上登录运行程序,能使用不同帐号完成在线的即时消息发送(聊天)。
(3)好友管理:能够显示好友列表,并能够添加、修改、删除好友。
(4)在线、离线状态显示:能够显示好友的在线状态或离线状态。
(5)聊天记录管理:能够以文件或数据库形式将聊天记录进行存储,并能打开、显示、删除所存储的聊天记录。
3、【swing类GUI编程】编写交通信号灯的程序要求:(1)设计信号灯组件,该组件提供信号的红,绿,黄三种信号显示输出. (2)另外,在javax.swing.Timer的定时控制下, 轮流输出三种信号. (3)在窗口中应该有启动按钮,停止按钮. 并且有时间设置功能.设置三种状态的显示时间.(4)可供参考的类有:java.awt包中CanvasButtonTextFieldFrame(5)实现支持信号灯的点击事件, 例如,用鼠标点击红灯, 那么红灯立刻亮,然后再进入到定时三种信号的转换输出.4、JA V A简易时间日历程序通过编写一个基于JA V A的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践Java语言编程技术。
【JavaScript】简易ATM机
【JavaScript】简易ATM机【需求】1. 打开界⾯显⽰菜单2. 点击1、2、3操作,进⾏相应的操作3. 点击4则可以退出此程序<script>/* 简易atm机,请输⼊您要的操作1.存钱2.取钱3.显⽰余额4.退出 */var operate = prompt('请输⼊您要的操作' + '\n' + '1.存钱' + '\n' + '2.取钱' + '\n' + '3.显⽰余额' + '\n' + '4.退出');var money = 100;while (1) {if (operate == 1) {// 操作1 存钱var add = prompt('你存多少钱');money = parseInt(money) + parseInt(add);operate = '3';} else if (operate == 2) {// 操作2 取钱var cut = prompt('你取多少钱');money = parseInt(money) - parseInt(cut);operate = '3';} else if (operate == 3) {//操作3 查余额alert('你现在的账户有' + money + '元');var operate = prompt('请输⼊您要的操作' + '\n' + '1.存钱' + '\n' + '2.取钱' + '\n' + '3.显⽰余额' + '\n' + '4.退出'); } else {alert('正在退出');break;}}</script>【注意】1. 关键点在于给operate赋值3,然后进⾏下⼀轮循环2. while取值为1,是为了让循环语句⼀直循环,除⾮碰见break。
JAVA-循环体小练习——ATM取款机
JAVA-循环体⼩练习——ATM取款机需求描述:假设⼀个简单的ATM机的取款过程为:⾸先提⽰⽤户输⼊密码,假设默认密码为111111,最多只能输⼊3次,超过3次则提⽰⽤户“密码错误,请取卡”,结束交易。
如果⽤户密码正确,再提⽰⽤户选择⾦额,“请输⼊0到6中任意数字选择对应钱数:0-⼿动输⼊⾦额,1-100元, 2-300元,3-500元, 4-1000元, 5-3000元, 6-5000元”。
输⼊数字如果错误,提⽰“输⼊错误,是否继续 Y/N”,选择Y重新提⽰输⼊钱数编号,选择N提⽰“输⼊错误,请取卡!”。
选择数字为1到6,打印对应钱数,并提⽰“是否继续 Y/N”。
选择数字0,ATM机只能输出100元纸币,⾃定义钱数要求最低为100元,最⾼为1000元。
如果⽤户输⼊的⾦额符合上述要求,则打印输出⽤户取的钱数,并提⽰“取款完成,是否继续Y/N”;否则输出⼀句话“⾦额错误,是否继续 Y/N”,如果⽤户输⼊Y,提⽰⽤户重新选择取款⾦额,如果⽤户输⼊ N,打印“交易取消,请取卡!”ps:取款成功后,应该提⽰⽤户是否继续,总取款⾦额不能超过2万【解题思路】1、验证密码 ①密码正确,继续执⾏下⾯操作; ②密码错误3次,return;2、取款操作。
全部包含在 while循环内部。
①提⽰选择编号; ②根据编号,给money赋值。
⽤switch结构实现。
1~6:直接给money赋固定值,0:⼿动赋值操作; ③验证取款是否成功。
money-本次取款⾦额,moneySum-本次取款之前的总⾦额 判断moneySum+money是否>20000,3种情况: >2000 本次取款超额,但moneySum之前并不⾜20000,继续下次循环; =2000 取完本次money后,刚好满额。
money可以加到sum上,然后return; <2000 取完本次money后,仍未上限。
money可以加到sum上,继续下次循环。
ATM
谢观赏 共同努力
关系图
系统功能模块简介
本系统实现以下内容: ◆ 1.身份认证 ◆ 2.密码修改 ◆ 3.取款
◆ 4.转帐
◆ 5.存钱 ◆ 6.查询余额
ATM程序系统设计
◆用户登录模块的设计
1.用户输入用户名和密码 2.服务器端根据用户输入的用户名和密码,到后台数 据库进行查询,如果存在这样的记录,表示登录成功 3.如果用户输入的用户名和密码不匹配,那么就提示 用户名和密码不正确,且又返回登录界面,让用户重 新输入用户名和密码。
需求分析
1、用户拥有姓名、卡号、密码、年龄、性别、身份 证号、联系电话、地址、余额等基本信息; 2、满足用户的基本操作包括存、取现金、转账等务; 3、修改用户的账户密码; 4、查询用户的余额信息。
概念结构设计
系统E-R图可 以将各个实体之 间的关系显示出 来,将各个实体 间的属性依赖表 示明白。如右图
◆ 配置JDBC驱动程序 ◆ ATM数据库设计 ◆ ATM各功能模块设计
JDBC概述
JDBC是一组类,在Java中用于开发客户/服务器数据库 应用程序 JDBC内嵌于Java中,提供存取关系数据库的标准库。 其主要由两部分组成:JDBC API和JDBC驱动程序管 理器。 在Java语言中融入了对各种数据库进行存取的技术,包 括Access、SQL Server、Oracle、MySql等等 所有用户界面的生成、事件驱动、对数据库的存取等功 能均是由Java来实现的。
修改密码界面: 实现密码修改密 码功能
项目展示 --取款界面
项目展示 --转账界面
转账界面: 实现从一个 账户转账到 另一个账户
项目展示 --存款界面
存款界面: 实现存款功 能
项目展示
JavaATM课程设计报告书
呼和浩特民族学院课程设计报告设计名称:《面向对象程序设计》课程设计选题名称: ATM自动取款机模拟系统姓名:萌学号:专业班级:计算机科学与技术专业系(院):计算机系设计时间:2013.11.19~2013.11.28设计地点: 5、6机房4.课程设计成果调试程序,进入主界面:选择查询选择查询后,进入如下界面,可以先输入密码,检测密码输入是否正确。
取款查看余额更改密码:存款转账:继续操作检验和退出程序:5.课程设计心得在本次的课程设计中,ATM自动取款机模拟系统在初选时觉得很难,因为在我觉得这个程序太大了,而且有好的方法我不是很熟练,我也在网上查阅的很多资料,最后定下这个程序。
根据课程设计的要求,在ATM自动取款机模拟系统要实现查询,存款,取款,转账,密码修改等功能,还有程序选择功能,错误提示,退出系统等功能。
在调试过程中,出现了很多问题,对于我来说,方法的调用时最难的了,经过网上查询,老师帮助,同学商议,最后解决了我的难题,但是我写的还是很慢的了,经过斟酌才写下这篇程序报告。
不过通过解决这些问题,我也对java中许多不理解的地方也有了不同的看法,知道了很多的知识,我觉得这些辛苦没有白费。
最后,能让读者或者使用的人更清楚明白的直观的认识这个程序我加了很多,汉语的注释和操作中的提示,通过这次程序设计报告的完成我希望以后我的程序越来越好,我知道的知识越来越多。
参考文献:《Java语言与面向对象程序设计》-----------王行言编著《Java2实用教程》------------------------耿祥义,跃平编著《Java实用程序设计100例》---------------袁海燕,王文涛编著。
案例十五 模拟自动取款机(ATM)
目录
目退录出
➢ 案例提高
➢ 在全面理解的根底上,读者可以对本 案例作一些改动与提高。
➢ 读者可以继续添加一些功能,例如代 缴 费、水电费、煤气费等功能,使得 该自动取款机变成一个功能完善的自 动柜员机。
目录
目退录出
目录
目退录出
目录
目退录出
目录
目退录出
2.主程序设计
两个类ATM类及BankCard类可以完成几 乎全部的功能,自动取款机主程序流 程如下图。
目录
目退录出
主程序流程图
目录
目退录出
➢ 在主函数main()中,先建立了一个BankCard 类的对象模拟银行卡,然后建立一个ATM 类的对象模拟自动取款机,最后调用ATM 类的成员函数welcome()启动登录界面。取 款、查余额等工作全部交由两个类来完成。
+BankCard(in Name[] : char, in Num[] : char, in Money : float, in Password[] : char) #* getname() : char #* getnum() : char #* getpasswd() : char #getmoney() : float #setpasswd(in pwd[] : char) #setmoney(in m : float)
目录
目退录出
目录
目退录出
目录
目退录出
目录
目退录出
ATM类图
ATM
-tim es : int -totalm oney : float -leftm oney : float -oncem oney : float -& B ankC ardA tA T M : B ankC ard
Java语言编写实现银行账号开户-存款-取款和转账等功能
Java语言编写实现银行账号开户、存款、取款、查询和转账源代码详解需求分析1.ATM柜员机系统保存所有开户用户的信息(银行卡号、密码、真实姓名、家庭地址、联系电话、卡内金额),限制最大开户数1002.用户通过开户能实现自助开户,银行卡号随机数生成5位整数,卡内金额默认为0,其他信息由客户在控制台上输入,要求银行卡号不能重复3.用户可以选择存款选项办理存款业务要求存款客户必须是已经在我行合法开户的用户,卡号、密码必须进过验证才能登录系统进行存款业务的办理,业务办理完毕后显示该客户目前的卡内余额信息并提示办理成功4.用户可以选择取款选择办理取款要求取款客户必须是已经在我行合法开户的用户,卡号、密码必须进过验证才能登录系统进行取款业务的办理,输入存款金额后,显示目前卡内余额信息并提示办理成功5.用户可以选择查询余额选择办理查询业务要求取款客户必须是已经在我行合法开户的用户,卡号、密码必须进过验证才能登录系统进行查询业务的办理,登录信息验证成功后显示该用户的详细信息6.用户可以选择转账选项办理查询业务[本系统只支持本地行内转账] 要求取款客户必须是已经在我行合法开户的用户,卡号、密码必须进过验证才能登录系统进行转账业务的办理,用户输入的转账帐号必须是已经在我行合法开户的用户,合法的转账帐号显示该用户姓名,输入转账金额,完成转账功能显示自己的卡内余额并提示业务办理成功7.用户选择退出,结束本次业务办理8.该项目中的相关逻辑判断请自行斟酌1.将用户的卡号、密码、姓名、手机号码、家庭住址和卡上余额属性封装成对象,代码如下package com.zsrt.test;import java.util.*;public class BankAccount{private int cardNum;private String passWord;private String name;private String address;private long telephone;private float money;public int getCardNum() {return cardNum;}public void setCardNum(int cardNum) {this.cardNum = cardNum;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) { this.passWord = passWord;}public String getName() {return name;}public void setName(String name) { = name;}public String getAddress() {return address;}public void setAddress(String address) { this.address = address;}public long getTelephone() {return telephone;}public void setTelephone(long telephone) {this.telephone = telephone;}public float getMoney() {return money;}public void setMoney(float money) {this.money = money;}}2.建立测试类Junit Test文件package com.zsrt.test;import static org.junit.Assert.*;import java.util.*;import java.text.DecimalFormat;import org.junit.Before;import org.junit.Test;public class ATMTest {Scanner sn=new Scanner(System.in);List<BankAccount> clientList=newArrayList<BankAccount>(); //采用动态数组来存放用户的信息DecimalFormat df=new DecimalFormat("0.00");//格式化输出余额@Beforepublic void setUp() throws Exception {}@Testpublic void test() {System.out.println("\t\t\t**********************⊙***********************");System.out.println("\t\t\t**");System.out.println("\t\t\t**");System.out.println("\t\t\t* ⊙欢迎进入中国银行*");System.out.println("\t\t\t**");System.out.println("\t\t\t**");System.out.println("\t\t\t*********************⊙************************");while(true){System.out.println("\t\t\t请选择您要办理的手续:");System.out.println("\t\t\t\t1.开户");System.out.println("\t\t\t\t2.存款");System.out.println("\t\t\t\t3.取款");System.out.println("\t\t\t\t4.查询余额");System.out.println("\t\t\t\t5.转账");System.out.println("\t\t\t\t6.退出");System.out.println("\t\t\t请输入您要办理的项目");int num=sn.nextInt();if(num==1){openAccount();}else if(num==2){saveMoney();}else if(num==3){takeMoney();}else if(num==4){checkMoney();}else if(num==5){transferMoney();}else if(num==6){System.out.println("退出");break;}else{System.out.println("请输入正确的选项!!!");}}}public class BankAccount{private int cardNum;private String passWord;private String name;private String address;private long telephone;private double money;public int getCardNum() {return cardNum;}public void setCardNum(int cardNum) { this.cardNum = cardNum;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) { this.passWord = passWord;}public String getName() {return name;}public void setName(String name) { = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public long getTelephone() {return telephone;}public void setTelephone(long telephone) {this.telephone = telephone;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}}public void openAccount(){//开户函数BankAccount account=new BankAccount();int cardNum=(int)(Math.random()*90000+10000);account.setCardNum(cardNum);System.out.println("系统已为您随机分配一个卡号"+cardNum);System.out.println("请为您的账户设置密码:");String passWord=sn.next();account.setPassWord(passWord);System.out.println("请输入您的姓名:");String name=sn.next();account.setName(name);System.out.println("请输入您的地址");String address=sn.next();account.setAddress(address);System.out.println("请输入您的联系电话:");long telephone=sn.nextLong();account.setTelephone(telephone);if(clientList.isEmpty()){clientList.add(account);System.out.println("开户成功!"+"您的卡号是:"+account.getCardNum());}else{BankAccountaccount_1=checkCardNum(account.getCardNum());//卡号应是唯一的,若已在clientList中则表示卡号重复,需要重新开户,否则可以将account对象添加到clientList中if(account_1==null){account.setMoney(0);clientList.add(account);System.out.println("开户成功!您的卡号是:"+account.getCardNum());}}//end}public void saveMoney(){ //存款函数BankAccount account=login();//每次操作前需要先登录if(account==null){System.out.println("账号或密码有误,登录失败!");}else{System.out.println("登录成功!请输入您的存款金额:");double money=sn.nextFloat();account.setMoney(money+account.getMoney());String str=df.format(account.getMoney());"+str);}}public void takeMoney(){ //取款函数BankAccount account=login();if(account==null){System.out.println("您输入的账号或密码有误,登录失败!");}else{System.out.println("登录成功!请输入您的取款金额:");double money=sn.nextFloat();if(account.getMoney()<money){System.out.println("您的卡上余额不足"+money+",取款失败!");}else{account.setMoney(account.getMoney()-money);String str=df.format(account.getMoney());额为:"+str);}}}public void checkMoney(){// 查询余额函数BankAccount account=login();if(account==null){System.out.println("您输入的账号不存在或密码有误,登录失败!");}else{String str=df.format(account.getMoney());System.out.println("查询余额成功!您现在的卡上余额为:"+str);}}public void transferMoney(){ //转账函数BankAccount account=login();if(account==null){System.out.println("您输入的账号不存在或密码有误,登录失败!");}else{System.out.println("请输入你要转账的卡号:");int cardNum=sn.nextInt();BankAccount account_1=checkCardNum(cardNum);if(account_1!=null){System.out.println("您要转账的客户的姓名为:"+account_1.getName());System.out.println("请输入您的转账金额:");double money=sn.nextFloat();if(money>account.getMoney()){System.out.println("您的卡上余额不足"+money+",转账失败!");}else{account.setMoney(account.getMoney()-money);account_1.setMoney(money+account_1.getMoney());String str=df.format(account.getMoney());System.out.println("转账成功!您现在的卡上余额是:"+str);}}else{System.out.println("您输入的卡号在本行不存在,转账失败!");}}}public BankAccount checkCardNum(int cardNum){//查询卡号在clientList中是否存在clientList,若找到则返回其中的account对象,否则返回nullBankAccount account=null;for(BankAccount account_1: clientList){ //遍历clientList 列表if(account_1.getCardNum()==cardNum){account=account_1;break;}else{}}//endreturn account;}public BankAccount login(){ //登录函数如果客户输入的卡号和密码与存入clientList中找到的account对象的卡号和密码相同才表示登录成功BankAccount account_1=null;System.out.println("请输入您的卡号:");int cardNum=sn.nextInt();BankAccount account=checkCardNum(cardNum);System.out.println("请输入您的密码:");String passWord=sn.next();if(account!=null && account.getPassWord().equals(passWord)){account_1=account;}else{account_1=null;}} }。
银行ATM自动取款机模拟程序
四、系统设计
• 模块结构图:
模拟ATM取款机
ATM功能类 登陆界面 核对密码 取款 转账 查询信息 退出系统 锁卡
consumer用户类 获取姓名 获取卡号 获取密码 获取余额 核对密码
五、详细设计
否
登陆界面
输入卡号和密码 功能界面 1.修改密码 2.取款 3.转账 4.查询余额 5.退出系统
卡号密码错误 超过3次?
六、编码与调试
consumer::consumer(char Name[],char Kahao[], float Money,char Password[]) //构造函数,建立账户 { strcpy(name,Name); strcpy(kahao,Kahao); money=Money; strcpy(passwd,Password); } float consumer::get_money() //取得余额 { return money; } char*consumer::get_name() //取得姓名 { return name; } char*consumer::get_kahao() //取得卡号 { return kahao; }
五、详细设计
4.3 类的设计
1)、定义了一个ATM取款机类,类中包括以下几部分: 公有段: 依次为登陆界面,核对密码,修改密码,取款,转账,查询信息,退 出系统,功能界面,锁机。 私有段: 记录密码输入次数。 友元函数: 取款,转账,查询信息,账号,密码。 2、)定义了一个consumer 类,类中包括以下几部分: 公有继承了consumer类 私有段: 卡号,用户姓名,用户密码,存款钱数 保护段: 取得姓名,取得卡号,取得密码,取得余额,设置密码,取钱
六、编码与调试
- 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 调试及运行结果 (22)7 体会 (29)8 参考文献 (29)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.RELATED, 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.Alignment.TRAIL ING).addComponent(jL1).addComponent(jL2)).addGap(31, 31, 31).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD ING, 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.RELATED, 147, Short.MAX_VALUE).addComponent(quit)).addGroup(layout.createSequentialGroup().addComponent(commit).addPreferredGap(ponentPlacement.RELATED, 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.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(quit)).addComponent(jPwnew, javax.swing.GroupLayout.DEFAULT_SIZE,, 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。