需求
鍵盤錄入個員工信息(工號,姓名,年齡,居住地)存入集合。然後遍歷集合把每一個員工信息存入文本文件,實現基本的功能,增刪改查,保存到文件,從文件讀取。
基本結構
- 開發工具
- 創建員工
- 查詢員工
- 添加員工
- 刪除員工
- 修改員工
- 退出系統
開發工具
IntelliJ IDEA 2019
創建員工類
員工有工號,姓名,年齡,地址等。提供一些get和set方法,對外訪問。
public class Employee {
//員工工號
private String jobNumber;
//員工姓名
private String name;
//員工年齡
private int age;
//員工地址
private String address;
public Employee() {
}
public Employee(String jobNumber, String name, int age, String address) {
this.jobNumber = jobNumber;
this.name = name;
this.age = age;
this.address = address;
}
public String getJobNumber() {
return jobNumber;
}
public void setJobNumber(String jobNumber) {
this.jobNumber = jobNumber;
}
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
管理界面
歡迎界面,選擇所需功能。實現對應的方法。
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 select=sc.nextLine();
switch (select) {
case "1":
//查詢所有員工
findAllEmployee(fileName);
break;
case "2":
addEmployee(fileName);
break;
case "3":
deleteEmployee(fileName);
break;
case "4":
updateEmployee(fileName);
break;
case "5":
default:
System.out.println("歡迎下次使用");
System.exit(0);
break;
}
}
添加員工
添加員工信息,創建集合,添加到文件。
public static void addEmployee(String fileName) throws IOException {
//創建集合對象
ArrayList<Employee> arrayList=new ArrayList<>();
//從文件中將數據讀取
readData(fileName,arrayList);
//創建鍵盤錄入對象
Scanner sc=new Scanner(System.in);
String jobNumber;
while (true){
boolean flag=false;
System.out.println("請您輸入員工工號");
jobNumber=sc.next();
for (int i = 0; i < arrayList.size(); i++) {
Employee employee=arrayList.get(i);
if(jobNumber.equals(employee.getJobNumber())){
flag=true;
break;
}
}
if(flag){
System.out.println("對不起!您輸入的工號已經被佔用了");
}else{
break;
}
}
System.out.println("請您輸入員工姓名");
String name=sc.next();
System.out.println("請您輸入員工年齡");
int age=sc.nextInt();
System.out.println("請您輸入員工居住地");
String address=sc.next();
//創建員工
Employee e=new Employee(jobNumber,name,age,address);
arrayList.add(e);
//把集合寫到文件中
wirterData(fileName,arrayList);
//提示
System.out.println("添加成功!");
}
刪除員工
刪除員工信息,文件讀取,遍歷,判斷刪除。
public static void deleteEmployee(String fileName) throws IOException {
//創建集合對象
ArrayList<Employee> arrayList=new ArrayList<>();
//從文件中將數據讀取
readData(fileName,arrayList);
int index=-1;
//創建鍵盤錄入對象
Scanner sc=new Scanner(System.in);
System.out.println("請您輸入要刪除的員工工號");
String jobNumber = sc.next();
//要判斷這個員工是否存在
for (int i = 0; i < arrayList.size(); i++) {
Employee e=arrayList.get(i);
if(jobNumber.equals(e.getJobNumber())){
index=i;
break;
}
}
if(index==-1){
System.out.println("對不起!您要刪除工號不存在,請您重新選擇您的操作!!");
}else{
arrayList.remove(index);
//把集合寫出到文件中
wirterData(fileName,arrayList);
//提示
System.out.println("刪除成功!");
}
}
修改員工
修改員工信息,文件讀取,遍歷判斷,更新信息。
public static void updateEmployee(String fileName) throws IOException {
//創建集合對象
ArrayList<Employee> arrayList=new ArrayList<>();
//從文件中將數據讀取
readData(fileName,arrayList);
int index=-1;
//創建鍵盤錄入對象
Scanner sc=new Scanner(System.in);
System.out.println("請您輸入要修改的員工工號");
String jobNumber = sc.next();
//要判斷這個員工是否存在
for (int i = 0; i < arrayList.size(); i++) {
Employee e=arrayList.get(i);
if(jobNumber.equals(e.getJobNumber())){
index=i;
break;
}
}
if(index==-1){
System.out.println("對不起!您要修改的工號不存在,請您重新選擇您的操作!!");
}else{
System.out.println("請您輸入新員工姓名");
String name=sc.next();
System.out.println("請您輸入新員工年齡");
int age=sc.nextInt();
System.out.println("請您輸入新員工居住地");
String address=sc.next();
//創建新的員工對象
Employee e=new Employee(jobNumber,name,age,address);
//完成修改
arrayList.set(index,e);
//把集合寫出到文件
wirterData(fileName,arrayList);
//提示
System.out.println("員工信息修改成功!");
}
}
查詢員工
查詢員工信息,文件讀取,遍歷。
public static void findAllEmployee(String fileName) throws IOException {
//創建集合對象
ArrayList<Employee> arrayList=new ArrayList<>();
//從文件中將數據讀取
readData(fileName,arrayList);
//容器當中沒有員工信息
if(arrayList.size()==0){
System.out.println("抱歉,當前沒員工信息");
//結束方法
return;
}
System.out.println("工號"+" "+"姓名"+" "+"年齡"+" "+"居住地");
for (int i = 0; i < arrayList.size(); i++) {
Employee e=arrayList.get(i);
System.out.println(e.getJobNumber()+" "+e.getName()+" "+e.getAge()+" "+e.getAddress());
}
}
文件讀取
從文件讀取
public static void readData(String filNname,ArrayList<Employee> arrayList) throws IOException {
BufferedReader br=new BufferedReader(new FileReader(filNname));
String line;
while ((line=br.readLine())!=null) {
if(" ".equals(line)||line.length()==0)
{
return;
}
String[] strings=line.split(",");
int age=Integer.parseInt(strings[2]);
Employee e=new Employee(strings[0],strings[1],age,strings[3]);
arrayList.add(e);
}
br.close();
}
文件寫入
把集合中的數據寫到文件中
public static void wirterData(String fileName,ArrayList<Employee> arrayList) throws IOException {
//創建輸出流對象
BufferedWriter bw=new BufferedWriter(new FileWriter(fileName));
//遍歷集合
for(int i=0;i<arrayList.size();i++){
Employee e=arrayList.get(i);
StringBuilder sb=new StringBuilder();
sb.append(e.getJobNumber()).append(",").append(e.getName()).append(",").append(e.getAge()).append(",").append(e.getAddress());
String string=sb.toString();
bw.write(string);
bw.newLine();
}
bw.close();
}
結果展示
源碼整合源碼鏈接