2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論