Account类
package ATM;
public class Account {//定义Account类
private String accountID;//用于存储学生的用户账号(由八位数字组成)
private String accountname;//用于存储账户的名称
private String operatedate;//用于存储操作的时间,由十位字符组成,显示格式"XXXX-XX-XX"
private int operatetype;//用于存储操作账户的类型
private String accountpassword;//用于用户密码,由六位数字组成
private int accountbalance;//用于存储账户余额
private int amount;//操作流水金额
//set函数,设置变量信息
public void setaccountID(String accountID) {this.accountID=accountID;}
public void setaccountname(String accountname) {this.accountname=accountname;}
public void setoperatedate(String operatedate) {this.operatedate=operatedate;}
public void setoperatedate(int operatetype) {this.operatetype=operatetype;}
public void setaccountpassword(String accountpassword) {this.accountpassword=accountpassword;}
public void setaccountbalance(int accountbalance) {this.accountbalance=accountbalance;}
public void setamount(int amount) {this.amount=amount;}
//get函数,读取变量信息
public String getaccountID() {return accountID;}
public String getaccountname() {return accountname;}
public String getopertedate() {return operatedate;}
public int getoperatetype() {return operatetype;}
public String getaccountpassword(){return accountpassword;}
public int getaccountbalance() {return accountbalance;}
public int getamount() {return amount;}
}
private String accountID;//用于存储学生的用户账号(由八位数字组成)
private String accountname;//用于存储账户的名称
private String operatedate;//用于存储操作的时间,由十位字符组成,显示格式"XXXX-XX-XX"
private int operatetype;//用于存储操作账户的类型
private String accountpassword;//用于用户密码,由六位数字组成
private int accountbalance;//用于存储账户余额
private int amount;//操作流水金额
//set函数,设置变量信息
public void setaccountID(String accountID) {this.accountID=accountID;}
public void setaccountname(String accountname) {this.accountname=accountname;}
public void setoperatedate(String operatedate) {this.operatedate=operatedate;}
public void setoperatedate(int operatetype) {this.operatetype=operatetype;}
public void setaccountpassword(String accountpassword) {this.accountpassword=accountpassword;}
public void setaccountbalance(int accountbalance) {this.accountbalance=accountbalance;}
public void setamount(int amount) {this.amount=amount;}
//get函数,读取变量信息
public String getaccountID() {return accountID;}
public String getaccountname() {return accountname;}
public String getopertedate() {return operatedate;}
public int getoperatetype() {return operatetype;}
public String getaccountpassword(){return accountpassword;}
public int getaccountbalance() {return accountbalance;}
public int getamount() {return amount;}
}
AccountManage类
package ATM;
import java.util.*;
public class AccountManager {
//定义AccountManager类
Account a=new Account();//定义Account类的一个对象
static Scanner x=new Scanner(System.in);
//模块一
public void denglu() {//模拟输入账号功能
System.out.println("***************************************************************");
System.out.println(" 欢迎使用中国工商银行自动柜员系统");
System.out.println("***************************************************************");
for(; ;) {
System.out.println(" 请输入您的账号:");
a.setaccountID(x.next());
System.out.println("***************************************************************");
if(a.getaccountID().length()!=8)System.out.println("该卡不是工行卡");//判断账号位数是否为8位,不为8位跳转到账号输入界面
else {System.out.println("账号登陆成功");break;}//账号位数为8,跳出循环
}
}
//模块二
public void mima() {//模拟密码输入功能
int j=1;
System.out.println("***************************************************************");
System.out.print(" 欢迎");
System.out.print(a.getaccountID());//输出账号信息
System.out.println("使用中国工商银行自助柜员系统");
System.out.println("***************************************************************");
for(int i=1;i<=3;i++) {//模拟密码输入功能
System.out.println(" 请输入您的密码:");
a.setaccountpassword(x.next());
System.out.println("***************************************************************");
if(a.getaccountpassword().length()!=6) {
System.out.println("密码录入错误");
j++;
if(j==4)System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");
}//判断密码是否为6位,不为6位跳转到密码输入界面;密码录入三次错误,输出相应语句
else {System.out.println("密码输入成功");break;}//密码位数为6,跳出循环
}
}
//界面表头
public void a() {
System.out.println("***************************************************************");
System.out.print(" 欢迎");
System.out.print(a.getaccountID());//输出账号信息
System.out.println("使用中国工商银行自助柜员系统");
System.out.println("***************************************************************");
}
//模块三
public void menu() { //系统主界面
a();
System.out.println(" 1、 存款;");
System.out.println(" 2、 取款;");
System.out.println(" 3、 转账汇款;");
System.out.println(" 4、 修改密码;");
System.out.println(" 5、 查询余额;");
System.out.println("***************************************************************");
}
//模块四
public void cunkuan() {//模拟存款过程
a();
System.out.println(" 请输入存款金额;");
a.setamount(x.nextInt());
a();
a.setaccountbalance(a.getamount()+a.getaccountbalance());
System.out.println(" 当前账户存款操作成功。");
System.out.print(" 当前账户余额为:"+a.getaccountbalance());
System.out.println("元");
}
//模块五
public void qukuan() {//模拟取款过程
a();
System.out.println(" 请输入取款金额;");
a.setamount(x.nextInt());
System.out.println("***************************************************************");
if(a.getamount()>a.getaccountbalance())System.out.println("账户余额不足");
else {
a();
System.out.print(" 当前账户取款操作");
System.out.print(a.getamount());
System.out.println("元成功。");
a.setaccountbalance(a.getaccountbalance()-a.getamount());
System.out.print(" 当前账户余额为:"+a.getaccountbalance());
System.out.println("元");
System.out.println("***************************************************************");
}
}
//模块六
public void zhuanzhang() {//模拟转账汇款功能
a();
System.out.println(" 请输入转账账户;");
a.setaccountID(x.next());
System.out.println("***************************************************************");
a();
System.out.println(" 请输入转账金额;");
a.setamount(x.nextInt());
System.out.println("***************************************************************");
if(a.getamount()>a.getaccountbalance())System.out.println("账户余额不足");
else {
a();
System.out.print(" 请确认是否向");
System.out.print(a.getaccountID());
System.out.print("转账");
System.out.print(a.getamount());
System.out.println("元");
System.out.println("***************************************************************");
System.out.println("N 不转账 Y 确认转账");
String n=x.next();
if(n.equals("N")) menu();
if(n.equals("Y")) {a();
System.out.print("当前账户向");
System.out.print(a.getaccountID());
System.out.print("成功转账");
System.out.print(a.getamount());
System.out.println("元");
a.setaccountbalance(a.getaccountbalance()-a.getamount());
System.out.print(" 当前账户余额为:"+a.getaccountbalance());
System.out.println("元");
System.out.println("***************************************************************");
}
}
}
//模块七
public void xiumi() {
a();
System.out.println("请输入当前密码:");
System.out.println("请输入修改密码:");
System.out.println("请输入确认密码:");
a();
System.out.println(" 当前账户密码修改成功");
System.out.println("***************************************************************");
}
//模块八
public int yue() {
return a.getaccountbalance();
}
public static void main(String[] args) {
AccountManager A = new AccountManager();//定义AccountManager类的一个对象
A.denglu();//输入账号功能
A.mima();//密码输入功能
for(; ;) {
A.menu();
int m=x.nextInt();
switch(m) {
case 1:A.cunkuan();break;
case 2:A.qukuan();break;
case 3:A.zhuanzhang();break;
case 4:A.xiumi();break;
case 5:A.yue();break;
}
}
import java.util.*;
public class AccountManager {
//定义AccountManager类
Account a=new Account();//定义Account类的一个对象
static Scanner x=new Scanner(System.in);
//模块一
public void denglu() {//模拟输入账号功能
System.out.println("***************************************************************");
System.out.println(" 欢迎使用中国工商银行自动柜员系统");
System.out.println("***************************************************************");
for(; ;) {
System.out.println(" 请输入您的账号:");
a.setaccountID(x.next());
System.out.println("***************************************************************");
if(a.getaccountID().length()!=8)System.out.println("该卡不是工行卡");//判断账号位数是否为8位,不为8位跳转到账号输入界面
else {System.out.println("账号登陆成功");break;}//账号位数为8,跳出循环
}
}
//模块二
public void mima() {//模拟密码输入功能
int j=1;
System.out.println("***************************************************************");
System.out.print(" 欢迎");
System.out.print(a.getaccountID());//输出账号信息
System.out.println("使用中国工商银行自助柜员系统");
System.out.println("***************************************************************");
for(int i=1;i<=3;i++) {//模拟密码输入功能
System.out.println(" 请输入您的密码:");
a.setaccountpassword(x.next());
System.out.println("***************************************************************");
if(a.getaccountpassword().length()!=6) {
System.out.println("密码录入错误");
j++;
if(j==4)System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");
}//判断密码是否为6位,不为6位跳转到密码输入界面;密码录入三次错误,输出相应语句
else {System.out.println("密码输入成功");break;}//密码位数为6,跳出循环
}
}
//界面表头
public void a() {
System.out.println("***************************************************************");
System.out.print(" 欢迎");
System.out.print(a.getaccountID());//输出账号信息
System.out.println("使用中国工商银行自助柜员系统");
System.out.println("***************************************************************");
}
//模块三
public void menu() { //系统主界面
a();
System.out.println(" 1、 存款;");
System.out.println(" 2、 取款;");
System.out.println(" 3、 转账汇款;");
System.out.println(" 4、 修改密码;");
System.out.println(" 5、 查询余额;");
System.out.println("***************************************************************");
}
//模块四
public void cunkuan() {//模拟存款过程
a();
System.out.println(" 请输入存款金额;");
a.setamount(x.nextInt());
a();
a.setaccountbalance(a.getamount()+a.getaccountbalance());
System.out.println(" 当前账户存款操作成功。");
System.out.print(" 当前账户余额为:"+a.getaccountbalance());
System.out.println("元");
}
//模块五
public void qukuan() {//模拟取款过程
a();
System.out.println(" 请输入取款金额;");
a.setamount(x.nextInt());
System.out.println("***************************************************************");
if(a.getamount()>a.getaccountbalance())System.out.println("账户余额不足");
else {
a();
System.out.print(" 当前账户取款操作");
System.out.print(a.getamount());
System.out.println("元成功。");
a.setaccountbalance(a.getaccountbalance()-a.getamount());
System.out.print(" 当前账户余额为:"+a.getaccountbalance());
System.out.println("元");
System.out.println("***************************************************************");
}
}
//模块六
public void zhuanzhang() {//模拟转账汇款功能
a();
System.out.println(" 请输入转账账户;");
a.setaccountID(x.next());
System.out.println("***************************************************************");
a();
System.out.println(" 请输入转账金额;");
a.setamount(x.nextInt());
System.out.println("***************************************************************");
if(a.getamount()>a.getaccountbalance())System.out.println("账户余额不足");
else {
a();
System.out.print(" 请确认是否向");
System.out.print(a.getaccountID());
System.out.print("转账");
System.out.print(a.getamount());
System.out.println("元");
System.out.println("***************************************************************");
System.out.println("N 不转账 Y 确认转账");
String n=x.next();
if(n.equals("N")) menu();
if(n.equals("Y")) {a();
System.out.print("当前账户向");
System.out.print(a.getaccountID());
System.out.print("成功转账");
System.out.print(a.getamount());
System.out.println("元");
a.setaccountbalance(a.getaccountbalance()-a.getamount());
System.out.print(" 当前账户余额为:"+a.getaccountbalance());
System.out.println("元");
System.out.println("***************************************************************");
}
}
}
//模块七
public void xiumi() {
a();
System.out.println("请输入当前密码:");
System.out.println("请输入修改密码:");
System.out.println("请输入确认密码:");
a();
System.out.println(" 当前账户密码修改成功");
System.out.println("***************************************************************");
}
//模块八
public int yue() {
return a.getaccountbalance();
}
public static void main(String[] args) {
AccountManager A = new AccountManager();//定义AccountManager类的一个对象
A.denglu();//输入账号功能
A.mima();//密码输入功能
for(; ;) {
A.menu();
int m=x.nextInt();
switch(m) {
case 1:A.cunkuan();break;
case 2:A.qukuan();break;
case 3:A.zhuanzhang();break;
case 4:A.xiumi();break;
case 5:A.yue();break;
}
}
}
}
}
编后感想:
第一次使用java高级程序语言编写这样系统性的程序,最大的感受就是写不完!当然也有许多的收获:第一,要注意编写注释,即使是自己看自己的代码,经过几天之后都有可能会看不懂,所以一定要注意写注释,虽然你可能觉得会有一点浪费时间,但以后的好处就能显示出来,增加代码的可读性,也显得条理清晰,自己也有继续写下去的信心;第二,因为这种系统性的程序一般都会比较庞大,所以模块化就显得相当的重要;先通读题目要求然后在心里分成几个部分;逐步进行编写,这样既可以更容易地找出自己此部分中存在的bug,然后进行改正;也可以使得得分最大化。第三,可以合理构造函数,从而简化代码程序,比如该程序中的a()函数,因为在每个模块当中都有片头部分而且相同,所以我们就可以构造这样一个函数,不用在每回都把代码复制一遍,直接调用函数即可;第四,尽量简化主函数,实现类的封装;调用类中的函数,简便易懂,给人一种清晰地感觉。