工資管理系統(tǒng)-軟件工程課程設計2_第1頁
工資管理系統(tǒng)-軟件工程課程設計2_第2頁
工資管理系統(tǒng)-軟件工程課程設計2_第3頁
工資管理系統(tǒng)-軟件工程課程設計2_第4頁
工資管理系統(tǒng)-軟件工程課程設計2_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄TOC\o"1-2"\h\z\u目錄-2-第一章緒論-4-1.1開發(fā)背景說明-4-課程設計目的-4-課程題目及內容-4-課程設計要求-5-預期目標-5-1.6系統(tǒng)環(huán)境-5-第二章可行性分析-6-2.1可行性研究前提-6-2.2經(jīng)濟上可行性-6-2.3技術可行性-6-目標方案可行性-6-操作可行性-7-第三章需求分析-8-引言-8-任務陳述-8-市場需求分析-9-系統(tǒng)功能需求分析-9-系統(tǒng)性能需求分析-9-3.6系統(tǒng)業(yè)務數(shù)據(jù)流-11-用例分析-12-用例列表-12-繪制系統(tǒng)模型圖-12-第四章系統(tǒng)概要設計-20-模塊分析和概要設計-20-4.2系統(tǒng)數(shù)據(jù)庫邏輯結構設計-20-概念模型轉換為關系數(shù)據(jù)模型-21-4.4數(shù)據(jù)庫設計-21-第五章詳細設計-23-登錄管理-23-用戶管理-26-職工管理-27-工資管理-30-查詢管理-35-第六章系統(tǒng)測試-39-6.1測試方法-39-測試內容-39-測試結果-39-6.4測試結果分析-42-測試的作用和意義-42-第七章總結-43-參考文獻-44-第一章緒論1.1開發(fā)背景說明隨著社會的進步和計算機技術的開展,特別是微型計算機的大范圍普及,現(xiàn)在應用在大中型企業(yè)的信息管理系統(tǒng)中,幾乎都包括了工資管理模塊。有些環(huán)境中是有大型ERP軟件中的一個模塊引進的,有些作為企業(yè)的財務系統(tǒng)的一局部。計算機處理的數(shù)據(jù)量不斷增加。文件管理系統(tǒng)采用的一次最多存取一個記錄的訪問方式,以及在不同文件之間缺乏相互聯(lián)系的結構,越來越不能適應管理大量數(shù)據(jù)的需要,于是數(shù)據(jù)庫管理系統(tǒng)便應運而生。有了數(shù)據(jù)庫我們便能方便快捷的對數(shù)據(jù)進行讀取、存取,并維護數(shù)據(jù)庫的數(shù)據(jù)。但,西方管理制度設計的工資管理軟件,在很多時候還不能完成解決中國特色中小企業(yè)的問題,本文介紹的畢業(yè)設計的研究工作就是要為這些具有中國特色的中小企業(yè)解決他們在工資管理方面的問題。今天,數(shù)據(jù)庫管理已成為計算機信息管理的主要方式。數(shù)據(jù)庫的應用非常廣泛,可應用于各行各業(yè),只要是稍復雜的數(shù)據(jù),都可制作成數(shù)據(jù)庫,交由電腦來管理。用電腦管理數(shù)據(jù),運算速度快,檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、本錢低且不易出錯等,這些優(yōu)點能夠極大地提高工資管理的效率,也是科學化、正規(guī)化管理的重要條件,尤其是現(xiàn)在的中小型企業(yè)正需要這種對口的工資管理系統(tǒng),并且是現(xiàn)行的財務管理系統(tǒng)所代替不了的。軟件工程課程設計是計算機專業(yè)集中實踐性教學環(huán)節(jié)之一,是學習完《軟件工程》課程后進行的一次全面的綜合練習。其目的在于加深對軟件工程理論和根本知識的理解,使學生通過軟件開發(fā)的實踐訓練,進一步掌握軟件工程的方法和技術,解決實際問題的能力。培養(yǎng)學生正確的設計思想,理論聯(lián)系實際的工作作風,嚴肅認真、實事求是的科學態(tài)度和勇于探索的創(chuàng)新精神。培養(yǎng)學生綜合運用所學知識與生產實踐經(jīng)驗,分析和解決工程技術問題的能力。題目:工資管理系統(tǒng)內容:考察一個中小型企業(yè),要求設計一套企業(yè)工資管理系統(tǒng),其中應具有一定的人事檔案管理功能。工資管理系統(tǒng)是企業(yè)進行管理的不可缺少的一局部,它是建立在人事檔案系統(tǒng)之上的,其職能部門是財務處和會計室。通過對職工建立人事檔案,根據(jù)其考勤情況,以及相應的工資級別,算出其相應的工資。為了減少輸入帳目時的錯誤,可以根據(jù)職工的考勤、職務、部門、各種稅費等等,自動求出工資。為了便于企業(yè)領導掌握本企業(yè)的工資信息在系統(tǒng)中應參加各種查詢功能,包括個人信息、職工工資、本企業(yè)內某一個月或某一部門的工資情況查詢。系統(tǒng)應能輸出各類統(tǒng)計報表。本系統(tǒng)需要完成的功能主要有:系統(tǒng)數(shù)據(jù)初始化;職工根本信息數(shù)據(jù)的輸入、修改、刪除;企業(yè)工資的根本設定;職工工資的瀏覽;職工個人工資表的查詢;職工工資的計算;工資報表打印。數(shù)據(jù)流:職工根本狀況:包括職工編號、職工姓名、性別、年齡、職位等。工資級別和工資金額:包括工資等級、工資額。企業(yè)部門及工作崗位信息:包括部門名稱、工作崗位名稱、工作崗位工資等。工齡和工資金額:包括工齡及對應工資額。工資信息:包括職工編號、職工姓名、職工根本工資、職工崗位工資、職工工齡工資、公司津貼、職工實發(fā)工資等。堅持“規(guī)格嚴格,功夫到家〞的優(yōu)良傳統(tǒng),加強根本功訓練,做到理論與實際相結合,繼承與創(chuàng)新相結合,充分發(fā)揮學生的主觀能動性與教師因材施教、嚴格要求相結合,抓智力因素教育與非智力因素教育相結合,教書育人。所設計的工資管理系統(tǒng)應包含輸入輸出、修改、刪除、查詢等根本功能。根據(jù)題目的根本需求,畫出流程圖、用例圖、類圖等,編寫程序,并寫出詳細的設計說明書。課程設計過程中,要嚴格遵守課程設計的時間安排,聽從指導教師的指導。正確地完成上述內容,標準完整地撰寫出課程設計報告。方案設計:對于企、事業(yè)單位的工資發(fā)放來說,不需要太大型的數(shù)據(jù)庫系統(tǒng),只需要一個操作方便,功能實用,能滿足財務部門對工資及時的發(fā)放。本工資管理系統(tǒng)預期目標就是實現(xiàn)如下的一些功能:查詢?yōu)g覽記錄功能,增加記錄功能、修改記錄功能、刪除記錄功能、刷新記錄功能、最后實現(xiàn)統(tǒng)計計算功能。1.6系統(tǒng)環(huán)境硬件:個人PC軟件:WindowsXP、MicrosoftVisualC++6.0、RationalRose。第二章可行性分析2.1可行性研究前提要求:滿足對工資管理的根本要求及功能,并對職工信息收集、處理、保存。目標:實現(xiàn)無紙化辦公,節(jié)省本錢,提高工作效率。條件、假定、限制:當企業(yè)工資管理的信息量和復雜程度到達某一限度時,即管理人員的勞動強度超過其承受能力時,就必須采用新的管理手段,如用計算機技術對信息的收集、加工、傳遞和存貯等,這樣,一個工資管理系統(tǒng)就可以對企業(yè)職工工資進行高效、合理、恰當?shù)毓芾怼?.2經(jīng)濟上可行性開發(fā)本錢要低廉。效益:大幅度地提高工資管理信息系統(tǒng)的工作質量和效率,讓企業(yè)掌握整個工資管理系統(tǒng)的全面情況,為管理人員提供了準確的工資管理信息,促進工資管理工作的標準化及各項管理制度與指標體系的建立和健全;提供各種加工處理了的工資管理信息,以滿足工資管理的特殊要求,適應新形勢對職工隊伍提出的新要求。效益/投資比:暫時無法估算。投資回收期內:(1)企業(yè)有能力承當系統(tǒng)開發(fā)費用。理理念的集合體。而管理是一個動態(tài)過程,在其運行過程中要采取多項措施。其最主要的表現(xiàn)就是減少了企業(yè)管理費用和人力開支。2.3技術可行性〔1〕軟件需求:操作系統(tǒng)WINDOWS2000AdvanceServer以上。硬件需求:賽揚1.7GCPU、512M內存80G硬盤的計算機?!?〕本系統(tǒng)采用VC++實現(xiàn),依靠其強大的面向對象系統(tǒng),與數(shù)據(jù)庫管理系統(tǒng)相結合。計算機設備處理繁雜的工資增減問題,大幅度減少人力、物力,極大地提高企業(yè)的管理水平和管理效率。管理水平和管理效率的提高能直接產生經(jīng)濟效益。本系統(tǒng)平安保密性可靠,實施獨立的局域網(wǎng)絡,人員進入系統(tǒng)需要登錄,需輸入賬戶和密碼。本系統(tǒng)的管理,可以根據(jù)市場需要進行調整,實用性強a.本系統(tǒng)采用基于Windows的圖形用戶界面,而該系統(tǒng)是大家熟悉的操作系統(tǒng),對于那有一般的計算機知識的人員就可以輕松上手。b.整個工資管理系統(tǒng)采用較友好的交互界面,簡單明了,操作方便,不需要對數(shù)據(jù)庫進行深入的了解。第三章需求分析需求分析就是收集、分析用戶的需求,準確地定義新系統(tǒng)的目標,獲得需求規(guī)格說明書,關系到軟件系統(tǒng)開發(fā)的成敗,是決定軟件產品質量的關鍵。只有準確獲取用戶需求,才能設計出優(yōu)秀的軟件產品。通過詳細調查,獲取工作過程和業(yè)務處理,明確用戶的各種需求,確定新功能。在我國,管理信息系統(tǒng)是計算機應用最廣泛的領域之一。企、事業(yè)單位為了提高自身的管理水平和競爭能力,紛紛投入人力物力,開發(fā)適合本單位需求的管理信息系統(tǒng)。隨著計算機技術的開展,人們的辦公環(huán)境不斷改變,工作效率得到了很大的提高。在企業(yè)的開展中,辦公自動化從一個側面反映了公司的現(xiàn)代化水平。其中,用于管理員工工資的工資管理系統(tǒng)就是現(xiàn)代化辦公的重要組合局部。工資管理系統(tǒng)的主要任務是通過工資費用的計算和分配,為本錢核算與賬務處理提供依據(jù),并且根據(jù)工資制度和職工勞動數(shù)量與質量,計算并發(fā)放應該支付給職工的工資。工資核算時工資管理的主要內容。工資核算包括工資結算與工資分配兩個方面。工資結算是指應付工資、代扣款項和實發(fā)工資的計算;工資分配是指按部門、類別進行工資匯總,并按工資的用途對工資進行分配。工資總額是指各單位在一定時期內支付給本單位全體職工的全部勞動報酬總額。按照國家統(tǒng)計局的規(guī)定,工資總額有計時工資、計件工資、獎金、津貼和補貼、加班加點工資和特殊情況下支付的工資6局部組成,其中計時工資和計件工資是工資總額中最根本的局部。上述工資構成要件所組成的工資總額只是應發(fā)工資,并非每個職工拿到手的實發(fā)工資,原因在于存在一些應扣工程,例如水電費、工會會費、保險費、公積金、病事假扣款、曠工扣款和個人所得稅等。在計算每個職工實發(fā)工資之前應在工資總額中扣除這局部款項,即有如下關系:應發(fā)工資=根本工資+工齡工資+崗位津貼+固定補貼+加班加點工資+獎金扣款合計=水電費+保險費+個人所得稅+病假扣款+事假扣款+曠工扣款+其他扣款實發(fā)工資=應發(fā)工資–扣款合計每個月財務部門根據(jù)人事部門提供的職工根本工資數(shù)據(jù)、所得稅率和人事變動情況計算所有員工的根本工資信息,然后根據(jù)各個部門提供并審核后的各種表格,如完成任務表、考勤表、考核表、職工當月的扣款情況〔包括水電費、病事假扣款等〕等計算職工變開工資、個人所得稅和應發(fā)放工資等,編制工資單。按類進行匯總,編制工資匯總表。將實發(fā)工資轉入代發(fā)銀行,由銀行代發(fā)工資,并進行賬務處理。工資結算過程主要設計如下會計賬戶:現(xiàn)金、銀行存款、應付工資、其他應付款、其他應收款等。工資管理系統(tǒng)是一個企業(yè)單位不可或缺的局部,他能為用戶提供充足的信息和快捷的查詢手段。一個工資管理系統(tǒng)可以高效能、大容量的收集、處理、存儲工資管理信息,大幅度的工資管理信息系統(tǒng)的工作質量和效率。能夠為企業(yè)管理人員及時掌握整個工資管理系統(tǒng)的全面情況,提供系統(tǒng)的準確的工資管理信息,可以促進工資管理工作的標準化及各項管理制度與指標體系的建立和健全。為企業(yè)提供各種加工管理了工資管理信息,以滿足工資管理的特殊要求,適應新形勢對職工隊伍建設提出的新要求,幫助管理人員選擇方案,實現(xiàn)優(yōu)化決策。雖然當前,不少單位的工資管理部門對于計算機應用還僅限于簡單的單機應用,隨著時間的推移、任務的復雜、用戶的需求,其應用還會擴大。工資管理系統(tǒng)涉及到員工根本信息的錄入、修改和刪除,工資標準的設定、查詢和結算等。典型的工資管理系統(tǒng)主要有以下根本功能:a)系統(tǒng)數(shù)據(jù)初始化b)員工根本信息的錄入、修改、刪除等功能c)工資標準的設定功能,集體包括職務工資、職稱工資、其他工資標準和福利的設定。d)工資信息的瀏覽e)員工工資信息表的創(chuàng)立及查詢f)工資調整管理g)工資計算h)工資報表打印需求分析總體目標需求分析的目的在于與開發(fā)人員與用戶之間達成系統(tǒng)開發(fā)的共識,使開發(fā)人員所考慮的系統(tǒng)在功能〔系統(tǒng)能做什么〕、簡單操作,良好界面,個人信息保密性,系統(tǒng)平安與穩(wěn)定,良好帳戶管理,友好信息返回模式〔如報表及打印功能〕。性能需求此工資管理系統(tǒng)對工資數(shù)據(jù)精度的計算能在默認情況之下精確到小數(shù)點后3位小數(shù),即是精確到分的計算。但在用戶使用過程中,能自行根據(jù)實際情況進行小數(shù)計算精度的設定,最大能允許保存小數(shù)點后5位的精度。在時間特性上,當用戶發(fā)出命令請求時的效勞器的響應時間、對數(shù)據(jù)更新處理、工資數(shù)據(jù)的查詢檢索等上,同樣要求系統(tǒng)響應時間不會超過0.5秒時間。系統(tǒng)支持多種操作系統(tǒng)的運行環(huán)境,多不同操作系統(tǒng),不同文件格式的磁盤上的數(shù)據(jù)均能實現(xiàn)信息的互通,及共享。當效勞器移植到其他的系統(tǒng)平臺,如:Linux平臺下時,同樣能和其他的系統(tǒng)進行數(shù)據(jù)存取同步,不會出現(xiàn)系統(tǒng)之間互不兼容的情況,系統(tǒng)支持多系統(tǒng)之間的互連互通,系統(tǒng)有巨大的強健性。運行需求系統(tǒng)在進行數(shù)據(jù)的錄入、計算、統(tǒng)計的時候,能將數(shù)據(jù)精確到小數(shù)點后三位小數(shù)。系統(tǒng)接收到用戶的操作命令后〔如:計算處理、查詢等〕,能迅速的響應其操作請求,響應時間不超過1秒。在同一時間,系統(tǒng)還提供支持至少10個客戶端進行同一個操作請求的響應。系統(tǒng)可移植較強,在不同的平臺下運行,均不會影響系統(tǒng)的穩(wěn)定性。同時,支持在客戶端安裝不同操作系統(tǒng)、瀏覽器版本,均不會影響系統(tǒng)的運行。平安需求為保障系統(tǒng)數(shù)據(jù)的平安性,系統(tǒng)采用訪問控制策略,未授權者不能進入系統(tǒng)。同時,對不同級別的用戶授予不同的使用權限。在系統(tǒng)運行期間,如發(fā)生掉電尚未保存數(shù)據(jù),或由于操作不當?shù)仍驅е孪到y(tǒng)重啟等,為保證數(shù)據(jù)的易恢復性,系統(tǒng)提供每隔30秒自動保存數(shù)據(jù)的機制,讓用戶的數(shù)據(jù)在發(fā)生意外時能最大程度上得到恢復。同時,系統(tǒng)提供強大的容錯性能,當一臺效勞器發(fā)生故障時,系統(tǒng)能自動切換到另外一臺效勞器上,從而保障效勞器能長時間的提供系統(tǒng)的運行支持。在輸入數(shù)據(jù)時,如果用戶輸入的數(shù)據(jù)不符合系統(tǒng)的要求,那么系統(tǒng)自動提示錯誤信息,并要求用戶重新輸入,直到輸入完全正確時才允許進行下一步的操作。系統(tǒng)界面需求系統(tǒng)開發(fā)基于B/S的開發(fā)模式,界面直觀、簡潔,人機交互性強?;诒韱魏蛷棾鍪酱翱诘臄?shù)據(jù)錄入方式,菜單電擊的方式操作。用戶使用時,只要是按照格式和要求填入信息,系統(tǒng)在后臺響應用戶操作過程。讓用戶在最短時間里,不需要經(jīng)過專門培訓,就可以輕松上手使用。其他需求數(shù)據(jù)不管是在企業(yè)內部之間傳輸,還是公司與分公司之間進行遠程數(shù)據(jù)傳輸時,防止數(shù)據(jù)被不法分析任意的修改和破壞,對所有的敏感數(shù)據(jù)均進行基于SSL協(xié)議的加密操作,只有對信息解密的人員才能最終讀取數(shù)據(jù)信息。這樣,能最大程度的防止數(shù)據(jù)在傳輸過程的平安保密性。3.6系統(tǒng)業(yè)務數(shù)據(jù)流數(shù)據(jù)流分析數(shù)據(jù)流程圖是一種能全面描述信息系統(tǒng)邏輯模型的主要工具,也是系統(tǒng)分析人員與用戶進行交流的有效手段。本系統(tǒng)的數(shù)據(jù)流程圖把握住對系統(tǒng)總體目標與總體功能的要求,基于上述的業(yè)務流程圖,從科學性,合理性和可行性入手,采用自頂向下,逐層分解的方法建立本管理信息系統(tǒng)的邏輯模型,綜合地反映出信息在本系統(tǒng)中的流動,處理和存儲,具有抽象性和概括性.通過進行用戶調查收集用戶需求后,就要對用戶需求進行分析,并表達用戶的需求。采用結構化分析方法,流程圖,模塊圖如下:流程圖模塊圖用例圖用于對軟件系統(tǒng)的需求分析,即用于描述一個軟件系統(tǒng)需要完成什么樣的功能。用例圖中的信息包括系統(tǒng)中的執(zhí)行者和用例的描述,以及兩者之間的相互關系的描述。用RationalRose畫用例圖?!?〕確定執(zhí)行者執(zhí)行者是指用戶在系統(tǒng)中所扮演的角色,表示與所創(chuàng)立的系統(tǒng)進行交互的人或物。系統(tǒng)的執(zhí)行者:職工,管理員。a.職工:每個職工有個用戶名和密碼,能夠方便的按照某種關鍵字對自己的信息和工資進行查詢,也可以修改自己密碼;b.管理員:定義系統(tǒng)以及匯總工資數(shù)據(jù),完成工資設定、工資計算、工資發(fā)放及打印報表。管理員有唯一用戶名和密碼,完成對職工工資料的增加,刪除,修改和查詢?!?〕確定用例一個用例是用戶與計算機之間的一次典型交互作用。在UML中,用例被定義成系統(tǒng)執(zhí)行的一系列動作〔功能〕,即用例是對系統(tǒng)用戶需求而的描述,表達了系統(tǒng)的功能和所提供的效勞。UML中用例用橢圓圖形表示,用例之間的關系使用有擴展、使用、組合。系統(tǒng)的用例:添加用戶、修改用戶、刪除用戶、查詢信息、工資設置、工資報表打印。其中查詢的信息有可能是查詢員工的個人資料,也有可能查詢工資信息。工資設置有崗位工資設置,福利設置。1、職工檔案管理:實現(xiàn)對員工根本信息的管理操作,包括員工根本數(shù)據(jù)信息的添加、修改、刪除和查詢等功能。2、職工信息定義:實現(xiàn)對工資結構信息的添加、修改、刪除和查詢等功能。3、工資款項標準:設定工資款項的標準。4、工資數(shù)據(jù)匯總:實現(xiàn)對工資數(shù)據(jù)的匯總、查詢等功能。5、工資工程定義:實現(xiàn)對工資公式定義以及工資的屢次發(fā)放定義。6、個人所得稅:完成對個人所得稅稅率的定義以及對個人所得稅的申報。7、輸入工資:輸入職工工資信息。8、工資發(fā)放:發(fā)放工資,查看工資發(fā)放情況。11、工資計算:完成對計算科目的定義。用例圖分析用例,建立用例圖:活動圖:分析用例中的邏輯流程,描述用例的事件流,進而畫出各用例對應的活動圖用戶登錄活動圖:管理員工信息活動圖:類圖:類圖是面向對象的軟件開發(fā)中的一個核心概念。Rose中的類圖用于描述軟件系統(tǒng)中涉及到的類的相關信息,以及類與類之間的相互關系?!?〕類的識別類的識別通常由分析員在分析問題域的根底上來完成。常用的方法有:a.名詞識別法。b.系統(tǒng)識別法。c.從用例中識別類。d.利用分解與抽象技術?!?〕系統(tǒng)類圖狀態(tài)圖:狀態(tài)圖(StateDiagram)用來描述一個特定對象的所有可能狀態(tài)及其引起狀態(tài)轉移的事件。時序圖:時序圖用來描述對象之間動態(tài)的交互關系,著重表達對象間消息傳送消息的時間順序。下面分別給出各個用例的時序圖:用戶登錄時序圖:職工時序圖:管理員時序圖:組件圖:組件圖是用來反映代碼的物理結構。從組件圖中,您可以了解各軟件組件之間的編譯器和運行時依賴關系。使用組件圖可以將系統(tǒng)劃分為內聚組件并顯示代碼自身的結構。配置圖:該系統(tǒng)是一個基于局域網(wǎng)和數(shù)據(jù)庫的應用系統(tǒng)。配置圖如下列圖所示,有4個節(jié)點:“SalarySystemServer〞(工資管理系統(tǒng)效勞器)、“DBServer〞(數(shù)據(jù)庫效勞器)、“PC〞(工資管理系統(tǒng)客戶端PC)、“Printer〞(打印機)。第四章系統(tǒng)概要設計軟件需求分析階段完成后,進入軟件設計階段,解決“怎么做〞的問題。在這個階段主要任務:將分析階段獲得的需求說明轉換為計算機中可實現(xiàn)的系統(tǒng),完成系統(tǒng)的結構設計,包括數(shù)據(jù)結構設計和程序結構設計。根據(jù)實際情況,我們使用原型法〔RapidPrototyping〕即以少量代價快速地構造一個可執(zhí)行的軟件系統(tǒng)模型。使用戶和開發(fā)人員可以較快地確定需求,然后采用循環(huán)進化的開發(fā)方式,對系統(tǒng)模型作連續(xù)的精化,將系統(tǒng)需具備的性質逐漸增加上去,直到所有的性質全部滿足。此時模塊也開展成為最終產品了。通過對用戶需求的分析,我們可以分析出該工資管理系統(tǒng)大致可以分為五個模塊:登錄管理模塊、用戶管理模塊、職工管理模塊、工資管理模塊、查詢管理模塊?,F(xiàn)在對這五個模塊些說明:①登錄管理模塊:用戶切換,密碼修改,退出系統(tǒng)。②用戶管理模塊:新增用戶,更新用戶,刪除用戶。③職工管理模塊:新增職工,更新或刪除職工。④工資管理模塊:工資信息管理,個人所得稅的計算。⑤查詢管理模塊:工資信息查詢,普通工資信息查詢,高級工資查詢。設計根底是完成需求分析后提供的需求說明書,用概念數(shù)據(jù)模型表示數(shù)據(jù)及其相互間的關系,這種數(shù)據(jù)模型是與DBMS無關的、面向現(xiàn)實世界的、易如理解的數(shù)據(jù)模型,其獨立于計算機的數(shù)據(jù)模型,獨立于計算機的軟硬件系統(tǒng),與用戶進行交流十分方便。概念性數(shù)據(jù)模型關心的是如何完整、正確地反映客觀實際情況,不關心在數(shù)據(jù)庫中如何實現(xiàn)。這種數(shù)據(jù)模式能真實地反響用戶要求的實際情況,是一種容易被人們理解的直觀的數(shù)據(jù)庫結構模式。同時也是一種相對穩(wěn)定統(tǒng)一的數(shù)據(jù)模式,一般情況下很少變動。概念性數(shù)據(jù)在用戶和設計者之間建立了橋梁。是設計數(shù)據(jù)庫結構的根底。概念設計中自頂向下的實體分析方法,即常用的實體聯(lián)系模型〔簡稱E-R模型〕,對具體數(shù)據(jù)進行抽象加工,將實體集合抽象成實體類型。用實體間聯(lián)系反映現(xiàn)實世界事物間的內在聯(lián)系。E-R模型是建立概念性數(shù)據(jù)模型的有力工具。4.2系統(tǒng)數(shù)據(jù)庫邏輯結構設計邏輯結構設計的任務是將概念結構設計階段設計的E-R圖,轉化為選用所支持數(shù)據(jù)模型相符的邏輯結構,形成邏輯模型?;陉P系數(shù)據(jù)模型的邏輯結構的設計一般分為三個步驟:〔1〕概念模型轉換為關系數(shù)據(jù)模型?!?〕關系模型的優(yōu)化?!?〕設計用戶子模式書號。一般轉換原那么如下:〔1〕一個實體轉換為一個表〔Table〕,那么實體的屬性轉換為表的列〔Column〕,實體的碼轉換為表的主鍵〔PrimaryKey〕?!?〕實體間的聯(lián)系根據(jù)聯(lián)系的類型,轉換如下:①1:n的聯(lián)系:1:n的聯(lián)系是比擬普遍的聯(lián)系,其轉換比擬直觀。轉換規(guī)律是在n端的實體對應的表中增加屬性,該屬性是1端實體對應表的主碼。如:崗位和員工的關系是1:n的聯(lián)系。②m:n的聯(lián)系:通過引進一個新表來表達兩個實體間多對多的聯(lián)系,新表的主碼由聯(lián)系兩端實體的主碼組合而成,同時增加相關的聯(lián)系屬性。如:部門與員工的聯(lián)系是n:m聯(lián)系。4.4數(shù)據(jù)庫設計數(shù)據(jù)庫的物理結構設計是指為邏輯數(shù)據(jù)模型選取一個最適合應用環(huán)境的物理結構〔包括存儲結構和存取方法〕,它完全取決于給定的計算機系統(tǒng)。物理結構可分兩步進行。第一步是分析所得到的各種數(shù)據(jù)模型,依據(jù)在實際執(zhí)行時可能產生的數(shù)據(jù)容量以及各種數(shù)據(jù)模型之間的相互依賴程度等,確定數(shù)據(jù)庫的物理結構;第二步那么要根據(jù)某種方法對所設計的物理結構進行評價,評價重點是時間和空間的效率。數(shù)據(jù)庫實施是指建立數(shù)據(jù)庫,編制與調試應用程序,組織數(shù)據(jù)入庫,并進行試運行。根據(jù)人員規(guī)模,我們只建立起一個數(shù)據(jù)庫,在此數(shù)據(jù)庫根底上建立起如下表:·職工表·用戶表·工資表下面說明各表的字段名稱和數(shù)據(jù)類型:工資表:職工表:用戶表:第五章詳細設計詳細設計階段主要是將系統(tǒng)中的每個模塊完成的功能進行具體描述。登錄管理根據(jù)系統(tǒng)總體結構可以得出登錄管理模塊實現(xiàn)用戶登錄、密碼修改和退出系統(tǒng)三個功能。其中,退出系統(tǒng)實現(xiàn)流程很容易,只需要一行代碼即可;用戶登錄的實現(xiàn)流程是用戶在登錄窗口輸入用戶名稱和密碼,如果沒有用戶名和密碼可以進行注冊后再登錄,選擇了用戶角色后,單擊【登錄】按鈕進行提交,系統(tǒng)開始驗證用戶提交的登錄信息是否正確。如果正確,那么翻開工資管理系統(tǒng),并根據(jù)用戶角色賦于相應的操作權限;否那么給出錯誤信息。界面設計登錄界面如下:代碼局部核心代碼設計:voidCZHUCE::OnButton1(){ UpdateData(TRUE); if(m_username.IsEmpty()||m_password.IsEmpty()||m_password2.IsEmpty()) {AfxMessageBox("請將資料填寫完整!"); m_password2.Empty(); m_password.Empty(); UpdateData(FALSE); return; } OnInitADOConn(); if(m_password2==m_password) { CStringstr; str.Format("insertinto用戶表(用戶名,密碼)values('%s','%s')",m_username,m_password); _variant_tvar; intfieldrow; try{//捕捉表的主鍵存在重復值的異常 m_pConnection->Execute((_bstr_t)str,&var,adCmdText); fieldrow=(int)V_I2(&var); } catch(...) { AfxMessageBox("用戶名已存在,注冊失敗"); m_username.Empty(); m_password.Empty(); m_password2.Empty(); UpdateData(FALSE); return; } AfxMessageBox("注冊成功,請返回登錄!"); m_pConnection->Close(); Cloginclg; clg.DoModal(); } else{AfxMessageBox("兩次密碼輸入不一樣,注冊失敗!"); m_username.Empty(); m_password.Empty(); m_password2.Empty(); UpdateData(FALSE); return; }}voidCZHUCE::OnInitADOConn(){ try {//創(chuàng)立連接對象實例 m_pConnection.CreateInstance("ADODB.Connection"); //設置連接字符串 CstringstrConnect="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=salary.mdb;PersistSecurityInfo=False;"; //使用Open方法連接數(shù)據(jù)庫 m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown); } catch(_com_errore) { AfxMessageBox(e.Description()); }}_RecordsetPtr&CZHUCE::GetRecordSet(_bstr_tsqlstr){ { try{if(m_pConnection==NULL) {OnInitADOConn(); } m_pRecordset.CreateInstance(__uuidof(Recordset)); m_pRecordset->Open(sqlstr,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); } catch(_com_errore) {e.Description(); } returnm_pRecordset; }}修改密碼模塊:成功登錄主界面:用戶管理用戶管理模塊用于實現(xiàn)用戶的添加、刪除、更新功能。新增用戶模塊:更新用戶信息模塊:刪除用戶信息模塊:職工管理員工信息管理模塊用于實現(xiàn)員工信息的添加、刪除、修改。其中,員工信息添加的實現(xiàn)流程是用戶在添加員工窗口中輸入所要添加員的信息后,單擊【確認添加】按鈕進行提交,系統(tǒng)獲得用戶提交的員工信息,并嘗試寫入到工資管理系統(tǒng)的數(shù)據(jù)庫中,最后返回員工信息添加的執(zhí)行結果。新增職工:局部核心代碼代碼如下:voidCGXZHG::OnButton2(){//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); if(m_Bianhao.IsEmpty()||m_Name.IsEmpty()) {AfxMessageBox("notnull"); return;} OnInitADOConn(); CStringstr; str.Format("update職工表set性別='%s',年齡=%d,='%s',住址='%s',職位='%s',備注='%s'where職工編號='%s'",m_Sex,m_Age,m_Telphone,m_Address,m_Zhiwei,m_Beizhu,m_Bianhao); m_pConnection->Execute((_bstr_t)str,NULL,adCmdText); m_pConnection->Close(); m_zhglist.DeleteAllItems(); AddToGrid();ClearAll();}voidCGXZHG::OnButton1(){//TODO:AddyourcontrolnotificationhandlercodehereClearAll(); UpdateData(FALSE); }voidCGXZHG::OnButton3(){//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); if(m_tiaojian.IsEmpty()) {AfxMessageBox("請選擇刪除的職工!"); return;} OnInitADOConn(); CStringbstrSQL; bstrSQL.Format("deletefrom職工表where職工編號='%s'",m_tiaojian); CMAKESUREcmake; if(cmake.DoModal()!=IDOK) { return; } m_pConnection->Execute((_bstr_t)bstrSQL,NULL,adCmdText); m_pConnection->Close(); m_zhglist.DeleteAllItems(); AddToGrid(); ClearAll(); AfxMessageBox("刪除成功!"); UpdateData(FALSE);}voidCGXZHG::OnButton4(){ UpdateData(TRUE); m_type.GetWindowText(m_Type); if(m_Type.IsEmpty()) {AfxMessageBox("請選擇查詢的方式!"); return;} if(m_tiaojian.IsEmpty()) {AfxMessageBox("請輸入查詢的職工編號!"); return;} OnInitADOConn(); CStringsql; sql+="select*from職工表where"; sql+=m_Type+"="+"'"+m_tiaojian+"'"; m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText); m_pConnection->Close(); m_zhglist.DeleteAllItems(); UpdateGrid(); ClearAll(); UpdateData(FALSE);}:該模塊主要是錄入工資,重填工資,更新工資,新增工資和刪除工資的功能。局部核心代碼如下:voidCTXGZ::OnButton2(){//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); m_yuefen.SetCurSel(0);// AfxMessageBox("該編號的職工不存在,請先到職工管理添加職工信息!"); if(m_Bianhao.IsEmpty()||m_Jibengz==NULL||m_Yuefen.IsEmpty()) {AfxMessageBox("編號不允許空值,請重新填寫!"); ClearALL(); return;} OnInitADOConn(); floatf1=m_Jibengz+m_Jintie+m_Gangtie+m_Butie+m_Fangtie+m_Jiaotongbt; CStringcstr1; cstr1.Format("%.2f",f1); m_yfsh.SetWindowText(cstr1); floatf2=m_Fangzu+m_Chuxu+m_Huifei; CStringcstr2; cstr2.Format("%.2f",f2); m_yksh.SetWindowText(cstr2); floatf4; f4=calculator(f1-f2); floatf3=f1-f2-f4; CStringcstr3; cstr3.Format("%.2f",f3); m_shfsh.SetWindowText(cstr3); CStringcstr4; cstr4.Format("%.2f",f4); m_grsdsh.SetWindowText(cstr4); CStringstr; str.Format("insertinto工資表values('%s','%s',%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f)",m_Bianhao,m_Yuefen,m_Jibengz,m_Jintie,m_Gangtie,m_Butie,m_Fangtie,m_Jiaotongbt,f1,m_Fangzu,m_Chuxu,m_Huifei,f4,f2,f3); _variant_tvar; intfieldrow; try{ //捕捉表的主鍵存在重復值的異常 m_pConnection->Execute((_bstr_t)str,&var,adCmdText); fieldrow=(int)V_I2(&var); } catch(...) { AfxMessageBox("該編號記錄已存在,新增失敗"); ClearALL(); return; } m_pConnection->Close(); m_gzlist.DeleteAllItems(); AddToGrid(); }voidCTXGZ::OnButton3(){ UpdateData(TRUE); if(m_Bianhao.IsEmpty()||m_Yuefen.IsEmpty()) {AfxMessageBox("請?zhí)顚懸碌穆毠さ男畔?"); ClearALL(); return;} OnInitADOConn(); CStringstr; str.Format("update工資表set根本工資=%.2f,月份='%s',津貼=%.2f,崗貼=%.2f,補貼=%.2f,房貼=%.2f,交通補貼=%.2f,房租=%.2f,儲蓄=%.2f,會費=%.2fwhere職工編號='%s'",m_Jibengz,m_Yuefen,m_Jintie,m_Gangtie,m_Butie,m_Fangtie,m_Jiaotongbt,m_Fangzu,m_Chuxu,m_Huifei,m_Bianhao); m_pConnection->Execute((_bstr_t)str,NULL,adCmdText); m_pConnection->Close(); m_gzlist.DeleteAllItems(); AddToGrid();ClearALL(); m_yuefen.SetCurSel(0);}voidCTXGZ::ClearALL(){ m_Jibengz=NULL; m_Jintie=NULL; m_Shfsh.Empty(); m_Yfsh.Empty(); m_Yksh.Empty(); m_Yuefen.Empty(); m_Chaxun.Empty(); m_Jiaotongbt=NULL; m_Huifei=NULL; m_Grsdsh.Empty(); m_Fangzu=NULL; m_Fangtie=NULL; m_Chuxu=NULL; m_Bianhao=""; m_Gangtie=NULL; UpdateData(FALSE);}voidCTXGZ::OnClickList1(NMHDR*pNMHDR,LRESULT*pResult){//TODO:Addyourcontrolnotificationhandlercodehere intposition=m_gzlist.GetSelectionMark(); m_Bianhao=m_gzlist.GetItemText(position,0); m_Chaxun=m_gzlist.GetItemText(position,0); m_Yuefen=m_gzlist.GetItemText(position,1); m_Jibengz=atof(m_gzlist.GetItemText(position,2)); m_Jintie=atof(m_gzlist.GetItemText(position,3)); m_Gangtie=atof(m_gzlist.GetItemText(position,4)); m_Butie=atof(m_gzlist.GetItemText(position,5)); m_Fangtie=atof(m_gzlist.GetItemText(position,6)); m_Jiaotongbt=atof(m_gzlist.GetItemText(position,7)); m_Yfsh=m_gzlist.GetItemText(position,8); m_Fangzu=atof(m_gzlist.GetItemText(position,9)); m_Chuxu=atof(m_gzlist.GetItemText(position,10)); m_Huifei=atof(m_gzlist.GetItemText(position,11)); m_Grsdsh=m_gzlist.GetItemText(position,12); m_Yksh=m_gzlist.GetItemText(position,13); m_Shfsh=m_gzlist.GetItemText(position,14); UpdateData(FALSE); *pResult=0;}voidCTXGZ::OnButton4(){ UpdateData(TRUE); if(m_Chaxun.IsEmpty()) {AfxMessageBox("請輸入刪除的職工編號!"); return;} OnInitADOConn(); CStringsql; sql.Format("deletefrom工資表where職工編號='%s'",m_Chaxun); CMAKESUREcmake; if(cmake.DoModal()!=IDOK) { return; } m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText); m_pConnection->Close(); m_gzlist.DeleteAllItems(); AddToGrid(); ClearALL(); AfxMessageBox("刪除成功!"); m_yuefen.SetCurSel(0); UpdateData(FALSE);}voidCTXGZ::OnButton5(){ UpdateData(TRUE); if(m_Chaxun.IsEmpty()) {AfxMessageBox("請輸入查詢的職工編號!"); return;} OnInitADOConn(); CStringsql; sql.Format("select*from工資表where職工編號='%s'",m_Chaxun); m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText); m_pConnection->Close(); m_gzlist.DeleteAllItems(); ClearALL(); m_Chaxun=m_Chaxun; m_yuefen.SetCurSel(0); UpdateData(FALSE);}floatCTXGZ::calculator(floata){floatb=a-2000; if(b<0){b=0;} if(0<b&&b<500){returnb=b*5/100;} if(b>=500&&b<2000){returnb=b*10/100-25;} if(b>=2000&&b<5000){returnb=b*15/100-125;} if(b>=5000&&b<20000){returnb=b*20/100-375;} if(b>=20000&&b<40000){returnb=b*25/100-1375;} if(b>=40000&&b<60000){returnb=b*30/100-3375;} if(b>=60000&&b<80000){returnb=b*35/100-6375;} if(b>=80000&&b<100000){returnb=b*40/100-10375;} if(b>=100000){returnb=b*45/100-15375;}}該模塊實現(xiàn)功能是職工查詢工資的詳細信息,查詢個人詳細信息的功能。職工信息查詢:工資信息查詢:局部核心代碼如下:voidCGXGZ::OnButton1(){ UpdateData(TRUE); if(m_Chaxun.IsEmpty()) {AfxMessageBox("請輸入查詢的職工編號!"); return;} OnInitADOConn(); CStringsql; sql.Format("select*from工資表where職工編號='%s'",m_Chaxun); m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText); m_pConnection->Close(); m_gzlist.DeleteAllItems(); UpdateGrid(); m_Chaxun.Empty(); UpdateData(FALSE);}voidCGXGZ::OnInitADOConn(){try {//創(chuàng)立連接對象實例 m_pConnection.CreateInstance("ADODB.Connection"); //設置連接字符串 CStringstrConnect="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=salary.mdb;PersistSecurityInfo=False;"; //使用Open方法連接數(shù)據(jù)庫 m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown); } catch(_com_errore) { AfxMessageBox(e.Description()); }}voidCGXGZ::UpdateGrid(){//連接數(shù)據(jù)庫 OnInitADOConn(); //設置查詢字符串 CStringbstrSQL; bstrSQL.Format("select*from工資表where職工編號='%s'orderby職工編號desc",m_Chaxun); //創(chuàng)立記錄集指針對象實例 m_pRecordset.CreateInstance(__uuidof(Recordset)); //翻開記錄集 m_pRecordset->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText); while(!m_pRecordset->adoEOF) {m_gzlist.InsertItem(0,"");m_gzlist.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("職工編號"));m_gzlist.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("月份"));m_gzlist.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("根本工資"));m_gzlist.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("津貼"));m_gzlist.SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect("崗貼"));m_gzlist.SetItemText(0,5,(char*)(_bstr_t)m_pRecordset->GetCollect("補貼"));m_gzlist.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect("房貼"));m_gzlist.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect("交通補貼"));m_gzlist.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect("應發(fā)數(shù)"));m_gzlist.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect("房租"));m_gzlist.SetItemText(0,10,(char*)(_bstr_t)m_pRecordset->GetCollect("儲蓄"));m_gzlist.SetItemText(0,11,(char*)(_bstr_t)m_pRecordset->GetCollect("會費"));m_gzlist.SetItemText(0,12,(char*)(_bstr_t)m_pRecordset->GetCollect("個人所得稅"));m_gzlist.SetItemText(0,13,(char*)(_bstr_t)m_pRecordset->GetCollect("應扣數(shù)"));m_gzlist.SetItemText(0,14,(char*)(_bstr_t)m_pRecordset->GetCollect("實發(fā)數(shù)")); //將記錄集指針移動到下一條記錄 m_pRecordset->MoveNext(); } //AfxMessageBox("123"); //斷開數(shù)據(jù)庫連接 ExitConnect();}voidCGXGZ::ExitConnect(){if(m_pRecordset!=NULL) m_pRecordset->Close(); m_pConnection->Close();}第六章系統(tǒng)測試6.1測試方法〔1〕測試人員:測試隊伍由兩位成員組成。軟件的設計者在測試整個過程中負責整體測試方案的制定和測試進度的掌握以及白盒測試的測試者。第二位成員由未參加軟件制作者擔任,主要責任是進行軟件的黑盒測試以及軟件環(huán)境,硬件要求和極限測試工作?!?〕機器測試:通過在計算機上直接運行被測程序,來發(fā)現(xiàn)程序中的錯誤。機器測試包括黑盒測試盒

溫馨提示

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

評論

0/150

提交評論