zoukankan      html  css  js  c++  java
  • 第一次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;
    }
    }
    }
    

      

  • 相关阅读:
    js showModalDialog参数传递
    1:N 关系
    1:N 关系 视图查找
    设置IE主页和添加收藏夹的功能
    GridView和DataFormatString网站技术
    JS 的table属性操作,
    GridView帮定数据显示数据的技巧
    后台取相同name值的问题
    赶集网CEO杨浩涌:倒闭没那么容易
    用户数据泄露案告破:嫌疑人已抓 CSDN受到警告
  • 原文地址:https://www.cnblogs.com/yeshenfeng/p/9697381.html
Copyright © 2011-2022 走看看