`

java多线程结合界面开发实例(原创)财务管理系统

阅读更多

以前常常听说JAVA有多线程

可自己编写到的却很少,这学期编写了很多java程序,终于可以感觉下了,在这个程序中,我开了一个独立的线程去处理财务的计算,这样可以使界面类不会因为计算量大而出现卡的现象。我用的是thread子类来用线程的,计算的工作在run方法里面跑就可以了!界面里面只是调用那个run,这样两者就进水不犯河水啦。就这么简单。当然里面也涉及到文件的输入输出,具有保存功能的!下面给出源代码和截图:

 

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.GridBagLayout;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;

import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JButton;

 

 

 

 


public class moneyMan extends JFrame {

private static final long serialVersionUID = 1L;

private JPanel jContentPane = null;

private JPanel jPanel = null;

private JLabel jLabel = null;

private JLabel jLabel1 = null;

JTextField time = null;

private JLabel jLabel2 = null;

JTextField total = null;

private JLabel jLabel3 = null;

JTextField out = null;

private JLabel jLabel4 = null;

JTextField a = null;

private JLabel jLabel5 = null;

JTextField b = null;

private JLabel jLabel6 = null;

JTextField c = null;

private JLabel jLabel7 = null;

JTextField d = null;

JScrollPane showScroll = null;

private JLabel jLabel8 = null;

JTextArea jTextArea = null;

private JButton sure = null;

private JButton clear = null;

private JButton save = null;

/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
   if (jPanel == null) {
    jLabel8 = new JLabel();
    jLabel8.setBounds(new Rectangle(224, 77, 285, 27));
    jLabel8.setText("财务状况显示区:");
    jLabel7 = new JLabel();
    jLabel7.setBounds(new Rectangle(34, 277, 115, 30));
    jLabel7.setText("20号后支出:");
    jLabel6 = new JLabel();
    jLabel6.setBounds(new Rectangle(35, 246, 114, 26));
    jLabel6.setText("13号~19号支出:");
    jLabel5 = new JLabel();
    jLabel5.setBounds(new Rectangle(35, 212, 106, 29));
    jLabel5.setText("7号~12号支出:");
    jLabel4 = new JLabel();
    jLabel4.setBounds(new Rectangle(37, 180, 105, 28));
    jLabel4.setText("1号~6号支出:");
    jLabel3 = new JLabel();
    jLabel3.setBounds(new Rectangle(37, 148, 68, 27));
    jLabel3.setText("总支出:");
    jLabel2 = new JLabel();
    jLabel2.setBounds(new Rectangle(36, 119, 69, 27));
    jLabel2.setText("总收入:");
    jLabel1 = new JLabel();
    jLabel1.setBounds(new Rectangle(35, 87, 70, 28));
    jLabel1.setText("财务时间:");
    jLabel = new JLabel();
    jLabel.setBounds(new Rectangle(196, 2, 168, 69));
    jLabel.setText("        财务管理系统");
    jPanel = new JPanel();
    jPanel.setLayout(null);
    jPanel.setBounds(new Rectangle(4, 5, 588, 387));
    jPanel.add(jLabel, null);
    jPanel.add(jLabel1, null);
    jPanel.add(getTime(), null);
    jPanel.add(jLabel2, null);
    jPanel.add(getTotal(), null);
    jPanel.add(jLabel3, null);
    jPanel.add(getOut(), null);
    jPanel.add(jLabel4, null);
    jPanel.add(getA(), null);
    jPanel.add(jLabel5, null);
    jPanel.add(getB(), null);
    jPanel.add(jLabel6, null);
    jPanel.add(getC(), null);
    jPanel.add(jLabel7, null);
    jPanel.add(getD(), null);
    jPanel.add(getShowScroll(), null);
    jPanel.add(jLabel8, null);
    jPanel.add(getSure(), null);
    jPanel.add(getClear(), null);
    jPanel.add(getSave(), null);
   }
   return jPanel;
}

/**
* This method initializes time
*
* @return javax.swing.JTextField
*/
private JTextField getTime() {
   if (time == null) {
    time = new JTextField();
    time.setBounds(new Rectangle(107, 89, 103, 27));
   }
   return time;
}

/**
* This method initializes total
*
* @return javax.swing.JTextField
*/
private JTextField getTotal() {
   if (total == null) {
    total = new JTextField();
    total.setBounds(new Rectangle(109, 118, 100, 27));
   }
   return total;
}

/**
* This method initializes out
*
* @return javax.swing.JTextField
*/
private JTextField getOut() {
   if (out == null) {
    out = new JTextField();
    out.setBounds(new Rectangle(106, 148, 103, 26));
   }
   return out;
}

/**
* This method initializes a
*
* @return javax.swing.JTextField
*/
private JTextField getA() {
   if (a == null) {
    a = new JTextField();
    a.setBounds(new Rectangle(143, 181, 70, 26));
   }
   return a;
}

/**
* This method initializes b
*
* @return javax.swing.JTextField
*/
private JTextField getB() {
   if (b == null) {
    b = new JTextField();
    b.setBounds(new Rectangle(145, 213, 67, 26));
   }
   return b;
}

/**
* This method initializes c
*
* @return javax.swing.JTextField
*/
private JTextField getC() {
   if (c == null) {
    c = new JTextField();
    c.setBounds(new Rectangle(155, 247, 58, 25));
   }
   return c;
}

/**
* This method initializes d
*
* @return javax.swing.JTextField
*/
private JTextField getD() {
   if (d == null) {
    d = new JTextField();
    d.setBounds(new Rectangle(155, 278, 58, 26));
   }
   return d;
}

/**
* This method initializes showScroll
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getShowScroll() {
   if (showScroll == null) {
    showScroll = new JScrollPane();
    showScroll.setBounds(new Rectangle(224, 107, 356, 198));
    showScroll.setViewportView(getJTextArea());
   }
   return showScroll;
}

/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
   if (jTextArea == null) {
    jTextArea = new JTextArea();
   }
   return jTextArea;
}

/**
* This method initializes sure
*
* @return javax.swing.JButton
*/
private JButton getSure() {
   if (sure == null) {
    sure = new JButton();
    sure.setBounds(new Rectangle(36, 325, 99, 43));
    sure.setText("确定计算");
    sure.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent e) {
     
     }
    });
    sure.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent e)
     {

 

      TestThread testThread = new TestThread();//新生成一个处理事务线程
      testThread.start();//启动事务线程
            
    
     }
    });
   }
   return sure;
}

/**
* This method initializes clear
*
* @return javax.swing.JButton
*/
private JButton getClear() {
   if (clear == null) {
    clear = new JButton();
    clear.setBounds(new Rectangle(160, 327, 94, 40));
    clear.setText("清空");
    clear.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent e) {
      System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
     }
    });
   }
   return clear;
}

/**
* This method initializes save
*
* @return javax.swing.JButton
*/
private JButton getSave() {
   if (save == null) {
    save = new JButton();
    save.setBounds(new Rectangle(291, 324, 89, 41));
    save.setText("历史财务");
    save.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent e) {
      jTextArea.setText("");
      String record = null;      
      try {
      FileReader fr = new FileReader("money.txt");
      BufferedReader br = new BufferedReader(fr);
      record = new String();
      while ((record = br.readLine()) != null) {
       String value = record+'\n';
       jTextArea.insert(value,jTextArea.getDocument().getLength());
      
      }
      br.close();
      fr.close();
      } catch (IOException ee) {
      System.out.println( "Read file error! ");
      ee.printStackTrace();
      }
     
     
     }
    });
   }
   return save;
}

/**
* @param args
*/
public static void main(String[] args) {
  
  
  
  
   SwingUtilities.invokeLater(new Runnable() {
    public void run() {
     moneyMan thisClass = new moneyMan();
     thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     thisClass.setVisible(true);
    }
   });
}

/**
* This is the default constructor
*/
public moneyMan() {
   super();
   initialize();
}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
   this.setSize(591, 425);
   this.setContentPane(getJContentPane());
   this.setTitle("JFrame");
}

/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
   if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(null);
    jContentPane.add(getJPanel(), null);
   }
   return jContentPane;
}


class TestThread extends Thread
{


   public void run()
   {

   
    System.out.println("线程工作了");

    String shijian = time.getText();
   
   
    String zong = total.getText();
    int z = Integer.parseInt(zong);

    String zhi = out.getText();

    int o = Integer.parseInt(zhi);

    int z_o = o / z;
    String zo = Integer.toString(z_o); //收支比例
   

    String A = a.getText();
    int aa = Integer.parseInt(A);
    int A_a = aa / z;
    String Aa = Integer.toString(A_a);//第一星期收支比例

    String B = b.getText();
    int bb = Integer.parseInt(B);
    int B_b = bb / z;
    String Bb = Integer.toString(B_b);//第二星期收支比例


    String C = c.getText();
    int cc = Integer.parseInt(C);
    int C_c = cc / z;
    String Cc = Integer.toString(C_c);//第三星期收支比例

    String D = d.getText();
    int dd = Integer.parseInt(D);
    int D_d = dd / z;
    String Dc = Integer.toString(D_d);//第四星期收支比例


    String value = "总收入:" + zong + '\n' + "总支出:" + zhi + '\n' + "总收支比例:" + zo + "%" + '\n' + "第一星期收支比例:" + Aa + "%" + '\n' + "第二星期收支比例:" + Bb + "%" + '\n' + "第三星期收支比例:" + Cc + "%" + '\n' + "第四星期收支比例:" + Dc + '\n' + "财务结算时间:" + shijian + '\n';

    jTextArea.insert(value,jTextArea.getDocument().getLength());


    File f = new File("money.txt");
    try
    {
     FileWriter out = new FileWriter(f);
     out.write(value);
     out.close();
    }
    catch (Exception a)
    {
     System.out.println(a);
    }
   }

}

}

分享到:
评论

相关推荐

    java多线程结合界面开发实例(原创)财务管理系统源代码和效果图[参考].pdf

    Java多线程结合界面开发实例:财务管理系统源代码和效果图 在这个实例中,我们将学习如何使用Java多线程技术结合界面开发来实现一个财务管理系统。这个系统能够实时显示财务状况,并且具有保存功能。 知识点1:...

    java多线程结合界面开发实例(原创)财务管理系统源代码和效果图.pdf

    "Java多线程结合界面开发实例:财务管理系统源代码和效果图" 本文将对Java多线程结合界面开发实例进行详细的解释和分析,包括Java多线程编程、界面开发、文件输入输出等知识点。 Java多线程编程 Java多线程编程是...

    java多线程结合界面开发实例(原创)财务管理系统源代码和效果图知识.pdf

    "JAVA多线程结合界面开发实例:财务管理系统源代码和效果图知识" 在这个实例中,我们可以看到Java多线程结合界面开发的实践应用。开发者使用Java语言编写了一个财务管理系统,系统中使用了多线程技术来处理财务计算...

    java开发实例(原创)财务管理系统源代码和效果图.doc

    《Java开发实例:财务管理系统源代码与实现》 在Java编程领域,开发一款财务管理系统是一项常见的任务,它涉及到了许多核心的Java技术和设计原则。这个原创的财务管理系统提供了完整的源代码和实际运行的效果图,为...

    Java酒店管理系统附设计文档

    5. **多线程**:Java支持多线程编程,酒店管理系统中可能存在多个并发操作,如同时进行预订和结账,这时就需要使用线程来提高系统的响应速度和并发性能。 6. **设计模式**:在开发过程中,可能会应用到如工厂模式...

    java实例股票交易系统

    7. **并发处理**:股票交易系统需要处理大量并发请求,因此需要熟悉多线程和并发控制技术,如Java的synchronized关键字、ReentrantLock等。 8. **异常处理**:为了保证系统的健壮性,需要对可能出现的各种异常进行...

    基于Java的实例源码-宾馆管理系统.zip

    【Java宾馆管理系统】是一个以Java编程语言开发的实用软件,主要目标是实现宾馆日常运营的自动化管理。这个系统包括了多个模块,旨在提高工作效率,减少人为错误,为宾馆的前台、客房服务、财务等部门提供全面的支持...

    java客房管理系统代码

    通过这个Java客房管理系统,开发者不仅可以学习到Java编程的基本技巧,还能深入理解企业级应用开发中的数据处理、业务逻辑、界面设计等关键环节,为今后的软件开发生涯打下坚实基础。同时,对于酒店行业的实际运营,...

    JAVA开发家庭理财系统(java+applet).zip

    8. **多线程**:在处理并发操作时,如多个用户同时访问系统,多线程技术可以提高性能和用户体验。Java的线程API使得开发者能轻松地管理和同步线程。 9. **文件I/O**:用于读取和保存用户设置、历史交易记录等文件。...

    chaoshiguanli.rar_java 超市管理系统

    在这个超市管理系统中,Java的多线程特性确保了系统能够处理并发的用户请求,提高了系统响应速度。同时,Java的异常处理机制为系统的健壮性提供了保障。 系统的核心功能包括商品管理、库存管理、销售管理、会员管理...

    超市管理系统java

    综上所述,“超市管理系统java”项目涵盖了Java开发中的众多核心技术和最佳实践,不仅展示了如何使用Java进行GUI编程,还涵盖了数据库操作、事务管理、多线程以及各种设计模式的应用。这个系统对于学习和理解企业级...

    基于JAVA开发的餐饮管理系统c源码+系统设计解决方案文档).zip

    《基于JAVA开发的餐饮管理系统》 本项目是一个完整的基于JAVA技术的餐饮管理系统,旨在为餐厅提供高效、便捷的日常运营支持。系统集成了多种功能,包括菜单管理、订单处理、库存控制、客户管理以及财务报表等,对于...

    基于Java记账管理系统源码.zip

    通过分析这个基于Java的记账管理系统,我们可以深入了解Java Web开发的全貌,包括后端逻辑、数据库设计、前端展示等多个方面。对于学习者而言,这是一个很好的实践项目,可以帮助巩固理论知识并提升实际开发技能。

    java课程设计(贪食蛇 俄罗斯方块 个人信息助理工具 家庭理财工具 图书管理系统 人事档案管理系统 学生成绩管理系统)

    在给定的标题和描述中,我们可以看到一系列的项目实例,这些实例涵盖了各种类型的软件应用,包括游戏、工具类应用以及管理系统。下面将详细解释这些项目及其涉及的Java知识点。 1. **贪食蛇**:贪食蛇是一款经典的...

    java 银行存取系统 源代码

    3. **多线程**:为了实现并发处理,系统可能使用多线程技术,确保多个用户在同一时间可以进行存取款操作,而不会相互干扰。 4. **异常处理**:银行系统需要处理各种可能出现的异常情况,如账户不存在、余额不足等,...

    java家庭理财系统(文档+源码+视频)

    【Java家庭理财系统】是一个基于Java技术开发的个人与家庭财务管理系统,旨在帮助用户记录、管理和分析日常收支,实现财务规划。此系统包含了完整的源代码、相关文档以及教学视频,对于学习Java编程、理解实际项目...

    基于Java的家庭理财系统(java+applet).zip

    通过此项目,开发者可以学习到如何设计和实现一个具有用户交互性的财务管理系统,包括记录收入、支出、计算余额等功能,同时还能了解到Applet在网页中的嵌入和运行过程。 【标签】: 1. **Java**:Java是一种广泛...

    家庭理财工具(java实现)

    【家庭理财工具(Java实现)】是一款基于Java编程语言开发的个人财务管理软件,主要用于帮助用户进行日常的家庭财务记录、分析和规划。这款工具在JBuilderX集成开发环境中进行了设计和测试,确保了其在Java环境下的...

    进销存系统 java源码

    - 使用多线程处理并发请求,提高系统响应速度。 - 设计为微服务架构,各个模块独立,方便后期功能扩展和维护。 7. **测试与部署**: - 开发过程中需要进行单元测试、集成测试和系统测试,确保软件质量。 - 部署...

Global site tag (gtag.js) - Google Analytics