




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄第1章Visual FoxPro基礎第2章數據與數據運算第3章數據庫操作第4章查詢與視圖第5章程序設計基礎第6章面向對象程序設計 第7章表單第8章報表 第9章菜單 第10章項目與項目管理器第11章小型系統開發(fā)實例 第一章數據庫基礎理論返回目錄本章要點信息、數據和數據處理數據模型數據庫系統關系數據庫及其設計 返回目錄1.1 信息、數據和數據處理 1.1.1 信息與數據 信息:是對客觀世界的抽象描述。 數據:數據是用于記錄客觀事物屬性的 物理符號。人(對象)性別:女(屬性)頭發(fā):黃(屬性)數據:包括文本形式數據和多媒體數據如:聲音和視頻、圖片等。 1、從信息處理角度看,任何事物的屬性都是通過數
2、據來表示,數據經過加工處理后,從而形成信息。 2、從計算機的角度看,數據泛指那些可以被計算機接受并能夠被計算機識別處理的符號。 3、總之,信息是有用的數據,數據是信息的表現形式,信息是通過數據符號來傳播的。數據與信息的區(qū)別 數據處理是指利用計算機將數據轉換成信息的過程,包括對數據的收集、存儲、加工、分類、排序、檢索、傳播等一系列活動。 其目的是從大量的原始數據中抽取和推導出有價值的信息,作為決策的依據。 1.1.2 數據處理信息、數據與數據處理的關系可用下式簡單表示: 信息 = 數據 + 數據處理數據是原料(輸輸入),信息是產出(輸出),“信息處理” 則是為了產生信息而處理數據。1.1.3 數
3、據管理技術(可分為3個階段)1人工管理階段(20世紀50年代中期以前) 特點:數據不長期保存,沒有對數據進行管理的軟 件,一組數據對應于一個程序。 應用程序1應用程序2應用程序n數據組1數據組2數據組n2文件系統階段時間:20世紀50年代后期至60年代。特點 :數據以文件形式長期保存;數據與程序有一定的獨立性。缺點 :數據冗余度大 ;數據獨立性差;缺乏對數據的統一控制管理。圖示應用程序1應用程序2應用程序n數據組1數據組2數據組n操作系統3數據庫系統管理階段 時間:20世紀60年代后期開始 特點:(1)有了數據庫管理系統(DBMS) (Database Management System)。
4、(2)面向全局。 (3)具有較高的數據獨立性 (4)有統一的數據控制功能。圖示應用程序1應用程序2應用程序n數據庫數據庫管理系統數據庫系統管理階段即對所有的數據實行統一規(guī)劃管理,形成一個數據中心,構成一個數據“倉庫”。1.2 數據模型 數據模型是對客觀事物及其聯系的數據描述,反映實體內部和實體之間的聯系。1.2.1 實體及其聯系1、實體 從數據處理的角度看,現實世界中的客觀事物稱為實體。2. 實體間的聯系 實體之間的對應關系稱為聯系,它反映了現實世界事物之間的相互關聯。 1)一對一聯系(1:1) 2)一對多聯系(1:n) 3)多對多聯系(m:n)1.2.2 具體數據模型在數據庫系統中,常用的數
5、據模型有: 層次模型 網絡模型 關系模型。1.2.1 層次模型1層次模型:層次模型用樹形結構來表示實體及其之間的聯系。特點: 1)有一個結點沒有父親,稱為根結點。 2)其它結點有且僅有一個父親。 實體之間的聯系是1:M聯系(包括1:1聯系)。 層次結構圖示ABCDEFGH實例:學校財務處人事處行政教學藝術系研究所計輔教研室 層次模型優(yōu)點:層次清晰、構造簡單、易于實現1:1和1:M的實體聯系。 采用層次模型來設計的數據庫稱為層次數據庫。2、網狀模型 是用以實體型為結點的有向圖來表示各實體及其之間的聯系。特點: 1) 可以有一個以上的結點無父親。 2) 至少有一個結點有多于一個的父親。 能表示 M
6、:N 聯系。缺點:編寫應用程序復雜,模型結構復雜。圖示CDBEA圖示成都德陽自貢資陽南充攀枝花灌縣康定西昌(150)(102)(230)(130)(80)(95)(110)(130)(240) 關系模型 是用二維表格來表示實體及其相互之間的聯系。在關系模型中,把實體集看成一個二維表,每一個二維表稱為一個關系。每個關系均有一個名字,稱為關系名。3.關系模型關系模型圖例元組(記錄值)屬性(數據項)表頭學生成績關系后退 (1) 關系中每一分量不可再分,是最基本的數據單位; (2) 每一豎列的分量是同屬性的,列數根據需要而設,且各列的順序是任意的; (3) 每一橫行由一個個體事物的諸多屬性構成,且各行
7、的順序可以是任意的; (4) 一個關系是一張二維表,不允許有相同的屬性名,也不允許有相同的元組。關系模型的主要特點1.3 數據庫系統 1.3.1 數據庫 數據庫(Data Base)是數據庫系統的核心和管理對象。 所謂數據庫,就是以一定的組織方式將相關的數據組織在一起,存放在計算機外存儲器上形成的,能為多個用戶共享的,與應用程序彼此獨立的一組相關數據的集合。1、 數據庫系統的組成 數據庫系統DBS(Database System)是由計算機硬件、軟件、 數據庫、數據庫系統有關人員組成。是具有高度組織性的總體。1.3.2 數據庫管理系統硬件及軟件構成 1. 硬件 除要求CPU的處理速度高、內存容
8、量大以外,還要求有足夠的外存空間以存儲數據庫中的數據。 2. 軟件 數據庫系統中的軟件包括操作系統、數據庫管理系統及數據庫應用系統等。數據庫管理系統DBMS DBMS(DataBase Management System)是數據庫系統的核心軟件之一。 主要目標是使數據成為方便用戶使用的資源,易于為各種用戶所共享,并增進數據的安全性、完整性和可用性。它提供數據定義、數據操作、數據庫管理、數據庫建立和維護以及通信等功能?,F今流行的DBMS 目前較流行的數據庫管理系統有:Oracle、Sybase、SQLServer、Access、Visual Foxpro等。數據庫中的數據由DBMS進行統一管理和
9、控制,用戶對數據庫進行的各種數據操作都是通過DBMS實現的。數據庫系統的組成示意圖硬件OS用戶數據庫管理員數據庫DBMS數據庫應用系統1.4 關系數據庫及其設計 1.4.1 關系數據庫 關系數據庫(Relational Data Base)是若干個關系的集合。也可以說,關系數據庫是由若干張二維表組成的。 在關系數據庫中,將一個關系視為是一張二維表,又稱其為數據表。 一個關系數據庫由若干個數據表組成,數據表又由若干個記錄組成,而每一個記錄是由若干個以字段屬性加以分類的數據項組成的。關系 模型理論與關系數據庫中術語的對照關系 在數據表中,若某一字段或幾個字段的組合值能夠標識一個記錄,則稱其為關鍵字
10、(或鍵),當一個數據表有多個關鍵字時,可從中選出一個作為主關鍵字(或主鍵)。見表關鍵字及主鍵 在關系數據庫中,數據表之間是具有相關性的。數據表之間的這種相關性是依靠每一個獨立的數據表內部具有相同屬性的字段建立的。一般地,兩個數據表之間建立關聯關系,是將一個數據表視為父表,另外一個數據表視為子表,其中子表中與父表主關鍵字段相對應的字段作為外鍵,數據表之間的關聯就是通過主鍵與外鍵作為紐帶實現關聯的。見表數據表之間的關聯 在關系數據庫中,數據表為基本文件,每個數據表之間具有獨立性,而且若干個數據表間又具有相關性,使得數據操縱方式簡單,這一特點使其具有極大的優(yōu)越性,并能得以迅速普及。 表1-4 信息中
11、心專門人才基本情況一覽表1.4.2 關系的規(guī)范化 專門人才基本情況一覽表(如表1-5所示),它收入了自然情況。 專門人才專業(yè)特長一覽表(如表1-6所示),它收入了專業(yè)特長情況。 專門人才成就成果情況一覽表(如表1-7所示),它收入了成就及成果情況。構建數據表表5 信息中心專門人才基本情況一覽表 表1-6 信息中心專門人才專業(yè)特長一覽表 表1-7 信息中心專門人才成就成果一覽表 表1-5表1-7表1-6一對多一對一專門人才基本情況數據庫 如何反映客觀事物數據間的多種對應關系?通常將對應數據表放入同一個數據庫中,并建立表間關聯來刻畫聯系。 在同一個數據庫中,相關聯的表間關系的類型有一對一、一對多和
12、多對一3種關系。 1.4.3 表間關聯關系的類型 1一對一關系 一對一關系即在兩個數據表中選一個相同屬性字段作為關鍵字段,把其中一個數據表中的關鍵字段稱為主關鍵字段,該字段值是唯一的,而另一個數據表中的關鍵字段稱為外來關鍵字段,該字段值也是唯一的。 一對一(編號)后退到到到到 2一對多關系 一對多關系,即在兩個數據表中選一個相同屬性字段作為關鍵字段,把其中一個數據表的關鍵字段稱為主關鍵字段,該字段值是唯一的,而把另一個數據表中的關鍵字段稱為外來關鍵字段,該字段值是重復的。 一對多(編號)到到 3多對一關系 多對一關系與一對多關系是類似的,唯一的區(qū)別是在兩個相關聯的數據表中,選擇哪一個數據表中的
13、關鍵字段為主關鍵字段,該字段值是重復的,與它關聯的另一個數據表中的關鍵字段為外來關鍵字段,該字段值是唯一的。多對一(編號) 關系的完整性,即關系中的數據及具有關聯關系的數據間必須遵循的制約和依存關系,以保證數據的正確性、有效性和相容性。 關系的完整性主要包括域完整性、實體完整性和參照完整性三種。 1.4.4 關系的完整性 1域完整性 域完整性是對數據表中字段屬性的約束,它包括字段的值域、字段的類型及字段的有效規(guī)則等約束,它是由確定關系結構時所定義的字段的屬性決定的。 見表 2實體完整性 實體完整性是對關系中的記錄唯一性,也就是主鍵的約束。準確地說,實體完整性是指關系中的主屬性值不能為Null且
14、不能有相同值。見表 3參照完整性 參照完整性是對關系數據庫中建立關聯關系的數據表間數據參照引用的約束,也就是對外鍵的約束。準確地說,參照完整性是指關系中的外鍵必須是另一個關系的主鍵有效值,或者是NULL。見表 關系運算是以關系為運算對象的運算,在關系運算中,變量是關系,運算結果仍然是關系。 常見的關系運算有選擇運算、投影運算和連接運算三種。 1.4.5 關系運算 1選擇(Select) 選擇運算是從關系中選擇某些滿足條件的記錄組成一個新的關系。也可以說,選擇運算是在關系R中選擇滿足給定條件的元組。見表 2投影(Projec) 投影運算是從關系中選擇某些字段的所有值組成一個新的關系。也可以說,投
15、影運算是在關系R中選擇出若干屬性列。見表 3連接(Join) 連接運算是將兩個或多個關系通過連接條件組成一個新的關系。也可以說,連接運算是在關系R和關系S中選擇屬性間滿足一定條件的元組。見表表1 選修數據庫學生成績選擇(成績(數據庫)=90)投影(表1.學號,表1.成績)連接(表1.學號=表2.學號)表2 選修法律學生成績關系運算實例到58到59到60本章小結第1章 數據庫基礎理論 重要知識點 1、數據庫的3種模型 2、數據庫、數據庫系統、DBMS的概念 3、關系數據庫的相關概念 4、關系的完整性 5、關系的運算no2復習數據庫管理發(fā)展階段人工管理階段、文件、數據庫數據庫系統組成軟件、硬件、數
16、據庫管理人員數據模型實體、屬性、聯系數據模型分類層次、網絡、關系關系數據庫關系模型元組(行、紀錄),屬性(列,字段)關系運算選擇、投影、聯結Visual FoxPro系統概述本章要點Visual FoxPro的安裝與啟動 Visual FoxPro系統環(huán)境的配置 Visual FoxPro用戶界面 Visual FoxPro向導 Visual FoxPro生成器 Visual FoxPro設計器 2.1Visual FoxPro的安裝與啟動 2.1.1 安裝環(huán)境 2.1.2 Visual FoxPro 的安裝 啟動Visual FoxPro有多種方法,可采用以下三種方式之一。 1從“開始”菜單
17、啟動 2從資源管理器中啟動 3從“運行”對話框中啟動 2.1.3 啟動Visual FoxPro 在Microsoft Visual FoxPro主菜單中,打開“文件”菜單,選擇“退出”選項;按Alt+F4組合鍵;按Ctrl+Alt+Del組合鍵,進入“關閉程序”窗口,按“結束任務”按鈕;在Microsoft Visual FoxPro的系統環(huán)境窗口,單擊其右上角的“退出”按鈕;在“命令”窗口,輸入命令Quit。2.1.4 退出Visual FoxPro 2.2Visual FoxPro系統環(huán)境的配置 Visual FoxPro系統環(huán)境的配置,決定了Visual FoxPro系統的操作環(huán)境和工
18、作方式。 Visual FoxPro系統允許用戶設置大量參數控制其工作方式。通過設置系統環(huán)境,可以添加或刪除Visual FoxPro控件、更新Windows Registry注冊項、改變選項欄和工具欄、安裝ODBC數據源等。 系統環(huán)境配置操作步驟工具選項常規(guī) 數據 顯示 文件位置 表單項目 控件確定2. Visual FoxPro用戶界面 2.1 Visual FoxPro的界面 Visual FoxPro界面,是由標欄、菜單欄、工具欄、工作區(qū)、狀態(tài)欄和命令窗口組成的。 2.2 標題欄標題欄位于屏幕界面的第一行,它包含系統程序圖標、主屏幕標題、最小化按鈕、最大化按鈕和關閉按鈕5個對象。菜單欄
19、工具欄命令窗口狀態(tài)欄工作區(qū)標題欄Visual FoxPro菜單項的功能 (1) “文件”菜單 (2) “編輯”菜單 (3) “顯示”菜單 (4) “格式”菜單(5) “工具”菜單 (6) “程序”菜單 (7) “窗口”菜單 (8) “幫助”菜單2.3 菜單欄Visual FoxPro系統提供了11種常用的工具欄: (1)常用工具欄 (2)布局工具欄 (3)表單控件工具欄 (4)表單設計器工具欄 (5)查詢設計器工具欄 (6)視圖設計器工具欄 (7)數據庫設計器工具欄(8)報表控件工具欄 (9)報表設計器工具欄 (10)調色板工具欄 (11)打印預覽工具欄 2.4.4 工具欄 激活工具欄的操作步
20、驟 顯示 工具欄 “常用” 確定命令窗口位于菜單欄和狀態(tài)欄之間,是Visual FoxPro系統命令執(zhí)行、編輯的窗口。 在“窗口”菜單下,選擇“隱藏”,可以關閉命令窗口;選擇“命令窗口”,可以彈出命令窗口。 2.4.5 命令窗口狀態(tài)行位于屏幕的最底部,用于顯示某一時刻的管理數據的工作狀態(tài)。 (1) Set Status off/ on,可控制屏幕上的狀態(tài)行是否出現。 (2) 當前工作區(qū)中表文件打開后,狀態(tài)行顯示將顯示該表的相關內容2.4.6 工作區(qū)與狀態(tài)行2.5 Visual FoxPro向導 用戶通過系統提供的各種不同的向導設計器,不用編程就可以創(chuàng)建良好的應用程序界面,并完成許多有關對數據庫
21、的操作。 常用的向導設計器有:表向導、表單向導、報表向導、查詢向導 等。2.6 Visual FoxPro生成器 Visual FoxPro系統提供的生成器,可以簡化創(chuàng)建和修改用戶界面程序的設計過程,提高軟件開發(fā)的質量。每個生成器都由一系列選項卡組成,允許用戶訪問并設置所選對象的屬性。 常用的生成器有:組合框生成器、命令組生成器、表達式生成器、列表框生成器等。2.7 Visual FoxPro設計器系統提供的設計器,為用戶提供了一個友好的圖形界面。用戶可以通過它創(chuàng)建并定制數據表結構、數據庫結構、報表格式和應用程序組件等。 常用的設計器有:表設計器、查詢設計、視圖設計器、列表框生成器、報表設計器
22、、數據庫設計器、菜單設計器等。 本章小結第章 系統概述 重要知識點熟悉的用戶界面,掌握各組成部分的大致功能如何設置系統的系統環(huán)境第2章數據與數據運算 本章要點數據類型 數據存儲 函數 表達式 2.1 數據類型概念: 數據記錄了客觀事物的屬性,包括兩個方 面:數據內容和數據形式 。前者是數據的值, 后者是數據的存儲形式和使用方式,也稱為數 據類型。字符型數據類型不能進行算術運算 用字母C表示 包括一切可打印字符,例如,中文字符、英文字符、數字字符和其他ASCII字符等 長度(即字符個數)范圍為0254,每個字符占一個字節(jié) 數值型數據類型表示數量并可以進行算術運算 用字母N表示 數值型數據在內存中
23、占用8個字節(jié),數據長度(即數據位數)為120位 。貨幣型用來存儲貨幣值 用字母Y表示 默認保留4位小數,占用8字節(jié)存儲空間 數據類型日期型日期型數據表示不帶時間的日期數據用字母D表示長度固定為8個字節(jié),年月日之間的分隔符占一個字節(jié) 。數據類型 日期時間型表示日期和時間的數據 用字母T表示 長度固定為8個字節(jié) 數據類型邏輯型描述客觀事物真假 ,表示邏輯判斷的結果 用字母L表示 長度固定為1個字節(jié) 數據類型備注型用于存放較多字符型數據(超過254個字符)或者長度不一的字符型數據 用字母M表示 備注型數據只能作為數據表中備注型字段的值 備注型字段長度固定為4個字節(jié),這4個字節(jié)存儲的是實際數據在.fp
24、t文件中的存儲位置。數據類型通用型數據類型存儲OLE(對象鏈接與嵌入)對象 (比如:電子表格、文檔、圖形、聲音 )用字母G表示 只能用于數據表中的字段類型定義 通用型數據字段長度固定為4個字節(jié),實際數據存放在與表文件同名的備注文件(.fpt)中 整型/浮點型/雙精度型 都具有數值特征 都只能用于字段變量浮點型用字母F表示,功能上與數值型等價。雙精度型提供更高的數據精度 ,每個雙精度型數據占8個字節(jié) 整型用于存儲無小數部分的數值 ,整型字段占4個字節(jié) ,用字母I表示。數據類型常量與變量常量是以直觀的數據形態(tài)和意義的形式出現的數據,其值保持不變。按常量取值的數據類型,可將常量分為6種類型。 數值型
25、貨幣型日期型日期時間型邏輯型字符型變量是在操作過程中其值可以被改變的數據對象,必須在對其賦值之后才能使用。詳細講解字符型常量用規(guī)定的定界符括起來的一串字符,又稱為字符串 字符串定界符有單引號( )、雙引號( )、方括號( )三種 定界符內沒有任何字符就是空串( ) 選出正確的字符型常量:3*9 hello 你好 Iam a student數值型常量由阿拉伯數字、小數點和正負號組成 沒有定界符,可以是整數和小數,不能直接表示分數兩種表示方法:小數形式和指數形式正確:117、-12.5、2.1E3(表示2.1*1000)錯誤:117、1/5貨幣型常量貨幣型常量的書寫格式與數值型常量類似,但要加上一
26、個前置的$ ,例如$1000貨幣型數據在存儲和計算時,采用4位小數 ,不能采用指數形式 。例如,貨幣型常量$3.1415926,將存儲為$3.1416。 日期型常量定界符為花括號( 或者 ) 輸入格式為yyyy/mm/dd(唯一,例如:2006/10/18)年月日之間用分隔符隔開,分隔符可以是“/” 、“-” 、“.” 等符號 輸出顯示格式有多種,具體使用哪一種格式主要與日期格式的設置相關,日期的默認顯示格式是mm/dd/yyyy 嚴格的日期格式日期時間型常量定界符也為花括號( 或者 ) 輸入格式為yyyy/mm/dd,hh:mm:ssa|p,例如:2006/02/10 22:22:22 p其
27、分隔符與日期型數據分隔符相同,時分秒之間用“ :”分隔 輸出顯示格式有多種,具體使用哪一種格式主要與日期格式的設置相關,日期時間的默認顯示格式為 :mm/dd/yyyy , hh:mm:ssa|p ,例如,09/01/2005 11:45:30 pm 嚴格的日期與時間格式邏輯型常量邏輯型常量只有“真”和“假”兩種值 定界符為圓點(. .)邏輯真用.T.、.t.、.Y.或.y.表示,邏輯假用.F.、.f.、.N.或.n.表示。注意:字母前后的圓點不能省略變量常量與變量變量名分類(兩大類)概念命名規(guī)則字段變量內存變量 變量實質是具有某一地址的存儲單元 ,該地址被賦以名字,通過名字可以訪問和存取該地
28、址中的值,這個指向某個地址的名字就是變量名。(1) 只能使用字母、漢字、下劃線和數字命名。(2) 命名必須以字母、漢字或下劃線開頭。除自由表中字段名、索引的TAG標識名最多只能10個字符外,其他的命名可使用1128個字符。 (3) 不可與系統保留字同名。例如,for、quit、list等系統保留字。 a2b、年齡、Dept_3 2ab、*B、for、a? 字段變量指表中的字段,是一種多值變量,其值是表記錄指針當前所指的那條記錄對應字段的值,可以是任意數據類型。 內存變量是一種獨立于表,并使用臨時工作單元的變量,用戶退出VFP或關機就會消失。 內存變量的類型一般是常用的六種。用內存變量名實現對內
29、存變量的訪問。 如果內存變量與字段變量同名,則在調用該內存變量時應在內存變量名前加上符號“M.”或“M-” 。例如,M.姓名表示內存變量“姓名”的值。 備注型、通用型、整型、浮點型、雙精度型、二進制字符型和二進制備注型等數據類型只能用于字段變量中 。內存變量內存變量的賦值 命令格式1:= 命令格式2:STORE TO 例子:a=.t. & a為邏輯型 b=100 & b為數值型 store “2” to a & a為字符型 store 7*3+5 to a ,b & a,b分別是什么類型?這兩條命令的區(qū)別是:第一種格式只能給一個內存變量賦值,第二種格式可以同時給多個內存變量賦相同的值。內存變量
30、的顯示 命令格式1:DISPLAY MEMORY LIKE TO PRINTERTO FILE 命令格式2: LIST MEMORY LIKE TO PRINTERTO FILE 例子: list memory & 連續(xù)顯示所有內存變量 display memo like a* & 分屏顯示所有以a開頭的內存變量 list memo like ?1 & 連續(xù)顯示所有首個字符為任意字符, 第二個字符為1的內存變量 內存變量這兩條命令的區(qū)別是:LIST MEMORY命令一次連續(xù)顯示指定的內存變量; DISPLY MEMORY命令分屏顯示指定的內存變量 LIKE選項表示顯示與通配符相匹配的內存變量,
31、通配符?表示任意一個字符,通配符*表示任意多個字符 內存變量內存變量的保存命令格式:SAVE TO ALL LIKE|EXCEPT 例子: save to a & 將所有內存變量保存到文件a.mem中 save to a1 all like a* & 將所有以a開頭的內存變量保存到文件 a1.mem中 save to a2 all except a* & 將所有不以a開頭的內存變量保存 到文件al2.mem中 為了便于以后使用,可以將所定義內存變量的相關信息全都保存到一個文件中,該文件稱為內存變量文件,默認的擴展名為.mem 內存變量內存變量的恢復 命令格式:RESTORE FROM ADDI
32、TIVE 例子: restore from a1 & 將保存在文件al.mem中的內存變量讀入內 存,并清除內存中現有的內存變量。 restore from a2 additive & 將保存在文件a2.mem中的內存變量 讀入內存,但不清除內存中現有的內 存變量。 指將已存入內存變量文件中的內存變量從文件中讀出,裝入內存中,以供使用. 內存變量內存變量的刪除 命令格式1:CLEAR MEMORY 功能:刪除所有內存變量。 命令格式2:RELEASE ALL LIKE|EXCEPT 功能:刪除指定的內存變量。 例子: release all & 刪除所有內存變量 release all lik
33、e a* & 刪除所有以a開頭的內存變量 release all exce ?a & 刪除什么樣的內存變量?數組變量內存變量的另一種應用形式 內存變量(1)數組的定義(數組必須先定義后使用) 命令格式1:DIMENSION (,下標上界2), 命令格式2:DECLARE (,下標上界2), 說明 兩條命令的功能完全相同。下標的下界和上界均是整數值,下界值為1。數組一經定義,它的每個元素都可當作一個內存變量來使用。每個元素的數據類型是根據所賦值的類型來確定,可以互不相同。 數組變量是一組內存變量的集合,這些內存變量可以具有不同的數據類型,每個內存變量就是一個數組元素。內存變量數組變量內存變量的另
34、一種應用形式 (2)數組的賦值 例如: dime a(5) , b(4,3) a=60 b(1, 3)=.t.注:執(zhí)行后,一維數組a的5個元素都賦以同樣的值60,二維數組元素b(1,3) 的值為.t. 數組定義之后,系統自動為每個數組元素賦初值邏輯假.F. 使用賦值命令可以給單個數組元素賦值,也可以給整個數組的各個元素賦以相同的值。 由于二維數組各元素在內存中按行的順序存儲,所以,二維數組可按一維數組元素的順序來存取數據例如: 二維數組b(4,3)中的元素b(2,2)是排在第2行第2列,由于每一行是3個元素,所以b(2,2)也可用b(5)表示。即,b(1)=b(1,1), b(2)=b(1,2
35、),b(3)=b(1,3),b(4)=b(2,1),b(5)=b(2,2)。 為了增強系統的功能和方便用戶使用,VFP提供了許多內部函數,每個函數實現某一功能或運算。 函數調用的格式為: 函數名(參數表) 其中參數可根據實際需要選用,有些函數沒有參數。即使沒有參數,函數名后的一對括號也不能參略。 函數可分為數值型、字符型、日期時間型、數據類型轉換型、測試型幾種類型。函 數數值函數 1. 求絕對值函數 格式:ABS() 功能:求數值型表達式的絕對值。函數值為數值型。 例: a=10 b=20 ?abs(a-b) 結果: 10函 數數值函數 2. 求平方根函數 格式:SQRT() 功能:求數值型表
36、達式的算術平方根,數值型表達 式的值應不小于零。函數值為數值型。 例: a=25 ?sqrt(a),sqrt(a-9) 結果: 5.00 4.00函 數數值函數 3. 求指數函數 格式:EXP() 功能:將數值型表達式的值作為指數x,返回ex的值。函數值為數值型。 例: ?Exp(0),exp(1) 結果: 1.00 2.72函 數函 數數值函數 4. 求對數函數 格式1:LOG() 格式2:LOG10() 功能:LOG求數值型表達式的自然對數,LOG10求數值型表達式的常用對數,數值型表達式的值必須大于零。函數值為數值型。 例: ?log(10),log10(10) 結果: 2.30 1.0
37、0函 數數值函數 5. 取整函數 格式: INT() CEILING() FLOOR() x=56.72 ?int(x),int(-x),ceiling(x),ceiling(-x),floor(x),floor(-x) 結果:56 -56 57 -56 56 -57功能: INT取數值型表達式的整數部分。CEILING取大于或等于指定表達式的最小整數。FLOOR取小于或等于指定表達式的最大整數。 函數值均為數值型。函 數數值函數6. 求余數函數格式: MOD(,)功能: 1)求除以所得出的余數,所得余數的符號和表達式2相同。 2)如果被除數與除數同號,那么函數值即為兩數相除的余數。 3)如果
38、被除數與除數異號,則函數值為兩數相除的余數再加上除數的值。 4)函數值為數值型。例1: ?mod(25,7) ?mod(25,-7) ?mod(-25,7) ?mod(-25,-7)結果: 4 3 3 4函 數數值函數7. 四舍五入函數 格式:ROUND(,) 功能:對求值并保留n位小數,從n+1位小數起進行四舍五入。n的值由數值型表達式2確定。若n小于0,則對的整數部分按n的絕對值進行四舍五入。 例: ? ROUND(3.1415*3,2) , ROUND(156.78,-1) 結果: 9.42 160函 數數值函數8. 求最大值和最小值函數 格式:MAX(), ) 格式:MIN(), )
39、功能:MAX求n個表達式中的最大值,MIN求n個表達式中的最小值。表達式類型不限定,但所有表達式的類型應相同。函數值的類型與自變量的類型一致。 例:? max (2005-08-16 , 2002-08-16) ? min (班長,副班長, 學習委員, 組長) 結果:08/16/05 班長函 數數值函數9. 函數 格式:PI() 功能:返回圓周率的近似值。 例:?SIN(PI()/6) 結果:0.51. 宏代換函數 格式: &.字符表達式 功能: 代換出一個字符型內存變量的內容。若與后面的字符無空格分界,則&函數后的“.”必須有。函 數字符函數例1: a=“*” ?“5&a.4” ,5&a.4
40、結果: 5*4 20例2: m=245*SQRT(4) ?34+&m結果: 524.00例3: i=1 j= 2“ x12=Good“ Good=MAX(96/01/02,65/05/01) ? x&i.&j, &x12結果: good 48函 數字符函數2.求字符串長度函數 格式:LEN(字符型表達式) 功能:求字符串的長度,即所包含的字符個數。若是空串,則長度為0。函數值為數值型。 例:?len(中華人民共和國), len( ) 結果: 14 0函 數字符函數3. 求子串位置函數格式:AT(,) ATC(,)功能:若的值存在于的值中,則給出在中的開始位置,若不存在,則函數值為0。函數值為數
41、值型。ATC函數在子串比較時不區(qū)分字母大小寫。 例:xm= 王峰 ? AT(王,xm),AT(PRO,Visual FoxPro) ? ATC(PRO,Visual FoxPro) 結果: 1 0 11 函 數字符函數4. 取子串函數格式:LEFT(,) RIGHT(,) SUBSTR(,說明:對于left和right函數,若N_E的值大于0,且小于等于字符串的長度,則子串的長度與N_E值相同;若N_E的值大于字符串的長度,給出整個字符串;若N_E小于或等于0,則給出一個空字符串。 對于substr函數,若字符個數省略,或字符個數多于從起始位置到原字符串尾部的字符個數,則取從起始位置起,一直到
42、字符串尾的字符串作為函數值。若起始位置或字符個數為0,則函數值為空串。 從字符型表達式左邊的第一個字符開始截取子串從字符型表達式右邊的第一個字符開始截取子串對字符型表達式從指定位置開始截取若干個字符,起始位置和字符個數分別由數值型表達式1和數值型表達式2決定。 例子: xm=陳勝利 ? SUBSTR(xm,1,2),LEFT(xm,4),RIGHT(XM,2)結果: 陳 陳勝 利函 數字符函數5.刪除字符串前后空格函數 格式:LTRIM() RTRIM() ALLTRIM() 功能:LTRIM刪除字符串的前導空格。 RTRIM刪除字符串的尾部空格,RTRIM亦可寫成TRIM。 ALLTRIM刪
43、除字符串中的前導和尾部空格,ALLTRIM函 數兼有LTRIM和RTRIM函數的功能。 函 數字符函數6.生成空格函數 格式:SPACE() 功能:生成若干個空格,空格的個數由數值型表達式的 值決定。 例:name=SPACE(8) ? LEN(RTRIM(name) 結果:0函 數字符函數7.生成空格函數 格式:STUFF(,) 功能:用去替換中由起始位置開始所指定的若干個字符。起始位置和字符個數分別由和指定。如果C_N2的值是空串,則C_N1中由起始位置開始所指定的若干個字符被刪除。 例:x=湖南財經高等??茖W校 ? STUFF(x,9,12, 學院) 結果:湖南財經學院 函 數字符函數8
44、.產生重復字符函數 格式:REPLICATE(,) 功能:重復給定字符串若干次,次數由數值型表達式 給定。 例:? REPLICATE ( * ,6) 結果:* 函 數字符函數9.大小寫字母轉換函數 格式:LOWER() UPPER() 功能:LOWER將字符串中的大寫字母轉換成小寫。 UPPER將字符串中的小寫字母轉換成大寫。 例:yn=y ? UPPER(yn),LOWER(YES) 結果:Y yes 函 數日期與時間函數 1.系統日期和時間函數 函 數日期與時間函數 2.求年份、月份和天數函數函 數日期與時間函數 3.求時、分和秒函數函 數數據類型轉換函數 1.將字符轉換成ASCII碼的
45、函數 格式:ASC() 功能:給出指定字符串最左邊的一個字符的ASCII碼 值。函數值為數值型。 例:?ASC(“ABC”),ASC(“BC”) 結果:65 66函 數數據類型轉換函數 2.將ASCII碼轉換成相應字符函數 格式:CHR() 功能:將數值型表達式的值作為ASCII碼,給出所 對應的字符。 例:?CHR(65) 結果:A 函 數數據類型轉換函數 3.將字符串轉換成日期或日期時間函數 格式:CTOD() CTOT() 功能:CTOD函數將指定的字符 串轉換成日期型數據,CTOT 函數將指定的字符串轉換成 日期時間型數據。字符型表 達式中的日期部分格式要與 系統設置的日期顯示格式一致
46、。 例子: A=CTOD(01/02/03) B=CTOT(01/02/03 01:20:30) ?VARTYPE(A) ?VARTYPE(B) 結果: D T函 數數據類型轉換函數 4.將日期或日期時間轉換成字符串函數 格式:DTOC(|,1) TTOC(,1) 功能:DTOC函數將日期數據或日期時間數據的日期部分轉換為字符型,TTOC函數將日期時間數據轉換為字符型。字符串中日期和時間的格式受系統設置的影響。對DTOC來說,若選用1,結果為yyyymmdd格式。對TTOC來說,若選用1,結果為yyyymmddhhmmss格式。 例子: A=DTOC(2006/02/03 ) B=TTOC(2
47、006/02/03 11:20:30) ?VARTYPE(A), VARTYPE(B)結果: C C 函 數數據類型轉換函數 5.將數值轉換成字符串函數 格式:STR(, ,) 功能:將N_E1的值轉換成字符串。轉換后字符串的長度由 N_E2決定,保留的小數位數由N_E3決定。 省略N_E3時,轉換后將無小數部分。省略N_E2和 N_E3時,字符串長度為10,無小數部分。 如果指定的長度大于小數點左邊的位數,則在字符 串的前面加上空格,如果指定的長度小于小數點左邊的 位數,則返回指定長度個星號*,表示出錯。 例: x=1234.587 ?STR(x,10,2),STR(x,10,4),STR(
48、x,7,2) 結果:1234.591234.58701234.59其中的代表空格。函 數數據類型轉換函數 6.將字符串轉換成數值函數 格式:VAL() 功能:將由數字、正負號、小數點組成的字符串轉換為 數值,轉換遇上非上述字符停止。若串的第一個字符 即非上述字符,函數值為0。前導空格不影響轉換。 例子:? vartype(val(1200) 結果:C函 數測試函數 1.數據類型測試函數 格式:VARTYPE(,) 功能:測試表達式的數據類型,返回用字母代表的數據 類型。函數值為字符型。未定義或錯誤的表達式返回 字母U。若表達式是一個數組,則根據第一個數組元素 的類型返回字符串。 例子:a=20
49、05/11/17 ?VART(4*5),VART(.t.),VART(a), VART(a),VART(b) 結果:N L D C U函 數測試函數 2. 表頭測試函數 格式:BOF( |) 功能:測試指定或當前工作區(qū)的記錄指針是否超過了第一個邏輯記錄,即是否指向表頭,若是,函數值為.T.,否則為.F.。缺省時默認為當前工作區(qū)。3. 表尾測試函數 格式:EOF(|) 功能:測試指定或當前工作區(qū)中記錄指針是否超過了最后一個邏輯記錄,即是否指向表的末尾,若是,函數值為.T.,否則為.F.。缺省時默認為當前工作區(qū)。函 數測試函數 4. 記錄號測試函數 格式:RECNO(|) 功能:返回指定或當前工作
50、區(qū)中當前記錄的記錄 號,函數值為數值型。 省略參數時,默認為當前工作區(qū)。 如果記錄指針在最后一個記錄之后,即EOF() 為.T.,RECNO()返回比記錄總數大1的值。 如果記錄指針在第一個記錄之前或者無記錄,即 BOF()為.T.,RECONO()返回1。函 數測試函數 5. 記錄個數測試函數 格式:RECCOUNT() 功能:返回當前或指定表中記錄的個數。如果在 指定的工作區(qū)中沒有表被打開,則函數值為0。 如果省略參數,則默認為當前工作區(qū)。 其返回的值不受SET DELETED和SET FILTER 的影響,總是返回包括加有刪除標記在內的 全部記錄數。函 數測試函數 6. 查找是否成功測試
51、函數 格式:FOUND() 功能:在當前或指定表中,檢測是否找到所需的數據。 如果省略參數,則默認為當前工作區(qū)。 數據搜索由FIND、SEEK、LOCATE命令實現。如 果這些命令搜索到所需的數據記錄,函數值為.T., 否則函數值為.F.。 如果用非搜索命令,例如,GO移動記錄指針, 則函數值為.F.。函 數測試函數 7.文件是否存在測試函數 格式:FILE() 功能:檢測指定的文件是否存在。如果文件存 在,則函數值為.T.,否則函數值為.F.。 文件名必須是全稱,包括盤符、路徑和擴 展名,且是字符型表達式。函 數測試函數 8. 判斷值介于兩個值之間的函數 格式: BETWEEN(, ) 功能
52、: 判斷表達式的值是否介于相同數據類型的兩個表達式值之間。BETWEEN()首先計算被測試表達式的值。如果表達 式(字符型、數值型、日期型)的值介于兩個相同類型表達式的值之間,即被測表達式的值大于或等于下限表達式的值,小于或者等于上限表達式的值,BETWEEN()將返回一個真.T.值,則返回.F.。 例: gz=375 ? BETWEEN(gz,260,650)結果:.T.函 數測試函數 9. 條件函數IIF 格式:IIF(,) 功能:若邏輯型表達式的值為.T.,函數值為 的值,否則為的值。 例:xb=女 ?IIF( xb=男,1 ,IIF(xb=女,2,3) 結果:2 概念 表達式就是用運算
53、符和括號將常量、變量和函數連接起來的有意義的運算式。 單個常量、變量和函數可以看作最簡單的表達式。 表達式 分類 按運算符的不同可以將表達式分為五類。 五類表達式的比較學習表達式當一個表達式包含多種運算時,其運算的優(yōu)先級由高到低排列為: 字符表達式 連接運算 連接運算符有完全連接運算符“”和不完全連接運算符“”兩種。 格式: +/- “”運算的功能是將兩個字符串連接起來形成一個新的字符串。 “”運算的功能是去掉字符串1尾部的空格,然后將兩個字符串連接起來,并把字符串1末尾的空格放到結果串的末尾。 例如:? 姓名 李森 + 男 結果:姓名李森男表達式字符表達式 包含運算 包含運算的結果是邏輯值。
54、 格式: $ 若包含在之中,其表達式值為.T.,否則為.F.。 例如:zhch=副教授 ? 教授 $ zhch 結果:.T.格式1: 即 D1ND2格式2: 即 D1ND2格式3: 即 D1D2N格式4: 即 T1NT2格式5: 即 T1NT2格式6: 即 T1T2N日期和時間表達式表達式關系表達式 一般形式為:e1 e2 其中e1、e2可以同為數值型表達式、字符型表達式、日期型表達式或邏輯型表達式。但精確等于號=僅適用于字符型數據。 非精確等于是指等號右邊與左邊的前幾個字符相同時,結果為真。 關系表達式表示一個條件,條件成立時值為.T.,否則為.F.。 各種類型數據的比較規(guī)則如下:表達式數據
55、的比較規(guī)則(1)數值型和貨幣型數據根據其數值的大小進行比較。(2)離現在日期或時間越近的日期或時間越大。(3)邏輯真.T.比邏輯假.F.大。(4)字符型數據按照機內碼順序排序。對于西文字符而言,按其ASCII碼值由小到大進行排列:空格-數字-大寫字母-小寫字母。對于漢字字符,按其國標碼的大小進行排列,對常用的一級漢字而言,根據它們的拼音順序比較大小。(5)用命令SET EXACT ON來設置字符串精確比較,此時,=和=的作用相同;SET EXACT OFF則不同。表達式邏輯表達式表達式邏輯值A邏輯值BA AND BA OR BNOT ATTTTFTFFTFFTFTTFFFFT 例:STORE
56、76 TO a,b,c ? ab-1 AND bc OR NOT c=a 結果:.F.例題解析【例1】求下列表達式的值: (1) VARTYPE(2005/11/17) 因為VARTYPE函數返回參數的數據類型,而2005/11/17是數值型表達式,其值為數值型,所以表達式的值為N。 $是子串比較運算符,區(qū)分大小寫,則PRO $FoxPro值為.F.,35的值也為.F.,所以PRO $FoxPro and 35的值為.F. (2)PRO $FoxPro and 35 該表達式的值為.F.,整個表達式的作用是判斷10是否被3整除。(3)INT(10/3)=10/3 該表達式的值為.F., 整個表
57、達式的作用是判斷2005是否被4整除而且不被100整除,或者被400整除,這是判斷2005年是否閏年的表達式。 (4)2005%4=0 and 2005%100!=0 or 2005%400=0 SPACE函數產生空格,ALLTRIM函數刪除字符串中的前后空格,LEN函數返回字符串長度,因此該表達式的值為8。 (5)LEN(ALLTRIM(SPACE(8)-SPACE(8) 【例2】 分析下列命令執(zhí)行后的結果 (1) DIMENSION A(3,2) A=.T. A(3,1)=!A(3,1) ?A(5),A(2,2) 顯示:.F. .T.解析:DIMENSION A(3,2)定義了一個二維數組
58、,A=.T.給數組的每一個元素賦值.T.,A(3,1)=!A(3,1)將A(3,1)的值取反,所以A(3,1)的值為.F.;由于二維數組可以看作一維數組,A(5)等于A(3,1),所以A(5)的值為.F.。 (2) YA=100 YB=YA+100 YC= YB+100 N=A M=Y&N ?M ,&M 顯示:YA 100解析:M是字符型變量,其值是Y&N,執(zhí)行?M時先作宏替換,將&N替換為A,因此結果為YA;執(zhí)行?&M時先將&M宏替換為Y&N,再將&N宏替換為A,實際上顯示的就是YA變量的值,因此結果為100。 (3) 工資1370 職稱講師 性別男 ?工資1400 OR NOT 職稱“教授
59、”; AND 性別“男” 顯示:.T.解析:這是將三個關系表達式用邏輯運算符連接起來構成的邏輯表達式,主要是清楚三個邏輯運算符之間的優(yōu)先級問題。 (4)SET EXACT ON A湖南長沙 BALEFT(A,4) ?IIF(B, 長沙,北京) 顯示:北京 解析:BALEFT(A,4)是一個賦值語句,是將關系表達式ALEFT(A,4)的值賦給變量B,因為ALEFT(A,4)左邊的值為“湖南長沙”,右邊為“湖南” ,而且是精確比較,所以其值是邏輯假,故B=.F.。 【例3】學生表的結構如下:學生(學號 C 6,姓名 C 10,性別 C 2 ,出生日 期 D,少數民族否 L,籍貫 C 10,入學成績
60、 N 5.1,簡歷 M,照片 G)針對學生表,寫出下列條件: (1)姓“張”的學生。 (2)20歲以下的學生。 (3)家住湖南或湖北的學生。 (4)漢族學生。 (5)入學成績在580分以上的湖南或湖北的學生。 (6)20歲以下的少數民族學生。(1)姓“張”的學生 條件1:AT(張,姓名)=1 條件2:SUBSTR(姓名,1,2)=張 條件3:姓名=張(2)20歲以下的學生 條件1:DATE()-出生日期=20*365 條件2:YEAR(DATE()-YEAR(出生日期)0(4)漢族學生 條件1:NOT 少數民族否 條件2:少數民族否.F. 條件3:IIF(少數民族否,少數民族,漢族)=漢族(5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州城市職業(yè)學院《化工原理實驗一》2023-2024學年第二學期期末試卷
- 南京工業(yè)職業(yè)技術大學《兒重發(fā)育保健護理》2023-2024學年第二學期期末試卷
- 河南質量工程職業(yè)學院《數字媒體后期制作》2023-2024學年第二學期期末試卷
- 山東現代學院《寶石合成與優(yōu)化》2023-2024學年第二學期期末試卷
- 河南應用技術職業(yè)學院《建筑風格史》2023-2024學年第二學期期末試卷
- 四川音樂學院《ED器件與應用技術》2023-2024學年第二學期期末試卷
- 聊城大學《幼兒心理學》2023-2024學年第二學期期末試卷
- 黑龍江能源職業(yè)學院《有限元分析及應用》2023-2024學年第二學期期末試卷
- 2024-2025學年江西省“三新”協同教研體高三上學期12月份聯考歷史試卷
- 鄭州美術學院《機器學習D》2023-2024學年第二學期期末試卷
- GB/T 43700-2024滑雪場所的運行和管理規(guī)范
- 魯迅《社戲》原文+賞析
- 部編版道德與法治三年級下冊教案全冊
- 幼兒教師之《幼兒游戲與指導》考試題庫(通用版)
- 中國建設銀行養(yǎng)老金融模式發(fā)展問題研究
- 關于布郎芬布倫納發(fā)展心理學生態(tài)系統理論
- 我們身邊的法律故事課件
- 執(zhí)行律師服務方案
- GB 24544-2023墜落防護速差自控器
- 2023年11月上海市教育委員會教育技術裝備中心公開招考3名工作人員筆試歷年高頻考點(難、易錯點薈萃)附帶答案詳解
- 煤礦違章行為及預防
評論
0/150
提交評論