模拟银行账户转账系统(简单模拟)
2015-03-15 13:03
411 查看
本人刚刚接触java,此篇博客仅供初学者浏览,不喜勿喷,若有写的不好的地方欢迎大家指教;
*模拟银行账户转账系统:
有A,B两个银行账户,初始金额都为1000元,A,B随机向对方转账,转账金额不得大于账户余额,账户余额为0,无法进行交易,要求用图形界面显示,下方有两个按钮为“交易开始”,“清屏”,当按下“交易开始”后,此按钮变为”结束交易“,当按下结束交易,结束交易,并把交易记录保存在ab.txt中;强调内容
*模拟银行账户转账系统:
有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"); } } }
相关文章推荐
- Android——简单模拟银行转账
- python 简单模拟银行转账功能
- 用java模拟银行账户存储系统
- python 之简单模拟银行系统功能(卡号申请、还款、支付、取现)
- JAVA项目:简单的银行账户系统1
- 用c语言模拟简单的银行排队系统
- 初学C#--一个简单的银行系统模拟
- python操作MySQL 模拟简单银行转账操作
- .NET-简单的银行系统,完成查询余额,转账,存款,取款
- python操作MySQL 模拟简单银行转账操作
- 实践项目七:模拟银行转账系统(python+mysql)
- 简单模拟支付宝转账系统
- python操作MySQL 模拟简单银行转账操作
- java中Vector集合方法详解及简单的银行系统功能模拟
- 最简单的银行系统(1)
- 简单的银行系统
- 简单的银行系统
- GFS2――全局文件系统的简单模拟实现
- 我的第三十三个C++上机报告(简单的银行系统)
- 银行欺诈软件再进化:自动转账系统