【Java實踐 I】簡易人事管理系統
阿新 • • 發佈:2019-01-22
原始碼和資料庫:https://github.com/xuna123/java-study
推薦一個介面設計特別好用的外掛 : windows builderhttp://blog.csdn.net/xunalove/article/details/72621194
專案執行結果
環境
作業系統:WIN7
編譯器 : eclipse
介面設計工具:windows builder
資料庫 : Access
模板介紹
簡易人事管理系統麻雀雖小,五臟俱全, 完成人員基本資訊的操作,重要包含5個模組。
- 登入介面(系統的入口)
- 包含註冊,登入的驗證
- 基本人員資訊管理(人員基本資訊操作)
- 新增,修改,刪除,查詢
- 部門管理(部門的操作)
- 新增,修改,刪除,查詢
- 人員調動管理 (記錄人員調動的資訊)
- 人員調動
- 調動歷史查詢
- 人員考核記錄 (記錄人員考核的情況)
- 人員考核
- 調動歷史查詢
- 勞資管理(記錄人員薪資的變化情況)
- 勞資分配管理
- 勞資歷史查詢
資料庫設計
主要包括使用者登入登錄檔User,人員資訊表Person, 部門表Dept , 人員歷史資訊表 Histrjn, 考核歷史資訊表Test,薪資歷史資訊表Salary。
功能設計
1. 簡易驗證碼如何實現?
答:通過隨機函式產生兩個10~20範圍的數字,計算出結果,登入是判斷當前文字框輸入的內容是否和正確答案一致。
對應程式碼:
//簡易驗證碼設計
int max=20,min=10;
Random random = new Random();
a = random.nextInt(max)%(max-min+1) + min;
b = random.nextInt(max)%(max-min+1) + min;
c = a+b;
String temp = Integer.toString(a) + " + " + Integer.toString(b) + " = ?";
textField_2.setText(temp) ;
2. 如何判斷你輸入的使用者名稱和密碼正確?
答:把輸入的使用者名稱當做已知條件,在資料庫中查詢對應的password(類似於 y = 3x,給你x,求y),判斷資料庫中的password是否和輸入文字框中的密碼一直。
String username =null,password=null,check=null;
int n;
username = textField.getText().trim();
password = passwordField .getText().trim();
check = textField_3.getText().trim();
n = Integer.parseInt(check);
String sql = "select password from User where username='"+username+"'";
Connection con = a1.getConn();//此處為通過自己寫的方法getConn()獲得連線
try{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql); //ResultSet類,用來存放獲取的結果集!!
String temp=null;
while(rs.next())
{
temp = rs.getString(1);
}
System.out.println("n= "+n);
System.out.println("c= "+ c);
if(temp.equals(password))
{
if(n == c)
{
HrMain window = new HrMain();
window.frame.setVisible(true);
}
else
{
JOptionPane.showMessageDialog(null, "驗證碼錯誤");
}
}
else
{
JOptionPane.showMessageDialog(null, "使用者名稱或者密碼不正確");
}
rs.close();
con.close();
}
catch(SQLException e1)
{
e1.printStackTrace();
}
答:把輸入的使用者名稱當做已知條件,在資料庫中查詢對應的
3. 修改或者刪除部門時,若部門下有人員應該如何處理?
答:對於修改來說,修改部門相應的修改部門下的人員的部門資訊。對於刪除來說,若刪除的部門下有人則取消刪除。修改具體實現步驟為:選中部門,根據部門id查詢人員資訊表,如表中返回有值,則更新人員資訊表,反之直接修改。刪除部門思路類似。
if(cmd.equals("修改"))
{
String DeptID = textField.getText().trim();
String B_Dept = textField_1.getText().trim();
String S_Dept = textField_2.getText().trim();
String res="";
int i = 0;
Connection con = a.getConn();
String sql_old = "select * from Dept where DeptID="+DeptID;
try
{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql_old); //ResultSet類,用來存放獲取的結果集!!
while(rs.next()){
res+=rs.getString(1); res+="-";
res+=rs.getString(2); res+="-";
res+=rs.getString(3);}
System.out.println("res="+res);
String sql = "update Dept set DeptID=?,B_Dept=?,S_Dept=? where DeptID='"+DeptID+"'";
String sql2 ="update Person set DeptID=? where DeptID='" + res +"'";
PreparedStatement pst = con.prepareStatement(sql);
pst.setString(1, DeptID);
pst.setString(2, B_Dept);
pst.setString(3, S_Dept);
i = pst.executeUpdate();
System.out.println("sql="+i);
PreparedStatement pst1 = con.prepareStatement(sql2);
pst1.setString(1,DeptID+"-"+B_Dept+"-"+S_Dept);
System.out.println("sql2="+sql2);
i = pst1.executeUpdate();
System.out.println("sql2="+i);
JOptionPane.showMessageDialog(null, "修改成功");
}
catch (Exception e1) {
e1.printStackTrace();
JOptionPane.showMessageDialog(null, "失敗,新增資料不完整或者重複新增等其他原因");
}
System.out.println(i);
}