本人刚刚接触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);}@Overridepublic 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 blocke1.printStackTrace();}finally{       try {fw.close();} catch (IOException e1) {// TODO Auto-generated catch blocke1.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 blocke.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 blocke.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");}}
}


模拟银行账户转账系统(简单模拟)相关推荐

  1. c语言模拟银行ATM的程序,简单模拟银行ATM取款系统 | C/C++程序员之家

    学习C#,第一次C#实验课,模拟ATM取款系统,锻炼基本的C#语法以及选择控制语句! 实现功能: 1.取款 2.余额查询 3.修改密码 4.退出 [cpp] using System; using S ...

  2. python模拟银行存取款_python 简单模拟银行转账功能

    看python教程第三节课的作业 首先画出流程图,流程图与现实代码有出入,因为刚开始画流程图的时候,有些东西没考虑进去,后来写着写着就慢慢能想起来并实现了. 另有一点经验推荐给新手朋友,如果说碰到一个 ...

  3. 模拟银行自助终端系统(序列化和反序列化)

    模拟银行自助终端系统 一. 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 说明: 1.   对于数据输入异常,可使用java异常处理机制进行处理. 2.   ...

  4. 模拟银行自动终端系统

    本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 二. 项目功能要求: 项目开始运行显示主菜单为: 银行自助终端系统 ********************* ...

  5. 演练 模拟银行账户业务

    模拟银行账户业务 需求 模拟银行账户业务 创建包bank.com 编写Account类,添加带参 方法实现存款和取款业务 存款时帐户初始金额为0元 取款时如果余额不足给出提示 效果 temp 分析脑图

  6. 模拟银行账户业务,bank添加带参方法实现存款和取款业务, 存款时帐户初始金额为0元,取款时如果余额不足给出提示。

    Account类给卡号,密码和余额属性私有化 //模拟银行账户业务,编写Account类,账户 密码 金额为 bank添加带参方法实现存款和取款业务, //存款时帐户初始金额为0元,取款时如果余额不足 ...

  7. python 例子 银行_Python3实现简单的银行账户登录系统实例

    下面小编就为大家带来一篇Python3 适合初学者学习的银行账户登录系统实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 一.所用知识点: 1. for循环与if判断 ...

  8. python 通登录银行_Python3实现简单的银行账户登录系统实例

    下面小编就为大家带来一篇Python3 适合初学者学习的银行账户登录系统实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 一.所用知识点: 1. for循环与if判断 ...

  9. python 通登录银行_Python3 适合初学者学习的银行账户登录系统实例

    一.所用知识点: 1. for循环与if判断的结合 2. %s占位符的使用 3. 辅助标志的使用(标志位) 4. break的使用 二.代码示例: ''' 银行登录系统 ''' uname = &qu ...

最新文章

  1. 虚拟主机上用Asp.net实现Urlrewrite
  2. ReSimNet: drug response similarity prediction using Siamese neural networks
  3. Struts和Sitemesh整合,实现多个装饰器
  4. 浅析网站维护优化的必要性!
  5. Tomcat启动时为什么要配置CATALINA_HOME环境变量??
  6. java卡片布局显示效果_三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)...
  7. android 自定义menu背景,Android编程实现自定义系统菜单背景的方法
  8. Linux下的实模式和保护模式
  9. Object Clustering(POJ-3214)
  10. 学英语(3)---常用语英语
  11. 写给自己的23条好习惯
  12. 放假前的最后一篇文章
  13. Mysql占用CPU过高的时候,该从哪些方面下手进行优化?
  14. 数据库交易记录--如何添加审计信息到闪回归档数据以替换操作日志表
  15. android linkedin 登陆授权及分享
  16. 自定mvc之新增,下架以及上架
  17. 计算机应用基础word的课件,计算机应用基础之word2010课件
  18. xpose 调试支付宝
  19. eudc计算机术语英文,汽车循环工况测试CLTC(CLTC-P和CLTC-C)、WLTC、FTP75、JC08、NEDC、ECE15、EUDC.xls...
  20. 固态硬盘坏了的表现是什么?从哪里可以看出来?

热门文章

  1. 面试题精选:单链表排序也能玩出花来
  2. There is no Action mapped for namespace[/] and action name [] associated with context path.
  3. 记录开发一款安卓便签的过程
  4. 计算机硬件包括什么和外部设备,计算机硬件一般包括什么和外部设备
  5. pyecharts阶段2
  6. python: No module named pip解决
  7. 基于Python3+Flask+SQLite的大学实验室设备管理系统
  8. KNN分类算法及MATLAB程序与结果
  9. oracle里的超级用户,Oracle中超级用户权限的管理
  10. oracle jdk1.7 内存,JDK 16 正式发布,一次性发布 17 个新特性…不服不行!