版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目錄實驗一 軟件分析3一、功能說明3二、E-R圖3三、邏輯表格5四、任務6實驗二 創(chuàng)建項目及數(shù)據(jù)庫6一、創(chuàng)建項目6二、創(chuàng)建數(shù)據(jù)庫6三、創(chuàng)建表并設(shè)定索引6四、建立表之間的關(guān)系8五、任務9實驗三 數(shù)據(jù)可視化操作9一、添加記錄9二、修改記錄12三、刪除記錄12四、任務12實驗四 使用命令操作數(shù)據(jù)庫12一、數(shù)據(jù)庫及表操作12二、任務15實驗五 表單設(shè)計15一、表單分析15二、使用向?qū)?chuàng)建表單16三、使用表單設(shè)計器修改表單19四、完成其他表單23實驗六 編寫代碼28一、創(chuàng)建系統(tǒng)主程序28二、編寫登錄表單的代碼29三、編寫主表單程序代碼30四、編寫管理員管理代碼34五、提示信息添加代碼36六、編寫管理信息
2、代碼37七、今日提醒代碼編寫39八、編寫部門管理代碼41九、員工管理代碼編寫45十、使菜單和工具欄與表單關(guān)聯(lián)45十一、任務46實驗七 設(shè)計報表46一、為報表準備數(shù)據(jù)46二、設(shè)計報表47三、操作注意51四、運行表單51五、任務51實驗八 編譯發(fā)布52一、軟件的編譯52二、制作安裝盤52三、任務56實驗九 分析及優(yōu)化56實驗一 軟件分析請從網(wǎng)站下載示例程序,分析軟件的功能并列出,并從中抽象出實體,畫出軟件的E-R圖并進行數(shù)據(jù)庫邏輯設(shè)計,畫出數(shù)據(jù)庫邏輯設(shè)計表格。參考如下:一、 功能說明1) 系統(tǒng)登錄控制:要求填寫用戶名及密碼,并進行了3次連續(xù)錯誤后系統(tǒng)退出功能。2) 部門編碼設(shè)置:主要是用來設(shè)置部門
3、的層級關(guān)系。3) 部門信息設(shè)置:部分的基本信息,如地址、電話等。4) 員工信息管理:管理企業(yè)內(nèi)部員工的信息,還可以設(shè)置生日提醒。5) 提醒設(shè)置功能:可以通過設(shè)置信息及接收用戶及時間,當被設(shè)置的用戶登錄時顯示給用戶。6) 今日提醒功能:根據(jù)提醒設(shè)置,顯示相應信息。7) 系統(tǒng)設(shè)置:修改使用軟件的單位信息。8) 密碼修改功能:修改用戶的密碼。二、 E-R圖首先是進行實體的抽象,通過系統(tǒng)登錄功能及用戶密碼修改功能,我們可以抽象出“用戶”實體,通過部門編碼及部門信息管理功能,可以抽象出“部門”實體,通過員工信息管理可得到“員工”實體,通過提醒功能及今日提醒功能可以抽象出“提醒”實體,最后就是系統(tǒng)基本信息
4、,可以得到“系統(tǒng)”實體。部門信息員工信息提醒信息包含提醒1nn1實體之間關(guān)系有E-R圖提醒信息編碼員工編號提醒類別提醒內(nèi)容提醒日期提醒實體用戶信息用戶名密碼姓名用戶信息實體的E-R圖部門信息編號上層編號單位名稱單位地址。部門信息實體的E-R圖員工信息編號姓名生日電話。員工信息實體的E-R圖系統(tǒng)信息企業(yè)名稱顯示提醒系統(tǒng)信息實體的E-R圖三、 邏輯表格通過上面的E-R圖,我們已經(jīng)確立了實體,現(xiàn)在我們要進一步把實體及屬性更完善,進行數(shù)據(jù)庫的邏輯設(shè)計提醒信息字段名字段類型寬度可否為空默認值說明Warnid自動編號4主索引emplyid整型4否0普通索引當為0時代表發(fā)給所有用戶Wtype整型4不同的數(shù)值
5、代表不同類型showdate日期型8顯示日期msg字符型200顯示的信息用戶信息字段名字段類型寬度可否為空默認值說明uname字符型20否主索引,用戶名upwd字符型20否0密碼truename字符型8真實姓名部門信息字段名字段類型寬度可否為空默認值說明ID自動4主索引,編號TopID整型4上層編號DPName字符50單位名稱DPAddr字符100單位地址DPPhone字符30單位電話DPPerson字符8單位聯(lián)系人員工信息字段名字段類型寬度可否為空默認值說明ID自動4編號,主索引uname字符8姓名usex字符2性別birthday日期8生日DPID整型4所屬部門ISMsg邏輯1是否生日提醒
6、上面的字符可以進行相應的增加或刪減,關(guān)鍵在于想實現(xiàn)的功能。四、 任務仔細分析軟件本身,并可以進行相應改進,完成軟件分析任務。把個人設(shè)計的軟件也進行上述的過程,完成數(shù)據(jù)庫概念設(shè)計及邏輯設(shè)計。實驗二 創(chuàng)建項目及數(shù)據(jù)庫一、 創(chuàng)建項目1) 在硬盤的相應目錄下建立自己的項目文件夾,并在文件夾下建立data和doc兩個文件夾分別用來存放數(shù)據(jù)文件及開發(fā)文檔。2) 打開VFP8.0,建立項目文件,命名為EPUser(可任意,為了后面方便表達)。二、 創(chuàng)建數(shù)據(jù)庫在項目管理器中新建一個數(shù)據(jù)庫EPData,并保存在Data文件夾中。三、 創(chuàng)建表并設(shè)定索引1) 在EPData數(shù)據(jù)庫下創(chuàng)建新表warning。表設(shè)計器如
7、下:2) 在warnid上建立主索引,在emplyid上建立普通索引。3) 依照上邊的方法建立其他數(shù)據(jù)表。最終如下:四、 建立表之間的關(guān)系1) 選中Epdata數(shù)據(jù)庫,單擊修改打開數(shù)據(jù)庫設(shè)計器2) 把主表的主索引拖至從表的普通索引上建立關(guān)系五、 任務a) 完成企業(yè)員工管理軟件的項目創(chuàng)建及數(shù)據(jù)庫、數(shù)據(jù)庫表的創(chuàng)建,并建立相應關(guān)系。b) 完成自主設(shè)計的軟件的數(shù)據(jù)庫、數(shù)據(jù)庫表的創(chuàng)建工作。實驗三 數(shù)據(jù)可視化操作一、 添加記錄a) 打開實驗二創(chuàng)建的項目,并打開epdata數(shù)據(jù)庫的設(shè)計器。b) 雙擊Depart和employ表之間的關(guān)系線,打開關(guān)系設(shè)定窗口。c) 選擇“referential integri
8、ty”選項,并選擇插入規(guī)則,選擇級連項,實現(xiàn)兩表之間的“相對完整性”,確定退出窗體。d) 在項目管理器中選擇depart表,并選擇“瀏覽”,打開瀏覽窗口,在“顯示”菜單中選擇“追加模式”,在表中添加兩條數(shù)據(jù),如下圖,在這里我們可以看到“聊城大學”這個部門的topid為0而“教育傳播技術(shù)學院”的topid為“聊城大學”的id,通過這種方式實現(xiàn)部門間的級別管理,這種方式在開發(fā)中經(jīng)常使用。e) 關(guān)閉depart表,再打開employ表,使用上述方式添加數(shù)據(jù),當我們在Dpid中添加了一個depart表中未出現(xiàn)的ID值時,會出現(xiàn)如下錯誤,而輸入的值為正確的,則會被確認,從這里我們可以看到完整性檢查的作用
9、。f) 建立一個與employ結(jié)構(gòu)相同的表employ1,在表中添加一些數(shù)據(jù)。g) 在打開employ表,選擇“表”菜單中的追加記錄,如下圖,點擊來源后面的瀏覽按鈕,找到employ1表,并設(shè)置選項,選中除自動編號以外的所有字段,確定后,查看employ表中是否添加了employ1中的數(shù)據(jù)。二、 修改記錄打開一個添加了數(shù)據(jù)的表格,然后使用“顯示”菜單中的“編輯”實現(xiàn)對數(shù)據(jù)的修改,不再演示,大家也可以設(shè)置表之間的關(guān)系,看一下更新規(guī)則的作用。三、 刪除記錄a) 打開一個有數(shù)據(jù)的表格,點擊記錄左側(cè)的小矩形,這樣記錄便被邏輯刪除b) 進行物理刪除,打開“表”菜單,選擇徹底刪除,便可以實現(xiàn)“物理刪除”四
10、、 任務在我們建立的表中添加適量數(shù)據(jù),以方便后續(xù)操作。實驗四 使用命令操作數(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) 在當前工作期中打開要使用的表:USE classes或select classes5) 插入數(shù)據(jù):insert into classes(classname)values(2004級1班)insert into c
12、lasses(classname)values(2004級2班)insert into classes(classname)values(2004級3班)6) 瀏覽數(shù)據(jù):browse或display或list,會發(fā)現(xiàn)使用display時只顯示第一條記錄,這時需要使用范圍語句 display all,大家可以使用條件語句看一下結(jié)果。7) 查看當前記錄各信息:? recno() &&顯示當前記錄號? Bof()&&查看記錄指針是否在最前?Eof()&&查看記錄指針是否在最后skip -1&&使記錄指針向前滾動一條? recno()?B
13、of()?Eof()goto top&&使記錄指針移到頂端? recno()?Bof()?Eof()8) 條件定位:locate for cid=2? recno()9) 在學生表中插入數(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) 修改學生數(shù)據(jù):update student set classid=3 where stuid=2004010111) 刪除學生記錄:DELETE FROM student where stuid='20040101'LIST12) 恢復被邏輯刪除的記錄: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 學生總數(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二、 任務使用上面的命令在員工管理
18、數(shù)據(jù)庫表的添加一些記錄實驗五 表單設(shè)計一、 表單分析根據(jù)實驗一中的項目功能分析,我們需要創(chuàng)建以下幾個表單。1) 部分信息管理表單:實現(xiàn)對部分信息的添加、修改、刪除等管理2) 員工信息管理表單:實現(xiàn)對員工信息的添加、修改、刪除等管理3) 管理員管理表單:實現(xiàn)對管理員的添加、刪除等管理4) 當前用戶密碼修改表單:修改當前用戶的密碼和真實姓名5) 信息提示表單:當啟動軟件時顯示提示信息6) 提示信息設(shè)置表單:設(shè)置提示信息7) 登錄表單8) 系統(tǒng)設(shè)置表單9) 關(guān)于表單二、 使用向?qū)?chuàng)建表單1) 打開員工管理項目,這里需要注意的是,VFP軟件有可能對中文目錄支持不太好,如果出現(xiàn)類似問題,請把項目放在一個
19、英文目錄中。2) 在項目管理器中選擇文檔(documents),選擇表單,并新建。3) 選擇使用向?qū)В@里有兩項,一項是表單向?qū)?,另一個是一對多表單向?qū)?,可以看出我們也可以使用向?qū)Мa(chǎn)生基于兩個表的表單。4) 選擇使用到的表字段,這里實現(xiàn)管理員管理的表單,所以選擇Manager表中的所有字段。5) 選擇表單樣式,使用默認即可。6) 選擇排序字段,這里也可以不選擇。7) 最后一步,設(shè)置表單標題并設(shè)置保存,在項目文件夾下建立forms文件夾,并把表單保存在內(nèi)。8) 最終效果如下:9) 在我們的創(chuàng)建的數(shù)據(jù)庫中,部門表與員工表之間存在一對多關(guān)系,使用向?qū)ё约航⒁粋€一對多的表單。三、 使用表單設(shè)計器修改
20、表單使用向?qū)傻谋韱斡袝r不能滿足我們的需要,這時,我們需要使用表單設(shè)計器來完善表單的設(shè)計。下面我們來修改一下上面的表單。1) 選擇我們剛才創(chuàng)建的表單,進行修改2) 下面是表單設(shè)計器,同時會打開表單控件面板和屬性面板3) 選擇表格控件,并在表單中單擊,把控件添加到表單中。4) 使用表格生成器來使表格與數(shù)據(jù)表之間綁定。5) 選擇顯示的字段。6) 設(shè)置顯示樣式7) 修改表格字段顯示的標題。8) 點擊OK完成修改,關(guān)閉設(shè)計器并保存修改,使用項目管理器運行表單查看最終效果。9) 對于由向?qū)傻目丶?,可以通過屬性面板進行修改,如改變標題顯示(caption)。10) 通過上述方式,多加測試,掌握表單設(shè)
21、計的基本方法。四、 完成其他表單1) 部門信息管理:這里要用到一個Activex控件,方法是,打開“工具”菜單,選項中選擇控件面板,找到如下圖的控件:后從控件面板中選擇如下:就可以看到我們選擇的組件,拖放到表單中就可以了。2) 員工信息管理3) 登錄表單4) 管理員管理表單5) 用戶密碼修改表單6) 提示信息管理表單7) 提示信息添加表單,這里用了一個時間控件,如TreeView控件一樣,自行添加進來即可。8) 提示信息顯示表單實驗六 編寫代碼本實驗分三次完成,主要實現(xiàn)程序的所有代碼,了解程序開發(fā)過程及代碼開發(fā)技巧。一、 創(chuàng)建系統(tǒng)主程序主程序是所編寫程序的入口,主要設(shè)置運行環(huán)境、定義變量、常量
22、,然后調(diào)用其他表單,本程序文件保存為main.prg。CLEARCLEAR ALL*把系統(tǒng)菜單隱藏掉SET SYSMENU off*程序運行時不允許使用ESC鍵退出SET ESCAPE OFF*關(guān)閉命令顯示SET TALK OFF*覆蓋時不要確認SET SAFETY OFF*設(shè)置時間格式,使用四位顯示年代SET CENTURY onSET DATE YMD*定義一個公共變量,保存當前用戶信息PUBLIC curuser*調(diào)用登錄表單DO FORM formslogin*進入事務處理,當執(zhí)行clean events時結(jié)束READ events*當結(jié)束循環(huán)時執(zhí)行退出quit二、 編寫登錄表單的代碼
23、打開實驗五中已經(jīng)制作的Login表單,修改控件相應屬性??丶傩灾到M合框NameunameRowsourcemanager.unameRowsourcetype6-fieldsStyle2-dropdown list文本框NameUpwdPasswordchar*表單AutocenterTrueBorderstyle2-固定對話框ClosbleFCaption用戶登錄controlboxFMaxButtonFMinButtonFNameFrmloginShowwindow作為頂層表單Windowtyp模式選中表單,從屬性面板中找到init事件,添加如下代碼:*定義一個公共變量來保存登錄次數(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("您的密碼輸入錯誤,請重新輸入!",16,"錯誤")ELSEMESSAGEBOX("對不起,錯誤次數(shù)已達3次,不能進入系統(tǒng)!",16,"報歉")thisform.ReleaseCLEAR EVENTSCLOSE ALLquitendifendifENDIF為退出添加click事件:thisform.ReleaseCLEAR EVENTSqu
26、it三、 編寫主表單程序代碼主表單主要是起到調(diào)用其他表單的作用,在這里我們添加一個菜單和一個工具欄,從而了解如何創(chuàng)建表單與工具欄,以及如何在程序中使用它們。創(chuàng)建主表單,保存為main,設(shè)置屬性如下:控件屬性值表單AutocenterTrueCaption企業(yè)員工管理系統(tǒng)Height600Width600MDIformTNameFrmmainShowwindow作為頂層表單Windowtyp模式創(chuàng)建菜單,在項目管理器中選擇“其他”選項卡,選中菜單,新建:選擇Menu,先制作如圖的菜單然后選擇菜單“顯示->常規(guī)選項”選中“頂層表單”,設(shè)計表單時要注意的問題是,需要生成,而且每一次改動后都需要
27、生成,否則使用的菜單是未生成前的菜單?!安藛?gt;生成菜單”:好了,下面我們把菜單加入到主表單中去。打開主表單,添加“init”事件:DO menumain.mpr WITH this*這里的菜單地址,請根據(jù)自己的保存位置確定。這里保存到menu文件件下了??梢赃\行主表單看一下效果了。下面制作工具欄,選擇“類”選項卡,新建類:從ToolBar類繼承制作自己的工具欄,添加按鈕,圖片資源可以從FTP得到。設(shè)置Showwindow屬性值為“在頂層表單中”。因為工具欄是與表單一級的對象,所以表單中不能容納工具欄,所以需要建立一個表單集來放置表單與工具欄,打開主表單,使用“表單”菜單中的“新建表單集”
28、建立表單集對象,這時我們使用代碼的方式把工具欄加入到主表單中去,設(shè)置表單集的init事件。PUBLIC isCreateToolbarisCreateToolbar=0再在Activate事件中添加如下代碼:IF isCreateToolbar=0isCreateToolbar=1*加載類SET CLASSLIB TO libmyclass*使用類創(chuàng)建對象this.AddObject("tool1","mytoolbar")*把工具欄停放在表單的上部this.tool1.dock(0)endif這時運行主表單,效果如下:四、 編寫管理員管理代碼控件屬性值
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("保存出錯")ELSEthisform.RefreshENDIFENDIFthisform.gmanager.Enabled=.f.取消按鈕的click事件:IF MESSAGEBOX("確認取消",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("時間和內(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六、 編寫管理信息代碼此窗體的代碼與管理員管理代碼類似,所以可以很容易實現(xiàn)??丶傩灾当砀馧amegmsgEnabledFalseRecordsourceManagerMousePointer1-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("保存出錯,請檢查")ELSEthisform
35、.RefreshENDifENDIFthisform.gmsg.Enabled=.f.取消按鈕的onclick事件:IF MESSAGEBOX("確認取消",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-模式標簽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八、 編寫部門管理代碼部門管理表單使用了一個ActiveX控件,如果想非常細致的了解此控件的使用方法,請參考FTP上給出的資料??丶傩灾禈湫蚇amedepartTreeStyle7名稱文本框NameEnamecontrolSourcedpname地址文本框NameEaddrcontrolSourcedpaddr電話文本框NameEphonecontrolSourcedpphone聯(lián)系人文本框NameEpersoncontrolSourceDpperson表單BufferMode1Caption部門信息管理NameFrmdepartShowwind
40、ow在頂層表單中Windowtype1-模式同樣要設(shè)置表單對應的depart表格的屬性:buffermodeOveride:2,Exlusive:True首先我們給表單添加init事件:PUBLIC isedit定義一個變量來標識當前操作是添加還是修改PUBLIC dpid保存當前部門編碼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é)點 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("確認要刪除所選部門信息",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("確認要保存修改后的信息嗎?",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九、 員工管理代碼編寫員工管理代碼請參考部門管理代碼和管理員管理代碼來完成。十、 使菜單和工具欄與表單關(guān)聯(lián)到這里,把目前編寫的表單和主表單統(tǒng)一起來,使菜單項及
48、工具欄按鈕可以響應事件,打開菜單,修改相應項,如提示信息管理下有子項,所以設(shè)置為Submenu,單擊Edit進行修改如下使用do form 表單名稱(注意表單路徑),來調(diào)用表單,其他相應修改。打開工具欄,為工具欄上的按鈕添加代碼,如do form forms/depart來完成工具欄的代碼添加。十一、 任務把實驗指導書中未給出的代碼補齊,完成整個程序的代碼編寫。實驗七 設(shè)計報表一、 為報表準備數(shù)據(jù)新建一個本地視圖,如下圖所示,把Depart表和Employ表加入到視圖中來,并設(shè)置顯示的字段。二、 設(shè)計報表1) 新建報表2) 打開報表設(shè)計器3) 在報表菜單中打開標題總結(jié)對話框4) 選擇相應選項,
49、這里Newpage選項是為了讓標題區(qū)和總結(jié)區(qū)在單獨頁中顯示5) 在標題帶區(qū)中添加以下標簽控件,并輸入文字6) 在page header帶區(qū)中添加以下控件,標簽控件中顯示“聊城大學教育傳播技術(shù)學院-企業(yè)員工管理系統(tǒng)”,在后面添加一個域控件,顯示Date(),下邊添加幾個矩形框,并改變其背景色,并使用標簽控件在其上添加相應文字。7) 為報表添加數(shù)據(jù)環(huán)境,與表單添加數(shù)據(jù)環(huán)境相同。需要注意的是需要選擇視圖選項來顯示視圖對象。8) 在detail區(qū)添加域控件及矩形控件,注意上邊框要移出帶區(qū)的上邊,而帶區(qū)下邊框與要矩形下邊框剛好一致,這樣才會出來最終效果,如果與效果不一致,也可以重新調(diào)整此處。9) 在page footer區(qū)添加如下文字及直線最終效果如下:三、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目托管合同范例
- 飯店引流合同范例簡短
- app推廣服務合同范例
- 購銅合同范例
- 合同范例神器
- 化妝培訓員工合同范例
- 裝修材料合同合同范例
- 學校托管采購合同范例
- 銷售合同范例建陶
- 員工入職檔案合同范例
- 2024年公司年會領(lǐng)導演講稿致辭(5篇)
- 重大事項內(nèi)部會審制度例文(2篇)
- 貴州省銅仁市碧江區(qū)2023-2024學年八年級上學期期末數(shù)學試題
- 大部分分校:地域文化形考任務二-國開(CQ)-國開期末復習資料
- 2024年馬拉松比賽項目合作計劃書
- 苗圃購銷合同范本
- ICU患者跌倒、墜床應急預案及防范措施
- 電力監(jiān)控系統(tǒng)安全防護總體方案
- 爐渣爐灰采購合同模板
- 藥理學(浙江大學)智慧樹知到答案2024年浙江大學
- 2023-2024學年深圳市初三中考適應性考試英語試題(含答案)
評論
0/150
提交評論