本项目的主要功能是模拟银行的存取款业务,当用户登录时需判断银行卡号和银行卡密码,当输入的

卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1取款:2余额:3退出:0),输入数字1、2时,将进行存取款操作,此时需要输入存取的金额,并进行正确的金额加减计算;输入数字3时,显示当前账户的余额;输入数字0时将退出整个系统。其登陆后界面如下图所示:



涉及的知识点:面向对象,集合,io


二、项目需求分析通过项目简介中的要求,我们将项目的具体需实现的功能分析如下:

  1. 1)  首先要实现用户的登陆,判断卡号和密码。
  2. 2)  登陆成功后,提示四种可操作类型(存款:1、取款:2、余额:3、退出:0),输入相应类型数
    字,进入其对应功能。

3)  选择1,存款时输入金额后,要判断金额是否合理(输入金额不能小于0),合理显示存款成功,

不合理回到操作类型选择功能,让其从新选择操作。

4)  选择2,取款时输入相应金额后,也要进行金额是否合理判断,并且其取款金额不能大于账户余额,

如果大于账户余额,则提示“余额不足,取款失败!”,并回到操作类型选择功能。

5)  选择3,系统显示账户余额。

6)  选择0,退出系统,程序运行结束。




           


需要验证用户输入的银行卡号和银行卡密码,是否存在于银行系统中,如果是提示登录成功,否则提示登录失败,让用户重新登录。登录成功后,需根据提示的四种操作类型,输入相应的数字,对当前账户存款进行存取和查询余额操作。操作完成后,输入数字0将退出整个系统。

 

在这个程序中,我们分成两个类,一个是界面ATM类,一个是Account储存客户信息


ATM类

public class ATM {
    private static ArrayList<Account>  accounts=new ArrayList<Account>();

    private static Scanner scanner;  
//    private static boolean isLogin1 = false;  
//    private static boolean isLogin2 = false;  
    private static boolean isLogin = false;  
    public static void showMenu() {  
        System.out.println("请选择操作");  
        System.out.println("1.存钱");  
        System.out.println("2.取钱");  
        System.out.println("3.查询余额");  
        System.out.println("0.取卡");  
       
 
    }  
    public static void processMenu(int id, int command) {  //执行指定的命令
        switch (command) {  
        case 1:  
             System.out.println("请输入存入的钱数");  
               double depositMoney = scanner.nextDouble();  
               accounts.get(id).deposit(depositMoney);  
               break;  
//             double withdrawMoney = scanner.nextDouble();  
//             accounts.get(id).withDraw(withdrawMoney);  
//             break;  
//            System.out.println("您账户里的余额式" + accounts.get(id).getBalance());  
//            break;  
        case 2:  
            System.out.println("请输入取出的钱数");  
            double withdrawMoney = scanner.nextDouble();  
            accounts.get(id).withDraw(withdrawMoney);  
            break;  
        case 3:  
          System.out.println("您账户里的余额式" + accounts.get(id).getBalance());  
          break;  
        case 0:  
            isLogin = false;  
            System.out.println("取卡并退出");
            break;  
        default:  
            System.out.println("请输入正确的指令:");  
            break;
        }
        }  
      public static void welcome(){//一定要定义为静态方法
          System.out.println("************************************************");
           System.out.println("*************欢迎光临*************************");
           System.out.println("***********请插入银行卡进行操作************");
           System.out.println("*************************************************");
      }
        
    public static void main(String[] args) throws Exception {  
        // TODO Auto-generated method stub  
       
            Account acc1 = new Account(001, 100,100);  
            accounts.add(acc1);  
            Account acc2 = new Account(002, 200,150);  
            accounts.add(acc2);  
            Account acc3 = new Account(003, 300,200);  
            accounts.add(acc3);  
            Account acc4 = new Account(004, 400,250);  
            accounts.add(acc4);  
//    
          while(true) {
           ATM.welcome();
           scanner = new Scanner(System.in);  
            int id = scanner.nextInt();
//  
//            for (int i = 0; i < 3; i++) {
            for (Account acc : accounts) {  //检查账户和密码是否相符
                if ( id == acc.getId()) {  
//                    isLogin1 = true;   
                    System.out.println("请输入密码");
                    int password= scanner.nextInt();
                    if ( password == acc.getPassword()) {  //)&&(password==acc.password)
                        isLogin = true;   
                      break;
                }
                  
                }
//                else {
//                    System.out.println("请输入正确的账户");
//                }
                
            }
//                    else {
//                        System.out.println("请输入正确的密码");
//                    }
//                        
//                    //此处不能直接用acc.id 因为id 是私有变量
//                }  
//                else {
//                
//                     int id2= scanner.nextInt();
//                     break;
//                }
            //检测账号和密码是否正确
                
            
//            }//三次机会
            
            
            
            
            
            
//                else {
//                    System.out.println("请输入正确的ID");
//                     int id2 = scanner.nextInt();
//                   continue;
//                }
//            }
//                
//          System.out.println("请输入密码");
//         int password = scanner.nextInt();
       
//       
//      else {
//            System.out.println("请输入正确的ID");
//             int password2= scanner.nextInt();
//             break;
//        }
 
 
//          
//               
//       
//       
//     while (isLogin1==true||isLogin2==true)
//     {
//         isLogin=true;
//     }
         
            while (isLogin) {  
                showMenu();  
                scanner = new Scanner(System.in);  
                int command = scanner.nextInt();  
                processMenu(id, command);  
 
            }  
       


          }   
    }
    
    
}






再设置一个储存客户信息的,在这里我们用链表来引用 

     Account acc1 = new Account(001, 100,100);  
            accounts.add(acc1);  
            Account acc2 = new Account(002, 200,150);  
            accounts.add(acc2);  
            Account acc3 = new Account(003, 300,200);  
            accounts.add(acc3);  
            Account acc4 = new Account(004, 400,250);  
            accounts.add(acc4); 

Account.java 



import java.util.Date;

/**
 * ATM
 * @author mac
 *
 */
public class Account {
        int id;
        private int password;
        private double balance;
        
 
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        
        public double getBalance() {
            return balance;
        }
        public void setBalance(double balance) {
            this.balance = balance;
        }
    
    
        public Account() {
            // TODO Auto-generated constructor stub
        }
       
        public Account(int id, int password, double balance) {
            super();
            this.id = id;
            this.password = password;
            this.balance = balance;
        }
        
        public void withDraw(double money) {  
            balance -= money;  
        }  
      
        public void deposit(double money) {  
            balance += money;  
          
        }  
//        
        public int getPassword() {
            return password;
        }
        public void setPassword(int password) {
            this.password = password;
        }
       
        }

以上程序均为个人作业代码