案例:
模拟实现ATM机的功能:
功能描述:
- 实现用户程登录及创建,实现查询余额,取出,存款,转账等
1、 测试 类:
public class Atm {
public static void main(String[] args) {
Method me =new Method();
me.start();
}
12345
2、用户类:
public class Usr {
private String account ; //账户
private String cood; //密码
private long balance ; //余额
public Usr(String account,String cood,long balance) {
this.cood=cood;
this.account=account;
this.balance=balance;
}
public Usr() {
}
public void setCood(String cood) {
this.cood=cood;
}
public String getCood() {
return cood;
}
public void setAccount(String account) {
this.account=account;
}
public String getAccount() {
return account;
}
public void setBalance(long balance) {
this.balance=balance;
}
public long getBalance() {
return balance;
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
@Override
public String toString() {
return "Usr{" +
"account='" + account + ''' +
", cood='" + cood + ''' +
", balance=" + balance +
'}';
}
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
3、方法类:
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class Method {
Random ran = new Random();
ArrayList<Usr> list = new ArrayList<Usr>();
Scanner sc = new Scanner(System.in);
Usr usr = new Usr();
public void method00() { //创建4个初始账户
Usr usr1 = new Usr("123456", "666666", 100000);
Usr usr2 = new Usr("888888", "666666", 200000);
Usr usr3 = new Usr("666666", "666666", 300000);
Usr usr4 = new Usr("999999", "666666", 400000);
list.add(usr1);
list.add(usr2);
list.add(usr3);
list.add(usr4);
}
public void start() {
method00();
System.out.println("这里创建了4个供测试的账户分别是:");
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
System.out.println(list.get(3));
System.out.println("欢迎使用本公司ATM机,请选择您需要的服务");
method01();
}
public void method01() { // 选择服务编号
System.out.println("1.登陆 2.创建账户 3.退出");
int a = shuRu(1, 3);
switch (a) {
case 1:
// 有账户,直接登陆;
dl();
break ;
case 2:
// 无账户,创建账户
cj();
break;
case 3:
break;
}
}
public int shuRu(int min, int max) { //输入
int aa = 0;
while (true) {
String str = sc.nextLine();
try {
int a = Integer .valueOf(str);
if (a >= min && a <= max) {
aa = a;
break;
} else {
System.out.println("请输入正确的服务编号");
}
} catch (Exception e) {
System.out.println("输入不合法,请您输入正确的服务编号");
}
}
return aa;
}
public int shuRu(int min) { //输入
int aa = 0;
while (true) {
String str = sc.nextLine();
try {
int a = Integer.valueOf(str);
if (a >= min && a <= Integer.MAX_VALUE) {
aa = a;
break;
} else {
System.out.println("请输入合理的金额,您最小的操作金额为100元");
}
} catch (Exception e) {
System.out.println("输入不合法");
}
}
return aa;
}
public void cj() { // 创建账户
System.out.println("请输入您的六位密码,您共有三次输入机会");
String str1 = method020101();
if (str1 == "") {
System.out.println("您的输入机会以用完,请重新选择服务");
method01();
} else {
System.out.println("请确认您的六位密码,您共有三次确认机会");
String str2 = method020101();
if (str1 == "") {
System.out.println("您的输入机会以用完,请重新选择服务");
method01();
} else {
boolean a = method020102(str1, str2); //比较两次输入
if (a) {
String str3 = sczh();
usr.setA cc ount(str3);
usr.setCood(str1);
list.add(usr);
System.out.println("恭喜您,您的账户创建成功,账号为:" + str3 + "您的密码为:" + str1);
fw(str3, str1);
} else {
System.out.println("您两次输入的密码不同,请选择您需要的服务");
method01();
}
}
}
}
public String method020101() { // 输入密码
String str = "";
for (int a = 3; a >= 1; a--) {
String str1 = sc.nextLine();
try {
int aa = Integer.valueOf(str1);
if (str1.length() == 6) {
str = str1;
a = 0;
} else {
if (a > 1) {
System.out.println("请您输入6位密码,您还有" + (a - 1) + "次机会");
} else {
break;
}
}
} catch (Exception e) {
if (a > 1) {
System.out.println("输入格式不合法,请输入6位数字,例如666666");
}
}
}
return str;
}
public boolean method020102(String str1, String str2) { //比较两次输入
boolean a;
if (str1.equals(str2)) {
a = true;
} else {
a = false;
}
return a;
}
public String sczh() { //随机生成账户
String str = "";
for (int b = 0; b < 6; b++) {
int a = ran.nextInt(10);
str += a;
}
for (int a = 0; a < list.size(); a++) {
if (str.equals(list.get(a).getAccount())) {
System.out.println("该账户以存在,请重新选择服务编号");
method01();
break;
}
}
return str;
}
public void dl() { //登录
System.out.println("尊敬的客户,您好,请输入您的账户,您共有三次输入机会");
String zz;
String str;
for (int a = 3; a >= 1; a--) {
str = sc.nextLine();
try {
int aa = Integer.valueOf(str);
if (str.length() == 6) {
for (int cc = 0; cc < list.size(); cc++) {
if (str.equals(list.get(cc).getAccount())) {
System.out.println("请输入您的六位密码");
String str1 = method020101();
if (str1.equals(list.get(cc).getCood())) {
zz = list.get(cc).getAccount();
System.out.println("登录成功,请选择您需要的服务");
fw(zz, str1);
a = 0;
break;
} else {
System.out.println("密码输入错误,请重新选择服务编号");
method01();
a = 0;
cc = list.size();
break;
}
} else if (!str.equals(list.get(cc).getAccount()) && cc == list.size() - 1) {
System.out.println("账户不存在,请重新输入");
}
}
} else {
if (a > 1) {
System.out.println("输入错误,请重新输入您的账户,您还有" + (a - 1) + "次机会");
} else {
System.out.println("您的输入机会以用完,请重新选择服务");
method01();
a = 0;
break;
}
}
} catch (Exception e) {
if (a > 1) {
System.out.println("输入格式错误,请重新输入您的账户,您还有" + (a - 1) + "次机会");
} else {
System.out.println("您的输入机会以用完,请重新选择服务");
method01();
a = 0;
break;
}
}
}
}
public void fw(String account, String cood) {
System.out.println("尊敬的客户,您好,请选择您需要的服务:1.修改密码 2.存款 3.取款 4.查询余额 5.转账 0.退出");
int a = shuRu(0, 5);
int b = czzh(account, cood, a);
switch (a) {
case 1:
fw1(account, cood, b);
break;
case 2:
fw2(account, cood, b);
break;
case 3:
fw3(account, cood, b);
break;
case 4:
fw4(account, cood, b);
break;
case 5:
fw5(account, cood, b);
break;
case 0:
System.out.println("服务结束,欢迎您的下次使用");
}
}
public void fw1(String account, String cood, int b) {
System.out.println("您确定要修改您的密码,1、确定 2、返回");
int bb = shuRu(1, 2);
switch (bb) {
case 1:
System.out.println("请输入您的原密码");
String str = method020101();
boolean aa = method020102(str, cood);
if (aa) {
System.out.println("请输入您的新密码");
String str1 = method020101();
System.out.println("请确认您的新密码");
String str2 = method020101();
boolean a = method020102(str1, str2);
if (a) {
list.get(b).setCood(str1);
System.out.println("您的密码修改成功,您的新密码为:" + str1);
fw(account, cood);
} else {
System.out.println("您两次输入的密码不同,请重新选择服务");
fw(account, cood);
}
} else {
System.out.println("您的密码输入错误,请重新选择服务");
fw(account, cood);
}
break;
case 2:
fw(account, cood);
break;
}
}
public void fw2(String account, String cood, int b) {//不可能这个账户不存在,所以没有进行判断
System.out.println("请输入您要存入的金额");
int a = shuRu(100);
list.get(b).setBalance((list.get(b).getBalance()) + a);
System.out.println("存款成功,您的余额为:" + list.get(b).getBalance());
fw(account, cood);
}
public void fw3(String account, String cood, int b) {
System.out.println("请输入你要取出的金额");
int a = shuRu(100);
if (a <= list.get(b).getBalance()) {
list.get(b).setBalance((list.get(b).getBalance()) - a);
System.out.println("取款成功,您的余额为:" + list.get(b).getBalance());
fw(account, cood);
} else {
System.out.println("您的余额不足,请确认余额");
fw(account, cood);
}
}
public void fw4(String account, String cood, int b) {
System.out.println("您的余额为:" + list.get(b).getBalance());
fw(account, cood);
}
public void fw5(String account, String cood, int b) {
System.out.println("请输入对方的账户");
String str = fw501();
boolean a = fw0502(str);
if (a) {
System.out.println("请输入您要转账的金额");
int c = shuRu(100);
if (c <= list.get(b).getBalance()) {
list.get(b).setBalance(list.get(b).getBalance() - c);
System.out.println("转账成功,您的余额为:" + list.get(b).getBalance());
fw(account, cood);
} else {
System.out.println("您的余额不足,请确认您的余额后重试");
fw(account, cood);
}
} else {
System.out.println("账户不存在,请确认后再操作");
fw(account, cood);
}
}
public String fw501() {
String str;
while (true) {
String str1 = sc.nextLine();
try {
int aa = Integer.valueOf(str1);
if (str1.length() == 6) {
str = str1;
break;
} else {
System.out.println("请输入正确的六位账户");
}
} catch (Exception e) {
System.out.println("格式错误,请输入正整数");
}
}
return str;
}
public boolean fw0502(String str) {
boolean aa = false;
for (int a = 0; a < list.size(); a++) {
if (str.equals(list.get(a).getAccount())) {
aa = true;
}
}
return aa;
}
public int czzh(String account, String cood, int a) { //查找账户在集合中是第几号元素
int aa = -1;
for (int b = 0; b < list.size(); b++) {
if (account.equals(list.get(b).getAccount())) {
aa = b;
}
}
return aa;
}
}
如有不同看法,欢迎留下您宝贵的意见!