版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VisualFoxPro程序設(shè)計(jì)
第1章數(shù)據(jù)庫系統(tǒng)概論
數(shù)據(jù)庫基本概念1.1數(shù)據(jù)模型1.2關(guān)系數(shù)據(jù)庫1.31.1數(shù)據(jù)庫基本概念
1.1.1信息、數(shù)據(jù)與數(shù)據(jù)庫信息(Information)是客觀世界在人們頭腦中的反映,是客觀事物的表征,是可以傳播和加以利用的一種知識(shí)。數(shù)據(jù)(Data)是信息的載體,是對(duì)客觀存在實(shí)體的一種記載和描述。數(shù)據(jù)庫(DataBase,簡稱DB)是指存儲(chǔ)在計(jì)算機(jī)外部存儲(chǔ)器上的、結(jié)構(gòu)化的相關(guān)數(shù)據(jù)集合。1.1.2數(shù)據(jù)管理技術(shù)的發(fā)展
1.人工管理階段2.文件管理階段3.?dāng)?shù)據(jù)庫管理階段1.1.3數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)是管理數(shù)據(jù)庫的軟件工具,是幫助用戶創(chuàng)建、維護(hù)和使用數(shù)據(jù)庫的軟件系統(tǒng)。DBMS應(yīng)具有以下一些功能。(1)數(shù)據(jù)定義功能(2)數(shù)據(jù)操作功能(3)控制和管理功能(4)數(shù)據(jù)字典功能1.1.4數(shù)據(jù)庫系統(tǒng)
1.?dāng)?shù)據(jù)庫系統(tǒng)的組成引入數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng)稱為數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,簡稱DBS)。DBS通常包含下述5個(gè)部分。(1)計(jì)算機(jī)硬件平臺(tái)(2)數(shù)據(jù)庫集合(3)數(shù)據(jù)庫管理系統(tǒng)(4)相關(guān)軟件(5)人員2.?dāng)?shù)據(jù)庫系統(tǒng)的特點(diǎn)(1)數(shù)據(jù)結(jié)構(gòu)化(2)數(shù)據(jù)共享(3)數(shù)據(jù)獨(dú)立性(4)統(tǒng)一的數(shù)據(jù)控制
此外,數(shù)據(jù)庫系統(tǒng)須提供下述數(shù)據(jù)安全保護(hù)措施:安全性控制完整性控制并發(fā)操作控制1.2數(shù)據(jù)模型
數(shù)據(jù)庫中的數(shù)據(jù)是按一定邏輯結(jié)構(gòu)存放的,這種邏輯結(jié)構(gòu)是用數(shù)據(jù)模型來表示的。1.2.1實(shí)體及實(shí)體間的聯(lián)系
客觀存在的并且可以相互區(qū)分的事物稱為實(shí)體(Entity)。實(shí)體之間的聯(lián)系可以歸結(jié)為以下3種類型。一對(duì)一聯(lián)系一對(duì)多聯(lián)系多對(duì)多聯(lián)系1.2.2主要數(shù)據(jù)模型
(1)層次模型層次模型的數(shù)據(jù)集合中,各數(shù)據(jù)對(duì)象之間是一種依次的一對(duì)一的或一對(duì)多的聯(lián)系。層次結(jié)構(gòu)也稱為樹型結(jié)構(gòu)。
層次結(jié)構(gòu)模型的特點(diǎn)如下:有且僅有一個(gè)根結(jié)點(diǎn),其層次最高;一個(gè)父結(jié)點(diǎn)向下可以有若干個(gè)子結(jié)點(diǎn),而一個(gè)子結(jié)點(diǎn)向上只有一個(gè)父結(jié)點(diǎn);同層次的結(jié)點(diǎn)之間沒有聯(lián)系。(2)網(wǎng)狀模型
網(wǎng)狀結(jié)構(gòu)數(shù)據(jù)模型的各數(shù)據(jù)實(shí)體之間,是一種層次不清楚的一對(duì)一、一對(duì)多、或多對(duì)多的聯(lián)系,此種結(jié)構(gòu)可用來表示數(shù)據(jù)間復(fù)雜的邏輯關(guān)系。網(wǎng)狀結(jié)構(gòu)模型的特點(diǎn)如下:一個(gè)結(jié)點(diǎn)可以有多個(gè)父結(jié)點(diǎn);可以有一個(gè)以上的結(jié)點(diǎn)無父結(jié)點(diǎn);兩個(gè)結(jié)點(diǎn)之間可以有多個(gè)聯(lián)系。(3)關(guān)系模型
關(guān)系結(jié)構(gòu)數(shù)據(jù)模型用二維表格表示實(shí)體及實(shí)體之間的聯(lián)系,即用若干行與若干列構(gòu)成的表格來描述數(shù)據(jù)集合以及它們之間的聯(lián)系,這樣的一個(gè)表格被稱為一個(gè)關(guān)系。其中的每一列稱為一個(gè)字段(Field),每一行稱為一個(gè)記錄(Record)。
對(duì)于一個(gè)符合關(guān)系模型的二維數(shù)據(jù)表格,必須滿足以下條件:表中不允許有重復(fù)的字段名;表中每一列中數(shù)據(jù)的類型必須相同;表中不應(yīng)有內(nèi)容完全相同的數(shù)據(jù)行;表中行的順序或列的順序的任意排列,應(yīng)不影響表中各數(shù)據(jù)項(xiàng)間的關(guān)系。1.3關(guān)系數(shù)據(jù)庫
1.3.1關(guān)系術(shù)語與關(guān)系特點(diǎn)1.關(guān)系術(shù)語關(guān)系:符合一定條件的一張二維表格稱為一個(gè)關(guān)系。元組:關(guān)系中的每一行數(shù)據(jù)被稱為一個(gè)元組,或者稱為一個(gè)記錄。屬性:關(guān)系中的每一列數(shù)據(jù)被稱為一個(gè)屬性,或者稱為一個(gè)字段。域:是屬性的取值范圍,即不同元組對(duì)同一個(gè)屬性的取值所限定的范圍。關(guān)鍵字:關(guān)系中的某個(gè)屬性或?qū)傩越M合,其值可以唯一地標(biāo)識(shí)一個(gè)元組,稱其為關(guān)鍵字。主關(guān)鍵字與候選關(guān)鍵字:如果一個(gè)關(guān)系中存在多個(gè)關(guān)鍵字,可以選定其中一個(gè)作為主關(guān)鍵字,其余為候選關(guān)鍵字。外部關(guān)鍵字:如果關(guān)系中的某個(gè)屬性或?qū)傩越M合并非本關(guān)系的關(guān)鍵字,而是另一個(gè)關(guān)系的關(guān)鍵字,稱其為外部關(guān)鍵字。關(guān)系模式:對(duì)關(guān)系的描述稱為關(guān)系模式。一個(gè)關(guān)系模式對(duì)應(yīng)于一個(gè)關(guān)系結(jié)構(gòu),它是命名的屬性集合。其格式為:關(guān)系名(屬性名1,屬性名2,…,屬性名n)。2.關(guān)系特點(diǎn)
每個(gè)屬性必須是不可分隔的數(shù)據(jù)單元;在同一個(gè)關(guān)系中不能出現(xiàn)相同的屬性名;在一個(gè)關(guān)系中不允許有完全相同的元組;在一個(gè)關(guān)系中任意交換兩行的位置不影響數(shù)據(jù)的實(shí)際含義;在一個(gè)關(guān)系中任意交換兩列的位置不影響數(shù)據(jù)的實(shí)際含義。1.3.2關(guān)系運(yùn)算
利用關(guān)系的選擇、投影和連接運(yùn)算,可以方便地在一個(gè)或多個(gè)關(guān)系中抽取所需的各種數(shù)據(jù),建立或重組新的關(guān)系。1.選擇
從一個(gè)關(guān)系中找出滿足給定條件的元組的操作稱為選擇。選擇是從行的角度對(duì)二維表格內(nèi)容進(jìn)行的篩選,經(jīng)過選擇運(yùn)算后得到的結(jié)果可以形成新的關(guān)系,其關(guān)系模式不變。2.投影
從一個(gè)關(guān)系中找出若干個(gè)屬性構(gòu)成新的關(guān)系的操作稱為投影。投影是從列的角度對(duì)表格內(nèi)容進(jìn)行的篩選或重組,經(jīng)過投影運(yùn)算后得到的結(jié)果也將形成新的關(guān)系。3.連接
連接是將兩個(gè)關(guān)系中的元組按一定的條件橫向結(jié)合,拼接成一個(gè)新的關(guān)系。自然連接:利用兩個(gè)關(guān)系中共有的一個(gè)字段,將該字段值相等的記錄內(nèi)容連接起來,去掉其中的重復(fù)字段作為新關(guān)系中的一條記錄。1.3.3關(guān)系的完整性
關(guān)系的完整性是指對(duì)關(guān)系的某種約束條件,是保證關(guān)系中數(shù)據(jù)正確性的重要手段。1.實(shí)體完整性
實(shí)體完整性用來確保關(guān)系中的每個(gè)元組都是唯一的,即關(guān)系中不允許有重復(fù)的元組。2.參照完整性
參照完整性是指兩個(gè)相關(guān)聯(lián)的關(guān)系(數(shù)據(jù)表)中的相關(guān)數(shù)據(jù)是否對(duì)應(yīng)一致。2.1VisualFoxPro概述2.1.1VisualFoxPro發(fā)展概況
VisualFoxPro是Microsoft公司在FoxBASE和FoxPro基礎(chǔ)上發(fā)展起來的新一代關(guān)系型數(shù)據(jù)庫管理系統(tǒng)軟件。是性能最好、功能最強(qiáng)、最為流行的PC數(shù)據(jù)庫管理系統(tǒng)軟件之一。1995年推出VisualFoxPro3.0版;1997年推出VisualFoxPro5.0版;1998年推出VisualFoxPro6.0版;2000年推出全面支持網(wǎng)絡(luò)應(yīng)用的VisualFoxPro7.0版;2003年推出VisualFoxPro8.0版,進(jìn)一步強(qiáng)化了面向?qū)ο缶幊棠芰椭С志W(wǎng)絡(luò)開發(fā)的能力。2.1.2VisualFoxPro的特點(diǎn)1.強(qiáng)大的功能2.增強(qiáng)的數(shù)據(jù)庫管理3.增強(qiáng)的SQL語言支持4.支持面向?qū)ο蟪绦蛟O(shè)計(jì)5.可視化的設(shè)計(jì)開發(fā)工具6.增強(qiáng)的OLE應(yīng)用集成7.支持網(wǎng)絡(luò)應(yīng)用2.1.3VisualFoxPro用戶界面
VisualFoxPro的主窗口界面如下圖所示。1.系統(tǒng)菜單欄2.系統(tǒng)工具欄3.窗口工作區(qū)4.命令窗口5.狀態(tài)欄2.1.4VisualFoxPro工作方式1.命令執(zhí)行方式2.菜單選擇方式3.程序執(zhí)行方式2.2VisualFoxPro設(shè)計(jì)工具2.2.1向?qū)驅(qū)且环N交互式的快速設(shè)計(jì)工具,通過一系列的對(duì)話框向用戶提示每一個(gè)操作步驟,引導(dǎo)用戶一步一步地完成某項(xiàng)任務(wù)。使用向?qū)Э梢越⒉樵儭?chuàng)建表單、編制報(bào)表等。2.2.2設(shè)計(jì)器
設(shè)計(jì)器是創(chuàng)建和修改應(yīng)用程序各種組件的可視化工具,可用來創(chuàng)建和修改數(shù)據(jù)庫、數(shù)據(jù)表、表單、報(bào)表、查詢和視圖等。2.2.3生成器
生成器通常是一些帶有選項(xiàng)卡的對(duì)話框,主要用來在應(yīng)用程序的構(gòu)件中創(chuàng)建和生成某種控件,還可用來幫助用戶生成一個(gè)應(yīng)用程序框架。2.3VisualFoxPro環(huán)境設(shè)置2.3.1選項(xiàng)對(duì)話框的使用選擇“工具”菜單下的“選項(xiàng)”命令,可打開“選項(xiàng)”對(duì)話框,其中包含一系列可供攝制的選項(xiàng)卡。1.“選項(xiàng)”對(duì)話框界面2.日期和時(shí)間格式的設(shè)置3.設(shè)置默認(rèn)工作目錄的設(shè)置2.3.2SET命令的使用
VisualFoxPro提供許多SET命令,可在命令窗口或程序中使用這些命令來臨時(shí)設(shè)置系統(tǒng)的工作環(huán)境。2.4VisualFoxPro項(xiàng)目管理器
項(xiàng)目(Project)是開發(fā)一個(gè)應(yīng)用軟件系統(tǒng)所包含的數(shù)據(jù)、程序、文檔、對(duì)象和類等各種相關(guān)文件的集合。VisualFoxPro提供了專門的項(xiàng)目管理器來對(duì)用戶所開發(fā)的項(xiàng)目進(jìn)行管理和維護(hù),使得用戶能以簡便直觀的方式組織和處理項(xiàng)目中所包含的各類文件。2.4.1項(xiàng)目管理器界面
2.4.2項(xiàng)目管理器的使用1.創(chuàng)建文件2.添加文件3.修改文件4.移去文件5.其他操作3.1常量與變量
常量是在操作過程中其值固定不變的數(shù)據(jù),通常是指一個(gè)具體的數(shù)據(jù)內(nèi)容。變量是一個(gè)命名的存儲(chǔ)空間,變量的數(shù)據(jù)類型是由其所含數(shù)據(jù)的類型決定的。變量可以用字母、漢字、數(shù)字或下劃線及它們的組合為其命名。變量名必須以字母或漢字開頭,最多不能超過10個(gè)字符,并且不能含有空格。變量可分為字段變量和內(nèi)存變量兩大類。3.1.1常量1.字符型常量簡稱C型常量,是用半角的單引號(hào)、雙引號(hào)或方括號(hào)等定界符括起來的一串字符,又稱為字符串(String)。2.?dāng)?shù)值型常量簡稱N型常量,也即常數(shù)。N型常量可以是由阿拉伯?dāng)?shù)字、小數(shù)點(diǎn)和正負(fù)號(hào)構(gòu)成的各種整數(shù)、小數(shù)或?qū)崝?shù)。3.貨幣型常量簡稱Y型常量,是由符號(hào)“$”開頭的一個(gè)表示貨幣量的數(shù)字。4.日期型常量簡稱D型常量,用來表示一個(gè)具體的日期。默認(rèn)格式為:{^yyyy-mm-dd}或{^yyyy/mm/dd}。5.日期時(shí)間型常量簡稱T型常量,用來表示一個(gè)具體的日期與時(shí)間。默認(rèn)格式為:{^yyyy-mm-dd,[hh[:mm[:ss]][a|p]]}。6.邏輯型常量簡稱L型常量,常用來表示某個(gè)條件成立與否。L型常量只有邏輯真與邏輯假兩個(gè)值,邏輯真值通用.T.表示,邏輯假值用.F.表示。3.1.2字段變量
在創(chuàng)建數(shù)據(jù)表時(shí)定義的一個(gè)字段對(duì)應(yīng)一個(gè)字段變量,數(shù)據(jù)表中的字段名即其字段變量名。字段變量除字符型、數(shù)值型、貨幣型、日期型、日期時(shí)間型和邏輯型之外,還有備注(M)型和通用(G)型等幾種類型。3.1.3內(nèi)存變量
內(nèi)存變量是獨(dú)立于數(shù)據(jù)表而存在的臨時(shí)工作變量,用來存放數(shù)據(jù)處理過程中的一些中間結(jié)果和最終結(jié)果數(shù)據(jù)、并在程序中充當(dāng)循環(huán)變量和其他工作變量等。1.內(nèi)存變量的創(chuàng)建與賦值
格式1:STORE<表達(dá)式>TO<內(nèi)存變量表>格式2:<內(nèi)存變量>=<表達(dá)式>說明:以上兩條命令的功能都是將指定表達(dá)式的計(jì)算結(jié)果值賦給指定的內(nèi)存變量,所不同的是前者允許把同一個(gè)表達(dá)式的值賦給多個(gè)變量,而后者只能給單個(gè)變量賦值。2.內(nèi)存變量的保存與恢復(fù)(1)內(nèi)存變量的保存格式:SAVETO<內(nèi)存變量文件名>[ALLLIKE|ALLEXCEPT<通配符>](2)內(nèi)存變量的恢復(fù)格式:RESTOREFROM<內(nèi)存變量文件名>[ADDITIVE]3.內(nèi)存變量的顯示與釋放(1)內(nèi)存變量的顯示格式:LIST/DISPLAYMEMORY[LIKE<通配符>](2)內(nèi)存變量的釋放格式1:RELEASE<內(nèi)存變量名表>格式2:RELEASEALL[LIKE<通配符>|EXCEPT<通配符>]3.2運(yùn)算符與表達(dá)式
表達(dá)式是將常量、變量、函數(shù)等數(shù)據(jù)用運(yùn)算符按一定規(guī)則連接起來的一個(gè)有意義的式子。作為特例,可以將單個(gè)的常量、變量或函數(shù)看成是一個(gè)表達(dá)式。根據(jù)表達(dá)式運(yùn)算后得到的結(jié)果值的數(shù)據(jù)類型來劃分,可將表達(dá)式分為數(shù)值表達(dá)式、字符表達(dá)式、日期表達(dá)式和邏輯表達(dá)式。3.2.1數(shù)值表達(dá)式
數(shù)值表達(dá)式簡稱expN,是由算術(shù)運(yùn)算符將各類數(shù)值型數(shù)據(jù)連接而成的式子。各種算術(shù)運(yùn)算符,按其運(yùn)算的優(yōu)先級(jí)別由高到低排列如下所示。() 括號(hào)內(nèi)的運(yùn)算最優(yōu)先^或** 乘方運(yùn)算*、/、% 乘、除、求余運(yùn)算+、- 加、減運(yùn)算3.2.2字符表達(dá)式
字符表達(dá)式簡稱expC,是由字符運(yùn)算符將各類C型數(shù)據(jù)連接而成的式子。字符運(yùn)算符有以下兩種:+ 兩字符串相連。- 兩字符串相連,并將前串的尾部空格移至結(jié)果字符串尾部。3.2.3日期表達(dá)式
日期表達(dá)式簡稱expD,是運(yùn)算結(jié)果為某個(gè)具體日期的式子。屬于日期表達(dá)式的一般有以下幾種情況:①某一個(gè)日期常量,如:{^2002/05/18}②系統(tǒng)的日期函數(shù):DATE()③類型轉(zhuǎn)換函數(shù):CTOD("mm/dd/yy")④一個(gè)日期型數(shù)據(jù)加上或減去一個(gè)N型數(shù)據(jù)。⑤當(dāng)前打開數(shù)據(jù)表中的日期型字段變量。3.2.4邏輯表達(dá)式
邏輯表達(dá)式簡稱expL,是運(yùn)算結(jié)果為邏輯真值或邏輯假值的式子,包括關(guān)系運(yùn)算式和邏輯運(yùn)算式。1.關(guān)系運(yùn)算式
關(guān)系運(yùn)算式是用關(guān)系運(yùn)算符把兩個(gè)相同類型的數(shù)據(jù)連接起來的式子。各種關(guān)系運(yùn)算符如下所示。> 大于< 小于= 等于<>、!=、# 不等于>= 大于等于<= 小于等于== 字符串精確匹配$ 左側(cè)字符串是否被包含在右側(cè)字符串中2.邏輯運(yùn)算式
邏輯運(yùn)算式是用邏輯運(yùn)算符將L型數(shù)據(jù)連接起來的式子,邏輯運(yùn)算只能在L型數(shù)據(jù)間進(jìn)行,其運(yùn)算結(jié)果依然是L型數(shù)據(jù)。各種邏輯運(yùn)算符按其運(yùn)算優(yōu)先級(jí)從高到低排列如下:() 括號(hào)NOT或! 邏輯非AND 邏輯與OR 邏輯或3.2.5表達(dá)式書寫規(guī)則
每個(gè)字符應(yīng)占同樣大小的一個(gè)字符位,所有字符都應(yīng)并排地寫在同一水平上;數(shù)值表達(dá)式中有相乘關(guān)系的地方,一律采用“*”號(hào)表示,不能省略;在需要括號(hào)的地方,一律采用圓括號(hào)“()”,且左右括號(hào)必須配對(duì);不得使用羅馬字符、希臘字符等非英文字符;變量名與函數(shù)名中的字母可以大寫也可以小寫,其效果是相同的;邏輯運(yùn)算符NOT、AND、OR的前后應(yīng)加圓點(diǎn)(小數(shù)點(diǎn))或空格與其他內(nèi)容分開;3.2.6表達(dá)式輸出命令
格式1:?[<表達(dá)式表>]功能:計(jì)算<表達(dá)式表>中各表達(dá)式的值,并在下一行開始輸出計(jì)算結(jié)果。格式2:??[<表達(dá)式表>]功能:計(jì)算<表達(dá)式表>中各表達(dá)式的值,并在當(dāng)前行當(dāng)前列開始輸出計(jì)算結(jié)果。3.3常用函數(shù)
函數(shù)(Function)不僅是VisualFoxPro的一種數(shù)據(jù)元素,而且是一種廣為采用的數(shù)據(jù)處理手段,每一種函數(shù)都代表了一種特定的數(shù)據(jù)操作功能。3.3.1數(shù)學(xué)運(yùn)算函數(shù)
1.絕對(duì)值函數(shù)格式:ABS(<expN>)功能:求<expN>的絕對(duì)值。2.取整數(shù)函數(shù)格式:INT(<expN>)功能:取<expN>的整數(shù)部分。3.平方根函數(shù)格式:SQRT(<expN>)功能:求<expN>的平方根。<expN>的值須大于等于零。4.四舍五入函數(shù)格式:ROUND(<expN1>,<expN2>)功能:對(duì)<expN1>四舍五入到由<expN2>指定的小數(shù)位數(shù)。5.求余數(shù)函數(shù)格式:MOD(<expN1>,<expN2>)功能:求<expN1>除以<expN2>的余數(shù)。6.求最大值函數(shù)格式:MAX(<expN1>,<expN2>|<expD1>,<expD2>)功能:取兩個(gè)數(shù)據(jù)中的較大者。7.求最小值函數(shù)格式:MIN(<expN1>,<expN2>|<expD1>,<expD2>)功能:取兩個(gè)數(shù)據(jù)中的較小者。3.3.2字符處理函數(shù)
1.宏代換函數(shù)格式:&<字符型內(nèi)存變量>功能:代換字符型內(nèi)存變量的內(nèi)容。2.子串搜索函數(shù)格式:AT(<expC1>,<expC2>)功能:返回<expC1>在<expC2>中存在的起始位置值,不存在時(shí)則返回零值。3.求字符串長度函數(shù)格式:LEN(<expC>)功能:返回<expC>中包含字符的個(gè)數(shù)。4.取子串函數(shù)格式:SUBSTR(<expC>,<expN1>[,<expN2>])功能:截取<expC>中第<expN1>個(gè)字符開始的共<expN2>個(gè)字符;缺省<expN2>時(shí),為第<expN1>個(gè)字符開始的所有字符。5.取左子串函數(shù)格式:LEFT(<expC>,<expN>)功能:截取<expC>左面的<expN>個(gè)字符。6.取右子串函數(shù)格式:RIGHT(<expC>,<expN>)功能:截取<expC>右面的<expN>個(gè)字符。7.刪除尾部空格函數(shù)格式:TRIM(<expC>)功能:刪除<expC>的尾部空格。8.刪除左端空格函數(shù)格式:LTRIM(<expC>)功能:刪除<expC>的左端空格。9.刪除兩端空格函數(shù)格式:ALLTRIM(<expC>)功能:刪除<expC>前后端的空格。10.生成空格字符串函數(shù)格式:SPACE(<expN>)功能:產(chǎn)生<expN>個(gè)空格字符。11.小寫轉(zhuǎn)換為大寫函數(shù)格式:UPPER(<expC>)功能:將<expC>中的小寫字母轉(zhuǎn)換成大寫字母。12.大寫轉(zhuǎn)換為小寫函數(shù)格式:LOWER(<expC>)功能:將<expC>中的大寫字母轉(zhuǎn)換成小寫字母。3.3.3日期時(shí)間函數(shù)
1.系統(tǒng)日期函數(shù)格式:DATE()功能:返回當(dāng)前系統(tǒng)日期。2.系統(tǒng)時(shí)間函數(shù)格式:TIME()功能:返回當(dāng)前系統(tǒng)時(shí)間。3.取年份函數(shù)格式:YEAR(<expD>)功能:返回<expD>中的年份數(shù)(用四位整數(shù)表示)。4.取月份函數(shù)格式:MONTH(<expD>)功能:返回<expD>中的月份數(shù)。5.取日子函數(shù)格式:DAY(<expD>)功能:返回<expD>中的日期號(hào)數(shù)。6.取星期函數(shù)格式:DOW(<expD>)功能:返回<expD>是星期幾。3.3.4轉(zhuǎn)換函數(shù)
1.字符串轉(zhuǎn)換為ASCII碼函數(shù)格式:ASC(<expC>)功能:返回<expC>中首字符的ASCII碼值。2.ASCII碼轉(zhuǎn)換為字符串函數(shù)格式:CHR(<expN>)功能:返回ASCII碼值為<expN>的對(duì)應(yīng)字符或控制碼。3.數(shù)值轉(zhuǎn)換為字符串函數(shù)格式:STR(<expN1>[,<expN2>[,<expN3>]])功能:將<expN1>轉(zhuǎn)換成字符串。4.字符串轉(zhuǎn)換為數(shù)值函數(shù)格式:VAL(<expC>)功能:將數(shù)碼、正負(fù)號(hào)、小數(shù)點(diǎn)構(gòu)成的數(shù)值形式的C型數(shù)據(jù)轉(zhuǎn)換成N型數(shù)據(jù)。5.字符串轉(zhuǎn)換為日期函數(shù)格式:CTOD(<expC>)功能:將日期形式的C型數(shù)據(jù)轉(zhuǎn)換成D型數(shù)據(jù)。6.日期轉(zhuǎn)換為字符串函數(shù)格式:DTOC(<expD>)功能:將D型數(shù)據(jù)轉(zhuǎn)換成C型數(shù)據(jù)。3.3.5測試函數(shù)
1.數(shù)據(jù)類型測試函數(shù)格式:TYPE('<expr>')功能:返回表達(dá)式<expr>的數(shù)據(jù)類型。2.表首測試函數(shù)格式:BOF()功能:測試當(dāng)前記錄指針是否指向數(shù)據(jù)表首記錄前的開始標(biāo)志。3.表尾測試函數(shù)格式:EOF()功能:測試當(dāng)前記錄指針是否指向數(shù)據(jù)表末記錄后的結(jié)束標(biāo)志。4.當(dāng)前記錄號(hào)測試函數(shù)格式:RECNO()功能:返回當(dāng)前記錄的記錄號(hào)。5.記錄刪除測試函數(shù)格式:DELETED()功能:測試當(dāng)前記錄是否有刪除標(biāo)志。6.查詢測試函數(shù)格式:FOUND()功能:測試當(dāng)前查詢是否成功。7.字段個(gè)數(shù)測試函數(shù)格式:FCOUNT()功能:返回當(dāng)前數(shù)據(jù)表的字段個(gè)數(shù)。8.記錄個(gè)數(shù)測試函數(shù)格式:RECCOUNT()功能:返回當(dāng)前數(shù)據(jù)表的記錄個(gè)數(shù)。9.條件測試函數(shù)格式:IIF(<expL>,<expr1>,<expr2>)功能:<expL>為真時(shí)取<expr1>之值,否則取<expr2>之值。<expr1>與<expr2>的數(shù)據(jù)類型可以不同。3.4命令格式
3.4.1命令結(jié)構(gòu)
VisualFoxPro的許多命令與數(shù)據(jù)表操作有關(guān),這些命令大多具有以下命令結(jié)構(gòu):<命令動(dòng)詞>[<范圍>][FOR<條件>][WHILE<條件>][FIELDS<字段表>]1.命令動(dòng)詞2.范圍短語用來限定該命令處理的數(shù)據(jù)表記錄范圍,允許有以下四種選擇:ALL 對(duì)當(dāng)前數(shù)據(jù)表中的所有記錄。NEXT<expN> 對(duì)自當(dāng)前記錄開始的<expN>條記錄。RECORD<expN> 僅對(duì)第<expN>條記錄。REST 對(duì)自當(dāng)前記錄開始的所有記錄。3.條件短語用來限制僅對(duì)符合指定條件的記錄進(jìn)行操作??捎珊戏ǖ倪壿嫳磉_(dá)式充當(dāng)<條件>。FOR<條件>與WHILE<條件>的區(qū)別在于:前者表示對(duì)指定范圍內(nèi)所有符合條件的記錄進(jìn)行處理;后者則由當(dāng)前記錄開始順序?qū)τ涗洶礂l件進(jìn)行比較,一旦遇到不符合的記錄就結(jié)束本命令的執(zhí)行。4.FIELDS短語用來限制僅對(duì)指定的若干個(gè)字段進(jìn)行操作。缺省時(shí)默認(rèn)為對(duì)當(dāng)前數(shù)據(jù)表中的所有字段進(jìn)行操作,但不包括備注型字段和通用型字段。3.4.2命令書寫規(guī)則
各種命令均應(yīng)以命令動(dòng)詞開頭,其后各短語的順序可以任意。用一個(gè)或多個(gè)空格來分隔命令中的各單詞短語;在<字段表>的各個(gè)字段名之間、在<表達(dá)式表>的各表達(dá)式之間則需要用逗號(hào)分開。命令中的字母可以大寫、小寫或大小寫混合使用。
數(shù)據(jù)表分為自由表和數(shù)據(jù)庫表兩種。自由表是指單獨(dú)存在的,未包含在任何數(shù)據(jù)庫中的表;數(shù)據(jù)庫表則是從屬于某個(gè)數(shù)據(jù)庫的數(shù)據(jù)表,并且通常還與該數(shù)據(jù)庫中的其他數(shù)據(jù)表有一定的聯(lián)系。4.1數(shù)據(jù)表的建立
4.1.1表結(jié)構(gòu)的建立與修改1.表結(jié)構(gòu)的建立(1)字段名(2)字段類型(3)字段寬度(4)NALL值2.表結(jié)構(gòu)的修改
(1)修改字段屬性(2)插入字段(3)刪除字段(4)調(diào)整字段位置4.1.2表記錄數(shù)據(jù)的輸入1.一般字段的輸入2.備注字段的輸入3.通用字段的輸入4.1.3表數(shù)據(jù)的瀏覽與維護(hù)
1.數(shù)據(jù)表的打開2.兩種瀏覽方式3.在瀏覽窗口添加與刪除記錄4.2數(shù)據(jù)表操作命令
4.2.1創(chuàng)建數(shù)據(jù)表命令1.創(chuàng)建表結(jié)構(gòu)命令格式:CREATE[<表文件名>/?]功能:新建一個(gè)VisualFoxPro數(shù)據(jù)表。2.打開數(shù)據(jù)表命令
格式:USE[<表文件名>]功能:打開指定的數(shù)據(jù)表或關(guān)閉數(shù)據(jù)表。3.關(guān)閉數(shù)據(jù)表命令
格式1:CLOSEDATABASES格式2:CLOSEALL格式3:CLEARALL格式4:QUIT4.顯示表結(jié)構(gòu)命令格式1:LISTSTRUCTURE格式2:DISPLAYSTRUCTURE5.修改表結(jié)構(gòu)命令
格式:MODIFYSTRUCTURE功能:打開“表設(shè)計(jì)器”窗口,顯示并修改當(dāng)前數(shù)據(jù)表的結(jié)構(gòu)。6.復(fù)制表結(jié)構(gòu)命令
格式:COPYSTRUCTURETO<表文件名>[FIELDS<字段表>]功能:對(duì)當(dāng)前數(shù)據(jù)表結(jié)構(gòu)進(jìn)行復(fù)制,形成一個(gè)指定名稱的新表結(jié)構(gòu)。7.復(fù)制數(shù)據(jù)表命令格式:COPYTO<表文件名>[<范圍>][FOR<條件>][WHILE<條件>] [FIELDS<字段表>][TYPE<文件類型>]功能:對(duì)當(dāng)前數(shù)據(jù)表中指定范圍內(nèi)符合條件的記錄進(jìn)行復(fù)制,形成一個(gè)指定名稱的新數(shù)據(jù)表。4.2.2追加與插入記錄命令
1.追加記錄命令格式:APPEND[BLANK]功能:在當(dāng)前數(shù)據(jù)表的末尾增加新記錄。2.從其他表追加記錄命令
格式:APPENDFROM<表文件名>[<范圍>][FOR<條件>][WHILE<條件>] [FIELDS<當(dāng)前表字段表>]功能:將指定表文件中指定范圍內(nèi)符合條件的記錄自動(dòng)添加到當(dāng)前數(shù)據(jù)表的末尾。3.插入記錄命令
格式:INSERT[BLANK][BEFORE]功能:在當(dāng)前數(shù)據(jù)表指定的位置上插入一條新記錄。4.2.3記錄指針移動(dòng)命令1.記錄指針的絕對(duì)移動(dòng)格式1:GO[TO]<expN>功能:將記錄指針移到第<expN>條記錄。格式2:GO[TO]TOP功能:將記錄指針移到當(dāng)前表的第一條記錄。格式3:GO[TO]BOTTOM功能:將記錄指針移到當(dāng)前表最后一條記錄。2.記錄指針的相對(duì)移動(dòng)格式:SKIP[<expN>]功能:相對(duì)于當(dāng)前記錄,記錄指針向上或向下移動(dòng)若干條記錄。說明:當(dāng)<expN>的值為正數(shù)時(shí),向下移動(dòng)<expN>條記錄;當(dāng)<expN>的值負(fù)數(shù)時(shí),向上移動(dòng)<expN>條記錄;缺省<expN>時(shí),默認(rèn)向下移動(dòng)一條記錄。4.2.4顯示記錄命令
格式1:LIST[<范圍>][FOR<條件>][WHILE<條件>][[FIELDS]<表達(dá)式表>] [OFF][TOPRINT]格式2:DISPLAY[<范圍>][FOR<條件>][WHILE<條件>][[FIELDS]<表達(dá)式表>] [OFF][TOPRINT]功能:輸出指定范圍內(nèi)滿足條件的各個(gè)記錄的有關(guān)內(nèi)容。4.2.5刪除記錄命令
1.邏輯刪除記錄命令格式:DELETE[<范圍>][FOR<條件>][WHILE<條件>]功能:對(duì)指定范圍內(nèi)滿足條件的記錄打上刪除標(biāo)志。2.去除刪除標(biāo)志命令
格式:RECALL[<范圍>][FOR<條件>][WHILE<條件>]功能:去除指定范圍內(nèi)滿足條件的記錄已有的刪除標(biāo)志。3.物理刪除記錄命令
格式:PACK功能:對(duì)當(dāng)前數(shù)據(jù)表進(jìn)行壓縮,剔除帶有刪除標(biāo)志的記錄。4.一次性刪除全部記錄命令
格式:ZAP功能:刪除當(dāng)前數(shù)據(jù)表中的所有記錄,使其成為只剩有表結(jié)構(gòu)的空表文件。4.2.6修改記錄命令
1.編輯修改命令格式1:EDIT[<范圍>][FOR<條件>][WHILE<條件>][FIELDS<字段表>]格式2:CHANGE[<范圍>][FOR<條件>][WHILE<條件>][FIELDS<字段表>]功能:彈出編輯窗口對(duì)記錄進(jìn)行修改。2.瀏覽修改命令格式:BROWSE[FIELDS<字段表>][LOCK<expN>][FREEZE<字段名>]功能:以瀏覽窗口方式顯示當(dāng)前數(shù)據(jù)表數(shù)據(jù)并供用戶進(jìn)行修改。3.成批替換修改命令格式:REPLACE[<范圍>][FOR<條件>][WHILE<條件>]<字段1>WITH<表達(dá)式1> [,<字段2>WITH<表達(dá)式2>...]功能:對(duì)指定范圍內(nèi)符合條件的記錄,用指定的<表達(dá)式>值替換指定<字段>的內(nèi)容。4.3數(shù)據(jù)表的排序與索引
4.3.1物理排序格式:SORTON<字段1>[/A][/C][/D][,<字段2>[/A][/C][/D]...]TO<文件名> [<范圍>][FOR<條件>][WHILE<條件>][FIELDS<字段表>]功能:對(duì)指定范圍內(nèi)滿足條件的記錄按指定<字段>之值的大小重新排序后生成一個(gè)給定名稱的新數(shù)據(jù)表文件。4.3.2索引類型
1.索引文件的類型單索引文件:擴(kuò)展名為.IDX,只包含一個(gè)索引項(xiàng)。復(fù)合索引文件:擴(kuò)展名為.CDX,可以包含多個(gè)索引項(xiàng)并以壓縮方式存儲(chǔ)。結(jié)構(gòu)復(fù)合索引文件:與數(shù)據(jù)表同名的.CDX文件,隨數(shù)據(jù)表的打開而打開。非結(jié)構(gòu)復(fù)合索引文件:與數(shù)據(jù)表不同名的.CDX文件,需要用專門命令打開。2.索引項(xiàng)的類型(1)主索引(2)候選索引(3)普通索引(4)唯一索引4.3.3索引文件的建立
1.在表設(shè)計(jì)器中建立索引2.用命令建立索引格式1:INDEXON<關(guān)鍵字表達(dá)式>TO<單索引文件名>[FOR<條件>][COMPACT][UNIQUE|CANDIDATE][ASCENDING|DECENDING][ADDITIVE]格式2:INDEXON<關(guān)鍵字表達(dá)式>TAG<索引標(biāo)識(shí)名>[OF<索引文件名>][FOR<條件>][UNIQUE|CANDIDATE][ASCENDING|DECENDING][ADDITIVE]功能:命令格式1是對(duì)當(dāng)前數(shù)據(jù)表中記錄按<關(guān)鍵字表達(dá)式>值的大小排列,建立一個(gè)單索引文件。命令格式2是對(duì)當(dāng)前數(shù)據(jù)表中記錄按<關(guān)鍵字表達(dá)式>值的大小排列,建立一個(gè)復(fù)合索引文件中的索引標(biāo)識(shí)。4.3.4索引文件的打開與關(guān)閉
1.索引文件的打開格式1:USE<數(shù)據(jù)表文件名>INDEX<索引文件名表>功能:在打開指定數(shù)據(jù)表的同時(shí),打開與之相關(guān)的一系列索引文件。格式2:SETINDEXTO<索引文件名表>功能:在數(shù)據(jù)表已打開的情況下,打開與之相關(guān)的一系列索引文件。2.指定主控索引項(xiàng)格式1:SETORDERTO[<expN>][ASCENDING|DECENDING]格式2:SETORDERTO[<單索引文件名>][ASCENDING|DECENDING]格式3:SETORDERTO[[TAG]<索引標(biāo)識(shí)名>][ASCENDING|DECENDING]功能:指定主控索引文件或主控標(biāo)識(shí)。3.索引項(xiàng)起作用時(shí)記錄指針的移動(dòng)
在數(shù)據(jù)表和相關(guān)的若干個(gè)索引文件打開的情況下,當(dāng)某個(gè)索引項(xiàng)起作用時(shí),記錄指針實(shí)際上是在該索引項(xiàng)對(duì)應(yīng)的索引表上進(jìn)行移動(dòng),但當(dāng)明確指定移動(dòng)到某號(hào)記錄時(shí)例外。4.索引文件的關(guān)閉
格式1:CLOSEINDEXES格式2:SETINDEXTO功能:關(guān)閉當(dāng)前工作區(qū)內(nèi)除了結(jié)構(gòu)復(fù)合索引文件之外的所有索引文件。5.索引文件的更新格式:REINDEX4.4數(shù)據(jù)表的查詢與統(tǒng)計(jì)4.4.1數(shù)據(jù)表的查詢1.條件查詢命令格式:LOCATE[<范圍>]FOR<條件>功能:查找符合指定條件的第一條記錄,并將記錄指針指向該記錄。格式:CONTINUE功能:按最近一次LOCATE命令的條件在后續(xù)記錄中繼續(xù)查找。2.常量查詢命令
格式:FIND<字符串>/<常數(shù)>功能:快速查找索引關(guān)鍵字值和所指定的<字符串>或<常數(shù)>相匹配的首記錄。3.表達(dá)式查詢命令格式:SEEK<表達(dá)式>功能:快速查找索引關(guān)鍵字值與指定<表達(dá)式>值相符的記錄。4.4.2數(shù)據(jù)表的統(tǒng)計(jì)
1.多記錄求和命令格式:SUM[<表達(dá)式表>][<范圍>][FOR<條件>][WHILE<條件>] [TO<內(nèi)存變量表>]功能:對(duì)指定范圍內(nèi)滿足條件的記錄計(jì)算其指定的各個(gè)表達(dá)式值的和。2.多記錄求平均命令
格式:AVERAGE[<表達(dá)式表>][<范圍>][FOR<條件>][WHILE<條件>] [TO<內(nèi)存變量表>]功能:對(duì)指定范圍內(nèi)滿足條件的記錄計(jì)算其指定的各個(gè)表達(dá)式值的平均值。3.記錄個(gè)數(shù)統(tǒng)計(jì)命令
格式:COUNT[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量>]功能:統(tǒng)計(jì)指定范圍內(nèi)滿足條件的記錄個(gè)數(shù)。4.專用計(jì)算命令
格式:CALCULATE<表達(dá)式表>[<范圍>][FOR<條件>][WHILE<條件>] [TO<內(nèi)存變量表>]功能:對(duì)指定范圍內(nèi)滿足條件的記錄分別計(jì)算指定的各個(gè)表達(dá)式的值。5.記錄分類求和命令
格式:TOTALON<關(guān)鍵字>TO<文件名>[<范圍>][FOR<條件>][WHILE<條件>] [FIELDS<字段表>]功能:對(duì)當(dāng)前數(shù)據(jù)表中指定的數(shù)值型字段進(jìn)行分類求和,并形成匯總數(shù)據(jù)表。4.5數(shù)據(jù)表之間的操作4.5.1工作區(qū)的選擇1.工作區(qū)選擇命令格式:SELECT<工作區(qū)號(hào)/別名>功能:選擇某個(gè)內(nèi)存工作區(qū)作為當(dāng)前工作區(qū)。2.多工作區(qū)操作規(guī)則
①每個(gè)工作區(qū)只能打開一個(gè)表文件,每一時(shí)刻只能選擇一個(gè)工作區(qū)進(jìn)行操作。②同一數(shù)據(jù)表文件不能同時(shí)在多個(gè)工作區(qū)中打開。③當(dāng)前選擇的工作區(qū)稱為主工作區(qū),在其內(nèi)打開的數(shù)據(jù)表為主表;其他工作區(qū)稱為別名工作區(qū),在其內(nèi)打開的數(shù)據(jù)表被稱為別名表。系統(tǒng)啟動(dòng)后自動(dòng)選擇1號(hào)工作區(qū)為主工作區(qū)。④各工作區(qū)中打開的數(shù)據(jù)表都有各自的記錄指針,若各表之間未建立邏輯關(guān)聯(lián)時(shí),則對(duì)主工作區(qū)進(jìn)行的各種操作都不影響其他工作區(qū)中數(shù)據(jù)表記錄指針的位置。⑤若要訪問其他工作區(qū)中數(shù)據(jù)表的某個(gè)字段時(shí),需要用“別名.字段名”或“別名->字段名”的格式來指定。4.5.2表間的數(shù)據(jù)更新
格式:UPDATEON<關(guān)鍵字段名>FROM<工作區(qū)號(hào)/別名>REPLACE<字段1> WITH<表達(dá)式1>[,<字段2>WITH<表達(dá)式2>,...][RANDOM]功能:當(dāng)<別名>表中記錄的關(guān)鍵字段值與當(dāng)前表中記錄的關(guān)鍵字段值匹配時(shí),用所指定的表達(dá)式的值來替換當(dāng)前表中匹配記錄指定字段的值。4.5.3表間的物理連接
格式:JOINWITH<工作區(qū)號(hào)/別名>TO<表文件名>FOR<連接條件> [FIELDS<字段表>]功能:把主表文件與<別名>表文件中符合條件的對(duì)應(yīng)記錄,按<字段表>給定的字段順序橫向連接起來,生成一個(gè)新數(shù)據(jù)表。5.1數(shù)據(jù)庫的創(chuàng)建與維護(hù)
5.1.1數(shù)據(jù)庫的創(chuàng)建1.菜單方式創(chuàng)建數(shù)據(jù)庫執(zhí)行“文件/新建/數(shù)據(jù)庫/新建文件”菜單命令。2.命令方式創(chuàng)建數(shù)據(jù)庫格式:CREATEDATABASE<數(shù)據(jù)庫名>功能:創(chuàng)建一個(gè)指定名稱的數(shù)據(jù)庫文件。3.用項(xiàng)目管理器創(chuàng)建數(shù)據(jù)庫5.1.2數(shù)據(jù)庫的打開與維護(hù)
1.打開數(shù)據(jù)庫命令格式:OPENDATABASE<數(shù)據(jù)庫名>功能:打開指定名稱的數(shù)據(jù)庫文件。2.關(guān)閉數(shù)據(jù)庫命令格式1:CLOSEDATABASES功能:關(guān)閉所有打開的數(shù)據(jù)庫和數(shù)據(jù)表。格式2:CLOSEALL功能:關(guān)閉所有打開的數(shù)據(jù)庫和數(shù)據(jù)表,同時(shí)關(guān)閉除主窗口外的各種窗口。3.修改數(shù)據(jù)庫命令
格式MODIFYDATABASE<數(shù)據(jù)庫名>功能:打開“數(shù)據(jù)庫設(shè)計(jì)器”窗口,在其中顯示指定的數(shù)據(jù)庫內(nèi)容供修改。4.刪除數(shù)據(jù)庫命令
格式:DELETEDATABASE<數(shù)據(jù)庫名>[DELETETABLES]功能:刪除指定名稱的數(shù)據(jù)庫文件。5.1.3數(shù)據(jù)庫中表的組織
1.在數(shù)據(jù)庫中建立新表在數(shù)據(jù)庫打開的情況下,用各種方式新建的數(shù)據(jù)表均將自動(dòng)成為當(dāng)前數(shù)據(jù)庫中的數(shù)據(jù)表。2.向數(shù)據(jù)庫中添加表(1)用命令方式向數(shù)據(jù)庫中添加表(2)用菜單方式向數(shù)據(jù)庫中添加表3.從數(shù)據(jù)庫中移去表
(1)用命令方式從數(shù)據(jù)庫中移去表(2)用菜單界面方式從數(shù)據(jù)庫中移去表5.2數(shù)據(jù)庫表的設(shè)置5.2.1長表名與長字段名可為數(shù)據(jù)庫表指定一個(gè)不超過128個(gè)字符的長表名,可以為數(shù)據(jù)庫表中的字段指定一個(gè)不超過128個(gè)字符的字段名,以便更清楚地表達(dá)表或字段的含義。5.2.2設(shè)置字段屬性1.設(shè)置格式2.設(shè)置輸入掩碼3.設(shè)置標(biāo)題4.設(shè)置字段有效性5.2.3設(shè)置記錄規(guī)則1.記錄有效性的概念2.觸發(fā)器的概念及其設(shè)置(1)“插入觸發(fā)器”(2)“更新觸發(fā)器”(3)“刪除觸發(fā)器”5.3表間關(guān)系與參照完整性
5.3.1建立關(guān)系前的準(zhǔn)備數(shù)據(jù)庫表之間的永久關(guān)系可分為兩種:一對(duì)一關(guān)系和一對(duì)多關(guān)系。在創(chuàng)建永久關(guān)系之前,要建立關(guān)系的兩個(gè)表需要有一些公共字段以及依據(jù)這些字段建立的有關(guān)索引。VisualFoxPro規(guī)定:如果要建立一對(duì)一的關(guān)系,發(fā)出關(guān)聯(lián)的主表和被關(guān)聯(lián)的子表的相同字段都必須建立主索引或者候選索引;如果要建立一對(duì)多的關(guān)系,則發(fā)出關(guān)聯(lián)的主表(一方)必須建立主索引或者候選索引,而被關(guān)聯(lián)的子表(多方)必須建立普通索引或者唯一索引。5.3.2創(chuàng)建永久關(guān)系
在打開的“數(shù)據(jù)庫設(shè)計(jì)器”窗口中建立永久關(guān)系,只要在數(shù)據(jù)庫的數(shù)據(jù)表之間用鼠標(biāo)進(jìn)行連線即可,即用鼠標(biāo)從一個(gè)數(shù)據(jù)庫表的主索引或候選索引拖動(dòng)到另一個(gè)數(shù)據(jù)庫表的一個(gè)對(duì)應(yīng)的任意索引上。5.3.3設(shè)置參照完整性
1.參照完整性的概念參照完整性(ReferentialIntegrity)簡稱RI,設(shè)置RI就是建立一組相關(guān)數(shù)據(jù)表之間的規(guī)則,當(dāng)用戶插入、更新或刪除表中記錄時(shí),可保證各相關(guān)表之間數(shù)據(jù)的完整性。2.參照完整性的設(shè)置
通常可用VisualFoxPro的“參照完整性生成器”來設(shè)置表之間的參照完整性。(1)更新規(guī)則的設(shè)置(2)刪除規(guī)則的設(shè)置(3)插入規(guī)則的設(shè)置5.4查詢的建立與運(yùn)行5.4.1查詢設(shè)計(jì)器使用舉例5.4.2查詢設(shè)計(jì)器的界面
1.上部窗格2.字段選項(xiàng)卡3.聯(lián)接選項(xiàng)卡4.篩選選項(xiàng)卡5.排序依據(jù)選項(xiàng)卡6.分組依據(jù)選項(xiàng)卡7.雜項(xiàng)選項(xiàng)卡5.4.3查詢菜單的使用1.查看SQL
2.查詢?nèi)ハ?.5視圖的建立與維護(hù)
5.5.1視圖的概念視圖是在數(shù)據(jù)庫表的基礎(chǔ)上創(chuàng)建的一種虛擬表。視圖中的數(shù)據(jù)是按照用戶指定的條件從已有的數(shù)據(jù)庫表或其他視圖中抽取而來,這些數(shù)據(jù)在數(shù)據(jù)庫中并不另加存儲(chǔ),而是僅在該數(shù)據(jù)庫中存儲(chǔ)這個(gè)視圖的定義。某個(gè)視圖一旦被定義,就成為數(shù)據(jù)庫中的一個(gè)組成部分,具有與普通數(shù)據(jù)庫表類似的功能,可以像數(shù)據(jù)庫表一樣地接受用戶的訪問。并可以通過視圖來更新數(shù)據(jù)源中的數(shù)據(jù)。視圖有本地視圖與遠(yuǎn)程視圖之分。5.5.2視圖的創(chuàng)建
1.用視圖設(shè)計(jì)器創(chuàng)建視圖2.用命令方式創(chuàng)建視圖格式:CREATESQLVIEW<視圖名>[REMOTE][CONNECTION<新建聯(lián)接名>] AS<SELECT-SQL命令>功能:按照AS<SELECT-SQL命令>規(guī)定的要求,創(chuàng)建一個(gè)指定名稱的本地視圖或遠(yuǎn)程視圖。5.5.3視圖與數(shù)據(jù)更新
為了能夠通過視圖更新源數(shù)據(jù)表中的數(shù)據(jù),需要在“視圖設(shè)計(jì)器”下部窗格的“更新條件”選項(xiàng)卡中,選中左下角的“發(fā)送SQL更新”復(fù)選框。在“更新條件”選項(xiàng)卡中的操作包括:(1)指定可更新的表(2)指定可更新的字段(3)設(shè)置“SQLWHERE子句包括”框(4)設(shè)置“使用更新”框5.5.4視圖的使用與維護(hù)
1.視圖的使用VisualFoxPro允許對(duì)視圖進(jìn)行以下操作:在數(shù)據(jù)庫中使用USE命令打開指定的視圖或關(guān)閉視圖。在“瀏覽”窗口中顯示和修改視圖中的內(nèi)容。使用SQL命令對(duì)視圖進(jìn)行操作。在查詢、表單、報(bào)表中將視圖作為數(shù)據(jù)源。6.1SQL語言概述
SQL語言的主要優(yōu)點(diǎn):SQL語言是一種一體化的語言,提供了完整的數(shù)據(jù)定義和操縱功能。SQL語言具有完備的查詢功能。SQL語言非常簡潔,易學(xué)易用。SQL語言是一種高度非過程化的語言。SQL語言既能以交互方式直接使用,也能嵌入到各種高級(jí)語言中使用。SQL語言不僅能對(duì)數(shù)據(jù)表進(jìn)行各種操作,也可對(duì)視圖進(jìn)行操作。6.2SQL的定義功能
6.2.1建立表結(jié)構(gòu)格式:CREATETABLE|DBF<表名1>[NAME<長表名>][FREE] (<字段名><字段類型>[(字段寬度[,小數(shù)位數(shù)])] [NULL][NOTNULL] [CHECK<邏輯表達(dá)式1>[ERROR<文本信息1>]] [DEFAULT<表達(dá)式1>] [PRIMARYKEY|UNIQUE] [REFERENCES<表名2>[TAG<標(biāo)識(shí)名1>]] [NOCPTRANS] [,<字段名2>…] [,PRIMARYKEY<表達(dá)式2>TAG<標(biāo)識(shí)名2> |,UNIQUE<表達(dá)式3>TAG<標(biāo)識(shí)名3>] [,FOREIGNKEY<表達(dá)式4>TAG<標(biāo)識(shí)名4>[NODUP] REFERENCES<表名3>[TAG<標(biāo)識(shí)名5>]] [,CHECK<邏輯表達(dá)式2>[ERROR<文本信息2>]]) |FROMARRAY<數(shù)組名>【例6-1】創(chuàng)建一個(gè)名為“通信錄”的自由表,含有姓名、生日、電話號(hào)碼、手機(jī)號(hào)碼4個(gè)字段。CREATETABLE通信錄FREE(姓名C(8),;
生日D,家庭電話C(14),手機(jī)號(hào)碼C(12))【例6-2】創(chuàng)建一個(gè)“商品管理”數(shù)據(jù)庫,在其中創(chuàng)建一個(gè)“供應(yīng)商”表,包含供應(yīng)商號(hào)、供應(yīng)商名稱、地址、電話、傳真5個(gè)字符型字段,并以“供應(yīng)商號(hào)”字段為關(guān)鍵字創(chuàng)建一個(gè)主索引。CREATEDATABASE商品管理CREATETABLE供應(yīng)商(供應(yīng)商號(hào)C(8)PRIMARYKEY,;
供應(yīng)商名稱C(16),地址C(24),電話C(14),傳真C(8))【例6-3】在“商品管理”數(shù)據(jù)庫中創(chuàng)建一個(gè)“商品”表,包含商品號(hào)、商品名稱、單價(jià)、數(shù)量、供應(yīng)商號(hào)5個(gè)字段;以“商品號(hào)”為關(guān)鍵字創(chuàng)建一個(gè)主索引并為其設(shè)定一個(gè)默認(rèn)值,為“數(shù)量”建立一個(gè)取值范圍;再以“供應(yīng)商”表為父表通過共有的“供應(yīng)商號(hào)”為關(guān)鍵字建立兩表間的永久關(guān)系。OPENDATABASE商品管理CREATETABLE商品(商品號(hào)C(8)DEFAULT"JP_10109"PRIMARYKEY,;
商品名稱C(16),單價(jià)N(8,2),;
數(shù)量N(4)CHECK數(shù)量>=10AND數(shù)量<5000; ERROR"數(shù)量范圍應(yīng)在10到5000之間!",;
供應(yīng)商號(hào)C(8),; FOREIGNKEY供應(yīng)商號(hào)TAG供應(yīng)商號(hào)REFERENCES供應(yīng)商)6.2.2修改表結(jié)構(gòu)
1.命令格式1格式:ALTERTABLE<表名1>ADD|ALTER[COLUMN] <字段名1><字段類型>[(字段寬度[,小數(shù)位數(shù)])] [NULL][NOTNULL] [CHECK<邏輯表達(dá)式1>[ERROR<文本信息1>]] [DEFAULT<表達(dá)式1>] [PRIMARYKEY|UNIQUE] [REFERENCES<表名2>[TAG<標(biāo)識(shí)名1>]] [NOCPTRANS]功能:為指定的表增加指定的字段,或者修改指定的字段?!纠?-4】為例6-1創(chuàng)建的“通信錄”表添加一個(gè)寬度為24的“家庭住址”字段,并將其“姓名”字段的寬度改為10。ALTERTABLE通信錄ADD家庭住址C(24)ALTERTABLE通信錄ALTER姓名C(10)2.命令格式2
格式:ALTERTABLE<表名1>ALTER[COLUMN]<字段名2> [NULL][NOTNULL] [SETDEFAULT<表達(dá)式2>] [SETCHECK<邏輯表達(dá)式2>[ERROR<文本信息2>]] [DROPDEFAULT] [DROPCHECK]功能:設(shè)置或刪除指定表中指定字段的默認(rèn)值和(或)約束條件。【例6-5】在例6-3創(chuàng)建的“商品”表中,為“單價(jià)”字段設(shè)置一個(gè)默認(rèn)值“888.88”,并刪除“數(shù)量”字段的條件約束。OPENDATABASE商品管理ALTERTABLE商品ALTER單價(jià)SETDEFAULT888.88ALTERTABLE商品ALTER數(shù)量DROPCHECK3.命令格式3
格式:ALTERTABLE<表名1>[DROP[COLUMN]<字段名3>] [SETCHECK<邏輯表達(dá)式3>[ERROR<文本信息3>]] [DROPCHECK] [ADDPRIMARYKEY<表達(dá)式3>TAG<標(biāo)識(shí)名2>] [DROPPRIMARYKEY] [ADDUNIQUE<表達(dá)式4>[TAG<標(biāo)識(shí)名3>]] [DROPUNIQUETAG<標(biāo)識(shí)名4>] [ADDFOREIGNKEY<表達(dá)式5>TAG<標(biāo)識(shí)名4> REFERENCES<表名2>[TAG<標(biāo)識(shí)名5>]] [DROPFOREIGNKEYTAG<標(biāo)識(shí)名6>[SAVE]] [RENAMECOLUMN<字段名4>TO<字段名5>] [NOVALIDATE]功能:刪除指定表中的指定字段、設(shè)置或刪除指定表中指定字段的約束條件、增加或刪除主索引、候選索引、外索引,以及對(duì)字段名重新命名等。【例6-6】在例6-1創(chuàng)建的“通信錄”表中,刪除“家庭住址”字段,并將其“電話號(hào)碼”字段更名為“家庭電話”。ALTERTABLE通信錄DROPCOLUMN家庭住址ALTERTABLE通信錄RENAMECOLUMN電話號(hào)碼TO家庭電話6.2.3建立視圖
格式:CREATEVIEW<視圖名>[(字段名1[,字段名2]…)]AS<select語句>【例6-8】在“商品管理”數(shù)據(jù)庫中,創(chuàng)建一個(gè)名為“貴重商品”的視圖,由“商品”表中單價(jià)大于1000元的商品記錄構(gòu)成。OPENDATABASE商品管理CREATESQLVIEW貴重商品AS; SELECT*FROM商品WHERE單價(jià)>1000USE貴重商品BROWSE6.2.4刪除表
格式:DROPTABLE<表名>【例6-10】刪除“商品管理”數(shù)據(jù)庫中的“供應(yīng)商”表,相應(yīng)命令如下。OPENDATABASE商品管理DROPTABLE供應(yīng)商6.3SQL的操作功能
6.3.1插入紀(jì)錄1.命令格式1格式:INSERTINTO<表名>[(<字段名1>[,<字段名2>,…])] VALUES(<表達(dá)式1>[,<表達(dá)式2>,…])功能:在指定表的尾部添加一條新記錄,并將指定的值賦給對(duì)應(yīng)的字段。2.命令格式2
格式:INSERTINTO<表名>FROMARRAY<數(shù)組名>|FROMMEMVAR功能:由指定數(shù)組或內(nèi)存變量的值在指定表的尾部添加一條新記錄。6.3.2更新數(shù)據(jù)格式:UPDATE<表名> SET<字段名1>=<表達(dá)式1>[,<字段名2>=<表達(dá)式2>…] [WHERE<邏輯表達(dá)式>]功能:對(duì)于指定的表中符合條件的記錄,用指定的表達(dá)式值來更新指定的字段值。6.3.3刪除紀(jì)錄
格式:DELETEFROM<表名>[WHERE<邏輯表達(dá)式>]功能:對(duì)指定表中符合條件的記錄,進(jìn)行邏輯刪除。6.4SQL的查詢功能
6.4.1SQL查詢命令格式:SELECT[ALL|DISTINCT][TOP<數(shù)值表達(dá)式>[PERCENT]]<檢索項(xiàng)>[AS<列名>][,<檢索項(xiàng)>[AS<列名>]…]FROM[<數(shù)據(jù)庫名>!]<表名>[[AS]<邏輯別名>][[INTO<目的地>]|[TOFILE<文件名>]|[TOPRINTER]|[TOSCREEN]][WHERE<連接條件>[AND<連接條件>…][AND|OR<篩選條件>[AND|OR<篩選條件>…]]][GROUPBY<列名>[,<列名>…]][HAVING<篩選條件>][ORDERBY<排序項(xiàng)>[ASC|DESC][,<排序項(xiàng)>[ASC|DESC]…]]功能:根據(jù)指定的條件從一個(gè)或多個(gè)表中檢索并輸出數(shù)據(jù)。6.4.2簡單查詢
從單個(gè)表中檢索滿足條件的記錄數(shù)據(jù)?!纠?-16】查詢Student表中所有外地(籍貫非北京)女生的姓名、年齡、出生日期與籍貫。SELECT姓名,年齡,出生日期,籍貫FROMStudent; WHERE性別="女"AND籍貫!="北京"【例6-17】查詢Student表中有哪些班級(jí)的學(xué)生(不重復(fù)顯示相同的班級(jí))。SELECTDISTINCT班級(jí)FROMStudent6.4.3特殊運(yùn)算符
使用BETWEEN、LIKE、IN和NOTIN等特殊運(yùn)算符,使查詢更為方便靈活?!纠?-21】在Student表中查詢年齡在19到20之間的學(xué)生記錄,并按出生日期排序后顯示出來。SELECT*FROMStudent; WHERE年齡BETWEEN19AND20; ORDERBY出生日期【例6-22】在Student表中查詢并輸出所有姓李的學(xué)生記錄。SELECT*FROMStudent; WHERE姓名LIKE"李%"【例6-23】在Student表中查詢所有籍貫為“內(nèi)蒙古”或“山東”的學(xué)生記錄。SELECT*FROMStudent; WHERE籍貫IN("內(nèi)蒙古","山東")6.4.4嵌套查詢
在一個(gè)SELECT查詢命令的WHERE短語中,包含另一個(gè)SELECT查詢命令。【例6-25】依據(jù)“圖書管理”數(shù)據(jù)庫中Student表和Borrow表的數(shù)據(jù),列出未曾借過書的男生記錄。SELECT*FROMStudent; WHERE性別="男"AND學(xué)號(hào); NOTIN(SELECT學(xué)號(hào)FROMBorrow)6.4.5多表查詢
基于多個(gè)相關(guān)聯(lián)數(shù)據(jù)表的查詢?!纠?-26】依據(jù)Student表和Borrow表的數(shù)據(jù),查詢借閱“大學(xué)英語”書的學(xué)生的學(xué)號(hào)、姓名、性別和所在班級(jí)。SELECTStudent.學(xué)號(hào),Student.姓名,Student.班級(jí),Borrow.借書日期; FROMStudent,Borrow; WHEREStudent.學(xué)號(hào)=Borrow.學(xué)號(hào)AND; Borrow.書名="大學(xué)英語"6.4.6超聯(lián)接查詢
通過包含在SELECT-SQL命令中的FROM…JOIN…ON…短語來實(shí)現(xiàn)基于多個(gè)相關(guān)數(shù)據(jù)表的查詢。格式:SELECT……FROM<表名>INNER|LEFT|RIGHT|FULLJOIN<表名>ON<聯(lián)接條件>WHERE……其中:INNERJOIN等價(jià)于JOIN,為普通的內(nèi)部聯(lián)接,即查詢結(jié)果中僅包含兩個(gè)表中與聯(lián)接字段值相匹配的記錄。LEFTJOIN為左聯(lián)接,即查詢結(jié)果中包含左側(cè)表中的所有記錄,以及兩個(gè)表中與聯(lián)接字段值相匹配的記錄。RIGHTJOIN為右聯(lián)接,即查詢結(jié)果中包含右側(cè)表中的所有記錄,以及兩個(gè)表中與聯(lián)接字段值相匹配的記錄。FULLJOIN為完全聯(lián)接,即查詢結(jié)果中包含兩個(gè)表中與聯(lián)接字段值相匹配的和不相匹配的所有記錄。ON<聯(lián)接條件>短語用來指定兩個(gè)表之間的聯(lián)接條件。6.4.7統(tǒng)計(jì)查詢通過如下幾個(gè)庫函數(shù)實(shí)現(xiàn)對(duì)查詢結(jié)果的統(tǒng)計(jì)。SUM() 計(jì)算指定數(shù)值列的總和AVG() 計(jì)算指定數(shù)值列的平均值MAX() 求指定(數(shù)值、字符、日期)列的最大值MIN() 求指定(數(shù)值、字符、日期)列的最小值COUNT() 求查詢結(jié)果數(shù)據(jù)的行(記錄)數(shù)【例6-32】查詢Student表中年紀(jì)最小學(xué)生的生日,以及男生的平均年齡。SELECTMAX(出生日期)FROMStudentSELECTAVG(年齡)FROMStudentWHERE性別="男"【例6-33】查詢Student表中籍貫為“山東”的學(xué)生人數(shù)。SELECTCOUNT(*)AS山東學(xué)生人數(shù)FROMStudent; WHERE籍貫="山東"6.4.8分組查詢
通過GROUPBY短語將檢索得到的數(shù)據(jù)依據(jù)某個(gè)字段的值劃分為多個(gè)組后輸出。【例6-35】依據(jù)Student表中的數(shù)據(jù),分別統(tǒng)計(jì)各個(gè)班級(jí)的人數(shù)。SELECT班級(jí),COUNT(*)AS人數(shù); FROMStudent GROUPBY班級(jí)7.1程序文件的建立與運(yùn)行
7.1.1程序文件的建立1.用菜單方式建立程序文件執(zhí)行“文件/新建/程序/新建文件”菜單命令。2.用命令方式建立程序文件
格式:MODIFYCOMMAND<程序文件名>功能:新建或修改指定的程序文件。7.1.2程序文件的運(yùn)行
1.用菜單方式運(yùn)行程序文件執(zhí)行“程序/運(yùn)行”菜單命令。2.用命令方式運(yùn)行程序文件格式:DO<程序文件名>功能:將指定的程序文件調(diào)入內(nèi)存并運(yùn)行。7.1.3程序中的輔助命令
1.程序注釋命令格式1:NOTE<注釋內(nèi)容>格式2:*<注釋內(nèi)容>格式3:[<命令>]&&<注釋內(nèi)容>2.結(jié)束程序運(yùn)行命令
格式1:RETURN功能:返回到上級(jí)程序模塊。格式2:RETURNMASTER功能:返回到最上級(jí)主程序。格式3:CANCEL功能:停止程序執(zhí)行,關(guān)閉所有文件,返回系統(tǒng)交互狀態(tài)。格式4:QUIT功能:停止所有程序執(zhí)行,關(guān)閉所有文件,退回到宿主操作系統(tǒng)。3.運(yùn)行環(huán)境設(shè)置命令CLEAR 清屏幕CLEARALL 關(guān)閉所有文件、釋放所有內(nèi)存變量SETDEFAULTTO 設(shè)置文件訪問時(shí)默認(rèn)的驅(qū)動(dòng)器SETPATHTO 設(shè)置文件訪問時(shí)默認(rèn)的路徑SETTALKON/off 設(shè)置所有命令執(zhí)行的結(jié)果顯示與否7.1.4程序中的交互輸入命令
1.字符串輸入命令格式:ACCEPT[<提示信息>]TO<內(nèi)存變量>功能:暫停程序的運(yùn)行,等待用戶鍵入一串字符賦給指定的內(nèi)存變量。2.表達(dá)式輸入命令
格式:INPUT[<提示信息>]TO<內(nèi)存變量>功能:暫停程序運(yùn)行,接受用戶鍵入的表達(dá)式并將其值賦給指定的內(nèi)存變量。3.等待或單字符輸入命令
格式:WAIT[<提示信息>][TO<內(nèi)存變量>]功能:暫停程序運(yùn)行,若包含[TO<內(nèi)存變量>]短語時(shí),將用戶所鍵入的一個(gè)字符賦給指定的內(nèi)存變量;否則待用戶按任一鍵后繼續(xù)程序的執(zhí)行。4.定位輸出命令
格式:@<行,列>SAY<表達(dá)式>功能:在屏幕上指定的行、列位置輸出指定表達(dá)式的值。7.2順序結(jié)構(gòu)程序設(shè)計(jì)7.2.1基本程序結(jié)構(gòu)1.順序程序結(jié)構(gòu)2.分支程序結(jié)構(gòu)3.循環(huán)程序結(jié)構(gòu)7.2.2順序結(jié)構(gòu)程序設(shè)計(jì)
嚴(yán)格按照程序中各命令的先后排列順序自上而下逐條執(zhí)行?!纠?-6】在職工檔案表中查看指定職工的有關(guān)情況。USEzgdaACCEPT"請輸入被查詢者姓名:"TOxmLOCATEFOR姓名=xmCLEAR?"姓名:"+姓名?"性別:"+性別?"職稱:"+職稱?"出生日期:"+DTOC(出生日期)USERETURN7.3分支結(jié)構(gòu)程序設(shè)計(jì)
7.3.1簡單分支結(jié)構(gòu)格式:IF<條件> <語句序列>ENDIF執(zhí)行過程:當(dāng)<條件>成立時(shí),逐條執(zhí)行IF與ENDIF之間的<語句序列>,然后執(zhí)行ENDIF后的語句;當(dāng)<條件>不成立時(shí),不執(zhí)行<語句序列>而直接執(zhí)行ENDIF后的語句?!纠?-8】某種商品一次購買100件以上時(shí),可享受8%的優(yōu)惠。試編程根據(jù)輸入的單價(jià)和數(shù)量計(jì)算應(yīng)付金額。CLEARINPUT"數(shù)量:"TOslINPUT"單價(jià):"TOdjje=dj*slIFsl>=100 je=je*0.92ENDIF?"應(yīng)付金額:"+STR(je,8,2)RETURN7.3.2選擇分支結(jié)構(gòu)
格式:IF<條件> <語句序列1>ELSE <語句序列2>ENDIF執(zhí)行過程:若<條件>成立僅執(zhí)行<語句序列1>,而后執(zhí)行ENDIF后的語句;否則僅執(zhí)行<語句序列2>,而后轉(zhuǎn)去執(zhí)行ENDIF后的語句。【例7-10】出租車不超過5公里時(shí)一律收費(fèi)10元,超過時(shí)則超過部分每公里加收1.6元。試編程根據(jù)里程數(shù)計(jì)算并顯示出應(yīng)付車費(fèi)。CLEARINPUT"里程:"TOlcIFlc<=5 ?"車費(fèi)為:十元"ELSE cf=10+(lc-5)*1.6 ?"車費(fèi)為:"+STR(cf,6,2)ENDIFRETURN7.3.3分支嵌套結(jié)構(gòu)在分支結(jié)構(gòu)的<語句序列>中,允許包括另一個(gè)合法的分支結(jié)構(gòu)語句?!纠?-12】設(shè)硅谷公司員工的工資計(jì)算方法如下:每工時(shí)按68元發(fā)放;工作時(shí)數(shù)超過120小時(shí)者,超過部分加發(fā)百分之十五;工作時(shí)數(shù)不到80小時(shí)者,扣發(fā)500元。試編程按輸入的員工號(hào)和該號(hào)員工的工時(shí)數(shù),計(jì)算并輸出其應(yīng)發(fā)工資。CLEARACCEPT"員工號(hào):"TOyghINPUT"工時(shí):"TOgsIFgs>120gz=gs*68+(gs-120)*68*0.15ELSE IFgs<80 gz=gs*68-500 ELSE gz=gs*68 ENDIFENDIF? &&輸出一個(gè)空行?ygh+"號(hào)員工應(yīng)發(fā)工資:"+STR(gz,8,2)RETURN7.3.4多路分支結(jié)構(gòu)
用來解決在多種不同情況下的程序選擇執(zhí)行問題。格式:DOCASE CASE<條件1> <語句序列1> CASE<條件2> <語句序列2> …… CASE<條件n> <語句序列n> [OTHERWISE <語句序列n+1>]ENDCASE【例7-13】編程計(jì)算銀行存款整存整取應(yīng)得的利息。CLEARINPUT"本金(元):"TObjINPUT"存期(年):"TOcqDOCASE CASEcq>=5 rate=4.5 &&年利率為4.5% CASEcq>=3 rate=3.6 &&年利率為3.6% CASEcq>=2 rate=3.1 &&年利率為3.1% CASEcq>=1 rate=2.7 &&年利率為2.7% CASEcq>=0.5 rate=2.21 &&年利率為2.21% OTHERWISE rate=1.23 &&年利率為1.23%ENDCASElixi=bj*cq*rate/100? &&輸出一個(gè)空行?"應(yīng)得利息:"+STR(lixi,8,2)RETURN7.4循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
7.4.1當(dāng)型循環(huán)結(jié)構(gòu)格式:DOWHILE<條件> <語句序列>ENDDO執(zhí)行過程:若<條件>成立,執(zhí)行DOWHILE和ENDDO之間的<語句序列>;若<條件>不成立則不執(zhí)行<語句序列>,直接轉(zhuǎn)去執(zhí)行ENDDO后的語句。每執(zhí)行一遍后再對(duì)<條件>判斷一次,一旦<條件>不成立就結(jié)束循環(huán)轉(zhuǎn)去執(zhí)行ENDDO后面的語句?!纠?-14】求1+2+3+...+100的累計(jì)值。CLEARSTORE0TOn,sDOWHILEn<100 n=n+1 s=s+nENDDO?"累計(jì)值為:"+STR(s,6)RETURN7.4.2步長型循環(huán)結(jié)構(gòu)
格式:FOR<循環(huán)變量>=<初值>TO<終值>[STEP<步長值>] <語句序列>ENDFOR|NEXT執(zhí)行過程:首先將初值賦給指定的循環(huán)變量,然后判斷其值是否超過終值,不超過即執(zhí)行循環(huán)體,超過則不執(zhí)行循環(huán)體。遇到ENDFOR(或NEXT)語句時(shí)自動(dòng)給循環(huán)變量增加一個(gè)步長值,再判斷循環(huán)變量的當(dāng)前值是否超過終值,不超過再次執(zhí)行循環(huán)體,超過則結(jié)束循環(huán)轉(zhuǎn)去執(zhí)行ENDFOR(或NEXT)后的語句。【例7-18】用
溫馨提示
- 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 天一大聯(lián)盟2025屆生物高三第一學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 高平市第一中學(xué)2025屆高一上數(shù)學(xué)期末教學(xué)質(zhì)量檢測試題含解析
- 2025屆河南省扶溝高中英語高三上期末統(tǒng)考試題含解析
- 新疆哈密市第十五中學(xué)2025屆高三數(shù)學(xué)第一學(xué)期期末經(jīng)典模擬試題含解析
- 2025屆甘肅省蘭州市城關(guān)區(qū)第一中學(xué)生物高三上期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 江蘇省無錫市2025屆高一數(shù)學(xué)第一學(xué)期期末調(diào)研模擬試題含解析
- 2025屆湖北省華師一附中高二數(shù)學(xué)第一學(xué)期期末檢測試題含解析
- 湖北省宜宜昌市部分示范高中教學(xué)協(xié)作體2025屆數(shù)學(xué)高三上期末教學(xué)質(zhì)量檢測試題含解析
- 2025屆福建省莆田市第七中學(xué)生物高三上期末經(jīng)典試題含解析
- 2025屆遼寧省兩校聯(lián)考高一數(shù)學(xué)第一學(xué)期期末達(dá)標(biāo)檢測試題含解析
- 膠東國際機(jī)場
- 關(guān)鍵時(shí)刻的決策力
- 上海交通大學(xué)電子信息與電氣工學(xué)學(xué)院本科生課表
- 水工建筑物課程設(shè)計(jì)任務(wù)和指導(dǎo)書
- 蛋白的分離純化
- 16開(19x26)獎(jiǎng)狀打印模版
- 大班健康《預(yù)防手足口病》課件
- 淺談三新背景下課堂教學(xué)方式的變革 論文
- 咽喉癌病歷書寫
- 數(shù)據(jù)中心運(yùn)維管理方案
- 2023年佛山市圖書館招考工作人員筆試參考題庫(共500題)答案詳解版
評(píng)論
0/150
提交評(píng)論