package a;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
//定义程序变量
class Worker implements Serializable{
String number,name,worktime,salary,borth,age,sex;
public Worker(){};
public void setNumber(String number){ this.number=number;}
public String getNumber(){ return number;}
public void setName(String name){ this.name=name;}
public String getName(){ return name;}
public void setSex(String sex){ this.sex=sex;}
public String getSex(){ return sex;}
public void setSalary(String Salary){ this.worktime=Salary;}
public String getSalary(){ return worktime;}
public void setWorktime(String Worktime){ this.salary=Worktime;}
public String getWorktime(){ return salary;}
public void setBorth(String borth){ this.borth=borth;}
public String getBorth(){ return borth;}
public void setAge(String age){ this.age=age;}
public String getAge(){ return age;}
}
//程序面板设计
public class Personnel extends JFrame{
JLabel lb=new JLabel("录入前请先输入数据,查询、删除前请先输入编号,修改是对查询" +
"内容改后的保存!");
JTextField 员工号,姓名,工作时间,工资,出生年月日,年龄;//JTextField编辑单行文本
JRadioButton 男,女;//JRadioButton实现一个单选按钮
ButtonGroup group=null;//二选一
JButton 录入,查询,删除,修改,显示;
JPanel p1,p2,p3,p4,p5,p6,p7,pv,ph;//输入区域
Worker 员工=null;
Hashtable 员工散列表=null;
File file=null;
FileInputStream inOne=null;//从文件系统中的某个文件中获得输入字节
ObjectInputStream inTwo=null;
FileOutputStream outOne=null;
ObjectOutputStream outTwo=null;
public Personnel(){
super("员工基本信息管理系统");
//员工信息的输入
员工号=new JTextField(10);
姓名=new JTextField(10);
工作时间=new JTextField(10);
工资=new JTextField(10);
出生年月日=new JTextField(10);
年龄=new JTextField(10);
group=new ButtonGroup();
男=new JRadioButton("男",true);
女=new JRadioButton("女",true);
group.add(男);
group.add(女);
//建立按钮
录入=new JButton("录入");
查询=new JButton("查询");
删除=new JButton("删除");
修改=new JButton("修改");
显示=new JButton("显示");
录入.addActionListener(new InputAct());
查询.addActionListener(new InquestAct());
修改.addActionListener(new ModifyAct());
删除.addActionListener(new DeleteAct());
显示.addActionListener(new ShowAct());
修改.setEnabled(false);
p1=new JPanel();
p1.add(new JLabel("员工号:",JLabel.CENTER));
p1.add(员工号);
p2=new JPanel();
p2.add(new JLabel("姓名:",JLabel.CENTER));
p2.add(姓名);
p3=new JPanel();
p3.add(new JLabel("性别:",JLabel.CENTER));
p3.add(男);
p3.add(女);
p4=new JPanel();
p4.add(new JLabel("工作时间:",JLabel.CENTER));
p4.add(工作时间);
p5=new JPanel();
p5.add(new JLabel("工资:",JLabel.CENTER));
p5.add(工资);
p6=new JPanel();
p6.add(new JLabel("出生年月日:",JLabel.CENTER));
p6.add(出生年月日);
p7=new JPanel();
p7.add(new JLabel("年龄:",JLabel.CENTER));
p7.add(年龄);
pv=new JPanel();
pv.setLayout(new GridLayout(6,1));//6行1列的布局
pv.add(p1);
pv.add(p2);
pv.add(p3);
pv.add(p4);
pv.add(p5);
pv.add(p6);
pv.add(p7);
ph=new JPanel();
ph.add(录入);
ph.add(查询);
ph.add(修改);
ph.add(删除);
ph.add(显示);
file=new File("c://员工信息.txt");
员工散列表=new Hashtable();
if(!file.exists()){
try{
FileOutputStream out=new FileOutputStream(file);
ObjectOutputStream objectOut=new ObjectOutputStream(out);
objectOut.writeObject(员工散列表);
objectOut.close();
out.close();
}
catch(IOException e){}
}
Container con=getContentPane();
con.setLayout(new BorderLayout());
con.add(lb, BorderLayout.NORTH);
con.add(pv, BorderLayout.CENTER);
con.add(ph, BorderLayout.SOUTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100,100,600,300);
setVisible(true);//可见
}
//输入信息
public static void main(String[] args) {new Personnel();}
class InputAct implements ActionListener{
public void actionPerformed(ActionEvent e){
修改.setEnabled(false);
String number="";
number=员工号.getText();
if(number.length()>0){
try{
inOne=new FileInputStream(file);
inTwo=new ObjectInputStream(inOne);
员工散列表=(Hashtable)inTwo.readObject();
inOne.close();
inTwo.close();
}
catch(Exception ee){System.out.println("创建散列表出现问题!");}
if(员工散列表.containsKey(number)){
String warning="该员工信息已存在,请到修改页面修改!";
JOptionPane.showMessageDialog(null,warning,"警告",
JOptionPane.WARNING_MESSAGE);
}
else{
String m="该员工信息将被录入!";
int ok=JOptionPane.showConfirmDialog(null,m,"确认",
JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);
if(ok==JOptionPane.YES_OPTION){
String name=姓名.getText();
String Salary=工作时间.getText();
String Worktime=工资.getText();
String borth=出生年月日.getText();
String age=年龄.getText();
String sex=null;
if(男.isSelected()){sex=男.getText();}
else{sex=女.getText();}
员工=new Worker();
员工.setNumber(number);
员工.setName(name);
员工.setSalary(Salary);
员工.setWorktime(Worktime);
员工.setBorth(borth);
员工.setAge(age);
员工.setSex(sex);
try{
outOne=new FileOutputStream(file);
outTwo=new ObjectOutputStream(outOne);
员工散列表.put(number,员工);
outTwo.writeObject(员工散列表);
outTwo.close();
outOne.close();
}
catch(Exception ee){System.out.println("输出散列表出现问题!");}
员工号.setText(null);
姓名.setText(null);
工作时间.setText(null);
工资.setText(null);
出生年月日.setText(null);
年龄.setText(null);
}
}
}
else{
String warning="必须输入员工号!";
JOptionPane.showMessageDialog(null,warning,
"警告",JOptionPane.WARNING_MESSAGE);
}
}
}
//查询员工信息
class InquestAct implements ActionListener{
public void actionPerformed(ActionEvent e){
String number="";
number=员工号.getText();
if(number.length()>0){
try{
inOne=new FileInputStream(file);
inTwo=new ObjectInputStream(inOne);
员工散列表=(Hashtable)inTwo.readObject();
inOne.close();
inTwo.close();
}
catch(Exception ee){System.out.println("散列表有问题!");}
if(员工散列表.containsKey(number)){
修改.setEnabled(true);
Worker wor=(Worker)员工散列表.get(number);
姓名.setText(wor.getName());
工作时间.setText(wor.getSalary());
工资.setText(wor.getWorktime());
出生年月日.setText(wor.getBorth());
年龄.setText(wor.getAge());
if(wor.getSex().equals("男")){男.setSelected(true);}
else{女.setSelected(true);}
}
else{
修改.setEnabled(false);
String warning="该员工号不存在!";
JOptionPane.showMessageDialog(null,warning,
"警告",JOptionPane.WARNING_MESSAGE);
}
}
else{
修改.setEnabled(false);
String warning="必须输入员工号!";
JOptionPane.showMessageDialog(null,warning,
"警告",JOptionPane.WARNING_MESSAGE);
}
}
}
//更改员工信息
class ModifyAct implements ActionListener{
public void actionPerformed(ActionEvent e){
String number=员工号.getText();
String name=姓名.getText();
String Salary=工作时间.getText();
String Worktime=工资.getText();
String borth=出生年月日.getText();
String age=年龄.getText();
String sex=null;
if(男.isSelected()){sex=男.get