程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 初學Java7:簡單設計人力資源管理系統,

初學Java7:簡單設計人力資源管理系統,

編輯:JAVA綜合教程

初學Java7:簡單設計人力資源管理系統,


1,人力資源管理系統,實現查詢、添加、修改、刪除的功能。
2,寫查詢,添加,修改,刪除四個方法,並能實現將輸入的數據保存到硬盤,待下次啟動程序能從硬盤加載出來。
3,異常處理,數據有效性驗證。
4,單獨建立一個員工類(public class Person),屬性包括編號、姓名、性別、年齡。
5,HRMS源代碼:

  1 package azhi0901;
  2 
  3 import java.io.*;
  4 import java.util.*;
  5 
  6 public class HRMS {
  7     // 定義輸入
  8     public static Scanner sc = new Scanner(System.in);
  9     // 定義Map鍵值對存輸入數據
 10     public static HashMap<Integer, Person> map = new HashMap<Integer, Person>();
 11 
 12     // 主方法入口
 13     // 全文的異常有的用“throws Exception”的方式拋出,(這個簡單)
 14     // 有的用“try...catch”形式拋出,(這個更好)
 15     public static void main(String[] args) throws Exception {
 16         loadData();// 加載數據
 17         while (true) {// 死循環
 18             getLine(3);// 空出3行,方便查看
 19             System.out.println("**********************************************");
 20             System.out.println("*            人力資源管理系統                 *");
 21             System.out.println("**********************************************");
 22             System.out.println("*             1,查看員工信息                  *");
 23             System.out.println("*             2,添加員工信息                  *");
 24             System.out.println("*             3,修改員工信息                  *");
 25             System.out.println("*             4,刪除員工信息                  *");
 26             System.out.println("*             0,退出系統                      *");
 27             System.out.println("**********************************************");
 28             System.out.print("請選擇:");
 29             int num = sc.nextInt();// 輸入num選擇菜單
 30             if (num == 0) {
 31                 saveData();
 32                 System.out.println("謝謝使用!");
 33                 break;
 34             } else {
 35                 switch (num) {
 36                 case 1:
 37                     query();// 查詢
 38                     break;
 39                 case 2:
 40                     add();// 添加
 41                     break;
 42                 case 3:
 43                     update();// 修改
 44                     break;
 45                 case 4:
 46                     del();// 刪除
 47                 }
 48             }
 49         }
 50     }
 51 
 52     // 加載數據
 53     private static void loadData() throws Exception {
 54         // 定義字節流,從F:/HRMS.txt加載數據
 55         FileInputStream in = new FileInputStream("F:/HRMS.txt");
 56         // 轉成字符流
 57         InputStreamReader isr = new InputStreamReader(in);
 58         // 轉化成緩沖字符流
 59         BufferedReader br = new BufferedReader(isr);
 60         // 逐行讀取
 61         String s = br.readLine();
 62         // 分拆數據
 63         while (s != null) {
 64             // s.split("\t")API的解釋:根據給定正則表達式的匹配拆分此字符串。
 65             // 正則表達式???
 66             String[] ss = s.split("\t");
 67             // 數據類型轉化
 68             int id = Integer.parseInt(ss[0]);
 69             String name = ss[1];
 70             String sex = ss[2];
 71             int age = Integer.parseInt(ss[3]);
 72             // 封裝到Peron
 73             Person p = new Person(id, name, sex, age);
 74             // 放入map
 75             map.put(p.getId(), p);
 76             // 讀出下一行
 77             s = br.readLine();
 78         }
 79         // 這個關閉輸入流的我問了老師,為什麼關閉in?isr和br也可以關閉的。
 80         // 解釋:in是底層的,關閉in就夠了
 81         in.close();
 82     }
 83 
 84     // 保存數據
 85     public static void saveData() throws Exception {
 86         // 在退出的時候將整個map裡的數據全部保存
 87         FileOutputStream out = new FileOutputStream("F:/HRMS.txt");
 88         OutputStreamWriter osw = new OutputStreamWriter(out);
 89         // 轉成打印流[System.out.println()控制台]
 90         PrintWriter pw = new PrintWriter(osw, true);
 91         // 遍歷map
 92         // map.keySet():返回此映射中包含的鍵的 Set 視圖。(API)
 93         Set<Integer> keys = map.keySet();// 所有鍵
 94         for (int id : keys) {
 95             Person p = map.get(id);
 96             String s = p.getId() + "\t" + p.getName() + "\t" + p.getSex() + "\t" + p.getAge();
 97             // 寫入文件
 98             pw.println(s);
 99         }
100         out.close();
101     }
102 
103     // 查詢
104     public static void query() {
105         getLine(3);
106         System.out.println("==>查詢員工:" + "\n");
107         System.out.println("編號\t" + "姓名\t" + "性別\t" + "年齡");
108         Set<Integer> keys = map.keySet();
109         for (Integer integer : keys) {
110             Person p = map.get(integer);
111             System.out.println(p.getId() + "\t" + p.getName() + "\t" + p.getSex() + "\t" + p.getAge());
112         }
113     }
114 
115     // 添加
116     public static void add() {
117         // 編號,姓名,性別,年齡
118         System.out.println("==>添加員工:" + "\n");
119         try {
120             int id = 1;
121             System.out.print("姓名:");
122             String name = sc.next();
123 
124             System.out.print("性別:");
125             String sex = sc.next();
126 
127             System.out.print("年齡:");
128             int age = sc.nextInt();
129 
130             Person person = new Person(id, name, sex, age);
131             map.put(person.getId(), person);
132             System.out.println("添加成功!");
133         } catch (Exception e) {
134             System.out.println(e.getMessage());
135             System.out.println("添加失敗!");
136         }
137 
138     }
139 
140     // 修改
141     public static void update() {
142         try {
143             System.out.println("==>修改員工:" + "\n");
144             System.out.print("請輸入您要修改員工的編號:");
145             int Id = sc.nextInt();
146             if (map.containsKey(Id)) {
147                 System.out.println("\n編號\t" + "姓名\t" + "性別\t" + "年齡");
148                 Person p = map.get(Id);
149                 System.out.println(p.getId() + "\t" + p.getName() + "\t" + p.getSex() + "\t" + p.getAge());
150                 System.out.println("\n請輸入你要修改的 1,姓名 2,性別 3,年齡 :");
151                 int num2 = sc.nextInt();
152                 switch (num2) {
153                 case 1:
154                     System.out.print("姓名:");
155                     String name = sc.next();
156                     map.get(Id).setName(name);
157                     break;
158                 case 2:
159                     System.out.print("性別:");
160                     String sex = sc.next();
161                     map.get(Id).setSex(sex);
162                     break;
163                 case 3:
164                     System.out.print("年齡:");
165                     int age = sc.nextInt();
166                     map.get(Id).setAge(age);
167                     break;
168                 default:
169                     System.out.println("輸入錯誤!");
170                     break;
171                 }
172                 System.out.println("修改成功!");
173             }
174         } catch (Exception e) {
175             System.out.println(e.getMessage());
176             System.out.println("修改失敗!");
177         }
178     }
179 
180     // 刪除
181     public static void del() {
182         System.out.println("==>刪除員工:" + "\n");
183         System.out.print("請輸入您要刪除員工的編號:");
184         int Id = sc.nextInt();
185         if (map.containsKey(Id)) {
186             System.out.println("\n編號\t" + "姓名\t" + "性別\t" + "年齡");
187             Person p = map.get(Id);
188             System.out.println(p.getId() + "\t" + p.getName() + "\t" + p.getSex() + "\t" + p.getAge());
189             System.out.print("\n確認刪除該員工信息嗎?y/n:");
190             String a = sc.next();
191             if (a.equals("y")) {
192                 map.remove(Id);
193                 System.out.println("\n刪除成功!");
194             }
195         }
196     }
197 
198     // 取得空行
199     public static void getLine(int lines) {
200         for (int i = 0; i < lines; i++) {
201             System.out.print("\n");
202         }
203     }
204 }

6,Person源代碼:

 1 package azhi0901;
 2 
 3 public class Person {
 4     // 類屬性,員工總數
 5     static int total = 1;
 6     // 以下都為員工屬性
 7     private int id;
 8     private String name;
 9     private String sex;
10     private int age;
11 
12     // 構造器
13     Person(int id, String name, String sex, int age) {
14         this.id = id;
15         if (name == null)
16             throw new RuntimeException("輸入姓名無效!");
17         this.name = name;
18 
19         if (sex.equals("男") || sex.equals("女"))
20             this.sex = sex;
21         else
22             throw new RuntimeException("輸入性別無效!");
23 
24         if (age < 0 || age > 200)
25             throw new RuntimeException("輸入年齡無效!");
26         this.age = age;
27 
28         this.id = total;
29         total++;
30     }
31 
32     public int getId() {
33         return id;
34     }
35 
36     public void setId(int id) {
37         this.id = id;
38     }
39 
40     public String getName() {
41         return name;
42     }
43 
44     public void setName(String name) {
45         if (name == null)
46             throw new RuntimeException("輸入姓名無效!");
47         this.name = name;
48     }
49 
50     public String getSex() {
51         return sex;
52     }
53 
54     public void setSex(String sex) {
55         if (sex.equals("男") || sex.equals("女"))
56             this.sex = sex;
57         else
58             throw new RuntimeException("輸入性別無效!");
59 
60     }
61 
62     public int getAge() {
63         return age;
64     }
65 
66     public void setAge(int age) {
67         if (age < 0 || age > 200)
68             throw new RuntimeException("輸入年齡無效!");
69         this.age = age;
70     }
71 
72 }

  這個代碼還有一些bug,之後還會修改。 

7,效果預覽

  添加

  

  數據有效性驗證

  查詢

 

  修改

  

  刪除

  文件

  這次做的這個人力資源管理系統,綜合性較以往的增加了不少,需要用到的東西也很多,算是之前所學知識點的一個集合運用吧。其中大概需要用到的重點有:String,Integer,數據類型的轉換,層次結構中的map存儲鍵值對,類的聲明與實例化,構造方法,一般方法,方法重寫,this關鍵字,static關鍵字,數據有效性驗證,異常處理,輸入輸出等等。對於選擇的if,switch和循環的for,while一直都是最基礎的重點。我個人對以上的一些東西掌握也還不熟悉,有的代碼需要參照老師的案列才能寫出來,額...多練吧。有一點需要特別強調,我是越來越喜歡編程了!很享受寫代碼的過程,尤其結果出來後更讓人興奮不已。雖然很菜,但是就像你不能阻止一個平凡且能力低微的人對一個美好事物的追求並為之努力改變、提升。另外對於自己寫博客這事,開始是想著記錄自己所學的經歷,當然現在也是。那天跟一個學java已久的同學聊到我在寫博客,他說“你牛!”,貌似寫博客的都是大神,而我這樣的菜鳥算是無知無畏吧。我會堅持下去!

 

                                              A_zhi

                                             2016/9/4     

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved