教學(xué)課件-Visual-FoxPro程序設(shè)計基礎(chǔ)(第二版)_第1頁
教學(xué)課件-Visual-FoxPro程序設(shè)計基礎(chǔ)(第二版)_第2頁
教學(xué)課件-Visual-FoxPro程序設(shè)計基礎(chǔ)(第二版)_第3頁
教學(xué)課件-Visual-FoxPro程序設(shè)計基礎(chǔ)(第二版)_第4頁
教學(xué)課件-Visual-FoxPro程序設(shè)計基礎(chǔ)(第二版)_第5頁
已閱讀5頁,還剩268頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VisualFoxPro程序設(shè)計基礎(chǔ)教材、參考書與課時安排1.教材

VisualFoxPro程序設(shè)計基礎(chǔ)宋耀文主編VisualFoxPro程序設(shè)計基礎(chǔ)實驗與習(xí)題宋耀文主編2.參考書

二級教程-VisualFoxPro程序設(shè)計教育部考試中心編3.課時授課:64學(xué)時(理論:34學(xué)時;上機實踐:30學(xué)時)

課前預(yù)習(xí)、課后復(fù)習(xí)

記好筆記、做好作業(yè)

杜絕游戲,按時出勤課程要求共同學(xué)習(xí)共同探討共同提高數(shù)據(jù)庫系統(tǒng)基礎(chǔ)

第1章主要內(nèi)容1.1數(shù)據(jù)庫系統(tǒng)知識概述1.2數(shù)據(jù)模型1.3關(guān)系數(shù)據(jù)庫1.4VisualFoxPro操作基礎(chǔ)一、數(shù)據(jù)庫系統(tǒng)的基本概念二、數(shù)據(jù)庫系統(tǒng)的發(fā)展三、數(shù)據(jù)庫系統(tǒng)的特點1.1數(shù)據(jù)庫系統(tǒng)知識概述一、數(shù)據(jù)庫系統(tǒng)的基本概念1.?dāng)?shù)據(jù)(DATA)

是描述事物的符號記錄。(信息)2.?dāng)?shù)據(jù)庫(DB)

是以一定的組織方式存儲在計算機存儲設(shè)備上,與應(yīng)用程序彼此獨立、能為多個用戶共享、結(jié)構(gòu)化的相關(guān)數(shù)據(jù)的集合。4.?dāng)?shù)據(jù)庫系統(tǒng)(DBS)

是指引進數(shù)據(jù)庫技術(shù)后的計算機系統(tǒng),包括硬件系統(tǒng)、數(shù)據(jù)庫集合、數(shù)據(jù)庫管理系統(tǒng)和相關(guān)軟件、數(shù)據(jù)庫管理員、用戶等五部分。3.?dāng)?shù)據(jù)庫管理系統(tǒng)(DBMS)是指幫助用戶建立、使用和管理數(shù)據(jù)庫的軟件系統(tǒng),主要包括數(shù)據(jù)描述語言、數(shù)據(jù)操縱語言以及其他管理和控制程序。二、數(shù)據(jù)庫系統(tǒng)發(fā)展人工管理階段文件系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)階段人工管理階段應(yīng)用程序1數(shù)據(jù)集1應(yīng)用程序2數(shù)據(jù)集2應(yīng)用程序n數(shù)據(jù)集n...…...…特征:數(shù)據(jù)和程序

一一對應(yīng)缺點:應(yīng)用程序與數(shù)據(jù)之間依賴性太強,不獨立數(shù)據(jù)冗余大,數(shù)據(jù)結(jié)構(gòu)性差文件系統(tǒng)階段文件2...…應(yīng)用程序1文件1應(yīng)用程序2應(yīng)用程序n文件n...…存取方法特征:按文件名進行訪問、按記錄進行存取缺點:數(shù)據(jù)獨立性較差數(shù)據(jù)冗余性較大數(shù)據(jù)庫系統(tǒng)階段應(yīng)用程序1應(yīng)用程序2應(yīng)用程序n...…

數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫特征:把所有應(yīng)用程序中使用的數(shù)據(jù)匯集在一起,并以記錄為單位存儲起來,便于應(yīng)用程序查詢和使用三、數(shù)據(jù)庫系統(tǒng)特點1.數(shù)據(jù)的獨立性強,減少了應(yīng)用程序和數(shù)據(jù)結(jié)構(gòu)的相

互依賴性。2.數(shù)據(jù)的冗余度小,盡量避免存儲數(shù)據(jù)的相互重復(fù)。3.數(shù)據(jù)的共享度高,即一個數(shù)據(jù)庫中的數(shù)據(jù)可以為不

同用戶所使用。4.數(shù)據(jù)的集成性,便于對數(shù)據(jù)統(tǒng)一管理和控制。一、數(shù)據(jù)模型的基本概念二、實體間的聯(lián)系三、數(shù)據(jù)模型的分類1.2數(shù)據(jù)模型一、數(shù)據(jù)模型的基本概念1.實體(Entity)

客觀存在并可互相區(qū)別的事物(實際事物或抽象事件)。2.實體集(EntitySet)性質(zhì)相同的同類型實體的集合稱為“實體集”。4.域

(Domain)屬性的取值范圍。3.屬性屬性是實體集中每個成員具有的描述性性質(zhì)。5.關(guān)系(Relationship)

實體之間的相互聯(lián)系。分為三種類型:①一對一關(guān)系;②一對多關(guān)系;③多對多關(guān)系。二、實體間的聯(lián)系實體型1聯(lián)系名實體型2111:1聯(lián)系實體型1聯(lián)系名實體型2mnm:n聯(lián)系實體型1聯(lián)系名實體型21n1:n聯(lián)系三、數(shù)據(jù)模型的分類層次模型網(wǎng)狀模型關(guān)系模型1.層次模型

用樹形結(jié)構(gòu)表示實體及其之間聯(lián)系的數(shù)據(jù)模型。層次模型的特點:

有且僅有一個結(jié)點無向上(無雙親)的聯(lián)系,稱為根結(jié)點;除根結(jié)點以外的其他結(jié)點有且僅有一個向上(雙親)的聯(lián)系。

層次分明,結(jié)構(gòu)清晰,反映一對多聯(lián)系。

R1

根結(jié)點

R2

兄弟結(jié)點

R3

葉結(jié)點

R4

兄弟結(jié)點

R5

葉結(jié)點

葉結(jié)點層次模型示例1層次模型示例2成棟學(xué)院商務(wù)管理系計算機系

電子系

外語系軟件教研室網(wǎng)絡(luò)教研室2.網(wǎng)狀模型

用網(wǎng)狀結(jié)構(gòu)表示實體及其間聯(lián)系的數(shù)據(jù)模型。以記錄型實體為結(jié)點,實體之間多線聯(lián)系。網(wǎng)狀模型的特點:

有一個以上的結(jié)點無向上(無雙親)的聯(lián)系;一個結(jié)點有多個向上的聯(lián)系。

表達能力強,反映多對多的聯(lián)系,結(jié)構(gòu)復(fù)雜。

R1

R2

R3

L1

L2

R1

R2L3L1L2

R3L4

R4

R5

網(wǎng)狀模型示例1網(wǎng)狀模型示例2教師學(xué)生課程選課3.關(guān)系模型

用二維表格結(jié)構(gòu)表示實體及其間聯(lián)系的數(shù)據(jù)模型。關(guān)系模型的特點:

關(guān)系中每一數(shù)據(jù)項不可再分,是最基本的單位;每一豎列數(shù)據(jù)項是同屬性的。列數(shù)根據(jù)需要而設(shè),且各列的順序是任意的;每一橫行記錄由一個事物的諸多屬性項構(gòu)成。記錄的順序可以是任意的;一個關(guān)系是一張二維表,不允許有相同的字段名,也不允許有相同的記錄行。

關(guān)系模型示例1關(guān)系必須是規(guī)范化的,關(guān)系的每一個分量必須是一個不可分的數(shù)據(jù)項。關(guān)系模型示例2一、關(guān)系數(shù)據(jù)庫的基本概念二、常用的關(guān)系運算三、關(guān)系的完整性1.3關(guān)系數(shù)據(jù)庫一、關(guān)系數(shù)據(jù)庫的基本概念1.關(guān)系

(Relation)

一個關(guān)系對應(yīng)一個二維表,有一個關(guān)系名;(在VFP中稱數(shù)據(jù)表文件,擴展名為.dbf)

。2.屬性

(Attribute)表中一列為一個屬性,有屬性名;(VFP中稱字段);4.域

(Domain)屬性的取值范圍。3.元組

(Tuple):表中一行為一個元組,由若干個屬性值組成;(在VFP中稱記錄);5.關(guān)鍵字

(Key)

屬性或?qū)傩缘募?能唯一標識一個元組。候選關(guān)鍵字;主關(guān)鍵字;外部關(guān)鍵字;(主屬性和非主屬性)二、常用的關(guān)系運算1.選擇(Selection)

從一個關(guān)系中找出滿足給定條件的元組(水平方向抽取記錄)的操作;2.投影

(Projection)從一個關(guān)系中選取若干個屬性(垂直方向抽取字段),構(gòu)成一個新關(guān)系的操作;3.連接(Join)

根據(jù)條件將兩個關(guān)系組合成一個新關(guān)系的操作。選擇運算示例性別=“女”女0304030104毛錫平男0304010105宋科宇男投影運算示例連接運算示例三、關(guān)系的完整性1.實體完整性是對關(guān)系中元組唯一性的約束.該約束規(guī)定構(gòu)成主關(guān)鍵字的所有屬性均不能為空值(Null)或有重復(fù)值。2.參照完整性是關(guān)系之間數(shù)據(jù)引用的約束.該約束規(guī)定某個關(guān)系外部關(guān)鍵字的值必須是與其已建立聯(lián)系的另一個關(guān)系主關(guān)鍵字的值或空值。3.域完整性是對關(guān)系中屬性的約束.該約束確定屬性的數(shù)據(jù)類型、取值的域、以及是否可以為Null等。一、VisualFoxPro6.0的安裝與啟動二、VisualFoxPro6.0的窗口介紹三、VisualFoxPro6.0的工作方式1.4VisualFoxPro操作基礎(chǔ)四、VisualFoxPro6.0的數(shù)據(jù)類型五、VisualFoxPro6.0命令概述一、VisualFoxPro6.0的安裝與啟動處理器:Pentium586133MHz以上。內(nèi)存儲器:16MB以上的內(nèi)存,推薦使用32MB以上的內(nèi)存。硬盤空間:典型安裝需要85MB硬盤空間;若選擇全部安裝需

要約190MB的硬盤空間。操作系統(tǒng):Windows95以上的操作系統(tǒng)。顯示器:VGA或更高分辨率顯示器。其他:鼠標、光盤驅(qū)動器。1.安裝VisualFoxPro6.0的計算機最低配置一、VisualFoxPro6.0的安裝與啟動圖1-1“安裝向?qū)?VisualFoxPro6.0”對話框2、安裝VisualFoxPro6.0步驟截圖一、VisualFoxPro6.0的安裝與啟動圖1-2“安裝向?qū)?最終用戶許可協(xié)議”對話框一、VisualFoxPro6.0的安裝與啟動圖1-3“安裝向?qū)?產(chǎn)品號和用戶ID”對話框一、VisualFoxPro6.0的安裝與啟動圖1-4“安裝向?qū)?選擇公用安裝文件夾”對話框一、VisualFoxPro6.0的安裝與啟動圖1-5“VisualFoxPro6.0安裝程序”對話框一、VisualFoxPro6.0的安裝與啟動圖1-6“第一次啟動VisualFoxPro6.0”對話框二、VisualFoxPro6.0的窗口介紹標題欄菜單欄主窗口常用工具欄命令窗口狀態(tài)欄三、VisualFoxPro6.0的工作方式菜單操作鼠標操作、鍵盤操作命令操作即在命令窗口輸入相應(yīng)的命令,按Enter鍵之后便立即執(zhí)行該命令。對已經(jīng)執(zhí)行過的命令會在窗口中自動保留,如果需要執(zhí)行前面輸入過的相同命令,只要將光標移到該命令行所在的任意位置,按Enter鍵即可。另外,還可以對命令進行修改、刪除、剪切、復(fù)制、粘貼等操作。程序方式

將執(zhí)行一系列操作命令在程序編輯窗口編寫成一個程序,通過運行程序完成一系列操作。四、VisualFoxPro6.0的數(shù)據(jù)類型1.字符型

(Character)

由英文字母、數(shù)字、標點符號、空格、中文字符和其他可打印符號組成。2.?dāng)?shù)值型

(Numeric)

由數(shù)字(0~9),正負號(+,-),小數(shù)點(.)組成,用于表示數(shù)值的大小。4.日期型

(Date)

由年、月、日組成的數(shù)據(jù)。長度:8B。3.貨幣型

(CurrencY)

專用表示貨幣的數(shù)值型數(shù)據(jù),需加貨幣前綴符“$”。5.日期時間型

(DateTime)

由年、月、日加時、分、秒組成的數(shù)據(jù)。四、VisualFoxPro6.0的數(shù)據(jù)類型6.邏輯型(Logical)

有邏輯真值.T.和邏輯假值.F.;

長度:1B。。7.備注型

(Memo)

僅用于數(shù)據(jù)表中的字符型數(shù)據(jù).在表中長度:4B,實際內(nèi)容保存在與表文件同名(擴展名.fpt)的備注文件中,其長度取決于計算機系統(tǒng)存儲空間大小。9.整型

(Integer)

僅用于數(shù)據(jù)表中存儲無小數(shù)的整數(shù)值,長度:4B。8.通用型

(General)

僅用于數(shù)據(jù)表中,可存儲如圖片、圖像、聲音、電子表格等OLE對象和多媒體數(shù)據(jù).表中長度:4B,實際內(nèi)容則保存在備注文件中。10.浮點型

(Float)

僅用于數(shù)據(jù)表中以浮點格式存儲的數(shù)據(jù).長度同N。四、VisualFoxPro6.0的數(shù)據(jù)類型11.雙精度型

(Double)

僅用于數(shù)據(jù)表中存儲高精度浮點數(shù)的數(shù)據(jù)。12.二進制字符型

(CharacterBinary)

僅用于在數(shù)據(jù)表中存儲不需要系統(tǒng)代碼頁維護的字符數(shù)據(jù)。決于計算機系統(tǒng)存儲空間大小。13.二進制備注型

(MemoBinary)

僅用于在數(shù)據(jù)表中存儲不需系統(tǒng)代碼頁維護的備注型數(shù)據(jù)。五、VisualFoxPro6.0命令格式命令格式<命令動詞>[范圍][[Fields]表達式表][For|While條件][To目標]2.命令舉例Display

All

Fieldsxh,xm,xbFor

xb="男"ToPrint命令動詞范圍表達式表條件目標3.命令說明:(1)<命令動詞>必不可少,它規(guī)定了要完成或?qū)崿F(xiàn)的操作與功能(2)大多數(shù)命令和功能短語只需輸入前四個字母即可;(3)除字符串外,其他符號均為ASCII碼字符,字母不分大小寫;(4)各子句順序可任意排列,之間用空格分隔;表達式表中各項用

“,”分隔;用“|”分隔的子句可選用其一。

下課了。。。追求休息一會兒。。。數(shù)據(jù)庫與表的基本操作

第2章主要內(nèi)容2.1數(shù)據(jù)庫與表的概述2.2表的建立與修改2.3表的操作2.4數(shù)據(jù)庫操作主要內(nèi)容2.5數(shù)據(jù)庫表2.6表的索引與排序2.7工作區(qū)和數(shù)據(jù)工作期2.8表的關(guān)系1.?dāng)?shù)據(jù)庫

數(shù)據(jù)庫就是一個邏輯上的概念和手段,對關(guān)聯(lián)的數(shù)據(jù)庫表及相關(guān)數(shù)據(jù)庫對象進行統(tǒng)一的組織和管理;擴展名為“.DBC”,同時會自動建立一個擴展名為“.DCT”的數(shù)據(jù)庫備注文件和一個擴展名為“.DCX”的數(shù)據(jù)庫索引文件;一、數(shù)據(jù)庫與表的概述2.表在關(guān)系數(shù)據(jù)庫中,將關(guān)系稱為表。在VisualFoxPro中,表就是規(guī)則帶有表頭的二維表格;表表結(jié)構(gòu)表數(shù)據(jù)字段類型小數(shù)位數(shù)表中記錄字段名字段寬度學(xué)號C(6)姓名C(8)入學(xué)成績N(5.1)000101張學(xué)光420.5000102劉全會480.0000103李建460.0000104樂樂500.0表的組成

確定表結(jié)構(gòu)

菜單方式或是命令方式建表

輸入表數(shù)據(jù)二、表的建立與修改表的建立1.表結(jié)構(gòu)表的結(jié)構(gòu)包括字段名、字段類型、字段寬度、小數(shù)位數(shù)等屬性。

字段名必須以字母、漢字或下劃線開頭,可以包含字母、漢字、數(shù)字和下劃線組成;不能包含空格,不能以數(shù)字開頭。

字段類型決定存儲在字段中的值的數(shù)據(jù)類型,可以是字符型(C)、數(shù)值型(N)、浮點型(F)、整型(I/4)、日期型(D/8)邏輯型(L/1)備注型(M/4)、通用型(G/4)等

字段寬度指明允許字段存儲的最大字節(jié)數(shù)。二、表的建立與修改2.建表命令方式

CREATE[<表文件名>]-進入【表設(shè)計器】對話框,在該對話框中輸入表中的各個字段的字段名、字段類型、字段寬度和小數(shù)位數(shù)等信息。菜單方式VisualFoxPro系統(tǒng)主菜單下,選擇【文件】-【新建】命令-彈出【新建】對話框-單擊【表】-【新建文件】按鈕,彈出【創(chuàng)建】對話框-進入【表設(shè)計器】對話框,在該對話框中輸入表中的各個字段的字段名、字段類型、字段寬度和小數(shù)位數(shù)等信息。

菜單方式

命令方式二、表的建立與修改3.輸入表數(shù)據(jù)

立即輸入確定表結(jié)構(gòu)后直接輸入追加輸入Append

[blank]插入輸入Insert

[before][blank]修改表結(jié)構(gòu)命令方式:MODIFYSTRUCTURE菜單方式:【顯示】-【表設(shè)計器】2.修改表數(shù)據(jù)命令方式:BROWSE|EDIT|CHANGE瀏覽狀態(tài)下修改,邊看邊修改菜單方式:【顯示】-【編輯】3.成批替換修改命令方式:Replace<范圍><字段名1>with<表達式1>

Replace<范圍><字段名1>with<表達式1>[For<條件1>][WHILE<條件2>]在指定范圍內(nèi),對符合條件的記錄,用表達式1替換字段1的值。

Replaceall入學(xué)成績with入學(xué)成績+15For性別=“女”

二、表的建立與修改表的修改4、范圍命令-四種NEXTN:從當(dāng)前記錄開始下N條記錄(含當(dāng)前記錄)

如:顯示表中3-6條記錄go3(go與3之間空格,回車,指針定位到第3條記錄)

然后再執(zhí)行l(wèi)istnext4RecordN:僅指向表中的第N條記錄

如:顯示表中第99條記錄LISTReco99ALL:操作范圍所有記錄Rest:從當(dāng)前記錄開始一直到表的最后一條記錄

如:表有15條記錄,執(zhí)行g(shù)o2listrest二、表的建立與修改表的修改三、表的操作1.表的打開

USE<表名>[ALIAS<表別名>]文件-打開-表名

表的打開、關(guān)閉與顯示3.表記錄的顯示List:不間斷顯示,默認顯示的是全部記錄Display:分頁顯示,默認顯示的是當(dāng)前記錄2.表的關(guān)閉USE|closeall|quit三、表的操作1.邏輯刪除命令格式:delete[范圍][for條件]

如:刪除表中女同學(xué)黨員記錄Deleteallfor性別=“女”and是否黨員=.T.

表記錄的刪除與恢復(fù)3.物理刪除命令格式:Pack功能:物理刪除就是從表中刪除帶有標記的記錄(物理刪除的記錄將不能恢復(fù))2.邏輯刪除(加了刪除標記)記錄的恢復(fù)命令格式:Recall[<范圍>][FOR<條件1>][while<條件1>]如:恢復(fù)表中所有女同學(xué)記錄Recaallfor性別=女4.清表

命令格式:ZAP三、表的操作1.絕對定位命令格式:go[to]n|Top|BottomGon:指針定位在第N條記錄Gotop:指針定位到表的第1條記錄Gobott:指針定位到表的最后1條記錄

指針定位2.相對定位命令格式:Skip[+-][n]功能:以當(dāng)前記錄指針為基準,將指針向正方向或反方向移動N條記錄

GO6skip-3disp

三、表的操作指針定位3.條件定位命令格式:Locate[范圍]for<條件1>[WHILE<條件2>]功能:在當(dāng)前表指定的范圍內(nèi),查找滿足條件的第1條記錄或

確定無此記錄;4.簡單函數(shù)記錄號函數(shù):

Recno()測試函數(shù):

bof()、eof()?Bof()若輸出的為.T.說明指針已指向文件頭?eof()如輸出為.T.說明指針已指向文件底四、數(shù)據(jù)庫的操作菜單方式:

選擇【文件】-【新建】命令-彈出【新建】對話框-單擊【數(shù)據(jù)庫】-【新建文件】按鈕,彈出【創(chuàng)建】對話框-在“保存在”下拉列表框選擇文件存放位置,并在“數(shù)據(jù)庫名”文本框中給出數(shù)據(jù)庫文件名,單擊“保存”按鈕。命令方式:CREATEDATABASE[<數(shù)據(jù)庫文件名]1.建立數(shù)據(jù)庫菜單方式

選擇【文件】菜單中的“打開”命令或單擊“常用”工具欄上的【打開】按鈕

,在“查找范圍”下拉列表框中選擇數(shù)據(jù)庫文件存放的位置,在“文件類型”下拉列表框中選擇文件類型為“數(shù)據(jù)庫(*.dbc)”,在文件列表中選擇要打開的文件名,單擊【確定】按鈕,即可打開數(shù)據(jù)庫,同時也打開“數(shù)據(jù)庫設(shè)計器”窗口。2.打開數(shù)據(jù)庫四、數(shù)據(jù)庫的操作命令方式:OPENDATABASE[<數(shù)據(jù)庫文件名>] MODIFYDATABASE[<數(shù)據(jù)庫文件名>]2.打開數(shù)據(jù)庫命令方式:SETDATABASETO[<數(shù)據(jù)庫文件名>]3.設(shè)置當(dāng)前數(shù)據(jù)庫命令格式:

CLOSEDATABASE CLOSEALL4.關(guān)閉數(shù)據(jù)庫四、數(shù)據(jù)庫的操作命令方式:DELETEDATABASE<數(shù)據(jù)庫文件名>|?[DELETETABLES][RECYCLE]5.刪除數(shù)據(jù)庫五、數(shù)據(jù)庫表2.數(shù)據(jù)庫表與自由表二者的區(qū)別一個是單獨存在,一個是歸數(shù)據(jù)庫管理;自由表字段寬度只能輸入10個字節(jié),數(shù)據(jù)庫表可輸入128個字節(jié);數(shù)據(jù)庫表可建立主索引,自由表則不可以;數(shù)據(jù)庫表可設(shè)置字段、記錄有效性;數(shù)據(jù)庫表:歸數(shù)據(jù)庫管理的表稱為數(shù)據(jù)庫表;自由表:單獨存在的表稱為自由表;聯(lián)系:自由表可添加到數(shù)據(jù)庫中稱為數(shù)據(jù)庫表,數(shù)據(jù)庫表也可

移出成為自由表;1.?dāng)?shù)據(jù)庫與表的關(guān)系五、數(shù)據(jù)庫表4.數(shù)據(jù)庫中添加表打開“數(shù)據(jù)庫”,在“數(shù)據(jù)庫設(shè)計器”界面中單擊右鍵彈出的快捷菜單中選擇“添加表”,選擇需要添加的表,點擊“確定”。菜單方式打開“數(shù)據(jù)庫”,在“數(shù)據(jù)庫設(shè)計器”界面中單擊右鍵彈出的快捷菜單中選擇“新建表”。3.?dāng)?shù)據(jù)庫表的創(chuàng)建5.數(shù)據(jù)庫中減少表打開“包含數(shù)據(jù)表的數(shù)據(jù)庫”,選中數(shù)據(jù)庫表,右擊,選擇“刪除”命令會彈出如下圖所示對話框,選擇相應(yīng)按鈕。五、數(shù)據(jù)庫表7.修改數(shù)據(jù)表中的記錄字段瀏覽狀態(tài)下即可對表中的字段、記錄進行修改;菜單方式打開數(shù)據(jù)庫,選擇數(shù)據(jù)表后選擇數(shù)據(jù)庫-瀏覽|或在數(shù)據(jù)庫設(shè)計器中右擊,彈出快捷菜單,選擇瀏覽;6.瀏覽數(shù)據(jù)表8.數(shù)據(jù)庫表字段有效性設(shè)置打開數(shù)據(jù)表,選中數(shù)據(jù)表,右擊,選擇修改點擊【顯示】菜單-【表設(shè)計器】六、表的索引與排序候選關(guān)鍵字如

一個字段集的值能唯一標識表中的記錄而又不含有多余的字段,則稱該字段集為候選關(guān)鍵字。一個表中可以有多個候選關(guān)鍵字。

外部關(guān)鍵字

如果一個字段集不是所在表的關(guān)鍵字,而是其他表的關(guān)鍵字,則稱該字段集為外部關(guān)鍵字。索引

指將表按某關(guān)鍵表達式的值進行邏輯排序而生成的索引文件。它是一個很小的文件,必須和表配合使用。1.基本概念六、表的索引與排序1.主索引①區(qū)分于每一條記錄,一個數(shù)據(jù)庫表只能建立一個主索引;②被索引的字段值不允許出現(xiàn)重復(fù)的值;③被索引的字段值不允許空值;2.候選索引:與主索引具有相同的特性。一個表可建立多個候選索引;3.唯一索引當(dāng)一個索引對應(yīng)值有多個時,只顯示重復(fù)值最前邊的;4.普通索引允許字段中出現(xiàn)重復(fù)值,并且索引項中也允許出現(xiàn)重復(fù)值。2.索引類型六、表的索引與排序單索引:

一個索引文件只含有一個索引,單索引只有升序,擴展名為:.idx命令格式:indexon<表達式>to<索引文件名>

如:按入學(xué)成績?yōu)樗饕M行升序排列Indexon入學(xué)成績torxcjs索引文件名:rxcjs可以隨便起復(fù)合索引:(分為結(jié)構(gòu)復(fù)合索引和獨立復(fù)合索引)獨立復(fù)合索引:擴展名固定,主名可任意命令格式:indexon<索引表達式>tag<索引名>of<索引文件名>結(jié)構(gòu)復(fù)合索引:主名和表名相同indexon<索引表達式>tag<索引名>[UNIQE|CANDIDATE][descending|Ascending]3.索引的種類六、表的索引與排序索引實例如:1.對”學(xué)生表””,用”入學(xué)成績”字段創(chuàng)建一單索引”rxcj.idx”和結(jié)構(gòu)索引”rxcj.cdx”降序

單索引:indexon入學(xué)成績torxcj結(jié)構(gòu)索引:indexon入學(xué)成績tagrxcjdesc

2.對”學(xué)生表””,用”性別”、”入學(xué)成績”兩個字段創(chuàng)建一個索引”xbcj”Indexon性別+str(入學(xué)成績)tagxbcj六、表的索引與排序打開:1、use<表名>index<索引名>2、setindexto<索引名>關(guān)閉:1、use2、closeindex指定:setorderto[tag]<索引名>|[索引序號]4.索引的打開、關(guān)閉、指定六、表的索引與排序Find(必須是已建立索引)如:查詢學(xué)生表中的”姓名”為”宋科宇”的記錄Use學(xué)生表Indexon姓名tagxmFind宋科宇DisplaySeek查詢例如:用seek命令在”學(xué)生表.dbf”中查找姓名為“宋科宇”的記錄Use學(xué)生表Indexon姓名tagxm2Seek“宋科宇”Display5.索引的查詢六、表的索引與排序命令格式:Deletetag<索引名>&&刪除復(fù)合索引文件中的索引DeletetagallDeletefile<索引文件名>&&刪除單索引6.索引的刪除命令格式:SORTTO<表文件名>ON<字段l>[/A][/D][/C][,<字段2>[/A][/D][/C]…][ASCENDING|DESCENDING][范圍][FIELDS<字段名表>][FOR<條件>][WHILE<條件>]7.表的排序六、表的索引與排序7.表的排序例1:對學(xué)生表的入學(xué)成績按降序排序,排序結(jié)果保存到XCJ表中。另外,XCJ表中的入學(xué)成績均應(yīng)大于490分:Use學(xué)生表Sorttoxcjon入學(xué)成績/dfor入學(xué)成績>490Usexcjlist例2:對STU.dbf表中的入學(xué)成績按降序排序,姓名按升序排列,并保存到CJXM表中。UseSTU.dbfSorttocjxmon入學(xué)成績/d,姓名/aUsecjxmlist六、表的索引與排序8.表的統(tǒng)計和匯總計算命令計數(shù)命令:Count–統(tǒng)計記錄個數(shù)

命令格式:Count[to<內(nèi)存變量>][for<條件>]

實例1:統(tǒng)計”職工表”中工資大于1500的已婚人數(shù),并將結(jié)果保留到內(nèi)存變量中。Use職工表Countfor工資>1500and婚否=.t.tozg1?zg1求和命令:SUM

命令格式:sum[<表達式>][for條件]實例1:求出職工表中女教師的工資之和use職工表Sum工資for性別=“女”tongz?ngz六、表的索引與排序8.表的統(tǒng)計和匯總計算命令匯總(分類匯總):total命令格式:totalon<關(guān)鍵字>to<新表名>[for<條件1>]實例1:對”職工表”按”性別”進行分類匯總Use職工表Indexon性別tagxbTotalon性別toxbhUsexbhList姓名,性別,工資,職稱求平均值:Average命令格式:Average[<表達式>][for條件]實例1:求出”職工表”中女教師的平均工資Use職工表Averagefor性別=“女”tonp?np七、工作區(qū)和數(shù)據(jù)工作期1.工作區(qū)的表示VisualFoxPro提供了32767個工作區(qū),系統(tǒng)以l~32767作為各工作區(qū)的編號。工作區(qū)的別名有兩種,一種是系統(tǒng)定義的別名:1~lO號工作區(qū)的別名分別為字母A~J,其他工作區(qū)的別名分別為W11~W32767。另一種是用戶定義的別名,用命令“USE(表文件名)ALIAS(別名)”指定。由于一個工作區(qū)只能打開一個表,因此可以把表的別名作為工作區(qū)的別名。若未用ALIAS子句對表指定別名,則以表的主名作為別名。2.工作區(qū)的選擇

命令格式:SELECT<工作區(qū)號>|<別名>|0

該命令選擇一個工作區(qū)為當(dāng)前工作區(qū),以便打開一個表或把該工作區(qū)中已打開的表作為當(dāng)前表進行操作。VisualFoxPro默認1號工作區(qū)為當(dāng)前工作區(qū)。SELECT0表示選擇當(dāng)前沒有被使用的最小號工作區(qū)為當(dāng)前工作區(qū)八、表的關(guān)系1.分類:永久關(guān)系、臨時關(guān)系永久關(guān)系:一直存在-為數(shù)據(jù)庫而建立的。臨時關(guān)系:暫時存在建立永久關(guān)系步驟:1建立數(shù)據(jù)庫

2添加三個表

3通過菜單指定索引

4建立關(guān)系連線八、表的關(guān)系2.參照完整性的設(shè)置:點擊菜單-數(shù)據(jù)庫-清理數(shù)據(jù)庫雙擊關(guān)系線(或右擊)設(shè)置完整性(按題目要求設(shè)置)完成

下課了。。。追求休息一會兒。。。程序設(shè)計基礎(chǔ)第3章主要內(nèi)容3.1常量與變量3.2常用函數(shù)3.3表達式3.4程序設(shè)計概述3.5程序的基本結(jié)構(gòu)一、常量二、變量三、內(nèi)存變量常量命令3.1常量與變量一、常量

常量通常是指在命令或程序執(zhí)行過程中保持不變的數(shù)據(jù),是在命令或程序中被直接引用的一個具體的、不變的實際值。

常量根據(jù)基本數(shù)據(jù)類型可以分為6種:數(shù)值型常量、貨幣型常量、字符型常量、日期型常量、日期時間型常量和邏輯型常量。1.字符型常量(C):由字母、數(shù)字、標點符號、空格、中文字符和其他可打印符號組成,用定界符(‘

’,“

”,[])界定的字符串;定界符必須成對且在字符串兩端。長度≤255個ASCII碼字符。2.數(shù)值型常量(N):由數(shù)字、正負號、小數(shù)點組成。分日常計數(shù)法;科學(xué)計數(shù)法。3.貨幣型常量(Y):用于貨幣,帶前綴符號“$”的數(shù)值,其小數(shù)位≤4位。一、常量4.日期型常量(D):由年,月,日組成,用{}界定。有多種顯示格式和分隔符。默認美國格式:{mm/dd/yy}表示月/日/年。嚴格日期格式:{^yyyy-mm-dd},首字符^,年4位。5.日期時間型常量(T):由日期和時間組成,一般格式:{<日期>,<時間>}。嚴格格式:{^yyyy-mm-dd,hh[:mm[:ss]][am|pm]}。6.邏輯型常量(L):僅有邏輯真值(.t..T..y..Y.)和邏輯假值(.f..F..n..N.);定界符.號不可缺少。二、變量

變量是指在命令或程序執(zhí)行過程中其值可以改變的數(shù)據(jù)對象。每個變量有一個變量名,代碼通過變量名來訪問變量的取值。

VFP中,變量分兩大類:字段變量、內(nèi)存變量。

1.字段變量(永久性的多值變量)

依賴于數(shù)據(jù)表文件而存在,定義數(shù)據(jù)表結(jié)構(gòu)時設(shè)定,不能隨意刪除和改變其數(shù)據(jù)類型;每個字段名是一個字段變量,為多值變量;支持13種數(shù)據(jù)類型。例如:職工表的姓名字段,性別字段等。二、變量

2.內(nèi)存變量特點:獨立存在,可任意定義、使用,單值變量.除非保存在內(nèi)存變量文件中,內(nèi)存變量及其中保存的數(shù)據(jù)會因退出VFP而全部丟失。數(shù)據(jù)類型:取決于所存數(shù)據(jù)的類型,支持C,N,Y,D,T,L六種。命名:由字母,數(shù)字,下劃線,中文字符組成,長度≤254個字符。例如:a1,ab等。優(yōu)先級:字段變量高于內(nèi)存變量;若有同名,則需加前綴符: M.<內(nèi)存變量名>|M-><內(nèi)存變量名>變量是指在命令或程序執(zhí)行過程中其值可以改變的數(shù)據(jù)對象。每個變量有一個變量名,代碼通過變量名來訪問變量的取值。三、內(nèi)存變量常用命令

1.內(nèi)存變量的賦值(1)<內(nèi)存變量名>=<表達式>(2)STORE<表達式>TO<內(nèi)存變量名表>(3)Input[提示信息]T0<內(nèi)存變量>(4)Accept[提示信息]TO<內(nèi)存變量名>(5)Wait[提示信息][TO內(nèi)存變量][Window][Nowait][Timeout<數(shù)值表達式>]2.表達式值的顯示格式:?/??[表達式表]注:?后面若沒有表達式表,則只進行換行操作。3.2常用函數(shù)

函數(shù)是用程序來實現(xiàn)的一種數(shù)據(jù)轉(zhuǎn)換或運算。每一個函數(shù)一般需要若干個運算對象,即自變量,但只有一個運算結(jié)果,稱為函數(shù)返回值。

VisualFoxpro提供了380多個標準函數(shù)。本章將介紹5類常用函數(shù):數(shù)值函數(shù)、字符函數(shù)、日期和時間函數(shù)、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)、測試函數(shù)。一、數(shù)值函數(shù)1.絕對值函數(shù)[命令格式]ABS(<數(shù)值表達式>)[功能]該函數(shù)返回指定的數(shù)值表達式的絕對值。2.求整數(shù)函數(shù)[命令格式]INT(<數(shù)值表達式>)[功能]該函數(shù)返回數(shù)值表達式的整數(shù)部分。3.四舍五入函數(shù)[命令格式]ROUND(<數(shù)值表達式1>,<數(shù)值表達式2>)[功能]該函數(shù)返回數(shù)值表達式在制定位置四舍五入后的結(jié)果。4.求余數(shù)函數(shù)[命令格式]MOD(<數(shù)值表達式1>,<數(shù)值表達式2>)[功能]該函數(shù)返回兩個數(shù)相除后的余數(shù)。5.求最值函數(shù)[命令格式]MAX(<數(shù)值表達式1>[,<數(shù)值表達式2>…])[功能]該函數(shù)返回數(shù)值表達式中的最大值表達式。[命令格式]MIN(<數(shù)值表達式1>[,<數(shù)值表達式2>…])[功能]該函數(shù)返回數(shù)值表達式中的最小值表達式。二、字符函數(shù)1.求字符串長度函數(shù)[命令格式]LEN(<字符表達式>)[功能]LEN()函數(shù)返回字符表達式值得長度,函數(shù)值為數(shù)值型。2.空格字符串生成函數(shù)[命令格式]SPACE(<數(shù)值表達式>)[功能]該函數(shù)生成指定空格數(shù)的空字符串。3.取子串函數(shù)[命令格式]LEFT(<字符表達式>,<長度>)[功能]該函數(shù)從字符表達式值的左端取一個指定長度的子串作為函數(shù)值。[命令格式]RIGHT(<字符表達式>,<長度>)[功能]該函數(shù)從字符表達式值的右端取一個指定長度的子串作為函數(shù)值。[命令格式]SUBSTR(<字符表達式>,<數(shù)值表達式1>[,<數(shù)值表達式2>])[功能]返回由<字符表達式>所決定的字符串的子串,該子串在字符串中的起始位置由<數(shù)值表達式1>決定,其長度由<數(shù)值表達式2>決定。三、日期和時間函數(shù)1.系統(tǒng)日期和時間函數(shù)[命令格式]DATE()

[功能]該函數(shù)返回當(dāng)前系統(tǒng)日期,函數(shù)值為日期型。[命令格式]TIME()

[功能]該函數(shù)以24小時制、hh:mm:ss格式返回當(dāng)前系統(tǒng)時間,函數(shù)值為字符型。[命令格式]DATETIME()[功能]該函數(shù)返回當(dāng)前系統(tǒng)日期時間,函數(shù)值為日期時間型。2.年份、月份、天數(shù)函數(shù)[命令格式]YEAR(<日期表達式>︱<日期時間表達式>)[功能]該函數(shù)從指定的日期表達式或日期時間表達式中返回年份。[命令格式]MONTH(<日期表達式>︱<日期時間表達式>)[功能]該函數(shù)從指定的日期表達式或日期時間表達式中返回月份。[命令格式]DAY(<日期表達式>︱<日期時間表達式>)[功能]該函數(shù)從指定的日期表達式或日期時間表達式中返回天數(shù)。四、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)1.數(shù)值轉(zhuǎn)換成字符串[命令格式]STR(<數(shù)值表達式>[,<長度>[,<小數(shù)位數(shù)>]])

[功能]該<數(shù)值表達式>的值轉(zhuǎn)換成字符串。2.字符串轉(zhuǎn)換成數(shù)值[命令格式]VAL(<字符表達式>)

[功能]該函數(shù)將數(shù)值字符串轉(zhuǎn)換成數(shù)值。3.宏替換函數(shù)[命令格式]&<字符型變量>[.][功能]替換出字符型變量的內(nèi)容,即&的值是變量中的字符串。五、測試函數(shù)1.表文件尾測試函數(shù)[命令格式]EOF([<工作區(qū)號>︱<表別名>])

[功能]該函數(shù)測試記錄指針是否指向文件尾。2.表文件首測試函數(shù)[命令格式]BOF([<工作區(qū)號>︱<表別名>])[功能]該函數(shù)測試記錄指針是否指向文件首。3.記錄號測試函數(shù)[命令格式]RECNO([<工作區(qū)號>︱<表別名>])[功能]該函數(shù)返回當(dāng)前表文件中當(dāng)前

表達式是由常量、變量和函數(shù)通過特定的運算符連接起來的式子。根據(jù)表達式值的類型,表達式可以分為數(shù)值表達式、字符表達式、日期和時間表達式、關(guān)系表達式和邏輯表達式。3.3表達式一、數(shù)值表達式

數(shù)值表達式又叫做算術(shù)表達式。算術(shù)運算符+、-、*、/、**或^、%以及()。算術(shù)運算符優(yōu)先級如下表所示。算術(shù)運算符及其優(yōu)先級

優(yōu)先級

運算符

說明1()形成表達式內(nèi)的子表達式2**或^乘方運算3*、/、%乘、除、求余運算4+、-加、減運算二、字符表達式

字符表達式由字符串連接運算符將字符型常量、變量或者函數(shù)連接起來形成,其運算結(jié)果仍然是一個字符型數(shù)據(jù)。字符串運算符有以下兩個,它們的優(yōu)先級相同。

+:前后兩個字符串首尾連接形成一個新的字符串。

-:連接前后兩個字符串,并將前字符串的尾部空格移到合并后的新字符串尾部。三、日期時間表達式

日期時間表達式中可以使用的運算符也有+和-兩個。四、關(guān)系表達式

關(guān)系表達式通常稱為簡單邏輯表達式,它由關(guān)系運算符將兩個運算對象連接起來形成,關(guān)系運算符的作用是比較兩個表達式的大小與前后。關(guān)系運算符及其優(yōu)先級

運算符

說明

運算符

說明<

小于<=

小于或等于>

大于>=

大于或等于=

等于==

字符串精確比較<>、#或!=不等于$

子串包含測試五、邏輯表達式

邏輯表達式是由邏輯運算符將邏輯型數(shù)據(jù)連接而成的。邏輯型運算符有3個:.NOT.或?。ㄟ壿嫹牵?AND.(邏輯與)和.OR.(邏輯或)。其優(yōu)先級順序依次為.NOT.、.AND.、.OR.。一、程序的概念二、程序設(shè)計方法三、程序文件的建立與執(zhí)行3.4程序設(shè)計概述四、簡單的輸入/輸出命令

程序就是計算機能夠分析執(zhí)行的命令集合。

程序設(shè)計就是根據(jù)問題的要求,按一定的邏輯關(guān)系,將一系列的命令組合在一起,形成一個命令序列的過程。

執(zhí)行程序就是依次執(zhí)行其中的每一條命令,直至全部命令執(zhí)行完畢。

程序通常以文件形式存放在磁盤上,在VisualFoxPro中,程序文件也稱為命令文件,其擴展名為.prg。

程序文件一旦建立,可以多次重復(fù)執(zhí)行

一、程序的概念

程序設(shè)計方法主要經(jīng)歷了結(jié)構(gòu)化的程序設(shè)計和面向?qū)ο蟮某绦蛟O(shè)計兩個階段。1.結(jié)構(gòu)化程序設(shè)計方法結(jié)構(gòu)化程序設(shè)計方法的主要原則如下:①自頂向下、逐步求精②程序結(jié)構(gòu)模塊化③每一個模塊內(nèi)部均由順序、選擇、循環(huán)三種基本結(jié)構(gòu)組成。④基本控制結(jié)構(gòu)只允許有一個入口和一個出口。⑤限制使用goto語句。2.面向?qū)ο蟮某绦蛟O(shè)計方法二、程序設(shè)計方法

1.程序文件的建立與修改程序文件是擴展名為.prg的純文本文件。建立和編輯程序文件可以使用外部編輯器或者內(nèi)部編輯器。采用內(nèi)部編輯器建立程序文件的方法如下:

①菜單方式單擊“文件”下拉菜單中的“新建”命令,或者單擊常用工具欄上的“新建”按鈕;在“新建”對話框中選擇文件類型為“程序”,然后單擊“新建文件”按鈕,打開編輯窗口。單擊“文件”下拉菜單中的“打開”命令,在“打開”對話框中選擇已經(jīng)建立的程序文件,可將其打開并進行編輯。

三、程序文件的建立與執(zhí)行

②命令方式格式1:ModifyCommand<程序文件名>格式2:ModifyFile<程序文件名.擴展名>功能:建立或編輯程序文件。說明:

程序文件名必須以字母開頭,由字母、數(shù)字、下劃線組成,其默認的擴展名為.prg,使用ModifyCommand命令,可以省略擴展名,使用ModifyFile命令不能省略擴展名。

執(zhí)行Modify命令時,文件名前可以加路徑,系統(tǒng)首先在指定路徑或當(dāng)前路徑下查找命令中指定的文件,如果未找到,則建立新文件,進入編輯窗口;如果找到了命令中指定的文件,系統(tǒng)自動將該文件調(diào)入內(nèi)存并顯示在編輯窗口中。三、程序文件的建立與執(zhí)行

2.執(zhí)行程序文件

①菜單方式單擊“程序”菜單中的“運行”命令②命令方式格式:Do[<路徑>]<程序文件名>[With<實際參數(shù)表>]

功能:將磁盤上指定的程序文件調(diào)入內(nèi)存并運行。說明:

程序執(zhí)行過程中,若發(fā)生錯誤,系統(tǒng)將顯示出錯信息,用戶可返回編輯狀態(tài)進行修改。

可選項[With<實際參數(shù)表>]用于執(zhí)行帶參數(shù)的程序。參數(shù)的作用是向運行的程序傳遞數(shù)據(jù)。三、程序文件的建立與執(zhí)行格式:Input[字符表達式]T0<內(nèi)存變量>功能:用于接收從鍵盤輸入的表達式,并將其運算結(jié)果存入指定的內(nèi)存變量中。說明:①Input命令執(zhí)行時,先在屏幕上顯示<提示信息>,然后暫停程序的運行,等待從鍵盤輸入數(shù)據(jù)。用戶輸入數(shù)據(jù)后,按下回車鍵,系統(tǒng)將輸入的數(shù)據(jù)保存到指定的內(nèi)存變量中,程序繼續(xù)執(zhí)行。②Input命令能夠接收任意類型的VisualFoxPro表達式,計算出結(jié)果后,再賦值給內(nèi)存變量。如果輸入的表達式中有字符串、日期型、邏輯型常量,則必須使用定界符。③如果內(nèi)存變量未定義,執(zhí)行此命令時建立內(nèi)存變量,類型取決于輸入的數(shù)據(jù)類型。④Input語句每次只能為一個變量輸入值。四、簡單的輸入/輸出命令1.INPUT命令格式:Accept[<提示信息>]To<內(nèi)存變量名>功能:將從鍵盤上接收的字符串存入指定的內(nèi)存變量中。說明:①執(zhí)行此命令時,先在屏幕上顯示<提示信息>,然后暫停程序運行,等待用戶從鍵盤輸入數(shù)據(jù),并以回車鍵結(jié)束。系統(tǒng)將輸入的數(shù)據(jù)存入指定的內(nèi)存變量中,程序繼續(xù)執(zhí)行。②可選項[<提示信息>]的含義與Input語句相同。③Accept語句只能接收字符型數(shù)據(jù),因此所有輸入的數(shù)據(jù)都被作為字符串,并且不需要加定界符。④如果內(nèi)存變量未定義,將在執(zhí)行此命令時建立內(nèi)存變量。Accept語句所定義的內(nèi)存變量為字符型。四、簡單的輸入/輸出命令2.ACCEPT命令格式:Wait[<提示信息>][To<內(nèi)存變量>][Window][Nowait][Timeout<數(shù)值表達式>]功能:執(zhí)行該命令時,暫停程序的運行,在屏幕上顯示<提示信息>,并等待用戶從鍵盤輸入任意一個字符,之后將其賦值給指定的內(nèi)存變量,程序繼續(xù)執(zhí)行。說明:①可選項[<提示信息>]的含義與Input語句相同。②使用可選項To<內(nèi)存變量>,是將用戶輸入的字符存入<內(nèi)存變量>中;若按回車鍵,內(nèi)存變量的值為空。若無此可選項,鍵入的值不保存。注意,<內(nèi)存變量>中只能保存一個字符。四、簡單的輸入/輸出命令3.WAIT命令一、順序結(jié)構(gòu)二、選擇結(jié)構(gòu)三、循環(huán)結(jié)構(gòu)3.5程序的基本結(jié)構(gòu)四、程序的模塊化設(shè)計

順序結(jié)構(gòu)是最簡單的一種基本結(jié)構(gòu),順序結(jié)構(gòu)是按照語句的先后順序依次執(zhí)行的一種程序結(jié)構(gòu)。一、順序結(jié)構(gòu)

選擇結(jié)構(gòu)又稱分支結(jié)構(gòu),是根據(jù)給定的條件是否成立來選擇執(zhí)行某些語句。包括簡單的選擇結(jié)構(gòu)和多分支選擇結(jié)構(gòu)。1.簡單的選擇結(jié)構(gòu)格式:IF<條件表達式><命令序列>

ENDIF功能:條件值為.T.時,執(zhí)行命令序列,然后執(zhí)行Endif后的命令;條件取值為.F.時,命令序列不執(zhí)行,直接執(zhí)行Endif后的命令。二、選擇結(jié)構(gòu)2.雙分支選擇結(jié)構(gòu)格式:IF<條件表達式><命令序列1>

ELSE

<命令序列2>

ENDIF功能:根據(jù)條件的取值在<命令序列1>與<命令序列2>這兩條路徑中選擇一條執(zhí)行。條件值為.T.時,執(zhí)行<命令序列1>;條件取值為.F.時,執(zhí)行<命令序列2>;然后執(zhí)行Endif后的命令。說明:If、Else和Endif必須配對使用,且這三條子句應(yīng)各占一行;<命令序列1>和<命令序列2>中可以嵌套If語句,但不能交叉。二、選擇結(jié)構(gòu)二、選擇結(jié)構(gòu)3.多分支選擇結(jié)構(gòu)格式:DOCASECASE<條件l><命令序列1>

CASE<條件2><命令序列2>

…CASE<條件n><命令序列n>

[OTHERWISE

<命令序列m>]EDNCASE二、選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)功能:依次判斷命令中列出的條件,只要找到某一條件取值為.T.,就執(zhí)行與之相關(guān)的命令序列,余下的條件便不再判斷,有關(guān)的命令當(dāng)然亦不執(zhí)行。在沒有一個條件取值為.T.時,若有可選項Otherwise,就執(zhí)行命令序列m,否則,什么也不做。因此,在眾多的命令序列中,多分支選擇結(jié)構(gòu)最多只選擇執(zhí)行其中的一個命令序列,有可能一個也不執(zhí)行。執(zhí)行過程如說明:⑴DoCase和第一個Case子句之間不能插入任何命令。⑵DoCase和Endcase必須配對使用,且DoCase、Case、Otherwise和Endcase各子句必須各占一行。⑶<命令序列>中可含有任何VisualFoxPro命令,包括可嵌套DoCase命令。二、選擇結(jié)構(gòu)二、選擇結(jié)構(gòu)1.DOWHILE語句格式:DOWHILE<條件>

<命令序列>

[LOOP]

<命令序列>

[EXIT]

<命令序列>

ENDDO功能:首先判斷條件表達式的值,若為.T.,就執(zhí)行DoWhile與Enddo之間的命令序列(稱為循環(huán)體),然后再判斷條件表達式的值,重復(fù)剛才的過程。一旦條件取值為.F.,就跳出循環(huán)體轉(zhuǎn)而執(zhí)行Enddo后的下一條命令。三、循環(huán)結(jié)構(gòu)DOWHILE語句說明:⑴DoWhile和Enddo必須成對出現(xiàn)。⑵可選項Exit能立即跳出循環(huán),執(zhí)行Enddo后的下一條命令。⑶可選項Loop則把控制轉(zhuǎn)到循環(huán)結(jié)構(gòu)的開始,并根據(jù)條件的取值決定是否開始一次新的循環(huán)。Exit與Loop可以出現(xiàn)在循環(huán)體內(nèi)的任何位置上。⑷循環(huán)是否繼續(xù)取決于條件表達式的當(dāng)前取值,一般情況下循環(huán)體中應(yīng)含有改變條件表達式值的命令,否則將形成死循環(huán)。⑸循環(huán)結(jié)構(gòu)也能自身嵌套,還能與分支結(jié)構(gòu)的各種形式嵌套。三、循環(huán)結(jié)構(gòu)三、循環(huán)結(jié)構(gòu)2.FOR語句格式:For<內(nèi)存變量>=<表達式l>To<表達式2>[Step<表達式3>]<命令序列>[Exit][Loop]Endfor|Next功能:本命令中的內(nèi)存變量(又稱循環(huán)變量)的作用類似于計數(shù)器。它的取值范圍由<表達式1>(初值)與<表達式2>(終值)確定。通過判斷內(nèi)存變量的取值是否在指定范圍中來確定循環(huán)體是否重復(fù)執(zhí)行三、循環(huán)結(jié)構(gòu)

三、循環(huán)結(jié)構(gòu)3.SCAN語句格式:Scan[<范圍>][For<條件表達式>]<命令序列>[Exit][Loop]EndScan功能:對當(dāng)前表的指定記錄,依次重復(fù)執(zhí)行循環(huán)體,每循環(huán)一次,表的指針自動下移一位。說明:在數(shù)據(jù)庫應(yīng)用程序中,經(jīng)常要對表中的指定記錄逐個進行某種處理,VisualFoxPro專門提供了表記錄掃描循環(huán),利用它能非常方便地完成逐條記錄掃描。請注意,Scan循環(huán)只能用于表打開的情況。三、循環(huán)結(jié)構(gòu)3.SCAN語句三、循環(huán)結(jié)構(gòu)4.LOOP語句和EXIT語句

LOOP語句和EXIT語句可以用在循環(huán)語句中。LOOP語句用于結(jié)束本次循環(huán),進入下一次循環(huán)的判斷;EXIT語句用于結(jié)束循環(huán)語句。三、循環(huán)結(jié)構(gòu)5.循環(huán)的嵌套循環(huán)可以嵌套。例如,若在循環(huán)體中又包含一個循環(huán),即形成兩層循環(huán)嵌套。按其所處的位置分別稱為外循環(huán)與內(nèi)循環(huán)。VisualFoxPro中循環(huán)嵌套層數(shù)最多允許128層,內(nèi)循環(huán)必須完全嵌在外循環(huán)中,不能出現(xiàn)交叉。內(nèi)、外循環(huán)的循環(huán)變量通常使用不同的變量名。不論哪一種循環(huán),循環(huán)入口和出口是配套的。即endd、endf、endscan總是和最近的dowhil、for、scan配套。Loop字句,規(guī)定它必須轉(zhuǎn)到所在層次的循環(huán)入口而不能轉(zhuǎn)到外層的循環(huán)入口;exit子句只能退出當(dāng)前的循環(huán)不能一次退出多層循環(huán)體。三、循環(huán)結(jié)構(gòu)

在程序設(shè)計中,通常將一個大的功能模塊劃分成若干個小的模塊,這種設(shè)計思想就是程序的模塊化設(shè)計。在模塊化程序設(shè)計過程中,需要在一個模塊中調(diào)用另一個模塊,被調(diào)用模塊成為過程、子程序或自定義函數(shù)。1.子程序子程序調(diào)用使用Do命令。為使子程序具有通用性,通常子程序中都帶有參數(shù)。四、程序的模塊化設(shè)計求S=(M!+N!)/K!1.子程序

四、程序的模塊化設(shè)計

2.過程過程的定義方式有兩種。其一,將多個過程保存成一個獨立的程序文件(稱為過程文件);其二,直接與主程序保存在一起,通常把它寫在主程序的后面。過程的定義格式如下:

Procedure<過程名1>

…ReturnProcedure<過程名2>

…Return

…說明:每個過程以Procedure開頭,以Return結(jié)尾。四、程序的模塊化設(shè)計求S=(M!+N!)/K!2.過程

四、程序的模塊化設(shè)計3.函數(shù)自定義函數(shù)與過程定義方法相似,主要區(qū)別為:⑴過程以Procedure開頭,而自定義函數(shù)必須以Function開頭來定義。⑵自定義函數(shù)必須返回一個函數(shù)值,而子程序或過程卻無此限制。格式:Function<函數(shù)名><命令序列>

Return<表達式>四、程序的模塊化設(shè)計求S=(M!+N!)/K!3.函數(shù)

四、程序的模塊化設(shè)計

下課了。。。追求休息一會兒。。。結(jié)構(gòu)化查詢語言SQL

第四章主要內(nèi)容4.1數(shù)據(jù)查詢功能4.2數(shù)據(jù)定義功能4.3數(shù)據(jù)操縱功能結(jié)構(gòu)化查詢語言(structuredquerylanguage,SQL)是關(guān)系數(shù)據(jù)庫的標準語言。SELECT以職工表為例子注:(1)顯示內(nèi)容不用把表打開,*代表顯示所有字段(2)distinct去掉重復(fù)值,單查詢?nèi)啃畔⒉荒苡茫?)SQL中條件where(4)%代表任意多個字符,_下劃線代表一個字符(5)orderby排序,descending降序4.1、數(shù)據(jù)查詢功能●*表示查詢表中所有字段

例1:select*from職工表●from短語指定查詢數(shù)據(jù)需要的表

例2:select姓名,職稱,工資from職工表●where短語表示查詢條件

例3:select*from職工表where工資>2000●orderby短語后面跟排序選項

例4:select*from職工表orderby工資asc/desc●groupby短語后面跟分組字段

例5:select*from職工表groupby職稱

例6:selectsum(工資),職稱from職工表groupby職稱●distint表示查詢結(jié)果中去掉重復(fù)的記錄

例7:selectdistint職稱from職工表4.1.1基于單個表的查詢通配符:%代表任意多個字符

例8:select*from職工表where姓名like“李%”_代表任意一個字符

例9:select*from職工表where姓名like“李_”

例10:查詢“職工表”中職稱人數(shù)在2人以上的信息,并按人數(shù)降序輸出sele職稱,count(*)人數(shù)from職工表groupby職稱havingcount(*)>=2orderby人數(shù)deschaving:過濾條件,不可以單獨使用,having必須與groupby聯(lián)合使用.例11:查詢“職工表”中的所有信息,并將查詢結(jié)構(gòu)保存在ZGB中select*from職工表intoDBFZGB例12:查詢“職工表”中的所有信息,并將查詢結(jié)構(gòu)保存在臨時表TEMP中select*from職工表intoCURSORTEMP●保存結(jié)構(gòu)分以下幾種情況:①不加任何存儲——默認為窗口瀏覽

②存在表文件中——臨時表:關(guān)VF,內(nèi)容則丟失,存在緩存里intocursor

永久表:關(guān)機、關(guān)VF內(nèi)容還有,存在磁盤上intodbf

③存在文本文檔中——擴展名為.txt文件tofile左聯(lián)接:左表全要,右表只要符合條件的

10*10=100右聯(lián)接:右表全要,左表只要符合條件的

5*20=100全聯(lián)接:左表全要,右表全要

10*20=200內(nèi)聯(lián)接:左表只要符合條件的,右表只要符合條件的

5*10=504.1.2聯(lián)接查詢5/10

10/20●例:查詢工資最高的教師姓名、職稱、工資的信息sele姓名,職稱,工資from職工表where工資=(selemax(工資)from職工表)●例:查詢授課表中有授課任務(wù)的相關(guān)教師信息sele*from職工表where職工號in(seledistinct職工號from授課表)●例:查詢授課表中沒有授課任務(wù)的相關(guān)教師信息sele*from職工表where職工號notin(seledistinct職工號from授課表)●例:查詢工資低于1500的教師的職工號和職稱sele職工號,職稱from職工表where職工號in(sele職工號from職工表where工資<1500)groupby職工號●例:查詢低于平均工資的教師信息sele*from職工表where工資<(seleavg(工資)from職工表)4.1.3嵌套查詢表的定義例:建立數(shù)據(jù)庫“學(xué)生.bdf”,在“學(xué)生”數(shù)據(jù)庫中建立STU.DBF表,表中包含學(xué)號、姓名、出生日期、入學(xué)日期、入學(xué)成績createtablestu(學(xué)號C(4),姓名C(8),出生日期D,入學(xué)日期D,入學(xué)成績N(5,1))createDBFstu(學(xué)號C(4),姓名C(8),出生日期D,入學(xué)日期D,入學(xué)成績N(5,1))

4.2數(shù)據(jù)定義功能表結(jié)構(gòu)的修改●例:刪除STU表中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論