hlju.Java.Homework_Week5亏本银行(笑)

我也不知道我在写什么(战术后仰)

import javax.swing.*;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
import java.awt.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Timer;
import java.util.TimerTask;

public class StartSet {
    public static void main(String[] args) {
        long interval = 1000;//在这里改每过多少时间刷新一天 单位ms
        Bank bank=new Bank("ChinaBank",0.065);
        testAcount testAcount=new testAcount(bank);
        bank.createUser("hiroomi","123");
        bank.userTools("10120190001").topUp( 1000);
        bank.userTools("10120190001").getInfo("123");
        bank.userTools("10120190001").withdraw(100,"123");
        bank.userTools("10120190001").changeName("123","eric");
        bank.userTools("10120190001").changePassword("123","321");
        bank.userTools("10120190001").getInfo("321");
        Timer timer = new Timer();
        JFrame jFrame = new JFrame();

        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        ListModel listModel=new DefaultListModel();
        JTextArea jTextArea=new JTextArea();
        jTextArea.setLineWrap(true);
        jFrame.add(jTextArea);
        jFrame.setSize(750,1000);
        jFrame.setLayout(new GridLayout(1,1,1,1));
        jFrame.setVisible(true);
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                ArrayList<String> list=  bank.refresh();
                String out="";
                for (String s:list) {
                    out=out+s+"\n";
                }
                jTextArea.setText(out);

            }
        },3000,interval);
    }
}

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;


public class Bank {
    String bankName;
    Double rate;
    HashMap<String,User> users;
    static Integer bankId=100;
    private Integer key;

    protected Bank(String bankName, Double rate) {
        this.bankName = bankName;
        this.rate = rate;
        bankId++;
        users=new HashMap<String,User>();
        Long aLong=new Date().getTime();
        key= aLong.hashCode();
    }

    String createUser(String name,String password) {
        User user = new User(name, password,bankId.toString(),key.toString());
        user.getInfo(password);
        users.put(user.getCardId(password),user);
        return user.getCardId(password);
    }

    void getPassword(String cardId,String name){
        if (name.equals(users.get(cardId).getName()))
        users.get(cardId).getPassword(key.toString());
        else System.out.println("Wrong name!");
    }

    User userTools(String cardId){
        return users.get(cardId);
    }

    ArrayList<String> refresh(){
        Long aLong=new Date().getTime();
        Integer temp=aLong.hashCode();
        Double money;
        ArrayList list=new ArrayList<String>();
        for (User u:users.values()) {
            money=u.getBalance(key.toString(),temp.toString());
            money=money*rate*0.01;
            u.topUp(money);
            list.add(u.toString());
        }
        key=temp;
        return list;
    }

   Double getBalance(String cardId,String password){
         return Double.valueOf(users.get(cardId).getUserBalance(password));
   }

}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class testAcount {

    public testAcount(Bank bank) {

        JFrame jf=new JFrame();
        JLabel out=new JLabel("总计");
        JLabel name= new JLabel("姓名");
        JTextField jn=new JTextField();
        JLabel p= new JLabel("密码");
        JTextField jp=new JTextField();
        JButton b=new JButton("开户");
        JButton d=new JButton("存款");
        jf.setLayout(new GridLayout(4,2,10,10));
        jf.setSize(400,200);
        jf.add(name);
        jf.add(jn);
        jf.add(p);
        jf.add(jp);
        jf.add(b);
        jf.add(b);
        jf.setDefaultCloseOperation(2);
        Toolkit toolkit=Toolkit.getDefaultToolkit();
        Dimension screenSize=toolkit.getScreenSize();
        jf.setLocation(screenSize.width/2-200,screenSize.height/2-100);
        jf.setVisible(true);
        b.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                String cardId=bank.createUser(jn.getText(),jp.getText());
                jf.setVisible(false);
                JFrame nf=new JFrame();
                nf.setLayout(new GridLayout(4,2,10,10));
                nf.setSize(400,200);
                JButton d=new JButton("存款");
                JTextArea jt=new JTextArea();
                JButton f=new JButton("return");
                nf.add(d);
                nf.add(out);
                nf.add(jt);
                nf.add(f);
                nf.setLocation(screenSize.width/2-200,screenSize.height/2-100);
                nf.setVisible(true);
                d.addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent e) {
                        // TODO Auto-generated method stub
                        bank.userTools(cardId).topUp(Double.parseDouble(jt.getText()));
                        jt.setText(bank.getBalance(cardId,jp.getText()).toString());

                    }});
                f.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        nf.setVisible(false);
                        jf.setVisible(true);
                    }
                });
            }});
    }


}


import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.Timer;

public class User {
    static Integer number=20190001;
    private String cardId;
    private String name;
    private Double balance;
    private String password;
    private String bank_key;
    static  DecimalFormat df = new DecimalFormat();

    public User(String name,String password,String bankId,String bank_key) {
        df.setMinimumFractionDigits(2);

        this.name = name;
        cardId =bankId+number.toString();
        number++;
        balance=0.0;
        this.password=password;
        this.bank_key=bank_key;
    }
    void withdraw(double money,String password){
        if (password.equals(this.password)) {
            balance=balance-money;
            System.out.println(getInfo());
        }
        else System.out.println("Wrong password!");
    }
    void topUp(double money){
        balance=balance+money;
        System.out.println(getInfo());
    }
    private String getInfo() {
        return "{\"User\":{"
                + "\"cardId\":\""
                + cardId + '\"'
                + ",\"name\":\""
                + name + '\"'
                + ",\"balance\":"
                + df.format(balance)
                + "}}";

    }
    void getInfo(String password) {
        if (password.equals(this.password))
            System.out.println(
                    "{\"User\":{"
                + "\"cardId\":\""
                + cardId + '\"'
                + ",\"name\":\""
                + name + '\"'
                + ",\"balance\":"
                + df.format(balance)
                + "}}");
        else System.out.println("Wrong password!");

    }
    String getCardId(String password){
        if (password.equals(this.password)){
            return cardId;
        }else {
            return "Wrong password!";
        }
    }
    void changePassword(String password,String newPassword){
        if (password.equals(this.password)){
            this.password=newPassword;
        }else {
            System.out.println("Wrong password!");
        }
    }
    void changeName(String password,String newName){
        if (password.equals(this.password)){
            this.name=newName;
        }else {
            System.out.println("Wrong password!");
        }
    }
    double getBalance(String key,String newKey){
        if (bank_key.equals(key)){
            bank_key=newKey;
            return balance;
        }else return 0;
    }

    String getUserBalance(String password){
        if (this.password.equals(password)){
            return balance.toString();
        }else {
            return "Wrong password!";
        }
    }
    String getPassword(String bank_key){
        if (bank_key.equals(this.bank_key)) return password;
        else return "Wrong password!";
    }
    String getName(){
        return name;
    }

    @Override
    public String toString() {


        return "{\"User\":{"
                + "\"cardId\":\""
                + cardId + '\"'
                + ",\"name\":\""
                + name + '\"'
                + ",\"balance\":"
                + df.format(balance)
                + ",\"password\":\""
                + password + '\"'
                + ",\"bank_key\":\""
                + bank_key + '\"'
                + "}}";

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值