ATM机系统
**ATM自动提款机**
一级菜单
1. 注册(银行卡账号及密码) 2.登陆 3.退卡
二级菜单
1,存款 2.取款 3.查询余额 4.转账 5.返回上级菜单 4.转账(校验 1,不能自己转自己 2.转账账号是否存在)
-------(转账应注意的)--------
存在:
输入转账金额
校验金额(余额是否够)
true
当前账户余额做减操作
目标账户做余额加值操作
false
当前账户余额不足
不存在:
账户不存在
数据结构(账户 密码 余额)
方法:存款 取款 查询余额 转账 辅助类方法
账户代码
public class Acount {
String acount;//账号
String passworld;//密码
int balance;//余额
//存款方法
boolean deposit(int sum){
this.balance += sum;
return true;
}
//取款方法
boolean draw(int sum){
this.balance -= sum;
return true;
}
//查询当前用户的余额
int select(Acount account1){
return account1.balance;
}
//转账
void transfer(Acount account1,Acount account2,int sum){
account1.balance -= sum;
account2.balance += sum;
System.out.println("转账成功");
}
}
测试类代码
package com.huayu.test;
import java.util.Scanner;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
//记录登陆的账户及密码
String login = "";
String pass = "";
//用于记录登陆的用户
Acount login_user = new Acount();
Scanner scanner = new Scanner(System.in);
//定义首循环标签
boolean main_menu = true;
int count = 0;
//定义数组存贮账号及密码三个
String[][] count_array = new String[3][2];
//定义数组存贮每次注册后的账户
Acount[] user = new Acount[3];
//创建用户,注册时为其一一赋值
Acount acount = new Acount();
while(main_menu){
System.out.println("---------------1. 注册 2.登陆 3.退卡----------------------");
switch (scanner.nextInt()){
case 1:
if(count<3){
acount = new Acount();
//存贮注册过的每个用户,转账时使用
user[count] = acount;
System.out.println("----------------请输入你要注册的账号-------------------");
acount.acount = scanner.next();
System.out.println("----------------请输入你要设置的密码---------------------");
acount.passworld = scanner.next();
//如果账号未重复则可以进行保存,否则提示错误
boolean b_flag = true;
for(int i=0;i<count_array.length;i++){
if(acount.acount.equals(count_array[i][0])){
System.out.println("-----------账号重复,注册失败------------------");
b_flag = false;
}
}
if(b_flag){
//对账号及密码进行存贮
count_array[count][0] = acount.acount;
count_array[count][1] = acount.passworld;
count++;
}
}else{
System.out.println("------------------注册账号已达上限----------------------");
}
break;
case 2:
// System.out.println(Arrays.toString(count_array));
// for(int i=0;i<count;i++){
// System.out.print("账号为:"+count_array[count][0]);
// System.out.print("密码为:"+count_array[count][1]+"\n");
// }
if(count == 0){
System.out.println("------------------请先注册---------------------");
}else{
boolean flag = false;
System.out.println("请输入你的账号");
String s_acount = scanner.next();
System.out.println("请输入你的密码");
String s_pass = scanner.next();
for (int i =0;i<count_array.length;i++){
if(s_acount.equals(count_array[i][0])&&s_pass.equals(count_array[i][1])){
flag = true;
//记录登陆的账户及密码
login = s_acount;
pass = s_pass;
//用户和账号是一一对应的,所以以i为链接点判断是哪个用户
login_user = user[i];
System.out.println("登陆成功");
}
}
if(!flag){
System.out.println("登陆失败,请重新登陆");
}
if(flag){
boolean sec_menu = true;
//定义存款金额
int money = 0;
//定义取款金额
int i = 0;
while(sec_menu){
//存款或取款或余额都是基于 登陆账户 而言
System.out.println("--------------1,存款 2.取款 3.查询余额 4.转账 5.返回上级菜单---------------");
switch (scanner.nextInt()){
case 1:
//存款
System.out.println("请输入存款金额");
money = scanner.nextInt();
if(money>0){
login_user.deposit(money);
System.out.println("存款成功");
}
break;
case 2:
System.out.println("请输入取款金额");
i = scanner.nextInt();
if(i<=login_user.balance){
login_user.draw(i);
System.out.println("取款成功");
}else{
System.out.println("余额不足");
}
break;
case 3:
System.out.println("当前账户余额为:"+login_user.select(login_user));
break;
case 4:
boolean s = false;
//转出账户即为当前登陆的账户 不能操作别人账户
// System.out.println("请输入要转出的账户");
// int out_account = scanner.nextInt();
System.out.println("请输入要转入的账户");
String in_account = scanner.next();
if(login==in_account){
System.out.println("您输入的账户为您本人的账户");
}else{
for(int n=0;n<count_array.length;n++){
//会多次判断,重复输出
// if(in_account.equals(count_array[n][0])){
//
// }else{
// System.out.println("您输入的账户不存在");
// }
if(in_account.equals(count_array[n][0])){
//输入的账户存在
s = true;
//定义变量记录n值,方便转账时以此为连接对应
}
}
if(!s){
System.out.println("您输入的账户不存在");
}
//账户存在,开始转账操作
if(s){
System.out.println("请输入要转账的金额");
int transfer_money = scanner.nextInt();
//循环判断输入账户所对应用户
//注册了几个账号及有几个用户,就循环几次
for(int u = 0;u<count;u++){
if(in_account.equals(user[u].acount)){
acount.transfer(login_user,user[u],transfer_money);
}
}
}
}
break;
case 5:
sec_menu = false;
break;
default:
System.out.println("输入错误,请重新输入");
}
}
}
}
break;
case 3:
main_menu = false;
System.out.println("-------------------欢迎下次光临----------------------");
break;
default:
System.out.println("输入有误请重新输入");
}
}
}
}