【java简单GUI设计,职工数据文件操作】

可以打开文件中的数据,用制表符分割,可以使里面的数据按照需求改动。

具体题目如下:

假设已经有一个文本文件中存放着职工的工资记录。每个职工的记录包含姓名、工资、津贴三项。 每条记录可以存放于一行(三项之间的间隔符可以自己决定),也可以将每条记录的三项依次分别存放在 文本文件中的每一行。请设计一个程序,可以让用户选择打开这个文件查看其内容,并可以让用户选择 把每个职工的工资增加 10%之后又存回原来的文件。注意,职工工资记录的条数可能成百上千条甚至更多, 要能通过你所设计的程序,批量地一次性修改所有职工工资记录。

附源码:

package 输入输出流与文件操作;

/**
 * @author :梁达林
 * @project :职工数据处理
 * @creat time:2019-11-21-18:57
 */

import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;

public class Example6_2 {
    public static void main(String args[]) {
        File4Frm file4Frm = new File4Frm();
    }
}

class File4Frm extends Frame implements ActionListener {
    FileDialog sv, op;
    JButton button1, button2, button3, button4;
    JTextArea textArea = new JTextArea();

    File4Frm() {
        super("工资记录修改器");
        setLayout(null);
        setBackground(Color.cyan);
        setSize(600, 300);
        setVisible(true);
        button1 = new JButton("打开");
        button2 = new JButton("保存");
        button3 = new JButton("关闭");
        button4 = new JButton("修改");
        textArea = new JTextArea("姓名\t工资\t津贴\n");
        add(button1);
        add(button2);
        add(button3);
        add(button4);
        add(textArea);
        textArea.setBounds(30, 50, 460, 220);
        button1.setBounds(520, 60, 60, 30);
        button2.setBounds(520, 120, 60, 30);
        button3.setBounds(520, 180, 60, 30);
        button4.setBounds(520, 240, 60, 30);
        sv = new FileDialog(this, "保存", FileDialog.SAVE); //保存功能
        op = new FileDialog(this, "打开", FileDialog.LOAD);//打开功能
        button1.addActionListener(this);
        button2.addActionListener(this);
        button3.addActionListener(this);
        button4.addActionListener(this);
        addWindowListener(new WindowAdapter() {//定义事件适配器实现图形界面窗口的关闭功能
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    public void actionPerformed(ActionEvent e) {//界面上的事件处理
        if (e.getSource() == button1) {
            String str;
            op.setVisible(true);
            try {//将文件打开读取到界面上的TextArea组件中显示出来
                File f1 = new File(op.getDirectory(), op.getFile());
                FileReader fr = new FileReader(f1);
                BufferedReader br = new BufferedReader(fr);
                textArea.setText("");
                while ((str = br.readLine()) != null) textArea.append(str + '\n');
                fr.close();
            } catch (Exception e1) {
            }
        }
        if (e.getSource() == button2) {//如果点击的是save按钮
            sv.setVisible(true);
            try {//将TextArea中的内容写入到文件中保存
                File fl = new File(sv.getDirectory(), sv.getFile());
                FileWriter fw = new FileWriter(fl);
                BufferedWriter bw = new BufferedWriter(fw);
                String gt = textArea.getText();
                bw.write(gt, 0, gt.length());
                bw.flush();
                fw.close();
            } catch (Exception e1) {
            }
        }
        if (e.getSource() == button3) {//如果点击的是close按钮
            System.exit(0);
        }
        if (e.getSource() == button4) {//如果点击的是修改按钮
            String gt = textArea.getText();
            String s[];
            s = gt.split("\t|\n");
            textArea.setText("姓名\t工资\t津贴\n");
            try {
                for (int i = 1; i < s.length; i++) {
                    s[3 * i + 1] = String.valueOf((int) (Integer.parseInt((s[3 * i + 1])) * 1.1));
                    textArea.append(s[3 * i + 0] + "\t");
                    textArea.append(s[3 * i + 1] + "\t");
                    textArea.append(s[3 * i + 2] + "\n");
                }
            } catch (Exception e1) {
            }
        }
    }
}

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值