![第9章企業(yè)工資管理系統(tǒng)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/34c4ee3c-1346-49df-90b1-dccefcafbde2/34c4ee3c-1346-49df-90b1-dccefcafbde21.gif)
![第9章企業(yè)工資管理系統(tǒng)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/34c4ee3c-1346-49df-90b1-dccefcafbde2/34c4ee3c-1346-49df-90b1-dccefcafbde22.gif)
![第9章企業(yè)工資管理系統(tǒng)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/34c4ee3c-1346-49df-90b1-dccefcafbde2/34c4ee3c-1346-49df-90b1-dccefcafbde23.gif)
![第9章企業(yè)工資管理系統(tǒng)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/34c4ee3c-1346-49df-90b1-dccefcafbde2/34c4ee3c-1346-49df-90b1-dccefcafbde24.gif)
![第9章企業(yè)工資管理系統(tǒng)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/34c4ee3c-1346-49df-90b1-dccefcafbde2/34c4ee3c-1346-49df-90b1-dccefcafbde25.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、上一次課講到如何減少程序錯(cuò)誤、測(cè)試調(diào)試程序、連編程序和發(fā)布程序。請(qǐng)同學(xué)們回顧這樣兩個(gè)問(wèn)題:1.發(fā)布程序需要哪些文件?2.減少程序錯(cuò)誤的方法有哪些?可執(zhí)行程序和數(shù)據(jù)庫(kù)文件;vfp運(yùn)行庫(kù)文件(vfp6r.dll和vfp6rchs.dll);使用的外部庫(kù)或com組件文件。備份原始文件;檢查介質(zhì)完整性;隔離測(cè)試環(huán)境;將應(yīng)用程序分割成單獨(dú)工作模塊;保護(hù)內(nèi)存變量;不要對(duì)運(yùn)行環(huán)境進(jìn)行假設(shè);逐步測(cè)試。上一次課主要學(xué)習(xí)的內(nèi)容本章主要介紹如何使用vfp建立企業(yè)工資管理系統(tǒng)。內(nèi)容包括功能設(shè)計(jì)、數(shù)據(jù)庫(kù)和表設(shè)計(jì),自定義函數(shù)、多種方式顯示數(shù)據(jù)、表單之間的數(shù)據(jù)傳遞、數(shù)據(jù)緩沖、菜單和工具欄協(xié)調(diào)等。第第9章章.企業(yè)工資管理系統(tǒng)
2、企業(yè)工資管理系統(tǒng)9.1系統(tǒng)功能設(shè)計(jì)系統(tǒng)功能設(shè)計(jì)企業(yè)工資管理系統(tǒng)信息管理信息管理信息管理信息管理基礎(chǔ)信息設(shè)置個(gè)人所得稅率員工信息管理部門信息管理工資統(tǒng)計(jì)發(fā)放發(fā)放記錄查詢系統(tǒng)登錄用戶管理修改密碼關(guān)于系統(tǒng)系統(tǒng)設(shè)置功能模塊圖運(yùn)行salary.exe,完成系統(tǒng)登錄,用戶名:admin,密碼:sysadmin,打開(kāi)系統(tǒng)主表單,如下圖:包含菜單、工具欄、狀態(tài)欄。9.1.1系統(tǒng)管理模塊系統(tǒng)管理模塊系統(tǒng)管理功能下面的系統(tǒng)設(shè)置用于錄入公司名稱、個(gè)稅起征點(diǎn)。.系統(tǒng)設(shè)置系統(tǒng)設(shè)置信息設(shè)置-所得稅率:設(shè)置稅率、起征點(diǎn),錄入工資可以計(jì)算個(gè)人所得稅額。9.1.2信息設(shè)置模塊信息設(shè)置模塊用于設(shè)置學(xué)歷、職務(wù)、民族、政治面貌,這些
3、信息在員工信息設(shè)置、懲罰、獎(jiǎng)勵(lì)記錄管理時(shí)作為選項(xiàng)。信息設(shè)置信息設(shè)置.基礎(chǔ)信息基礎(chǔ)信息 員工管理-部門信息:只支持一級(jí)部門,可以在表格中查看屬于該部門的員工信息。9.1.3員工管理員工管理該表單可以完成瀏覽、新增、修改、刪除員工信息操作,單擊顯示鈕可以改變表格中顯示方式。員工管理員工管理.員工信息員工信息在員工信息表單中雙擊員工圖標(biāo)可以調(diào)出本表單。.員工信息設(shè)定員工信息設(shè)定工資管理-工資統(tǒng)計(jì)發(fā)放:“統(tǒng)計(jì)”鈕用于統(tǒng)計(jì)員工工資,系統(tǒng)日期是10號(hào)前統(tǒng)計(jì)上個(gè)月工資,28號(hào)以后統(tǒng)計(jì)本月工資。9.1.4工資管理工資管理 錄入經(jīng)手人后單擊“發(fā)放”可完成工資發(fā)放的記錄,選中打印工資條后可打印工資條。工資管理工資
4、管理.工資統(tǒng)計(jì)發(fā)放工資統(tǒng)計(jì)發(fā)放.工資條工資條可按照員工編號(hào)、姓名、部門、工資月份查詢工資發(fā)放記錄,結(jié)果可打印。工資管理工資管理.工資發(fā)放查詢工資發(fā)放查詢企業(yè)工資管理系統(tǒng)包括部門信息、員工信息、系統(tǒng)管理等操作,使用的表較多,以下分模塊說(shuō)明。9.2數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)管理主要包括系統(tǒng)設(shè)置、用戶管理、系統(tǒng)登錄和修改密碼等功能,主要涉及2個(gè)表:系統(tǒng)設(shè)置表(sysinfo)和用戶信息表(users)。9.2.1系統(tǒng)管理系統(tǒng)管理1.系統(tǒng)設(shè)置表系統(tǒng)設(shè)置表字段名類型寬度 可否為空 說(shuō)明個(gè)稅起征點(diǎn) 整型4否普通索引公司名稱字符型 40否普通索引系統(tǒng)設(shè)置表(sysinfo)用戶信息表(users)2.用戶信息
5、表用戶信息表字段名類型寬度 可否為空說(shuō)明用戶名字符20否普通索引密碼字符20否普通索引姓名字符20否權(quán)限整型4否默認(rèn)值1信息設(shè)置模塊中包括學(xué)歷名稱、職務(wù)名稱、民族名稱、和政治面貌名稱、個(gè)人所得稅率等。9.2.2信息設(shè)置信息設(shè)置1.學(xué)歷名稱學(xué)歷名稱學(xué)歷名稱表(學(xué)歷名稱表(academy)字段名字段名類型類型 寬度寬度可否為空可否為空說(shuō)明說(shuō)明學(xué)歷c20否主索引字段2.職務(wù)名稱職務(wù)名稱職務(wù)名稱表(職務(wù)名稱表(duty)字段名字段名類型類型 寬度寬度可否為空可否為空說(shuō)明說(shuō)明職務(wù)名稱c20否主索引字段3.民族名稱民族名稱民族名稱表(民族名稱表(people)字段名字段名類型類型 寬度寬度可否為空可否為空
6、說(shuō)明說(shuō)明民族c20否主索引字段4.政治面貌表政治面貌表政治面貌表(政治面貌表(political)字段名字段名類型類型 寬度寬度可否為空可否為空說(shuō)明說(shuō)明政治面貌c20否主索引字段5.所得稅率表所得稅率表所得稅率表(所得稅率表(taxrate)字段名字段名類型類型寬度寬度可否為空可否為空說(shuō)明說(shuō)明編號(hào)整數(shù)4否主索引級(jí)數(shù)數(shù)值2否候選索引工資下限浮動(dòng) 10,1工資上限浮動(dòng) 10,1所得稅率浮動(dòng) 10,1速算扣除數(shù) 浮動(dòng) 10,1員工管理模塊數(shù)據(jù)表主要有個(gè)人信息和工資信息、部門信息表。9.2.3員工管理員工管理1.部門信息部門信息部門信息表(部門信息表(department)字段名字段名類型類型 寬度寬
7、度可否為空可否為空說(shuō)明說(shuō)明部門編號(hào)c2否主索引字段部門名稱c20否2.員工信息員工信息-1/2員工信息表(員工信息表(personnel)字段名字段名類型類型 寬度寬度可否為空可否為空說(shuō)明說(shuō)明員工編號(hào)c4否主索引字段姓名c30否性別c2否默認(rèn)值:男婚否c4否默認(rèn)值:未婚生日c8部門n2否普通索引職務(wù)c20民族c40政治面貌c20學(xué)歷c20 .員工信息員工信息-2/2員工信息表(員工信息表(personnel)-續(xù)上頁(yè)續(xù)上頁(yè)字段名字段名類型類型 寬度寬度可否為空可否為空說(shuō)明說(shuō)明畢業(yè)學(xué)校c40電話c11掩碼:99999999999入職日期d8合同期限d8通訊地址c60郵政編碼c6掩碼:999999
8、身份證號(hào)c18掩碼 :999999999999999999備注m4密碼c20否3.員工工資員工工資員工信息表(員工信息表(personnel)字段名字段名類型類型 寬度寬度可否為空可否為空說(shuō)明說(shuō)明員工編號(hào)字符4否主索引字段基本工資浮動(dòng)6,1默認(rèn)值:0.0崗位工資浮動(dòng)6,1默認(rèn)值:0.0浮動(dòng)工資浮動(dòng)6,1默認(rèn)值:0.0獎(jiǎng)金浮動(dòng)6,1默認(rèn)值:0.0交通補(bǔ)貼浮動(dòng)6,1默認(rèn)值:0.0住房補(bǔ)貼浮動(dòng)6,1默認(rèn)值:0.0伙食補(bǔ)貼浮動(dòng)6,1默認(rèn)值:0.0失業(yè)保險(xiǎn)浮動(dòng)6,1默認(rèn)值:0.0醫(yī)療保險(xiǎn)浮動(dòng)6,1默認(rèn)值:0.0養(yǎng)老保險(xiǎn)浮動(dòng)6,1默認(rèn)值:0.0公積金浮動(dòng)6,1默認(rèn)值:0.0工資管理包括工資統(tǒng)計(jì)發(fā)放和發(fā)放查
9、詢,涉及數(shù)據(jù)表為:工資記錄表。該表用來(lái)保存員工工資統(tǒng)計(jì)的發(fā)放情況。9.2.4工資管理工資管理.工資記錄表工資記錄表-1/2工資記錄表(工資記錄表(polist)字段名字段名類型類型 寬度寬度可否為空可否為空說(shuō)明說(shuō)明結(jié)算編號(hào)字符6否主索引員工編號(hào)字符4否普通索引工資月份字符6否普通索引基本工資浮動(dòng)6,1崗位工資浮動(dòng)6,1浮動(dòng)工資浮動(dòng)6,1獎(jiǎng)金浮動(dòng)6,1交通補(bǔ)貼浮動(dòng)6,1住房補(bǔ)貼浮動(dòng)6,1伙食補(bǔ)貼浮動(dòng)6,1失業(yè)保險(xiǎn)浮動(dòng)6,1醫(yī)療保險(xiǎn)浮動(dòng)6,1.工資記錄表工資記錄表-2/2工資記錄表(工資記錄表(polist)-續(xù)上頁(yè)續(xù)上頁(yè)字段名字段名類型類型 寬度寬度可否為空可否為空說(shuō)明說(shuō)明養(yǎng)老保險(xiǎn)浮動(dòng)6,1公積
10、金浮動(dòng)6,1獎(jiǎng)勵(lì)金額浮動(dòng)6,1懲罰金額浮動(dòng)6,1工資總額浮動(dòng)6,1應(yīng)交金額浮動(dòng)6,1應(yīng)繳稅額浮動(dòng)6,1所得稅額浮動(dòng)6,1實(shí)發(fā)金額浮動(dòng)6,1結(jié)算狀態(tài)字符默認(rèn)值:否結(jié)算日期日期經(jīng)手人字符企業(yè)工資管理系統(tǒng)中的可視類有:mycmd、mymove、mycontrol、myadmin和moreadmin9.3設(shè)計(jì)可視類設(shè)計(jì)可視類創(chuàng)建企業(yè)工資管理系統(tǒng)項(xiàng)目的步驟創(chuàng)建企業(yè)工資管理系統(tǒng)項(xiàng)目的步驟:文件-新建-項(xiàng)目-新建文件-文件名:salary,保存位置:個(gè)人文件夾-保存。創(chuàng)建企業(yè)工資管理系統(tǒng)數(shù)據(jù)庫(kù)的步驟創(chuàng)建企業(yè)工資管理系統(tǒng)數(shù)據(jù)庫(kù)的步驟:項(xiàng)目管理器-數(shù)據(jù)-數(shù)據(jù)庫(kù)-新建-新建數(shù)據(jù)庫(kù)-文件名:salary,保存位置:
11、個(gè)人文件夾data-保存;創(chuàng)建企業(yè)工資管理系統(tǒng)數(shù)據(jù)表的步驟創(chuàng)建企業(yè)工資管理系統(tǒng)數(shù)據(jù)表的步驟:選擇salary下面的表-新建-新建表-確認(rèn)文件名和保存位置后,依次編輯保存表結(jié)構(gòu)信息9.3.1創(chuàng)建項(xiàng)目與數(shù)據(jù)庫(kù)創(chuàng)建項(xiàng)目與數(shù)據(jù)庫(kù) 步驟步驟:項(xiàng)目管理器/類庫(kù)/新建/類名:mycmd,派生于:commandbutton,存儲(chǔ)于:mytools/確定/在打開(kāi)的類設(shè)計(jì)器編輯按鈕的屬性。屬性屬性:caption=按鈕fontname=楷體_gb2312fontsize=16forecolor=rgb(0,0,0)height=30width=609.3.2創(chuàng)建創(chuàng)建mycmd類類mycmd.mousemovemy
12、cmd.mousemove過(guò)程過(guò)程:lparameters nbutton, nshift,;nxcoord, nycoord*如果按鈕可用if this.enabled = .t. *使用自定義鼠標(biāo)指針 this.mousepointer = 99 *指定自定義鼠標(biāo)指針 this.mouseicon = hhand.curendif在項(xiàng)目管理器中建立左圖所示的類mymove,基于:container。為該類添加四個(gè)mycmd控件對(duì)象。操作方法操作方法:點(diǎn)表單控件中“查看類”/添加/找開(kāi)類庫(kù)mytools/在控件工具欄上找到mycmd,拖畫(huà)到界面。設(shè)置對(duì)象名分別為cmdtop、cmdpre、c
13、mdnxt、cmdbtm,修改對(duì)應(yīng)的captiont和tooltiptext的值如“首記錄”和“到第一條記錄”、“上記錄”和“到上一條記錄”、“下記錄”和“到下一條記錄”、“末記錄”和“到最后一條記錄”。添加事件過(guò)程如下:9.3.3創(chuàng)建創(chuàng)建mymove類類go top&到首記錄thisform.refresh&刷新表單.cmdtop.click*如果到了數(shù)據(jù)表首部if bof() .or. recno() = 1 messagebox(已到首記錄,48,人力資源管理系統(tǒng))else*如果數(shù)據(jù)指針不位于數(shù)據(jù)表首部 skip-1endif*刷新表單thisform.refresh.c
14、mdpre.click*如果記錄指針位于數(shù)據(jù)表末尾if eof() or recno() = reccount() messagebox(已到末記錄,48,人力資源管理系統(tǒng))*如果記錄指針不位于數(shù)據(jù)表末尾else*記錄指針下移 skipendif*刷新表單thisform.refresh.cmdnxt.clickgo bottom &到數(shù)據(jù)表末尾thisform.refresh&刷新表單.cmdbtm.click*如果數(shù)據(jù)表為空或者只有一條記錄if bof() .and. eof() .or. reccount()=1 this.cmdtop.enabled=.f. this.
15、cmdpre.enabled=.f. this.cmdnxt.enabled=.f. this.cmdbtm.enabled=.f. returnendif*如果在記錄指針在數(shù)據(jù)表的末尾if recno()=reccount() .or. eof()this.cmdtop.enabled=.t.this.cmdpre.enabled=.t.this.cmdnxt.enabled=.f.this.cmdbtm.enabled=.f.returnendif.mymove.refresh*如果記錄指針在數(shù)據(jù)表的首部if recno()=1 .or. bof()this.cmdtop.enabled=
16、.f.this.cmdpre.enabled=.f.this.cmdnxt.enabled=.t.this.cmdbtm.enabled=.t.returnendif*如果記錄指針不在數(shù)據(jù)表的首部*也不在尾部this.cmdtop.enabled=.t.this.cmdpre.enabled=.t.this.cmdnxt.enabled=.t.this.cmdbtm.enabled=.t.類名:myadmin 基類:container存儲(chǔ):mytools步驟步驟:在該類的設(shè)計(jì)器窗口內(nèi)添加7個(gè)mycmd類對(duì)象。對(duì)象名依次為:cmdnew/cmdmodify/cmddel/cmdser/cmdsa
17、ve/cmdccl/cmdexit。caption、tooltiptext屬性值參照下圖自行定義。該類中只添加“退出”鈕的click過(guò)程,其他為空。* *cmdexit.clickcmdexit.clicklocal ynyn=messagebox(確定退出,4+32,本系統(tǒng))if yn=6thisform.releaseendif9.3.4創(chuàng)建創(chuàng)建myadmin類類類名:moreadmin 基類:container存儲(chǔ):mytools步驟步驟:在該類的設(shè)計(jì)器窗口內(nèi)添加7個(gè)mycmd類對(duì)象。對(duì)象名依次為:cmdnew/cmdmodify/cmddel/cmdser/cmdsave/cmdccl
18、/cmdexit。caption、tooltiptext屬性值參照左圖自行定義。該類中只添加“退出”鈕的click過(guò)程,其他為空。* *cmdexit.clickcmdexit.clicklocal ynyn=messagebox(確定退出,4+32,本系統(tǒng))if yn=6thisform.releaseendif9.3.5創(chuàng)建創(chuàng)建moreadmin類類類名:mycontrol基類:container類庫(kù):mytools創(chuàng)建步驟創(chuàng)建步驟:向該類中添加5個(gè)mycmd對(duì)象,對(duì)象名:cmdnew,cmdmodify,cmddelete,cmdrefresh,cmdexit,分別設(shè)置其caption,
19、tooltiptext屬性值“新增、增加新記錄”、“修改、修改當(dāng)前記錄”、“刪除、刪除當(dāng)前記錄”、“刷新、刷新顯示”、“退出、退出當(dāng)前表單”9.3.6創(chuàng)建創(chuàng)建mycontrol類類企業(yè)工資管理系統(tǒng)需要自定義的函數(shù)包括:autoinc字符串?dāng)?shù)自動(dòng)增1datetostring日期轉(zhuǎn)換為yyyy/mm/dd形式的串encode將給定的串與數(shù)值異或后返回itaxcomp計(jì)算個(gè)人所得稅9.4創(chuàng)建通用函數(shù)創(chuàng)建通用函數(shù)*“autoinc”函數(shù)* 作用:使“000000xx”形式的編號(hào)自動(dòng)加1* 接收“0000xx”形式的字符串作為參數(shù)* 字符串長(zhǎng)度限制為109.4.1autoincfunction auto
20、inc(ncode)*獲取字符串長(zhǎng)度nlen=len(ncode)*將字符型轉(zhuǎn)換為數(shù)值型,即獲取非0部分的數(shù)值ncode = val(ncode)*非0部分?jǐn)?shù)字加1ncode = ncode + 1*轉(zhuǎn)換為字符型ncode = alltrim(str(ncode)autoinc.prg-1/2*獲取轉(zhuǎn)換后的字符串的長(zhǎng)度nlength = len(ncode)*在數(shù)字之前加上前置“0”nzero=000000000000ncode = substr(nzero,1,nlen-nlength) + ncode*返回結(jié)果return ncodeendfuncautoinc.prg-2/2*“date
21、tostring”函數(shù)* 將日期型數(shù)據(jù)轉(zhuǎn)換為字符串* 接收日期型變量作為參數(shù)9.4.2datetostring*“datetostring”函數(shù)* 將日期型數(shù)據(jù)轉(zhuǎn)換為字符串* 接收日期型變量作為參數(shù)function datetostring(ddate)*默認(rèn)返回空字符串sdate = *如果參數(shù)非空而且為日期型if .not. empty(ddate) .and. vartype(ddate) = d*分別獲取其年、月、日字段nyear = year(ddate)nmonth = month(ddate)datetostring.prg-1/2nday = day(ddate)*組合數(shù)據(jù)sd
22、ate = alltrim(str(nyear)+/+alltrim(str(nmonth)+/+alltrim(str(nday)sdate = +sdate +endif*返回值return sdateendfuncdatetostring.prg-22*函數(shù)encode*作用:對(duì)輸入的指定的字符串進(jìn)行編碼*參數(shù):sstr:要編碼或者解碼的字符串* ncode:編碼或者解碼時(shí)使用的密鑰9.4.3encodefunction encode(sstr,ncode)*聲明需要使用的本地變量local stmpstr,ctempchr,i*stempstr:用來(lái)保存昨時(shí)的編碼或者解碼后的字符串*c
23、tempchr:用來(lái)保存編碼或者解碼后的字符*i:循環(huán)計(jì)數(shù)*對(duì)變量賦初值stempstr = ctempchr = encode.prg-1/2*如果未指定密鑰if ncode = 0ncode = 237endif*對(duì)字符串的每個(gè)字符進(jìn)行編碼for i = 1 to len(alltrim(sstr)ctempchr = bitxor(asc(substr(sstr,i,1),ncode)stempstr = stempstr+ chr(ctempchr)endfor*返回編碼后的結(jié)果return stempstrendfuncencode.prg-2/2*“itaxcomp”函數(shù)*功能:根
24、據(jù)個(gè)人所得稅率表和系統(tǒng)信息表計(jì)算個(gè)個(gè)人所得稅額*參數(shù):nnum,月收入總額* nbeg,個(gè)人所得稅起征點(diǎn),如果該參數(shù)為-1則使用“sysinfo”表的設(shè)置*返回值:個(gè)人所得稅額9.4.4itaxcomp在調(diào)試程序時(shí),應(yīng)該先在表taxrate中錄入如下數(shù)據(jù)。.個(gè)人所得稅率表初始數(shù)據(jù)個(gè)人所得稅率表初始數(shù)據(jù)*“itaxcomp”函數(shù)*功能:根據(jù)個(gè)人所得稅率表和系統(tǒng)信息表計(jì)算個(gè)* 個(gè)人所得稅額*參數(shù):nnum,月收入總額* nbeg,個(gè)人所得稅起征點(diǎn),如果該參數(shù)為-1* 則使用“sysinfo”表的設(shè)置*返回值:個(gè)人所得稅額function itaxcomp(nnum, nbeg)*如果不指定個(gè)人所得
25、稅起征點(diǎn)if nbeg = -1*獲取免稅工資notax = 0itaxcomp.prg-1/4*如果表“sysinfo”沒(méi)有打開(kāi)if !used(sysinfo)*打開(kāi)表use sysinfoselect sysinfo*獲取個(gè)稅起征點(diǎn)notax = sysinfo.個(gè)稅起征點(diǎn)useendif*減去不用計(jì)稅部分nnum = nnum - notaxelseitaxcomp.prg-2/4nnum = nnum - nbegendif*如果工資未到起征點(diǎn)if nnum 工資下限 .and. nnum thisform.maincon.infopage.pagecountspage = 1.添加
26、代碼添加代碼.表單表單basicinfo.init-1/2else*激活指定的選項(xiàng)卡spage = npageendifendif*激活選項(xiàng)卡thisform.maincon.infopage.activepage = spage*刷新表單thisform.refresh.表單表單basicinfo.init-2/2select academyset filter to &清除可能存在的過(guò)濾條件this.datalist.clear &清除列表*循環(huán)在列表框中添加列表項(xiàng)scanthis.datalist.additem(學(xué)歷)endscan*選中第1項(xiàng)if this.datal
27、ist.listcount 0this.datalist.selected(1) = .t.endifthisform.refresh &刷新表單.學(xué)歷設(shè)置頁(yè)面學(xué)歷設(shè)置頁(yè)面academypage.initif .not. empty(this.value)this.parent.cmdgrp.cmdmodify.clickendifdatalist.dblclick*調(diào)用“輸入新值”表單獲取學(xué)歷名稱sstr = do form forms/inputnew with sstr to newvalue*如果沒(méi)有返回學(xué)歷名稱if empty(alltrim(newvalue)returne
28、ndif*檢查要新增的學(xué)歷名稱是否已經(jīng)存在select academycount for 學(xué)歷 = newvalue to recnumcmdnew.click-1/2if recnum 0messagebox(學(xué)歷名稱已經(jīng)存在, 48, 企業(yè)工資管理系統(tǒng))returnendif*更新記錄insert into academy values(newvalue)*更新列表框this.parent.parent.datalist.additem(newvalue)*刷新記錄this.parent.refreshcmdnew.click-2/2*檢查列表框是否為空if this.parent.par
29、ent.datalist.listcount 1messagebox(沒(méi)有可以修改的項(xiàng), 48, 企業(yè)工資管理系統(tǒng))this.parent.cmdnew.setfocusreturnendif*檢查列表框中是否有列表項(xiàng)被選中bsel = .f.nsel = -1sstr = cmdmodify.click-1/4*循環(huán)找出被選擇的列表項(xiàng)for ncnt = 1 to this.parent.parent.datalist.listcount *如果被選中了 if this.parent.parent.datalist.selected(ncnt) *標(biāo)識(shí)被選中,保存其索引值 bsel = .t
30、. nsel = ncnt sstr = this.parent.parent.datalist.list(ncnt) exit endifendforcmdmodify.click-2/4*如果沒(méi)有選中的列表項(xiàng)彈出對(duì)話框if bsel = .f.messagebox(請(qǐng)選擇要修改的列表項(xiàng), 48, 企業(yè)工資管理系統(tǒng))this.parent.parent.datalist.setfocusreturnendif*如果選擇了列表項(xiàng)if bsel = .t. *調(diào)用“輸入新值”對(duì)話框輸入新的值 do form forms/inputnew with sstr to newvalue *如果輸入了新
31、的值cmdmodify.click-3/4 if .not. empty(newvalue) .and. .not. newvalue = sstr *檢查要修改的學(xué)歷名稱是否已經(jīng)存在select academycount for 學(xué)歷 = newvalue to recnumif recnum 1*更新記錄update academy set 學(xué)歷 = newvalue where 學(xué)歷 = sstr*更新列表項(xiàng)this.parent.parent.datalist.list(nsel) = newvalueendif endifendifcmdmodify.click-4/4*檢查列表框是
32、否為空if this.parent.parent.datalist.listcount 0messagebox(有員工使用該選項(xiàng), 48, 企業(yè)工資管理系統(tǒng))returnendifcmddelete.click-4/5*確認(rèn)對(duì)話框yn = messagebox(是否要?jiǎng)h除列表項(xiàng)+ chr(13) + itemname, 4+32 ,企業(yè)工資管理系統(tǒng))if yn = 6*刪除記錄delete from academy where 學(xué)歷 = itemnameselect academypack*刷新顯示this.parent.parent.datalist.removeitem(nsel)endi
33、fcmddelete.click-5/5this.parent.parent.initcmdrefresh.clickselect dutyset filter tothis.datalist.clearscanthis.datalist.additem(職務(wù)名稱)endscanif this.datalist.listcount 1this.datalist.selected(1) = .t.endif.職務(wù)設(shè)置頁(yè)面職務(wù)設(shè)置頁(yè)面dutypage.initif .not. empty(this.value)this.parent.cmdgrp.cmdmodify.clickendifdatal
34、ist.dblclick*調(diào)用“輸入新值”表單獲取職務(wù)名稱sstr = do form forms/inputnew with sstr to newvalue*如果沒(méi)有返回職務(wù)名稱if empty(alltrim(newvalue)returnendif*檢查要新增的學(xué)歷名稱是否已經(jīng)存在select dutycount for 職務(wù)名稱 = newvalue to recnumcmdnew.click-1/2if recnum 0messagebox(職務(wù)名稱已經(jīng)存在, 48, 企業(yè)工資管理系統(tǒng))returnendif*添加記錄insert into duty values(newvalue
35、)*列表框中添加項(xiàng)this.parent.parent.datalist.additem(newvalue)*刷新記錄this.parent.refreshcmdnew.click-2/2*檢查列表框是否為空if this.parent.parent.datalist.listcount 0messagebox(職務(wù)名稱已經(jīng)存在, 48, 企業(yè)工資管理系統(tǒng)) returnelse update duty set 職務(wù)名稱 = newvalue where 職務(wù)名稱 = sstr this.parent.parent.datalist.list(nsel) = newvalueendifendi
36、fendifcmdmodify.click-4/4*檢查列表框是否為空if this.parent.parent.datalist.listcount 0messagebox(有員工使用該選項(xiàng), 48, 企業(yè)工資管理系統(tǒng))returnendif*確認(rèn)對(duì)話框yn = messagebox(是否要?jiǎng)h除列表項(xiàng)+ chr(13) + itemname, 4+32 ,企業(yè)工資管理系統(tǒng))cmddelete.click-4/5if yn = 6*刪除記錄delete from duty where alltrim(職務(wù)名稱) = itemnameselect dutypack*刷新顯示this.parent
37、.parent.datalist.removeitem(nsel)endifcmddelete.click-5/5this.parent.parent.initcmdrefresh.clickselect peopleset filter tothis.datalist.clearscanthis.datalist.additem(民族)endscanif this.datalist.listcount 1this.datalist.selected(1) = .t.endif.民族設(shè)置民族設(shè)置peoplepage.initif .not. empty(this.value)this.pare
38、nt.cmdgrp.cmdmodify.clickendifdatalist.dblclick*調(diào)用“輸入新值”表單獲取民族名稱sstr = do form forms/inputnew with sstr to newvalue*如果沒(méi)有返回民族名稱if empty(alltrim(newvalue)returnendif*檢查要新增的名稱是否已經(jīng)存在select peoplecount for 民族 = newvalue to recnumcmdnew.click-1/2if recnum 0messagebox(民族名稱已經(jīng)存在, 48, 企業(yè)工資管理系統(tǒng))returnendif*添加記
39、錄insert into people values(newvalue)*列表框中添加選項(xiàng)this.parent.parent.datalist.additem(newvalue)*刷新顯示this.parent.refreshcmdnew.click-2/2*檢查列表框是否為空if this.parent.parent.datalist.listcount 0messagebox(民族名稱已經(jīng)存在, 48, 企業(yè)工資管理系統(tǒng)) returnelseupdate people set 民族 = newvalue where 民族 = sstrthis.parent.parent.datalis
40、t.list(nsel) = newvalueendif endifendifcmdmodify.click-4/4*檢查列表框是否為空if this.parent.parent.datalist.listcount 0messagebox(有員工使用該選項(xiàng), 48, 企業(yè)工資管理系統(tǒng))returnendif*確認(rèn)對(duì)話框yn = messagebox(是否要?jiǎng)h除列表項(xiàng)+ chr(13) + itemname, 4+32 ,企業(yè)工資管理系統(tǒng))cmddelete.click-4/5if yn = 6*刪除記錄delete from people where 民族 = itemnameselect
41、peoplepack*刷新顯示this.parent.parent.datalist.removeitem(nsel)thisform.refreshendifcmddelete.click-5/5this.parent.parent.initcmdrefresh.clickselect politicalset filter tothis.datalist.clearscanthis.datalist.additem(政治面貌)endscanif this.datalist.listcount 1this.datalist.selected(1) = .t.endif.政治面貌政治面貌pol
42、iticalpage.initif .not. empty(this.value)this.parent.cmdgrp.cmdmodify.clickendifdatalist.dblclick*調(diào)用“輸入新值”表單獲取職務(wù)名稱sstr = do form forms/inputnew with sstr to newvalue*如果沒(méi)有返回政治面貌名稱if empty(alltrim(newvalue)returnendif*檢查要新增的名稱是否已經(jīng)存在select personnelcount for 政治面貌 = newvalue to recnumcmdnew.click-1/2if
43、recnum 0messagebox(政治面貌名稱已經(jīng)存在, 48, 企業(yè)工資管理系統(tǒng))returnendif*添加記錄insert into political values(newvalue)*列表框中添加選項(xiàng)this.parent.parent.datalist.additem(newvalue)*刷新顯示this.parent.refreshcmdnew.click-2/2*檢查列表框是否為空if this.parent.parent.datalist.listcount 0messagebox(政治面貌已經(jīng)存在, 48, 企業(yè)工資管理系統(tǒng))returnelseupdate polit
44、ical set 政治面貌 = newvalue where 政治面貌 = sstrthis.parent.parent.datalist.list(ncnt) = newvalueendifendifendifcmdmodify.click-4/4*檢查列表框是否為空if this.parent.parent.datalist.listcount 0messagebox(有員工使用該選項(xiàng), 48, 企業(yè)工資管理系統(tǒng))returnendif*確認(rèn)對(duì)話框yn = messagebox(是否要?jiǎng)h除列表項(xiàng)+ chr(13) + itemname, 4+32 ,企業(yè)工資管理系統(tǒng))cmddelete.c
45、lick-4/5if yn = 6*刪除記錄delete from political where 政治面貌 = itemnameselect politicalpack*刷新顯示this.parent.parent.datalist.removeitem(nsel)thisform.refreshendifcmddelete.click-5/5this.parent.parent.initcmdrefresh.click表單名:inputnew添加1個(gè)文本框,2個(gè)mycmd類,屬性其他表單。事件過(guò)程如下:9.5.2創(chuàng)建創(chuàng)建“輸入新值輸入新值”表單表單*獲取表單參數(shù)parameters cst
46、ring*判斷參數(shù)類型*如果沒(méi)有接收到參數(shù)if vartype(cstring) = l*顯示空字符串sstring = else*顯示接收到的字符串sstring = cstringendif*顯示字符串thisform.tvalue.value = sstringinputnew.initreturn thisform.gvalueinputnew.unload*保存用戶輸入的值thisform.gvalue = alltrim(thisform.tvalue.value)*退出表單返回值thisform.releasecmdok.clickthisform.releasecmdexit.
47、click表單名:itrate,將表taxrate和sysinfo添加到數(shù)據(jù)環(huán)境中。在表單中添加1個(gè)容器控件:maincon,在該容器中加入1個(gè)標(biāo)簽和2個(gè)容器控件,其中一個(gè)容器控件中加入5個(gè)標(biāo)簽和1個(gè)列表控件,另一個(gè)容器控件加入2個(gè)標(biāo)簽、2個(gè)文本框和2個(gè)按鈕。9.5.3創(chuàng)建個(gè)人所得稅率表單創(chuàng)建個(gè)人所得稅率表單.列表框控件的設(shè)置列表框控件的設(shè)置*獲取表單中的值iincome = this.parent.txt工資.valueibeg = this.parent.txt起征點(diǎn).value*如果個(gè)稅起征點(diǎn)小于0if ibeg 0messagebox(個(gè)稅起征點(diǎn)錯(cuò)誤, 48, 企業(yè)工資管理系統(tǒng))thi
48、sform.txt起征點(diǎn).value = 0thisform.txt起征點(diǎn).setfocusreturnendif.計(jì)算鈕事件過(guò)程代碼計(jì)算鈕事件過(guò)程代碼cmdcomp.click-1/4*如果收入小于0if iincome 0messagebox(該部門尚員工,不能刪除, 48, 企業(yè)工資管理系統(tǒng))returnendif*清除過(guò)濾條件set filter tocmddelete.click-1/3*確認(rèn)對(duì)話框yn=messagebox(確定刪除,4+32,企業(yè)工資管理系統(tǒng))*如果確認(rèn)if yn=6select department*邏輯刪除delete for 部門編號(hào) = dnothisfo
49、rm.maincon.gridcon.grid1.recordsource = cmddelete.click-2/3*物理刪除packthisform.maincon.gridcon.grid1.recordsource = personnel*檢查是否表空thisform.checkempty*刷新表單thisform.refreshendifcmddelete.click-3/3*部門名稱不能為空if empty(alltrim(thisform.maincon.depcon.txt部門名稱.value)messagebox(部門名稱能為空,48,企業(yè)工資管理系統(tǒng))thisform.tx
50、t部門名稱.setfocusreturnendif*如果數(shù)據(jù)有效,確認(rèn)對(duì)話框yn=messagebox(確定保存,4+32,企業(yè)工資管理系統(tǒng))*如果確認(rèn)cmdsave.click-1/2if yn=6*保存記錄select departmentif(tableupdate(.f.)=.f.) messagebox(保存記錄失敗,48,企業(yè)工資管理系統(tǒng))returnendif*表單進(jìn)入瀏覽狀態(tài)thisform.formmode = browsethisform.setmodethisform.refreshendifcmdsave.click-2/2*確認(rèn)對(duì)話框yn=messagebox(確定取
51、消,4+32,企業(yè)工資管理系統(tǒng))*如果確認(rèn)if yn=6*取消修改select departmenttablerevert(.f.)*-如果表單處理于新增狀態(tài)cmdccl.click-1/2if thisform.formmode = new*-如果原來(lái)的記錄指針位置有效if thisform.oldrecord 1go thisform.oldrecordendifendif*表單進(jìn)入瀏覽狀態(tài)thisform.formmode = browsethisform.setmode*刷新表單thisform.refreshendifcmdccl.click-2/2在該表單中可以分部門瀏覽員工,顯示
52、提供了大圖標(biāo)、小圖標(biāo)、列表和詳細(xì)信息4種方式。9.6.2創(chuàng)建員工信息管理表單創(chuàng)建員工信息管理表單表單名稱表單名稱:pinfo在表單中加入1個(gè)容器maincon、2個(gè)imagelist控件,容器中加入1個(gè)標(biāo)簽、3個(gè)容器(depcon、percon、mycontrol)、depcon中加入1個(gè)標(biāo)簽、1個(gè)treeviewpercon中加入1個(gè)標(biāo)簽、1個(gè)listviewmycontrol加入5個(gè)mycmd對(duì)象1.創(chuàng)建表單創(chuàng)建表單數(shù)據(jù)環(huán)境數(shù)據(jù)環(huán)境:personnel.dbf&員工信息表、department.dbf&部門信息表、系統(tǒng)信息表sysinfo、員工工資表psalary、工資記錄
53、表polist。其中personnel.exclusive=.t.數(shù)據(jù)環(huán)境數(shù)據(jù)環(huán)境listview 控件可使用四種不同視圖顯示項(xiàng)目。通過(guò)此控件,可將項(xiàng)目組成帶有或不帶有列標(biāo)頭的列,并顯示伴隨的圖標(biāo)和文本。 listview控件包括 listitem 和 columnheader 對(duì)象。 columnheaders為列標(biāo)題,listitem 對(duì)象定義 listview 控件中項(xiàng)目的各種特性,listitems對(duì)象可以理解為表中一條記錄,可以使用該對(duì)象引用列表項(xiàng)。 listitems(1).text表示第(1行,1列)的文本值, listitems(1).subitem(1)返回第1行第2列文本值
54、。listview控件屬性可以通過(guò)快捷菜單“l(fā)istviewctrl properties”設(shè)置。發(fā)行注意發(fā)行注意:listview 控件是 mscomctl.ocx 文件中一組 activex 控件的一部分。2.listview控件控件1.在bimglist控件中添加2個(gè)32*32圖標(biāo)作為listview控件大圖標(biāo);2.在simglist控件中添加2個(gè)16*16圖標(biāo)作為listview控件大圖標(biāo);3.在listview.init中設(shè)置控件的列標(biāo)題和其他初始屬性;4.使用顯示按鈕和快捷菜單showway控制列表項(xiàng)的顯示方式;5.使用自定義方法filterstr和自定義方法showperson控
55、制列表項(xiàng)的添加。.listview控件設(shè)置方法控件設(shè)置方法自定義屬性自定義屬性:filterstr=自定義方法自定義方法:showperson 過(guò)濾顯示員工信息3.添加自定義屬性與方法添加自定義屬性與方法*獲取“filterstr”屬性中保存的值cfilter = thisform.filterstr*清空l(shuí)istview中的列表項(xiàng)lview = thisform.maincon.percon.plistlview.listitems.clear*設(shè)置過(guò)濾條件select personnelset filter to &cfiltershowperson-1/4*添加列表項(xiàng)scan*性
56、別不同,圖標(biāo)不同if 性別 = 男 litem = lview.listitems.add(, k + 員工編號(hào), alltrim(姓名), 1, 1)elselitem = lview.listitems.add(, k + 員工編號(hào), alltrim(姓名), 2, 2)endifshowperson-2/4litem.subitems(1) = alltrim(員工編號(hào))litem.subitems(2) = alltrim(性別)litem.subitems(3) = 部門litem.subitems(4) = alltrim(職務(wù))litem.subitems(5) = alltri
57、m(民族)litem.subitems(6) = alltrim(學(xué)歷)endscanshowperson-3/4*如果列表項(xiàng)不為空,選中第1項(xiàng)if lview.listitems.count 0lview.selecteditem = lview.listitems(1)endif*刷新表單thisform.refreshshowperson-4/4*大圖標(biāo)this.icons = thisform.bimglist*小圖標(biāo)this.smallicons = thisform.simglist*以詳細(xì)信息方式顯示this.view = 3*鼠標(biāo)所在行高亮顯示this.hottracking
58、= .t.4.添加代碼添加代碼listview.init-1/3*添加列標(biāo)頭this.columnheaders.add(, k11, 姓名, this.width/6)this.columnheaders.add(, k12, 員工編號(hào), this.width/6)this.columnheaders.add(, k13, 性別, this.width/9)this.columnheaders.add(, k14, 部門, this.width/8)this.columnheaders.add(, k15, 職務(wù), this.width/6)this.columnheaders.add(,
59、k16, 民族, this.width/8)this.columnheaders.add(, k17, 學(xué)歷, this.width/8)listview.init-2/3*顯示所有員工thisform.filterstr = .t.thisform.showperson*刷新顯示thisform.refreshlistview.init-3/3* activex 控件事件 *if this.listitems.count 0cparam1 = browse* 要瀏覽的記錄編號(hào)cparam2 = substr(this.selecteditem.key, 2)do form forms/edi
60、tpinfo with cparam1, cparam2*重新顯示用戶信息thisform.showpersonthisform.refreshendiflistview.dblclick*設(shè)置treeview控件的顯示方式this.linestyle = 1*在treeview控件中顯示圖標(biāo)this.style = 6*清除結(jié)點(diǎn)this.nodes.clear*讀取公司名稱作為根結(jié)點(diǎn)select sysinfoptree.init-1/3if .not. ( eof() and. bof() this.nodes.add(,k0,alltrim(公司名稱)else messagebox(系統(tǒng)設(shè)置錯(cuò)誤, 48, 企業(yè)工資管理系統(tǒng)) returnendif*讀取部門信息作為子結(jié)點(diǎn)s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能化工廠項(xiàng)目用工合同范本
- 2025年度大型體育賽事賽事運(yùn)營(yíng)管理合同
- 2025年度物業(yè)服務(wù)質(zhì)量評(píng)估與改進(jìn)合同
- 辭職申請(qǐng)書(shū)500字
- 酒店入職申請(qǐng)書(shū)
- 破產(chǎn)申請(qǐng)書(shū)范本
- 2025年度供用熱合同范本:綠色建筑項(xiàng)目供熱設(shè)施安裝與維護(hù)合同
- 2025年度新型城鎮(zhèn)化項(xiàng)目小產(chǎn)權(quán)房購(gòu)房合同示范文本
- 電力安全事故的預(yù)防與應(yīng)急處理
- 2025年度新能源汽車租賃與充電網(wǎng)絡(luò)建設(shè)合同
- 贏在團(tuán)隊(duì)執(zhí)行力課件
- 慢性胰腺炎課件
- 北京理工大學(xué)應(yīng)用光學(xué)課件第四章
- 陰道鏡幻燈課件
- 2022年山東司法警官職業(yè)學(xué)院?jiǎn)握姓Z(yǔ)文試題及答案解析
- PCB行業(yè)安全生產(chǎn)常見(jiàn)隱患及防范措施課件
- DB32∕T 186-2015 建筑消防設(shè)施檢測(cè)技術(shù)規(guī)程
- 2022年福建泉州中考英語(yǔ)真題【含答案】
- 汽車座椅骨架的焊接夾具畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(共23頁(yè))
- 露天礦山職業(yè)危害預(yù)先危險(xiǎn)分析表
- 淺談固定資產(chǎn)的審計(jì)
評(píng)論
0/150
提交評(píng)論