版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 一、引言</b></p><p> 1.1 選題目的及意義 人事管理系統(tǒng)是一個(gè)比較復(fù)雜的工作,管理人事要跟公司的具體情況結(jié)合起來。一般說來,公司都會(huì)分比較多的部門,每一個(gè)員工都屬于一個(gè)部門,擔(dān)任不同的職務(wù),在人事管理系統(tǒng)時(shí)都要考慮各種情況。在現(xiàn)實(shí)生活中,公司部門的調(diào)整,員工的聘請(qǐng)、辭退、升遷是很平常見,為了了解各種情況,在數(shù)據(jù)庫中不僅要保存員工的基本
2、資料,同時(shí)這些變動(dòng)也要能反映到數(shù)據(jù)庫中。</p><p> 作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)人事進(jìn)行管理,具有著手工管理所無法比擬的優(yōu)點(diǎn).例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高商場人事管理的效率,也是科學(xué)化、正規(guī)化管理的重要條件。</p><p> 1.2 主要內(nèi)容概要</p><p> 經(jīng)過簡單的
3、分析,初步確定系統(tǒng)的主要功能:</p><p> ?。?)友好的用戶界面,操作簡單。</p><p> ?。?)具有良好的安全措施,能夠保證系統(tǒng)數(shù)據(jù)不被非法使用。</p><p> (3)按照某種條件,查詢、統(tǒng)計(jì)符合條件的員工信息。</p><p> ?。?)能動(dòng)態(tài)更新部門,人事資料。</p><p> 1.3系統(tǒng)
4、功能結(jié)構(gòu)圖及其相關(guān)模塊描述</p><p> 功能模塊名:員工資料管理模塊</p><p> 模塊功能:作為本系統(tǒng)的核心模塊,為了方便處理,人事變更如調(diào)動(dòng)、離職等操作都放在這個(gè)模塊的修改中,當(dāng)然在實(shí)用系統(tǒng)中,這些功能可能會(huì)獨(dú)立實(shí)現(xiàn)。</p><p> 功能模塊名:數(shù)據(jù)庫管理模塊</p><p> 模塊功能:主要實(shí)現(xiàn)數(shù)據(jù)庫備份。<
5、/p><p> 注:由于篇幅有限,本課程設(shè)計(jì)只實(shí)現(xiàn)了具有代表性和在系統(tǒng)中占核心地位的員工資料管理模塊,同時(shí)也講解了如何實(shí)現(xiàn)數(shù)據(jù)庫備份。</p><p> 1.4系統(tǒng)的數(shù)據(jù)字典</p><p> 員工基本資料(描述員工的考勤信息,便于查詢、操作):員工號(hào),員工名,性別,</p><p> 年齡,部門,職務(wù),合同開始時(shí)間結(jié)束時(shí)間,工作狀態(tài),住
6、址,聯(lián)系電話,手機(jī),</p><p><b> 郵箱,備注</b></p><p> 人事更新表(描述員工的人事變動(dòng)信息):記錄號(hào)、工號(hào)、原部門、新部門、原職務(wù)、新職務(wù)、操作、日期</p><p> 部門表(描述員工所在部門):部門號(hào)、部門名稱、上級(jí)部門</p><p> 職務(wù)表(描述員工所屬部門):職務(wù)<
7、/p><p> 二、 數(shù)據(jù)庫概念模型設(shè)計(jì)</p><p> 2.1數(shù)據(jù)實(shí)體—關(guān)系圖</p><p> 系統(tǒng)的概念結(jié)構(gòu)設(shè)計(jì)設(shè)計(jì)就是將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)即概念模型的過程。設(shè)計(jì)概念結(jié)構(gòu)通常有四類方法,它們分別是自頂向下、自底向下、逐步擴(kuò)張、混合策略。在本系統(tǒng)中把需求分析中得到的數(shù)據(jù)圖抽象,通過選擇局部應(yīng)用、逐一設(shè)計(jì)分E-R圖,設(shè)計(jì)出人事管理系統(tǒng)的概念模
8、型,用E-R模型來描述概念結(jié)構(gòu)。人事管理系統(tǒng)實(shí)體關(guān)系E-R圖:</p><p><b> 2.2數(shù)據(jù)實(shí)體描述</b></p><p> 用戶密碼表(用戶名、用戶密碼、用戶權(quán)限)</p><p> 員工資料表(員工號(hào),員工名,性別,年齡,部門,職務(wù),合同開始時(shí)間結(jié)束時(shí)間,工作 狀態(tài),住址,聯(lián)系電話,手機(jī),郵箱,備注)</p&g
9、t;<p> 人事更新表(記錄號(hào)、工號(hào)、原部門、新部門、原職務(wù)、新職務(wù)、操作、日期)</p><p> 部門表(部門號(hào)、部門名稱、上級(jí)部門)</p><p><b> 職務(wù)表(職務(wù))</b></p><p> 三、 數(shù)據(jù)庫邏輯模型設(shè)計(jì)</p><p> 邏輯結(jié)構(gòu)設(shè)計(jì)是獨(dú)立于任何一種數(shù)據(jù)模型的信息結(jié)
10、構(gòu)。邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)就是把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R圖轉(zhuǎn)換為與用戶選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。</p><p> 根據(jù)前面的概念結(jié)構(gòu)設(shè)計(jì)出來的E-R圖,將實(shí)體間的聯(lián)系轉(zhuǎn)換為關(guān)系模式,本系統(tǒng)通過E-R圖轉(zhuǎn)換成的關(guān)系模式如下:</p><p> 用戶密碼表用戶名 char 30</p><p> 用戶密碼
11、 char 30</p><p> 用戶權(quán)限 char 30</p><p><b> 四、系統(tǒng)的實(shí)現(xiàn)</b></p><p><b> 4.1設(shè)計(jì)封面</b></p><p> 封面窗體是用戶在登錄系統(tǒng)之前,為減緩用戶等待產(chǎn)生的煩躁情緒,設(shè)計(jì)的漂
12、亮畫面,當(dāng)程序啟動(dòng)完成后。此畫面自動(dòng)消失。要完成此封面,需要在application項(xiàng)目文件編寫如下代碼:</p><p> form2.Show;</p><p> form2.Update;</p><p> sleep(1000);</p><p> form2.Free;</p><p> form1
13、.Show ;</p><p> Application.Run;</p><p> 且將project—>options的選項(xiàng)中將from1設(shè)成main from。</p><p> 在項(xiàng)目中新建一個(gè)DataModule設(shè)計(jì)器,更改其名Mydata,添加Database組件,datasoure組件,Query組件進(jìn)行數(shù)據(jù)庫連接完成前后臺(tái)的連接操作。&l
14、t;/p><p> 4.2 設(shè)計(jì)登錄模塊</p><p> 設(shè)置登錄界面是保障系統(tǒng)安全的一種手段,一般的數(shù)據(jù)應(yīng)用系統(tǒng)都需要進(jìn)行登錄才能進(jìn)入系統(tǒng)。在這個(gè)模塊里,主要處理的是輸入的用戶名和密碼,程序根據(jù)用戶名和密碼編寫SQL語句,然后執(zhí)行,查詢?cè)撚脩裘兔艽a是否與用戶密碼表的某條記錄相符。</p><p> 新建一個(gè)工程,在窗體中添加控件,然后調(diào)整界面,如圖:<
15、/p><p> 雙擊登錄按鈕編寫代碼如下:</p><p> with mydata.Query1 do</p><p><b> begin</b></p><p><b> close;</b></p><p> with SQL do</p><
16、;p><b> begin</b></p><p><b> clear;</b></p><p> //添加SQL代碼,使用參數(shù)化方法,注意在參數(shù)前面一定要用:號(hào)</p><p> Add('select *from 用戶密碼表 where 用戶名=:uname and 用戶密碼=:upasswor
17、d');</p><p><b> //給各參數(shù)賦值</b></p><p> ParamByname('uname').AsString:=trim(Edit1.Text);</p><p> ParamByname('upassword').AsString:=trim(Edit2.Text);
18、</p><p><b> end;</b></p><p> open; //執(zhí)行SQL語句</p><p> if(mydata.Query1.FindLast)then //判斷查詢結(jié)果是否為空</p><p><b> begin&l
19、t;/b></p><p> form3.Show();</p><p> form1.Hide;</p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b><
20、/p><p> showmessage('用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入');</p><p><b> x:=x+1;</b></p><p> if x=3 then</p><p><b> begin</b></p><p> showmessag
21、e('密碼輸入錯(cuò)誤三次,程序退出');</p><p> application.terminate;</p><p> 有時(shí)用戶在登錄系統(tǒng)時(shí)會(huì)忘記自己的密碼這時(shí)就需要修改以前使用的密碼,建立新密碼,所以設(shè)計(jì)了密碼修改窗體如圖</p><p> 雙擊修改密碼按鈕添加如下代碼</p><p> with mydata.Q
22、uery1 do</p><p><b> begin</b></p><p><b> close;</b></p><p> with SQL do</p><p><b> begin</b></p><p><b> clea
23、r;</b></p><p> Add('select *from 用戶密碼表 where 用戶名=:uname ');</p><p> ParamByname('uname').AsString:=trim(user.Text);</p><p><b> open;</b></p&g
24、t;<p> end; //執(zhí)行SQL語句</p><p> if(mydata.Query1.FindLast)then</p><p> with sql do</p><p><b> begin</b></p><p><b>
25、 close;</b></p><p><b> clear;</b></p><p> add('update 用戶密碼表 set 用戶名='''+user.text+''',用戶密碼='''+pass.text+''',用戶權(quán)限='
26、39;guest'' where 用戶名='''+user.text+'''');</p><p> mydata.Query1.ExecSQL;</p><p> showmessage('密碼修改成功!');</p><p> form11.close;</p&g
27、t;<p> form1.show;</p><p><b> end else</b></p><p> showmessage('服務(wù)器忙,請(qǐng)重試!');</p><p><b> end;</b></p><p> 如有其它外來用戶需要訪問系統(tǒng)就需要進(jìn)行
28、注冊(cè),建立注冊(cè)新用戶窗體如下</p><p> 雙擊提交按鈕建立如下響應(yīng)事件</p><p> with mydata.Query1 do</p><p><b> begin</b></p><p><b> close;</b></p><p> with SQ
29、L do</p><p><b> begin</b></p><p><b> clear;</b></p><p> //添加SQL代碼,使用參數(shù)化方法,注意在參數(shù)前面一定要用:號(hào)</p><p> Add('select *from 用戶密碼表 where 用戶名=:uname
30、 ');</p><p><b> //給各參數(shù)賦值</b></p><p> ParamByname('uname').AsString:=trim(user.Text);</p><p><b> end;</b></p><p> open;
31、 //執(zhí)行SQL語句</p><p> if(mydata.Query1.FindLast)then //判斷查詢結(jié)果是否為空</p><p><b> begin</b></p><p> showmessage('該用戶已存在 ,請(qǐng)重新輸入')</p><p
32、><b> end</b></p><p><b> { else</b></p><p> if (trim(user.text=' ') or trim(pass.text=' ') or trim(privilege.text=' ')) then</p><p
33、> showmessage('請(qǐng)輸入完整信息') }</p><p><b> else</b></p><p><b> begin</b></p><p> with mydata.Query1 do</p><p><b> begin</b&g
34、t;</p><p><b> close;</b></p><p> with sql do</p><p><b> begin</b></p><p><b> clear;</b></p><p> add('insert in
35、to 用戶密碼表 values(:user,:pass,:privilege)');</p><p> ParamByName('user').AsString:=trim(user.Text);</p><p> ParamByName('pass').AsString:=trim(pass.Text);</p><p>
36、; ParamByName('privilege').AsString:=trim(privilege.Text);</p><p><b> try</b></p><p><b> ExecSQL;</b></p><p> showmessage('注冊(cè)成功');</p&
37、gt;<p> form1.Show;</p><p> form7.Hide ;</p><p><b> except</b></p><p> showmessage('unsuccess');</p><p><b> end;</b></p&g
38、t;<p><b> close;</b></p><p><b> 4.3設(shè)計(jì)主窗體</b></p><p> 當(dāng)?shù)卿洺晒?,進(jìn)入主窗口。新建一個(gè)form3。窗體如圖: </p><p> 單擊用戶資料模塊進(jìn)入員工資料管理模塊。建立它的響應(yīng)函數(shù),添加代碼如下:</p><p>
39、; if not assigned(form4) then</p><p> form4:=tform4.create(self);</p><p> form4.show;</p><p> 4.4設(shè)計(jì)員工資料管理模塊</p><p> 在該窗體中設(shè)計(jì)了員工資料表和員工狀態(tài)表的主細(xì)表主要是為了在員工資料表中選擇某一條記錄</
40、p><p> 時(shí),員工狀態(tài)表能夠相應(yīng)顯示該員工的其他信息,方便用戶進(jìn)行對(duì)員工的了解管理。窗體中其他按鈕則是為了進(jìn)入相應(yīng)員工管理模塊。</p><p><b> 單擊添加用戶子模塊</b></p><p> 由于這個(gè)模塊的數(shù)據(jù)結(jié)構(gòu)比較復(fù)雜,先來構(gòu)建員工子模塊。</p><p> 新建一個(gè)form對(duì)象,添加需要的組件,窗
41、口如圖:</p><p> 圖中的數(shù)據(jù)輸入框有文本框,單選框,組合框等,Delphi中的組件相對(duì)容易控制,可以方便的將各控件的內(nèi)容讀取出來。各控件的屬性及類型,如表格:</p><p> 部門和職務(wù)對(duì)應(yīng)的組合框的內(nèi)容都是通過數(shù)據(jù)表的內(nèi)容動(dòng)態(tài)更新,添加員工資料時(shí)可以直接在組合框里選擇。工作狀態(tài)輸入框雖然也是組合框,但它的內(nèi)容是在程序中設(shè)定,主要是在職,離職等一些相對(duì)固定的狀態(tài)。</
42、p><p> 合同開始時(shí)間和合同結(jié)束時(shí)間的輸入框是時(shí)間日期拾取器,DataTimePicker,使用這個(gè)控件的Date屬性可以獲取的日期,然后調(diào)用Datetostr函數(shù)把他轉(zhuǎn)化成字符串。</p><p> 備注對(duì)應(yīng)的輸入框是一個(gè)多行文本輸入框memo控件,它與一般的文本輸入框的區(qū)別是可以多行輸入</p><p> 實(shí)現(xiàn)“添加用戶”按鈕的響應(yīng)函數(shù),程序如下:<
43、/p><p> procedure TForm5.AddstuffClick(Sender: TObject);</p><p><b> var</b></p><p> temp:string;</p><p><b> begin</b></p><p> //判
44、斷輸入內(nèi)容是否完整,如果不完整則要求用戶輸入完整后在執(zhí)行下一步操作</p><p> if ((trim(code.Text)=' ')or(trim(stuffname.Text)=' ')or(trim(age.Text)=' ')or</p><p> (trim(partment.Text)=' ')or(trim
45、(job.Text)=' ')or(trim(address.Text)=' ')or</p><p> (trim(telephone.Text)=' ')or(trim(mobile.Text)=' ')or(trim(mail.Text)=' ')or</p><p> (trim(jobstate.
46、Text)=' ')) then</p><p><b> begin</b></p><p> showmessage('請(qǐng)輸入完整資料');</p><p><b> end else</b></p><p><b> begin</b&g
47、t;</p><p> with mydata.query_stuff do</p><p><b> begin</b></p><p><b> close;</b></p><p> with SQL do</p><p><b> begin<
48、;/b></p><p><b> clear;</b></p><p> add ('select * from 員工資料表 where 員工號(hào)=:stuffcode');</p><p> ParamByName ('stuffcode').AsString:=trim(code.Text);&
49、lt;/p><p><b> end;</b></p><p><b> open;</b></p><p> if(findlast()) then</p><p><b> begin</b></p><p> showmessage('
50、;該工號(hào)已經(jīng)有人使用,請(qǐng)重新輸入工號(hào)');</p><p> with sql do</p><p><b> begin</b></p><p><b> clear;</b></p><p> add ('select * from 員工資料表');</p&
51、gt;<p><b> end;</b></p><p><b> open;</b></p><p><b> end else</b></p><p><b> begin</b></p><p><b> close
52、;</b></p><p> with SQL do</p><p><b> begin</b></p><p><b> clear;</b></p><p> Add('insert into 員工資料表 values</p><p> (
53、:code,:name,:sex,:age,:partment,:job,:start,:end,:state,:address,:telephone,:mobile,:email,:remark)');</p><p> ParamByName('code').AsString:=trim(code.Text);</p><p> ParamByName(
54、39;name').AsString:=trim(stuffname.Text);</p><p> if man.Checked then</p><p><b> begin</b></p><p> paramByName('sex').AsInteger:=1;</p><p>
55、end else begin</p><p> paramByName('sex').AsInteger:=0;</p><p><b> end;</b></p><p> ParamByName('age').AsInteger:=strtoint(trim(age.Text));</p>
56、<p> ParamByName('partment').AsString:=trim(partment.Text) ;</p><p> ParamByName('job').AsString:=trim(job.Text);</p><p> ParamByName('start').AsString:=datetost
57、r(starttime.Date);</p><p> ParamByName('end').AsString:=datetostr(endtime.Date);</p><p> ParamByName('address').AsString:=trim (address.Text);</p><p> ParamByName
58、('telephone').AsString:=trim (telephone.Text);</p><p> ParamByName('mobile').AsString:=trim (mobile.Text);</p><p> ParamByName('email').AsString:=trim (mail.Text);</
59、p><p> ParamByName('state').AsString:=trim (jobstate.Text);</p><p> ParamByName('remark').AsString:=trim (remark.Text);</p><p><b> end;</b></p>&l
60、t;p><b> try</b></p><p><b> ExecSQL;</b></p><p><b> except</b></p><p> showmessage('unsuccess');</p><p><b> end
61、;</b></p><p><b> close;</b></p><p> with sql do</p><p><b> begin</b></p><p><b> clear;</b></p><p> add('
62、select * from 員工資料表');</p><p><b> end;</b></p><p><b> open;</b></p><p><b> end;</b></p><p><b> end;</b></p>
63、;<p><b> end;</b></p><p><b> end;</b></p><p> 清除輸入的函數(shù)代碼如下:</p><p> procedure TForm5.ClearClick(Sender: TObject);</p><p> var temp:st
64、ring;</p><p><b> begin</b></p><p> code.Text:='';</p><p> stuffname.Text:='';</p><p> man.Checked:=true;</p><p> age.Text:
65、='0';</p><p> address.Text:='';</p><p> telephone.Text:='';</p><p> mobile.Text:='';</p><p> mail.Text:='';</p><p
66、> jobstate.Text:='';</p><p> remark.Text:='';</p><p><b> end;</b></p><p> 4.5查詢員工子模塊</p><p> 查詢員工并不需要根據(jù)所有字段進(jìn)行查詢,有時(shí)可能是查詢所有,有時(shí)可能只需要對(duì)某幾
67、個(gè)字段條件進(jìn)行查詢,這就是需要對(duì)SQL語句進(jìn)行合適的處理。在條件選擇上,可以使用Cleck Box組件進(jìn)行選擇判斷,每選擇一項(xiàng),則在SQL語句中添加一個(gè)條件,查詢子模塊的窗體,如圖:</p><p> 在查詢子模塊窗體內(nèi)容與添加員工子模塊類似,只是在添加員工子模塊中的Label組件改為Check Box組件。</p><p> 雙擊查詢按鈕建立它的響應(yīng)函數(shù),如下:</p>
68、<p> procedure TForm6.SearchstuffClick(Sender: TObject);</p><p> var sign:boolean;</p><p> value:Integer;</p><p><b> begin</b></p><p> sign:=fals
69、e; //標(biāo)準(zhǔn)前面是否選擇查詢條件</p><p> with mydata.query_stuff do</p><p><b> begin</b></p><p><b> close;</b></p><p> with sql do<
70、;/p><p><b> begin</b></p><p><b> clear;</b></p><p> add('select * from 員工資料表');</p><p> if (checkcode.Checked ) then //如果選擇查詢工號(hào)</p
71、><p><b> begin</b></p><p> add('where 員工號(hào)=:code'); //添加查詢條件</p><p> ParamByName('code').AsString:=trim(code.text);</p><p> sign:=true;<
72、;/p><p><b> end;</b></p><p> if checkname.Checked then //判斷是否選擇名字查詢</p><p><b> begin</b></p><p> if sign then //如果已經(jīng)有其他條件查詢
73、,則用and還是where</p><p><b> begin</b></p><p> add('and 員工名=:name');</p><p><b> end else</b></p><p><b> begin</b></p>
74、<p> add('where 員工名=:name');</p><p> sign:=true;</p><p><b> end;</b></p><p> ParamByName('name').AsString:=trim(stuffname.text);</p><
75、;p><b> end;</b></p><p> if checksex.Checked then</p><p><b> begin</b></p><p> if man.Checked then</p><p><b> begin</b></
76、p><p><b> value:=1;</b></p><p><b> end else</b></p><p><b> begin</b></p><p><b> value:=0;</b></p><p><b
77、> end;</b></p><p> if sign then</p><p><b> begin</b></p><p> add('and 性別=:sex');</p><p><b> end else</b></p><p&
78、gt;<b> begin</b></p><p> add('where 性別=:sex');</p><p> sign:=true;</p><p><b> end;</b></p><p> ParamByName('sex').AsInteger
79、:=value;</p><p><b> end;</b></p><p> if checkage.Checked then</p><p><b> begin</b></p><p> if sign then</p><p><b> begin
80、</b></p><p> add('and 年齡=:age');</p><p><b> end else</b></p><p><b> begin</b></p><p> add('where 年齡=:age');</p>
81、<p> sign:=true;</p><p><b> end;</b></p><p> ParamByName('age').AsString:=trim(age.text);</p><p><b> end;</b></p><p> if chec
82、ktime.Checked then</p><p><b> begin</b></p><p> if endtime.Date<starttime.Date then</p><p><b> begin </b></p><p> showmessage('結(jié)束時(shí)間不能
83、小于開始時(shí)間');</p><p><b> end else</b></p><p><b> begin</b></p><p> if sign then</p><p><b> begin</b></p><p> add(&
84、#39;and');</p><p><b> end else</b></p><p><b> begin</b></p><p> add('where');</p><p> sign:=true;</p><p><b>
85、 end;</b></p><p> add('合同開始時(shí)間>=:sdata and 合同結(jié)束時(shí)間<=:edate');</p><p> ParamByName('sdate').AsString:=datetostr(starttime.Date);</p><p> ParamByName('
86、;edate').AsString:=datetostr(endtime.Date);</p><p><b> end;</b></p><p><b> end;</b></p><p> if checkstate.Checked then</p><p><b>
87、begin</b></p><p> if sign then</p><p><b> begin</b></p><p> add('and 工作狀態(tài)=:state');</p><p><b> end else</b></p><p&g
88、t;<b> begin</b></p><p> add('where 工作狀態(tài)=:state');</p><p> sign:=true;</p><p><b> end;</b></p><p> ParamByName('state').AsSt
89、ring:=trim(jobstate.Text);</p><p><b> end;</b></p><p> if checkaddress.Checked then</p><p><b> begin</b></p><p> if sign then</p><
90、;p><b> begin</b></p><p> add('and 住址=:address');</p><p><b> end else</b></p><p><b> begin</b></p><p> add('where
91、 住址=:address');</p><p> sign:=true;</p><p><b> end;</b></p><p> ParamByName('address').AsString:=trim(address.Text);</p><p><b> end;&l
92、t;/b></p><p> if checktel.Checked then</p><p><b> begin</b></p><p> if sign then</p><p><b> begin</b></p><p> add('and
93、聯(lián)系電話=:telephone');</p><p><b> end else</b></p><p><b> begin</b></p><p> add('where 聯(lián)系電話=:telephone');</p><p> sign:=true;</p&
94、gt;<p><b> end;</b></p><p> ParamByName('telephone').AsString:=trim(telephone.Text);</p><p><b> end;</b></p><p> if checkmobile.Checked th
95、en</p><p><b> begin</b></p><p> if sign then</p><p><b> begin</b></p><p> add('and 手機(jī)=:mobile');</p><p><b> end
96、else</b></p><p><b> begin</b></p><p> add('where 手機(jī)=:mobile');</p><p> sign:=true;</p><p><b> end;</b></p><p> P
97、aramByName('mobile').AsString:=trim(mobile.Text);</p><p><b> end;</b></p><p> if checkmail.Checked then</p><p><b> begin</b></p><p>
98、 if sign then</p><p><b> begin</b></p><p> add('and 郵箱=:mail');</p><p><b> end else</b></p><p><b> begin</b></p>
99、<p> add('where 郵箱=:mail');</p><p> sign:=true;</p><p><b> end;</b></p><p> ParamByName('mail').AsString:=trim(mail.Text);</p><p>&
100、lt;b> end;</b></p><p> if checkremark.Checked then</p><p><b> begin</b></p><p> if sign then</p><p><b> begin</b></p><p
101、> add('and 備注 like :remark ');</p><p><b> end else</b></p><p><b> begin</b></p><p> add('where 備注 like :remark');</p><p>
102、<b> end;</b></p><p> ParamByName('remark').AsString:=trim('%'+remark.Text+ '%');</p><p><b> end;</b></p><p><b> end;</b&
103、gt;</p><p><b> open;</b></p><p><b> end;</b></p><p><b> end;</b></p><p> 4.6更新員工資料子模塊</p><p> 在人事管理系統(tǒng)中更新資料相對(duì)比較頻繁,在
104、實(shí)際使用中,人事更新的操作類型有許多種,但在數(shù)據(jù)庫操作方面來說,只是更新員工資料表,同時(shí)插入相應(yīng)的記錄。因而人事更新操作其實(shí)可以集中在一個(gè)資料更新模塊中,當(dāng)執(zhí)行一些特定的操作,如更改部門職務(wù),則需要在人事調(diào)動(dòng)表添加一條記錄,表明人事結(jié)構(gòu)發(fā)生變化。</p><p> 在執(zhí)行更新操作之前,要先輸入工號(hào),然后判斷該工號(hào)是否存在于數(shù)據(jù)庫中,如果存在,則讀取數(shù)據(jù)庫中的相關(guān)數(shù)據(jù),并將它們顯示在各組件中。 </p>
105、;<p><b> 窗體如圖</b></p><p> 輸入工號(hào)按鈕對(duì)應(yīng)的函數(shù),如下:</p><p> procedure TForm7.BitBtn1Click(Sender: TObject);</p><p> var sign:boolean;</p><p><b> beg
106、in</b></p><p> sign:=false;</p><p> with mydata.Query1 do</p><p><b> begin</b></p><p><b> close;</b></p><p> with sql do
107、</p><p><b> begin</b></p><p><b> clear;</b></p><p> add('select * from 員工資料表 where 員工號(hào)=:code');</p><p> ParamByName('code').
108、AsString:=trim(code.text);</p><p><b> end;</b></p><p><b> open;</b></p><p> if findlast() then //判斷工號(hào)是否存在與數(shù)據(jù)庫中</p><p>&l
109、t;b> begin</b></p><p> stuffname.Text:=FieldByName('員工號(hào)').AsString;</p><p> if (FieldByName('性別').AsInteger=1) then</p><p><b> begin</b><
110、/p><p> man.Checked:=true;</p><p><b> end else</b></p><p><b> begin</b></p><p> man.Checked:=false;</p><p><b> end;</b&g
111、t;</p><p> age.Text:=FieldByName('年齡').AsString;</p><p> partment.Text:=FieldByName('部門').AsString;</p><p> job.Text:=FieldByName('職務(wù)').AsString;</p>
112、;<p> starttime.DateTime:=FieldByName('合同開始時(shí)間').AsDateTime;</p><p> endtime.DateTime:=FieldByName('合同結(jié)束時(shí)間').AsDateTime;</p><p> address.Text:=FieldByName('住址').
113、AsString;</p><p> telephone.Text:=FieldByName('聯(lián)系電話').AsString;</p><p> mobile.Text:=FieldByName('手機(jī)').AsString;</p><p> mail.Text:=FieldByName('郵箱').AsSt
114、ring;</p><p> jobstate.Text:=FieldByName('工作狀態(tài)').AsString;</p><p> remark.Text:=FieldByName('備注').AsString;</p><p><b> end else</b></p><p&g
115、t;<b> begin</b></p><p> showmessage('員工號(hào)不正確');</p><p><b> end;</b></p><p><b> end;</b></p><p><b> end;</b>&
116、lt;/p><p> 輸入工號(hào)后,可以選擇任意項(xiàng)進(jìn)行更新,如果沒有任何選項(xiàng)中,則給出提示信息,不做數(shù)據(jù)庫更新操作,更新按鈕的響應(yīng)函數(shù)及其代碼如下:</p><p> procedure TForm7.UpdatestuffClick(Sender: TObject);</p><p> var sign:boolean;</p><p>&
117、lt;b> begin</b></p><p> sign:=false; //開始無更新選項(xiàng)</p><p> with mydata.Query1 do //使用Query1</p><p><b> begin</b></p&
118、gt;<p><b> close;</b></p><p> with sql do //設(shè)置SQL屬性</p><p><b> begin</b></p><p><b> clear;</b></p><
119、;p> add('update 員工資料表 set'); //開始添加更新資料的SQL語句</p><p> if checkname.Checked then</p><p><b> begin</b></p><p> add('員工名=:name');</p><
120、;p> ParamByName('name').AsString:=trim(stuffname.Text);</p><p> sign:=true;</p><p><b> end;</b></p><p> if Checksex.Checked then</p><p><b
121、> begin</b></p><p> if sign then</p><p> begin //如果前面已經(jīng)有其他字段更新,則需要在賦值語句前加上“,”號(hào)</p><p><b> add(',');</b></p><p><b
122、> end;</b></p><p> sign:=true;</p><p> add('性別=:sex');</p><p> if man.Checked then</p><p><b> begin</b></p><p> ParamByN
123、ame('sex').AsInteger:=1;</p><p><b> end else</b></p><p><b> begin</b></p><p> ParamByName('sex').AsInteger:=0;</p><p><b&g
124、t; end;</b></p><p><b> end;</b></p><p> if checkage.Checked then</p><p><b> begin</b></p><p> if sign then</p><p><b&
125、gt; begin</b></p><p><b> add(',');</b></p><p><b> end;</b></p><p> add('年齡=:age');</p><p> sign:=true;</p><
126、;p> ParamByName('age').AsString:=trim(age.Text);</p><p><b> end;</b></p><p> if checkdepart.Checked then</p><p><b> begin</b></p><p
127、> if sign then</p><p><b> begin</b></p><p><b> add(',');</b></p><p><b> end;</b></p><p> sign:=true;</p><
128、p> add('部門=:depart');</p><p> ParamByName('depart').AsString:=trim(partment.Text);</p><p><b> end;</b></p><p> if checkjob.Checked then</p>
129、<p><b> begin</b></p><p> if sign then</p><p><b> begin</b></p><p><b> add(',');</b></p><p><b> end;</b&
130、gt;</p><p> sign:=true;</p><p> add('職務(wù)=:job');</p><p> ParamByName('job').AsString:=trim(job.Text);</p><p><b> end;</b></p><
131、p> if checkstart.Checked then</p><p><b> begin</b></p><p> if sign then</p><p><b> begin</b></p><p><b> add(',');</b>
132、;</p><p><b> end;</b></p><p> sign:=true;</p><p> add('合同開始時(shí)間=:startdate');</p><p> ParamByName('startdate').AsString:=datetostr(startti
133、me.Date);</p><p><b> end;</b></p><p> if checkend.Checked then</p><p><b> begin</b></p><p> if sign then</p><p><b> begi
134、n</b></p><p><b> add(',');</b></p><p><b> end;</b></p><p> sign:=true;</p><p> add('合同結(jié)束時(shí)間=:endtime');</p><
135、p> ParamByName('endtime').AsString:=datetostr(endtime.Date);</p><p><b> end;</b></p><p> if checkstate.Checked then</p><p><b> begin</b></p
136、><p> if sign then</p><p><b> begin</b></p><p><b> add(',');</b></p><p><b> end;</b></p><p> sign:=true;</
137、p><p> add('工作狀態(tài)=:state');</p><p> ParamByName('state').AsString:=trim(jobstate.Text);</p><p><b> end;</b></p><p> if checkaddress.Checked
138、then</p><p><b> begin</b></p><p> if sign then</p><p><b> begin</b></p><p><b> add(',');</b></p><p><b&g
139、t; end;</b></p><p> sign:=true;</p><p> add('住址=:address');</p><p> ParamByName('address').AsString:=trim(address.Text);</p><p><b> end
140、;</b></p><p> if checktel.Checked then</p><p><b> begin</b></p><p> if sign then</p><p><b> begin</b></p><p><b> a
141、dd(',');</b></p><p><b> end;</b></p><p> sign:=true;</p><p> add('聯(lián)系電話=:telephone');</p><p> ParamByName('telephone').AsSt
142、ring:=trim(telephone.Text);</p><p><b> end;</b></p><p> if checkmobile.Checked then</p><p><b> begin</b></p><p> if sign then</p><
143、;p><b> begin</b></p><p><b> add(',');</b></p><p><b> end;</b></p><p> sign:=true;</p><p> add('手機(jī)=:mobile');
144、</p><p> ParamByName('mobile').AsString:=trim(mobile.Text);</p><p><b> end;</b></p><p> if checkmail.Checked then</p><p><b> begin</b&g
145、t;</p><p> if sign then</p><p><b> begin</b></p><p><b> add(',');</b></p><p><b> end;</b></p><p> sign:=tr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設(shè)計(jì)--人事管理系統(tǒng)
- 人事管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--人事管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)----人事管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)——人事管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)(人事管理系統(tǒng))
- 數(shù)據(jù)庫課程設(shè)計(jì)--人事管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)—人事管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)---人事管理系統(tǒng)
- 人事管理系統(tǒng)_數(shù)據(jù)庫課程設(shè)計(jì)
- 人事管理系統(tǒng)課程設(shè)計(jì)(數(shù)據(jù)庫)
- 數(shù)據(jù)庫人事管理系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--人事管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--人事管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--人事管理系統(tǒng)
- 人事管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)------人事管理系統(tǒng)設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)—人事管理
- 數(shù)據(jù)庫原理課程設(shè)計(jì)---人事管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告--人事管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論