Java实验4 -- 职工信息管理系统
生活随笔
收集整理的這篇文章主要介紹了
Java实验4 -- 职工信息管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
- 時間:2020.5.18
- 備注:太久沒有認真打代碼了,完成一個增刪改查就開始感動了自己…
題目
實現思路
怕作業重復率太高就先不放上來啦~
----------------2020.6.13更----------------
根據題意,分成三個類。
分成兩步走,盡可能簡潔。
第一步輸出菜單,第二步選擇后通過Dao的方法實現功能。
主要放置了職工本體的基本私有屬性,并加入自動生成的get,set,toString的方法,以便后面設置和使用參數時的調用。
包括:編號id,姓名name,性別sex,年齡age等。
分功能模塊實現。
包括:
(1) 增加一個職工;
(2) 根據職工號刪除某位職工;
(3) 根據職工號修改職工的某些信息;
(4) 將所有職工年齡增加一歲;
(5) 將數組中順序顯示所有職工信息;
(6) 將所有職工按姓名排序輸出。
其中:
1為input()增加方法。
2為delete()刪除方法。
3、4合并為update()修改方法。
5、6合并為output()查詢方法。
另外增加一個sort(Employee[] e)排序算法,用于順序輸出。
注意點:
Dao中直接使用Employee[] e = new Employee[10000];中的e時,特別容易出現空指針問題,有時需要加個臨時的Employee employee = new Employee(id,name,sex,age);賦值來實現。(在錄入和修改中都有用到。)
實現代碼
1. Main.java package exp_04; import exp_04.dao.EmployeeDao; import java.util.Scanner; import static java.lang.System.exit; public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);EmployeeDao employeeDao = new EmployeeDao();while (true){System.out.println("************ 職工信息管理系統 ************");System.out.println("1.錄入 2.刪除 3.修改 4.輸出 0.退出");System.out.println("*****************************************");System.out.print("請選擇:");int key = scan.nextInt();switch (key){case 1: // 錄入employeeDao.input();break;case 2: // 刪除employeeDao.delete();break;case 3: // 修改employeeDao.update();break;case 4: // 輸出employeeDao.output();break;case 0:exit(0);break;default:break;}}} } 2. Employee.java package exp_04.javabean; public class Employee {private String id;private String name;private String sex;private int age;static int num; //表示數組的真實大小public Employee(){}public Employee(String id, String name, String sex, int age){this.id = id;this.name = name;this.sex = sex;this.age = age;}public String toString() {return "Employee{" +"id='" + id + '\'' +", name='" + name + '\'' +", sex='" + sex + '\'' +", age=" + age +'}';}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} } 3. EmployeeDao.java package exp_04.dao; import exp_04.javabean.Employee; import java.util.Scanner; public class EmployeeDao {Scanner scan = new Scanner(System.in);int num = 0; //表示數組的真實大小Employee[] e = new Employee[10000];/* 錄入 */public void input(){while (true) {System.out.print("職工號:");String id = scan.next();if(id.equals("000")) {break;}System.out.print("姓名:");String name = scan.next();System.out.print("性別:");String sex = scan.next();System.out.print("年齡:");int age = scan.nextInt();Employee employee = new Employee(id,name,sex,age);e[num++] = employee;//這里面直接使用e[num] = scan.next()是不成功的}}/* 刪除 */public int delete(){System.out.print("請輸入要刪除的職工號:");String deleteId = scan.next();int flag = 0;for (int i = 0; i < num; i++) {if(e[i].getId().equals(deleteId)){num--;flag++;if(i == num-1) break;for (int j = i; j < num; j++) {e[j]=e[j+1];}}}if (flag == 0)System.out.println("該職工不存在!");elseSystem.out.println("刪除成功!");return flag;}/* 修改 */public void update(){System.out.println("****** 修改 ******");System.out.println("1.指定 2.全部");System.out.println("******************");System.out.print("請選擇:");int key = scan.nextInt();int flag = 0;//修改某位員工名字if(key == 1){System.out.print("請輸入要修改職工號:");String updateId = scan.next();for (int i = 0; i < num; i++) {if(e[i].getId().equals(updateId)){flag++;System.out.print("姓名:");e[i].setName(scan.next());}}if(flag == 0)System.out.println("該職工不存在!");elseSystem.out.println("修改成功!");}//修改全部職工年齡else if(key == 2){for (int i = 0; i < num; i++) {int tempAge = e[i].getAge();e[i].setAge(tempAge+1);}/*這種寫法是空指針不對的for(Employee i : e){i.setAge(i.getAge()+1);}*//*修改全部職工年齡for (int i = 0; i < num; i++) {System.out.print("請輸入第" + (i+1) + "個職工的年齡:");e[i].setAge(scan.nextInt());}*/System.out.println("修改成功!");}}/* 輸出 */public void output(){System.out.println("****** 輸出 ******");System.out.println("1.原數組 2.排序");System.out.println("******************");System.out.print("請選擇:");while(true){int key = scan.nextInt();//原數組if(key == 1){System.out.println("********** 原數組 ***********");System.out.println("職工號\t姓名\t性別\t年齡");for (int i = 0; i < num; i++) {System.out.println(e[i].getId() + "\t\t" + e[i].getName() + "\t\t" + e[i].getSex() + "\t\t" + e[i].getAge());}}//排序后數組else if(key == 2){sort(e);System.out.println("********** 排序后數組 ***********");System.out.println("職工號\t姓名\t性別\t年齡");for (int i = 0; i < num; i++) {System.out.println(e[i].getId() + "\t\t" + e[i].getName() + "\t\t" + e[i].getSex() + "\t\t" + e[i].getAge());}}//退出else{break;}}}/* 排序 */public void sort(Employee[] e){Employee t = new Employee();for (int i = 0; i < num ; i++) {for (int j = i+1; j < num; j++) {//Str1.compareTo(Str2);//其返回的是一個int類型值。若Str1等于參數字符串Str2字符串,則返回0;// 若該Str1按字典順序小于參數字符串Str2,則返回值小于0;若Str1按字典順序大于參數字符串Str2,則返回值大于0。if(e[i].getName().compareTo(e[j].getName())>0){t = e[i];e[i] = e[j];e[j] = t;}}}} }實現結果圖
也擔心重復率太高,也擔心兜兜之后會懶,就先不放上來了。
代碼還是自己打下比較好,純做個參考。
----------------2020.6.13更----------------
-
↓ 圖 1 錄入部分
-
↓圖 2 輸出錄入部分
-
↓圖 3 刪除一條記錄并輸出
-
↓圖 4 修改一條記錄并輸出
-
↓圖 5 修改所有記錄并輸出
-
↓圖 6 退出程序
- ↓補充1:
由于之前沒看清題目,導致對update修改方法里,修改全部的有誤解。
現更改后的結果如下:
(原本是自行輸入修改后的各個年齡,
現在代碼中已改為題目要求的所有年齡+1)
- ↓補充2:
后來同學在問些排序問題時,
我發現了自己還有個看錯題目的問題
將排序以學號排序了,
現已把前面代碼改了,
效果如下邊。
總結
以上是生活随笔為你收集整理的Java实验4 -- 职工信息管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地图图元的闪烁效果制作
- 下一篇: windows符号服务器地址