代码结构:
business 包
EmployeeManager类
data包
AccessFile类
ui包
AddFrame类
MainFrame类
vo包
Employee类
效果展示:
EmployeeManager类:
package business;
import java.util.*;
import data.AccessFile;
import vo.Employee;
//实现所有的业务功能:新增员工,修改员工信息,删除员工信息,各种查询员工信息
public class EmployeeManager {
AccessFile af;
public EmployeeManager()
{
af=new AccessFile();
}
/**
* 新增员工
* @param e:待新增的员工对象
* @return:新增的结果的布尔值
*/
public boolean addEmployee(Employee e)
{
boolean result=false;
try {
//从文件读取集合,讲雇员加入集合,再将集合写入文件
List employees=af.readFile();
employees.add(e);
af.writeFile(employees);
result=true;
} catch (Exception e2) {
e2.printStackTrace();
}
return result;
}
//获取所有员工的信息
public List getEmployees() {
return af.readFile();
}
//根据id号进行查询
public Employee findEmployeeByID(String id) {
Employee employee=null;
//得到所有员工
List<Employee> employees=this.getEmployees();
for (Employee ee : employees) {
if (ee.getId().equals(id)) {
employee=ee;
break;
}
}
return employee;
}
//根据name进行查询
public List<Employee> findEmployeeByName(String name) {
List<Employee> emps=new ArrayList<Employee>();
//得到所有员工
List<Employee> employees=this.getEmployees();
for(Employee ee:employees) {
if (ee.getName().contains(name)) {
emps.add(ee);
}
}
return emps;
}
//用性别查找
public List<Employee> findEmployeeBysex(String sex) {
List<Employee> emps=new ArrayList<Employee>();
//得到所有员工
List<Employee> employees=this.getEmployees();
for(Employee ee:employees) {
if (ee.getSex().equals(sex)) {
emps.add(ee);
}
}
return emps;
}
public boolean deleteEmployee(String id) {
boolean result = false;
try {
List<Employee> employees = this.getEmployees();
Employee e = this.findEmployeeByID(id);
if(e == null) {
return false;
}
for (int i = 0; i<employees.size();i++) {
Employee ee = employees.get(i);
if(ee.getId().equals(id)) {
employees.remove(i);
af.writeFile(employees);
result = true;
break;
}
}
}catch(Exception ex) {
ex.getStackTrace();
}
return result;
}
/**
* 修改雇员
* @param id:雇员id号
* @param newemp:新的雇员信息
* @return
*/
public boolean updateEmployee(String id, Employee newemp)
{
boolean result=false;
try {
List<Employee> employees=this.getEmployees();
for(Employee ee:employees)
{
if(ee.getId().equals(id))
{
ee.setPost(newemp.getPost());
ee.setName(newemp.getName());
ee.setSex(newemp.getSex());
ee.setDuty(newemp.getDuty());
ee.setDegree(newemp.getDegree());
ee.setDept(newemp.getDept());
break;
}
}
af.writeFile(employees);
result=true;
}catch(Exception ex)
{
ex.printStackTrace();
}
return result;
}
}
AccessFile类:
package data;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
//访问文件
public class AccessFile {
public static final String FILENAME="D:\\employee.dat";
/**
* 将集合employees写入文件
* @param employees:List集合对象
*/
public void writeFile(List employees)
{
//初始情况
if(employees==null)
{
employees=new ArrayList();
}
try {
FileOutputStream fout=new FileOutputStream(FILENAME);//节点流
ObjectOutputStream objout=new ObjectOutputStream(fout);//处理流
objout.writeObject(employees);//将集合对象写入文件
objout.flush();
objout.close();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
/**
* 读文件
* @return:返回读出的集合对象
*/
public List readFile()
{
List employees=null;
try
{
File file=new File(FILENAME);
if(file.exists()==false)//文件不存在
{
this.writeFile(null);//利用写文件的方法来创建文件
}
if(file.length()==0)//文件存在,但是文件是空的
{
return employees;
}
FileInputStream fin=new FileInputStream(file);//节点流
ObjectInputStream objin=new ObjectInputStream(fin);//处理流
employees=(List)objin.readObject();
objin.close();
}catch(Exception ex)
{
ex.printStackTrace();
}
return employees;
}
}
AddFrame类:
package ui;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTabbedPane;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JPasswordField;
import javax.swing.JEditorPane;
import java.awt.event.ActionListener;
import java.util.List;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.border.EtchedBorder;
import business.EmployeeManager;
import data.AccessFile;
import vo.Employee;
import java.awt.Font;
import javax.swing.JTextPane;
import javax.swing.AbstractButton;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JScrollBar;
import javax.swing.JProgressBar;
import javax.swing.ImageIcon;
public class AddFrame extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private final JButton btnNewButton = new JButton("\u4FDD\u5B58");
private JTextField textField_5;
JComboBox comboBox_2,comboBox_3,comboBox_1,comboBox,comboBox_4;
EmployeeManager em;
AccessFile af;
String id;
public AddFrame(String id)
{
this();//调用不带参的构造方法
//获取传递过来的id
this.id=id;
//将id赋给文本框
this.textField.setText(id);
//根据id号找到雇员
Employee e=em.findEmployeeByID(id);
//将原来雇员的信息填充到相应的组件上
textField_4.setText(e.getName());
comboBox_2.setSelectedItem(e.getSex());
comboBox_3.setSelectedItem(e.getDept()