公司财务发工资时,记录了当时发工资的资料Employee.txt 1.定义公司员工类Employee,属性有:工号,姓名,性别,工资(double类型),进行属性的隐藏和封装,重写toString.

题目情景描述:

公司财务发工资时,记录了当时发工资的资料Employee.txt

1.定义公司员工类Employee,属性有:工号,姓名,性别,工资(double类型),进行属性的隐藏和封装,重写toString.
2.将D:/Employee.txt文件用程序复制到项目根目录;
3.读取项目根目录下的文件Employee.txt内容存入ArrayList<Employee>
4.以工号为键,员工姓名为值存入HashMap<String,String>中.再遍历输出Map集合中的内容;
5.当公司记录该信息的职员将信息交给经理,经理进行审查时,发现有一些信息录入错误,需要在集合中进行数据修改:
① 将陈璐璐改为:张路路且工资改为:7500.0元
② 程曦原本是位女士
③工号中所有的”2”都应改为”7”;输出修改后的ArrayList<Employee>
6.将修改后的职工信息按工资从高到低排序,工资相同的按工号从小到大排序.
7.判断项目根目录下是否有”result”文件夹,如果没有,则用程序新建文件夹”result”,并将

修改并排序后的信息写出到”result”文件夹的Employee-new.txt文件中,格式与Employee.txt相同


一、新建一个Employee的类

//1.定义公司员工类Employee,属性有:工号,姓名,性别,工资(double类型),进行属性的隐藏和封装,重写toString.(5分)
import java.util.Comparator;

public class Employee implements Comparable<Employee>{
        private String id;
        private String name;
        private String sex;
        private double salary;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public double getSalary() {
            return salary;
        }
        public void setSalary(double salary) {
            this.salary = salary;
        }
        @Override
        public String toString() {
            return "Employee [id=" + id + ", name=" + name + ", sex=" + sex + ", salary=" + salary + "]";
        }
        public int compareTo(Employee e)
        {
            /*if (this.getSalary()>e.getSalary()) {
                return -1;
            }
             if (this.getSalary()<e.getSalary()) {
                return 1;
            }else {
                return this.getId().compareTo(e.getId());
            }
            */
            int num=(int)(e.getSalary())-(int)(this.getSalary());
            return num==0?this.getId().compareTo(e.getId()):num;
        }
        
}








二、n1类中主函数处理
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.ListIterator;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeSet;
import java.util.*;

import javax.swing.text.html.HTMLDocument.Iterator;

public class n1{

    public static void main(String[] args)throws Exception {
        //将D:/Employee.txt文件用程序复制到项目根目录;(5分)
        FileInputStream file = new FileInputStream("D://Employee.txt");
        FileOutputStream files = new FileOutputStream("Employee.txt");
        String s=null;
        byte[] b=new byte[1024];
        int len=0;
        while ((len=file.read(b))!=-1) {
            files.write(b, 0, len);
        }
        files.close();
        //3.读取项目根目录下的文件Employee.txt内容存入ArrayList<Employee>(5分)
        ArrayList<Employee> arr = new ArrayList<>();
        FileInputStream file1 = new FileInputStream("Employee.txt");
        //BufferedReader buf = new BufferedReader(new InputStreamReader(file1,"utf-8"));
        BufferedReader buf = new BufferedReader(new InputStreamReader(file1));
        while ((s=buf.readLine())!=null) {
            Employee e=new Employee();
            String []s1=s.split(",");
            //System.out.println("啊哈哈1");
            for (int i = 0; i < s1.length; i++) {
                //System.out.println("啊哈哈2");
                String[] s2=s1[i].split(":");
                //System.out.println(s2[0]+s2[1]+"嘿嘿");
                if ("工号".equals(s2[0])) {
                    //System.out.println("啊哈哈5");
                    e.setId(s2[1]);
                }else if("姓名".equals(s2[0])) {
                    e.setName(s2[1]);
                }else if("性别".equals(s2[0])){
                    e.setSex(s2[1]);
                }else {
                    e.setSalary(Double.parseDouble(s2[1].substring(0, s2[1].length()-1)));
                }
            }
        //    System.out.println("啊哈哈4");
            arr.add(e);                                                                  
            
        }
        //4.以工号为键,员工姓名为值存入HashMap<String,String>中.再遍历输出Map集合中的内容;(5分)
        HashMap<String, String>has= new HashMap<>();
        for (Employee employee : arr) {
            has.put(employee.getId(), employee.getName());
        }
        Set<Map.Entry<String,String>> se= has.entrySet();
        for (Entry<String, String> entry : se) {
            System.out.println(entry.getKey()+","+entry.getValue());
        }
        
        //5.当公司记录该信息的职员将信息交给经理,经理进行审查时,发现有一些信息录入错误,需要在集合中进行数据修改:
        //        ① 将陈璐璐改为:张路路且工资改为:7500.0元
        //        ② 程曦原本是位女士
        //        ③工号中所有的”2”都应改为”7”;输出修改后的ArrayList<Employee>(8分)
        ListIterator<Employee> l=arr.listIterator();
        //Employee emp=new Employee();
        while (l.hasNext()) {
                Employee em = l.next();
                if ("陈璐璐".equals(em.getName())) {
                    //l.set(e);et("张璐璐");
                    em.setName("张璐璐");
                    em.setSalary(7500.0);
                }
                if ("程曦".equals(em.getName())) {
                    em.setSex("女");
                }
                if (em.getId().contains("2")) {
                    em.setId(em.getId().replace("2", "7"));
                }
                //System.out.println("嘿嘿");
                //System.out.println(l.next());
                System.out.println("嘿嘿"+em.toString()+"嘿嘿");
                //System.out.println("嘿嘿");
        }
        //System.out.println("嘿嘿");
        //System.out.print(l);
        //System.out.println("嘿嘿");
        //6.将修改后的职工信息按工资从高到低排序,工资相同的按工号从小到大排序.(7分)
        TreeSet<Employee> tree = new TreeSet<>();
        for (Employee employee : arr) {
            tree.add(employee);
        }
        for (Employee employee : tree) {
            System.out.println(employee);
        }
//        7.判断项目根目录下是否有”result”文件夹,如果没有,则用程序新建文件夹”result”,并将
//        修改并排序后的信息写出到”result”文件夹的Employee-new.txt文件中,格式与Employee.txt相同(5分)
        File f= new File("result");
        if (!(f.exists())) {
            f.mkdir();
        }
        String s1=f.getAbsolutePath();
        System.out.println(s1);
        FileWriter file2 =new FileWriter(s1+"\\Employee-new.txt");
        BufferedWriter buf1 = new BufferedWriter(file2);
        for (Employee employee : tree) {
            buf1.write("工号:"+employee.getId());
            buf1.write("姓名:"+employee.getName());
            buf1.write("性别:"+employee.getSex());
            buf1.write("薪水:"+employee.getSalary()+"元");
            buf1.newLine();
        }
        buf1.close();
    }

}



附:Employee.txt文件

工号:J18020,姓名:周杰伦,性别:男,工资:8800.0元
工号:J18085,姓名:金秀贤,性别:男,工资:7500.0元
工号:J18504,姓名:陈璐璐,性别:女,工资:7340.0元
工号:J18009,姓名:岳云鹏,性别:男,工资:8000.0元
工号:J18775,姓名:张翠花,性别:女,工资:7500.0元
工号:J18325,姓名:刘静,性别:女,工资:10500.0元
工号:J18560,姓名:程曦,性别:男,工资:11000.0元
工号:J18802,姓名:AngleBaby,性别:女,工资:8500.0元

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值