版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄實(shí)驗(yàn)一 軟件分析3一、功能說明3二、E-R圖3三、邏輯表格5四、任務(wù)6實(shí)驗(yàn)二 創(chuàng)建項(xiàng)目及數(shù)據(jù)庫6一、創(chuàng)建項(xiàng)目6二、創(chuàng)建數(shù)據(jù)庫6三、創(chuàng)建表并設(shè)定索引6四、建立表之間的關(guān)系8五、任務(wù)9實(shí)驗(yàn)三 數(shù)據(jù)可視化操作9一、添加記錄9二、修改記錄12三、刪除記錄12四、任務(wù)12實(shí)驗(yàn)四 使用命令操作數(shù)據(jù)庫12一、數(shù)據(jù)庫及表操作12二、任務(wù)15實(shí)驗(yàn)五 表單設(shè)計(jì)15一、表單分析15二、使用向?qū)?chuàng)建表單16三、使用表單設(shè)計(jì)器修改表單19四、完成其他表單23實(shí)驗(yàn)六 編寫代碼28一、創(chuàng)建系統(tǒng)主程序28二、編寫登錄表單的代碼29三、編寫主表單程序代碼30四、編寫管理員管理代碼34五、提示信息添加代碼36六、編寫管理信息
2、代碼37七、今日提醒代碼編寫39八、編寫部門管理代碼41九、員工管理代碼編寫45十、使菜單和工具欄與表單關(guān)聯(lián)45十一、任務(wù)46實(shí)驗(yàn)七 設(shè)計(jì)報(bào)表46一、為報(bào)表準(zhǔn)備數(shù)據(jù)46二、設(shè)計(jì)報(bào)表47三、操作注意51四、運(yùn)行表單51五、任務(wù)51實(shí)驗(yàn)八 編譯發(fā)布52一、軟件的編譯52二、制作安裝盤52三、任務(wù)56實(shí)驗(yàn)九 分析及優(yōu)化56實(shí)驗(yàn)一 軟件分析請(qǐng)從網(wǎng)站下載示例程序,分析軟件的功能并列出,并從中抽象出實(shí)體,畫出軟件的E-R圖并進(jìn)行數(shù)據(jù)庫邏輯設(shè)計(jì),畫出數(shù)據(jù)庫邏輯設(shè)計(jì)表格。參考如下:一、 功能說明1) 系統(tǒng)登錄控制:要求填寫用戶名及密碼,并進(jìn)行了3次連續(xù)錯(cuò)誤后系統(tǒng)退出功能。2) 部門編碼設(shè)置:主要是用來設(shè)置部門
3、的層級(jí)關(guān)系。3) 部門信息設(shè)置:部分的基本信息,如地址、電話等。4) 員工信息管理:管理企業(yè)內(nèi)部員工的信息,還可以設(shè)置生日提醒。5) 提醒設(shè)置功能:可以通過設(shè)置信息及接收用戶及時(shí)間,當(dāng)被設(shè)置的用戶登錄時(shí)顯示給用戶。6) 今日提醒功能:根據(jù)提醒設(shè)置,顯示相應(yīng)信息。7) 系統(tǒng)設(shè)置:修改使用軟件的單位信息。8) 密碼修改功能:修改用戶的密碼。二、 E-R圖首先是進(jìn)行實(shí)體的抽象,通過系統(tǒng)登錄功能及用戶密碼修改功能,我們可以抽象出“用戶”實(shí)體,通過部門編碼及部門信息管理功能,可以抽象出“部門”實(shí)體,通過員工信息管理可得到“員工”實(shí)體,通過提醒功能及今日提醒功能可以抽象出“提醒”實(shí)體,最后就是系統(tǒng)基本信息
4、,可以得到“系統(tǒng)”實(shí)體。部門信息員工信息提醒信息包含提醒1nn1實(shí)體之間關(guān)系有E-R圖提醒信息編碼員工編號(hào)提醒類別提醒內(nèi)容提醒日期提醒實(shí)體用戶信息用戶名密碼姓名用戶信息實(shí)體的E-R圖部門信息編號(hào)上層編號(hào)單位名稱單位地址。部門信息實(shí)體的E-R圖員工信息編號(hào)姓名生日電話。員工信息實(shí)體的E-R圖系統(tǒng)信息企業(yè)名稱顯示提醒系統(tǒng)信息實(shí)體的E-R圖三、 邏輯表格通過上面的E-R圖,我們已經(jīng)確立了實(shí)體,現(xiàn)在我們要進(jìn)一步把實(shí)體及屬性更完善,進(jìn)行數(shù)據(jù)庫的邏輯設(shè)計(jì)提醒信息字段名字段類型寬度可否為空默認(rèn)值說明Warnid自動(dòng)編號(hào)4主索引emplyid整型4否0普通索引當(dāng)為0時(shí)代表發(fā)給所有用戶Wtype整型4不同的數(shù)值
5、代表不同類型showdate日期型8顯示日期msg字符型200顯示的信息用戶信息字段名字段類型寬度可否為空默認(rèn)值說明uname字符型20否主索引,用戶名upwd字符型20否0密碼truename字符型8真實(shí)姓名部門信息字段名字段類型寬度可否為空默認(rèn)值說明ID自動(dòng)4主索引,編號(hào)TopID整型4上層編號(hào)DPName字符50單位名稱DPAddr字符100單位地址DPPhone字符30單位電話DPPerson字符8單位聯(lián)系人員工信息字段名字段類型寬度可否為空默認(rèn)值說明ID自動(dòng)4編號(hào),主索引uname字符8姓名usex字符2性別birthday日期8生日DPID整型4所屬部門ISMsg邏輯1是否生日提醒
6、上面的字符可以進(jìn)行相應(yīng)的增加或刪減,關(guān)鍵在于想實(shí)現(xiàn)的功能。四、 任務(wù)仔細(xì)分析軟件本身,并可以進(jìn)行相應(yīng)改進(jìn),完成軟件分析任務(wù)。把個(gè)人設(shè)計(jì)的軟件也進(jìn)行上述的過程,完成數(shù)據(jù)庫概念設(shè)計(jì)及邏輯設(shè)計(jì)。實(shí)驗(yàn)二 創(chuàng)建項(xiàng)目及數(shù)據(jù)庫一、 創(chuàng)建項(xiàng)目1) 在硬盤的相應(yīng)目錄下建立自己的項(xiàng)目文件夾,并在文件夾下建立data和doc兩個(gè)文件夾分別用來存放數(shù)據(jù)文件及開發(fā)文檔。2) 打開VFP8.0,建立項(xiàng)目文件,命名為EPUser(可任意,為了后面方便表達(dá))。二、 創(chuàng)建數(shù)據(jù)庫在項(xiàng)目管理器中新建一個(gè)數(shù)據(jù)庫EPData,并保存在Data文件夾中。三、 創(chuàng)建表并設(shè)定索引1) 在EPData數(shù)據(jù)庫下創(chuàng)建新表warning。表設(shè)計(jì)器如
7、下:2) 在warnid上建立主索引,在emplyid上建立普通索引。3) 依照上邊的方法建立其他數(shù)據(jù)表。最終如下:四、 建立表之間的關(guān)系1) 選中Epdata數(shù)據(jù)庫,單擊修改打開數(shù)據(jù)庫設(shè)計(jì)器2) 把主表的主索引拖至從表的普通索引上建立關(guān)系五、 任務(wù)a) 完成企業(yè)員工管理軟件的項(xiàng)目創(chuàng)建及數(shù)據(jù)庫、數(shù)據(jù)庫表的創(chuàng)建,并建立相應(yīng)關(guān)系。b) 完成自主設(shè)計(jì)的軟件的數(shù)據(jù)庫、數(shù)據(jù)庫表的創(chuàng)建工作。實(shí)驗(yàn)三 數(shù)據(jù)可視化操作一、 添加記錄a) 打開實(shí)驗(yàn)二創(chuàng)建的項(xiàng)目,并打開epdata數(shù)據(jù)庫的設(shè)計(jì)器。b) 雙擊Depart和employ表之間的關(guān)系線,打開關(guān)系設(shè)定窗口。c) 選擇“referential integri
8、ty”選項(xiàng),并選擇插入規(guī)則,選擇級(jí)連項(xiàng),實(shí)現(xiàn)兩表之間的“相對(duì)完整性”,確定退出窗體。d) 在項(xiàng)目管理器中選擇depart表,并選擇“瀏覽”,打開瀏覽窗口,在“顯示”菜單中選擇“追加模式”,在表中添加兩條數(shù)據(jù),如下圖,在這里我們可以看到“聊城大學(xué)”這個(gè)部門的topid為0而“教育傳播技術(shù)學(xué)院”的topid為“聊城大學(xué)”的id,通過這種方式實(shí)現(xiàn)部門間的級(jí)別管理,這種方式在開發(fā)中經(jīng)常使用。e) 關(guān)閉depart表,再打開employ表,使用上述方式添加數(shù)據(jù),當(dāng)我們?cè)贒pid中添加了一個(gè)depart表中未出現(xiàn)的ID值時(shí),會(huì)出現(xiàn)如下錯(cuò)誤,而輸入的值為正確的,則會(huì)被確認(rèn),從這里我們可以看到完整性檢查的作用
9、。f) 建立一個(gè)與employ結(jié)構(gòu)相同的表employ1,在表中添加一些數(shù)據(jù)。g) 在打開employ表,選擇“表”菜單中的追加記錄,如下圖,點(diǎn)擊來源后面的瀏覽按鈕,找到employ1表,并設(shè)置選項(xiàng),選中除自動(dòng)編號(hào)以外的所有字段,確定后,查看employ表中是否添加了employ1中的數(shù)據(jù)。二、 修改記錄打開一個(gè)添加了數(shù)據(jù)的表格,然后使用“顯示”菜單中的“編輯”實(shí)現(xiàn)對(duì)數(shù)據(jù)的修改,不再演示,大家也可以設(shè)置表之間的關(guān)系,看一下更新規(guī)則的作用。三、 刪除記錄a) 打開一個(gè)有數(shù)據(jù)的表格,點(diǎn)擊記錄左側(cè)的小矩形,這樣記錄便被邏輯刪除b) 進(jìn)行物理刪除,打開“表”菜單,選擇徹底刪除,便可以實(shí)現(xiàn)“物理刪除”四
10、、 任務(wù)在我們建立的表中添加適量數(shù)據(jù),以方便后續(xù)操作。實(shí)驗(yàn)四 使用命令操作數(shù)據(jù)庫一、 數(shù)據(jù)庫及表操作1) 創(chuàng)建數(shù)據(jù)庫:Create DataBase stumanage2) 創(chuàng)建表:Create table classes(cid I AutoInc primarykey,classname c(20)Create Table student(stuid c(10) primary key,stuname c(10),sex c(2) check sex=男 or sex=女 error “此數(shù)據(jù)只能為男或女” default 男,classid I,foreign key classid t
11、ag classid references classes)3) 修改表結(jié)構(gòu):ALTER TABLE classes add teacher c(6)ALTER TABLE classes alter teacher c(8)ALTER TABLE classes rename teacher to managerALTER TABLE classes drop manager4) 在當(dāng)前工作期中打開要使用的表:USE classes或select classes5) 插入數(shù)據(jù):insert into classes(classname)values(2004級(jí)1班)insert into c
12、lasses(classname)values(2004級(jí)2班)insert into classes(classname)values(2004級(jí)3班)6) 瀏覽數(shù)據(jù):browse或display或list,會(huì)發(fā)現(xiàn)使用display時(shí)只顯示第一條記錄,這時(shí)需要使用范圍語句 display all,大家可以使用條件語句看一下結(jié)果。7) 查看當(dāng)前記錄各信息:? recno() &&顯示當(dāng)前記錄號(hào)? Bof()&&查看記錄指針是否在最前?Eof()&&查看記錄指針是否在最后skip -1&&使記錄指針向前滾動(dòng)一條? recno()?B
13、of()?Eof()goto top&&使記錄指針移到頂端? recno()?Bof()?Eof()8) 條件定位:locate for cid=2? recno()9) 在學(xué)生表中插入數(shù)據(jù):INSERT into student(stuid,stuname,sex,classid)values('20040101','zhang','男',1)INSERT into student(stuid,stuname,sex,classid)values('20040102','wang','女&
14、#39;,2)10) 修改學(xué)生數(shù)據(jù):update student set classid=3 where stuid=2004010111) 刪除學(xué)生記錄:DELETE FROM student where stuid='20040101'LIST12) 恢復(fù)被邏輯刪除的記錄:RECALL all13) 再執(zhí)行上面的刪除命令后使用Pack命令,把記錄從磁盤徹底刪除。14) 執(zhí)行查詢:a) select * from studentb) select stuid,stuname from studentc) 向?qū)W生表中多插入幾條記錄d) select distinct sex f
15、rom studente) select sex as 性別 from studentf) select * from student where stuid=20040101g) select * from student where stuid in(20040101,20040102)h) SELECT * from student where stuname like 'w%'i) SELECT * from student where stuname like 'w_'j) SELECT * from student where stuname lik
16、e '_a%'k) select count(*) as 學(xué)生總數(shù) from studentl) SELECT A.*,B.classname from student A,classes B where A.classid=B.cidm) SELECT A.*,B.classname from student A inner join classes B on A.classid=B.cidn) SELECT A.*,B.classname from student A right outer join classes B on A.classid=B.cido) SELEC
17、T * from student order by stuid descp) SELECT top 1 * from student order by stuid descq) Select count(*) as stucount,classid from student group by classidr) Select * from student into cursor test15) 刪除表:drop table studentdrop table classes16) 刪除數(shù)據(jù)庫:CLOSE ALLDELETE DATABASE stumanage二、 任務(wù)使用上面的命令在員工管理
18、數(shù)據(jù)庫表的添加一些記錄實(shí)驗(yàn)五 表單設(shè)計(jì)一、 表單分析根據(jù)實(shí)驗(yàn)一中的項(xiàng)目功能分析,我們需要?jiǎng)?chuàng)建以下幾個(gè)表單。1) 部分信息管理表單:實(shí)現(xiàn)對(duì)部分信息的添加、修改、刪除等管理2) 員工信息管理表單:實(shí)現(xiàn)對(duì)員工信息的添加、修改、刪除等管理3) 管理員管理表單:實(shí)現(xiàn)對(duì)管理員的添加、刪除等管理4) 當(dāng)前用戶密碼修改表單:修改當(dāng)前用戶的密碼和真實(shí)姓名5) 信息提示表單:當(dāng)啟動(dòng)軟件時(shí)顯示提示信息6) 提示信息設(shè)置表單:設(shè)置提示信息7) 登錄表單8) 系統(tǒng)設(shè)置表單9) 關(guān)于表單二、 使用向?qū)?chuàng)建表單1) 打開員工管理項(xiàng)目,這里需要注意的是,VFP軟件有可能對(duì)中文目錄支持不太好,如果出現(xiàn)類似問題,請(qǐng)把項(xiàng)目放在一個(gè)
19、英文目錄中。2) 在項(xiàng)目管理器中選擇文檔(documents),選擇表單,并新建。3) 選擇使用向?qū)?,這里有兩項(xiàng),一項(xiàng)是表單向?qū)?,另一個(gè)是一對(duì)多表單向?qū)В梢钥闯鑫覀円部梢允褂孟驅(qū)Мa(chǎn)生基于兩個(gè)表的表單。4) 選擇使用到的表字段,這里實(shí)現(xiàn)管理員管理的表單,所以選擇Manager表中的所有字段。5) 選擇表單樣式,使用默認(rèn)即可。6) 選擇排序字段,這里也可以不選擇。7) 最后一步,設(shè)置表單標(biāo)題并設(shè)置保存,在項(xiàng)目文件夾下建立forms文件夾,并把表單保存在內(nèi)。8) 最終效果如下:9) 在我們的創(chuàng)建的數(shù)據(jù)庫中,部門表與員工表之間存在一對(duì)多關(guān)系,使用向?qū)ё约航⒁粋€(gè)一對(duì)多的表單。三、 使用表單設(shè)計(jì)器修改
20、表單使用向?qū)傻谋韱斡袝r(shí)不能滿足我們的需要,這時(shí),我們需要使用表單設(shè)計(jì)器來完善表單的設(shè)計(jì)。下面我們來修改一下上面的表單。1) 選擇我們剛才創(chuàng)建的表單,進(jìn)行修改2) 下面是表單設(shè)計(jì)器,同時(shí)會(huì)打開表單控件面板和屬性面板3) 選擇表格控件,并在表單中單擊,把控件添加到表單中。4) 使用表格生成器來使表格與數(shù)據(jù)表之間綁定。5) 選擇顯示的字段。6) 設(shè)置顯示樣式7) 修改表格字段顯示的標(biāo)題。8) 點(diǎn)擊OK完成修改,關(guān)閉設(shè)計(jì)器并保存修改,使用項(xiàng)目管理器運(yùn)行表單查看最終效果。9) 對(duì)于由向?qū)傻目丶?,可以通過屬性面板進(jìn)行修改,如改變標(biāo)題顯示(caption)。10) 通過上述方式,多加測(cè)試,掌握表單設(shè)
21、計(jì)的基本方法。四、 完成其他表單1) 部門信息管理:這里要用到一個(gè)Activex控件,方法是,打開“工具”菜單,選項(xiàng)中選擇控件面板,找到如下圖的控件:后從控件面板中選擇如下:就可以看到我們選擇的組件,拖放到表單中就可以了。2) 員工信息管理3) 登錄表單4) 管理員管理表單5) 用戶密碼修改表單6) 提示信息管理表單7) 提示信息添加表單,這里用了一個(gè)時(shí)間控件,如TreeView控件一樣,自行添加進(jìn)來即可。8) 提示信息顯示表單實(shí)驗(yàn)六 編寫代碼本實(shí)驗(yàn)分三次完成,主要實(shí)現(xiàn)程序的所有代碼,了解程序開發(fā)過程及代碼開發(fā)技巧。一、 創(chuàng)建系統(tǒng)主程序主程序是所編寫程序的入口,主要設(shè)置運(yùn)行環(huán)境、定義變量、常量
22、,然后調(diào)用其他表單,本程序文件保存為main.prg。CLEARCLEAR ALL*把系統(tǒng)菜單隱藏掉SET SYSMENU off*程序運(yùn)行時(shí)不允許使用ESC鍵退出SET ESCAPE OFF*關(guān)閉命令顯示SET TALK OFF*覆蓋時(shí)不要確認(rèn)SET SAFETY OFF*設(shè)置時(shí)間格式,使用四位顯示年代SET CENTURY onSET DATE YMD*定義一個(gè)公共變量,保存當(dāng)前用戶信息PUBLIC curuser*調(diào)用登錄表單DO FORM formslogin*進(jìn)入事務(wù)處理,當(dāng)執(zhí)行clean events時(shí)結(jié)束READ events*當(dāng)結(jié)束循環(huán)時(shí)執(zhí)行退出quit二、 編寫登錄表單的代碼
23、打開實(shí)驗(yàn)五中已經(jīng)制作的Login表單,修改控件相應(yīng)屬性??丶傩灾到M合框NameunameRowsourcemanager.unameRowsourcetype6-fieldsStyle2-dropdown list文本框NameUpwdPasswordchar*表單AutocenterTrueBorderstyle2-固定對(duì)話框ClosbleFCaption用戶登錄controlboxFMaxButtonFMinButtonFNameFrmloginShowwindow作為頂層表單Windowtyp模式選中表單,從屬性面板中找到init事件,添加如下代碼:*定義一個(gè)公共變量來保存登錄次數(shù)PU
24、BLIC logincountlogincount=0雙擊登錄按鈕,打開按鈕的click事件:IF ALLTRIM(thisform.uname.Value)="" thenMESSAGEBOX("沒有選擇用戶名!")ELSELOCATE FOR uname=ALLTRIM(thisform.uname.value)IF ALLTRIM(thisform.upwd.Value)=ALLTRIM(upwd) thencuruser=thisform.uname.valuethisform.ReleaseDO FORM formsmainreturnELSE
25、logincount=logincount+1IF logincount<3 thenthisform.upwd.Value=""MESSAGEBOX("您的密碼輸入錯(cuò)誤,請(qǐng)重新輸入!",16,"錯(cuò)誤")ELSEMESSAGEBOX("對(duì)不起,錯(cuò)誤次數(shù)已達(dá)3次,不能進(jìn)入系統(tǒng)!",16,"報(bào)歉")thisform.ReleaseCLEAR EVENTSCLOSE ALLquitendifendifENDIF為退出添加click事件:thisform.ReleaseCLEAR EVENTSqu
26、it三、 編寫主表單程序代碼主表單主要是起到調(diào)用其他表單的作用,在這里我們添加一個(gè)菜單和一個(gè)工具欄,從而了解如何創(chuàng)建表單與工具欄,以及如何在程序中使用它們。創(chuàng)建主表單,保存為main,設(shè)置屬性如下:控件屬性值表單AutocenterTrueCaption企業(yè)員工管理系統(tǒng)Height600Width600MDIformTNameFrmmainShowwindow作為頂層表單Windowtyp模式創(chuàng)建菜單,在項(xiàng)目管理器中選擇“其他”選項(xiàng)卡,選中菜單,新建:選擇Menu,先制作如圖的菜單然后選擇菜單“顯示->常規(guī)選項(xiàng)”選中“頂層表單”,設(shè)計(jì)表單時(shí)要注意的問題是,需要生成,而且每一次改動(dòng)后都需要
27、生成,否則使用的菜單是未生成前的菜單?!安藛?gt;生成菜單”:好了,下面我們把菜單加入到主表單中去。打開主表單,添加“init”事件:DO menumain.mpr WITH this*這里的菜單地址,請(qǐng)根據(jù)自己的保存位置確定。這里保存到menu文件件下了??梢赃\(yùn)行主表單看一下效果了。下面制作工具欄,選擇“類”選項(xiàng)卡,新建類:從ToolBar類繼承制作自己的工具欄,添加按鈕,圖片資源可以從FTP得到。設(shè)置Showwindow屬性值為“在頂層表單中”。因?yàn)楣ぞ邫谑桥c表單一級(jí)的對(duì)象,所以表單中不能容納工具欄,所以需要建立一個(gè)表單集來放置表單與工具欄,打開主表單,使用“表單”菜單中的“新建表單集”
28、建立表單集對(duì)象,這時(shí)我們使用代碼的方式把工具欄加入到主表單中去,設(shè)置表單集的init事件。PUBLIC isCreateToolbarisCreateToolbar=0再在Activate事件中添加如下代碼:IF isCreateToolbar=0isCreateToolbar=1*加載類SET CLASSLIB TO libmyclass*使用類創(chuàng)建對(duì)象this.AddObject("tool1","mytoolbar")*把工具欄停放在表單的上部this.tool1.dock(0)endif這時(shí)運(yùn)行主表單,效果如下:四、 編寫管理員管理代碼控件屬性值
29、表格NamegmanagerEnabledFalseRecordsourceManager表單BufferMode1Caption操作員管理NamefrmmanagerShowwindow在頂層表單中打開表單的數(shù)據(jù)環(huán)境,選擇manager表。設(shè)置其屬性。buffermodeOveride:2,Exlusive:True添加按鈕的click事件:thisform.gManager.Enabled= .T.APPEND BLANKGO bottomthisform.Refresh修改按鈕的click事件:thisform.gManager.Enabled=.t.保存按鈕的click事件:YN=ME
30、SSAGEBOX("確定保存",4+32,"企業(yè)員工管理系統(tǒng)")IF YN=6 thenIF TABLEUPDATE(.f.)=.f. thenMESSAGEBOX("保存出錯(cuò)")ELSEthisform.RefreshENDIFENDIFthisform.gmanager.Enabled=.f.取消按鈕的click事件:IF MESSAGEBOX("確認(rèn)取消",4+32," 企業(yè)員工管理系統(tǒng)")=6 thenTABLEREVERT(.f.)ENDIFthisform.gmanager.Enab
31、led=.f.thisform.Refresh刪除按鈕的click事件:IF MESSAGEBOX("確定刪除",32+4," 企業(yè)員工管理系統(tǒng)")=6 thenSELECT managerDELETEthisform.gmanager.RecordSource=nullPACKthisform.gmanager.RecordSource="manager"IF EOF()SKIP -1ELSEIF BOF()SKIPENDIFENDIFthisform.Refreshendif五、 提示信息添加代碼控件屬性值Date and tim
32、er pickerNamemsgdate文本域namemsgcontent保存按鈕click事件:SET DATE YMDSET CENTURY onmdate=TTOD(thisform.msgdate._value)mcontent=ALLTRIM(thisform.msgcontent.Value)IF EMPTY(mdate) .and. EMPTY(mcontent) thenMESSAGEBOX("時(shí)間和內(nèi)容都不能為空")returnENDIFIF MESSAGEBOX("確定保存",4+32,"企業(yè)員工管理系統(tǒng)")=6I
33、NSERT INTO warning(emplyid,wtype,showdate,msg)values(0,0,mdate,mcontent)MESSAGEBOX("提示信息已經(jīng)添加到數(shù)據(jù)庫中",64,"企業(yè)員工管理系統(tǒng)")thisform.Releaseendif取消按鈕click事件:thisform.Release六、 編寫管理信息代碼此窗體的代碼與管理員管理代碼類似,所以可以很容易實(shí)現(xiàn)。控件屬性值表格NamegmsgEnabledFalseRecordsourceManagerMousePointer1-Arrow表單BufferMode1Ca
34、ption操作員管理NameFrmmsgShowwindow在頂層表單中打開表單的數(shù)據(jù)環(huán)境,選擇waring表。設(shè)置其屬性。buffermodeOveride:2,Exlusive:True添加按鈕onclick事件:DO FORM forms/setmsgThisform.refresh修改按鈕的onclick事件:IF MESSAGEBOX("確定保存修改信息",4+32,"企業(yè)員工管理系統(tǒng)")=6 thenIF TABLEUPDATE(.f.)=.f. thenMESSAGEBOX("保存出錯(cuò),請(qǐng)檢查")ELSEthisform
35、.RefreshENDifENDIFthisform.gmsg.Enabled=.f.取消按鈕的onclick事件:IF MESSAGEBOX("確認(rèn)取消",4+32," 企業(yè)員工管理系統(tǒng)")=6 thenTABLEREVERT(.f.)ENDIFthisform.gmanager.Enabled=.f.thisform.Refresh刪除按鈕的click事件:IF MESSAGEBOX("確定刪除",32+4," 企業(yè)員工管理系統(tǒng)")=6 thenSELECT waringDELETEthisform.gmana
36、ger.RecordSource=nullPACKthisform.gmanager.RecordSource="waring"IF EOF()SKIP -1ELSEIF BOF()SKIPENDIFENDIFthisform.Refreshendif七、 今日提醒代碼編寫控件屬性值文本框Namemsgreadonlytrue多選框Nameisstart表單BufferMode1Caption今日提醒NameFrmtodayShowwindow在頂層表單中Windowtype1-模式標(biāo)簽Namelmsg表單init事件:PUBLIC i,inumi=0inum=0SELEC
37、T warningCOUNT FOR showdate=DATE() to inumIF inum<1 thenthisform.msg.Value="沒有本日提醒"thisform.lmsg.caption="沒有提醒"ELSESELECT warningSET FILTER TO showdate=DATE()go topi=1thisform.msg.ControlSource="warning.msg"thisform.lmsg.caption="共有"+ALLTRIM(STR(inum)+"
38、;條提醒,第"+ALLTRIM(STR(i)+"條提醒"thisform.Refreshendif下一條按鈕單擊事件:SELECT warningIF .not. EOF()SKIPi=i+1thisform.lmsg.Caption="共有"+ALLTRIM(STR(inum)+"條提醒,第"+ALLTRIM(STR(i)+"條提醒"ENDIFthisform.Refresh確定按鈕onclick事件:IF thisform.isstart.Value=1UPDATE sys SET isstart=.
39、f.ENDIFthisform.release八、 編寫部門管理代碼部門管理表單使用了一個(gè)ActiveX控件,如果想非常細(xì)致的了解此控件的使用方法,請(qǐng)參考FTP上給出的資料??丶傩灾禈湫蚇amedepartTreeStyle7名稱文本框NameEnamecontrolSourcedpname地址文本框NameEaddrcontrolSourcedpaddr電話文本框NameEphonecontrolSourcedpphone聯(lián)系人文本框NameEpersoncontrolSourceDpperson表單BufferMode1Caption部門信息管理NameFrmdepartShowwind
40、ow在頂層表單中Windowtype1-模式同樣要設(shè)置表單對(duì)應(yīng)的depart表格的屬性:buffermodeOveride:2,Exlusive:True首先我們給表單添加init事件:PUBLIC isedit定義一個(gè)變量來標(biāo)識(shí)當(dāng)前操作是添加還是修改PUBLIC dpid保存當(dāng)前部門編碼SELECT departGO topthisform.ename.Value=dpnamethisform.eaddr.Value=dpaddrthisform.ephone.Value=dpphonethisform.eperson.Value=dppersonthisform.eaddr.Enabled
41、=.f.thisform.ename.Enabled=.f.thisform.eperson.Enabled=.f.thisform.ephone.Enabled=.f.thisform.Refresh給樹形控件添加init事件SCAN IF topid = 0 Node = this.nodes.add(,1,"D"+ALLTRIM(STR(id),ALLTRIM(dpname),) *加入根節(jié)點(diǎn) ELSE Node =this.nodes.add("D"+ALLTRIM(STR(topid),4,"D"+ALLTRIM(STR(i
42、d),ALLTRIM(dpname),) ENDIF ENDSCAN樹形控件的onclick事件:SELECT departLOCATE FOR id=VAL(SUBSTR(this.selectedItem.Key,2)dpid=idthisform.ename.Value=dpnamethisform.eaddr.Value=dpaddrthisform.ephone.Value=dpphonethisform.eperson.Value=dpperson添加按鈕onclick事件:thisform.ename.Value=""thisform.eaddr.Value=
43、""thisform.ephone.Value=""thisform.eperson.Value=""thisform.eaddr.Enabled=.t.thisform.ename.Enabled=.t.thisform.eperson.Enabled=.t.thisform.ephone.Enabled=.t.isedit="add"thisform.Refresh刪除按鈕onclick事件:IF MESSAGEBOX("確認(rèn)要?jiǎng)h除所選部門信息",4+32,"企業(yè)員工管理系統(tǒng)&qu
44、ot;)=6 thenDELETE FROM depart WHERE id=dpidPACKthisform.RefreshENDif修改按鈕onclick事件:thisform.eaddr.Enabled=.t.thisform.ename.Enabled=.t.thisform.eperson.Enabled=.t.thisform.ephone.Enabled=.t.isedit="mod"取消按鈕onclick事件:thisform.ename.Value=dpnamethisform.eaddr.Value=dpaddrthisform.ephone.Value
45、=dpphonethisform.eperson.Value=dppersonthisform.eaddr.Enabled=.f.thisform.ename.Enabled=.f.thisform.eperson.Enabled=.f.thisform.ephone.Enabled=.f.保存按鈕onclick事件:IF MESSAGEBOX("確認(rèn)要保存修改后的信息嗎?",4+32,"企業(yè)員工管理系統(tǒng)")=6 thenIF isedit="mod" thenename=ALLTRIM(thisform.ename.value)ea
46、ddr=ALLTRIM(thisform.eaddr.value)ephone=ALLTRIM(thisform.ephone.value)eperson=ALLTRIM(thisform.eperson.value)UPDATE depart SET dpname=ename,dpaddr=eaddr,dpphone=ephone,dpperson=eperson WHERE id=dpidENDIFIF isedit="add" thenINSERT INTO depart(topid,dpname,dpaddr,dpphone,dpperson)values(dpid
47、,thisform.ename.Value,thisform.eaddr.Value,thisform.ephone.Value,thisform.eperson.Value)endifENDIFthisform.eaddr.Enabled=.f.thisform.ename.Enabled=.f.thisform.eperson.Enabled=.f.thisform.ephone.Enabled=.f.thisform.Refresh九、 員工管理代碼編寫員工管理代碼請(qǐng)參考部門管理代碼和管理員管理代碼來完成。十、 使菜單和工具欄與表單關(guān)聯(lián)到這里,把目前編寫的表單和主表單統(tǒng)一起來,使菜單項(xiàng)及
48、工具欄按鈕可以響應(yīng)事件,打開菜單,修改相應(yīng)項(xiàng),如提示信息管理下有子項(xiàng),所以設(shè)置為Submenu,單擊Edit進(jìn)行修改如下使用do form 表單名稱(注意表單路徑),來調(diào)用表單,其他相應(yīng)修改。打開工具欄,為工具欄上的按鈕添加代碼,如do form forms/depart來完成工具欄的代碼添加。十一、 任務(wù)把實(shí)驗(yàn)指導(dǎo)書中未給出的代碼補(bǔ)齊,完成整個(gè)程序的代碼編寫。實(shí)驗(yàn)七 設(shè)計(jì)報(bào)表一、 為報(bào)表準(zhǔn)備數(shù)據(jù)新建一個(gè)本地視圖,如下圖所示,把Depart表和Employ表加入到視圖中來,并設(shè)置顯示的字段。二、 設(shè)計(jì)報(bào)表1) 新建報(bào)表2) 打開報(bào)表設(shè)計(jì)器3) 在報(bào)表菜單中打開標(biāo)題總結(jié)對(duì)話框4) 選擇相應(yīng)選項(xiàng),
49、這里Newpage選項(xiàng)是為了讓標(biāo)題區(qū)和總結(jié)區(qū)在單獨(dú)頁中顯示5) 在標(biāo)題帶區(qū)中添加以下標(biāo)簽控件,并輸入文字6) 在page header帶區(qū)中添加以下控件,標(biāo)簽控件中顯示“聊城大學(xué)教育傳播技術(shù)學(xué)院-企業(yè)員工管理系統(tǒng)”,在后面添加一個(gè)域控件,顯示Date(),下邊添加幾個(gè)矩形框,并改變其背景色,并使用標(biāo)簽控件在其上添加相應(yīng)文字。7) 為報(bào)表添加數(shù)據(jù)環(huán)境,與表單添加數(shù)據(jù)環(huán)境相同。需要注意的是需要選擇視圖選項(xiàng)來顯示視圖對(duì)象。8) 在detail區(qū)添加域控件及矩形控件,注意上邊框要移出帶區(qū)的上邊,而帶區(qū)下邊框與要矩形下邊框剛好一致,這樣才會(huì)出來最終效果,如果與效果不一致,也可以重新調(diào)整此處。9) 在page footer區(qū)添加如下文字及直線最終效果如下:三、
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版廢舊金屬資源回收承包合同3篇
- 二零二五年農(nóng)業(yè)生態(tài)保護(hù)與修復(fù)合伙合同3篇
- 二零二五年畜牧養(yǎng)殖產(chǎn)業(yè)承包協(xié)議3篇
- 二零二五年農(nóng)村垃圾無害化處理合同范本3篇
- 二零二五年度文物保管與展覽協(xié)議
- 2024年員工三級(jí)安全培訓(xùn)考試題含答案(黃金題型)
- 2024項(xiàng)目管理人員安全培訓(xùn)考試題附參考答案【A卷】
- 二零二五版?zhèn)€人借款合同標(biāo)準(zhǔn):2025年度借款欠條編制要求15篇
- 2023年-2024年公司項(xiàng)目部負(fù)責(zé)人安全教育培訓(xùn)試題帶答案(預(yù)熱題)
- 二零二五年貨物出口代理協(xié)議2篇
- 茉莉花-附指法鋼琴譜五線譜
- 人教版九年級(jí)英語全冊(cè)用英語講好中國故事
- 2024年人工智能(AI)訓(xùn)練師職業(yè)技能鑒定考試題庫(濃縮500題)
- 2024版中國臺(tái)球行業(yè)市場(chǎng)規(guī)模及投資策略研究報(bào)告(智研咨詢)
- 2024年國家公安部直屬事業(yè)單位招錄人民警察及工作人員696人筆試(高頻重點(diǎn)復(fù)習(xí)提升訓(xùn)練)共500題附帶答案詳解
- 初中必背古詩文138首
- 上海生活垃圾分類現(xiàn)狀調(diào)查報(bào)告
- 小升初中簡(jiǎn)歷模板
- 【深信服】PT1-AF認(rèn)證考試復(fù)習(xí)題庫(含答案)
- GB/T 43824-2024村鎮(zhèn)供水工程技術(shù)規(guī)范
- 2024年10月自考00058市場(chǎng)營銷學(xué)押題及答案匯總
評(píng)論
0/150
提交評(píng)論