工資管理系統(tǒng)實(shí)驗(yàn)報(bào)告.docx_第1頁
工資管理系統(tǒng)實(shí)驗(yàn)報(bào)告.docx_第2頁
工資管理系統(tǒng)實(shí)驗(yàn)報(bào)告.docx_第3頁
工資管理系統(tǒng)實(shí)驗(yàn)報(bào)告.docx_第4頁
工資管理系統(tǒng)實(shí)驗(yàn)報(bào)告.docx_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告課題名稱: 工資管理系統(tǒng) 指導(dǎo)教師: 魏善沛 專業(yè)班級: 14級軟件工程一班 小組成員: 學(xué)號 姓名 (組長) 20144612 馮婷婷 20144619 李建華(組長) 20144630 楊美梅 20144632 張藝瀚 20144633 趙飛 完成日期:2016 年 6 月 8 日37 / 39目錄1. 設(shè)計(jì)目的12. 開發(fā)環(huán)境13. 系統(tǒng)設(shè)計(jì)13.1需求分析13.1.1數(shù)據(jù)需求13.1.2事物需求23.2系統(tǒng)流程圖24. 數(shù)據(jù)庫設(shè)計(jì)44.1數(shù)據(jù)流圖44.2數(shù)據(jù)字典54.2.1數(shù)據(jù)結(jié)構(gòu)描述54.2.2數(shù)據(jù)流的描述54.2.3主要數(shù)據(jù)存儲的定義64.3概念模型設(shè)計(jì)(E-R圖)74.4邏輯結(jié)構(gòu)設(shè)計(jì)114.4.1關(guān)系模式114.4.2基本表125. 應(yīng)用程序設(shè)計(jì)135.1主窗體模塊135.2員工信息模塊145.3部門信息模塊15結(jié) 論16參 考 文 獻(xiàn)16附錄A(源代碼)16SQL亮點(diǎn)語句:16源代碼:17評分表:371. 設(shè)計(jì)目的數(shù)據(jù)庫原理概述及應(yīng)用課程設(shè)計(jì)是軟件工程專業(yè)集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)完數(shù)據(jù)庫原理概述及應(yīng)用課程后進(jìn)行的一次全面的綜合練習(xí)。其目的在于加深對數(shù)據(jù)庫基礎(chǔ)理論和基本知識的理解,掌握使用數(shù)據(jù)庫進(jìn)行軟件設(shè)計(jì)的基本方法,提高運(yùn)用數(shù)據(jù)庫解決實(shí)際問題的能力,最終實(shí)現(xiàn)對于給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應(yīng)用需求(信息要求和處理要求)。同時(shí),此次設(shè)計(jì)對于同學(xué)將來的畢業(yè)設(shè)計(jì)和具體工作實(shí)踐將有重要的意義。針對于本次設(shè)計(jì)的課題工資管理系統(tǒng),通過E-R圖,邏輯結(jié)構(gòu)、物理結(jié)構(gòu)、概念結(jié)構(gòu)三方面分析該系統(tǒng)的實(shí)體、屬性、以及之間的聯(lián)系,從各個(gè)方面全面了解分析課題,同時(shí),也更掌握了基礎(chǔ)知識,深入了解各部分含義。2. 開發(fā)環(huán)境 SQL Server 2005 ,JDK1.8,Eclipse EE版本。3. 系統(tǒng)設(shè)計(jì)3.1需求分析3.1.1數(shù)據(jù)需求工資管理系統(tǒng)系是為了更好地實(shí)現(xiàn)工資各種信息的管理以及各種信息的安全性管理。本系統(tǒng)主要對查看員工的各種工資信息需求所設(shè)計(jì)的,可以很好的管理數(shù)據(jù)。 本系統(tǒng)的主要功能由以下幾個(gè)部分組成: 系統(tǒng)功能的基本要求: 員工每個(gè)工種基本工資的設(shè)定。 加班津貼管理,根據(jù)加班時(shí)間和類型給予不同的加班津貼。 按照不同工種的基本工資情況、員工的考勤情況產(chǎn)生員工的每月的月工資。 員工年終獎(jiǎng)金的生成,員工的年終獎(jiǎng)金計(jì)算公式(員工本年度的工資總和津貼的總和)/12。 企業(yè)工資報(bào)表。能夠查詢單個(gè)員工的工資情況、每個(gè)部門的工資情況、按月的工資統(tǒng)計(jì),并能夠打印。 各類單項(xiàng)和多條件組合查詢。 導(dǎo)出查詢和統(tǒng)計(jì)的結(jié)果,形成Excel表。數(shù)據(jù)庫要求:在數(shù)據(jù)庫中至少應(yīng)該包含下列數(shù)據(jù)表: 員工考勤情況表。 員工工種情況表,反映員工的工種、等級,基本工資等信息。 員工津貼信息表,反映員工的加班時(shí)間,加班類別、加班天數(shù)、津貼情況等。 員工基本信息表。 員工月工資表。3.1.2事物需求(1)在員工信息管理部分,要求: A可以查詢員工信息 B可以對員工信息進(jìn)行添加刪除的操作 (2) 在部門信息管理部分,要求: A.可以查詢部門信息B.可以對部門信息進(jìn)行添加刪除的操作 3.2系統(tǒng)流程圖 圖3.2 系統(tǒng)流程圖 4. 數(shù)據(jù)庫設(shè)計(jì)4.1數(shù)據(jù)流圖圖4.1數(shù)據(jù)流圖4.2數(shù)據(jù)字典4.2.1數(shù)據(jù)結(jié)構(gòu)描述名稱:員工含義說明:員工信息組成結(jié)構(gòu):員工編號+員工姓名+性別+所屬部門+職稱名稱:工資含義說明:工資信息組成結(jié)構(gòu):員工編號+基本工資+崗位工資+津貼工資+扣除薪酬+實(shí)發(fā)工資名稱:部門含義說明:部門信息組成結(jié)構(gòu):部門編號+部門名稱+部門人數(shù)4.2.2數(shù)據(jù)流的描述數(shù)據(jù)流名稱:員工信息添加 簡述:新員工信息錄入數(shù)據(jù)流來源:公司管理者數(shù)據(jù)流去向:員工信息數(shù)據(jù)流組成:員工編號+員工姓名+性別+所屬部門+職稱數(shù)據(jù)流名稱:員工信息修改 簡述:員工信息錯(cuò)誤或員工調(diào)動(dòng)數(shù)據(jù)流來源:公司管理者數(shù)據(jù)流去向:員工信息數(shù)據(jù)流組成:員工編號+員工姓名+性別+所屬部門+職稱數(shù)據(jù)流名稱:員工信息刪除 簡述:員工離職數(shù)據(jù)流來源:公司管理者數(shù)據(jù)流去向:員工信息數(shù)據(jù)流組成:員工編號+員工姓名+性別+所屬部門+職稱數(shù)據(jù)流名稱:工資添加 簡述:公司對工資進(jìn)行添加數(shù)據(jù)流來源:公司管理者數(shù)據(jù)流去向:工資信息數(shù)據(jù)流組成:員工編號+基本工資+崗位工資+津貼工資+扣除薪酬+實(shí)發(fā)工資數(shù)據(jù)流名稱:工資修改 簡述:公司對工資進(jìn)行修改數(shù)據(jù)流來源:公司管理者數(shù)據(jù)流去向:工資信息數(shù)據(jù)流組成:員工編號+基本工資+崗位工資+津貼工資+扣除薪酬+實(shí)發(fā)工資4.2.3主要數(shù)據(jù)存儲的定義存儲名稱:員工記錄輸入:員工基本信息輸出:員工所有信息數(shù)據(jù)結(jié)構(gòu):員工編號+員工姓名+性別+所屬部門+職稱存儲名稱:部門記錄輸入:部門基本信息輸出:部門所有信息數(shù)據(jù)結(jié)構(gòu):部門編號+部門名稱+部門人數(shù)存儲名稱:工資記錄輸入:員工工資信息輸出:員工所有工資信息數(shù)據(jù)結(jié)構(gòu):員工編號+基本工資+崗位工資+津貼工資+扣除薪酬+實(shí)發(fā)工資存儲名稱:考勤記錄輸入:員工考勤信息輸出:員工所有考勤信息數(shù)據(jù)結(jié)構(gòu):員工編號+遲到次數(shù)+缺席次數(shù)存儲名稱:津貼記錄輸入:員工津貼信息輸出:員工所有津貼信息數(shù)據(jù)結(jié)構(gòu):員工編號+加班時(shí)間+加班天數(shù)+加班類型+津貼資金4.3概念模型設(shè)計(jì)(E-R圖) 圖4.3.1員工信息E-R圖 圖4.3.2部門信息E-R圖 圖4.3.3基本工資E-R圖 圖4.3.4考勤情況E-R圖 圖4.3.5津貼情況E-R圖 圖4.3.6工種情況E-R圖圖4.3.7月工資信息E-R圖 圖4.3.8工作管理系統(tǒng)總E-R圖4.4邏輯結(jié)構(gòu)設(shè)計(jì)4.4.1關(guān)系模式員工信息(員工編號,員工姓名,性別,所屬部門,職稱)部門信息(部門編號,部門名稱,部門人數(shù))基本工資(工資級別,基本工資,崗位工資)考勤信息(員工編號,遲到次數(shù),缺席次數(shù))津貼信息(員工編號,加班時(shí)間,加班天數(shù),加班類型,津貼資金)工種情況(工資級別,崗位工資)工資信息(員工編號,基本工資,崗位工資,津貼工資,扣除薪酬,實(shí)發(fā)工資)4.4.2基本表 表1員工基本信息表(dbo.employee)員工編號e_idvarchar(8)主鍵,不允許重復(fù)員工姓名e_namevarchar(8)性別e_sexvarchar(2)所屬部門b_idvarchar(4)外鍵職稱j_namevarchar(12) 表2部門信息表(dbo.brank)部門編號b_idvarchar(8)主鍵,不允許重復(fù)部門名稱b_namevarchar(20)部門人數(shù)b_numberint 表3基本工資表(dbo.basesalary)工資級別bs_levvarchar(2)主鍵,不允許重復(fù)基本工資bs_salnumeric(8, 2) 表4考勤信息表(dbo.check)員工編號e_idvarchar(8)主鍵,不允許重復(fù)遲到次數(shù)latetimesnumeric(3, 0)缺席次數(shù)offtimesnumeric(3, 0) 表5津貼信息表(dbo.bonusinformation)員工編號e_idvarchar(8)主鍵,不允許重復(fù)加班時(shí)間etr_timenumeric(8, 1)加班天數(shù)etr_daynumeric(2, 1)加班類型etr_typevarchar(8)津貼資金bonus_salnumeric(8, 2) 表6工種情況表(alary)工資級別js_levvarchar(2)主鍵,不允許重復(fù)崗位工資js_salnumeric(8, 2) 表7工資信息表(dbo.salaryinfomation)員工編號e_idvarchar(8)主鍵,不允許重復(fù);外鍵基本工資bs_salnumeric(8, 2)崗位工資js_salnumeric(8, 2)津貼工資bonus_salnumeric(8, 2)扣除薪酬check_salnumeric(8, 2)實(shí)發(fā)工資get_salnumeric(8, 2)5. 應(yīng)用程序設(shè)計(jì)5.1主窗體模塊 進(jìn)入登陸頁面,如下圖: 圖5.1.1 登錄 登陸后進(jìn)入系統(tǒng)主界面,如下圖: 圖5.1.2 系統(tǒng)主界面5.2員工信息模塊(1) 查詢,分別點(diǎn)擊“編輯”“刪除”按鈕可修改、刪除員工信息,如下圖: 圖5.2.1 查詢修改員工信息 圖5.2.2 修改員工信息5.3部門信息模塊(1)查詢.刪除所有部門信息,如下圖: 圖5.3.1 查詢刪除部門信息結(jié) 論經(jīng)過兩周的不斷實(shí)踐與探索,人力資源-工資管理統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)己經(jīng)完成,基本上達(dá)到了預(yù)期的設(shè)計(jì)要求和目的。 一個(gè)完整的人力資源-工資管理統(tǒng)就創(chuàng)建完畢了。在本系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)的過程中主要講述了工資管理系統(tǒng)的系統(tǒng)設(shè)計(jì)部分,包括功能模塊設(shè)計(jì)、數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)等。系統(tǒng)設(shè)計(jì)為整個(gè)程序構(gòu)建了骨架,各個(gè)功能模塊實(shí)現(xiàn)各個(gè)細(xì)節(jié)部分。 系統(tǒng)的詳細(xì)設(shè)計(jì)根據(jù)系統(tǒng)分析階段的結(jié)論將系統(tǒng)具體化,并完成了各個(gè)模塊的添加、修改、刪除與查詢的功能,直到最后形成一個(gè)完整的可行性的管理系統(tǒng)。 在整個(gè)設(shè)計(jì)階段的工作和本實(shí)驗(yàn)報(bào)告的寫作過程的經(jīng)歷將會使我們小組終生受益,并對我們今后的工作和發(fā)展產(chǎn)生深遠(yuǎn)的影響。由于設(shè)計(jì)時(shí)間比較倉促,所以該系統(tǒng)還有許多不盡如意的地方,比如用戶界面不夠美觀,出錯(cuò)處理不夠等多方面問題。這些都有待于進(jìn)一步的改善。 參 考 文 獻(xiàn) 1 數(shù)據(jù)庫原理概述及應(yīng)用,作者是魏善沛,張艷。2 JSP實(shí)用教程清華大學(xué)出版社。3 訪問的鏈接: /ljheee/article/details/50984498 /ljheee/article/details/50988796附錄A(源代碼)SQL亮點(diǎn)語句:1) -雙重 左外連接,員工表數(shù)據(jù)全查出select employee.e_id,employee.e_name,employee.e_sex,branch.b_name,employee.j_name,bs_lev,bonus_salfrom (employee left join branch on employee.b_id=branch.b_id) left join bonusinformation on employee.e_id=bonusinformation.e_id 2) 創(chuàng)建觸發(fā)器create trigger department_person -創(chuàng)建觸發(fā)器on employee -監(jiān)聽員工表的增刪,自動(dòng)更新部門表的人數(shù)for insert,delete -監(jiān)聽employee表的增刪 操作asupdate branch set b_number=b_number+1where b_id=(select b_id from inserted)update branch set b_number=b_number-1where b_id=(select b_id from deleted)Go3) 設(shè)置津貼默認(rèn)值alter table bonusinformation -津貼默認(rèn)0add constraint default_bonus default 0 for bonus_sal4) 創(chuàng)建觸發(fā)器 ALTER trigger add_checkSal -創(chuàng)建觸發(fā)器 on checkTime for insert,update -監(jiān)聽 asupdate checkTime set check_sal=latetimes*40+offtimes*60 -計(jì)算考勤 where e_id=(select e_id from inserted) Go源代碼:Index.jsp index page !-* margin: 0;padding: 0;header padding: 1em 0;text-align: center;background-color: #4a4;color: #fff;font-size: 300%;header span font-size: 50%;margin-left: 1em;color: #eee;footer position: absolute;bottom: 0;padding: 2em 0;text-align: center;background-color: #4a4;color: #fff;width: 100%;clear: both;.content width: 75%;overflow: auto;float: right;min-height: 600px;.nav float: left;background-color: #eee;width: 25%;position: fixed;height: 100%;overflow: auto;ul list-style-type: none;margin-top: 1em;li a display: block;color: #000;padding: 8px 0 8px 16px;text-decoration: none;li a:hover background-color: #4a4;color: white;table width: 100%;border-collapse: collapse;margin: 2m auto;th, td text-align: left;padding: 8px;tr:nth-child(even) background-color: #f2f200; 點(diǎn)擊退出人力資源-工資管理員工基本信息列表添加員工員工工資信息部門信息其他編號姓名性別部門職位基本工資等級津貼2014321Bob男市場部經(jīng)理F36202014327Jack男市場部職員D1500%List list = DbUtil.getALL();for(Employee e : list)pageContext.setAttribute(e,e); %$e.ename$e.esex$e.dname$e.job$e.sal_level$e.bonusSalCopyright (c) 2016 DB1 All Rights Reserved. Edit.jsp !-* margin: 0;padding: 0;header padding: 1em 0;text-align: center;background-color: #4a4;color: #fff;font-size: 300%;header span font-size: 50%;margin-left: 1em;color: #eee;footer position: absolute;bottom: 0;padding: 2em 0;text-align: center;background-color: #4a4;color: #fff;width: 100%;clear: both;.content width: 75%;overflow: auto;float: right;min-height: 300px;.nav float: left;background-color: #eee;width: 25%;position: fixed;height: 100%;overflow: auto;ul list-style-type: none;margin-top: 1em;li a display: block;color: #000;padding: 8px 0 8px 16px;text-decoration: none;li a:hover background-color: #4a4;color: white;form margin: 2em 4em;form div margin-bottom: 1em;label display: inline-block;width: 6em;text-align: right;margin-right: 2em;input, select font-size: 150%;inputtype=submit padding: 0 4em;margin-left: 6em;form span font-size: 80%;color: red;margin-left: 1em; 人力資源-工資管理編輯員工信息員工基本信息員工工資信息部門信息其他編號只讀姓名只讀性別只讀部門編號職位基礎(chǔ)工資等級Copyright (c) 2016 DB1 All Rights Reserved. DbUtil.javapackage com.ljheee.db;import java.sql.*;import java.util.ArrayList;import java.util.List;import com.ljheee.bean.Branch;import com.ljheee.bean.Employee;/* * DB * author ljhee * */public class DbUtil static Connection con = null;static PreparedStatement stmt = null;static ResultSet rs = null; static String driver = com.microsoft.sqlserver.jdbc.SQLServerDriver; static String dbURL = jdbc:sqlserver:/localhost:1433;integratedSecurity=true; DatabaseName=salarymanagement; statictry Class.forName(driver); con = DriverManager.getConnection(dbURL); catch (SQLException e) e.printStackTrace(); catch (ClassNotFoundException e) e.printStackTrace(); public static Employee getByID(String id)if(id.equals() return null; Employee e = null;String sql = select * from employee where e_id=?;try stmt = con.prepareStatement(sql);stmt.setString(1, id);rs = stmt.executeQuery();while(rs.next()String e_id = rs.getString(1);String e_name = rs.getString(2);String e_sex = rs.getString(3);String b_name = rs.getString(4);String j_name = rs.getString(5);String bs_lev = rs.getString(6);/float bonus_sal = Float.parseFloat(rs.getString(7);e = new Employee(e_id, e_name, e_sex, b_name, j_name, bs_lev); catch (SQLException e1) e1.printStackTrace();return e;public static void saveEmployee(Employee e)if(e=null) return;String sql = insert into employee values(?,?,?,?,?,?);try stmt = con.prepareStatement(sql);stmt.setString(1, e.getEid();stmt.setString(2, e.getEname();stmt.setString(3, e.getEsex();stmt.setString(4, e.getBid();stmt.setString(5, e.getJob();stmt.setString(6, e.getSal_level();boolean b =stmt.execute();System.out.println(b); catch (SQLException e1) e1.printStackTrace();public static void updateEmployee(Employee e)if(e=null) return;Employee ee = getByID(e.getEid();String sql =update employee set b_id=?,j_name=?,bs_lev=? where e_id=?;try stmt = con.prepareStatement(sql);stmt.setString(1, e.getBid();stmt.setString(2, e.getJob();stmt.setString(3, e.getSal_level();stmt.setString(4, e.getEid();stmt.execute(); catch (SQLException e1) e1.printStackTrace();public static List getALL() throws ClassNotFoundExceptionList list = new ArrayList();Employee e = null;try String sql=select employee.e_id,employee.e_name,employee.e_sex,branch.b_name,employee.j_name,bs_lev,bonus_sal from (employee left join branch on employee.b_id=branch.b_id) left join bonusinformation on employee.e_id=bonusinformation.e_id;stmt = con.prepareStatement(sql);rs = stmt.executeQuery();while(rs.next()String e_id = rs.getString(1);String e_name = rs.getString(2);String e_sex = rs.getString(3);String b_name = rs.getString(4);String j_name = rs.getString(5);String bs_lev = rs.getString(6);String str = rs.getString(7);float bonus_sal = 0;if(str!=null)bonus_sal = Float.parseFloat(str);e = new Employee(e_id, e_name, e_sex, b_name, j_name, bs_lev, bonus_sal);System.out.println(e);list.add(e);e = null; catch (SQLException e1) e1.printStackTrace();return list;public static void closeAll()try if(rs!=null) rs.close();if(stmt!=null) stmt.close();if(con!=null) con.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();public static void deleteEmployee(String eid) String sql = delete from employee where e_id=?;try stmt = con.prepareStatement(sql);stmt.setString(1, eid);stmt.execute(); catch (SQLException e) e.printStackTrace();public static List getALLBranch() throws ClassNotFoundExceptionList list = new ArrayList();Branch b = null;try String sql=select * from branch;stmt = con.prepareStatement(sql);rs = stmt.executeQuery();while(rs.next()String did = rs.getString(1);String dname = rs.getString(2);String str = rs.getString(3);int num = 0;if(str!=null)num = Integer.parseInt(str);b = new Branch(did, dname, num);list.add(b);b = null; catch (SQLException e1) e1.printStackTrace();return list;/sal.jsppublic static List getEs() throws ClassNotFoundExceptionList list = new ArrayList();Employee e = null;try String sql=select employee.e_id,e_name,bs_sal,latetimes,offtimes,etr_day,etr_time,bonusinformation.bonus_sal,get_sal,yearSal fro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論