JAVA的第一堂课,我们如约到教室测试,一共四节课时间,测试内容是做银行提款机的程序。
我先把题目中要求的类和主函数写出来,然后把之前写的学生管理系统的开始界面的语句改了改,然后按照题目中的顺序写程序。
首先是按照要求写了私有变量,以及私有变量的set和get函数(后加的,当时根本没时间写),然后就是主函数在主函数中我写的不多,主要是调用核对账号、密码以及显示主界面的函数。
在核对账号的函数中,用一个变量存储客户输入的账号,然后打开储存客户账号的文件,按行查找账号,当找到账号就把那一行的数据赋值给相应的变量,然后主函数调用核对密码的函数,如果账号不对,回到主函数依旧调用核对账号的函数,直到账号输入正确。

在核对密码的函数中,用一个变量存储客户输入的密码,如果密码输入正确,则回到主函数,调用主界面函数,如果不正确,则由time变量存储输入账号次数,若达到三次则锁定,回到输入账号的界面。

进入主界面函数后,显示可以进行的选项。在主函数中利用switch语句判断、调用对应的函数。

在存款函数中用户输入错误金额会提示出错,然后回到存款界面,如果输入q则回到输入账号界面,输入正确金额后,找到对应的账号,加金额写道临时文件中,最后把临时文件写入到存储文件中,然后在流水文件中写入账户和操作。


取款函数与存款函数类似,用switch语句判断取款金额。

转账汇款函数与前面几个函数基本相同,需要注意的是两个账户的金额都要修改。

修改密码,确认原密码和两次新密码之后将修改后的密码写到文件中,若其中出现错误则跳回修改密码界面。

查询函数,在流水文件中找到相应账户的信息并输出。

本次测试成绩为19分,原因在于没有将代码完善,一些功能还会出错,所以我认识到敲代码不仅仅要准确也要有速度。而这些的基础就在于程序员对语言、结构的掌握。我以后要经常敲代码,多熟悉代码。
以下是完整的程序代码。
package test;
import java.util.*;
//信 1905-1 20194171 常金悦
import java.io.*;
public class AccountManager {
private String accountID; //用户账号
private String accountname; //账户名称
private String operatedate; //操作时间 2018-09-20
private int operatetype; //操作类型
private String accountpassword; //用户密码
private int accountbalance; //账户余额
private int amount; //流水金额
String getaccountID(){return accountID;}
void setaccountID(String s){accountID=s;}
String getaccountname(){return accountname;}
void setaccountname(String s){accountname=s;}
String getoperatedate(){return operatedate;}
void setoperatedate(String s){operatedate=s;}
int getoperatetype(){return operatetype;}
void setoperatetype(int s){operatetype=s;}
String getaccountpassword(){return accountpassword;}
void setaccountpassword(String s){accountpassword=s;}
int getaccountbalance(){return accountbalance;}
void setaccountbalance(int s){accountbalance=s;}
int getamount(){return amount;}
void setamount(int s){amount=s;}
public static void main(String[] args)throws IOException{
AccountManager acc=new AccountManager();
System.out.println("*******************************");
System.out.println(" 欢迎使用中国工商银行自动柜员系统");
acc.mmaaiinn();
}
void mmaaiinn()throws IOException{
int a=0;
while(a==0){
System.out.println("*******************************");
System.out.println("请输入您的账号:");
String Id=zhanghao();
if(Id.equals("false")){}
else {
a=mima(Id);
if(a==1) jiemian();
}
}
}
public String zhanghao()throws IOException{
Scanner input = new Scanner(System.in,"UTF-8");
String ID=input.next();
InputStream is = new FileInputStream("accountinformation.txt");
Scanner ss = new Scanner(is,"UTF-8");
int t=0;
while(ss.hasNext()){
String line = ss.nextLine();
String[] txt = line.split(",");
String id = txt[0];
if(id.equals(ID)){
accountID=txt[0];
accountpassword=txt[1];
accountbalance=Integer.valueOf(txt[2]);
t=-1;
break;
}
}
if(t==0){
System.out.println("该卡不是工行卡");
return "false";
}
else return ID;
}
public int mima(String Id)throws IOException{
System.out.println("*******************************");
System.out.println(" 欢迎"+Id+"使用中国工商银行自动柜员系统");
int time=0;
int a=0;
while(time!=3){
System.out.println("*******************************");
System.out.println("请输入您的密码:");
Scanner input = new Scanner(System.in,"UTF-8");
String mm=input.next();
if(accountpassword.equals(mm)){
a=1;
return a;
}
else{
System.out.println("*******************************");
System.out.println("密码输入错误");
time++;
}
}
if(time==3){
System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");
a=0;
}
return a;
}
public void jiemian()throws IOException{
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
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("*******************************");
Scanner input = new Scanner(System.in,"UTF-8");
int a=0;
a = input.nextInt();
input.nextLine();
switch (a) {
case 1: cunkuan();
break;
case 2: qukuan();
break;
case 3: zhuanzhang();
break;
case 4: xiugai();
break;
case 5: chaxun();
break;
default:
System.out.println("*******************************");
System.out.println("Wrong number!");
break;
}
input.close();
}
public void cunkuan()throws IOException{
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println("请输入存款金额:");
Scanner input = new Scanner(System.in,"UTF-8");
String a;
int e=0;
a = input.nextLine();
if(a.equals("q")) mmaaiinn();
else {e=Integer.valueOf(a);}
if((e<=0)){
System.out.println("输入金额有误");
cunkuan();
}
else{
int money=0;
InputStream is = new FileInputStream("accountinformation.txt");
Scanner ss = new Scanner(is,"UTF-8");
File f2 = new File("account.txt");
FileWriter fw2 = new FileWriter(f2);
PrintWriter pw2 = new PrintWriter(fw2);
while(ss.hasNext()){
String line = ss.nextLine();
String[] txt = line.split(",");
String id = txt[0];
if(id.equals(accountID)){
money=accountbalance+e;
pw2.println(id+","+accountpassword+","+money);
}
else{
pw2.println(line);
}
}
//12345678,787878,0
pw2.close();
is = new FileInputStream("account.txt");
ss = new Scanner(is,"UTF-8");
File f = new File("accountinformation.txt");
fw2 = new FileWriter(f);
PrintWriter w = new PrintWriter(fw2);
while (ss.hasNext()) {
String line = ss.nextLine();
w.println(line);
}
w.close();
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println("当前账户存款操作成功");
System.out.println("当前账户余额为:"+money+"元");
f=new File("accountlist.txt");
FileWriter fw = new FileWriter(f,true);
PrintWriter pw=new PrintWriter(fw);
pw.println(accountID+",take in"+a+"RMB");
pw.close();
}
}
public void qukuan()throws IOException{
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
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、返回");
Scanner input = new Scanner(System.in,"UTF-8");
int a=0;
int money=0;
a = input.nextInt();
input.nextLine();
switch (a) {
case 1:
money=100;
break;
case 2:
money=500;
break;
case 3:
money=1000;
break;
case 4:
money=1500;
break;
case 5:
money=2000;
break;
case 6:
money=5000;
break;
case 7:{
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println("请输入取款金额");
money=input.nextInt();
}
break;
case 8:{mmaaiinn();}break;
case 9:{jiemian();}break;
default:
System.out.println("*******************************");
System.out.println("Wrong number!");
break;
}
if(money>0){
if(money<=accountbalance){
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println(" 当前账户取款操作"+money+"元成功");
accountbalance=accountbalance-money;
System.out.println(" 当前账户余额为"+accountbalance+"元");
InputStream is = new FileInputStream("accountinformation.txt");
Scanner ss = new Scanner(is,"UTF-8");
File f2 = new File("account.txt");
FileWriter fw2 = new FileWriter(f2);
PrintWriter pw2 = new PrintWriter(fw2);
while(ss.hasNext()){
String line = ss.nextLine();
String[] txt = line.split(",");
String id = txt[0];
if(id.equals(accountID)){
pw2.println(id+","+accountpassword+","+accountbalance);
}
else{
pw2.println(line);
}}
pw2.close();
is = new FileInputStream("account.txt");
ss = new Scanner(is,"UTF-8");
File f = new File("accountinformation.txt");
fw2 = new FileWriter(f);
PrintWriter w = new PrintWriter(fw2);
while (ss.hasNext()) {
String lin = ss.nextLine();
w.println(lin);
}
w.close();
f=new File("accountlist.txt");
FileWriter fw = new FileWriter(f,true);
PrintWriter pw=new PrintWriter(fw);
pw.println(accountID+",take out"+money+"RMB");
pw.close();
fw.close();
}else{
System.out.println("账户余额不足");
}
}
input.close();
}
public void zhuanzhang()throws IOException{
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println(" 请输入转账用户");
int t=0;
Scanner input = new Scanner(System.in,"UTF-8");
String id=input.nextLine();
InputStream is = new FileInputStream("accountinformation.txt");
Scanner ss = new Scanner(is,"UTF-8");
while(ss.hasNext()){
String line = ss.nextLine();
String[] txt = line.split(",");
String idd = txt[0];
if(idd.equals(id)){
t=-1;
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println(" 请输入转账金额");
int money=input.nextInt();
if(money<=accountbalance){
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println(" 请确认是否向"+idd+"转账"+money+"元");
String s=input.next();
if(s.equals("Y")){
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println(" 当前账户向"+idd+"成功转账"+money+"元");
System.out.println(" 当前账户余额为"+(accountbalance-money)+"元");
File f2 = new File("account.txt");
FileWriter fw2 = new FileWriter(f2);
PrintWriter pw2 = new PrintWriter(fw2);
InputStream iis = new FileInputStream("accountinformation.txt");
Scanner sss = new Scanner(iis,"UTF-8");
f2 = new File("account.txt");
fw2 = new FileWriter(f2);
pw2 = new PrintWriter(fw2);
while(sss.hasNext()){
line = sss.nextLine();
txt = line.split(",");
if(txt[0].equals(accountID)||txt[0].equals(idd)){
if(txt[0].equals(idd)){
pw2.println(idd+","+txt[1]+","+(money+Integer.valueOf(txt[2])));
}
else{
pw2.println(accountID+","+accountpassword+","+(accountbalance-money));
}
}
else{
pw2.println(line);
}}
pw2.close();
is = new FileInputStream("account.txt");
ss = new Scanner(is,"UTF-8");
File f = new File("accountinformation.txt");
fw2 = new FileWriter(f);
PrintWriter w = new PrintWriter(fw2);
while (ss.hasNext()) {
String lin = ss.nextLine();
w.println(lin);
}
w.close();
f=new File("accountlist.txt");
FileWriter fw = new FileWriter(f,true);
PrintWriter pw=new PrintWriter(fw);
pw.println(accountID+",take "+money+"RMB to"+idd);
pw.close();
fw.close();
}else if(s.equals("N")){
jiemian();
}
}else{
System.out.println("账户余额不足");
}
}
}if(t!=-1){
System.out.println("该账户不存在");
}
}
public void xiugai()throws IOException{
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println("请输入当前密码");
Scanner input = new Scanner(System.in,"UTF-8");
String ma=input.nextLine();
if(ma.equals(accountpassword)){
System.out.println("请输入修改密码");
String ma1=input.nextLine();
System.out.println("请输入确认密码");
String ma2=input.nextLine();
if(ma1.equals(ma2)){
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println("当前账户密码修改成功");
File f2 = new File("account.txt");
FileWriter fw2 = new FileWriter(f2);
PrintWriter pw2 = new PrintWriter(fw2);
InputStream is = new FileInputStream("accountinformation.txt");
Scanner ss = new Scanner(is,"UTF-8");
while(ss.hasNext()){
String lin = ss.nextLine();
String txt[] = lin.split(",");
if(txt[0].equals(accountID)){
pw2.println(txt[0]+","+ma2+","+txt[2]);
}
else{
pw2.println(lin);
}
}
pw2.close();
is = new FileInputStream("account.txt");
ss = new Scanner(is,"UTF-8");
File f = new File("accountinformation.txt");
fw2 = new FileWriter(f);
PrintWriter w = new PrintWriter(fw2);
while (ss.hasNext()) {
String lin = ss.nextLine();
w.println(lin);
}
w.close();
f=new File("accountlist.txt");
FileWriter fw = new FileWriter(f,true);
PrintWriter pw=new PrintWriter(fw);
pw.println(accountID+",change password into"+ma2);
pw.close();
fw.close();
}else{
xiugai();
}
}else{
System.out.println("密码输入错误");
xiugai();
}
}
public void chaxun()throws IOException{
System.out.println("*******************************");
System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
System.out.println("*******************************");
System.out.println("当前账户余额为"+accountbalance+"元");
InputStream is = new FileInputStream("accountlist.txt");
Scanner ss = new Scanner(is,"UTF-8");
int x=0;
while(ss.hasNext()){
String line = ss.nextLine();
String[] txt = line.split(",");
if(txt[0].equals(accountID)){
x++;
System.out.println(x+"."+txt[1]);
}
}
}
}