您的位置:首页 > 其它

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

2015-03-15 13:03 411 查看
本人刚刚接触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");
}
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: