【文章內(nèi)容簡(jiǎn)介】
GetLeavetimes(Id,momth:string):string。根據(jù)員工編號(hào)和月份返回請(qǐng)假次數(shù)Function Getlatetimes(Id,momth:string):string。根據(jù)員工編號(hào)和月份返回遲到次數(shù)Function GetleaEartimes(Id,momth:string):string。根據(jù)員工編號(hào)和月份返回早退次數(shù)Function GetHOliOvertimes(Id,momth:string):string。根據(jù)員工編號(hào)和月份返回節(jié)假日加班時(shí)間Function Getotherovertimes(Id,momth:string):string。根據(jù)員工編號(hào)和月份返回返回其他加班時(shí)間Function Getremark(Id,momth:string):string。根據(jù)員工編號(hào)和月份返回備注信息Function CheckInfoRecs(SQL:string):OLEVariant。通過(guò)傳遞SQL語(yǔ)句返回查詢記錄procedure RecInsert(InsertSQL:string)。通過(guò)傳遞SQL語(yǔ)句執(zhí)行插入操作procedure RecUpdate(UpdateSQL:string)。通過(guò)傳遞SQL語(yǔ)句執(zhí)行修改操作procedure Recdel(Id,month:string)。根據(jù)員工編號(hào)和月份編號(hào)執(zhí)行刪除操作Tusertable類(lèi)封裝了對(duì)user_table表的各種操作, Tusertable類(lèi)封裝的方法和過(guò)程方法或過(guò)程名具體說(shuō)明Function Getuserpwd(UserName:string):string。根據(jù)用戶名返回用戶密碼信息Function GetuserLevel(UserName:string):string。根據(jù)用戶名返回用戶級(jí)別信息Function checkuser(UserName:string):Boolean。根據(jù)用戶名返回查詢賬號(hào)記錄是否存在procedure UserInsert(InsertSQL:string)。通過(guò)傳遞SQL語(yǔ)句執(zhí)行插入操作procedure UserUpdate(UpdateSQL:string)。通過(guò)傳遞SQL語(yǔ)句執(zhí)行修改操作procedure Userdelete(DeleteSQL:string)。根據(jù)傳遞SQL語(yǔ)句執(zhí)行刪除操作procedure CreatTable(SQL:string)。通過(guò)腳本SQL語(yǔ)句創(chuàng)建用戶數(shù)據(jù)表第三章 人事工資管理信息系統(tǒng)的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)第一節(jié) 系統(tǒng)實(shí)現(xiàn)技術(shù)一、選擇Borland Delphi 7做為開(kāi)發(fā)工具Delphi是著名的Borland(現(xiàn)在已和Inprise合并)公司開(kāi)發(fā)的可視化軟件開(kāi)發(fā)工具。“真正的程序員用c,聰明的程序員用Delphi”,這句話是對(duì)Delphi最經(jīng)典、最實(shí)在的描述。Delphi被稱為第四代編程語(yǔ)言,它具有簡(jiǎn)單、高效、功能強(qiáng)大的特點(diǎn)。和VC相比,Delphi更簡(jiǎn)單、更易于掌握,而在功能上卻絲毫不遜色;和VB相比,Delphi則功能更強(qiáng)大、更實(shí)用??梢哉f(shuō)Delphi同時(shí)兼?zhèn)淞薞C功能強(qiáng)大和VB簡(jiǎn)單易學(xué)的特點(diǎn)。它一直是程序員至愛(ài)的編程工具。 Delphi具有以下的特性:基于窗體和面向?qū)ο蟮姆椒ǎ咚俚木幾g器,強(qiáng)大的數(shù)據(jù)庫(kù)支持,與Windows編程緊密結(jié)合,強(qiáng)大而成熟的組件技術(shù)。但最重要的還是Object Pascal語(yǔ)言,它才是一切的根本。 Object Pascal語(yǔ)言是在Pascal語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的,簡(jiǎn)單易學(xué)?! elphi提供了各種開(kāi)發(fā)工具,包括集成環(huán)境、圖像編輯(Image Editor),以及各種開(kāi)發(fā)數(shù)據(jù)庫(kù)的應(yīng)用程序,如DesktopDataBase Expert等。除此之外,還允許用戶掛接其它的應(yīng)用程序開(kāi)發(fā)工具,如Borland公司的資源編輯器(Resourse Workshop)。 在Delphi眾多的優(yōu)勢(shì)當(dāng)中,它在數(shù)據(jù)庫(kù)方面的特長(zhǎng)顯得尤為突出:適應(yīng)于多種數(shù)據(jù)庫(kù)結(jié)構(gòu),從客戶機(jī)/服務(wù)機(jī)模式到多層數(shù)據(jù)結(jié)構(gòu)模式;高效率的數(shù)據(jù)庫(kù)管理系統(tǒng)和新一代更先進(jìn)的數(shù)據(jù)庫(kù)引擎;最新的數(shù)據(jù)分析手段和提供大量的企業(yè)組件。二、選擇Microsoft Server 2000作為服務(wù)器端數(shù)據(jù)庫(kù)軟件 1. Microsoft SQL Server2000簡(jiǎn)介 SQL Server 2000是Microsoft公司推出的SQL Server數(shù)據(jù)庫(kù)管理系統(tǒng),該版本繼承了SQL Server Windows 98的膝上型電腦到運(yùn)行Microsoft Windows 2000的大型多處理器的服務(wù)器等多種平臺(tái)使用 由于SQL Server與Windows界而風(fēng)格完全一致,且有許多向?qū)?Wizard)幫助,因此易于安裝和學(xué)習(xí),有一關(guān)SQL Server的資料、培訓(xùn)隨處可得,所以容易上手。并且由于今天Windows操作系統(tǒng)占領(lǐng)著主導(dǎo)地的位,選擇SQL Server一定會(huì)在兼容性方面取得一些優(yōu)勢(shì)。另外,SQL Server 2000除了具有擴(kuò)展性,可靠性以外,還具有可以迅速開(kāi)發(fā)新的因特網(wǎng)系統(tǒng)的功能。尤其是它可以直接存儲(chǔ)XML數(shù)據(jù),可以將搜索結(jié)果以XML格式輸出等特點(diǎn),有利于構(gòu)建了異構(gòu)系統(tǒng)的互操作性,奠定了而向互聯(lián)網(wǎng)的企業(yè)應(yīng)用和服務(wù)的基石。因此我們選用Microsoft SQL Server2000來(lái)創(chuàng)建數(shù)據(jù)庫(kù)。創(chuàng)建數(shù)據(jù)庫(kù)的步驟: 。 。 。 。 。 。 。 在設(shè)計(jì)并且建立數(shù)據(jù)庫(kù)后,我們還需要進(jìn)行一些優(yōu)化工作。根據(jù)計(jì)算機(jī)的配置和工作環(huán)境,可以做一些時(shí)來(lái)提高M(jìn)icrosoft SQL Server2000或數(shù)據(jù)庫(kù)的性能。實(shí)際上有很多的方法可以提高SQL Server2000的系統(tǒng)性能。我們可以在實(shí)踐過(guò)程中不斷的發(fā)現(xiàn)和總結(jié)。2.結(jié)構(gòu)化查詢語(yǔ)言(SQL)簡(jiǎn)介 SQL是英文Structure Query Language的縮寫(xiě),意思為結(jié)構(gòu)化查詢語(yǔ)言。SQL語(yǔ)言的主要功能就是同各種數(shù)據(jù)庫(kù)建立聯(lián)系,進(jìn)行溝通。按照ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì))的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言。SQL語(yǔ)句可以用來(lái)執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)等。目前,絕大多數(shù)流行的關(guān)系姓數(shù)據(jù)庫(kù)管理系統(tǒng),如Oracle, Sybase, Microsoft SQL Server,Access等都采用了SQL語(yǔ)言標(biāo)準(zhǔn)。雖然很多數(shù)據(jù)庫(kù)都對(duì)SQL語(yǔ)句進(jìn)行了在開(kāi)發(fā)和擴(kuò)展,但是包括Select, Update, Delete, Create,以及Drop在內(nèi)的標(biāo)準(zhǔn)的SQL命令仍然可以被用來(lái)完成幾乎所有的數(shù)據(jù)庫(kù)操作。第二節(jié) 系統(tǒng)運(yùn)行軟件環(huán)境工具軟件: Borland Delphi 7面向?qū)ο蟮拈_(kāi)發(fā)工具; Microsoft SQL Server 2000關(guān)系數(shù)據(jù)庫(kù)軟件測(cè)試環(huán)境: Windows XP professional sp2, Windows 2000 professional sp4。 Windows server 2003 sp2。在以上操作系統(tǒng)上通過(guò)測(cè)試 第三節(jié) 模塊的設(shè)計(jì)與實(shí)現(xiàn)一、創(chuàng)建啟動(dòng)畫(huà)面 啟動(dòng)畫(huà)面是應(yīng)用程序的附加部分,體現(xiàn)應(yīng)用程序的門(mén)面。應(yīng)用程序初始化的時(shí)候,用戶可從中獲取基本信息。但啟動(dòng)畫(huà)面不宜做的太大,以免喧賓奪主。作為企業(yè)用戶使用的軟件,我們小組采用了藍(lán)色基調(diào)的厚重感較強(qiáng)的背景,附以簡(jiǎn)單的文字信息,能夠給用戶一個(gè)穩(wěn)重可信的感覺(jué)。附圖如下: 相關(guān)代碼: 1. 窗體創(chuàng)建事件代碼procedure (Sender: TObject)。begin :=timetostr(now)。 :=formatdatetime(39。yyyy年mm月dd日 39。,now)。end。(。)后添加如下代碼: ……………… movefrm:=(application)。 。 。 sleep(2008)。 。 ?!?chuàng)建登錄窗體啟動(dòng)畫(huà)面消失后,將彈出登錄窗體。登錄窗體是唯一能進(jìn)入主窗口的入口。同時(shí)我們對(duì)登錄窗體重新設(shè)計(jì),加入了“記住上次登錄成功時(shí)的用戶名和密碼”功能,方便了軟件使用者,體現(xiàn)了“一切從客戶角度出發(fā)”的軟件開(kāi)發(fā)原則。新建登錄窗體loginfrm,登錄窗體的設(shè)計(jì)布局如下圖算法流程和具體代碼如下:1. 窗體建立事件發(fā)生時(shí)、密碼和登錄開(kāi)關(guān)狀態(tài)。,則將用戶名和密碼自動(dòng)填到相應(yīng)編輯框,并將窗體中的“記住用戶名和密碼”標(biāo)記為選中狀態(tài)否則將用戶名和密碼框清空,并將“記住用戶名和密碼”標(biāo)記為取消狀態(tài)。 代碼如下:procedure (Sender: TObject)。begin usertable:=。 setupfile:=(extractfiledir()+39。\39。)。 :=(39。Option39。,39。AutoLogon39。,false)。 if =true then begin :=(39。Option39。,39。LastUserName39。,39。39。)。 :=(39。Option39。,39。Mark39。,39。39。)。 end else begin 。 。 end。end。2. 按下登錄按鈕后如果“記住用戶名和密碼”處于選中狀態(tài),則在中覆蓋寫(xiě)入 [Option]AutoLogon=1LastUserName=‘上次登錄成功的用戶名’Mark=‘密碼’ 否則覆蓋寫(xiě)入 [Option]AutoLogon=0LastUserName=Mark= 實(shí)現(xiàn)代碼如下(包括權(quán)限和密碼驗(yàn)證模塊代碼):procedure (Sender: TObject)。var b:bool。 userlevel:string。begin try b:=()。 except 。 。 exit。 end。 if b=false then if =39。39。 then begin (39。對(duì)不起,用戶名不能為空!39。,39。提示:39。,mb_ok)。 。 exit。 end else begin (39。對(duì)不起,沒(méi)有這個(gè)用戶名!39。,39。提示:39。,mb_ok)。 。 exit。 end else begin if =() then begin userlevel:=()。 。 。 end else begin (39。對(duì)不起!您的密碼不對(duì)!39。,39。提示:39。,mb_ok)。 。 end。 end。 if =True then begin (39。Option39。,39。AutoLogon39。,True)。 (39。Option39。,39。LastUserName39。,)。 (39。Option39。,39。Mark39。,)。 end else begin (39。Option39。,39。AutoLogon39。,False)。 (39。Option39。,39。LastUserName39。,39。39。)。 (39。Option39。,39。Mark39。,39。39。)。 end。end。三、連接數(shù)據(jù)庫(kù)設(shè)置一)連接數(shù)據(jù)庫(kù)并創(chuàng)建用戶表當(dāng)系統(tǒng)第一次運(yùn)行或者SQL server數(shù)據(jù)庫(kù)信息有變動(dòng)時(shí)建好,則需彈出數(shù)據(jù)庫(kù)連接窗口。目的是提醒用戶更改數(shù)據(jù)庫(kù)連接參數(shù),從而能夠正常登陸。同時(shí)若所選數(shù)據(jù)庫(kù)中沒(méi)有數(shù)據(jù)表,則調(diào)用程序內(nèi)置的建表腳本自動(dòng)創(chuàng)建所需用戶表。新建窗體dblink,窗體布局如下圖1.“連接”按鈕的onclick事件代碼procedure (Sender: TObject)。var strCreateDB:string。begin usertable:=。 try setupfile:=(extractfiledir()+39。\39。)。 (39。system39。,39。USER_NAME39。,)。 (39。system39。,39。USER_PWD39。,)。 (39。system39。,39。servername39。,)。 (39。system39。,39。database39。,)。 if GetTextFromFile(extractfiledir()+39。\39。,strCreateDB) then (strCreateDB)。 。 :=39。系統(tǒng)管理員39。 。 except (39。數(shù)據(jù)表創(chuàng)建失敗,請(qǐng)確認(rèn)無(wú)誤后重試!39。,39。提示:39。) end。end。 其中GetTextFromFile是自定義函數(shù),目的是讀取文本文件中的內(nèi)容。其中用到了Tinifile類(lèi),須在uses中加入Inifiles單元。實(shí)現(xiàn)代碼如下:function GetTextFromFile(AFile:String。var ReturnString:string):boolean。var FileStream:TFileStream。Begin if not fileexists(AFile) then exit。 FileStream:=(AFile,fmOpenRead)。 try if 0 then begin SetLength(ReturnString,)。 (ReturnString[1],)。 result:=true。 end。 finally 。 end。end。二)