模拟银行账户转账系统(简单模拟)

本人刚刚接触java,此篇博客仅供初学者浏览,不喜勿喷,若有写的不好的地方欢迎大家指教;
*模拟银行账户转账系统:
有A,B两个银行账户,初始金额都为1000元,A,B随机向对方转账,转账金额不得大于账户余额,账户余额为0,无法进行交易,要求用图形界面显示,下方有两个按钮为“交易开始”,“清屏”,当按下“交易开始”后,此按钮变为”结束交易“,当按下结束交易,结束交易,并把交易记录保存在ab.txt中;强调内容

public class MyFrame extends JFrame implements ActionListener
{

    private JPanel contentPane;
    private JTextArea textArea1;
    private JTextArea textArea2;
    private JButton button1;
    private JButton button2;
    private MyBankA ma;
    private MyBankB mb;
    private StringBuilder sb1;
    private StringBuilder sb2;
    private int amoney=1000;
    private int bmoney=1000;
    private FileWriter fw;
    /**
     * Launch the application.
     */
    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                try
                {
                    MyFrame frame = new MyFrame();
                    frame.setVisible(true);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MyFrame()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 1200, 750);
        contentPane = new JPanel();
        contentPane.setForeground(Color.ORANGE);
        contentPane.setBackground(Color.BLUE);
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JPanel panel_1 = new JPanel();
        panel_1.setBackground(Color.BLUE);
        panel_1.setBounds(0, 30, 1200, 639);
        contentPane.add(panel_1);
        panel_1.setLayout(null);


        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(50, 0, 500, 640);
        panel_1.add(scrollPane);

       textArea1 = new JTextArea();
       scrollPane.setViewportView(textArea1);
       textArea1.setBackground(Color.BLACK);
       textArea1.setForeground(Color.GREEN);

        JScrollPane scrollPane_1 = new JScrollPane();
        scrollPane_1.setBounds(650, 1, 500, 640);
        panel_1.add(scrollPane_1);


        textArea2 = new JTextArea();
        scrollPane_1.setViewportView(textArea2);
        textArea2.setBackground(Color.BLACK);
        textArea2.setForeground(Color.YELLOW);

        JPanel panel_2 = new JPanel();
        panel_2.setBackground(Color.BLUE);
        panel_2.setBounds(2, 667, 1189, 58);
        contentPane.add(panel_2);
        panel_2.setLayout(null);

        button1= new JButton("开始交易");
        button1.setBounds(923, 16, 101, 25);
        panel_2.add(button1);
        button1.setForeground(Color.MAGENTA);

        button2 = new JButton("清空");
        button2.setBounds(1024, 16, 117, 25);
        panel_2.add(button2);
        button2.setForeground(Color.RED);
        button2.addActionListener(this);
        button1.addActionListener(this);

        JLabel lblB = new JLabel("中国工商银行账户");
        lblB.setBackground(Color.GREEN);
        lblB.setForeground(Color.RED);
        lblB.setBounds(700, 0, 200, 31);
        contentPane.add(lblB);

        JLabel lblA = new JLabel("中国交通银行账户");
        lblA.setBackground(Color.GREEN);
        lblA.setForeground(Color.RED);
        lblA.setBounds(85, 8, 200, 15);
        contentPane.add(lblA);


    }

    @Override
    public void actionPerformed(ActionEvent e)
    {

      if(e.getActionCommand().equals("开始交易"))
      {
          button1.setText("结束交易");
          sb1=new StringBuilder();
          sb2=new StringBuilder();
          ma=new MyBankA(textArea1,amoney,sb1);
          mb=new MyBankB(textArea2,bmoney,sb2);
          ma.start();
          new Thread(mb).start();

      }
      else if(e.getActionCommand().equals("结束交易"))
      {
          ma.seta();
          mb.setb();
          button1.setText("开始交易");

              try {
                fw=new FileWriter("ab.txt");
                fw.write(sb1.toString()+sb2.toString());
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }


               finally{       
                  try {
                    fw.close();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

               }

      }

      else
      {
          sb1.delete(0, sb1.length());
          sb2.delete(0, sb2.length());
          textArea1.setText("");
          textArea2.setText("");
      }
    }
}
public class MyBankA extends Thread
{
    public static int amoney;
    private int aleft;
    private int achange;
    private int atotal;
    private JTextArea jta1;
    private Random ra=new Random();
    private boolean flag=true;
    private int anum=0;

    private StringBuilder sb1;
    public MyBankA(JTextArea jta1,int amoney,StringBuilder sb1)
    {
        this.jta1=jta1;
        this.amoney=amoney;
        this.sb1=sb1;
    }
    public void seta()
    {
    flag=false; 
    }
    public/* synchronized */void run()
    { 
    while(flag){
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        achange=ra.nextInt(amoney+1);
          int i=amoney-achange;
          if(i==0)
            {
                sb1.append("======余额为0,无法完成交易======");
                sb1.append("\n");
            }
          sb1.append("*****************第"+(++anum)+"次交易"+Thread.currentThread()+"****************"+"\n");
          sb1.append("(1)账户A向B账户转账,当前剩余"+String.valueOf(amoney)+"\n");
          sb1.append("(2)交易金额为"+String.valueOf(achange)+"\n"+"(3)还剩余"+String.valueOf(i));
          sb1.append("\n");
          amoney=amoney-achange;
          MyBankB.bmoney=MyBankB.bmoney+achange;
          jta1.setText(sb1.toString());
          System.out.println("aaaaa");
    }
    }

}
public class MyBankB implements Runnable 
{

public static int bmoney;
private int bleft;
private int bchange;
private int btotal;
private Random rb=new Random();
private StringBuilder sb2;
private JTextArea jta2;
private boolean flagb=true;
private int bnum=0;
public MyBankB(JTextArea jta2,int bmoney,StringBuilder sb2)
{
    this.jta2=jta2;
    this.bmoney=bmoney;
    this.sb2=sb2;
}
public void setb()
{
    flagb=false;
    }
public/* synchronized */void run() {
    while(flagb){
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                bchange=rb.nextInt(bmoney+1);
                int i1=bmoney-bchange;
                if(i1==0)
                {
                    sb2.append("======余额为0,无法完成交易======");
                    sb2.append("\n");
                }
               sb2.append("*****************第"+(++bnum)+"次交易"+Thread.currentThread()+"****************"+"\n");
                sb2.append("(1)账户B向A账户转账,当前剩余"+String.valueOf(bmoney)+"\n");
                 sb2.append("(2)交易金额为"+String.valueOf(bchange)+"\n"+"(3)还剩余"+String.valueOf(i1));
                sb2.append("\n");
                bmoney=bmoney-bchange;
                MyBankA.amoney=MyBankA.amoney+bchange;
                jta2.setText(sb2.toString());
                System.out.println("bbbbbbbbbbbbbbbbbbbbbb");
            }
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值