版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢 業(yè) 設 計</b></p><p> 設 計 題 目 職工工資核算管理信息系統(tǒng) </p><p><b> 摘 要</b></p><p> 該課題采用自上而下的結構化開發(fā)方法與面向對象方法相結合的方法,研究和開發(fā)萊鋼運輸部職工工資核算管理信息系統(tǒng)。在理解軟件工程的思想和數(shù)據(jù)
2、庫理論的基礎上,通過對業(yè)務流程及原有舊系統(tǒng)分析和重構,重新設計系統(tǒng)體系結構。采用Microsoft SQL Server2000設計并建立數(shù)據(jù)庫,采用面向對像編程工具Microsoft Visual Studio C# .Net實現(xiàn),其人機界面友好,操作簡單,數(shù)據(jù)驅動相對容易,并易于實現(xiàn)。</p><p> 關鍵詞:管理信息系統(tǒng)、工資管理、結構化方法、面向對象方法、Microsoft SQL Serv
3、er2000、Microsoft Visual Studio C# .Net</p><p><b> ABSTRACT</b></p><p> This topic uses the method which the top-down structurization method of exploitation and the object-orie
4、nted method unify, studies and develops the staff wages calculation management information system. In understanding software engineering thought and in database theory foundation, through to service flow and original old
5、 system analysis and restructuring, redesign system architecture. Uses Microsoft SQL Server2000 to design and to establish the database, uses object-oriented programming tool M</p><p> Keywords:Management I
6、nformation System ,Salary Management, Structure-rization method,Object-oriented method,Microsoft SQL Server2000,Microsoft Visual Studio C# .Net</p><p><b> 目 錄</b></p><p><
7、;b> 1前言</b></p><p> 在現(xiàn)代化企業(yè)中,信息管理工作將發(fā)揮越來越重要的作用。企業(yè)信息管理工作已經(jīng)滲透到企業(yè)日常工作的許多方面,無論是其自身還是所發(fā)揮的作用,都為企業(yè)的創(chuàng)新、發(fā)展以及經(jīng)濟效益,做出了顯著的貢獻。</p><p> 運輸部自2000年企業(yè)局域網(wǎng)投入運用以來,先后開發(fā)使用了大大小小10幾個管理新系統(tǒng)。近兩年與軟件公司合作,開發(fā)了《智能化設
8、備管理信息系統(tǒng)》和《智能化鐵路運輸綜合管理信息系統(tǒng)》?!吨悄芑O備管理信息系統(tǒng)》涵蓋設備一生管理,并將運輸部自己的管理理念溶于其中,在設備管理方面起到了很好的效果;《智能化鐵路運輸綜合管理信息系統(tǒng)》主要將運輸部的主業(yè)——鐵路運輸?shù)母鱾€方面聯(lián)系起來,利用鐵路微機聯(lián)鎖、車號自動識別等技術,實現(xiàn)萊鋼廠內車輛跟蹤、統(tǒng)計、費用核算等功能,提高了運輸效率和管理效能。</p><p> 企業(yè)工資管理系統(tǒng)是一個企業(yè)單位不可缺少
9、的部分,它的內容對于企業(yè)決策者和管理者來說都是至關重要的,所以企業(yè)工資管理系統(tǒng)應該能夠為用戶提供充足的信息和快捷的查詢手段。但是,運輸部仍然沿用95年編制的工資核算系統(tǒng),系統(tǒng)采用的技術老舊,不能適應現(xiàn)有條件下的管理要求,因此決定設計一個新的職工工資管理信息系統(tǒng),達到檢索迅速、查找方便、可靠性高、存儲量大、保密性好、適應網(wǎng)絡化的要求,提升工資管理手段。</p><p><b> 2管理信息系統(tǒng)概述<
10、;/b></p><p> 管理信息系統(tǒng)(簡稱MIS)是介于信息論,經(jīng)濟管理理論,統(tǒng)計學與運籌學及計算機科學之間的一門邊緣性,綜合性,系統(tǒng)性的交叉科學,它是隨著管理科學,信息技術,計算機技術等的發(fā)展而產(chǎn)生和發(fā)展起來的。</p><p> 2.1 MIS系統(tǒng)開發(fā)方法的選用</p><p> 管理信息系統(tǒng)的開發(fā)方法有生命周期法、原型法和面向對象的開發(fā)方法等:
11、</p><p> 生命周期法(Life Cycle Method)是20世紀60年代發(fā)展起來的一種應用廣泛且比較成熟的管理系統(tǒng)開發(fā)方法,它的基本思想是將系統(tǒng)的開發(fā)工作從開始到結束劃分為若干個階段,每個階段都有明確的任務,而系統(tǒng)開發(fā)出來后,并不意味著生命周期的結束,而意味著根據(jù)組織的需要對系統(tǒng)的修改和重建的開始。</p><p> 原型法(Prototyping Method)是20世
12、紀80年代發(fā)展起來的,旨在改變生命周期法的缺點的一種系統(tǒng)開發(fā)方法,該法的開發(fā)思路是首先根據(jù)用戶的要求,由用戶和開發(fā)者共同確定系統(tǒng)的基本要求和主要功能,利用系統(tǒng)快速生成工具,建立一個系統(tǒng)模型,再在此基礎上與用戶交流,將模型不斷補充、修改、完善,如此反復,最終直至用戶和開發(fā)者都比較滿意為止,從而形成一個相對穩(wěn)定、較為理想的管理信息系統(tǒng)。</p><p> 面向對象(Object Oriented)的開發(fā)方法于20世
13、紀80年代開始興起的,是一種基于問題對象的自底向上的一種系統(tǒng)開發(fā)方法,這種方法的特點是以對象為基礎,對象是分析問題和解決問題的核心。</p><p> 基于以上三種方法的特點和各自的優(yōu)缺點,本職工工資管理系統(tǒng)利用軟件工程化思想和方法,總體上是采用結構化生命法進行系統(tǒng)分析和設計的,而系統(tǒng)實現(xiàn)等步驟則采用了原型法和面向對象的方法。</p><p> 2.2 MIS系統(tǒng)開發(fā)過程</p&
14、gt;<p> 一個MIS系統(tǒng)的開發(fā)過程一般包括如下幾個步驟:</p><p> ?。?)需求分析:需求分析主要是了解用戶的需求。需求了解得越詳細,程序的后期開發(fā)與維護費用就會越少。一般的開發(fā)團隊中,需求分析都是由資歷較深的系統(tǒng)分析員或項目經(jīng)理擔當,可見它的重要性。需求分析制訂好后,需要反復修改。將最后的結果交給用戶審定,確認無誤后,由系統(tǒng)分析員完成需求分析文檔,再開始下一步工作。</p&g
15、t;<p> ?。?)概要設計:概要設計緊跟在需求分析之后。用戶需求明確后,將得到的數(shù)據(jù)分析后,開始構建數(shù)據(jù)庫的邏輯結構。此時,數(shù)據(jù)庫中的表格還未成形,通過各種分析工具(如PowerDesigner等)畫出數(shù)據(jù)流圖,最后就可抽象出數(shù)據(jù)庫的具體表結構。這時由系統(tǒng)分析人員反復審核。確認所有的需求都考慮在內,沒有遺漏后,就可以開始制訂概要設計文檔。概要設計文檔形成后,整個程序的邏輯框架也就形成了。</p><
16、p> (3)詳細設計:概要設計完成后,根據(jù)設計中制訂的功能模塊。就可以進行詳細分析設計了。詳細設計就是將各個功能模塊用處理代碼全部用語言表達出。所以詳細設計是整個系統(tǒng)中最繁瑣的環(huán)節(jié)。詳細設計完成后,整個程序就確定了,再由編程人員根據(jù)詳細設計文檔將代碼完成。整個開發(fā)工作就宣告結束。</p><p> (4)程序編碼:程序編碼相對于其他環(huán)節(jié)來說比較簡單,程序員只需要根據(jù)詳細分析文檔寫程序編碼,保證代碼沒有錯
17、誤即可。程序編碼需要注意的是整個程序書寫中命名的規(guī)范化與編程風格的規(guī)范化,這需要較長時間的培養(yǎng)來形成。需要在不斷的實踐中形成自己獨特的風格??偟膩碚f,不要過分地追求復雜的算法,因為那可能會導致后期維護人員無法讀懂你的代碼而造成維護的困難。</p><p> (5)測試:程序編碼完成后,就需要測試。測試有幾種類型,主要是測試代碼有無邏輯錯誤以及在加載數(shù)據(jù)環(huán)境下程序的穩(wěn)定性問題。測試工作中發(fā)現(xiàn)的錯誤應及時改正,然后
18、將它記錄到測試文檔中。</p><p> ?。?)實施:導入用戶數(shù)據(jù),進行系統(tǒng)切換,系統(tǒng)投入正常使用。</p><p> 以上是一個完整的MIS系統(tǒng)開發(fā)過程,其實不僅MIS系統(tǒng),其他類型的程序開發(fā)也基本相同。</p><p><b> 3可行性分析</b></p><p> 3.1系統(tǒng)現(xiàn)狀及缺陷分析</p&g
19、t;<p> 本系統(tǒng)投入運用前,運輸部仍然沿用95年編制的工資核算系統(tǒng),該系統(tǒng)為采用FoxBase2.0編寫。其工作流程為:</p><p> 1.每月各單位會計輪流輸入工資數(shù)據(jù)。</p><p> 2.由人力資源科人員進行工資核算程序,計算當月工資明細及其匯總表數(shù)據(jù),并逐項打印。</p><p> 3.由財務科人員進行三項費用提取(福利費、工
20、會費、教育經(jīng)費),形成三項費用表。</p><p> 4.月末按發(fā)放銀行進行數(shù)據(jù)拷貝,為各發(fā)放銀行提供工資數(shù)據(jù)。</p><p> 現(xiàn)將該系統(tǒng)缺陷分析如下:</p><p> 1.單機應用程序:這造成數(shù)據(jù)錄入只能單人輸入,使工作周期較長,影響工作效率;</p><p> 2.可移植性差:該程序使用FoxBase2.0編寫,運行于Dos
21、系統(tǒng),其打印模塊采用直接調用Dos下打印指令執(zhí)行,因此不適用于現(xiàn)有的Windows系統(tǒng),無法進行移植;</p><p> 3.不是網(wǎng)絡應用,無法支持現(xiàn)有的網(wǎng)絡互連的便利條件。</p><p> 因此,該系統(tǒng)存在工作效率低、程序老舊、可移植性差、無網(wǎng)絡功能等缺點,不能適應現(xiàn)有環(huán)境下的工作需要。</p><p> 3.2新系統(tǒng)目標及功能要求</p>
22、<p> 根據(jù)以上分析,需設計新系統(tǒng)以適應當前需要,新系統(tǒng)應支持網(wǎng)絡,易于移植和配置,其具體功能要求如下:</p><p> 1、能夠實現(xiàn)工資信息分布式錄入、修改、打??;</p><p> 2、能夠實現(xiàn)月度工資統(tǒng)計匯總并形成報表打印;</p><p> 3、充分利用網(wǎng)絡資源,提供多用戶服務,有用戶權限設置,達到職工工資保密要求;</p>
23、<p> 4、提供較為豐富的工資查詢功能,便于查詢統(tǒng)計;</p><p> 5、用戶界面友好,操作方便。</p><p><b> 3.3系統(tǒng)業(yè)務流程</b></p><p> 根據(jù)對工資核算日常工作的調查,現(xiàn)繪制工資核算業(yè)務流程圖如下:</p><p><b> 3.4數(shù)據(jù)流程圖<
24、;/b></p><p> 根據(jù)已繪制的業(yè)務流程圖,繪制新系統(tǒng)數(shù)據(jù)流圖如下:</p><p><b> 3.5數(shù)據(jù)字典</b></p><p> 表3.1 數(shù)據(jù)流定義表</p><p> 表3.2 數(shù)據(jù)元素定義表</p><p> 表3.3 文件定義表</p>
25、<p> 表3.4 外部項定義表</p><p> 表3.5 加工定義表</p><p><b> 4系統(tǒng)總體設計</b></p><p> 4.1系統(tǒng)體系結構設計</p><p> 為有效地保證和管理數(shù)據(jù)的安全性、訪問權限、完整性,采用C/S(Client/Server,客戶機/服務器)架構和支
26、持C/S架構的數(shù)據(jù)平臺,是必然選擇。</p><p> 由于工資信息的保密性,因此采用C/S模式又稱C/S結構。C/S模式就是基于企業(yè)內部網(wǎng)絡的應用系統(tǒng),C/S模式的應用系統(tǒng)最大的好處是不依賴企業(yè)外網(wǎng)環(huán)境,即無論企業(yè)是否能夠上網(wǎng),都不影響應用。</p><p> C/S體系結構的數(shù)據(jù)庫應用,由兩部分組成,即客戶應用程序和數(shù)據(jù)庫服務器程序。二者可分別稱為前臺程序與后臺程序。運行數(shù)據(jù)庫服務
27、器程序的機器,稱為應用服務器,一旦服務器程序被啟動,就隨時等待響應客戶程序發(fā)來的請求;客戶程序運行在用戶自己的電腦上,對應于服務器電腦,可稱為客戶電腦。當需要對數(shù)據(jù)庫中的數(shù)據(jù)進行任何操作時,客戶程序就自動地尋找服務器程序,并向其發(fā)出請求,服務器程序根據(jù)預定的規(guī)則作出應答,送回結果。</p><p> 該系統(tǒng)中服務器端實現(xiàn)數(shù)據(jù)存儲和后臺數(shù)據(jù)計算功能,客戶端實現(xiàn)用戶數(shù)據(jù)錄入、報表打印等功能。</p>
28、<p><b> 4.2系統(tǒng)功能劃分</b></p><p> 系統(tǒng)劃分為工資維護、人員變動、歸集匯總、財務報表、系統(tǒng)維護等五大功能模塊。各模塊子功能模塊劃分如下:</p><p><b> ?、殴べY維護</b></p><p> 固定項目:維護職工個人工資的固定項目,這些項目很少變化。</p>
29、<p> 變動項目:維護職工個人工資的固定項目,這些項目每個月都變化。</p><p> 工資明細打?。喊丛聦С鲋付▎挝还べY明細。</p><p> 獎金輸入:供人力資源科人員導入月度獎金數(shù)據(jù),并可維護修改。</p><p><b> ⑵人員變動</b></p><p> 內部在職調動:內部子單位
30、之間的人員調動。</p><p> 外單位職工調入:外單位職工調入,即增加職工信息。</p><p> 職工調出或刪除:本單位職工調出或刪除。</p><p> 在職離退休退養(yǎng):在制職工離、退休、退養(yǎng)維護。</p><p> 加入內外撫恤庫:職工信息轉移至撫恤庫。</p><p><b> ⑶歸集匯
31、總</b></p><p> 除車務二段外,其他在職職工工資為工商行發(fā)放,因此按發(fā)放銀行分為站段、工行和車務二段兩個匯總表。</p><p> 總匯:按照崗位分類匯總。</p><p> 各單位匯總:按月匯總指定單位工資總額。</p><p><b> ?、蓉攧請蟊?lt;/b></p><
32、;p> 提取三費:財務科人員每月按照應付工資數(shù)計算匯總職工三項費用表(福利、教育、工會)。</p><p> 銀行拷盤:按照發(fā)放銀行導出月度工資數(shù)據(jù)。</p><p><b> ?、上到y(tǒng)維護</b></p><p> 單位信息維護:維護單位編碼、單位名稱等單位信息。</p><p> 權限管理:提供系統(tǒng)用戶
33、個人信息維護。</p><p> 崗位設置:工資信息的崗位維護。</p><p><b> 4.3數(shù)據(jù)庫設計</b></p><p><b> 1.概念設計</b></p><p> 概要設計基礎是完成需求分析后提供的需求說明書,用概念數(shù)據(jù)模型表示數(shù)據(jù)及其相互間的關系,這種數(shù)據(jù)模型是與DBM
34、S無關的、面向現(xiàn)實世界的、易如理解的數(shù)據(jù)模型,其獨立于計算機的數(shù)據(jù)模型,獨立于計算機的軟硬件系統(tǒng),與用戶進行交流十分方便。</p><p> 概念性數(shù)據(jù)模型關心的是如何完整、正確地反映客觀實際情況,不關心在數(shù)據(jù)庫中如何實現(xiàn)。這種數(shù)據(jù)模式能真實地反應用戶要求的實際情況,是一種容易被人們理解的直觀的數(shù)據(jù)庫結構模式。同時也是一種相對穩(wěn)定統(tǒng)一的數(shù)據(jù)模式,一般情況下很少變動。概念性數(shù)據(jù)在用戶和設計者之間建立了橋梁。是設計
35、數(shù)據(jù)庫結構的基礎。</p><p> 概念設計中自頂向下的實體分析方法,即常用的實體聯(lián)系模型(簡稱E-R模型),對具體數(shù)據(jù)進行抽象加工,將實體集合抽象成實體類型。用實體間聯(lián)系反映現(xiàn)實世界事物間的內在聯(lián)系。E-R模型是建立概念性數(shù)據(jù)模型的有力工具。</p><p> 通過對職工工資管理內容和過程的分析,本系統(tǒng)應設計的主要實體和屬性如下:</p><p> 各實體
36、間的聯(lián)系如下圖:</p><p><b> 2.數(shù)據(jù)庫結構設計</b></p><p><b> ⑴月度工資明細</b></p><p> 表4.1 月度工資明細</p><p><b> ?、坡毠せ拘畔?lt;/b></p><p> 表4.2
37、 職工基本信息</p><p><b> ?、菃挝恍畔?lt;/b></p><p> 表4.3 單位信息</p><p><b> ?、冉巧畔?lt;/b></p><p> 表4.4 角色信息</p><p><b> ?、捎脩粜畔?lt;/b></p
38、><p> 表4.5 用戶信息</p><p><b> 5詳細設計系統(tǒng)</b></p><p> 5.1編程環(huán)境和數(shù)據(jù)庫選擇</p><p><b> 1、數(shù)據(jù)庫選擇</b></p><p> 本系統(tǒng)選用Microsoft SQL Server2000作為后臺數(shù)據(jù)庫
39、。</p><p> SQL Server 2000 是Microsoft 公司推出的SQL Server 數(shù)據(jù)庫管理系統(tǒng),該版本繼承了SQL Server 7.0 版本的優(yōu)點同時又比它增加了許多更先進的功能具有使用方便可伸縮性好與相關軟件集成程度高等優(yōu)點可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2000 的大型多處理器的服務器等多種平臺使用。&
40、lt;/p><p> SQL Server 2000的特性很多,以下只列舉幾條加以說明選用該軟件的必要性:</p><p> ?、?XML Extensible Markup Language 擴展標示語言支持關系數(shù)據(jù)庫引擎可以返回XML 文檔數(shù)據(jù)XML 數(shù)據(jù)可以用于插入刪除和更新數(shù)據(jù)XML 是擴展標示語言Extensible Markup Language 的英文縮寫XML 語言可用于描
41、述一個數(shù)據(jù)集的內容以及數(shù)據(jù)如何在Web 頁中顯示或輸出到某個設備XML 和HTML Hypertext Markup Language 超文本鏈接標示語言都源自SGML Standard General Markup Language 標準通用標示語言SGML 是一個非常復雜龐大的語言在網(wǎng)絡上發(fā)布數(shù)據(jù)時很難完全使用它HTML 比SGML 簡單得多而且更專業(yè)化但HTML 所作用的數(shù)據(jù)有一定的數(shù)量限制XML 介于HTML 和SGML 之間它
42、比SGML 簡單但比HTML 的功能強大得多因此XML 成為Web 網(wǎng)絡或公司內部網(wǎng)絡進行電子數(shù)據(jù)交換日益重要的語言。</p><p> SQL Server 2000 對XML 的支持表現(xiàn)在以下幾個方面:</p><p> ※可以通過URL Uniform Resource Locator 統(tǒng)一資源定位訪問SQL Server </p><p> ※支持XM
43、L-Data 模式</p><p> ※可檢索編寫XML 數(shù)據(jù)</p><p> ※SQL Server 2000 OLE DB 增加了對XML 文檔的支持</p><p> ?、茢?shù)據(jù)行中的Text 類型數(shù)據(jù)</p><p> SQL Server 2000 中可以將TEXT 和IMAGE 類型的數(shù)據(jù)直接存放到表的數(shù)據(jù)行中而不是存放到不
44、同的數(shù)據(jù)頁中這就減少了用于存儲TEXT 和IMAGE 類型的空間并相應減少了磁盤處理這類數(shù)據(jù)的I/O 數(shù)量。</p><p> ⑶分布式查詢Distributed Query 增強 SQL Server 2000 引入了一個名為OPENROWSET 的函數(shù)它可以指定在分布式查詢中的一個特定的連接信息分布式查詢優(yōu)化器的功能有了進一步的提高授予了OLE DB 數(shù)據(jù)源更多的SQL
45、 操作權。</p><p> ?、燃壜?lián)參考完整性約束Cascading Referential Integrity Constraints </p><p> 級聯(lián)參考完整性約束可以控制在刪除或更新有外鍵約束的數(shù)據(jù)時所采取的操作這種控制是通過在CREATE TABLE 或ALTER TABLE 命令中的REFERENCES 子句中加入ON DELETE 或ON UPDATE 子句來實現(xiàn)的
46、。</p><p> ⑸Kerberos 和安全授權Security Delegation </p><p> SQL Server 2000 使用Kerberos 來支持客戶機和服務器之間相互的身份驗證使用Kerberos 和授權來支持復合認證以及SQL Server 注冊。</p><p><b> 2、編程環(huán)境選擇</b></
47、p><p> 本系統(tǒng)選用Microsoft C#.NET作為編程環(huán)境。</p><p> C# (C sharp) 是微軟對這一問題的解決方案。C#是一種最新的、面向對象的編程語言。它使得程序員可以快速地編寫各種基于Microsoft .NET平臺的應用程序,Microsoft .NET提供了一系列的工具和服務來最大程度地開發(fā)利用計算與通訊領域。</p><p>
48、 正是由于C#面向對象的卓越設計,使它成為構建各類組件的理想之選--無論是高級的商業(yè)對象還是系統(tǒng)級的應用程序。使用簡單的C#語言結構,這些組件可以方便的轉化為XML 網(wǎng)絡服務,從而使它們可以由任何語言在任何操作系統(tǒng)上通過Internet進行調用。</p><p> 最重要的是,C#使得C++程序員可以高效的開發(fā)程序,而絕不損失C/C++原有的強大的功能。因為這種繼承關系,C#與C/C++具有極大的相似性,熟悉
49、類似語言的開發(fā)者可以很快的轉向C#。</p><p> C#.Net具有如下特點:</p><p><b> ?、判逝c安全性</b></p><p> 新興的網(wǎng)絡經(jīng)濟迫使商務企業(yè)必須更加迅速的應對競爭的威脅。開發(fā)者必須不斷縮短開發(fā)周期,不斷推出應用程序的新版本,而不僅僅是開發(fā)一個"標志性"的版本。</p>
50、<p> C#在設計時就考慮了這些問題。它使開發(fā)者用更少的代碼做更多的事,同時也不易出錯。</p><p> ?、浦С脂F(xiàn)有的網(wǎng)絡編程新標準</p><p> 新的應用程序開發(fā)模型意味著越來越多地解決方案依賴于新出現(xiàn)的網(wǎng)絡標準,例如HTML,XML,SOAP等。現(xiàn)存的開發(fā)工具往往都是早于Internet出現(xiàn)的,或者是在我們所熟知的網(wǎng)絡還處于孕育期時出現(xiàn)的。所以,它們一般無法很
51、好地支持最新的網(wǎng)絡技術。</p><p> C#程序員可以在Microsoft .NET平臺上事半功倍的構建應用程序的擴展框架。C#包含了內置的特性,使任何組件可以輕松轉化為XML網(wǎng)絡服務,通過Internet被任何操作系統(tǒng)上運行的任何程序調用。</p><p> 更突出的是,XML網(wǎng)絡服務框架可以使現(xiàn)有的XML網(wǎng)絡服務對程序員來說就和C#對象一樣。這樣,程序員就可以方便地使用他們已有
52、的面向對象的編程技巧來開發(fā)利用現(xiàn)有的XML網(wǎng)絡服務。</p><p> 還有一些精細的特性,使得C#成為一流的網(wǎng)絡編程工具。例如,XML正逐漸成為在網(wǎng)絡上傳輸結構化數(shù)據(jù)的標準。這種數(shù)據(jù)集合往往非常小。為提高性能,C#允許把XML數(shù)據(jù)直接映射到struct數(shù)據(jù)類型,而不是class。這樣對處理少量的數(shù)據(jù)非常有效。</p><p><b> ?、窍罅砍绦蝈e誤</b>
53、</p><p> 即使是專家級的C++程序員也常會犯一些最簡單的小錯誤--比如忘了初始化變量,但往往就是這些小錯誤帶來了難以預料的問題,有些甚至需要很長時間來尋找和解決。一旦一個程序作為產(chǎn)品來使用,就算最簡單的錯誤糾正起來也可能要付出極其昂貴的代價。</p><p> C#的現(xiàn)代化設計能夠消除很多常見的C++編程錯誤。 例如:</p><p> 1. 資源回
54、收減輕了程序員內存管理的負擔。</p><p> 2. C#中變量由環(huán)境自動初始化。</p><p> 3. 變量是類型安全的。</p><p> 這樣,程序員編寫與維護那些解決復雜商業(yè)問題的程序就更方便了。</p><p> ?、葘Π姹镜母绿峁﹥仍诘闹С纸档土碎_發(fā)成本</p><p> 更新軟件組件是一項很
55、容易出錯的工作,因為代碼的修改可能無意間改變原有程序的語義。為協(xié)助開發(fā)者進行這項工作,C#為版本的更新提供內在的支持。例如,方法重載必須顯式聲明。這樣可以防止編碼錯誤,保證版本更新的靈活性。還有一個相關的特性就是對接口和接口繼承的內在支持。這些特性使得C#可以開發(fā)復雜的框架并且隨著時間不斷發(fā)展更新它。</p><p> 總體來說,這些特性使得開發(fā)程序項目的后續(xù)版本的過程更加健壯,從而減少后續(xù)版本的開發(fā)成本。&l
56、t;/p><p> ?、缮虡I(yè)過程和軟件實現(xiàn)的更好對應</p><p> 企業(yè)的商業(yè)計劃要付諸現(xiàn)實,必須在抽象的商業(yè)過程和實際的軟件實現(xiàn)之間建立緊密地對應。不過大多數(shù)語言都很難做到這點。例如,如今的程序員們一般使用代碼注釋來注明哪個類對應于某個抽象的商業(yè)對象。</p><p> C#語言允許類型定義的,擴展的元數(shù)據(jù)。這些元數(shù)據(jù)可以應用于任何對象。項目構建者可以定義領域
57、特有的屬性并把他們應用于任何語言元素-類,接口等等。然后,開發(fā)人員可以編程檢查每個元素的屬性。這樣,很多工作都變得方便多了,比如編寫一個小工具來自動檢查每個類或接口是否被正確定義為某個抽象商業(yè)對象的一部分,或者只是創(chuàng)建一份基于對象的領域特有屬性的報表。定制的元數(shù)據(jù)和程序代碼之間的緊密對應有助于加強程序的預期行為和實際實現(xiàn)的之間的對應關系。</p><p><b> ?、蕯U展交互性</b>&l
58、t;/p><p> 作為一種自動管理的,類型安全的環(huán)境,C#適合于大多數(shù)企業(yè)應用程序。但實際的經(jīng)驗表明有些應用程序仍然需要一些底層的代碼,要么是因為基于性能的考慮,要么是因為要與現(xiàn)有的應用程序接口兼容。這些情況可能會迫使開發(fā)者使用C++, 即使他們本身寧愿使用更高效的開發(fā)環(huán)境。</p><p> C#采用以下對策來解決這一問題:</p><p> 1. 內置對組建
59、對象模型(COM)和基于Windows?的API的支持;</p><p> 2.允許有限制地使用純指針(Native Pointer)。</p><p> 在C#中,每個對象都自動生成為一個COM對象。開發(fā)者不再需要顯式的實現(xiàn)IUnknown和其他COM接口.這些功能都是內置的。類似的,C#可以調用現(xiàn)有的COM對象,無論它是由什么語言編寫的。</p><p>
60、 C#包含了一個特殊的功能,使程序可以調用任何純API。在一段特別標記的代碼中,開發(fā)者可以使用指針和傳統(tǒng)C/C++特性,如手工的內存管理和指針運算。這是其相對于其它環(huán)境的極大優(yōu)勢。這意味著C#程序員可以在原有的C/C++代碼的基礎上編寫程序,而不是徹底放棄那些代碼。</p><p> 無論是支持COM還是純API的調用,都是為了使開發(fā)者在C#環(huán)境中直接擁有必要的強大功能。</p><p>
61、; 由以上介紹可見,C#是一種現(xiàn)代的面向對象語言。它使程序員快速便捷地創(chuàng)建基于Microsoft .NET平臺的解決方案。這種框架使C#組件可以方便地轉化為XML網(wǎng)絡服務,從而使任何平臺的應用程序都可以通過Internet調用它。</p><p> C#增強了開發(fā)者的效率,同時也致力于消除編程中可能導致嚴重結果的錯誤。C#使C/C++程序員可以快速進行網(wǎng)絡開發(fā),同時也保持了開發(fā)者所需要的強大性和靈活性。<
62、;/p><p><b> 5.2詳細設計方案</b></p><p> 系統(tǒng)采用Microsoft SQL Server 2000作為后臺數(shù)據(jù)服務,使用Microsoft Visual Studio C# .Net設計用戶界面。</p><p> 使用C#遠程調用Microsoft SQL Server 2000數(shù)據(jù)庫存儲過程,獲取
63、工資核算、統(tǒng)計報表等結果,實現(xiàn)用戶端程序對服務器數(shù)據(jù)及其計算的遠程操作。</p><p> 根據(jù)數(shù)據(jù)流圖和數(shù)據(jù)字典分析,關鍵代碼設計如下:</p><p> 1、客戶端數(shù)據(jù)庫連接方式</p><p> 本系統(tǒng)數(shù)據(jù)庫連接方式采用讀取外部ini文件獲取服務器地址,然后建立數(shù)據(jù)連接。具體實現(xiàn)過程如下:</p><p> ?、抛x取ini文件類(
64、sql_conn.cs)</p><p> using System;</p><p> using System.Text;</p><p> using System.Runtime.InteropServices;</p><p> namespace Salary</p><p><b>
65、{</b></p><p> /// <summary></p><p> /// 通過讀取給定的ini文件內的鍵值獲取服務器地址,并形成數(shù)據(jù)庫連接字符串。</p><p> /// </summary></p><p> public class sql_conn</p><p
66、><b> {</b></p><p> [DllImport("kernel32")]private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);//引
67、用系統(tǒng)API函數(shù)</p><p> private static StringBuilder IP_val=new StringBuilder(255); </p><p> public string path; </p><p> public sql_conn(string INIPath)</p><p><b>
68、 {</b></p><p> path=INIPath; </p><p><b> }</b></p><p> public string IniReadValue(string Section,string Key) </p><p><b> { </b>
69、</p><p> string conn_str; </p><p> StringBuilder IP_val=new StringBuilder(255); </p><p> int i=GetPrivateProfileString(Section,Key,"",IP_val,255,this.path); <
70、/p><p> conn_str="workstation id="+IP_val.ToString()+";packet size=4096;user id=sa;data source="+IP_val.ToString()+";persist security info=False;initial catalog=gz"; </p>&
71、lt;p> return conn_str;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> ?、仆ㄟ^應用程序目錄下的config.ini得到服務器地址,并將生成的數(shù)據(jù)庫連接字符串
72、賦值給當前已定義的數(shù)據(jù)連接。</p><p> private void Login_Load(object sender, System.EventArgs e)</p><p><b> {</b></p><p> sql_conn conn_ip=new sql_conn(Directory.GetCurrentDirectory
73、()+@"\config.ini");//調用sql_conn類獲取config.ini中的服務器地址</p><p> Salary_Conn.ConnectionString=conn_ip.IniReadValue("Server","IP");</p><p> sql_conn_str=Salary_Conn.Con
74、nectionString; //賦值</p><p><b> }</b></p><p><b> 2、月度工資初始化</b></p><p> 月度工資初始化主要是依據(jù)職工工資基本信息增加要輸入月份的工資數(shù)據(jù),因此設計存儲過程如下:</p><p> CREATE PROCEDURE
75、dbo.new_salary</p><p><b> (</b></p><p><b> @年份 int,</b></p><p><b> @月份 int</b></p><p><b> )</b></p><p>
76、<b> AS</b></p><p> SET NOCOUNT ON;</p><p> INSERT INTO T_history(編碼,姓名,工種崗位,行政級別,技術級別,崗位檔次,檔次備注,崗位,年功,百分比增資,技能,技師,交通回民,養(yǎng)老金,失業(yè)金,公積金,房水衛(wèi),會費,所得稅,投保,房改補,物業(yè),depart_id,賬號,工號,崗位分類,身份證號,l
77、w_dep_id,年份,月份) select 編碼,姓名,工種崗位,行政級別,技術級別,崗位檔次,檔次備注,崗位,年功,百分比增資,技能,技師,交通回民,養(yǎng)老金,失業(yè)金,公積金,房水衛(wèi),會費,所得稅,投保,房改補,物業(yè),depart_id,賬號,工號,崗位分類,身份證號,lw_dep_id,@年份 AS 年份,@月份 AS 月份 from T_template</p><p><b> GO<
78、/b></p><p> 以上過程是按照輸入的年份、月份兩個參數(shù),將T_template表中的職工基本信息項插入T_history(月度職工工資)表中。</p><p><b> 3、月度工資計算</b></p><p> 月度工資計算中,工資計算的算法是:</p><p> ?、欧扛难a貼為當月的崗位工資、年
79、功工資、技能工資三項之和的35%取整;</p><p> ?、乒M為當月崗位工資880元以下按照崗位工資的5‰計算,崗位工資大于880元的按照崗位工資取整去掉崗位工資880元以上部分的5%在乘以5‰計算;</p><p> ⑶所得稅為大前月獎金加上上月應付工資減去上月的醫(yī)療保險、養(yǎng)老金、失業(yè)金、公積金。</p><p> 根據(jù)以上算法,設計存儲過程如下:&l
80、t;/p><p> CREATE PROCEDURE dbo.calc_salary</p><p><b> (</b></p><p><b> @年份 int,</b></p><p><b> @月份 int</b></p><p><
81、b> )</b></p><p><b> AS</b></p><p> SET NOCOUNT ON;</p><p> update T_history set 房改補=round((崗位+年功+技能)*0.35,0) where 年份=@年份 and 月份=@月份</p><p> u
82、pdate T_history set 會費=崗位*0.005 where 年份=@年份 and 月份=@月份 and 崗位<880</p><p> update T_history set 會費=(round(崗位,-1,1)-(round(崗位,-1,1)-880)*0.05)*0.005 where 年份=@年份 and 月份=@月份 and 崗位>=880</p><
83、;p> declare @獎金年 int,@獎金月 int,@last_month int,@last_year int</p><p><b> if @月份<4</b></p><p><b> begin</b></p><p> set @獎金月=@月份+9</p><p&g
84、t; set @獎金年=@年份-1</p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> set @獎金月=@月份-3</p><p> set
85、@獎金年=@年份</p><p><b> end</b></p><p><b> if @月份<2</b></p><p><b> begin</b></p><p> set @last_month=12</p><p> set
86、 @last_year=@年份-1</p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> set @last_month=@月份-1</p><p>
87、 set @last_year=@年份</p><p><b> end</b></p><p> drop table award</p><p> drop table lastmonth</p><p> select 獎金,身份證號 into award from T_history where 月份=
88、@獎金月 and 年份=@獎金年</p><p> select 崗位+百分比增資+年功+技能+夜貼 +節(jié)日+技師+崗貼+交通回民+補扣資-病事曠 AS 應付工資,醫(yī)保,養(yǎng)老金,失業(yè)金,公積金,身份證號 into lastmonth from T_history where 月份=@last_month and 年份=@last_year</p><p> declare C_tex_
89、radix CURSOR FOR</p><p> select award.獎金+lastmonth.應付工資-lastmonth.醫(yī)保-lastmonth.養(yǎng)老金-lastmonth.失業(yè)金-lastmonth.公積金-1600 AS 所得稅基數(shù),lastmonth.身份證號 from award inner join lastmonth on award.身份證號=lastmonth.身份證號</p
90、><p> declare @tex_radix money,@身份證號 char(20)</p><p> open C_tex_radix</p><p> FETCH NEXT FROM C_tex_radix into @tex_radix,@身份證號</p><p> while @@FETCH_STATUS = 0</p
91、><p><b> begin</b></p><p> update T_history SET 所得稅=</p><p><b> case</b></p><p> when @tex_radix<=500 then @tex_radix*0.05</p><p&
92、gt; when @tex_radix>500 and @tex_radix<=2000 then @tex_radix*0.1</p><p> when @tex_radix>2000 and @tex_radix<=5000 then @tex_radix*0.15</p><p><b> end</b></p>&
93、lt;p> where 身份證號=@身份證號 and 年份=@年份 and 月份=@月份</p><p> FETCH NEXT FROM C_tex_radix into @tex_radix,@身份證號</p><p><b> end</b></p><p><b> GO</b></p>
94、<p><b> 4、月度工資匯總</b></p><p> 月度工資匯總是按照月度工資明細進行統(tǒng)計匯總,由于篇幅所限,以下僅列出月度工資總匯存儲過程。月度工資總匯即按照運輸部崗位進行人數(shù)和各數(shù)據(jù)項匯總。</p><p> CREATE PROCEDURE dbo.allpost</p><p><b> (&l
95、t;/b></p><p><b> @年份 int,</b></p><p><b> @月份 int</b></p><p><b> )</b></p><p><b> AS</b></p><p> SET
96、 NOCOUNT ON;</p><p> SELECT COUNT(*) AS 人數(shù),崗位分類 AS 崗位名稱, SUM(崗位)+SUM(百分比增資) AS 崗位, SUM(年功)+SUM(技能) AS 保留, SUM(崗位)+SUM(百分比增資)+SUM(年功)+SUM(技能) AS 工資小計,SUM(夜貼) AS 夜貼, SUM(節(jié)日) AS 節(jié)日, SUM(技師) AS 技師, SUM(崗貼) AS 崗
97、貼, SUM(交通回民) AS 交通回民,SUM(補扣資) AS 補扣資, SUM(病事曠) AS 病事曠,SUM(崗位)+SUM(百分比增資)+SUM(年功)+SUM(技能)+SUM(夜貼) +SUM(節(jié)日)+SUM(技師)+SUM(崗貼)+SUM(交通回民)+SUM(補扣資)-SUM(病事曠) AS 應付工資, SUM(醫(yī)保) AS 醫(yī)保, SUM(養(yǎng)老金) AS 養(yǎng)老金, SUM(失業(yè)金) AS 失業(yè)金, SUM(公積金) AS
98、 公積金, SUM(房水衛(wèi))+SUM(電費) AS 房水電, SUM(會費) AS 會費, SUM(所得稅) AS 所得稅, SUM(投保) AS 投保, SUM(收視) AS 收視, SU</p><p><b> GO</b></p><p> 5、客戶端對服務器存儲過程的調用</p><p> 由于存儲過程放在服務器端的數(shù)據(jù)庫內,因
99、此進行計算時客戶端需對存儲過程進行遠程調用。以下以工資核算為例,說明其設計方法:</p><p> SqlCommand calc_com=new SqlCommand(); //新建一個SqlCommand</p><p> calc_com.Connection=this.Salary_Conn; //設定數(shù)據(jù)庫連接為一定義好連接</p><p> cal
100、c_com.CommandType=System.Data.CommandType.StoredProcedure;//設定SqlCommand類型為調用遠程存儲過程</p><p> calc_com.CommandText="[calc_salary]";//指定存儲果成名</p><p> calc_com.Parameters.Add(new System.
101、Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Cur
102、rent, null));//為SqlCommand添加調用參數(shù)</p><p> calc_com.Parameters.Add(new System.Data.SqlClient.SqlParameter("@年份", System.Data.SqlDbType.Int, 4));</p><p> calc_com.Parameters.Add(new Sys
103、tem.Data.SqlClient.SqlParameter("@月份", System.Data.SqlDbType.Int, 4));</p><p> calc_com.Parameters["@年份"].Value=treeView1.SelectedNode.Parent.Tag;//對參數(shù)賦值</p><p> calc_com.P
104、arameters["@月份"].Value=treeView1.SelectedNode.Tag;</p><p> calc_com.Connection.Open();//打開連接</p><p> calc_com.ExecuteNonQuery();//執(zhí)行SqlCommand</p><p> calc_com.Connecti
105、on.Close();//關閉連接</p><p> 注:SqlCommand是一個.NET Framework對象,表示要對 SQL Server 數(shù)據(jù)庫執(zhí)行的一個 Transact-SQL 語句或存儲過程。</p><p><b> 5、報表生成</b></p><p> 本系統(tǒng)將報表設計為將數(shù)據(jù)導出到電子表格,以下以月度工資總匯為例
106、說明:</p><p> Excel.Application all_excel=new Excel.ApplicationClass();//調用Excel軟件,建立一個Excel進程</p><p> all_excel.Workbooks.Add(1);//添加一個新工作簿</p><p> all_excel.Cells[1,1]="萊鋼運輸
107、部職工工資匯總表(總匯)";//填寫工作簿的單元格</p><p> all_excel.Cells[2,1]=numericUpDown1.Value.ToString()+"年"+comboBox1.Text+"月";</p><p> int gridcol=dataGrid1.TableStyles[0].GridColumnS
108、tyles.Count;//檢查dataGrid1的列數(shù)</p><p> for(int col=0;col<gridcol;col++)</p><p><b> {</b></p><p> all_excel.Cells[3,col+1]=dataGrid1.TableStyles[0].GridColumnStyles[c
109、ol].HeaderText;//填寫表頭</p><p><b> }</b></p><p> for(int gridrow=0;gridrow<dataGrid1.VisibleRowCount;gridrow++)</p><p><b> {</b></p><p> fo
110、r(int col=0;col<gridcol;col++)</p><p><b> {</b></p><p> all_excel.Cells[4+gridrow,col+1]=dataGrid1[gridrow,col];//填寫數(shù)據(jù)</p><p><b> }</b></p><
111、p><b> }</b></p><p> Excel.Range all_range=(Excel.Range)all_excel.get_Range(all_excel.Cells[1,1],all_excel.Cells[1,gridcol]);</p><p> all_range.HorizontalAlignment=Excel.XlHAlig
112、n.xlHAlignCenter;</p><p> all_range.MergeCells=true;</p><p> all_range.Font.Size=16;//設定字體</p><p> all_range=(Excel.Range)all_excel.get_Range(all_excel.Cells[3,1],all_excel.Cells
113、[dataGrid1.VisibleRowCount+3,gridcol]);</p><p> all_range.Borders.Weight=2;//設定邊框線</p><p> all_excel.Visible=true;//顯示電子表格</p><p><b> 6系統(tǒng)測試</b></p><p>
114、 6.1 MIS測試介紹</p><p> 在MIS開發(fā)過程中采用了多種措施保證軟件質量,但是實際開發(fā)過程中還是不可避免地會產(chǎn)生差錯,系統(tǒng)中通??赡茈[藏著錯誤和缺陷,示經(jīng)周密測試的系統(tǒng)投入運行,將會造成難以想像的后果,因此系統(tǒng)測試是MIS開發(fā)過程中為保證軟件質量必須進行的工作。大量統(tǒng)計資料表明,系統(tǒng)測試的工作量往往占MIS開發(fā)總工作量的40%以上。因此,我們必須重視測試工作。</p><p&
115、gt; 由于程序中隱藏的缺陷只在特定的環(huán)境下才有可靠顯露,系統(tǒng)缺陷通常是由于對某些特定情況考慮不周造成的。因此測試不是為了表明程序正確;成功的測試也不是沒有發(fā)現(xiàn)錯誤的測試。有意義的軟件測試應該是從“破壞”軟件系統(tǒng)的角度出發(fā),精心設計最有可以暴露程序系統(tǒng)缺陷的測試方案。因此軟件測試的目標應該是以盡可能少的代價和時間找出軟件系統(tǒng)中潛在的錯誤和缺陷。</p><p> 從產(chǎn)品角度看,測試計劃中的測試項目包括軟件結構
116、中的分系統(tǒng)層、子系統(tǒng)層、功能模塊層、程序模塊層中的各類模塊,從測試本身看,分為單元測試,組合測試,確認測試等。測試對象是隨階段而異的,最基本、最初的測試是單元測試,后面的組合測試、確認測試都是以被測過的模塊作為測試對象的。</p><p><b> (1)單元測試:</b></p><p> 單元測試也稱模塊測試或程序測試,單元測試是對每個模塊單獨進行的,驗證模塊
117、接口與設計說明書是否一致,對模塊的所有主要處理路徑進行測試且與預期的結構進行對照,還要對所有錯誤處理路徑進行測試。對源碼進行審查,對照設計說明書,表態(tài)地檢查源程序是否符合功能的邏輯要求,是進行單元測試前的重要工作工。單元測試一般是由程序員完成,也稱程序調試。</p><p><b> (2)組合測試</b></p><p> 組合測試也稱集成測試或子系統(tǒng)測試,通常
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- vb+access職工工資管理信息系統(tǒng)(系統(tǒng)+開題+論文+任務書)
- eclipse職工工資管理系統(tǒng)
- eclipse職工工資管理系統(tǒng)
- 職工工資管理系統(tǒng)畢業(yè)設計報告
- 職工工資管理系統(tǒng)畢業(yè)設計報告
- 畢業(yè)設計論文--基于vfp的職工工資管理系統(tǒng)
- 職工工資模型-數(shù)學建模論文
- 課程設計---職工工資管理系統(tǒng)
- 職工工資管理的意見
- 職工工資發(fā)放表
- 課程設計--職工工資管理系統(tǒng)
- 課程設計---職工工資管理系統(tǒng)
- 【畢業(yè)設計】職工工資管理系統(tǒng)設計與實現(xiàn)
- 職工工資管理系統(tǒng)設計課程設計
- 職工工資管理制度
- c語言 職工工資管理系統(tǒng)設計報告
- 企業(yè)在崗職工工資調查
- 管理信息系統(tǒng)畢業(yè)論文
- 畢業(yè)論文——管理信息系統(tǒng)
- 管理信息系統(tǒng)畢業(yè)論文
評論
0/150
提交評論