• 模拟银行ATM系统(基础版)


    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;}
    }
    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;
      }
     }
      }
    }
    编后感想:
    第一次使用java高级程序语言编写这样系统性的程序,最大的感受就是写不完!当然也有许多的收获:第一,要注意编写注释,即使是自己看自己的代码,经过几天之后都有可能会看不懂,所以一定要注意写注释,虽然你可能觉得会有一点浪费时间,但以后的好处就能显示出来,增加代码的可读性,也显得条理清晰,自己也有继续写下去的信心;第二,因为这种系统性的程序一般都会比较庞大,所以模块化就显得相当的重要;先通读题目要求然后在心里分成几个部分;逐步进行编写,这样既可以更容易地找出自己此部分中存在的bug,然后进行改正;也可以使得得分最大化。第三,可以合理构造函数,从而简化代码程序,比如该程序中的a()函数,因为在每个模块当中都有片头部分而且相同,所以我们就可以构造这样一个函数,不用在每回都把代码复制一遍,直接调用函数即可;第四,尽量简化主函数,实现类的封装;调用类中的函数,简便易懂,给人一种清晰地感觉。
  • 相关阅读:
    计算机中的二进制运算
    面试题14:剪绳子
    面试题13:机器人的运动范围
    面试题12:矩阵中的路径
    面试题11:旋转数组的最小数字
    面试题10_2:跳台阶
    面试题10:斐波那契数列
    HDU 2202 最大三角形(凸包)
    刚装的系统C盘占空间特别大怎么办?关闭win7的系统还原和调整虚拟内存
    POJ 1113 Wall (凸包)
  • 原文地址:https://www.cnblogs.com/mawangwang/p/9697249.html
Copyright © 2020-2023  润新知