开发者社区 问答 正文

如何实现用Java写一个模拟ATM机程序

如何用Java写一个模拟ATM机程序,有交互式的菜单完全没有思路,谁给我源码让我提供参考啊
screenshot

展开
收起
蛮大人123 2016-06-06 10:52:25 3416 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    /** 
         * 账户类; 
         * @author Administrator 
         * 
         */  
        public class Account {  
    
            private String name;  //用户名;  
            private int value;    //账户余额;  
    
            /** 
             * 存入金额; 
             * @param monery 
             */  
            public void putMonery(int monery){  
                this.value = this.value + monery;   
            }  
    
            /** 
             * 取出金额; 
             * @param monery 
             * @return 金额; 
             */  
            public int getMonery(int monery){  
    
                //判断是否账户余额是否大于 要取出的钱;  
                if(this.value > monery ){  
                    this.value = this.value - monery;     
                }else{  
                    monery = this.value;  //账户余额不够时,则取出,所有的账户余额的金额.   
                    this.value = 0;  
                }  
                //返回取出的钱;  
                return monery;  
            }  
    
            /** 
             * 查询余额; 
             * @return 返回账户余额; 
             */  
            public int search(){  
                return this.value;  
            }  
    
            public String getName() {  
                return name;  
            }  
            public void setName(String name) {  
                this.name = name;  
            }  
            public int getValue() {  
                return value;  
            }  
            public void setValue(int value) {  
                this.value = value;  
            }  
        }
    /** 
     * 取款线程类; 
     * @author Administrator 
     * 
     */  
    public class FetchMoney extends Thread implements Serializable{  
    
        private static final long serialVersionUID = -5059599151558445815L;  
    
        private Account account;  //账户对象;  
        private int monery;       //余额;  
    
        public FetchMoney(){  
            super();  
        }  
    
        public FetchMoney(int monery,Account account){  
            this.account = account;  
            this.monery = monery;  
        }  
    
        @Override  
        public void run() {  
            // TODO Auto-generated method stub  
            int currMonery  = account.search();  //当前余额;  
            synchronized (account) {  
                try {  
                    sleep(5);   //取款发费的时间;  
                } catch (InterruptedException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
                //取出余额;  
                int getMonery = account.getMonery(monery);  
                System.out.println("尊敬的"+account.getName()+"用户您好!"+"当前的余额为:"+currMonery +"元."+"取出余额为:"+getMonery+"元."+"账户余额为:"+account.search()+"元");  
            }  
        }  
    }
    /** 
     * 存款线程类; 
     * @author Administrator 
     * 
     */  
    public class SaveMoney extends Thread implements Serializable{  
    
        private static final long serialVersionUID = 3095120546560212724L;  
    
        private Account account;  //账户对象;  
        private int money;        //金额;  
    
        public SaveMoney(){  
            super();  
        }  
    
        public SaveMoney(int money,Account account){  
            this.account = account;  
            this.money = money;  
        }  
    
        @Override  
        public void run() {  
            // TODO Auto-generated method stub  
            int currMonery = account.search(); //查询账户余额;  
    
            //同步对象,只允许单线程操作;  
            synchronized (account) {  
                try {  
                    sleep(5);  //查询的时候,发费得时间;  
                } catch (InterruptedException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
                account.putMonery(this.money);   //插入金额;  
                //输出存款信息;  
                System.out.println("尊敬的"+account.getName()+"用户您好!"+"当前的余额为:"+currMonery +"元."+"存入余额为:"+this.money+"元."+"账户余额为:"+account.search()+"元");  
            }  
        }  
    }
    
    /** 
     * ATM测试类; 
     * @author Administrator 
     * 
     */  
    public class ThreadATMDemo {  
    
        /** 
         * 主方法; 
         * @param args 
         */  
        public static void main(String[] args) {  
            // TODO Auto-generated method stub  
            Account account = new Account();  
            //设置用户名;  
            account.setName("ZhouHaiTao");  
            //初始化余额;  
            account.setValue(0);  
    
            //存入100;  
            new SaveMoney(100,account).start();  
    
            //存入200;  
            new SaveMoney(200, account).start();  
    
            //取出500;  
            new FetchMoney(500, account).start();  
        }  
    }
    2019-07-17 19:27:52
    赞同 展开评论
问答分类:
问答标签:
问答地址: