數(shù)據(jù)庫設(shè)計(jì)完整流程_第1頁
數(shù)據(jù)庫設(shè)計(jì)完整流程_第2頁
數(shù)據(jù)庫設(shè)計(jì)完整流程_第3頁
數(shù)據(jù)庫設(shè)計(jì)完整流程_第4頁
數(shù)據(jù)庫設(shè)計(jì)完整流程_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

...wd......wd......wd...目錄實(shí)驗(yàn)一軟件分析3一、功能說明3二、E-R圖3三、邏輯表格5四、任務(wù)6實(shí)驗(yàn)二創(chuàng)立工程及數(shù)據(jù)庫6一、創(chuàng)立工程6二、創(chuàng)立數(shù)據(jù)庫6三、創(chuàng)立表并設(shè)定索引6四、建設(shè)表之間的關(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六、編寫管理信息代碼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)一軟件分析請從網(wǎng)站下載例如程序,分析軟件的功能并列出,并從中抽象出實(shí)體,畫出軟件的E-R圖并進(jìn)展數(shù)據(jù)庫邏輯設(shè)計(jì),畫出數(shù)據(jù)庫邏輯設(shè)計(jì)表格。參考如下:功能說明系統(tǒng)登錄控制:要求填寫用戶名及密碼,并進(jìn)展了3次連續(xù)錯(cuò)誤后系統(tǒng)退出功能。部門編碼設(shè)置:主要是用來設(shè)置部門的層級關(guān)系。部門信息設(shè)置:局部的根本信息,如地址、等。員工信息管理:管理企業(yè)內(nèi)部員工的信息,還可以設(shè)置生日提醒。提醒設(shè)置功能:可以通過設(shè)置信息及接收用戶及時(shí)間,當(dāng)被設(shè)置的用戶登錄時(shí)顯示給用戶。今日提醒功能:根據(jù)提醒設(shè)置,顯示相應(yīng)信息。系統(tǒng)設(shè)置:修改使用軟件的單位信息。密碼修改功能:修改用戶的密碼。E-R圖首先是進(jìn)展實(shí)體的抽象,通過系統(tǒng)登錄功能及用戶密碼修改功能,我們可以抽象出“用戶〞實(shí)體,通過部門編碼及部門信息管理功能,可以抽象出“部門〞實(shí)體,通過員工信息管理可得到“員工〞實(shí)體,通過提醒功能及今日提醒功能可以抽象出“提醒〞實(shí)體,最后就是系統(tǒng)根本信息,可以得到“系統(tǒng)〞實(shí)體。部門信息部門信息員工信息提醒信息包含提醒1nn1實(shí)體之間關(guān)系有E-R圖提醒信息提醒信息編碼員工編號提醒類別提醒內(nèi)容提醒日期提醒實(shí)體用戶信息用戶信息用戶名密碼姓名用戶信息實(shí)體的E-R圖部門信息部門信息編號上層編號單位名稱單位地址。。。部門信息實(shí)體的E-R圖員工信息員工信息編號姓名生日。。。員工信息實(shí)體的E-R圖系統(tǒng)信息系統(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)編號4主索引emplyid整型4否0普通索引當(dāng)為0時(shí)代表發(fā)給所有用戶Wtype整型4不同的數(shù)值代表不同類型showdate日期型8顯示日期msg字符型200顯示的信息用戶信息字段名字段類型寬度可否為空默認(rèn)值說明uname字符型20否主索引,用戶名upwd字符型20否0密碼truename字符型8真實(shí)姓名部門信息字段名字段類型寬度可否為空默認(rèn)值說明ID自動(dòng)4主索引,編號TopID整型4上層編號DPName字符50單位名稱DPAddr字符100單位地址DPPhone字符30單位DPPerson字符8單位聯(lián)系人員工信息字段名字段類型寬度可否為空默認(rèn)值說明ID自動(dòng)4編號,主索引uname字符8姓名usex字符2性別birthday日期8生日DPID整型4所屬部門ISMsg邏輯1是否生日提醒上面的字符可以進(jìn)展相應(yīng)的增加或刪減,關(guān)鍵在于想實(shí)現(xiàn)的功能。任務(wù)仔細(xì)分析軟件本身,并可以進(jìn)展相應(yīng)改良,完成軟件分析任務(wù)。把個(gè)人設(shè)計(jì)的軟件也進(jìn)展上述的過程,完成數(shù)據(jù)庫概念設(shè)計(jì)及邏輯設(shè)計(jì)。實(shí)驗(yàn)二創(chuàng)立工程及數(shù)據(jù)庫創(chuàng)立工程在硬盤的相應(yīng)目錄下建設(shè)自己的工程文件夾,并在文件夾下建設(shè)data和doc兩個(gè)文件夾分別用來存放數(shù)據(jù)文件及開發(fā)文檔。翻開VFP8.0,建設(shè)工程文件,命名為EPUser〔可任意,為了后面方便表達(dá)〕。創(chuàng)立數(shù)據(jù)庫在工程管理器中新建一個(gè)數(shù)據(jù)庫EPData,并保存在Data文件夾中。創(chuàng)立表并設(shè)定索引在EPData數(shù)據(jù)庫下創(chuàng)立新表warning。表設(shè)計(jì)器如下:在warnid上建設(shè)主索引,在emplyid上建設(shè)普通索引。依照上邊的方法建設(shè)其他數(shù)據(jù)表。最終如下:建設(shè)表之間的關(guān)系選中Epdata數(shù)據(jù)庫,單擊修改翻開數(shù)據(jù)庫設(shè)計(jì)器把主表的主索引拖至從表的普通索引上建設(shè)關(guān)系任務(wù)完成企業(yè)員工管理軟件的工程創(chuàng)立及數(shù)據(jù)庫、數(shù)據(jù)庫表的創(chuàng)立,并建設(shè)相應(yīng)關(guān)系。完成自主設(shè)計(jì)的軟件的數(shù)據(jù)庫、數(shù)據(jù)庫表的創(chuàng)立工作。實(shí)驗(yàn)三數(shù)據(jù)可視化操作添加記錄翻開實(shí)驗(yàn)二創(chuàng)立的工程,并翻開epdata數(shù)據(jù)庫的設(shè)計(jì)器。雙擊Depart和employ表之間的關(guān)系線,翻開關(guān)系設(shè)定窗口。選擇“referentialintegrity〞選項(xiàng),并選擇插入規(guī)則,選擇級連項(xiàng),實(shí)現(xiàn)兩表之間的“相對完整性〞,確定退出窗體。在工程管理器中選擇depart表,并選擇“瀏覽〞,翻開瀏覽窗口,在“顯示〞菜單中選擇“追加模式〞,在表中添加兩條數(shù)據(jù),如以下列圖,在這里我們可以看到“聊城大學(xué)〞這個(gè)部門的topid為0而“教育傳播技術(shù)學(xué)院〞的topid為“聊城大學(xué)〞的id,通過這種方式實(shí)現(xiàn)部門間的級別管理,這種方式在開發(fā)中經(jīng)常使用。關(guān)閉depart表,再翻開employ表,使用上述方式添加數(shù)據(jù),當(dāng)我們在Dpid中添加了一個(gè)depart表中未出現(xiàn)的ID值時(shí),會(huì)出現(xiàn)如下錯(cuò)誤,而輸入的值為正確的,則會(huì)被確認(rèn),從這里我們可以看到完整性檢查的作用。建設(shè)一個(gè)與employ構(gòu)造一樣的表employ1,在表中添加一些數(shù)據(jù)。在翻開employ表,選擇“表〞菜單中的追加記錄,如以下列圖,點(diǎn)擊來源后面的瀏覽按鈕,找到employ1表,并設(shè)置選項(xiàng),選中除自動(dòng)編號以外的所有字段,確定后,查看employ表中是否添加了employ1中的數(shù)據(jù)。修改記錄翻開一個(gè)添加了數(shù)據(jù)的表格,然后使用“顯示〞菜單中的“編輯〞實(shí)現(xiàn)對數(shù)據(jù)的修改,不再演示,大家也可以設(shè)置表之間的關(guān)系,看一下更新規(guī)則的作用。刪除記錄翻開一個(gè)有數(shù)據(jù)的表格,點(diǎn)擊記錄左側(cè)的小矩形,這樣記錄便被邏輯刪除進(jìn)展物理刪除,翻開“表〞菜單,選擇徹底刪除,便可以實(shí)現(xiàn)“物理刪除〞任務(wù)在我們建設(shè)的表中添加適量數(shù)據(jù),以方便后續(xù)操作。實(shí)驗(yàn)四使用命令操作數(shù)據(jù)庫數(shù)據(jù)庫及表操作創(chuàng)立數(shù)據(jù)庫:CreateDataBasestumanage創(chuàng)立表:Createtableclasses(cidIAutoIncprimarykey,classnamec(20))

CreateTablestudent(stuidc(10)primarykey,stunamec(10),sexc(2)checksex=’男’orsex=’女’error“此數(shù)據(jù)只能為男或女〞default‘男’,classidI,foreignkeyclassidtagclassidreferencesclasses)修改表構(gòu)造:ALTERTABLEclassesaddteacherc(6)ALTERTABLEclassesalterteacherc(8)ALTERTABLEclassesrenameteachertomanagerALTERTABLEclassesdropmanager在當(dāng)前工作期中翻開要使用的表:USEclasses或selectclasses插入數(shù)據(jù):insertintoclasses(classname)values(‘2004級1班’)insertintoclasses(classname)values(‘2004級2班’)insertintoclasses(classname)values(‘2004級3班’)瀏覽數(shù)據(jù):browse或display或list,會(huì)發(fā)現(xiàn)使用display時(shí)只顯示第一條記錄,這時(shí)需要使用范圍語句displayall,大家可以使用條件語句看一下結(jié)果。查看當(dāng)前記錄各信息:?recno()&&顯示當(dāng)前記錄號?Bof() &&查看記錄指針是否在最前Eof() &&查看記錄指針是否在最后skip-1 &&使記錄指針向前滾動(dòng)一條?recno()

?Bof()

?Eof()

gototop &&使記錄指針移到頂端

?recno()

?Bof()

?Eof()條件定位:locateforcid=2?recno()在學(xué)生表中插入數(shù)據(jù):INSERTintostudent(stuid,stuname,sex,classid)values('20040101','zhang','男',1)INSERTintostudent(stuid,stuname,sex,classid)values('20040102','wang','女',2)修改學(xué)生數(shù)據(jù):updatestudentsetclassid=3wherestuid=’20040101刪除學(xué)生記錄:

DELETEFROMstudentwherestuid='20040101'LIST恢復(fù)被邏輯刪除的記錄:RECALLall再執(zhí)行上面的刪除命令后使用Pack命令,把記錄從磁盤徹底刪除。執(zhí)行查詢:select*fromstudentselectstuid,stunamefromstudent向?qū)W生表中多插入幾條記錄selectdistinctsexfromstudentselectsexas性別fromstudentselect*fromstudentwherestuid=’20040101select*fromstudentwherestuidin(‘20040101’,’20040102SELECT*fromstudentwherestunamelike'w%'SELECT*fromstudentwherestunamelike'w_'SELECT*fromstudentwherestunamelike'__a%'selectcount(*)as學(xué)生總數(shù)fromstudentSELECTA.*,B.classnamefromstudentA,classesBwhereA.classid=B.cidSELECTA.*,B.classnamefromstudentAinnerjoinclassesBonA.classid=B.cidSELECTA.*,B.classnamefromstudentArightouterjoinclassesBonA.classid=B.cidSELECT*fromstudentorderbystuiddescSELECTtop1*fromstudentorderbystuiddescSelectcount(*)asstucount,classidfromstudentgroupbyclassidSelect*fromstudentintocursortest刪除表:droptablestudentdroptableclasses刪除數(shù)據(jù)庫:

CLOSEALLDELETEDATABASEstumanage任務(wù)使用上面的命令在員工管理數(shù)據(jù)庫表的添加一些記錄實(shí)驗(yàn)五表單設(shè)計(jì)表單分析根據(jù)實(shí)驗(yàn)一中的工程功能分析,我們需要?jiǎng)?chuàng)立以下幾個(gè)表單。局部信息管理表單:實(shí)現(xiàn)對局部信息的添加、修改、刪除等管理員工信息管理表單:實(shí)現(xiàn)對員工信息的添加、修改、刪除等管理管理員管理表單:實(shí)現(xiàn)對管理員的添加、刪除等管理當(dāng)前用戶密碼修改表單:修改當(dāng)前用戶的密碼和真實(shí)姓名信息提示表單:當(dāng)啟動(dòng)軟件時(shí)顯示提示信息提示信息設(shè)置表單:設(shè)置提示信息登錄表單系統(tǒng)設(shè)置表單關(guān)于表單使用向?qū)?chuàng)立表單翻開員工管理工程,這里需要注意的是,VFP軟件有可能對中文目錄支持不太好,如果出現(xiàn)類似問題,請把工程放在一個(gè)英文目錄中。在工程管理器中選擇文檔〔documents〕,選擇表單,并新建。選擇使用向?qū)?,這里有兩項(xiàng),一項(xiàng)為哪一項(xiàng)表單向?qū)В硪粋€(gè)是一對多表單向?qū)?,可以看出我們也可以使用向?qū)Мa(chǎn)生基于兩個(gè)表的表單。選擇使用到的表字段,這里實(shí)現(xiàn)管理員管理的表單,所以選擇Manager表中的所有字段。選擇表單樣式,使用默認(rèn)即可。選擇排序字段,這里也可以不選擇。最后一步,設(shè)置表單標(biāo)題并設(shè)置保存,在工程文件夾下建設(shè)forms文件夾,并把表單保存在內(nèi)。最終效果如下:在我們的創(chuàng)立的數(shù)據(jù)庫中,部門表與員工表之間存在一對多關(guān)系,使用向?qū)ё约航ㄔO(shè)一個(gè)一對多的表單。使用表單設(shè)計(jì)器修改表單使用向?qū)傻谋韱斡袝r(shí)不能滿足我們的需要,這時(shí),我們需要使用表單設(shè)計(jì)器來完善表單的設(shè)計(jì)。下面我們來修改一下上面的表單。選擇我們剛剛創(chuàng)立的表單,進(jìn)展修改下面是表單設(shè)計(jì)器,同時(shí)會(huì)翻開表單控件面板和屬性面板選擇表格控件,并在表單中單擊,把控件添加到表單中。使用表格生成器來使表格與數(shù)據(jù)表之間綁定。選擇顯示的字段。設(shè)置顯示樣式修改表格字段顯示的標(biāo)題。點(diǎn)擊OK完成修改,關(guān)閉設(shè)計(jì)器并保存修改,使用工程管理器運(yùn)行表單查看最終效果。對于由向?qū)傻目丶?,可以通過屬性面板進(jìn)展修改,如改變標(biāo)題顯示(caption)。通過上述方式,多加測試,掌握表單設(shè)計(jì)的根本方法。完成其他表單部門信息管理:這里要用到一個(gè)Activex控件,方法是,翻開“工具〞菜單,選項(xiàng)中選擇控件面板,找到如以下列圖的控件:后從控件面板中選擇如下:就可以看到我們選擇的組件,拖放到表單中就可以了。員工信息管理登錄表單管理員管理表單用戶密碼修改表單提示信息管理表單提示信息添加表單,這里用了一個(gè)時(shí)間控件,如TreeView控件一樣,自行添加進(jìn)來即可。提示信息顯示表單實(shí)驗(yàn)六編寫代碼本實(shí)驗(yàn)分三次完成,主要實(shí)現(xiàn)程序的所有代碼,了解程序開發(fā)過程及代碼開發(fā)技巧。創(chuàng)立系統(tǒng)主程序主程序是所編寫程序的入口,主要設(shè)置運(yùn)行環(huán)境、定義變量、常量,然后調(diào)用其他表單,本程序文件保存為main.prg。CLEARCLEARALL*把系統(tǒng)菜單隱藏掉SETSYSMENUoff*程序運(yùn)行時(shí)不允許使用ESC鍵退出SETESCAPEOFF*關(guān)閉命令顯示SETTALKOFF*覆蓋時(shí)不要確認(rèn)SETSAFETYOFF*設(shè)置時(shí)間格式,使用四位顯示年代SETCENTURYonSETDATEYMD*定義一個(gè)公共變量,保存當(dāng)前用戶信息PUBLICcuruser*調(diào)用登錄表單DOFORMforms\login*進(jìn)入事務(wù)處理,當(dāng)執(zhí)行cleanevents時(shí)完畢READevents*當(dāng)完畢循環(huán)時(shí)執(zhí)行退出quit編寫登錄表單的代碼翻開實(shí)驗(yàn)五中已經(jīng)制作的Login表單,修改控件相應(yīng)屬性。控件屬性值組合框NameunameRowsourcemanager.unameRowsourcetype6-fieldsStyle2-dropdownlist文本框NameUpwdPasswordchar*表單AutocenterTrueBorderstyle2-固定對話框ClosbleFCaption用戶登錄controlboxFMaxButtonFMinButtonFNameFrmloginShowwindow作為頂層表單Windowtyp模式選中表單,附屬性面板中找到init事件,添加如下代碼:*定義一個(gè)公共變量來保存登錄次數(shù)PUBLIClogincountlogincount=0雙擊登錄按鈕,翻開按鈕的click事件:IFALLTRIM(thisform.uname.Value)==""then MESSAGEBOX("沒有選擇用戶名??!")ELSE LOCATEFORuname=ALLTRIM(thisform.uname.value) IFALLTRIM(thisform.upwd.Value)=ALLTRIM(upwd)then curuser=thisform.uname.value thisform.Release DOFORMforms\main return ELSE logincount=logincount+1 IFlogincount<3then thisform.upwd.Value="" thisform.upwd.SetFocus MESSAGEBOX("您的密碼輸入錯(cuò)誤,請重新輸入??!",16,"錯(cuò)誤") ELSE MESSAGEBOX("對不起,錯(cuò)誤次數(shù)已達(dá)3次,不能進(jìn)入系統(tǒng)??!",16,"報(bào)歉") thisform.Release CLEAREVENTS CLOSEALL quit endif endifENDIF為退出添加click事件:thisform.ReleaseCLEAREVENTSquit編寫主表單程序代碼主表單主要是起到調(diào)用其他表單的作用,在這里我們添加一個(gè)菜單和一個(gè)工具欄,從而了解如何創(chuàng)立表單與工具欄,以及如何在程序中使用它們。創(chuàng)立主表單,保存為main,設(shè)置屬性如下:控件屬性值表單AutocenterTrueCaption企業(yè)員工管理系統(tǒng)Height600Width600MDIformTNameFrmmainShowwindow作為頂層表單Windowtyp模式創(chuàng)立菜單,在工程管理器中選擇“其他〞選項(xiàng)卡,選中菜單,新建:選擇Menu,先制作如圖的菜單然后選擇菜單“顯示->常規(guī)選項(xiàng)〞選中“頂層表單〞,設(shè)計(jì)表單時(shí)要注意的問題是,需要生成,而且每一次改動(dòng)后都需要生成,否則使用的菜單是未生成前的菜單?!安藛危?gt;生成菜單〞:好了,下面我們把菜單參加到主表單中去。翻開主表單,添加“init〞事件:DOmenu\main.mprWITHthis*這里的菜單地址,請根據(jù)自己的保存位置確定。這里保存到menu文件件下了。可以運(yùn)行主表單看一下效果了。下面制作工具欄,選擇“類〞選項(xiàng)卡,新建類:從ToolBar類繼承制作自己的工具欄,添加按鈕,圖片資源可以從FTP得到。設(shè)置Showwindow屬性值為“在頂層表單中〞。因?yàn)楣ぞ邫谑桥c表單一級的對象,所以表單中不能容納工具欄,所以需要建設(shè)一個(gè)表單集來放置表單與工具欄,翻開主表單,使用“表單〞菜單中的“新建表單集〞建設(shè)表單集對象,這時(shí)我們使用代碼的方式把工具欄參加到主表單中去,設(shè)置表單集的init事件。PUBLICisCreateToolbarisCreateToolbar=0再在Activate事件中添加如下代碼:IFisCreateToolbar=0 isCreateToolbar=1*加載類 SETCLASSLIBTOlib\myclass *使用類創(chuàng)立對象 this.AddObject("tool1","mytoolbar") this.tool1.show*把工具欄停放在表單的上部this.tool1.dock(0)endif這時(shí)運(yùn)行主表單,效果如下:編寫管理員管理代碼控件屬性值表格NamegmanagerEnabledFalseRecordsourceManager表單BufferMode1Caption操作員管理NamefrmmanagerShowwindow在頂層表單中翻開表單的數(shù)據(jù)環(huán)境,選擇manager表。設(shè)置其屬性。buffermodeOveride:2,Exlusive:True添加按鈕的click事件:thisform.gManager.Enabled=.T.APPENDBLANKGObottomthisform.gManager.coLUMN1.text1.SetFocusthisform.Refresh修改按鈕的click事件:thisform.gManager.Enabled=.t.保存按鈕的click事件:YN=MESSAGEBOX("確定保存",4+32,"企業(yè)員工管理系統(tǒng)")IFYN=6then IFTABLEUPDATE(.f.)=.f.then MESSAGEBOX("保存出錯(cuò)") ELSE thisform.Refresh ENDIFENDIFthisform.gmanager.Enabled=.f.取消按鈕的click事件:IFMESSAGEBOX("確認(rèn)取消",4+32,"企業(yè)員工管理系統(tǒng)")==6then TABLEREVERT(.f.)ENDIFthisform.gmanager.Enabled=.f.thisform.Refresh刪除按鈕的click事件:IFMESSAGEBOX("確定刪除",32+4,"企業(yè)員工管理系統(tǒng)")==6then SELECTmanager DELETE thisform.gmanager.RecordSource=null PACK thisform.gmanager.RecordSource="manager" IFEOF() SKIP-1 ELSE IFBOF() SKIP ENDIF ENDIF thisform.Refreshendif提示信息添加代碼控件屬性值DateandtimerpickerNamemsgdate文本域namemsgcontent保存按鈕click事件:SETDATEYMDSETCENTURYonmdate=TTOD(thisform.msgdate._value)mcontent=ALLTRIM(thisform.msgcontent.Value)IFEMPTY(mdate).and.EMPTY(mcontent)then MESSAGEBOX("時(shí)間和內(nèi)容都不能為空") returnENDIFIFMESSAGEBOX("確定保存",4+32,"企業(yè)員工管理系統(tǒng)")=6 INSERTINTOwarning(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)??丶傩灾当砀馧amegmsgEnabledFalseRecordsourceManagerMousePointer1-Arrow表單BufferMode1Caption操作員管理NameFrmmsgShowwindow在頂層表單中翻開表單的數(shù)據(jù)環(huán)境,選擇waring表。設(shè)置其屬性。buffermodeOveride:2,Exlusive:True添加按鈕onclick事件:DOFORMforms/setmsgThisform.refresh修改按鈕的onclick事件:IFMESSAGEBOX("確定保存修改信息",4+32,"企業(yè)員工管理系統(tǒng)")=6then IFTABLEUPDATE(.f.)=.f.then MESSAGEBOX("保存出錯(cuò),請檢查") ELSE thisform.Refresh ENDifENDIFthisform.gmsg.Enabled=.f.取消按鈕的onclick事件:IFMESSAGEBOX("確認(rèn)取消",4+32,"企業(yè)員工管理系統(tǒng)")==6then TABLEREVERT(.f.)ENDIFthisform.gmanager.Enabled=.f.thisform.Refresh刪除按鈕的click事件:IFMESSAGEBOX("確定刪除",32+4,"企業(yè)員工管理系統(tǒng)")==6then SELECTwaring DELETE thisform.gmanager.RecordSource=null PACK thisform.gmanager.RecordSource="waring" IFEOF() SKIP-1 ELSE IFBOF() SKIP ENDIF ENDIF thisform.Refreshendif今日提醒代碼編寫控件屬性值文本框Namemsgreadonlytrue多項(xiàng)選擇框Nameisstart表單BufferMode1Caption今日提醒NameFrmtodayShowwindow在頂層表單中Windowtype1-模式標(biāo)簽Namelmsg表單init事件:PUBLICi,inumi=0inum=0SELECTwarningCOUNTFORshowdate=DATE()toinumIFinum<1then thisform.msg.Value="沒有本日提醒" thisform.lmsg.caption="沒有提醒"ELSE SELECTwarning SETFILTERTOshowdate=DATE() gotop i=1 thisform.msg.ControlSource="warning.msg" thisform.lmsg.caption="共有"+ALLTRIM(STR(inum))+"條提醒,第"+ALLTRIM(STR(i))+"條提醒" thisform.Refreshendif下一條按鈕單擊事件:SELECTwarningIF.not.EOF() SKIP i=i+1 thisform.lmsg.Caption="共有"+ALLTRIM(STR(inum))+"條提醒,第"+ALLTRIM(STR(i))+"條提醒"ENDIFthisform.Refresh確定按鈕onclick事件:IFthisform.isstart.Value=1 UPDATEsysSETisstart=.f.ENDIFthisform.release編寫部門管理代碼部門管理表單使用了一個(gè)ActiveX控件,如果想非常細(xì)致的了解此控件的使用方法,請參考FTP上給出的資料??丶傩灾禈湫蚇amedepartTreeStyle7名稱文本框NameEnamecontrolSourcedpname地址文本框NameEaddrcontrolSourcedpaddr文本框NameEphonecontrolSourcedpphone聯(lián)系人文本框NameEpersoncontrolSourceDpperson表單BufferMode1Caption部門信息管理NameFrmdepartShowwindow在頂層表單中Windowtype1-模式同樣要設(shè)置表單對應(yīng)的depart表格的屬性:buffermodeOveride:2,Exlusive:True首先我們給表單添加init事件:PUBLICisedit 定義一個(gè)變量來標(biāo)識(shí)當(dāng)前操作是添加還是修改PUBLICdpid 保存當(dāng)前部門編碼SELECTdepartGOtopthisform.ename.Value=dpnamethisform.eaddr.Value=dpaddrthisform.ephone.Value=dpphonethisform.eperson.Value=dppersonthisform.eaddr.Enabled=.f.thisform.ename.Enabled=.f.thisform.eperson.Enabled=.f.thisform.ephone.Enabled=.f.thisform.Refresh給樹形控件添加init事件this.Nodes.ClearSCANIFtopid==0Node=this.nodes.add(,1,"D"+ALLTRIM(STR(id)),ALLTRIM(dpname),,)*參加根節(jié)點(diǎn)ELSENode=this.nodes.add("D"+ALLTRIM(STR(topid)),4,"D"+ALLTRIM(STR(id)),ALLTRIM(dpname),,)ENDIFENDSCAN樹形控件的onclick事件:SELECTdepartLOCATEFORid=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=""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事件:IFMESSAGEBOX("確認(rèn)要?jiǎng)h除所選部門信息",4+32,"企業(yè)員工管理系統(tǒng)")==6then DELETEFROMdepartWHEREid=dpid PACK thisform.departtree.Init thisform.Refresh ENDif修改按鈕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=dpphonethisform.eperson.Value=dppersonthisform.eaddr.Enabled=.f.thisform.ename.Enabled=.f.thisform.eperson.Enabled=.f.thisform.ephone.Enabled=.f.保存按鈕onclick事件:IFMESSAGEBOX("確認(rèn)要保存修改后的信息嗎",4+32,"企業(yè)員工管理系統(tǒng)")==6then IFisedit="mod"then ename=ALLTRIM(thisform.ename.value) eaddr=ALLTRIM(thisform.eaddr.value) ephone=ALLTRIM(thisform.ephone.value) eperson=ALLTRIM(thisform.eperson.value) UPDATEdepartSETdpname=ename,dpaddr=eaddr,dpphone=ephone,dpperson=epersonWHEREid=dpid ENDIF IFisedit="add"then INSERTINTOdepart(topid,dpname,dpaddr,dpphone,dpperson)values(dpid,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.departtree.Initthisform.Refresh員工管理代碼編寫員工管理代碼請參考部門管理代碼和管理員管理代碼來完成。使菜單和工具欄與表單關(guān)聯(lián)到這里,把目前編寫的表單和主表單統(tǒng)一起來,使菜單項(xiàng)及工具欄按鈕可以響應(yīng)事件,翻開菜單,修改相應(yīng)項(xiàng),如提示信息管理下有子項(xiàng),所以設(shè)置為Submenu,單擊Edit進(jìn)展修改如下使用doform表單名稱〔注意表單路徑〕,來調(diào)用表單,其他相應(yīng)修改。翻開工具欄,為工具欄上的按鈕添加代碼,如doformforms/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)表新建報(bào)表翻開報(bào)表設(shè)計(jì)器在報(bào)表菜單中翻開標(biāo)題總結(jié)對話框選擇相應(yīng)選項(xiàng),這里Newpage選項(xiàng)是為了讓標(biāo)題區(qū)和總結(jié)區(qū)在單獨(dú)頁中顯示在標(biāo)題帶區(qū)中添加以下標(biāo)簽控件,并輸入文字在pageheader帶區(qū)中添加以下控件,標(biāo)簽控件中顯示“聊城大學(xué)教育傳播技術(shù)學(xué)院企業(yè)員工管理系統(tǒng)〞,在后面添加一個(gè)域控件,顯示Date(),下邊添加幾個(gè)矩形框,并改變其背風(fēng)光,并使用標(biāo)簽控件在其上添加相應(yīng)文字。為報(bào)表添加數(shù)據(jù)環(huán)境,與表單添加數(shù)據(jù)環(huán)境一樣。需要注意的是需要選擇視圖選項(xiàng)來顯示視圖對象。在detail區(qū)添加域控件及矩形控件,注意上邊框要移出帶區(qū)的上邊,而帶區(qū)下邊框與要矩形下邊框剛好一致,這樣才會(huì)出來最終效果,如果與效果不一致,也可以重新調(diào)整此處。在pagefooter區(qū)添加如下文字及直線最終效果如下:操作注意字體與矩形背景顏色可以使用“格式〞菜單中的相應(yīng)選項(xiàng)進(jìn)展設(shè)置。在操作多個(gè)對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論