

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 一、引言</b></p><p> 1.1 選題目的及意義 人事管理系統是一個比較復雜的工作,管理人事要跟公司的具體情況結合起來。一般說來,公司都會分比較多的部門,每一個員工都屬于一個部門,擔任不同的職務,在人事管理系統時都要考慮各種情況。在現實生活中,公司部門的調整,員工的聘請、辭退、升遷是很平常見,為了了解各種情況,在數據庫中不僅要保存員工的基本
2、資料,同時這些變動也要能反映到數據庫中。</p><p> 作為計算機應用的一部分,使用計算機對人事進行管理,具有著手工管理所無法比擬的優(yōu)點.例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高商場人事管理的效率,也是科學化、正規(guī)化管理的重要條件。</p><p> 1.2 主要內容概要</p><p> 經過簡單的
3、分析,初步確定系統的主要功能:</p><p> ?。?)友好的用戶界面,操作簡單。</p><p> ?。?)具有良好的安全措施,能夠保證系統數據不被非法使用。</p><p> (3)按照某種條件,查詢、統計符合條件的員工信息。</p><p> ?。?)能動態(tài)更新部門,人事資料。</p><p> 1.3系統
4、功能結構圖及其相關模塊描述</p><p> 功能模塊名:員工資料管理模塊</p><p> 模塊功能:作為本系統的核心模塊,為了方便處理,人事變更如調動、離職等操作都放在這個模塊的修改中,當然在實用系統中,這些功能可能會獨立實現。</p><p> 功能模塊名:數據庫管理模塊</p><p> 模塊功能:主要實現數據庫備份。<
5、/p><p> 注:由于篇幅有限,本課程設計只實現了具有代表性和在系統中占核心地位的員工資料管理模塊,同時也講解了如何實現數據庫備份。</p><p> 1.4系統的數據字典</p><p> 員工基本資料(描述員工的考勤信息,便于查詢、操作):員工號,員工名,性別,</p><p> 年齡,部門,職務,合同開始時間結束時間,工作狀態(tài),住
6、址,聯系電話,手機,</p><p><b> 郵箱,備注</b></p><p> 人事更新表(描述員工的人事變動信息):記錄號、工號、原部門、新部門、原職務、新職務、操作、日期</p><p> 部門表(描述員工所在部門):部門號、部門名稱、上級部門</p><p> 職務表(描述員工所屬部門):職務<
7、/p><p> 二、 數據庫概念模型設計</p><p> 2.1數據實體—關系圖</p><p> 系統的概念結構設計設計就是將需求分析得到的用戶需求抽象為信息結構即概念模型的過程。設計概念結構通常有四類方法,它們分別是自頂向下、自底向下、逐步擴張、混合策略。在本系統中把需求分析中得到的數據圖抽象,通過選擇局部應用、逐一設計分E-R圖,設計出人事管理系統的概念模
8、型,用E-R模型來描述概念結構。人事管理系統實體關系E-R圖:</p><p><b> 2.2數據實體描述</b></p><p> 用戶密碼表(用戶名、用戶密碼、用戶權限)</p><p> 員工資料表(員工號,員工名,性別,年齡,部門,職務,合同開始時間結束時間,工作 狀態(tài),住址,聯系電話,手機,郵箱,備注)</p&g
9、t;<p> 人事更新表(記錄號、工號、原部門、新部門、原職務、新職務、操作、日期)</p><p> 部門表(部門號、部門名稱、上級部門)</p><p><b> 職務表(職務)</b></p><p> 三、 數據庫邏輯模型設計</p><p> 邏輯結構設計是獨立于任何一種數據模型的信息結
10、構。邏輯結構設計的任務就是把概念結構設計階段設計好的基本E-R圖轉換為與用戶選用DBMS產品所支持的數據模型相符合的邏輯結構。</p><p> 根據前面的概念結構設計出來的E-R圖,將實體間的聯系轉換為關系模式,本系統通過E-R圖轉換成的關系模式如下:</p><p> 用戶密碼表用戶名 char 30</p><p> 用戶密碼
11、 char 30</p><p> 用戶權限 char 30</p><p><b> 四、系統的實現</b></p><p><b> 4.1設計封面</b></p><p> 封面窗體是用戶在登錄系統之前,為減緩用戶等待產生的煩躁情緒,設計的漂
12、亮畫面,當程序啟動完成后。此畫面自動消失。要完成此封面,需要在application項目文件編寫如下代碼:</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的選項中將from1設成main from。</p><p> 在項目中新建一個DataModule設計器,更改其名Mydata,添加Database組件,datasoure組件,Query組件進行數據庫連接完成前后臺的連接操作。&l
14、t;/p><p> 4.2 設計登錄模塊</p><p> 設置登錄界面是保障系統安全的一種手段,一般的數據應用系統都需要進行登錄才能進入系統。在這個模塊里,主要處理的是輸入的用戶名和密碼,程序根據用戶名和密碼編寫SQL語句,然后執(zhí)行,查詢該用戶名和密碼是否與用戶密碼表的某條記錄相符。</p><p> 新建一個工程,在窗體中添加控件,然后調整界面,如圖:<
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代碼,使用參數化方法,注意在參數前面一定要用:號</p><p> Add('select *from 用戶密碼表 where 用戶名=:uname and 用戶密碼=:upasswor
17、d');</p><p><b> //給各參數賦值</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 //判斷查詢結果是否為空</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('用戶名或密碼錯誤,請重新輸入');</p><p><b> x:=x+1;</b></p><p> if x=3 then</p><p><b> begin</b></p><p> showmessag
21、e('密碼輸入錯誤三次,程序退出');</p><p> application.terminate;</p><p> 有時用戶在登錄系統時會忘記自己的密碼這時就需要修改以前使用的密碼,建立新密碼,所以設計了密碼修改窗體如圖</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+''',用戶權限='
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('服務器忙,請重試!');</p><p><b> end;</b></p><p> 如有其它外來用戶需要訪問系統就需要進行
28、注冊,建立注冊新用戶窗體如下</p><p> 雙擊提交按鈕建立如下響應事件</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代碼,使用參數化方法,注意在參數前面一定要用:號</p><p> Add('select *from 用戶密碼表 where 用戶名=:uname
30、 ');</p><p><b> //給各參數賦值</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 //判斷查詢結果是否為空</p><p><b> begin</b></p><p> showmessage('該用戶已存在 ,請重新輸入')</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('請輸入完整信息') }</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('注冊成功');</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設計主窗體</b></p><p> 當登錄成功后,進入主窗口。新建一個form3。窗體如圖: </p><p> 單擊用戶資料模塊進入員工資料管理模塊。建立它的響應函數,添加代碼如下:</p><p>
39、; if not assigned(form4) then</p><p> form4:=tform4.create(self);</p><p> form4.show;</p><p> 4.4設計員工資料管理模塊</p><p> 在該窗體中設計了員工資料表和員工狀態(tài)表的主細表主要是為了在員工資料表中選擇某一條記錄</
40、p><p> 時,員工狀態(tài)表能夠相應顯示該員工的其他信息,方便用戶進行對員工的了解管理。窗體中其他按鈕則是為了進入相應員工管理模塊。</p><p><b> 單擊添加用戶子模塊</b></p><p> 由于這個模塊的數據結構比較復雜,先來構建員工子模塊。</p><p> 新建一個form對象,添加需要的組件,窗
41、口如圖:</p><p> 圖中的數據輸入框有文本框,單選框,組合框等,Delphi中的組件相對容易控制,可以方便的將各控件的內容讀取出來。各控件的屬性及類型,如表格:</p><p> 部門和職務對應的組合框的內容都是通過數據表的內容動態(tài)更新,添加員工資料時可以直接在組合框里選擇。工作狀態(tài)輸入框雖然也是組合框,但它的內容是在程序中設定,主要是在職,離職等一些相對固定的狀態(tài)。</
42、p><p> 合同開始時間和合同結束時間的輸入框是時間日期拾取器,DataTimePicker,使用這個控件的Date屬性可以獲取的日期,然后調用Datetostr函數把他轉化成字符串。</p><p> 備注對應的輸入框是一個多行文本輸入框memo控件,它與一般的文本輸入框的區(qū)別是可以多行輸入</p><p> 實現“添加用戶”按鈕的響應函數,程序如下:<
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、斷輸入內容是否完整,如果不完整則要求用戶輸入完整后在執(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('請輸入完整資料');</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 員工號=: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、;該工號已經有人使用,請重新輸入工號');</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> 清除輸入的函數代碼如下:</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> 查詢員工并不需要根據所有字段進行查詢,有時可能是查詢所有,有時可能只需要對某幾
67、個字段條件進行查詢,這就是需要對SQL語句進行合適的處理。在條件選擇上,可以使用Cleck Box組件進行選擇判斷,每選擇一項,則在SQL語句中添加一個條件,查詢子模塊的窗體,如圖:</p><p> 在查詢子模塊窗體內容與添加員工子模塊類似,只是在添加員工子模塊中的Label組件改為Check Box組件。</p><p> 雙擊查詢按鈕建立它的響應函數,如下:</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; //標準前面是否選擇查詢條件</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 //如果選擇查詢工號</p
71、><p><b> begin</b></p><p> add('where 員工號=: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 //如果已經有其他條件查詢
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('結束時間不能
83、小于開始時間');</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('合同開始時間>=:sdata and 合同結束時間<=: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、聯系電話=:telephone');</p><p><b> end else</b></p><p><b> begin</b></p><p> add('where 聯系電話=: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 手機=:mobile');</p><p><b> end
96、else</b></p><p><b> begin</b></p><p> add('where 手機=: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> 在人事管理系統中更新資料相對比較頻繁,在
104、實際使用中,人事更新的操作類型有許多種,但在數據庫操作方面來說,只是更新員工資料表,同時插入相應的記錄。因而人事更新操作其實可以集中在一個資料更新模塊中,當執(zhí)行一些特定的操作,如更改部門職務,則需要在人事調動表添加一條記錄,表明人事結構發(fā)生變化。</p><p> 在執(zhí)行更新操作之前,要先輸入工號,然后判斷該工號是否存在于數據庫中,如果存在,則讀取數據庫中的相關數據,并將它們顯示在各組件中。 </p>
105、;<p><b> 窗體如圖</b></p><p> 輸入工號按鈕對應的函數,如下:</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 員工號=: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 //判斷工號是否存在與數據庫中</p><p>&l
109、t;b> begin</b></p><p> stuffname.Text:=FieldByName('員工號').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('職務').AsString;</p>
112、;<p> starttime.DateTime:=FieldByName('合同開始時間').AsDateTime;</p><p> endtime.DateTime:=FieldByName('合同結束時間').AsDateTime;</p><p> address.Text:=FieldByName('住址').
113、AsString;</p><p> telephone.Text:=FieldByName('聯系電話').AsString;</p><p> mobile.Text:=FieldByName('手機').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('員工號不正確');</p><p><b> end;</b></p><p><b> end;</b></p><p><b> end;</b>&
116、lt;/p><p> 輸入工號后,可以選擇任意項進行更新,如果沒有任何選項中,則給出提示信息,不做數據庫更新操作,更新按鈕的響應函數及其代碼如下:</p><p> procedure TForm7.UpdatestuffClick(Sender: TObject);</p><p> var sign:boolean;</p><p>&
117、lt;b> begin</b></p><p> sign:=false; //開始無更新選項</p><p> with mydata.Query1 do //使用Query1</p><p><b> begin</b></p&
118、gt;<p><b> close;</b></p><p> with sql do //設置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 //如果前面已經有其他字段更新,則需要在賦值語句前加上“,”號</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('職務=: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('合同開始時間=: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('合同結束時間=: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('聯系電話=: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('手機=: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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數據庫課程設計--人事管理系統
- 人事管理系統數據庫課程設計
- 數據庫課程設計--人事管理系統
- 數據庫課程設計----人事管理系統
- 數據庫課程設計——人事管理系統
- 數據庫課程設計(人事管理系統)
- 數據庫課程設計--人事管理系統
- 數據庫課程設計—人事管理系統
- 數據庫課程設計---人事管理系統
- 人事管理系統_數據庫課程設計
- 人事管理系統課程設計(數據庫)
- 數據庫人事管理系統課程設計
- 數據庫課程設計--人事管理系統
- 數據庫課程設計--人事管理系統
- 數據庫課程設計--人事管理系統
- 人事管理系統數據庫課程設計
- 數據庫課程設計------人事管理系統設計
- 數據庫課程設計—人事管理
- 數據庫原理課程設計---人事管理系統
- 數據庫課程設計報告--人事管理系統
評論
0/150
提交評論