员工管理系统实现起来还是比较简单的,建一个员工类,里面包含员工的工号、姓名、年龄、性别和专业属性
public class Staff {
private int id;
private String name;
private int age;
private String sex;
private String specialty;
public Staff(int id, String name, int age, String sex, String specialty) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.specialty = specialty;
}
public Staff(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSpecialty() {
return specialty;
}
public void setSpecialty(String specialty) {
this.specialty = specialty;
}
}
设置完员工的属性后,需要存储员工的信息,我用的是ArrayList动态数组存储员工信息
ArrayList动态数组还是比较强大的,它不像数组要定义数组的长度,并且它的操作性很强,自带许多的方法,例如add()、clear()、get()...
public class StaffManager {
public static void main(String[] args) {
ArrayList<Staff> array = new ArrayList<>();
while (true) {
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("请输入您的选择:");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
switch (line) {
case "1":
System.out.println("添加员工");
add(array);
break;
case "2":
delete(array);
break;
case "3":
update(array);
break;
case "4":
find(array);
break;
case "5":
System.out.println("谢谢使用");
System.exit(0);
}
}
}
public static void add(ArrayList<Staff> array) {
Scanner sc = new Scanner(System.in);
String id;
while (true) {
System.out.println("请输入员工号:");
id = sc.nextLine();
boolean flag = isUsed(array, id);
if (flag) {
System.out.println("你输入的员工号已经被使用,请重新输入");
} else {
break;
}
}
System.out.println("请输入员工姓名:");
String name = sc.nextLine();
System.out.println("请输入员工年龄:");
String age = sc.nextLine();
System.out.println("请输入员工性别:");
String sex = sc.nextLine();
System.out.println("请输入员工专业:");
String specialty = sc.nextLine();
Staff s = new Staff();
s.setId(Integer.parseInt(id));
s.setName(name);
s.setAge(Integer.parseInt(age));
s.setSex(sex);
s.setSpecialty(specialty);
array.add(s);
System.out.println("添加员工成功");
}
public static boolean isUsed(ArrayList<Staff> array, String id) {
boolean flag = false;
for (int i = 0; i < array.size(); i++) {
Staff s = array.get(i);
if (s.getId()==Integer.parseInt(id)) {
flag = true;
break;
}
}
return flag;
}
public static void find(ArrayList<Staff> array) {
if (array.size() == 0) {
System.out.println("无信息,请先添加信息再查询");
} else {
System.out.println("员工号\t\t姓名\t\t\t\t年龄\t\t\t\t\t性别\t\t\t\t\t专业");
for (int i = 0; i < array.size(); i++) {
Staff s = array.get(i);
System.out.println(s.getId() + "\t\t\t" + s.getName() + "\t\t\t\t" + s.getAge() + "岁\t\t\t\t" + s.getSex()+"\t\t\t\t"+s.getSpecialty());
}
}
}
public static void delete(ArrayList<Staff> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要删除的员工号:");
String id = sc.nextLine();
int index = -1;
for (int i = 0; i < array.size(); i++) {
Staff s = array.get(i);
if (s.getId()==(Integer.parseInt(id))) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("该员工不存在,请重新输入");
} else {
array.remove(index);
System.out.println("删除成功");
}
}
public static void update(ArrayList<Staff> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要修改的员工号:");
String id = sc.nextLine();
int index = -1;
for (int i = 0; i < array.size(); i++) {
Staff staff = array.get(i);
if (staff.getId()==(Integer.parseInt(id))) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("该员工不存在,请重新输入");
} else {
System.out.println("请输入员工新的姓名:");
String name = sc.nextLine();
System.out.println("请输入员工新的年龄:");
String age = sc.nextLine();
System.out.println("请输入员工新的性别:");
String sex = sc.nextLine();
System.out.println("请输入员工新的专业:");
String specialty = sc.nextLine();
Staff s = new Staff();
s.setId(Integer.parseInt(id));
s.setName(name);
s.setAge(Integer.parseInt(age));
s.setSex(sex);
s.setSpecialty(specialty);
array.set(index, s);
System.out.println("修改员工信息成功");
}
}
}
后面对员工信息的增添删改都是对动态数组的一个操作
我谈下我对动态数组的一个理解吧,纯属个人观点,如有误还请指点
普通的一维数组,例如int[ ]、String[ ]、char[ ] 这些数组,在使用前这个数组的长度已经是定下来了无法改变得。就像建房子一样,这房子只有一层并且它的长度也不能扩大,所以里面的房间数量也是一个定值,这里的房间数量也就是数组的长度。
而动态数组,像我们这里的动态数组里面存放的是Staff类,而Staff类有五个属性,那么也就是把动态数组的长度给定下来了,就是一层楼也只有五个房间,但是它与普通的一维数组不同,它能够增加它的高度
也就是像这样一样,它的宽度不能变,但是它的高度能根据需要而增加或减少,所以它才叫动态数组