第一次Java测试及感触(2018.9.20)

 在本周周四进行了java测试,有一点感触,测试的题目是用Java实现一个ATM机的管理系统。之前老师提前给我们样卷,结果考试的时候换了题型,瞬间脑子空白,一时不知道怎么下手,因为暑假虽然涉猎了java,但是没有深入系统地进行学习,导致了对很多知识一知半解,遇到很多问题束手无策。经过三个钟头的挣扎,只完成了一小部分的代码,只有简单的set()get()函数,以及简单的输出界面,能够输出ATM的初始界面,能够输入银行卡号,数据库也只是建立了一个大概。

后来在课后又对代码进行了断断续续的修改,对从网上找来的数据库代码段进行了较大修改,然后简单的补了其他部分的程序。

通过这次测试,我明白了初学者离熟练编写代码还有一段很长的距离,基本数据类型、数组、程序控制语句等都得在练习中熟悉,在之后的几天内,得知有人已经编出了图形窗口界面(为了简便起见我并没有往这方面想),便突然有了斗志,成长路上有这样全心向前的战友相信对我的正面帮助会很大。

以后每天要抽出时间进行代码习题的练习,熟能生巧,同时也要多读相关书籍,争取能在期末考试得到自己想要的结果。

account类

package zuoye;

//信1705-3 20173526 赵剑峰

import java.io.IOException;
import java.io.Serializable;
import java.util.Scanner;
import java.util.ArrayList;

public class Account implements Serializable
{
private String accountID;//账户
private String accountname;//姓名
private String operatedate;//时间
private int operatetype;//操作类型
private String accountpassword;//密码
private int accountbalance;//余额
private int amount;//流水金额
public String getaccountID()
{
return accountID;
}
public String getaccountname()
{
return accountname;
}
public String getoperatedate()
{
return operatedate;
}
public int getoperatetype()
{
return operatetype;
}
public String getaccountpassword()
{
return accountpassword;
}
public int getaccountbalance()
{
return accountbalance;
}
public int getamount()
{
return amount;
}
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 setoperatetype(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;
}
public 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;
}
public Account(){}
public String tostring() {
return "id="+accountID+",accountname="+accountname+",accountpassword="+accountpassword+",accountbalance="+accountbalance;
}
public String tostring1() {
return "id="+accountID+",accountname="+accountname+",operatedate="+operatedate+",operatetype="+operatetype+",aamount="+amount;
}
public static void main(String[] args) throws IOException
{
AccountManager a=new AccountManager();
ArrayList<Account> people=new ArrayList<Account>();
ArrayList<Account> list=new ArrayList<Account>();

a.show(people); 
a.enterID(people,list);
}
}

 AccountManager类

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Date;
public class AccountManager {
public void addAccount(ArrayList<Account> people)
{
Scanner in = new Scanner(System.in);
Account ac=new Account();
System.out.println("请输入账户的账号、名称、密码、账户余额");
String accountID=in.next();
String accountname=in.next();
String accountpassword=in.next();
int accountbalance=in.nextInt();
ac.setaccountID(accountID);
ac.setaccountname(accountname);
ac.setaccountpassword(accountpassword);
ac.setaccountbalance(accountbalance);
people.add(ac);
File file = new File("accountinformation.txt");
// 对象输出流
ObjectOutputStream out = null;
try {
// 将数组对象写入文件
out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(people);
out.flush();
out.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} 
}
public void show(ArrayList<Account> people)
{
File file = new File("accountinformation.txt");
ObjectInputStream in = null;
try {
in = new ObjectInputStream(new FileInputStream(file));
people = (ArrayList<Account>) in.readObject();
for (int i=0;i<people.size();i++) {
Account s=people.get(i);
System.out.println(s.tostring());
}

}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void enterID(ArrayList<Account> people,ArrayList<Account> list)
{
int a=1;
int flag=-1;
while(a==1) {
System.out.println("**************************************************");
System.out.println(" 欢迎使用中国工商银行自动柜员系统");
System.out.println("请输入您的账号:");
Scanner in = new Scanner(System.in);
String ID=in.next();
if(ID.length()!=8)
{
System.out.println("该卡不是工行卡");
a=1;
}
File file = new File("accountinformation.txt");
ObjectInputStream oin = null;
try {
oin = new ObjectInputStream(new FileInputStream(file));
people = (ArrayList<Account>) oin.readObject();
for (int i=0;i<people.size();i++) {
Account s=people.get(i);
if(s.getaccountID().equals(ID))
{
flag=i;a=1;
}
}
if(flag==-1)
{
System.out.println("该账号不存在");
}
else
{
a=2;
}

}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
enterpassword(people,flag,list);
}
public void enterpassword(ArrayList<Account> people,int i,ArrayList<Account> list)
{
System.out.println("**************************************************");
System.out.println(" 欢迎使用中国工商银行自动柜员系统");
System.out.println("请输入您的密码:");
Account s=new Account();
File file = new File("accountinformation.txt");
ObjectInputStream oin = null;
try {
oin = new ObjectInputStream(new FileInputStream(file));
people = (ArrayList<Account>) oin.readObject();
s=people.get(i);
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
for(int j=0;j<3;j++)
{
Scanner in = new Scanner(System.in);
String password=in.next();
if(s.getaccountpassword().equals(password))
{
enter(s.getaccountID(),people,list);
}
else
System.out.println("密码录入错误");
}
System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");
}
public void enter(String a,ArrayList<Account> people,ArrayList<Account> list)
{
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"使用中国工商银行自助柜员系统");
System.out.println("1、存款;");
System.out.println("2、取款;");
System.out.println("3、转账汇款;");
System.out.println("4、修改密码;");
System.out.println("5、查询余额;");
System.out.println("请输入选择:");
Scanner in = new Scanner(System.in);
int operatetype=in.nextInt();
switch(operatetype) {
case 1:deposit(a,people,list);break;
case 2:withdrawal(a,people,list);break;
case 3:transfer(a,people,list);break;
case 4:alter(a,people,list);break;
case 5:seclect(a,people,list);break;
}
}
public void deposit(String a,ArrayList<Account> people,ArrayList<Account> list)
{
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("请输入存款金额:");
Scanner in = new Scanner(System.in);
String money=in.next();
int flag=0;
if(money=="q")
{
enterID(people,list);
}
int num=Integer.valueOf(money);
File file = new File("accountinformation.txt");
ObjectInputStream oin = null;
try {
oin = new ObjectInputStream(new FileInputStream(file));
people = (ArrayList<Account>) oin.readObject();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Account ac=new Account();
for(int i=0;i<people.size();i++)
{
ac=people.get(i);
if(ac.getaccountID().equals(a))
{
flag=i;
break;
}
}
ac.setaccountbalance(ac.getaccountbalance()+num);
people.set(flag,ac);
System.out.println("当前账户存款操作成功。");
System.out.println("当前账户余额为:"+ac.getaccountbalance());
int operatetype=1;
ac.setoperatetype(operatetype);
ac.setamount(num);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateNowStr = sdf.format(date); 
ac.setoperatedate(dateNowStr);
list.add(ac);
File file1 = new File("accountlist.txt");
// 对象输出流
ObjectOutputStream out = null;
ObjectOutputStream out1 = null;
try {
out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(people);
out.flush();
out.close();
// 将数组对象写入文件
out1 = new ObjectOutputStream(new FileOutputStream(file1));
out1.writeObject(list);
out1.flush();
out1.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("1、返回输入账户界面");
System.out.println("2、返回操作界面");
int i=in.nextInt();
switch(i)
{
case 1:enterID(people,list);break;
case 2:enter(a,people,list);break;
}
}
public void withdrawal(String a,ArrayList<Account> people,ArrayList<Account> list)
{
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
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 in = new Scanner(System.in);
int x=in.nextInt();
int flag = 0;
int money = 0;
switch(x)
{
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 8:enterID(people,list);break;
case 9:enter(a,people,list);break;
}
if(x==7)
{
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("******************************************************");
System.out.println("请输入取款金额:");
money=in.nextInt();
}
File file = new File("accountinformation.txt");
ObjectInputStream oin = null;
try {
oin = new ObjectInputStream(new FileInputStream(file));
people = (ArrayList<Account>) oin.readObject();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Account ac=new Account();
for(int i=0;i<people.size();i++)
{
ac=people.get(i);
if(ac.getaccountID().equals(a))
{
flag=i;
break;
}
}
if(ac.getaccountbalance()<money)
{
System.out.println("账户余额不足");
}
else
{
ac.setaccountbalance(ac.getaccountbalance()-money);
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("当前账户取款操作"+money+"元成功。");
System.out.println("当前账户余额为:"+ac.getaccountbalance()+"元成功。");
}
int operatetype=2;
ac.setoperatetype(operatetype);
ac.setamount(money);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
String dateNowStr = sdf.format(date); 
ac.setoperatedate(dateNowStr);
list.add(ac);
people.set(flag, ac);
File file1 = new File("accountlist.txt");
ObjectOutputStream out = null;
ObjectOutputStream out1 = null;
try {
out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(people);
out.flush();
out.close();
// 将数组对象写入文件
out1 = new ObjectOutputStream(new FileOutputStream(file1));
out1.writeObject(list);
out1.flush();
out1.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("1、返回输入账户界面");
System.out.println("2、返回操作界面");
int i=in.nextInt();
switch(i)
{
case 1:enterID(people,list);break;
case 2:enter(a,people,list);break;
}
}
public void transfer(String a,ArrayList<Account> people,ArrayList<Account> list)
{
int flag=0;
int money=0;
Account ab=new Account();
Scanner in = new Scanner(System.in);
File file = new File("accountinformation.txt");
ObjectInputStream oin = null;
try {
oin = new ObjectInputStream(new FileInputStream(file));
people = (ArrayList<Account>) oin.readObject();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Account ac=new Account();
for(int i=0;i<people.size();i++)
{
ac=people.get(i);
if(ac.getaccountID().equals(a))
{
flag=i;
break;
}

}
int num=0;
int leap=-1;
while(num==0)
{
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("******************************************************");
System.out.println("请输入转账账户:");
String b=in.next();
for(int i=0;i<people.size();i++)
{
int j=0;
ab=people.get(i);
if(ab.getaccountID().equals(b))
{
leap=i;
num=1;
break;
}
else
{
num=0;
}
}
if(num==0)
{
System.out.println("该账户不存在");
}
if(num==1)
{
int num2=0;
while(num2==0)
{
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("******************************************************");
System.out.println("请输入转账金额:");
money=in.nextInt();
if(ac.getaccountbalance()<money)
{
System.out.println("户余额不足");
System.out.println("您当前的余额为"+ac.getaccountbalance()+"元");
}
if(ac.getaccountbalance()>=money)
{
num2=1;
}
}
String name=ab.getaccountname();
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("******************************************************");
System.out.println("请确认是否向"+name+"转账"+money+"元");
System.out.println("确认请按Y,否请按N");
String x=in.next();
if(x.equals("X"))
{
enter(a,people,list);
}
if(x.equals("Y"))
{
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("******************************************************");
System.out.println("成功向"+name+"转账"+money+"元");
ac.setaccountbalance(ac.getaccountbalance()-money);
ab.setaccountbalance(ab.getaccountbalance()+money);
System.out.println("当前账户余额为:"+ac.getaccountbalance());
num=1;
}
}
}
people.set(flag, ac);
people.set(leap, ab);
int operatetype=3;
ac.setoperatetype(operatetype);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
String dateNowStr = sdf.format(date); 
ac.setoperatedate(dateNowStr);
ac.setamount(money);
list.add(ac);
File file1 = new File("accountlist.txt");
ObjectOutputStream out = null;
ObjectOutputStream out1 = null;
try {
out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(people);
out.flush();
out.close();
// 将数组对象写入文件
out1 = new ObjectOutputStream(new FileOutputStream(file1));
out1.writeObject(list);
out1.flush();
out1.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("1、返回输入账户界面");
System.out.println("2、返回操作界面");
int i=in.nextInt();
switch(i)
{
case 1:enterID(people,list);break;
case 2:enter(a,people,list);break;
}
}
public void alter(String a,ArrayList<Account> people,ArrayList<Account> list)
{
int flag=0;
Scanner in = new Scanner(System.in);
File file = new File("accountinformation.txt");
ObjectInputStream oin = null;
try {
oin = new ObjectInputStream(new FileInputStream(file));
people = (ArrayList<Account>) oin.readObject();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Account ac=new Account();
for(int i=0;i<people.size();i++)
{
ac=people.get(i);
if(ac.getaccountID().equals(a))
{
flag=i;
break;
}

}
int num=0;
while(num==0)
{
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println(" 请输入当前密码:");
String pass=in.next();
if(ac.getaccountpassword().equals(pass))
{
num=1;
}
if(num==0)
System.out.println(" 当前密码录入错误");
if(num==1)
{
System.out.println(" 请输入修改密码:");
String n1=in.next();
System.out.println(" 请输入确认密码:");
String n2=in.next();
if(n1.equals(n2))
{
num=1;
ac.setaccountpassword(n1);
}
else
{
num=0;
System.out.println(" 修改密码与确认密码不一致");
}
}
}
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("当前账户密码修改成功");
people.set(flag, ac);
/*int operatetype=4;
ac.setoperatetype(operatetype);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
String dateNowStr = sdf.format(date); 
ac.setoperatedate(dateNowStr);
list.add(ac);*/
File file1 = new File("accountlist.txt");
ObjectOutputStream out = null;
ObjectOutputStream out1 = null;
try {
out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(people);
out.flush();
out.close();
// 将数组对象写入文件
out1 = new ObjectOutputStream(new FileOutputStream(file1));
out1.writeObject(list);
out1.flush();
out1.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("1、返回输入账户界面");
System.out.println("2、返回操作界面");
int i=in.nextInt();
switch(i)
{
case 1:enterID(people,list);break;
case 2:enter(a,people,list);break;
}
}
public void seclect(String a,ArrayList<Account> people,ArrayList<Account> list)
{
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("******************************************************");
Scanner in = new Scanner(System.in);
File file = new File("accountinformation.txt");
ObjectInputStream oin = null;
try {
oin = new ObjectInputStream(new FileInputStream(file));
people = (ArrayList<Account>) oin.readObject();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Account ac=new Account();
for(int i=0;i<people.size();i++)
{
ac=people.get(i);
if(ac.getaccountID().equals(a))
{
break;
}

}
System.out.println("当前账户余额为:"+ac.getaccountbalance()+"元");
System.out.println("账户清单信息为:");
File file1 = new File("accountlist.txt");
ObjectInputStream oon = null;
try {
oon = new ObjectInputStream(new FileInputStream(file1));
list = (ArrayList<Account>) oon.readObject();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Account ab=new Account();
for(int i=0;i<list.size();i++)
{
ab=list.get(i);
if(ab.getaccountID().equals(a))
{
String op = null;
if(ab.getoperatetype()==1)
op="存款";
if(ab.getoperatetype()==2)
op="取款";
if(ab.getoperatetype()==3)
op="转账汇款";
System.out.println(""+ab.getoperatedate()+" "+op+" "+ab.getamount());
}

}
System.out.println("******************************************************");
System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统");
System.out.println("1、返回输入账户界面");
System.out.println("2、返回操作界面");
int i=in.nextInt();
switch(i)
{
case 1:enterID(people,list);break;
case 2:enter(a,people,list);break;
}
}
}

  

posted @ 2018-09-24 23:54  夜神风  阅读(184)  评论(1编辑  收藏  举报