JAVA+SQL實訓報告--工資管理系統(詳細)


 

 

 

JAVA+SQL實訓報告--工資管理系統(詳細)

 

 

 

 

   目:          

   別:            

   業:             

學生姓名:                

   號:            

指導教師:                 

 

日期:

 

 

 

 

 

 

 

 

  近年來,隨着我國信息技術的飛速發展,計算機應用已逐漸滲透到各個領域。在企業管理領域內,計算機的應用已經十分廣泛,各種管理機制與企業運作流程都與計算機緊密結合在一起,計算機的應用進一步完善了企業的管理,提高了企業的現代化管理形象。

  開發職工工資管理系統的目的就是為了幫助財務部門能更好地管理本單位的職工工資,提高工作效率,實現職工工資信息管理的規范化和自動化。

本員工工資管理系統使用JAVA語言編寫,采用SQL Server作為數據庫,實現了一般工資管理系統對員工工資信息的瀏覽、刪除、修改、查詢和統計分析功能,節省了大量的人工操作的工作量,自動完成眾多的信息處理,減少了數據出錯的幾率,加強了工資記錄的安全性和完整性。

 

 

關鍵詞:工資管理;統計分析;SQL ServerJAVA

 

 

 

Abstract

 

   In recent years, with the rapid development of information technology in China, computer application has gradually penetrated into various fields. In the field of enterprise management, the application of computer has been very extensive. Various management mechanisms and enterprise operation processes are closely combined with computer. The application of computer further improves the management of enterprises and improves the modern management image of enterprises.

   The purpose of developing the employee salary management system is to help the financial department better manage the employee salary of the unit, improve the work efficiency, and realize the standardization and automation of the employee salary information management.

   The salary management system of the staff is written in Java language and SQL server is used as database. It realizes the functions of browsing, deleting, modifying, querying and statistical analysis of the salary information of the staff in the general salary management system, saves a lot of labor operation workload, automatically completes a lot of information processing, reduces the probability of data error, and strengthens the safety of the salary record And integrity.

 

Key words Salary management; statistical analysis; SQL Server; Java

 

   

 

引言 …………………………………………………………………………………3

1  問題定義………………………………………………………………………3

2  需求分析 ………………………………………………………………………4

2.1 功能定義 ……………………………………………………………………………5

2.2 參與者列表  …………………………………………………………………………5

2.3 用例圖 …………………………………………………………………………………6

2.4 數據流圖 ………………………………………………………………………………7

3  總體設計 …………………………………………………………………………7

3.1 系統分析 ……………………………………………………………………………7

3.1.1 類圖 ………………………………………………………………………………7

3.1.2 序列圖 ……………………………………………………………………………8

3.1.3 協作圖 ……………………………………………………………………………9

3.2 數據庫設計 …………………………………………………………………………11

    3.2.1 需求分析 ………………………………………………………………………11

3.2.1 概念結構設計 …………………………………………………………………11

3.2.2 邏輯結構設計 …………………………………………………………………12

3.2.3 物理結構設計 …………………………………………………………………14

3.2.4 數據庫安全性 …………………………………………………………………15

3.2.5 數據庫完整性 …………………………………………………………………15

3.2.6 數據庫的備份和恢復 …………………………………………………………16

3.2.7 數據庫的連接……………………………………………………………………16

4  詳細設計 ………………………………………………………………………16

4.1 登錄界面設計 ………………………………………………………………………17

4.2 系統管理員界面設計………………………………………………………………18

4.3 員工界面設計 ………………………………………………………………………20

5  測試 ……………………………………………………………………………21

5.1 黑盒測試 ……………………………………………………………………………21

6  結論……………………………………………………………………………………24

參考文獻……………………………………………………

附錄………………………………………………………

 

 

引言  

  隨着計算機及網絡技術的飛速發展,Internet應用在全球范圍內日益普及,當今社會正快速向信息化社會前進,信息自動化的作用也越來越大。員工工資管理系統是現代企業管理工作不可缺少的一部分,是適應現代企業制度要求,推動企業勞動人事管理走向科學化,規范化的必要條件。

  本文主要介紹了員工工資管理系統的整個設計開發過程其主要系統功能包括以下幾個模塊:系統模塊管理(包括登錄、用戶管理)員工管理(包括添加新員工信息、員工信息查詢、員工信息維護)、工資組成項目(包括工資信息的添加、工資信息維護)員工工資的統計分析、退出。體現了清晰的員工工資管理流程 , 完成了基本的員工工資管理要求,是一個典型的信息管理系統。該系統大大地簡化了操作流程,提高了企業的工作效率。

 

 

1  問題的定義

  員工工資管理系統是一個通用性較好的人事管理系統,具有運行速度快、安全性高、穩定性好的優點,可以作為企業員工工資管理部門進行工資管理的一種工具。本系統具備完善的員工工資檔案管理功能,查詢功能等功能。可方便的為企業完成員工工資信息管理員工考評管理等重要工作。

  通過使用員工工資管理系統,使企業的員工工資管理系統化、規范化、自動化、從而達到提高企業管理效率的目的。系統開發的總體任務是使辦公人員可以輕松快捷地完成員工工資管理的任務。

  員工工資管理系統主要是對用戶、員工、部門、崗位信息的查詢,包括對用戶信息的添加、修改和查詢,系統還可查詢員工基本信息,以及對工資項目組成、各級別工資情況的修改和維護。

 

 

 

2  需求分析

2.1 功能定義

 

 

 

 

2-1 工資管理系統層次圖                                         

工資管理系統應完成以下功能:

員工信息管理: 實現對員工信息的輸入、查詢和修改如員工編號工作崗位部門姓名、性別、身份證號入職日期、民族、籍貫、現住址信息)。對於轉出、辭職、辭退、退休員工信息的刪除。

工資管理:員工工資分為兩部分:一部分是基本工資,根據員工的工齡和崗位設置;包括對工資的查詢和修改。

 工資規定

   基本工資:4.5k

   崗位:文員(+800行政),技術員(+2000),后勤(+200),會計(+1500財務),銷售員(+2000),生產員(+800)

   工齡:不滿1年(+0%),1年(+2%),2年(+5%),3年(+8%),3年+(+15%)

   工資=基本工資+崗位補貼+工齡補貼

③統計分析功能:統計當月所要核發的工資總金額,平均工資,以及最高和最低,最高-最低的工資金額。

2.2 參與者列表

  系統管理員對員工信息的管理,包括對員工信息的輸入查詢修改刪除對於轉出、辭職、辭退、退休員工信息根據員工的崗位補貼、工齡補貼,完成工資的核算並發放工資。③統計分析當月所要核發的工資總金額,以及最大和最低工資金額。

    員工:系統的主要使用者,登陸系統后,對自己的基本信息的查詢和對自己工資的查詢。

2.3 用例圖

 

 

 

 

2-2 系統管理員用例圖

 

 

 

 

 

 

2-3 員工用例圖

 

 

 

 

 

 

2-4 工資管理系統用例圖

 

 

2.4 數據流圖

 

 

 

 

2-5工資管理系統數據流圖

 

3  總體設計 

3.1 系統分析

3.1.1 類圖

 

 

 

 

3-1 工資管理系統類圖

3.1.2 序列圖

 

 

 

 

3-2添加員工信息

 

 

 

 

 

3-3 修改員工信息

 

 

 

 

 

3-4 員工查看工資

 

 

 

 

 

 

3-5 統計分析

 

3.1.3 協作圖

 

 

 

 

3-6 添加員工信息

 

 

 

 

 

 

3-7 修改員工信息

 

 

 

 

 

3-8 員工查看工資

 

 

 

 

 

3-9 統計分析

 

 

3.2 數據庫設計

3.2.1 需求分析

通過對工資管理系統工作過程的內容和數據流圖分析,設計如下面的數據項和數據結構。

①員工信息,包括的數據項有:員工編號、工作崗位、部門、姓名、性別、身份證號、入職日期、民族、籍貫、現住址信息等。

②工資單信息,包括的數據項有:員工編號,姓名,工資金額,工齡。

 

3.2.1 概念結構設計

 

 

 

 

3-10 員工實體

 

 

 

 

 

 

3-11工資單實體

 

 

 

 

 

 

3-12 統計分析實體

 

 

 

 

 

 

3-13 工資管理系統E-R圖

 

3.2.2 邏輯結構設計

在此工資管理系統數據庫中設計了三個個表,分別為 ygdata (員工信息表), gzdata( 工資單表 ),tjdata( 統計分析表 )其詳細信息入下表:

 

根據設計好的E-R在數據庫中創建數據表ygdata。如表1所示。

 

列名

  數據類型

  可否為空

說明

員工編號

char(15)

Not null

員工編號(主鍵)

姓名

char(10)

Null

姓名

性別

char(10)

Null

性別

身份證號

char(20)

Null

身份證號

入職日期

date

Null

入職日期

所在部門

char(20)

Null

所在部門

工作崗位

char(10)

Null

工作崗位

民族

char(10)

Null

民族

籍貫

char(20)

Null

籍貫

現住址

char(30)

Null

現住址

權限

Char(5)

Not null

01

1  員工信息表

 

 

根據設計好的E-R在數據庫中創建數據表gzdata。如表2所示。

 

  列名

  數據類型

  可否為空

  說明

員工編號

char(15)

Not null

員工編號(主鍵)

姓名

char(10)

Null

姓名

基本工資

float

Null

基本工資

崗位補貼

float

Null

崗位補貼

工齡補貼

float

Null

工齡補貼

工資總金額

float

Null

工資金額

月份

Char(10)

Not null

月份(主鍵)

2  工資單數據表

 

 

 

根據設計好的E-R在數據庫中創建數據表tjdata。如表3所示。

 

  列名

  數據類型

  可否為空

  說明

當前月份

char(15)

Not null

當前(主鍵)

最高工資

float

Null

最高工資

最低工資

float

Null

最低工資

平均工資

float

Null

平均工資

最高-最低

float

Null

最高-最低

所發總工資

float

Null

所發總工資

3 統計分析表

 

3.2.3 物理結構設計

使用DDL(Data definition language,數據定義語言)

1) 計算員工當月工資總金額

update gzdata

set 工資總金額=(select 基本工資+崗位補貼+工齡補貼

from gzdata

where 員工編號='1002')

where 員工編號='1002'

 

2) 顯示所有員工信息

select * from ygdata WHERE 員工編號='num'   order by 月份

 

3) 顯示所有員工工資

select * from gzdata

 

4) 查詢員工信息

select * FROM ygdata WHERE 員工編號='b_1'

 

5) 查詢員工工資

select * FROM gzdata WHERE 員工編號='b_1' and 月份='b_2'

 

6) 添加員工信息

insert

into ygdata values('b_1','b_2','b_3','b_4','b_5','b_6','b_7','b_8','b_9','b_10','b_11')

 

7) 添加員工工資

insert into gzdata values('b_1','b_2','b_3','b_4','b_5','b_6','b_7');

 

8) 刪除員工信息

DELETE FROM ygdata WHERE 員工編號='b_1'

 

9) 刪除員工工資信息

DELETE FROM gzdata WHERE 員工編號=' b_1 'and 月份='b_2'

 

3.2.4 數據庫安全性

數據庫的安全性是指保護數據庫,以防止不合法的使用所造成的數據泄漏、更改或破壞。由於數據庫中存放關在量的重要數據,並且為各種用戶所共享,數據的安全顯得格外重要。在一般的計算機中,安全措施是逐級設置的:

數據庫的安全控制的一般方法有:用戶標識和鑒定,存取控制,審計,數據加密,視圖的保護。本系統采用用戶標識和鑒定,存取控制通過進入本系統必須輸入賬號與密碼從而識別所擁有的權限。

 

3.2.5 數據庫完整性

由數據庫管理的完整性約束和數據庫觸發器來實現。

 

3.2.6 數據庫的備份和恢復

為了保證數據庫在遭受意外或有意外破壞的情況下,系統得以恢復,系統需要設置備份功能。數據庫的恢復使用轉儲方法進行。

 

3.2.7 數據庫的連接

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

System.out.println("加載驅動成功!");

Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=db_gz","sa","123456");

System.out.println("連接數據庫成功!");

 

Class.forName是用來動態加載和創建Class對象

獲取連接數據庫的Connection對象

 

數據庫連接及操作類一般包含連接數據庫的方法getConnection()、執行查詢executeQuery()、執行更新操作的方法executeUpdate()、關閉數據庫連接的方法close()。

 

 

4  詳細設計

4.1 登錄界面設計

登錄模塊是工資管理系統的入口,在運行本系統是首先經過登錄界面的驗證,輸入正確的用戶名和密碼才可登錄到系統中,通過用戶與密碼的驗證保證了數據的安全,並且通過該用戶所擁有的的權限打開不同的界面。

1)在DL()類中,導入所需的類包,關鍵代碼如下:

       import java.awt.EventQueue;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

 

 

2)定義一個GL類繼承JFrame類,再定義一個構造函數,設計好登錄窗體的布局,字符的顯示方式,窗體大小等

對窗口的屬性進行修改

setTitle("工資管理管理系統");     

getContentPane()取得FrameContentPane,初始化一個容器,用來在容器上添加一些控件

getContentPane().setLayout(null);  

setSize(500, 350); --設置窗口的大小

setResizable(false);--設置窗體不可改變大小

setLocationRelativeTo(null);---窗口將置於屏幕的中央

 

  以下是在窗口中創建組件JLabelJButtonJTextField JPasswordField

final JLabel label_1 = new JLabel();   //final 以防任何繼承類修改它的含義

label_1.setText("賬號:");

label_1.setBounds(130, 60, 53, 27);

getContentPane().add(label_1);

 

final JLabel label_2 = new JLabel();

label_2.setText("密碼:");

label_2.setBounds(130, 110, 53, 27);

getContentPane().add(label_2);

 

final JTextField zh= new JTextField(10);

zh.setBounds(180, 60, 180, 27);

getContentPane().add(zh);

 

final JPasswordField mm= new JPasswordField(15);

mm.setBounds(180, 110, 180, 27);

getContentPane().add(mm);

 

final JButton button = new JButton();

button.setText("登錄");

button.setBounds(110, 200, 100, 30);

getContentPane().add(button);button_1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){}}

這個函數是為按鍵button_1設置一個監聽函數

 

3)登錄時進行用戶密碼的驗證是在數據庫中完成的,通過查詢數據庫的operator里的字段是否匹配,登錄驗證才能成功。在Database類中創建驗證的方法。關鍵代碼如下:

try{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

System.out.println("加載驅動成功!");

Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=db_gz","sa","123456");

System.out.println("連接數據庫成功!");

Statement stmt_1=con.createStatement();

Statement stmt_2=con.createStatement();

String sql_1 = "select * FROM ygdata WHERE 員工編號='"+ user +"' and 員工編號='"+password +"'" ;

String sql_2 = "select * FROM ygdata WHERE 員工編號='"+ user +"' and 權限='1' ";

ResultSet rs_1=stmt_1.executeQuery(sql_1);

ResultSet rs_2=stmt_2.executeQuery(sql_2);

if (rs_1.next()) {

JOptionPane.showMessageDialog(this, "成功登錄", "提示",JOptionPane.INFORMATION_MESSAGE);

this.dispose();

if (rs_2.next()) {

// 如果數據校驗成功,顯示系統管理員界面

UI_2  ui_2=new UI_2();

}

else {

// 否則,顯示員工界面

UI_1  u=new UI_1(user);  

}}

else {

JOptionPane.showMessageDialog(this, "帳號或密碼錯誤!", "警告",JOptionPane.WARNING_MESSAGE);

mm.setText("");

zh.requestFocus();   // 密碼框選中

}}

catch(Exception e){

e.printStackTrace();

System.out.println("連接數據庫失敗!");

}

 

 

4.2 系統管理員界面設計

系統管理員界面設計了四個按鈕(分別是管理員工信息、管理員工工資信息、統計分析以及退出系統)

UI_2()類中定義,關鍵代碼如下

首先在窗口中創建組件四個JButton設置他們的基礎屬性(窗口名稱,大小)。以及通過addActionListener(new ActionListener()設置按鈕的監聽函數

final JButton button = new JButton();    //定義一個JButton對象

    button.setText("管理員工信息");   //設置窗口屬性

    button.setBounds(175, 30, 150, 50);  //設置窗口大小

getContentPane().add(button);     //向容器中添加該按鈕

當用戶選擇一個菜單時,會引發一個動作事件,需要給每個菜單項添加監聽器,重寫ActionListener接口中的actionPreformed()方法。例如:

    button.addActionListener(new ActionListener(){    //設置該按鈕的監聽函數

    public void actionPerformed(ActionEvent e) {

     dispose();    //關閉該窗口

     UI_2_IM  UI2=new UI_2_IM();    //定義一個UI_2_IM的對象

    }});

    

以下的代碼格式和第一個按鈕的定義差不多

   

    final JButton button1 = new JButton();

    button1.setText("管理員工工資信息");

    button1.setBounds(175, 120, 150, 50);

    getContentPane().add(button1);

    button1.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent e) {

     dispose();

     UI_2_GZ  UI2=new UI_2_GZ();

    }});

    

    

    final JButton button2 = new JButton();

    button2.setText("統計分析");

    button2.setBounds(175, 210, 150, 50);

    getContentPane().add(button2);

    button2.addActionListener(new ActionListener(){

    @Override

    public void actionPerformed(ActionEvent e) {

     dispose();

     UI_2_FX u=new UI_2_FX();

    }});

    

    final JButton button4 = new JButton();

button4.setText("退出系統");

button4.setBounds(175, 300, 150, 50);

getContentPane().add(button4);

button4.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

dispose();

}});

 

4.3 員工界面設計

員工界面設計了三個按鈕(分別是查看個人信息、查看工資信息以及返回登錄界面)

UI_1()類中定義,關鍵代碼如下

首先在窗口中創建組件四個JButton設置他們的基礎屬性(窗口名稱,大小)。以及通過addActionListener(new ActionListener()設置按鈕的監聽函數

final JButton button = new JButton();  //定義一個JButton對象

    button.setText("查看個人信息");     //設置窗口屬性

    button.setBounds(175, 30, 150, 50);  //設置窗口大小

getContentPane().add(button);   //向容器中添加該按鈕

當用戶選擇一個菜單時,會引發一個動作事件,需要給每個菜單項添加監聽器,重寫ActionListener接口中的actionPreformed()方法。例如:

    button.addActionListener(new ActionListener(){   //設置該按鈕的監聽函數

    public void actionPerformed(ActionEvent e) { 

     dispose();   //關閉該窗口

     UI_1_xinxi u=new UI_1_xinxi(1,num);   //定義一個UI_2_IM的對象

    }});

    

以下的代碼格式和第一個按鈕的定義差不多

    

    final JButton button1 = new JButton();

    button1.setText("查看工資信息");

    button1.setBounds(175, 130, 150, 50);

    getContentPane().add(button1);

    button1.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent e) {

 

     dispose();

     UI_1_xinxi u=new UI_1_xinxi(0,num);

    } });

    

    final JButton button4 = new JButton();

button4.setText("返回登錄界面");

button4.setBounds(175, 230, 150, 50);

getContentPane().add(button4);

button4.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

dispose();

DL d=new DL();

d.setVisible(true);

}});

    

 

 

 

測試

5.1 黑盒測試

 

 1)測試登錄:當數據庫中無此登錄信息時,顯示賬號或密碼錯誤,否則登陸成功。

 

 

 

 

 

 

 

 

 

 

 

6-1 登錄界面

 

測試用例

輸入

預計輸出

實際輸出

Test1

111

登陸成功

賬號或密碼錯誤

Test2

  

登陸成功

賬號不能為空

 

 

 

2)測試添加員工信息:當有選項為空時,跳出提示框-有選項未填;否則查詢數據庫中是否已有該員工信息,有的話就跳出提示框-數據庫中已有該員工信息,沒有的話就將該條員工信息插入數據庫中

 

 

 

 

6-2 添加員工信息界面

 

測試用例

輸入

預計輸出

實際輸出

Test1

1001、1001....

添加成功

數據庫中已有該員工信息

Test2

111、 、111...  

添加成功

有選項未填

Test3

111、111、1111...

添加成功

添加成功

 

 

3)測試刪除員工信息:點擊刪除按鈕后,查詢數據庫中是否已有該員工信息,有的話就將該條員工信息插入數據庫中,沒有的話就跳出提示框-數據庫中沒有該員工信息。

 

 

 

 

6-3 刪除員工信息界面

測試用例

輸入

預計輸出

實際輸出

Test1

1

刪除成功

數據庫中沒有該員工信息

Test2

1111  

刪除成功

刪除成功

 

 

4)測試修改員工信息:首先在員工編號選項中輸入員工編號進行查詢並將信息顯示在其他選項中,點擊想要修改的內容並進行修改,修改完畢后點擊修改,則跳出提示框-提示成功修改員工信息。

 

 

 

            6-4 修改員工信息界面

 

 

測試用例

輸入

預計輸出

實際輸出

Test1

1009

查詢成功

查詢成功

Test2

1009、111、111、…

成功修改員工信息

成功修改員工信息

Test3

 

 

 

 

 

 

 

 

(5)至於員工工資信息管理的操作也跟員工信息管理的操作差不多,基本上邏輯都是一樣的,就除了所管理的信息內容有所差別,以下是二者的比較:

 

 

 

6-5員工工資管理界面

 

6)測試統計分析:統計分析的內容並不多,就是將工資的最大、最小、最大-最小、平均工資等信息顯示在表格中,也沒有什么好測試的。

 

 

 

6-4 統計分析界面

 

 

結論

在一個軟件開發過程中,最重要的是需求分析,軟件是給用戶來使用的,所以用戶就是上帝,如何合理有效地跟用戶進行溝通,然后把需求與軟件結合起來,最終形成一個確定的需求文檔,這是最重要的。

在這次實訓設計的過程中,更加深入了解了對分層設計思想的認識。從一開始的基層到業務邏輯層,然后通過監聽器連接到界面上,最終成為一個滿足需求的軟件,這就是MVC開發模式。雖然一開始感覺到分層很復雜,但是做了幾個類后,逐漸有了思路,也進一步加深了對java面向對象概念的認識。在這次項目中,我體會並感受到了一個項目開發的流程,除了在技術上有一定的提高以外,更重要的是形成了分層的思想與面向對象的思想。

 

 

 

 

 

參考文獻

[1]  王珊.數據庫系統概論(第5版).高等教育出版社,2014

[2]  耿祥義.Java2實用教程(第5版).清華出版社,2017

[3]白偉明. 實戰突擊Java項目開發案例. 電子工業出版社. 2015

 

 

 

 

 

部分源代碼:

1)DL()

 

 

 

 

2UI_2()

 

 

 

 

3UI_1()

 

 

 

 

4UI_2_IM()

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM