1)核心是使用POI流对txt文档进行读写,核心代码如下:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class Demo {
public static void main(String[] args) {
try {
FileReader fReader = new FileReader("F:\\original.txt");
BufferedReader bufferedReader = new BufferedReader(fReader);
Writer writer = new FileWriter(new File("F:\\modify.txt"));
String str;
while ((str = bufferedReader.readLine()) != null) {
writer.write(str + "\r\n");
}
bufferedReader.close();
fReader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2)我们要实现的界面是:
职工管理系统============================================================================
1、添加职工
2、修改职工信息
3、查找职工信息
4、删除职工信息
5、显示所有职工信息
6、退出系统
请选择.....
3)我们要实现的功能是:
- 退出系统时将所有职工信息保存到employees.txt文件中,当系统启动时能够获取已有的职工信息。
- 能够实现设置职工人数、添加职工、根据职工编号修改职工体重并打印、根据职姓名查找职工信息并打印、根据职工编号删除职工信息、打印所有职工信息。
4)我们的实验思路是:
1、 定义职工类Employee,该类属性包括编号、姓名、身高、体重
2、 定义职工管理系统类EmployeeManagementSystem
- 该类应该包括两个int类型属性:分别保存最多可维护的职工数量和当前的职工数量,一个Employee数组:保存所有的职工信息。
- 该类应该包含带有一个int类型参数的构造方法,在构造方法中对Employee数组进行初始化,并且要读取employees.txt文件,如果文件当中存在职工信息,就将这些信息保存到Employee数组当中。
- 该类中实现添加、修改、查找、删除职工操作时,都是对Employee数组的操作。
- 当用户选择退出系统时,需要将当前Employee数组当中的所有职工信息重新写入employees.txt文件中,保存时可以将每个职工的信息保存为一行数据,每个不同的属性值直接用空格隔开,这样当系统启动读取职工信息时可以根据每一行的数据重新创建成一个职工对象。
3、定义测试类,测试类中定义打印系统菜单的方法,并在main方法中根据用户输入的编号执行相应的操作,并实现循环打印菜单的效果。
5)代码实现:
public class Employee {
private String no;
private String name;
private double height;
private double weight;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public Employee(String no,String name,double height,double weight) {
this.no=no;
this.name=name;
this.height=height;
this.weight=weight;
}
public double getBMI(double weight,double height) {
double BMI=weight/(height*height);
return BMI;
}
@Override
public String toString() {
return "no: " + no + ", name: " + name + ", height: " + height + "m" + ", weight: " + weight + "kg";
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Writer;
public class EmployeeManagementSystem {
int maximumNumberOfEmployees;
int currentNumberOfEmployees;
Employee[] employees;
//构造方法
public EmployeeManagementSystem(int maximumNumberOfEmployees, int currentNumberOfEmployees) {
this.maximumNumberOfEmployees = maximumNumberOfEmployees;
this.currentNumberOfEmployees = currentNumberOfEmployees;
this.employees = new Employee[maximumNumberOfEmployees];
//将数据写入数组
try {
FileReader fReader = new FileReader("F:\\employees.txt");
BufferedReader bufferedReader = new BufferedReader(fReader);
String str;
int i = 0;
while ((str = bufferedReader.readLine()) != null) {
String[] employeesStr = str.split(" ");
employees[i] = new Employee(employeesStr[0], employeesStr[1], Double.parseDouble(employeesStr[2]), Double.parseDouble(employeesStr[3]));
i++;
}
bufferedReader.close();
fReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//添加职工
public void addEmployee(Employee[] employees, String no, String name, double height, double weight) {
if(currentNumberOfEmployees >= 100) {
System.out.println("职工管理系统存储的人数已达上限!");
}
if(currentNumberOfEmployees >= 0 || currentNumberOfEmployees < 100) {
employees[currentNumberOfEmployees] = new Employee(no, name, height, weight);
currentNumberOfEmployees++;
System.out.println("职工添加成功!");
}
}
//根据职工编号修改职工体重并打印
public void amendEmployee(Employee[] employees, String no, double newweight) {
int i;
for(i = 0; i < currentNumberOfEmployees; i++) {
if(employees[i].getNo().equals(no)) {
employees[i].setWeight(newweight);
System.out.println("新的职工信息:" + employees[i].toString());
break;
}
}
if(i == currentNumberOfEmployees) {
System.out.println("您输入的职工编号有误!");
}
}
//根据职姓名查找职工信息并打印
public void searchEmployee(Employee[] employees, String name) {
int i;
for(i = 0; i < currentNumberOfEmployees; i++) {
if(employees[i].getName().equals(name)) {
System.out.println("职工信息:" + employees[i].toString());
break;
}
}
if(i == currentNumberOfEmployees) {
System.out.println("您要查找的职工不在本信息系统中!");
}
}
//根据职工编号删除职工信息
public void deleteEmployee(Employee[] employees, String name) {
int i, j;
for(i = 0; i < currentNumberOfEmployees; i++) {
if(employees[i].getName().equals(name)) {
break;
}
}
if(i == currentNumberOfEmployees) {
System.out.println("您要删除的职工不在本信息系统中!");
}
for(; i < currentNumberOfEmployees - 1; i++) {
employees[i].setNo(employees[i+1].getNo());
employees[i].setName(employees[i+1].getName());
employees[i].setHeight(employees[i+1].getHeight());
employees[i].setWeight(employees[i+1].getWeight());
}
currentNumberOfEmployees--;
System.out.println("职工删除成功!");
}
//显示所有职工信息
public void printEmployee(Employee[] employees) {
for(int i = 0; i < currentNumberOfEmployees; i++) {
System.out.println(employees[i].toString());
}
}
}
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//打印界面
Scanner in = new Scanner(System.in);
System.out.println("职工管理系统======");
System.out.println("1.添加职工");
System.out.println("2.修改职工信息");
System.out.println("3.查找职工信息");
System.out.println("4.删除职工信息");
System.out.println("5.显示所有职工信息");
System.out.println("6.退出系统");
System.out.println("请选择......");
//创建管理系统s
EmployeeManagementSystem s = new EmployeeManagementSystem(100,5);
//系统功能实现
int choice = in.nextInt();
while(choice != 6) {
//1.添加职工
if(choice == 1) {
System.out.println("请输入要添加的职工信息(工号、姓名、身高m、体重kg 用空格分隔):");
s.addEmployee(s.employees, in.next(), in.next(), in.nextDouble(), in.nextDouble());
}
//2.修改职工信息
if(choice == 2) {
System.out.println("请输入要查找的职工编号和修改后的体重值(用空格分隔):");
s.amendEmployee(s.employees, in.next(), in.nextDouble());
}
//3.查找职工信息
if(choice == 3) {
System.out.println("请输入要查找的职工姓名:");
s.searchEmployee(s.employees, in.next());
}
//4.删除职工信息
if(choice == 4) {
System.out.println("请输入要删除的职工姓名:");
s.deleteEmployee(s.employees, in.next());
}
//5.显示所有职工信息
if(choice == 5) {
s.printEmployee(s.employees);
}
choice = in.nextInt();
}
if(choice == 6) {
try {
Writer writer = new FileWriter(new File("F:\\employees.txt"));
String str;
for(int i = 0; i < s.currentNumberOfEmployees; i++)
{
writer.write(s.employees[i].getNo() + " " + s.employees[i].getName() + " " + s.employees[i].getHeight()+ " " + s.employees[i].getWeight()+ " " + "\r\n");
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("信息已保存,您已退出职工管理系统!");
}
}
End...