首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 入門專案:人力資源管理系統(HRMS)完整實作

     編輯:Java 綜合教學

專案需求

  • 功能:查詢、新增、修改、刪除員工資料。
  • 資料持久化:退出時存檔,啟動時載入(文字檔)。
  • 異常處理與資料驗證(姓名非空、性別男/女、年齡 0-200)。
  • 獨立 Person 類別封裝屬性與驗證邏輯。

架構設計

  • HRMS 主類:控制選單迴圈、檔案 IO、業務流程。
  • Person 實體:id、name、sex、age + 驗證邏輯。
  • 使用 HashMap<Integer, Person> 記憶體存儲。
  • 檔案格式:Tab 分隔 id\tname\tsex\tage。

核心程式碼片段

Person 類(含驗證)

package azhi0901;

public class Person {
    private static int total = 1; // 自動編號
    private int id;
    private String name;
    private String sex;
    private int age;

    public Person(int id, String name, String sex, int age) {
        this.id = total++;
        if (name == null) throw new RuntimeException("姓名不能為空");
        this.name = name;
        if (!"男".equals(sex) && !"女".equals(sex)) throw new RuntimeException("性別只能是男/女");
        this.sex = sex;
        if (age < 0 || age > 200) throw new RuntimeException("年齡範圍 0-200");
        this.age = age;
    }
    // getter/setter 同樣加入驗證...
}

檔案讀寫

// 載入
private static void loadData() throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("F:/HRMS.txt")));
    String line;
    while ((line = br.readLine()) != null) {
        String[] ss = line.split("\t");
        Person p = new Person(Integer.parseInt(ss[0]), ss[1], ss[2], Integer.parseInt(ss[3]));
        map.put(p.getId(), p);
    }
    br.close();
}

// 存檔
public static void saveData() throws Exception {
    PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("F:/HRMS.txt")), true);
    for (Integer id : map.keySet()) {
        Person p = map.get(id);
        pw.println(p.getId() + "\t" + p.getName() + "\t" + p.getSex() + "\t" + p.getAge());
    }
    pw.close();
}

主選單迴圈

驗證失敗
查詢列表
修改畫面
刪除確認
資料檔案

知識點總結

  • 集合 Map 做鍵值存儲
  • IO 流鏈:FileInputStream → InputStreamReader → BufferedReader
  • 異常處理:throws Exception + try-catch
  • 資料驗證:建構子與 setter 雙重防護
  • 靜態變數實現自動編號

待改進

  • ID 衝突:載入舊資料後 total 未同步,新增會重複。
  • 硬編碼路徑 F:/HRMS.txt 應改為相對路徑或配置。
  • 介面可改用 Swing/JavaFX 圖形化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved