20200922 JAVA能力测试
本次题目为设计一个银行ATM机
进行相关的自助操作
代码实现如下
一个基本数据类 Account类
package A20200922;
public class Account { /*Account类的创建*/
private String accountID;
private String accountname;
private String operatedate;
private int operatetype;
private String accountpassword;
private int accountbalance;
private int amount;
public String getaccountID() { /*GET方法的创建*/
return accountID;
}
public String getaccountname() {
return accountname;
}
public String getoperartdate() {
return operatedate;
}
public int getoperaretype() {
return operatetype;
}
public String getaccountpassword() {
return accountpassword;
}
public int getaccountbalance() {
return accountbalance;
}
public int getamount() {
return amount;
}
public void setaccountID(String a) { /*Set方法的创建*/
this.accountID=a;
}
public void setaccountname(String a) {
this.accountname=a;
}
public void setoperatedate(String a) {
this.operatedate=a;
}
public void setoperatetype(int a) {
this.operatetype=a;
}
public void setaccountpassword(String a) {
this.accountpassword=a;
}
public void setaccountbalance(int a) {
this.accountbalance=a;
}
public void setamount(int a) {
this.amount=a;
}
Account(){ /*构造函数*/
this.accountID="00000000";
this.accountname="无名氏";
this.operatedate="0000-00-00";
this.operatetype=0;
this.accountpassword="000000";
this.accountbalance=0;
this.amount=0;
}
Account(String accountID,String accountname,String operatedate,int operatetype,String accountpassword,int accountbalance,int amount){
this.accountID=accountID;
this.accountname=accountname;
this.operatedate=operatedate;
this.operatetype=operatetype;
this.accountpassword=accountpassword;
this.accountbalance=accountbalance;
this.amount=amount;
}
}
一个方法类 AccountManager类
package A20200922;
import java.util.Scanner;
import a20200731.Student;
public class AccountManager {
private static int p=0;
private static int w=0;
public Account[] x=new Account[100];
public void go() { /*空间的开辟*/
int q;
x[0]= new Account("11111111","a","2020-01-01",0,"000000",0,0);
x[1]= new Account("22222222","b","2020-02-02",0,"000000",0,0);
x[2]= new Account("33333333","c","2020-03-03",0,"000000",0,0);
x[3]= new Account("44444444","d","2020-04-04",0,"000000",0,0);
x[4]= new Account("55555555","e","2020-05-05",0,"000000",0,0);
for(q=5;q<100;q++)
{
x[q] = new Account();
}
}
public void Insertbankcardmune() { /*账号输入界面*/
System.out.println("***************************************************************");
System.out.println(" 欢迎使用中国工商银行自动柜员系统 ");
System.out.println("****************************************************************");
System.out.println(" 请输入您的账号: ");
System.out.println(" ");
System.out.println("****************************************************************");
String ID;
Scanner a =new Scanner(System.in);
ID=a.next();
int i;
int length = ID.length();
if(!(length==8)) {
System.out.println("该卡不是工行卡!");
Insertbankcardmune();
}
for(i=0;i<5;i++) {
if(!(ID.equals(x[i].getaccountID())))
{
}
if(ID.equals(x[i].getaccountID())) {
p=i;
break;
}
}
if(i==5&&(!ID.equals(x[4].getaccountID()))) {
System.out.println("该账户不存在!");
Insertbankcardmune();
}
else {
enterpassword();
}
}
public void enterpassword() { /*输入密码界面*/
int j;
System.out.println("***************************************************************");
System.out.println(" 请输入您的密码: ");
System.out.println("");
System.out.println("***************************************************************");
String password;
Scanner a =new Scanner(System.in);
password=a.next();
int length = password.length();
if(!(length==6)) {
System.out.println("密码位数错误!");
enterpassword();
}
for(j=0;j<5;j++) {
if(!(password.equals(x[p].getaccountpassword()))) {
}
if(password.equals(x[p].getaccountpassword())) {
break;
}
}
if(w==3) {
System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理!");
Insertbankcardmune();
}
if(j==5&&(!password.equals(x[4].getaccountpassword()))) {
System.out.println("密码录入错误!");
w++;
enterpassword();
}
else {
mune();
}
}
public void mune() { /*进入菜单界面*/
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统");
System.out.println("***************************************************************");
System.out.println(" 1丶存款; ");
System.out.println(" 2丶取款; ");
System.out.println(" 3、转账汇款; ");
System.out.println(" 4、修改密码; ");
System.out.println(" 5、查询余额; ");
System.out.println("***************************************************************");
int n;
Scanner a =new Scanner(System.in);
n= a.nextInt();
switch(n){
case 1:
deposit();
break;
case 2:
Withdrawal();
break;
case 3:
transfermoney();
break;
case 4:
change();
break;
case 5:
find();
break;
}
}
public void deposit() { /*存款方法*/
System.out.println("***************************************************************");
System.out.println(" 请输入存款金额: ");
System.out.println("");
System.out.println("***************************************************************");
int money;
Scanner a =new Scanner(System.in);
money=a.nextInt();
if(money<0) {
System.out.println("输入金额有误!");
mune();
}
else {
x[p].setaccountbalance(x[p].getaccountbalance()+money);
x[p].setamount(x[p].getamount()+money);
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户存款操作成功! ");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+"元");
System.out.println("***************************************************************");
mune();
}
}
public void Withdrawal() { /*取款方法*/
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统");
System.out.println("***************************************************************");
System.out.println(" 当前账户每日可以支取2万元。 ");
System.out.println(" 1 100元 ");
System.out.println(" 2 500元 ");
System.out.println(" 3 1000元 ");
System.out.println(" 4 1500元 ");
System.out.println(" 5 2000元 ");
System.out.println(" 6 5000元 ");
System.out.println(" 7 其他金额 ");
System.out.println(" 8 退卡 ");
System.out.println(" 9 返回 ");
System.out.println("***************************************************************");
int a,c;
Scanner b = new Scanner(System.in);
a=b.nextInt();
switch(a) {
case 1:
if(x[p].getaccountbalance()<100) {
System.out.println("账户余额不足");
}
else {
x[p].setaccountbalance(x[p].getaccountbalance()-100);
x[p].setamount(x[p].getamount()-100);
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户取款操作100元成功! ");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+"元");
System.out.println("***************************************************************");
}
Scanner d = new Scanner(System.in);
c = d.nextInt();
if(c==8) {
Insertbankcardmune();
}
if(c==9) {
mune();
}
break;
case 2:
if(x[p].getaccountbalance()<500) {
System.out.println("账户余额不足");
}
else {
x[p].setaccountbalance(x[p].getaccountbalance()-500);
x[p].setamount(x[p].getamount()-500);
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户取款操作500元成功! ");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+"元");
System.out.println("***************************************************************");
}
Scanner e = new Scanner(System.in);
c = e.nextInt();
if(c==8) {
Insertbankcardmune();
}
if(c==9) {
mune();
}
break;
case 3:
if(x[p].getaccountbalance()<1000) {
System.out.println("账户余额不足");
}
else {
x[p].setaccountbalance(x[p].getaccountbalance()-1000);
x[p].setamount(x[p].getamount()-1000);
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户取款操作1000元成功! ");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+"元");
System.out.println("***************************************************************");
}
Scanner f = new Scanner(System.in);
c = f.nextInt();
if(c==8) {
Insertbankcardmune();
}
if(c==9) {
mune();
}
break;
case 4:
if(x[p].getaccountbalance()<1500) {
System.out.println("账户余额不足");
}
else {
x[p].setaccountbalance(x[p].getaccountbalance()-1500);
x[p].setamount(x[p].getamount()-1500);
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户取款操作1500元成功! ");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+"元");
System.out.println("***************************************************************");
}
Scanner g = new Scanner(System.in);
c = g.nextInt();
if(c==8) {
Insertbankcardmune();
}
if(c==9) {
mune();
}
break;
case 5:
if(x[p].getaccountbalance()<2000) {
System.out.println("账户余额不足");
}
else {
x[p].setaccountbalance(x[p].getaccountbalance()-2000);
x[p].setamount(x[p].getamount()-2000);
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户取款操作100元成功! ");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+"元");
System.out.println("***************************************************************");
}
Scanner h = new Scanner(System.in);
c = h.nextInt();
if(c==8) {
Insertbankcardmune();
}
if(c==9) {
mune();
}
break;
case 6:
if(x[p].getaccountbalance()<5000) {
System.out.println("账户余额不足");
}
else {
x[p].setaccountbalance(x[p].getaccountbalance()-5000);
x[p].setamount(x[p].getamount()-5000);
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户取款操作5000元成功! ");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+"元");
System.out.println("***************************************************************");
}
Scanner l = new Scanner(System.in);
c = l.nextInt();
if(c==8) {
Insertbankcardmune();
}
if(c==9) {
mune();
}
break;
case 7:
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 请输入取款金额:");
System.out.println("***************************************************************");
int z;
Scanner y = new Scanner(System.in);
z = y.nextInt();
if(x[p].getaccountbalance()<z)
{
System.out.println("账户余额不足!");
}
else {
x[p].setaccountbalance(x[p].getaccountbalance()-z);
x[p].setamount(x[p].getamount()-z);
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户取款操作"+z+"元成功! ");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+"元");
System.out.println("***************************************************************");
}
Scanner i = new Scanner(System.in);
c = i.nextInt();
if(c==8) {
Insertbankcardmune();
}
if(c==9) {
mune();
}
break;
case 8:
Insertbankcardmune();
break;
case 9:
mune();
break;
}
}
public void transfermoney() { /*转账方法*/
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 请输入转账账户: ");
System.out.println("***************************************************************");
String ID;
int j,money;
Scanner a = new Scanner(System.in);
ID = a.next();
int length = ID.length();
if(!(length==8)) {
System.out.println("账户输入错误!");
transfermoney();
}
for(j=0;j<5;j++) {
if(!(ID.equals(x[j].getaccountID()))) {
}
if(ID.equals(x[j].getaccountID())) {
break;
}
}
if(j==5&&(!ID.equals(x[4].getaccountID()))) {
System.out.println("该账户不存在!");
transfermoney();
}
else {
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 请输入转账金额: ");
System.out.println("***************************************************************");
Scanner b = new Scanner(System.in);
money = b.nextInt();
if(x[p].getaccountbalance()<money) {
System.out.println("当前余额不足");
mune();
}
else {
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 请确认是否向账户名为:"+ID+"转账"+money+"元" );
System.out.println("***************************************************************");
System.out.println(" 如果确认请输入“Y”不确认输入“N” ");
String u;
Scanner o =new Scanner(System.in);
u=o.next();
if(u.equals("Y")) {
x[p].setaccountbalance(x[p].getaccountbalance()-money);
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户向"+ID+"转账"+money+"元");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+"元");
System.out.println("***************************************************************");
mune();
}
else if(u.equals("N")) {
mune();
}
else {
System.out.println("输入错误!");
mune();
}
}
}
}
public void find() { /*查询方法*/
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 当前账户余额为:"+x[p].getaccountbalance()+" ");
System.out.println("输入“q”键可返回系统录入账号界面。输入任意键可推出。");
String a;
Scanner b = new Scanner(System.in);
a= b.next();
if(a.equals("q")) {
Insertbankcardmune();
}
else {
quit();
}
}
public void change() { /*修改密码方法*/
System.out.println("***************************************************************");
System.out.println(" 欢迎"+x[p].getaccountname()+"使用中国工商银行自助柜员系统 ");
System.out.println("***************************************************************");
System.out.println(" 请输入当前密码:");
System.out.println(" 请输入修改密码:");
System.out.println(" 请输入确认密码:");
String a,b,c;
Scanner e = new Scanner(System.in);
a=e.next();
if(a.equals(x[p].getaccountpassword())) {
Scanner f = new Scanner(System.in);
b=f.next();
Scanner g = new Scanner(System.in);
c=g.next();
if(b.equals(c)) {
x[p].setaccountpassword(b);
System.out.println("密码修改成功!");
mune();
}
else {
System.out.println("修改后密码与确认密码不一致!");
change();
}
}
else {
System.out.println("密码错误!");
change();
}
}
public void quit() {
System.out.println("程序已退出!感谢您的使用!");
}
}
主函数类
package A20200922;
public class main {
public static void main(String[] arg) {
AccountManager a = new AccountManager();
a.go();
a.Insertbankcardmune();
}
}
运行截图如下
这是基本成型的程序运行结果
其中还有很多的细节有待补充
其中
对于数据的存储
本程序是使用的数组进行存储
但是实际题目要求使用的是文件流的方式来进行存储
并进行调用
这就在功能上留下了一些不方便实现的地方
也就有一些隐患
一些功能的实现是很粗糙的
还有就是在本次实验设计过程中
对于功能 结构的划分
还是有待加强
其中还是有些地方不太明朗
浪费了很多时间来权衡利弊
不知道放在哪里好
最后也就导致了一些功能的实现十分的繁琐
此次编程一共将近600行的代码
其中很大一部分是重复的罗列
这就导致层次性下降
如果没有一些注释
这会让人看起来很不方便
与老师要求的将近200多行
多出来了折磨多
这又是一个不太好的地方
其中也有很多收获
对于一些子页面的跳转
一些功能的跳转
有了更加清晰的思路
这是自己可以明显感觉到的一些地方
希望未来可以进步的更快更多