JAVA编程题

1、在工资支付系统中,雇员的记录由:雇员号(姓名(String)、地址(String)和工资(double)。编写一个程序完成雇员记录的添加、修改、删除、查询功能。要求在... 1、 在工资支付系统中,雇员的记录由:雇员号(姓名(String)、地址(String)和工资(double)。编写一个程序完成雇员记录的添加、修改、删除、查询功能。要求在系统退出时将系统所有的雇员记录写入文件中;在下次进入系统时,从该文件中恢复雇员信息。
思路提示:
(1)建立一个可序列化的雇员类,
类的数据成员:雇员号(int)、姓名(String)、地址(String)和工资(double)。
类的方法:构造函数、设置和读取各数据成员的方法。
(2)建立一个管理雇员记录的列表类。
类的数据成员:用于存放全部雇员记录的数组(或List或Vector);
雇员记录的个数(int).
类的方法:构造函数(创建数组对象,从文件中读全部雇员对象到数组对象中,并初始化雇员记录的个数);
完成雇员记录的添加、修改、删除、查询的四个方法(对对象数组进行)。
定义写方法:将对象数组中所有雇员记录保留到文件中。
(3)编写测试代码,测试上述功能。
展开
 我来答
a2040605
2014-12-18 · TA获得超过337个赞
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:131万
展开全部
import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Employee {

    private int no;
    private String name;
    private String address;
    private double salary;

    public Employee(int no, String name, String address, double salary) {
        this.no = no;
        this.name = name;
        this.address = address;
        this.salary = salary;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

class EmpList {

    private List<Employee> empList;
    private long count = 0;

    public EmpList() {
        empList = readText();
    }

    public long getCount() {
        return empList.size();
    }

    public List<Employee> getEmpList() {
        return empList;
    }

    public void setEmpList(List<Employee> empList) {
        this.empList = empList;
    }

    public void add(Employee emp) {
        empList.add(emp);
        writeText();
    }

    public void delete(String name) {
        Employee emp = query(name);
        empList.clear();
    }

    public void update(Employee emp) {
        empList.remove(emp);
        add(emp);
    }

    public Employee query(String name) {
        Employee temp = null;
        for (Employee emp : empList) {
            if (emp.getName().equals(name)) {
                temp = emp;
            }
        }
        return temp;
    }

    public List readText() {
        List list = new ArrayList();
        try {
            File file = new File("D:\\emp.txt");
            if (file.isFile() && file.exists()) { //判断文件是否存在
                InputStreamReader read = new InputStreamReader(new FileInputStream(file), "gbk");//考虑到编码格式
                BufferedReader bufferedReader = new BufferedReader(read);
                String lineTxt = null;
                while ((lineTxt = bufferedReader.readLine()) != null) {
                    int no = Integer.parseInt(lineTxt.split("#")[0]);
                    String name = lineTxt.split("#")[1];
                    String address = lineTxt.split("#")[2];
                    double salary = Double.parseDouble(lineTxt.split("#")[3]);
                    Employee emp = new Employee(no, name, address, salary);
                    list.add(emp);
                }
                read.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

    public void writeText() {
        try {
            File f = new File("D:\\emp.txt");
            if (!f.exists()) {
                f.createNewFile();
            }
            OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f), "gbk");
            BufferedWriter writer = new BufferedWriter(write);
            String writeTxt = "";
            for (Employee emp : empList) {
                writeTxt = emp.getNo() + "#" + emp.getName() + "#" + emp.getAddress() + "#" + emp.getSalary();
                writer.write(writeTxt);
                writer.newLine();
            }
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Test {

    public static void main(String args[]) {
        EmpList el = new EmpList();
        Employee emp1 = new Employee(1,"张三","湖南",2000);
        Employee emp2 = new Employee(2,"李四","湖北",3000);
        el.add(emp1);
        el.add(emp2);
        List<Employee> list = el.getEmpList();
        System.out.println("总共人数:"+el.getCount());
        for (Employee emp : list) {
            System.out.println("编号:"+emp.getNo() + " 姓名:" + emp.getName() + " 地址:" + emp.getAddress() + " 工资:" + emp.getSalary());
        }
        //el.writeText();
    }
}
匿名用户
2014-12-18
展开全部
难zhe到shi要yao写nao出na来yang
追问
你写也可以,我写了一个,你能看看么,现在运行不起来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式