zoukankan      html  css  js  c++  java
  • 课前测试总结

    今日下午进行了java课前测试,时间2:30到5:30,共三小时,完成模拟ATM用户登录,存款,取款,转账,密码修改,

    操作记录与用户信息的存储以及用户信息的修改等操作。

    要实现登录界面,密码输入界面,系统界面之间的相互跳转。

    三小时中我并没有完成任务,只是勉强将各功能的函数写出来,并没有完全实现界面的跳转,对于界面的跳转没有好的实现方法,

    想用flag记录函数的返回值来判断跳转的界面,但效果并不理想。

    package ATMtest;
    
    public class Account {
    private String accountID;
    private String accountname;
    private String operatedate;
    private int operateype;
    private String accountpassword;
    private int accountbalance;
    private int amount;
    public String getAccountID() {
    return accountID;
    }
    public void setAccountID(String accountID) {
    this.accountID = accountID;
    }
    public String getAccountname() {
    return accountname;
    }
    public void setAccountname(String accountname) {
    this.accountname = accountname;
    }
    public String getOperatedate() {
    return operatedate;
    }
    public void setOperatedate(String operatedate) {
    this.operatedate = operatedate;
    }
    public int getOperateype() {
    return operateype;
    }
    public void setOperateype(int operateype) {
    this.operateype = operateype;
    }
    public String getAccountpassword() {
    return accountpassword;
    }
    public void setAccountpassword(String accountpassword) {
    this.accountpassword = accountpassword;
    }
    public int getAccountbalance() {
    return accountbalance;
    }
    public void setAccountbalance(int accountbalance) {
    this.accountbalance = accountbalance;
    }
    public int getAmount() {
    return amount;
    }
    public void setAmount(int amount) {
    this.amount = amount;
    }
    }

    基本的类的定义,为了数据安全,成员变量定义为私有类型。利用set,get函数实现对于数据成员的相关操作。

    为了节约时间可以用eclipse的自动生成函数功能。

    //信1905-1班20194073李楠石家庄铁道大学
    package ATMtest;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
    public class AccountManager {
    
    public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    Account[] acc=new Account[30];
    int x=0;
    File file=new File("accountinformation.txt");
    BufferedReader br=new BufferedReader(new FileReader(file));
    String str;
    while((str=br.readLine())!=null)
    {
    acc[x]=new Account();
    String[] Str=str.split(" ");
    acc[x].setAccountID(Str[0]);
    acc[x].setAccountname(Str[1]);
    acc[x].setAccountpassword(Str[2]);
    acc[x].setAccountbalance(Integer.parseInt(Str[3]));
    x++;
    }
    br.close();
    int X=x;
    x=0;
    String[] Jilu=new String[100];
    int[] i=new int[2];
    int j=0;
    Account Acc=new Account();
    Account Acc2=new Account();
    int flag1=0,flag2=0,flag3=0;
    for(;flag1!=1;)
    {
    flag1=firstJM(Acc);
    }
    int I;
    if(flag1==1)
    {
    for(I=0;flag2==0&&I<=3;I++)
    {
    flag2=mimaInput(Acc);
    }
    }
    else
    {
    System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");
    }
    if(flag2==1)
    {
    for(;;)
    {
    flag3=zhujieMian(Acc);
    int Flag3=0;
    switch(flag3)
    {
    case 1:
    Flag3=cunKuan(Acc,i,Jilu);break;
    case 2:
    Flag3=quKuan(Acc,Jilu,i);break;
    case 3:
    Flag3=zhuanZhang(Acc,Acc2,i,Jilu);break;
    case 4:
    Flag3=xiuMima(Acc);break;
    case 5:
    chaYue(Acc);break;
    case 6:
    break;
    }
    if(flag3==6||Flag3==8)
    {
    for(int l=0;l<30;l++)
    {
    if(acc[l].getAccountID().equals(Acc.getAccountID()))
    {
    acc[l].setAccountID(Acc.getAccountID());
    acc[l].setAccountname(Acc.getAccountname());
    acc[l].setAccountpassword(Acc.getAccountpassword());
    acc[l].setAccountbalance(Acc.getAccountbalance());
    break;
    }
    }
    x=0;
    for(int L=0;L<100;L++)
    {
    if(Acc2.getAccountID()!=null)
    {
    if(acc[L].getAccountID().equals(Acc2.getAccountID()))
    {
    acc[L].setAccountID(Acc2.getAccountID());
    acc[L].setAccountname(Acc2.getAccountname());
    acc[L].setAccountpassword(Acc2.getAccountpassword());
    acc[L].setAccountbalance(Acc2.getAccountbalance());
    break;
    }
    
    }
    }
    File file2=new File("accountlist.txt");
    BufferedWriter bw1=new BufferedWriter(new FileWriter(file));
    BufferedWriter bw2=new BufferedWriter(new FileWriter(file2,true));
    for(int Y=0;Y<X;Y++)
    {
    String str1=acc[Y].getAccountbalance()+"";
    String Str1=acc[Y].getAccountID()+" "+acc[Y].getAccountname()+" "+
    acc[Y].getAccountpassword()+" "+str1;
    bw1.write(Str1);
    bw1.newLine();
    bw1.flush();
    }
    bw1.close();
    for(int Y=0;Jilu[Y]!=null;Y++)
    {
    bw2.write(Jilu[Y]);
    bw2.newLine();
    bw2.flush();
    }
    bw2.close();
    break;
    }
    }
    }
    }
    public static void jiemian() {
    System.out.println("\n********************"
    + "*************************");
    System.out.println(" "
    + "欢迎使用中国工商银行自动柜员系统");
    System.out.println("********************"
    + "*************************");
    }
    public static int firstJM(Account Acc) throws IOException
    {
    jiemian();
    System.out.println(" "+ 
    "请输入您的账号:");
    String accountID;
    Scanner sc=new Scanner(System.in);
    accountID=sc.nextLine();
    if(accountID.length()!=8) {
    System.out.println("该卡不是工行卡");
    return 0;
    }
    else
    {
    File file=new File("accountinformation.txt");
    BufferedReader br=new BufferedReader(new FileReader(file));
    String str;
    int flag=0;
    while((str=br.readLine())!=null)
    {
    String[] Str=str.split(" ");
    if(Str[0].equals(accountID))
    {
    flag=1;
    Acc.setAccountID(accountID);
    Acc.setAccountname(Str[1]);
    Acc.setAccountpassword(Str[2]);
    Acc.setAccountbalance(Integer.parseInt(Str[3]));
    }
    }
    br.close();
    if(flag==1)
    {
    return 1;
    }
    else
    {
    System.out.println("该账号不存在");
    return 0;
    }
    }
    }
    public static int mimaInput(Account Acc)
    {
    Scanner sc=new Scanner(System.in);
    jiemian();
    System.out.println("请输入您的密码:");
    String str;
    str=sc.nextLine();
    if(str.equals(Acc.getAccountpassword()))
    {
    System.out.println("密码输入成功,系统跳转到主界面。");
    return 1;
    }
    else
    {
    System.out.println("密码错误!");
    return 0;
    }
    }
    public static int zhujieMian(Account Acc)
    {
    jiemian();
    System.out.println("1.存款");
    System.out.println("2.取款");
    System.out.println("3.转账汇款");
    System.out.println("4.修改密码");
    System.out.println("5.查询余额");
    System.out.println("6.退卡");
    int n=0;
    Scanner sc=new Scanner(System.in);
    n=sc.nextInt();
    return n;
    }
    public static int cunKuan(Account Acc,int[] i,String[] jilu)
    {
    jiemian();
    System.out.println("请输入存款金额;");
    int n;
    Scanner sc=new Scanner(System.in);
    n=sc.nextInt();
    if(n<=0)
    {
    System.out.println("输入金额有误,返回系统界面;输入字母“q”");
    String str;
    str=sc.next();
    if(str.equals("q"))
    {
    return 0;
    }
    else
    {
    return -1;
    }
    }
    else
    {
    jiemian();
    System.out.println("当前账户存款操作成功。");
    Acc.setAccountbalance(Acc.getAccountbalance()+n);
    System.out.println("当前账户余额为:"+Acc.getAccountbalance()+"元");
    String str2=n+"";
    jilu[i[0]]=Acc.getAccountname()+" "+"+"+" "+str2;
    i[0]++;
    return 1;
    }
    }
    public static int quKuan(Account Acc,String[] jilu,int[] i)
    {
    jiemian();
    System.out.println("当前账户每日可以支取"+Acc.getAccountbalance()+"万元");
    System.out.println("1.100元\n"+"2.500元\n"+"3.1000元\n"+"4.1500元\n"+
    "5.2000元\n"+"6.5000元\n"+"7.其他金额\n"+"8.退卡\n"+"9.返回");
    int n;
    Scanner sc=new Scanner(System.in);
    n=sc.nextInt();
    int flag=0;
    if(n>=1&&n<=6)
    {
    switch(n)
    {
    case 1:
    if(Acc.getAccountbalance()>=100) flag=100;break;
    case 2:
    if(Acc.getAccountbalance()>=500) flag=500;break;
    case 3:
    if(Acc.getAccountbalance()>=1000) flag=1000;break;
    case 4:
    if(Acc.getAccountbalance()>=1500) flag=1500;break;
    case 5:
    if(Acc.getAccountbalance()>=2000) flag=2000;break;
    case 6:
    if(Acc.getAccountbalance()>=5000) flag=5000;break;
    }
    if(flag==0)
    {
    System.out.println("余额不足,请输入9返回");
    int N;
    N=sc.nextInt();
    return 9;
    }
    else
    {
    jiemian();
    System.out.println("当前账户取款操作"+flag+"元成功");
    Acc.setAccountbalance(Acc.getAccountbalance()-flag);
    System.out.println("当前账户余额为:"+Acc.getAccountbalance()+"元");
    String str2=flag+"";
    jilu[i[0]]=Acc.getAccountname()+" "+"-"+" "+str2;
    i[0]++;return 1;
    }
    }
    else
    {
    if(n==7)
    {
    jiemian();
    System.out.println("请输入取款金额:");
    int N;
    N=sc.nextInt();
    if(Acc.getAccountbalance()>=N)
    {
    jiemian();
    System.out.println("当前账户取款操作"+N+"元成功");
    Acc.setAccountbalance(Acc.getAccountbalance()-N);
    System.out.println("当前账户余额为:"+Acc.getAccountbalance()+"元");
    String str2=N+"";
    jilu[i[0]]=Acc.getAccountname()+" "+"-"+" "+str2;
    i[0]++;return 1;
    }
    else
    {
    System.out.println("余额不足,已返回系统主页面");
    return 9;
    }
    }
    else
    {
    if(n==8)
    {
    return 8;
    }
    else
    {
    return 9;
    }
    }
    }
    }
    public static int zhuanZhang(Account Acc,Account Acc2,int[] i,String[] jilu) throws IOException
    {
    Scanner sc=new Scanner(System.in);
    jiemian();
    System.out.println("请输入转账账户:");
    String accountID;
    accountID=sc.nextLine();
    File file=new File("accountinformation.txt");
    BufferedReader br=new BufferedReader(new FileReader(file));
    String str;
    int flag=0;
    while((str=br.readLine())!=null)
    {
    String[] Str=str.split(" ");
    if(Str[0].equals(accountID))
    {
    flag=1;
    Acc2.setAccountID(accountID);
    Acc2.setAccountname(Str[1]);
    Acc2.setAccountpassword(Str[2]);
    Acc2.setAccountbalance(Integer.parseInt(Str[3]));
    }
    }
    br.close();
    if(flag==1)
    {
    jiemian();
    System.out.println("请输入转账金额:");
    int n;
    n=sc.nextInt();
    if(Acc.getAccountbalance()>=n)
    {
    jiemian();
    System.out.println("请确认是否向"+Acc2.getAccountname()+"转账"+n+"元。");
    String str2;
    str2=sc.next();
    if(str2.equals("N"))
    {
    return 0;
    }
    else
    {
    String Str1=n+"";
    jilu[i[0]]=Acc.getAccountname()+" "+"-"+" "+Str1;
    i[0]++;
    jilu[i[0]]=Acc2.getAccountname()+" "+"+"+" "+Str1;
    i[0]++;
    jiemian();
    Acc.setAccountbalance(Acc.getAccountbalance()-n);
    Acc2.setAccountbalance(Acc2.getAccountbalance()+n);
    System.out.println("当前账户向"+Acc2.getAccountname()+"成功转账"+n+"元。");
    System.out.println("当前账户余额为:"+Acc.getAccountbalance()+"元");
    return 1;
    }
    }
    else
    {
    System.out.println("余额不足");
    return 0;
    }
    }
    else
    {
    System.out.println("该账户不存在");
    return 0;
    }
    }
    public static int xiuMima(Account Acc)
    {
    jiemian();
    System.out.println("请输入当前密码:");
    String str1;
    Scanner sc=new Scanner(System.in);
    str1=sc.nextLine();
    if(str1.equals(Acc.getAccountpassword()))
    {
    System.out.println("请输入修改密码:");
    String str2;
    str2=sc.nextLine();
    System.out.println("请输入确定密码:");
    String str3;
    str3=sc.nextLine();
    if(str3.equals(str2))
    {
    System.out.println("密码修改成功");
    return 1;
    }
    else
    {
    return 0;
    }
    }
    else
    {
    return 0;
    }
    }
    public static void chaYue(Account Acc) throws IOException
    {
    jiemian();
    System.out.println("当前账户余额为:"+Acc.getAccountbalance()+"元");
    File file3=new File("accountlist.txt");
    BufferedReader br=new BufferedReader(new FileReader(file3));
    String str;
    while((str=br.readLine())!=null)
    {
    String[] Str=str.split(" ");
    if(Str[0].equals(Acc.getAccountname()))
    {
    System.out.println(str);
    }
    }
    br.close();
    }
    }

    对于页面的跳转,我将每个函数的返回值设置为Int,根据返回的不同数值,跳转不同的页面,1,0则表示成功,失败(存款,取款,转账等),

    利用flagj记录函数的返回值以进行跳转。

    对于系统的主界面则采用for循环来实现,同样是检测函数返回的数值判断是否结束循环,在结束循环时,将用户信息的变动,与操作记录等

    储存进相应的文件。

    存储格式是各信息之间用空格隔开,以便读取时,用String类的spli函数将各个信息分开,方便操作。

    各个功能的函数编写时,思路不是很清晰,对于题目的意思理解不清,代码混乱,冗长。虽然功能基本实现,但要修改时,已记不清编写时候的

    思路,修改困难。

    以下是运行结果截图

     

     

     

     

     

     

     课前测试中遇到了许多问题,1.首先拿到问题后,我就开始编程序,没有将试题通读一遍,导致遇到后面的功能现实时

    常常要改之前已经写完的功能,浪费了很多时间。

    2.没读清问题,没有静下心来理解题意,再加之考试有些紧张,一个功能的描述读好几遍也没明白,这里又浪费了时间。

    3.正如老师说的,我们最大的问题就是拿到问题就开始写,写完后在调试,结果不知道到底是哪里出错,要查好半天,

    应当写完一个功能就测试一个,然后再将功能连接到主函数中。

    4.这也是老师常提到的一个问题,我们写程序没有框架,框架搭建好了,程序就容易写了。

    今后将注重以上问题,先读清题目,在搭好框架,然后写完一个功能测试一个,争取在下一次课堂测试中取得一个好成绩。

  • 相关阅读:
    Js 作用域链
    JS 上下文模式
    javascript
    HTTP概念进阶
    JavaScript运行机制详解
    浅谈循环中setTimeout执行顺序问题
    Js 运行机制 (重点!!)
    javascript
    jQuery 知识点总结
    Educational Codeforces Round 87 (Rated for Div. 2)
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/13717574.html
Copyright © 2011-2022 走看看