凡科网的网站建设好用吗,在线商城网站建设,崇信县门户网,莱芜大集前言#xff1a; 基础语句学完#xff0c;也可以编写一些像样的程序了#xff0c;现在要做的是多加练习#xff0c;巩固下知识点#xff0c;打好基础#xff0c;daydayup! 题目#xff1a;模仿银行ATM系统#xff0c;可以创建用户#xff0c;存钱#xff0c;转账 基础语句学完也可以编写一些像样的程序了现在要做的是多加练习巩固下知识点打好基础daydayup! 题目模仿银行ATM系统可以创建用户存钱转账修改密码注销账户等操作
思路利用面向对象编程1定义一个账户类Account至少需要包含卡号、姓名、性别、密码、余额、每次取现额度2定义一个ATM类用来代表ATM系统负责提供所有的业务需求3定义一个测试类Test负责对我们开发的ATM系统进行测试。
1创建实体类
创建一个实体类用来记录姓名、卡号、性别、密码、余额、每次取现额度等信息。
public class Account {private String card;private String username ;private char sex;private String password;private double money;private double limit;public Account() {}public String getCard() {return card;}public void setCard(String card) {this.card card;}public String getUsername() {return username (sex男? 先生:女士);}public void setUsername(String username) {this.username username;}public char getSex() {return sex;}public void setSex(char sex) {this.sex sex;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public double getMoney() {return money;}public void setMoney(double money) {this.money money;}public double getLimit() {return limit;}public void setLimit(double limit) {this.limit limit;}
}2创建操作类
1创建界面
通过选择1或选择2进入系统 public void start(){Scanner sc new Scanner(System.in);while (true) {System.out.println(欢迎来到ATM);System.out.println(1用户登陆);System.out.println(2用户开户);System.out.println(请选择);int id sc.nextInt();switch (id){case 1://用户登陆login();break;case 2://用户开户Operator();break;default:System.out.println(请重新输入);}}}
2用户开户
运用Scanner输入来记入需要记录的信息值得一提的是由于Scanner没办法记录char变量所以使用charAt来取第一个值。 private void Operator(){Account acc new Account();System.out.println(请输入姓名);String name sc.next();acc.setUsername(name);while (true) {System.out.println(请输入性别男/女);char sex sc.next().charAt(0);if (sex 男|| sex 女){acc.setSex(sex);break;}else{System.out.println(请输入男/女);}}while (true) {System.out.println(请设置你的密码);String password sc.next();System.out.println(请再次输入你的密码);String okpassword sc.next();if (password.equals(okpassword)){acc.setPassword(okpassword);break;}else{System.out.println(两次密码不一致请重新输入);}}System.out.println(请设置每日取款限额);double limit sc.nextDouble();acc.setLimit(limit);String id card();acc.setCard(id);accounts.add(acc);System.out.println(恭喜acc.getUsername()开户成功您的卡号为acc.getCard());}
2.1系统输入卡号
由于卡号需要随机生成8位数字并且不能与其他人的号码重复所以需要建立两个方法来做调试。一个方法用于生成8位随机数字一个方法用于检测号码是否重复
private String card(){Random r new Random();while (true) {String id ;for (int i 0; i 8; i) {int data r.nextInt(10);id data;}Account acc vs(id);if (acc null){return id;}}}private Account vs (String card){for (int i 0; i accounts.size(); i) {Account acc accounts.get(i);if (acc.getCard().equals(card)){return acc;}}return null;这样一来开户也就成功了。接下来是登陆的操作。
3用户登陆
需要注意的是当系统中没有账号时要提示没有账号。登陆时需要注意号码的匹对。 private void login(){if (accounts.size()0){System.out.println(请先创建账号);return;}while (true) {System.out.println(请输入卡号);String card sc.next();Account acc vs(card);if(acc null){System.out.println(没有该账号请重新输入);}else if(acc.getCard().equals(card)){while (true) {System.out.println(请输入密码);String password sc.next();if (acc.getPassword().equals(password)){acco acc;check();return;}else{System.out.println(密码不正确请重新输入);}}}}}
4业务界面
登陆成功后便可进行业务选择。运用switch语句可以精准选择业务需求
private void check(){while (true) {System.out.println(acco.getUsername()你可以办理以下业务);System.out.println(1.查询账户);System.out.println(2.存款);System.out.println(3.取款);System.out.println(4.转账);System.out.println(5.修改密码);System.out.println(6.退出);System.out.println(7.注销账户);System.out.println(请选择);int check sc.nextInt();switch (check){case 1:idcheck();break;case 2:moenycheck();break;case 3:moneyleave();break;case 4:transmoney();break;case 5:changepassword();return;case 6:System.out.println(你已经退出);return;case 7:if (deleteid());return;default:System.out.println(你输入的数字有误请重新输入);}}}
4.1账户确认
建议独立一个方法其他没什么需要注意的
private void idcheck(){System.out.println(号码acco.getCard());System.out.println(性别acco.getSex());System.out.println(存款acco.getMoney());System.out.println(每日限额acco.getLimit());}
4.2存款 熟用switch语句及死循环能够很好的解决问题
private void moenycheck() {while (true) {System.out.println(欢迎来到存款界面);System.out.println(存款请按1);System.out.println(退出请按2);int sd sc.nextInt();switch (sd){case 1:System.out.println(请输入你要存多少);double money sc.nextDouble();System.out.println(请问你确定要存入money么);System.out.println(确定请按1);System.out.println(返回请按2);int cc sc.nextInt();switch (cc){case 1:acco.setMoney(acco.getMoney()money);System.out.println(您的余额为acco.getMoney());break;case 2:return;default:System.out.println(请重新输入);}break;case 2:return;default:System.out.println(请重新输入);}}}
4.3取款
一连串的switch语句和if问句解决每一项逻辑 private void moneyleave() {while (true) {System.out.println(欢迎来到取款界面);System.out.println(取款请按1);System.out.println(退出请按2);int sd sc.nextInt();switch(sd){case 1:System.out.println(你目前的存款为 acco.getMoney());if (acco.getMoney() 100) {System.out.println(最低取款金额为100您的余额不足);break;} else {System.out.println(请输入你要取走的金额);double money sc.nextDouble();if (acco.getMoney()money){System.out.println(您的余额不足请重新输入);break;}else{if (moneyacco.getLimit()){System.out.println(您已超过限额请重新输入);break;}else{System.out.println(您已取走money元);acco.setMoney(acco.getMoney()- money);System.out.println(您的余额为acco.getMoney());}}}break;case 2:return;default:System.out.println(请重新输入);}}}
4.4转账
选要注意的是这里需要判断对方的姓氏采用的方法为“*”加上第二位开始的名字。转账者需要填写姓氏后运用startwith语句进行匹配。
private void transmoney() {while (true) {System.out.println(欢迎来到转账界面);System.out.println(转账请按1);System.out.println(退出请按2);int sd sc.nextInt();switch (sd){case 1:if (accounts.size()2){System.out.println(当前系统中只有一个账号请创建新的账号);break;}if (acco.getMoney()0){System.out.println(您的余额不足不能转账);break;}System.out.println(请输入对方的账号);String id sc.next();Account acc vs(id);if (acc null){System.out.println(没有该账号请重新输入);}else{String name *acc.getUsername().substring(1);System.out.println(请输入【name】的姓氏);String trname sc.next();if (acc.getUsername().startsWith(trname)){System.out.println(请输入转账金额);double money sc.nextDouble();if (acco.getMoney() money){acco.setMoney(acco.getMoney()-money);acc.setMoney(acc.getMoney() money);System.out.println(您已转账money元您的余额为acco.getMoney());break;}else{System.out.println(您的余额不足不能转账);}}else {System.out.println(姓氏认证有问题);}}break;case 2:return;}}}
4.5 更换密码
使用if语句询问即可需要注意的是最后要用return返回不能用breakreturn是退出方法break是退出循环 private void changepassword() {while (true) {System.out.println(欢迎来到更换密码界面);System.out.println(输入当前密码);String pass sc.next();if (acco.getPassword().equals(pass)){System.out.println(输入新密码);String okpass sc.next();System.out.println(再一次输入新密码);String okkpass sc.next();if (okkpass.equals(okpass)){acco.setPassword(okkpass);System.out.println(修改密码成功);return;}else{System.out.println(密码有误);}}else {System.out.println(密码有误);}}}
4.6退出系统
用return即可 case 6:System.out.println(你已经退出);return;
4.7删除账户
删除当前账户即可。当前账户和创建账户的实体类是同一个地址删除当前账户就是在ArrayList中删除了当前账户实体类的地址 private boolean deleteid() {while (true) {System.out.println(确定删除么y/n);String sd sc.next();switch (sd){case y:if (acco.getMoney()0){accounts.remove(acco);return true;}else{System.out.println(还有存款不能销户);return false;}default:System.out.println(删除失败);return false;}}}
操作完整版在这里
这样操作类就完成了有需要的可以复制这个完整版 import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class ATMOperator {private ArrayListAccount accounts new ArrayList();private Scanner sc new Scanner(System.in);private Account acco new Account();public void start(){Scanner sc new Scanner(System.in);while (true) {System.out.println(欢迎来到ATM);System.out.println(1用户登陆);System.out.println(2用户开户);System.out.println(请选择);int id sc.nextInt();switch (id){case 1://用户登陆login();break;case 2://用户开户Operator();break;default:System.out.println(请重新输入);}}}private void login(){if (accounts.size()0){System.out.println(请先创建账号);return;}while (true) {System.out.println(请输入卡号);String card sc.next();Account acc vs(card);if(acc null){System.out.println(没有该账号请重新输入);}else if(acc.getCard().equals(card)){while (true) {System.out.println(请输入密码);String password sc.next();if (acc.getPassword().equals(password)){acco acc;check();return;}else{System.out.println(密码不正确请重新输入);}}}}}private void check(){while (true) {System.out.println(acco.getUsername()你可以办理以下业务);System.out.println(1.查询账户);System.out.println(2.存款);System.out.println(3.取款);System.out.println(4.转账);System.out.println(5.修改密码);System.out.println(6.退出);System.out.println(7.注销账户);System.out.println(请选择);int check sc.nextInt();switch (check){case 1:idcheck();break;case 2:moenycheck();break;case 3:moneyleave();break;case 4:transmoney();break;case 5:changepassword();return;case 6:System.out.println(你已经退出);return;case 7:if (deleteid());return;default:System.out.println(你输入的数字有误请重新输入);}}}private void changepassword() {while (true) {System.out.println(欢迎来到更换密码界面);System.out.println(输入当前密码);String pass sc.next();if (acco.getPassword().equals(pass)){System.out.println(输入新密码);String okpass sc.next();System.out.println(再一次输入新密码);String okkpass sc.next();if (okkpass.equals(okpass)){acco.setPassword(okkpass);System.out.println(修改密码成功);return;}else{System.out.println(密码有误);}}else {System.out.println(密码有误);}}}private boolean deleteid() {while (true) {System.out.println(确定删除么y/n);String sd sc.next();switch (sd){case y:if (acco.getMoney()0){accounts.remove(acco);return true;}else{System.out.println(还有存款不能销户);return false;}default:System.out.println(删除失败);return false;}}}private void transmoney() {while (true) {System.out.println(欢迎来到转账界面);System.out.println(转账请按1);System.out.println(退出请按2);int sd sc.nextInt();switch (sd){case 1:if (accounts.size()2){System.out.println(当前系统中只有一个账号请创建新的账号);break;}if (acco.getMoney()0){System.out.println(您的余额不足不能转账);break;}System.out.println(请输入对方的账号);String id sc.next();Account acc vs(id);if (acc null){System.out.println(没有该账号请重新输入);}else{String name *acc.getUsername().substring(1);System.out.println(请输入【name】的姓氏);String trname sc.next();if (acc.getUsername().startsWith(trname)){System.out.println(请输入转账金额);double money sc.nextDouble();if (acco.getMoney() money){acco.setMoney(acco.getMoney()-money);acc.setMoney(acc.getMoney() money);System.out.println(您已转账money元您的余额为acco.getMoney());break;}else{System.out.println(您的余额不足不能转账);}}else {System.out.println(姓氏认证有问题);}}break;case 2:return;}}}private void moneyleave() {while (true) {System.out.println(欢迎来到取款界面);System.out.println(取款请按1);System.out.println(退出请按2);int sd sc.nextInt();switch(sd){case 1:System.out.println(你目前的存款为 acco.getMoney());if (acco.getMoney() 100) {System.out.println(最低取款金额为100您的余额不足);break;} else {System.out.println(请输入你要取走的金额);double money sc.nextDouble();if (acco.getMoney()money){System.out.println(您的余额不足请重新输入);break;}else{if (moneyacco.getLimit()){System.out.println(您已超过限额请重新输入);break;}else{System.out.println(您已取走money元);acco.setMoney(acco.getMoney()- money);System.out.println(您的余额为acco.getMoney());}}}break;case 2:return;default:System.out.println(请重新输入);}}}private void moenycheck() {while (true) {System.out.println(欢迎来到存款界面);System.out.println(存款请按1);System.out.println(退出请按2);int sd sc.nextInt();switch (sd){case 1:System.out.println(请输入你要存多少);double money sc.nextDouble();System.out.println(请问你确定要存入money么);System.out.println(确定请按1);System.out.println(返回请按2);int cc sc.nextInt();switch (cc){case 1:acco.setMoney(acco.getMoney()money);System.out.println(您的余额为acco.getMoney());break;case 2:return;default:System.out.println(请重新输入);}break;case 2:return;default:System.out.println(请重新输入);}}}private void idcheck(){System.out.println(号码acco.getCard());System.out.println(性别acco.getSex());System.out.println(存款acco.getMoney());System.out.println(每日限额acco.getLimit());}private void Operator(){Account acc new Account();System.out.println(请输入姓名);String name sc.next();acc.setUsername(name);while (true) {System.out.println(请输入性别男/女);char sex sc.next().charAt(0);if (sex 男|| sex 女){acc.setSex(sex);break;}else{System.out.println(请输入男/女);}}while (true) {System.out.println(请设置你的密码);String password sc.next();System.out.println(请再次输入你的密码);String okpassword sc.next();if (password.equals(okpassword)){acc.setPassword(okpassword);break;}else{System.out.println(两次密码不一致请重新输入);}}System.out.println(请设置每日取款限额);double limit sc.nextDouble();acc.setLimit(limit);String id card();acc.setCard(id);accounts.add(acc);System.out.println(恭喜acc.getUsername()开户成功您的卡号为acc.getCard());}private String card(){Random r new Random();while (true) {String id ;for (int i 0; i 8; i) {int data r.nextInt(10);id data;}Account acc vs(id);if (acc null){return id;}}}private Account vs (String card){for (int i 0; i accounts.size(); i) {Account acc accounts.get(i);if (acc.getCard().equals(card)){return acc;}}return null;}
}
最后测试
public class ATMDemo {public static void main(String[] args) {ATMOperator de new ATMOperator();de.start();}}测试效果 总结完美运行有些语句需要在加强熟用if语句和switch可以完成精准操作
整理结束撒花