版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
《數(shù)據(jù)庫系統(tǒng)系統(tǒng)原理》課程設(shè)計報告學(xué)院:班級:完成人:姓名:學(xué)號:姓名:學(xué)號:姓名:學(xué)號:指導(dǎo)教師:課程設(shè)計任務(wù)書一、課程設(shè)計題目:企業(yè)工資管理系統(tǒng)二、課程設(shè)計應(yīng)解決的主要問題:(1)對企業(yè)工資管理系統(tǒng)進行需求分析(2)根據(jù)需求分析設(shè)計相應(yīng)的功能模塊(3)邏輯結(jié)構(gòu)設(shè)計(4)物理結(jié)構(gòu)設(shè)計(5)利用SQLserver2005和MSvisualstudio200軟件實現(xiàn)各項功能三、任務(wù)發(fā)出日期:2010-9-20
小組分工說明小組編號題目:企業(yè)工資管理系統(tǒng)小組分工情況:管理員、員工相關(guān)界面設(shè)計:趙俊管理員及員工登陸操作:苑忠科員工信息的查詢、修改、刪除、添加:趙俊工資生成及查詢、修改、添加、刪除:趙俊部門的查詢、修改、添加、刪除:苑忠科界面美工:王風(fēng)炎數(shù)據(jù)庫操作整體優(yōu)化:趙俊數(shù)據(jù)庫的建立:苑忠科分ER圖、總體ER圖:王風(fēng)炎課程設(shè)計文檔編寫:趙俊組長簽字:趙俊2010年12指導(dǎo)教師對課程設(shè)計的評價成績:指導(dǎo)教師簽字:年月日目錄TOC\o"1-2"\h\z\u1 緒論 5課題研究背景 5主要研究內(nèi)容 5論文組織結(jié)構(gòu) 6小結(jié) 72 課題研究相關(guān)技術(shù)綜述 7 JAVA簡介 7 SQLServer簡介 8 其它 8 小結(jié) 93 需求分析 9 業(yè)務(wù)分析 9 系統(tǒng)功能分析 11 系統(tǒng)其它要求 11 小結(jié) 124 系統(tǒng)總體設(shè)計 12 系統(tǒng)設(shè)計環(huán)境 12 體系結(jié)構(gòu)設(shè)計 13 E-R圖 16 邏輯結(jié)構(gòu) 18 小結(jié) 195 系統(tǒng)詳細(xì)設(shè)計 19 功能模塊設(shè)計 19 界面設(shè)計 20 關(guān)鍵源代碼 27 小結(jié) 416 課程設(shè)計總結(jié) 41緒論課題研究背景隨著社會的進步和計算機技術(shù)的發(fā)展,特別是微型計算機的大范圍普及,現(xiàn)在應(yīng)用在大中型企業(yè)的信息管理系統(tǒng)中,幾乎都包括了工資管理模塊。有些環(huán)境中是有大型ERP軟件中的一個模塊引進的,有些作為企業(yè)的財務(wù)系統(tǒng)的一部分。計算機處理的數(shù)據(jù)量不斷增加。文件管理系統(tǒng)采用的一次最多存取一個記錄的訪問方式,以及在不同文件之間缺乏相互聯(lián)系的結(jié)構(gòu),越來越不能適應(yīng)管理大量數(shù)據(jù)的需要,于是數(shù)據(jù)庫管理系統(tǒng)便應(yīng)運而生。有了數(shù)據(jù)庫我們便能方便快捷的對數(shù)據(jù)進行讀取、存取,并維護數(shù)據(jù)庫的數(shù)據(jù)。但,西方管理制度設(shè)計的工資管理軟件,在很多時候還不能完成解決中國特色中小企業(yè)的問題,本文介紹的畢業(yè)設(shè)計的研究工作就是要為這些具有中國特色的中小企業(yè)解決他們在工資管理方面的問題。今天,數(shù)據(jù)庫管理已成為計算機信息管理的主要方式。數(shù)據(jù)庫的應(yīng)用非常廣泛,可應(yīng)用于各行各業(yè),只要是稍復(fù)雜的數(shù)據(jù),都可制作成數(shù)據(jù)庫,交由電腦來管理。用電腦管理數(shù)據(jù),運算速度快,檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低且不易出錯等,這些優(yōu)點能夠極大地提高工資管理的效率,也是科學(xué)化、正規(guī)化管理的重要條件,尤其是現(xiàn)在的中小型企業(yè)正需要這種對口的工資管理系統(tǒng),并且是現(xiàn)行的財務(wù)管理系統(tǒng)所代替不了的。主要研究內(nèi)容根據(jù)深入的調(diào)查分析,企業(yè)工資管理系統(tǒng)是一個企業(yè)單位不可缺少的部分,它的內(nèi)容對于企業(yè)的決策者和管理者來說都至關(guān)重要,所以工資管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。使其公司工資管理初步實行計算機化,讓計算機在工資管理中得到初步應(yīng)用。使工資管理者總是根據(jù)準(zhǔn)確、及時的工資管理信息來進行決策,實現(xiàn)管理。只有計算機才能將現(xiàn)代化社會中,成倍增長的工資管理信息量,進行及時收集、加工、整理、貯存、檢索、傳遞、反饋給決策者。而一個企業(yè)工資管理系統(tǒng)在企業(yè)對工資管理已不可或缺。其功能主要有:(1)對輸入的工資管理數(shù)據(jù),進行數(shù)值運算和邏輯運算,求解各種問題。(2)對工資管理信息進行加工來解決各種數(shù)據(jù)處理問題,為人事決策者在決策時提供依據(jù)。(3)對工資管理的各種資料數(shù)據(jù)進等統(tǒng)計計算,并將處理后的信息存貯起來。本文共分為六章,各章主要內(nèi)容如下。第1章“緒論”部分對課題的研究背景、以及主要研究內(nèi)容進行了描述。第2章“課題研究相關(guān)技術(shù)綜述”部分對本課題所用到的相關(guān)技術(shù)進行了描述。第3章“系統(tǒng)需求分析”部分對業(yè)務(wù)分析、系統(tǒng)功能分析、系統(tǒng)數(shù)據(jù)分析、系統(tǒng)其它要求進行了描述。第4章“系統(tǒng)總體設(shè)計”部分對系統(tǒng)設(shè)計環(huán)境、體系結(jié)構(gòu)設(shè)計、具體表,數(shù)據(jù)庫邏輯設(shè)計和E-R圖,邏輯結(jié)構(gòu)圖進行了描述。第5章“系統(tǒng)詳細(xì)設(shè)計”部分對數(shù)據(jù)庫物理設(shè)計、功能模塊設(shè)計、界面設(shè)計進行了描述。第6章“總結(jié)與展望”部分對本文的內(nèi)容進行了總結(jié)和展望。本章從課題的研究背景出發(fā),分析了建設(shè)企業(yè)工資管理網(wǎng)站的必要性。并結(jié)合查詢資料的相關(guān)情況,提出了企業(yè)工資管理網(wǎng)站研究的主要任務(wù),給出了論文的組織結(jié)構(gòu)。2課題研究相關(guān)技術(shù)綜述JAVA簡介Java是由Sun微系統(tǒng)公司所發(fā)展出來的程序語言,它本身是一種對象導(dǎo)向(Object-Oriented)的程序語言。Java也號稱是能跨平臺使用的語言,這主要是因為Java本身被編譯之后,并不是直接產(chǎn)生可執(zhí)行的碼,而是產(chǎn)生一種中間碼叫作ByteCode,這種碼必需在透過Java的直譯器來解讀它,才能夠真正的被執(zhí)行,所以只要平臺上裝有這種Java的直譯器,就能解讀ByteCode也就能執(zhí)行Java編譯過的程序,故與Java程序是在那種平臺上被編譯的,就完全沒有干系了。Java平臺由Java虛擬機(JavaVirtualMachine)和Java應(yīng)用編程接口(ApplicationProgrammingInterface、簡稱API)構(gòu)成。Java應(yīng)用編程接口為Java應(yīng)用提供了一個獨立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,可分為基本部分和擴展部分。在硬件或操作系統(tǒng)平臺上安裝一個Java平臺之后,Java應(yīng)用程序就可運行。現(xiàn)在Java平臺已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運行。Java應(yīng)用編程接口已經(jīng)從1.1x版發(fā)展到1.2版。Java分為三個體系JavaSE(Java2PlatformStandardEdition,java平臺標(biāo)準(zhǔn)版),JavaEE(Java2Platform,EnterpriseEdition,java平臺企業(yè)版),JavaME(Java2PlatformMicroEdition,java平臺微型版)。
Java的目標(biāo)是為了滿足在一個充滿各式各樣不同種機器,不同操作系統(tǒng)平臺的網(wǎng)絡(luò)環(huán)境中開發(fā)軟件。利用Java程序語言,可以在網(wǎng)頁中加入各式各樣的動態(tài)效果??梢苑派弦欢蝿赢?,加入聲音,也可以建立交互式網(wǎng)頁等。SQLServer簡介SQLServer是大型的關(guān)系數(shù)據(jù)庫,適合大中型企業(yè)使用。它建立于Windows的可伸縮性和可管理性之上,提供功能強大的客戶/服務(wù)器平臺,高性能客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫掛歷系統(tǒng),可以將VisualBasic,VisualC++作為客戶端開發(fā)工具,而將SQLServer作為存儲數(shù)據(jù)的后臺服務(wù)器軟件[5]。SQLServer的特點:真正的客戶機/服務(wù)器體系結(jié)構(gòu);圖形化用戶界面;與WindowsNT完全集成,具有很好的伸縮性,;支持Web技術(shù),使用戶能夠很容易地將數(shù)據(jù)庫中的數(shù)據(jù)發(fā)布到Web頁面上;提供數(shù)據(jù)倉庫功能。其它ERwinERwin用來建立實體-關(guān)系(E-R)模型,是關(guān)系數(shù)據(jù)庫應(yīng)用開發(fā)的優(yōu)秀CASE工具。ERwin可以方便地構(gòu)造實體和聯(lián)系,表達實體間的各種約束關(guān)系,并根據(jù)模板創(chuàng)建相應(yīng)的存儲過程、包、觸發(fā)器、角色等,還可編寫相應(yīng)的PB擴展屬性,如編輯樣式、顯示風(fēng)格、有效性驗證規(guī)則等。ERwin主要用來建立數(shù)據(jù)庫的概念模型和物理模型。它能用圖形化的方式,描述出實體、聯(lián)系及實體的屬性。ERwin支持IDEF1X方法。通過使用ERwin建模工具自動生成、更改和分析IDEF1X模型,不僅能得到優(yōu)秀的業(yè)務(wù)功能和數(shù)據(jù)需求模型,而且可以實現(xiàn)從IDEF1X模型到數(shù)據(jù)物理設(shè)計的轉(zhuǎn)變。ERwin工具繪制的ERwin模型框圖(diagram)主要由三種組件塊組成:實體、屬性和關(guān)系,正好對應(yīng)于IDEF1X模型的三種主要成分??梢园芽驁D看成是表達業(yè)務(wù)語句的圖形語言。而ERwin模型框圖所在的主題區(qū)域(SubjectArea)相應(yīng)于IDEF1X的視圖,其重點在整個數(shù)據(jù)模型中的某個計劃或企業(yè)內(nèi)部的某一范圍間實體的關(guān)聯(lián)。一個IDEF1X的模型包括一個或多個視圖,而ERwin中的主域區(qū)(MainSubjectAreas)組合了各個主題區(qū)域,覆蓋了數(shù)據(jù)建模的整個范圍,也即IDEF1X模型的整個范圍。ERwin工具繪制的模型對應(yīng)于邏輯模型和物理模型兩種。在邏輯模型中,IDEF1X工具箱可以方便地用圖形化地方式構(gòu)建和繪制實體聯(lián)系及實體的屬性。在物理模型中,ERwin可以定義對應(yīng)的表、列,并可針對各種數(shù)據(jù)庫管理系統(tǒng)自動轉(zhuǎn)換為適當(dāng)?shù)念愋?。MyEclipse介紹Eclipse是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(JavaDevelopmentTools,JDT)。Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用來Java語言開發(fā),但是目前亦有人通過插件使其作為其他計算機語言比如C++和Python的開發(fā)工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。Eclipse是一個開放源代碼的軟件開發(fā)項目,專注于為高度集成的工具開發(fā)提供一個全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺。它主要由Eclipse項目、Eclipse工具項目和Eclipse技術(shù)項目三個項目組成,具體包括四個部分組成——EclipsePlatform、JDT、CDT和PDE.JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),EclipsePlatform則是一個開放的可擴展IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構(gòu)造并運行集成軟件開發(fā)工具的基礎(chǔ)。EclipsePlatform允許工具建造者獨立開發(fā)與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結(jié)束,而另一個工具功能在哪里開始。Tomcat服務(wù)器介紹Tomcat服務(wù)器,不但支持運行Servlet和JSP而且還具備了作為商業(yè)JavaWeb應(yīng)用容器的特征。Tomcat服務(wù)器是一個免費的開放源代碼的Web應(yīng)用服務(wù)器,它是Apache軟件基金會(Apache
Software
Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn),Tomcat5支持最新的Servlet
2.4和JSP
2.0規(guī)范。因為Tomcat技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用服務(wù)器。Tomcat的工作模式。獨立的Servlet容器:Tomcat可以用為獨立的JavaWeb服務(wù)器,這是Tomcat的默認(rèn)模式。進程內(nèi)的Servlet容器:Servlet分為WEB服務(wù)器插件和JAVA容器兩部分。插件打開JVM,JAVA容器在JVM中運行Servlet。如有請求,插件得到對此請求的控制,并傳給JAVA容器。(通過JNI<JavaNativeInterface通過這個接口,JAVA程序就可以和采用其他語言的程序進行通信>機制,其實就是一個本地接口)。這種模式對于單進程,多線程的服務(wù)器很適合。進程外的Servlet容器:和進程內(nèi)的不同點只在采用的通信機制是,進程內(nèi)用的是JNI,而進程外用的是IPC。內(nèi)外的比較:外的響應(yīng)速度沒有內(nèi)快,但是外的伸縮性和穩(wěn)定性比內(nèi)好。小結(jié)本章對課題研究所使用的技術(shù)進行了綜述。本文論述的企業(yè)工資管理網(wǎng)站建設(shè)—企業(yè)用戶管理子系統(tǒng)使用了JAVA+SQLServer架構(gòu)。本章研究的內(nèi)容為以后課題的研究奠定了基礎(chǔ)。需求分析業(yè)務(wù)分析主要業(yè)務(wù)分析通過深入得調(diào)查研究和分析,得出本系統(tǒng)涉及到的兩個用戶:管理員用戶和員工用戶。員工用戶是本網(wǎng)站服務(wù)的對象,管理員用戶是網(wǎng)站信息內(nèi)容的主要發(fā)布者。而管理員負(fù)責(zé)整個網(wǎng)站的運行、維護。下面簡要介紹一下各個角色的工作流。(1)管理員:審核用戶資料,在月初查看員工工作表現(xiàn)情況,整合員工工資情況,計算出各員工的工資,在月初時發(fā)放。(2)員工用戶:首先每個員工應(yīng)該有自己的注冊信息,以便以后在該網(wǎng)站自主查詢自己的相關(guān)資料。系統(tǒng)功能分析本系統(tǒng)的總體結(jié)構(gòu)包含四個主要模塊,如圖1所示。工資工資管理系統(tǒng)員工管理職務(wù)管理部門管理工資管理圖系統(tǒng)總體結(jié)構(gòu)圖根據(jù)上述業(yè)務(wù)的分析,系統(tǒng)應(yīng)具有如下功能:(1)員工管理:管理員對員工基本信息的添加、刪除、修改和查詢功能。(2)工資管理:管理員對員工工資的生成、添加、刪除、修改和查詢功能以及員工對自己工資情況的查詢。(3)部門管理:管理員對部門信息的添加、刪除、修改和查詢功能。(4)職務(wù)管理:管理員對本企業(yè)各職務(wù)信息的添加、刪除、修改和查詢功能。系統(tǒng)其它要求系統(tǒng)運行軟硬件環(huán)境(1)硬件Tomcat服務(wù)器、數(shù)據(jù)庫服務(wù)器(配置可參照Tomcat服務(wù)器、備份服務(wù)器、交換機、硬件放火墻。(2)軟件WindowXP;MSSQLSERVER2005;MyEclipse;殺毒軟件。系統(tǒng)接口要求(1)色彩搭配頁面美觀、色彩和諧,能夠給用戶美的享受。(2)會員登陸接口管理員、員工用戶共享同一個登陸入口且系統(tǒng)具有分辨用戶類型的能力。(3)管理中心管理員、員工用戶都擁有自己的管理中心,方便用戶管理自己的信息資料。(4)網(wǎng)站首頁網(wǎng)站首頁應(yīng)該起到一個導(dǎo)航的作用,提供一個訪問網(wǎng)站其他頁面的入口。小結(jié)需求分析是發(fā)現(xiàn)、求精、建模和復(fù)審的過程。本章通過業(yè)務(wù)分析、系統(tǒng)功能分析、數(shù)據(jù)分析確定了系統(tǒng)的主要功能,并建立起了系統(tǒng)功能模型、系統(tǒng)靜態(tài)結(jié)構(gòu)模型、系統(tǒng)動態(tài)結(jié)構(gòu)模型,為系統(tǒng)的總體設(shè)計奠定了基礎(chǔ)。系統(tǒng)總體設(shè)計系統(tǒng)設(shè)計環(huán)境本系統(tǒng)采用JAVA+SQL-SERVER2000的架構(gòu)進行開發(fā)。其中JAVA文件在MyEclipse下進行編輯。體系結(jié)構(gòu)設(shè)計功能模塊圖管理系統(tǒng)管理系統(tǒng)員工管理工資管理部門管理信息添加信息增刪信息修改工資生成工資增刪工資修改工資查詢部門查詢職務(wù)管理部門添加部門刪除部門修改職務(wù)查詢職務(wù)增刪修改教材管理系統(tǒng)功能模塊設(shè)計圖詳細(xì)表提示:本企業(yè)工資管理系統(tǒng)的數(shù)據(jù)庫中共建了五個表,下面是這五個表的主碼、屬性、關(guān)系與關(guān)系的聯(lián)系等。圖14---dept(部門信息)表dept_id——部門編號dept_name——部門名稱圖15-manager管理員信息表manager_id——管理員編號,manager_name——管理員名稱,manager_password——登錄密碼圖16----emp(員工信息)表emp_id——員工編號emp_name——員工姓名emp_gender——員工性別emp_no員工身份證號dept_id——部門編號job_id——職務(wù)編號圖17----job(職務(wù)信息)表job_id——職務(wù)編號job_name——職務(wù)名稱job_salary——職務(wù)基本工資job_allowance——職務(wù)津貼圖18----salary(工資信息)表salary_date——發(fā)工資日期emp_id——員工編號salary_overtime——加班費salary_late——遲到扣除費salary_award——員工獎勵salary_charge——節(jié)假日除費salary_punish——員工罰款salary_basic——基本工資salary_allowance——員工津貼salary_sum——員工總工資4.3E-R圖為了更好的表現(xiàn)各表之間的關(guān)系,本文給出了數(shù)據(jù)庫的ER圖,如下圖所示。系統(tǒng)總的E-R圖:身份證號身份證號員工編號員工編號姓名擁有性別擁有性別工作表現(xiàn)員工工作表現(xiàn)員工職務(wù)編號部門編號職務(wù)編號部門編號管理管理工資生成工資生成管理員管理員操作基本工資別資工資操作基本工資別資工資獎勵金額獎勵金額部門信息表表部門信息表表員工編號懲罰金額員工編號懲罰金額工資信息表工資信息表員工信息表身份證號管理員編號管理員姓名身份證號管理員編號管理員姓名員工編號姓名員工編號姓名性別管理員性別管理員管理員密碼職務(wù)編號員工管理員密碼職務(wù)編號員工部門編號部門編號圖14----員工實體E-R圖圖15----管理員實體E-R圖遲到扣費獎勵金額工資日期遲到扣費獎勵金額工資日期節(jié)假日扣費節(jié)假日扣費部門名稱部門編號加班費部門名稱部門編號加班費罰款金額工資罰款金額工資員工編號員工編號部門工資總和津貼基本工資部門工資總和津貼基本工資圖14----員工實體E-R圖圖17----部門實體E-R圖職務(wù)編號職務(wù)編號津貼津貼職務(wù)職務(wù)職務(wù)基本工資職務(wù)名稱職務(wù)基本工資職務(wù)名稱圖14----職務(wù)實體E-R圖邏輯結(jié)構(gòu)本企業(yè)工資管理系統(tǒng)包含五個實體,分別為:manager(管理員信息)表、dept(部門信息)表、emp(員工信息)表、job(職務(wù)信息)表、salary(工資信息)表。manager(管理員信息)表中包括manager_id(管理員編號)、manager_name(管理員名稱)、manager_password(管理員密碼),其中manager_id為主鍵。dept(部門信息)表中有dept_id(部門編號)、dept_name(部門名稱),其中dept_id為主鍵。emp(員工信息)表中有emp_id(員工編號)、emp_name(員工姓名)、emp_gender(員工性別)、emp_no(身份證號)、dept_id(員工所在部門編號)job_id(員工職務(wù)編號),主鍵為emp_id。job(職務(wù)信息)表中有job_id(職務(wù)編號)、job_name(職務(wù)名稱)、job_salary(職務(wù)基本工資)、job_allowance(職務(wù)津貼),其中job_id為主鍵。salary(工資信息)表中有salary_date(發(fā)工資日期)、emp_id(員工編號)、salary_overtime(加班費)、salary_late(遲到扣費)、salary_award(獎勵金額)、salary_charge(節(jié)假日扣除非)、salary_punish(罰款金額)、salary_basic(員工基本工資)、salary_allowance(員工津貼)、salary_sum(工資總數(shù))。其中manager(管理員)可以通過emp(員工)表、salary(工資)表來管理員工。對員工的基本信息進行查詢、添加、修改和刪除;還可以對員工工資按月生成,并且對各員工工資進行查詢、添加、修改和刪除。而員工只能對自己的基本信息和工資情況進行查詢。小結(jié)本章論述了系統(tǒng)的設(shè)計環(huán)境,給出了系統(tǒng)框架圖和詳細(xì)類圖,分析了系統(tǒng)應(yīng)具備的各種功能,對數(shù)據(jù)庫的邏輯設(shè)計進行了詳細(xì)的描述,給出了數(shù)據(jù)庫ER圖,并介紹了利用Erwin的正向工程生成數(shù)據(jù)庫的過程,為以后的詳細(xì)設(shè)計和編碼奠定了基礎(chǔ)。系統(tǒng)詳細(xì)設(shè)計功能模塊設(shè)計具體系統(tǒng)功能需求描述:(1)員工信息管理:提供管理員對“員工基本信息”數(shù)據(jù)添加、刪除、修改和查詢功能。(2)工資管理:提供管理員對”員工工資”數(shù)據(jù)的添加、刪除、修改和查詢功能以及員工對自己工資情況的查詢,工資的管理是以月為單位的,且員工查詢時也只能按月份來查詢。(3)部門管理:提供管理員對部門信息的添加、刪除、修改和查詢功能,也可以是管理員在查詢員工信息是直接已部門為單位查詢。(4)特殊查詢:提供管理員對員工信息查詢,可以通過員工的各種不同的基本信息來查詢,而且還可以實現(xiàn)身份證的“模糊查詢”。備注:管理員和員工的登錄方式不同,分別登錄。管理員進入界面后可選擇的操作有:員工管理(員工信息的增添刪改)、部門管理(部門信息的增添刪改)、工資管理(工資生成及工資信息的增添刪改);員工進入自己的界面可以根據(jù)自己的需要選擇這些操作:查看個人信息和查看工資信息。5.2界面設(shè)計依照簡潔實用、整體性好、網(wǎng)站形象突出、頁面色彩協(xié)調(diào)、交互式強的原則對本網(wǎng)站系統(tǒng)的頁面進行了詳細(xì)的規(guī)劃、設(shè)計。下面介紹幾個主要界面。在MyEclipse中啟動Tomcat服務(wù)器。在網(wǎng)頁中輸://localhost:8080/WMS/(WMS是系統(tǒng)所用的數(shù)據(jù)庫名),轉(zhuǎn)入到的網(wǎng)頁就是系統(tǒng)的登錄界面,如下圖1所示:圖1----主登錄界面圖中的鏈接著管理員的登錄界面,鏈接著員工登錄界面。點擊進入管理員登錄界面,管理員名(密碼)有兩個:admin(admin)和system(system)。點擊進入員工登錄界面,員工通過員工編號與身份證號登錄。管理員登錄后的界面如圖2所示,員工登錄后的界面如圖3所示:圖2---管理員登錄后的頁面圖3---員工登錄后的主頁面管理員登錄成功之后,可根據(jù)自己要執(zhí)行操作的對象選擇員工管理、工資管理和部門管理,在員工管理和部門管理中可實現(xiàn)對員工部門信息的增添刪改操作,在工資管理中可實現(xiàn)員工工資的生成和對工資的增添刪改。各種操作界面如下圖所示:圖4----添加員工信息頁面圖5----查詢員工信息頁面圖6----員工工資生成頁面圖7----查勘員工工資頁面圖8----企業(yè)部門的設(shè)定頁面圖9----添加部門頁面圖10---企業(yè)職務(wù)的設(shè)定頁面圖11----企業(yè)職務(wù)添加頁面員工登錄成功之后,可根據(jù)自己的需求進行查看個人信息和工資信息。各種操作界面如下圖所示:圖12----查看自己的基本信息圖13----查看自己的工資情況5.3關(guān)鍵源代碼數(shù)據(jù)庫創(chuàng)建sql語句USEwmsGOCREATETABLEdept /*創(chuàng)建部門表*/( dept_idintidentity(1,1)primarykey,/*部門編號*/ dept_namevarchar(20)NOTNULL /*部門名稱*/)CREATETABLEjob /*創(chuàng)建職務(wù)表*/( job_idintidentity(1,1)primarykey, /*職務(wù)編號*/ job_namevarchar(20)NOTNULL, /*職務(wù)名稱*/ job_salaryintdefault0, /*基本工資*/ job_allowanceintdefault0, /*津貼*/)CREATETABLEemp/*創(chuàng)建員工表*/( emp_idintidentity(100001,1)primarykey, /*員工編號*/ emp_namevarchar(20)NOTNULL, /*姓名*/ emp_gendervarchar(2)NOTNULL, /*性別*/ emp_no varchar(18)NOTNULL, /*身份證號*/ dept_idintreferencesdept(dept_id), /*部門編號*/ job_idintreferencesjob(job_id) /*職務(wù)編號*/)CREATETABLEsalary/*創(chuàng)建工資表*/( salary_datevarchar(6), /*日期*/ emp_idint, /*員工編號*/ primarykey(salary_date,emp_id),/*日期和員工編號聯(lián)合主鍵*/ salary_overtimeintdefault0, /*加班工資*/ salary_lateintdefault0, /*遲到扣款*/ salary_awardintdefault0, /*獎金*/ salary_chargeintdefault0, /*節(jié)假日扣款*/ salary_punishintdefault0, /*罰款*/ salary_basicintNOTNULL, /*基本工資*/ salary_allowanceintdefault0, /*津貼*/ salary_sumassalary_basic+salary_allowance+salary_award+salary_overtime-salary_late-salary_charge-salary_punish /*月工資*/)CREATETABLEmanager /*創(chuàng)建管理員表*/( manager_idintidentity(1,1)primarykey, /*管理員編號*/ manager_namevarchar(20), /*管理員姓名*/ manager_passwordvarchar(20) /*密碼*/)數(shù)據(jù)庫操作關(guān)鍵代碼段1、管理員登錄代碼:UserDaouserDao=newUserDao(); if("manager".equals(flag)){ StringuserName=request.getParameter("userName"); StringempId=userName; Stringpass=request.getParameter("pass"); if(userDao.mLogin(userName,pass)==null){ request.setAttribute("Info","登錄失敗,用戶名或密碼錯誤!"); request.getRequestDispatcher("error.jsp").forward(request, response); }else{ Sessionsession=request.getSession(); session.setAttribute("empId",empId); request.getRequestDispatcher("jsp/manager.jsp").forward( request,response);2、員工登錄代碼:if("user".equals(flag)){ intempId=Integer.parseInt(request.getParameter("empId")); StringempNo=request.getParameter("empNo"); if(userDao.uLogin(empId,empNo)==null){ request.setAttribute("Info","登錄失敗,用戶名或密碼錯誤!"); request.getRequestDispatcher("error.jsp").forward(request, response); }else{ Sessionsession=request.getSession(); session.setAttribute("empId",empId); request.getRequestDispatcher("jsp/user.jsp").forward(request, response); } }數(shù)據(jù)庫連接及關(guān)閉代碼:publicclassDB{server.jdbc.SQLServerDriver";//加載JDBC驅(qū)動 privatestaticStringdbURL="jdbc:sqlserver://localhost:1433;DatabaseName=WMS";//連接服務(wù)器和數(shù)據(jù)庫wms privatestaticStringuserName="sa";//默認(rèn)用戶名 privatestaticStringuserPwd="sa123456";//密碼 //建立數(shù)據(jù)庫連接 publicstaticConnectiongetConnection(){ Connectionconn=null; try{ Class.forName(driverName); try{ conn=DriverManager.getConnection(dbURL,userName,userPwd); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnconn; } //關(guān)閉常用的資源 publicstaticvoidclose(ResultSetrs){ if(rs!=null){ try{ rs.close(); }catch(SQLExceptione){ e.printStackTrace(); } } } publicstaticvoidclose(PreparedStatementpst){ if(pst!=null){ try{ pst.close(); }catch(SQLExceptione){ e.printStackTrace(); } } } //關(guān)閉數(shù)據(jù)庫 publicstaticvoidclose(Connectionconn){ if(conn!=null){ try{ conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } }}管理員對部門信息的操作:1、部門信息刪除:if("del".equals(flag)){ intdeptId=Integer.parseInt(request.getParameter("delId")); List<Department>deptList=newArrayList<Department>(); if(!commonDao.findById(deptId)){ deptList=userDao.findDept(); request.setAttribute("deptList",deptList); request.setAttribute("Info","刪除失敗,部門里有員工!"); request.getRequestDispatcher("jsp/dept.jsp").forward(request, response); }else{ //System.out.println("======================================"); if(commonDao.delDept(deptId)){ //System.out.println("=====************========================="); deptList=userDao.findDept(); request.setAttribute("deptList",deptList); request.setAttribute("Info","刪除成功"); request.getRequestDispatcher("jsp/dept.jsp").forward( request,response); }}2、部門信息修改:if("modify".equals(flag)){ intdeptId=Integer.parseInt(request.getParameter("deptId")); StringdeptName=request.getParameter("deptName"); List<Department>deptList=newArrayList<Department>(); if(!commonDao.findByName(deptName)){ deptList=userDao.findDept(); request.setAttribute("deptList",deptList); request.setAttribute("Info","已存在此部門名稱!"); request.getRequestDispatcher("jsp/dept.jsp").forward(request, response); }else{ commonDao.updateDept(deptId,deptName); deptList=userDao.findDept(); request.setAttribute("deptList",deptList); request.setAttribute("Info","修改成功!"); request.getRequestDispatcher("jsp/dept.jsp").forward(request, response); }3、部門信息添加:if("add".equals(flag)){ StringdeptName=request.getParameter("deptName"); List<Department>deptList=newArrayList<Department>(); //System.out.println("========================"); if(!commonDao.findByName(deptName)){ deptList=userDao.findDept(); request.setAttribute("deptList",deptList); request.setAttribute("Info","已存在此部門名稱!"); request.getRequestDispatcher("jsp/dept.jsp").forward(request, response); }else{ //System.out.println("*****************======="); commonDao.addDept(deptName); deptList=userDao.findDept(); request.setAttribute("deptList",deptList); request.setAttribute("Info","添加成功!"); request.getRequestDispatcher("jsp/dept.jsp").forward(request, response); }4、部門信息查詢:if("searchdpt".equals(flag)){ List<Department>deptList=newArrayList<Department>(); deptList=userDao.findDept(); request.setAttribute("deptList",deptList); request.getRequestDispatcher("jsp/searchuser.jsp?aa=a").forward( request,response);管理員對職務(wù)信息的操作:1、職務(wù)信息的刪除:if("deljob".equals(flag)){ intjobId=Integer.parseInt(request.getParameter("delId")); List<Job>jobList=newArrayList<Job>(); if(commonDao.findJobById(jobId)){ jobList=userDao.findJob(); request.setAttribute("jobList",jobList); request.setAttribute("Info","不能刪除此職務(wù)!"); request.getRequestDispatcher("jsp/job.jsp").forward(request, response); }else{ if(commonDao.delJob(jobId)){ jobList=userDao.findJob(); request.setAttribute("jobList",jobList); request.setAttribute("Info","刪除成功!"); request.getRequestDispatcher("jsp/job.jsp").forward( request,response); }else{ jobList=userDao.findJob(); request.setAttribute("jobList",jobList); request.setAttribute("Info","刪除失?。?); request.getRequestDispatcher("jsp/job.jsp").forward( request,response); } }2、職務(wù)信息的添加:if("addjob".equals(flag)){ List<Job>jobList=newArrayList<Job>(); StringjobName=request.getParameter("jobName"); Stringsalary=request.getParameter("jobSalary"); Stringallowance=request.getParameter("jobAllowance"); intjobSalary=Integer.parseInt(salary); intjobAllowance; if(allowance==null||"".equals(allowance)){ jobAllowance=0; }else{ jobAllowance=Integer.parseInt(allowance); } if(commonDao.findJobByName(jobName)){ jobList=userDao.findJob(); request.setAttribute("jobList",jobList); request.setAttribute("Info","已存在此職務(wù),添加失?。?); request.getRequestDispatcher("jsp/job.jsp").forward(request, response); }else{ if(commonDao.addJob(jobName,jobSalary,jobAllowance)){ jobList=userDao.findJob(); request.setAttribute("jobList",jobList); request.setAttribute("Info","添加成功!"); request.getRequestDispatcher("jsp/job.jsp").forward( request,response); }else{ jobList=userDao.findJob(); request.setAttribute("jobList",jobList); request.setAttribute("Info","添加失敗!"); request.getRequestDispatcher("jsp/job.jsp").forward( request,response); } }3、職務(wù)信息的修改:elseif("modjob".equals(flag)){ intjobId=Integer.parseInt(request.getParameter("jobId")); Jobjob=newJob(); job=commonDao.findByJobId(jobId); request.setAttribute("job",job); request.getRequestDispatcher("jsp/modifyjob.jsp?aa=a").forward( request,response); }elseif("mj".equals(flag)){ List<Job>jobList=newArrayList<Job>(); intjobId=Integer.parseInt(request.getParameter("jobId")); StringjobName=request.getParameter("jobName"); Stringsalary=request.getParameter("jobSalary"); Stringallowance=request.getParameter("jobAllowance"); intjobSalary=Integer.parseInt(salary); intjobAllowance; if(allowance==null||"".equals(allowance)){ jobAllowance=0; }else{ jobAllowance=Integer.parseInt(allowance); } if(commonDao.updateJob(jobId,jobName,jobSalary,jobAllowance)){ jobList=userDao.findJob(); request.setAttribute("jobList",jobList); request.setAttribute("Info","修改成功!"); request.getRequestDispatcher("jsp/job.jsp").forward(request, response); }else{ jobList=userDao.findJob(); request.setAttribute("jobList",jobList); request.setAttribute("Info","修改失敗!"); request.getRequestDispatcher("jsp/job.jsp").forward(request, response); } }管理員對員工信息的操作:1、員工信息的插入:if("insert".equals(flag)){ Employeeemp=newEmployee(); StringempName=request.getParameter("empName"); Stringgender=request.getParameter("gender"); StringempGender=null; if("male".equals(gender)){ empGender="男"; }else{ empGender="女"; } StringempNo=request.getParameter("empNo"); System.out.println(empNo); intdeptId=Integer.parseInt(request.getParameter("deptId")); intjobId=Integer.parseInt(request.getParameter("jobId")); if(userDao.findByNo(empNo)){ emp.setEmp_name(empName); emp.setEmp_gender(empGender); emp.setEmp_no(empNo); emp.setDept_id(deptId); emp.setJob_id(jobId); if(userDao.addUser(emp)){ emp=userDao.findUById(empNo,empName); request.setAttribute("emp",emp); request.setAttribute("Info","添加成功!"); request.getRequestDispatcher("jsp/userinfo.jsp").forward( request,response); }else{ request.setAttribute("Info","添加失敗!"); request.getRequestDispatcher("error.jsp").forward(request, response); } }else{ request.setAttribute("Info","已存在此身份證號為:"+empNo+"的員工!"); request.getRequestDispatcher("error.jsp").forward(request, response);2、員工信息的查詢:if("search".equals(flag)){ List<Employee>empList=newArrayList<Employee>(); StringeId=request.getParameter("empId"); intempId; if(eId==null||"".equals(eId)){ empId=0; }else{ empId=Integer.parseInt(eId); } StringempName=request.getParameter("empName"); StringempNo=request.getParameter("empNo"); intdeptId=Integer.parseInt(request.getParameter("deptId")); empList=userDao.findUserInfo(empId,empName,empNo,deptId); if(empId==0){ request.setAttribute("empId",""); }else{ request.setAttribute("empId",empId); } List<Department>deptList=newArrayList<Department>(); deptList=userDao.findDept(); request.setAttribute("deptList",deptList); request.setAttribute("empName",empName); request.setAttribute("empNo",empNo); request.setAttribute("empList",empList); request.getRequestDispatcher( "jsp/searchuser.jsp?aa=b&deptId="+deptId).forward( request,response);3、員工信息的刪除:if("del".equals(flag)){ StringdelId=request.getParameter("delId"); intempId=Integer.parseInt(delId); if(userDao.delUser(empId)){ List<Employee>empList=newArrayList<Employee>(); empList=userDao.findUserInfo(0,"","",0); List<Department>deptList=newArrayList<Department>(); deptList=userDao.findDept(); request.setAttribute("deptList",deptList); request.setAttribute("Info","刪除成功!"); request.setAttribute("empId",""); request.setAttribute("empName",""); request.setAttribute("empNo",""); request.setAttribute("empList",empList); request.getRequestDispatcher("jsp/searchuser.jsp?aa=c&deptId=0") .forward(request,response); }4、員工信息的修改:if("update".equals(flag)){ intempId=Integer.parseInt(request.getParameter("empId")); StringempName=request.getParameter("empName"); Stringgender=request.getParameter("gender"); StringempGender=null; if("male".equals(gender)){ empGender="男"; }else{ empGender="女"; } StringempNo=request.getParameter("empNo"); System.out.println(empNo); intdeptId=Integer.parseInt(request.getParameter("deptId")); intjobId=Integer.parseInt(request.getParameter("jobId")); Employeeemp=newEmployee(); emp.setEmp_id(empId); emp.setEmp_name(empName); emp.setEmp_gender(empGender); emp.setEmp_no(empNo); emp.setDept_id(deptId); emp.setJob_id(jobId); if(userDao.updateUser(emp)){ request.setAttribute("Info","修改成功!"); request.getRequestDispatcher("success.jsp").forward( request,response); }else{ request.setAttribute("Info","修改失??!"); request.getRequestDispatcher("error.jsp").forward(request, response); }管理員對工資信息的操作:(1)工資生成:if("set".equals(flag)){ Wagewage=newWage(); Wagew=newWage(); Jobjob=newJob(); intsalaryOvertime; intsalaryLate; intsalaryAward; intsalaryCharge; intsalaryPunish; StringBuffers=newStringBuffer(); Stringyear=request.getParameter("year"); Stringmonth=request.getParameter("month"); s.append(year).append(month); Stringdate=s.toString(); intempId=Integer.parseInt(request.getParameter("empId")); Stringovertime=request.getParameter("overtime"); Stringlate=request.getParameter("late"); Stringaward=request.getParameter("award"); Stringcharge=request.getParameter("charge"); Stringpunish=request.getParameter("punish"); if(overtime==null||"".equals(overtime)){ salaryOvertime=0; }else{ sala
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年道路照明工程小工程承包合同模板3篇
- 2025年度文化旅游宣傳畫冊制作合同3篇
- 二零二五年度GRc構(gòu)件生產(chǎn)、安裝與環(huán)保評估服務(wù)合同3篇
- 二零二五年度變電站圍欄砌筑施工合同2篇
- 2024年度專利技術(shù)成果轉(zhuǎn)化合作協(xié)議樣本3篇
- 2024年離婚贍養(yǎng)費協(xié)議:前配偶間關(guān)于經(jīng)濟支持的約定
- 二零二五年度副食品原料基地建設(shè)與供應(yīng)鏈管理合同3篇
- 2024年礦山開采土方工程合同
- 二零二五年度區(qū)塊鏈技術(shù)入股合作協(xié)議示范文本3篇
- 2024年物流企業(yè)并購保密協(xié)議及供應(yīng)鏈優(yōu)化服務(wù)協(xié)議3篇
- 2023-2024年電商直播行業(yè)現(xiàn)狀及發(fā)展趨勢研究報告
- 中央2024年市場監(jiān)管總局直屬事業(yè)單位招聘中層干部歷年參考題庫(頻考版)含答案解析
- 【9歷期末】安徽省利辛縣部分學(xué)校2023~2024學(xué)年九年級上學(xué)期期末考試歷史試卷
- GB/T 44949-2024智能熱沖壓成形生產(chǎn)線
- 阜陽市重點中學(xué)2025屆高考數(shù)學(xué)全真模擬密押卷含解析
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)(2024版)宣傳海報
- 2024-2025學(xué)年統(tǒng)編版七年級語文上學(xué)期期末真題復(fù)習(xí) 專題01 古詩文名篇名句默寫
- 2024-2030年中國企業(yè)大學(xué)建設(shè)行業(yè)轉(zhuǎn)型升級模式及投資規(guī)劃分析報告
- 醫(yī)院培訓(xùn)課件:《病歷書寫基本規(guī)范(醫(yī)療核心制度)》
- 2024年“中銀杯”安徽省職業(yè)院校技能大賽(高職組)花藝賽項競賽規(guī)程
- 部隊年度安全規(guī)劃方案
評論
0/150
提交評論