




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE80 中文VisualFoxPro9.0數據庫應用與開發教程 參考答案 PAGE81參考答案第1章一、選擇題1.B 2.B 3.C 4.B 5.A二、填空題1.關系模型2.層次模型3.一對多聯系4.連接操作5.實體三、簡答題1.答:信息是客觀事物屬性的反映,它所反映的是關于某一客觀系統中某一事物的某一方面屬性或者某一時刻的表現形式。數據是反映客觀事物屬性的記錄,是信息的載體,對客觀事物屬性的記錄是用一定的符號來表達的,因此說數據是信息的具體表現形式。數據是信息的具體表現形式,信息是數據有意義的表現。數據和信息是兩個相互聯系、但又相互區別的概念。從信息處理角度來看,任何事物的屬性都是通過數據來表示的,數據經過加工處理以后,便具有了知識性,并對人類活動產生決策作用,從而形成了信息。而從計算機的角度來看,數據泛指那些可以被計算機接受并能夠被計算機識別處理的符號。2.答:(1)數據管理技術的發展大致經歷了人工管理、文件管理和數據庫管理三個階段。人工管理階段發生在20世紀50年代,在這一階段的特點是:①數據由應用程序自己管理,沒有專用的數據管理軟件。②數據冗余度大,應用程序與數據是一一對應的,如果多個應用程序要用到同一數據,這些數據需要重復存儲,數據冗余度很大。③數據不具有獨立性,程序對數據存在嚴重的依賴性。(2)文件管理階段發生在20世紀60年代,文件管理階段的特點是:①有專門的軟件進行數據管理,并提供了多種文件組織形式。②程序和數據之間具有一定的獨立性,程序員可以不必過多地考慮物理細節,而將精力集中于算法。③實現了以文件為單位的數據共享,數據冗余度減少。但由于數據只能以文件為單位共享,當不同的應用程序具有部門相同的數據時,也必須建立各自的數據文件。(3)數據庫管理階段發生在20世紀60年代后期,在數據庫系統階段,主要的特點有:①數據結構化,在同一數據庫中的數據文件是有聯系的,而且在整體上服從一定的結構形式。②數據共享性好,數據庫內數據可以供多個用戶使用,提高了信息的利用率。③數據獨立性高,數據獨立于程序而面向數據庫,便于對數據的完整性、通用性、安全性提供統一有效的管理。④數據冗余少,原則上可以消除重復,為了方便查詢或者因程序設計的需要,允許存在小量重復數據,這由設計人員自行控制。3.答:一般地講,數據模型是嚴格定義的概念的集合,這些概念精確描述了系統的靜態特性、動態特性和完整性約束。因此,數據模型通常由數據結構、數據操作和數據約束3部分組成,這三個組成要素完整地描述了數據模型。(1)數據結構是所研究的對象類型的集合,是數據庫的組成部分。研究數據結構的任務是利用計算機系統的知識來描述客觀世界的對象,以便能方便地進行處理。例如在關系結構中,使用表格數據結構來描述客觀世界中的對象等。(2)數據操作是指對數據庫中各種對象或者實例允許執行的操作的集合,包括操作以及操作的規則等。數據庫操作主要包括了檢索和更新(包括插入、刪除、修改等等)兩類操作。(3)數據約束是指完整性規則的集合。完整性規則是給定的數據模型中數據及其聯系所具有的制約和依存規則,用以限定符號數據模型的數據庫狀態及狀態的變化,以保證數據的正確、有效和兼容。4.答:(1)層次模型就是利用樹型結構來表示實體及其之間聯系的模型,層次模型中的結點為記錄型,表示某種類型的實體,結點之間的連線則表示了它們之間的關系,其特點是:①有且僅有一個結點無雙親結點,即根結點。②根結點以外的其他結點有且僅有一個雙親結點。(2)網狀模型就是利用網狀結構來表示實體及其之間聯系的模型,網狀結構是層次模型的擴展,它表示多個從屬關系的層次結構,呈現一種交叉關系的網絡結構。網狀模型是以記錄為結點的網絡結構,其典型代表是DBTG系統,網狀模型具有如下特點:①可以有一個以上的結點無雙親結點。②至少有一個結點有多于一個的雙親結點。(3)關系模型就是用二維表結構來表示實體以及實體之間聯系的模型,關系模型把各種聯系都統一描述成一些二維表,即由若干行和若干列組成的表格。每一個這樣的二維表格就稱為一個關系。由于關系模型結構簡單、概念單一,用戶易懂易用,自從其誕生以來就深受用戶的喜愛,本書所介紹的VisualFoxPro就是基于關系模型的關系數據庫管理系統,是至今為止最常見的數據庫管理系統,(4)20世紀90年代中期以來,人們發現關系模型有著查詢效率不如非關系模型等一些缺陷,所以提出了面向對象模型。面向對象模型一方面對數據結構方面的關系結構進行了改良,另一方面為數據操作引入了對象操作的概念和手段。如今的數據庫管理系統基本上都提供了這方面的功能。5.答:(1)數據庫系統的優點:①數據結構化。不同記錄之間存在著聯系,描述數據時不僅描述數據本身還要描述數據之間存在的聯系,這是數據庫系統的本質特征。②數據共享。多個應用可以使用同一數據庫,同一時刻多個用戶也可以存取同一數據。③數據獨立性。所謂數據獨立是指應用程序不必隨數據存儲結構的改變而變動。數據獨立包括數據的物理獨立性和邏輯獨立性。④數據的可控冗余度。從理論上講,數據庫中的數據可以完全避免冗余,但是為了提高系統的效率或網絡的友好性,往往容許少量數據冗余,這種數據的冗余是可以人為控制的,所以稱為可控冗余度。⑤數據一致性。由于數據采用相應方法進行組織,相互之間采用一定的機制進行相關約束,從而保障了數據的一致性。⑥數據安全性。數據庫加入了安全保密機制,可以防止對數據的非法存取。另外,數據庫系統還采取了一系列措施,來恢復對數據庫的破壞。(2)數據庫系統的缺點:①建立數據庫的費用較高。數據庫系統軟件和與之相聯系的任何硬件都可能是昂貴的。②添加內容時變得復雜。數據庫系統比文件系統管理復雜得多。從理論上講,系統越復雜,就越容易失敗,恢復也越困難。③數據風險集中化,數據集中存儲,雖然減少了數據冗余,但集中存儲也同樣使數據損壞和丟失的風險增加了。一般應使這種風險降低到最小程度。6.答:(1)第一代數據庫系統是20世紀70年代研制的層次數據庫和網狀數據庫系統。這一代數據庫系統采用“記錄”為基本的數據結構,在不同的“記錄型”之間,允許存在相互聯系。無論層次模型還是網狀模型,依次查詢只能訪問數據庫種的一條記錄,存取效率不高。對于存在復雜聯系的系統,還需要用戶詳細描述數據的訪問路徑。(2)第二代數據庫系統是關系型數據庫系統。這一代數據庫系統采用了人們習慣的二維表格作為基本的數據結構(即關系模型),通過公共的關鍵字段來實現不同二維表之間的數據聯系。關系型數據庫系統允許一次查詢僅用一條命令或者語句來訪問整個“關系”,通過多表聯合操作,還能在有聯系的多個二維表之間實現“關聯”查詢。關系模型簡單明了、理論嚴謹,用戶容易理解、容易使用,因此深受歡迎。(3)第三代數據庫系統又稱作對象-關系數據庫系統。將數據庫技術與面向對象技術想結合,就是第三代數據庫系統的基礎。第三代數據庫系統除了應當包含第二代數據庫系統的功能,應當支持類、繼承、函數等等對象機制以外,還應當支持正文、聲音、圖像等新的數據類型,并提供高度集成的、可支持客戶/服務器應用的用戶接口等。7.答:在同一個數據庫中,表間關聯關系通常有一對一、一對多和多對一3種類型。(1)一對一關系即在兩個數據表中選一個相同屬性字段作為關鍵字段,把其中一個數據表中的關鍵字段稱為主關鍵字段,該字段值是惟一的,而另一個數據表中的關鍵字段稱為外來關鍵字段,該字段值也是惟一的。即A表中的每一條記錄在B表中僅能有一個匹配記錄,同樣在B表中的每一條記錄也只能在A表中有一個匹配記錄。(2)一對多關系,即在兩個數據表中選一個相同屬性字段作為關鍵字段,把其中一個數據表的關鍵字段稱為主關鍵字段,該字段值是惟一的,而把另一個數據表中的關鍵字段稱為外來關鍵字段,該字段值是重復的。即A表中的一條記錄能與B表中的多個記錄相匹配,但是B表中的一條記錄僅能與A表中的一個記錄匹配。(3)多對一關系與一對多關系是類似的,惟一的區別是在兩個相關聯的數據表中,選擇哪一個數據表中的關鍵字段為主關鍵字段,該字段值是重復的,與它關聯的另一個數據表中的關鍵字段為外來關鍵字段,該字段值是惟一的。即A表中的一條記錄僅能與B表中的一個記錄匹配,但是B表中的一條記錄能與A表中的多個記錄相匹配。8.答:關系操作也叫做關系運算,是基于關系模型上的基礎操作。關系操作屬于集合運算范疇,常見的關系操作包括投影操作、選擇操作和連接操作3種。(1)投影運算是從關系中選擇某些字段的所有值而組成一個新的關系,即是對一個關系在列的方向上進行選擇,刪除關系中的某些列,并按要求重新排列次序。(2)選擇運算是從關系中選擇某些滿足條件的記錄而組成一個新的關系,即是對一個關系在行的方向上進行選擇,它把符合某個條件的元組選擇出來,重新構成一個原關系的子集。(3)連接運算是將兩個或者多個關系通過連接條件而組成一個新的關系,即是從兩個關系中選擇屬性間滿足一定條件的元組,重新構成的一個關系。9.答:關系完整性即關系中數據以及具有關聯關系的數據之間必須遵循的制約和依存關系,主要用于保證數據的正確性、有效性和兼容性。關系模型的完整性規則主要有實體完整性、域完整性、參照完整性和用戶定義完整性4種類型。(1)實體完整性。關系通常對應現實世界的一個實體集。現實世界中的實體是可區分的,即每個實體具有某種惟一性標識。相應地,在關系模型中以主關鍵字作為該實體記錄的惟一標識。實體完整性規則要求主關鍵字中的屬性不能重復或者取空值。(2)域完整性。域完整性是指數據庫表中的列必須滿足某種特定的數據類型或約束。其中約束又包括取值范圍、精度等規定。例如在記錄成績數據時,通常規定成績取值范圍在0~100之間,這種約束稱為域完整性約束。(3)參照完整性。參照完整性是指兩個表的主關鍵字和外關鍵字的數據對應一致。它確保了有主關鍵字的表中對應其他表的外關鍵字的行存在,即保證了表之間的數據的一致性,防止了數據丟失或者無意義的數據在數據庫中擴散。參照完整性是建立在外關鍵字和主關鍵字之間或外關鍵字和惟一性關鍵字之間的關系上的。(4)用戶自定義完整性。不同的關系數據庫系統根據其應用環境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性就是針對某個特定關系數據庫的約束條件,它反映了某一具體應用所涉及的數據必須滿足的語義要求。第2章一、選擇題1.D 2.B 3.C 4.A二、填空題1.數據環境設計器2.1;3.SetDefaultToC:\VFP練習4.菜單操作工具操作命令操作5..bdf.dbc三、簡答題1.答:VFP9.0作為微軟公司推出VisualFoxPro系列產品中的最新版本,出現了不少令人欣喜的新增功能,集成開發系統、數據處理方式以及報表設計器等都有了不同程度的增強,使得開發者可以進一步提高軟件開發效率。(1)強大的集成開發系統。VFP9.0在字體和顏色方面做了很大調整,允許用戶自定義設置個性化的字體和顏色;增強了類的操作,允許用戶為類的自定義屬性設置缺省值;VFP9.0新增了一個數據瀏覽器,方便用戶對數據進行查看和操控;VFP9.0對程序編輯窗口也做了很大的增強,方便用戶及時進行代碼查錯和糾正等。(2)新的數據處理方式。VFP9.0增強了SQL結構化查詢語言,取消了很多硬編碼的限制,增強了子查詢和關聯查詢的支持;引進了一個新的索引類型(二進制索引),同時提高了過濾型索引的性能等等;支持AutoInc、VarChar、VarBinary和Blob等新的數據類型,并提供相應的類型轉換函數,增強了現有函數對數據類型的控制和轉換能力;增強了事務控制的能力,游標機制使得代碼邏輯更加清晰,并且對CursorAdapter作了加強,使開發者只需幾行代碼就可以方便地訪問遠程視圖等(3)強大的報表設計器。提供了全新的報表系統的架構,允許在處理數據和對象定位的同時處理顯示和輸出的事務,實現與報表進程的交互操作;VFP9.0提供了新的報表語法,并支持使用舊的報表引擎運行報表;VFP9.0包含了ReportListener的兩個子類,用來提供HTML和XML輸出,提供了更多的報表輸出類型;在新版本的VFP9.0中用戶不僅可以改變字段的外形,還可以在報表監聽器中執行自己需要的任何事務等。(4)其他功能。VFP9.0為了適應軟件發展的需要,還在其他方面做了改進,如增強向導功能、支持WindowsXP主題、智能感知腳本、新的NorthWind樣例數據庫等等,使用這些新功能可以使開發出來的應用程序具有更加強大的功能、更加方便的操作。2.答:(1)標題欄。“標題欄”位于VFP操作界面的頂部,顯示VisualFoxPro的系統圖標、系統名稱、版本信息以及常用的界面操作按鈕。(2)菜單欄。“菜單欄”位于“標題欄”的下面,顯示了所有的菜單選項,但是“菜單欄”并不是一成不變的,它會根據當前操作的狀態來增加、減少或者改變菜單選項。(3)工具欄。“工具欄”位于“菜單欄”的下面,顯示了常用工具按鈕,將鼠標移到這些圖標上,會自動顯示相應的名稱或者含義。(4)狀態欄。“狀態欄”位于VFP操作界面的底部,用于顯示數據庫管理系統當前的操作狀態、數據的路徑等信息。(5)系統工作區。“系統工作區”又稱作系統主窗口,是位于“工具欄”和“狀態欄”之間的空白區域,各種設計器、生成器、對話框等都在這里打開并進行操作的。(6)命令窗口。“命令窗口”是位于系統工作區里面的一個“命令對話框”,它是進行輸入與編輯VFP系統命令的主要窗口。3.答:VFP的菜單欄并不是一成不變的,它會根據當前操作的狀態來增加、減少或者改變菜單的選項。例如,當用戶打開一個數據表的時候,系統就會在菜單欄中添加一個名為“表”的菜單選項,此時“顯示”菜單選項也會相應改變成與表操作相關的子菜單;同樣的,當用戶打開一個報表的時候,菜單欄中就會添加一個名為“報表”的菜單選項,此時“顯示”菜單選項也會相應改變成與報表操作相關的子菜單,在VFP中,這些隨著不同對象的打開而增加或者改變的菜單統稱為敏感菜單。在VFP中,當編輯數據表時,系統會增加一個名為“表”的敏感菜單;當編輯表單時,系統會增加一個名為“表單”的敏感菜單;當編輯報表時,系統會增加一個名為“報表”的敏感菜單;當編輯菜單時,系統會增加一個名為“菜單”的敏感菜單;當編輯查詢(視圖)時,系統會增加一個名為“查詢”的敏感菜單;當編輯類時,系統會增加一個名為“類”的敏感菜單。值得注意的是,系統在增加相應敏感菜單的同時,在“顯示”菜單中會增加一些對應于當前操作方面的命令。4.答:在VFP中,應用程序一般是由數據庫、數據表、表單、菜單、報表、標簽、程序等組件構成的,為了更好地管理這些組件,VFP將這些組件放到一個統一的管理環境中去管理,這個管理工具稱為項目管理器。項目管理器是VFP的控制中心,是VFP處理數據和對象的主要組織工具,在整個系統開發過程中,項目管理器都處于一個非常重要的地位,它包括以下幾部分:(1)文件選項卡。項目管理器的頂部為文件選項卡,一共有6個文件選項卡,分別是全部、數據、文檔、類、代碼和其他。其中“全部”文件選項卡中包含了其他5個選項卡的內容。(2)對象視圖區。項目管理器的左面為項目對象視圖區,列舉出該類型中所有可以進行編輯的對象。對象視圖區的對象默認是以目錄樹的形式分層折迭起來的,用戶可以通過單擊左邊的“+”或者“-”符號來擴展或者折迭顯示。(3)命令按鈕區。項目管理器的右邊是相應的命令按鈕區,列舉出某一類型文件的操作命令,包括新建、添加、修改、瀏覽(或者運行)、移去以及連編等幾種命令按鈕。(4)狀態說明區。項目管理器的最下面是狀態說明區,主要是顯示用戶當前操作的對象以及對象的路徑等等,方便用戶對項目的查找。5.答:(1)VFP向導。VFP向導是一種快捷設計的工具,它通過一系列對話框向用戶提示每一步的操作,引導用戶選定所需要的選項,回答系統提出的問題,一步一步地完成某項任務。向導的最大特點是“快”,但它所能完成的任務也比較簡單。在實際應用中,我們可以先利用向導創建一個較為簡單的框架,然后再使用相應的設計器進行修改。(2)VFP設計器。VFP的大多數工作都是與設計器密不可分的,每個設計器都有一個或者多個工具欄,方便用戶使用大多數的常用工具,例如,表單設計器中就有表單控件、布局以及調色板等工具欄。設計器具有比向導更強大的功能,為用戶創建特定類型對象提供了很好的開發環境,也可以用來創建或者修改VFP應用程序所需要的構件。(3)VFP生成器。生成器又稱作構造器,其主要的功能是在VFP應用程序的構件中生成并加入某類控件。VFP中大多數控件的創建和修改都可以使用生成器。每個生成器顯示一系列選項卡,供用戶設置所選中對象的屬性。6.答:在VFP操作過程中,除了使用菜單操作以外,最主要的就是通過命令方式進行操作,這些命令都有嚴格的格式和語法規則,它們具有以下幾個特點:(1)VFP命令都使用英文祈使句的形式,命令的各部分簡潔規范,易于理解。(2)操作對象、結果和條件都可以用命令字句的形式來表示,命令子句用于給出符合條件或者參數,它們使命令功能更加豐富,使用更為靈活。(3)命令中只講對操作的要求,不描述具體操作過程,所以又叫做“非過程化”語言,而常見的高級語言都是“過程化”語言。(4)VFP中的命令既可以逐條用交互的方式執行,又可以編寫成程序,以“程序文件”的方式執行。命令語句還可以使用簡寫,即可以只寫命令的前4個字母代替當前命令。(5)程序中一行只能存放一條命令,如果一條命令太長而一行寫不下的時候,可以通過分號來續行編寫。7.答:VFP系統提供了交互操作和程序操作2種操作方式,其中交互操作又包括了命令操作、菜單操作和工具操作3種類型。(1)交互操作方式包括菜單操作、工具操作和命令操作3種類型。命令操作是傳統的交互操作方式,用戶在命令窗口中輸入并執行所需命令,即可在屏幕中顯示執行結果。這種方式簡明快捷,能夠直接使用系統的各種命令和函數,有效地操縱數據庫,但是需要熟練掌握命令的格式和功能。菜單操作和工具操作可以統稱為界面操作,在實際工作中沒有明確的區分。VFP提供了大量的向導、設計器、生成器等界面操作工具,這些工具一般都配有了常用的工具欄和菜單選項,以便用戶隨時調用。這種操作方式不要求記住繁瑣的命令,易學易用,因而深受用戶歡迎,是VFP中最主要的操作方式。(2)程序操作方式就是將多條VFP命令編寫成特定的序列,保存為程序文件,并通過運行這個程序文件來達到操作數據的目的,程序操作的方式不僅運行效率高,而且可以重復執行。利用這種方式可以有效的將程序的編寫者和使用者分開,只提供最簡潔的界面交給用戶去操作,用戶可以不必知道程序的內部結構和命令,從而將用戶的介入減至最低限度。注意:VFP的程序設計和其他高級語言的程序設計是一樣的。第3章一、選擇題1.C 2.B 3.D 4.B 5.D二、填空題1.邏輯型通用型2.163.6個4.45.15三、簡答題1.答:在VFP中,數據有型與值之分,型是數據的分類,值是數據的具體表示,數據處理的基本要求就是對同一類型的數據進行歸類整理,只有相同類型的數據才能進行操作。為了適應存儲數據的需要,VFP定義了多種數據類型,常用的數據類型有如表A-1所示的幾種。表A-1VFP常見的數據類型數據類型代號說明字段寬度取值范圍字符型C存放任意文本,包括漢字、字母、字符等最多254個字節,每個字節代表一個字符任意字符數值型N存放正負號、數字合小數點組成的數據最多20位從-.9999999999E+19到.9999999999E+20浮點型F同數值型,為與其他軟件兼容而設置的最多20位從-.9999999999E+19到.9999999999E+20雙精度型B存放精度要求較高的數值,或者真正的浮點數固定8個字節從+/-4.94065645841247E-324到+/-8.9884656743115E307日期型D存放包含有年、月和日的數據固定8個字節從01/01/100到12/31/9999日期時間型T存放包含有年、月、日和時間的數據固定8個字節從01/01/100到12/31/9999,加上上午00:00:00到下午11:59:59續表A-1數據類型代號說明字段寬度取值范圍整型I存放不帶小數的整數數值固定4個字節從-2147483647到2147483646邏輯型L存放邏輯值T或者F,T為真,F為假固定1個字節真值或者假值貨幣型Y存放貨幣量,與數值型不同的是貨幣型數據保留4位小數固定8個字節從-922337203685477.5808到922337203685477.5807備注型M存放一切字符型數據,保存在擴展名為.fpt的備注文件中固定4個字節只受可用內存空間限制通用型G存放圖形、聲音、表格等多媒體數據。數據也保存在擴展名為.fpt的備注文件中固定4個字節只受可用內存空間限制2.答:常量是固定不變的數據,它的值在整個操作過程中是保持不變的,VFP支持的常量有數值型、字符型、邏輯型、日期型、日期時間型和貨幣型等多種類型。(1)數值型常量由數字、小數點和正負號組成,如123,-12368,+3325.67等等。數值型常量可以帶正負號的整數或者小數,還可以用科學記數法表示,如2.5E+15等等,注意:這樣表示的常量是F型(浮點型),而不是N型(數值型)。(2)字符型常量是由漢字和ASCII字符組成,并由定界符括起來的字符串。如“String”,“數據庫應用系統”,[計算機]等等。值得注意的是,在字符串的兩端必須加上定界符,否則系統會把該字符串當成變量名。(3)邏輯型常量也稱作布爾型常量,它只有兩個邏輯值,即邏輯真值或者邏輯假值,邏輯真可以用大寫.T.或者.Y.表示,也可以用小寫.t.或者.y.來表示;邏輯假可以用大寫.F.、.N.或者小寫.f.、.n.來表示。字母兩端緊靠小圓點是邏輯型常量的定界符。(4)日期型常量一定要包括年、月、日三個值,并且必須放在一對花括號中,每兩個值之間由一個分隔符(如“/”)隔開,例如:{06/21/1999}等,空白的日期可以表示為{}或{/}。除了這種MDY格式以外,還有一種嚴格的日期格式,例如{^2002/12/20},格式中的“^”符號表示該日期格式是嚴格的,并按照YMD(5)日期時間型常量值中既含有日期又含有時間,日期值包括年、月、日,時間值包括時、分、秒,其中時分秒的分隔符為冒號(:)。它的書寫方式近似于日期型,例如{9/21/9910:00},空白的日期時間則可以表示為{/:}。日期時間型常量和日期型常量一樣,也有一種嚴格的格式,例如{^2002/12/2010:00:34P}等。(6)貨幣型常量必須以“$”符號開頭,并四舍五入到小數4位。例如貨幣型常量$100.12345,四舍五入后結果為$100.1235。3.答:首先,使用ReleaseAll命令清除以前創建過的內存變量,使用Clear命令清空在VFP屏幕中顯示的內容。接著使用“<內存變量>=<表達式>”以及“Store<表達式>To<內存變量>”兩種建立內存變量的方法創建內存變量A1、A2、A3、A4;并用數組的方式創建數組變量B1、B2。其中命令?B(1)和?B(2)表示在VFP屏幕中顯示變量B1、B2的變量值。第一條ListMemoryLikeA?命令表示在屏幕中顯示所有以字母A開頭的內存變量的變量名、變量范圍、變量類型以及變量值,此時VFP屏幕中顯示A1、A2、A3、A4變量的情況如圖3-1所示;ReleaseA1,A2命令表示清除變量A1、A2,此時執行第二條ListMemoryLikeA?命令,屏幕中只顯示剩下的A3、A4變量情況如圖A-1所示。圖A-14.答:(1)34.00(2)223310(3)11+11225.答:運算符是處理數據運算問題的符號,也稱作操作符,它表示在操作數據上的特定動作。根據運算符的不同可以分成算術表達式、字符表達式、日期時間表達式、關系表達式和邏輯表達式5種,在VFP中,最重要的表達式是算術表達式、關系表達式和邏輯表達式,它們的運算符類型以及優先級如表A-2所示。表A-2常見表達式運算符及優先級類型運算符含義舉例結果優先級算術表達式()小括號1^或者**乘方?4^2162×乘?21×3633/除?8/24%模運算:兩數相除取余數?20%32+加?172+31754-減?53-251關系表達式<小于?10>12.F.5<=小于等于?“大學”<=“小學”.T.>大于?“ABC”>=“AAAA”.T.>=大于等于?12+5>=12-5.T.=等于:串首相同就為真?“0123”=“.T.續表A-2類型運算符含義舉例結果優先級==完全相等:完全相同才為真?“0123”==“.F.<>、!=或#不相等?.T.<>.F..T.$包含:左串是右串子串為真?“12”$“.T.邏輯表達式Not或者!非:與右邊結果相反?Not.T..F.6And與:兩邊是真才為真?.T.And.F..F.7Or或:一邊是真就為真?.F.Or.T..T.8第4章一、選擇題1.C 2.D 3.C 4.A 5.C二、填空題1.不變2.ExclusiveShared3.2號4.Again5.臨時關聯三、簡答題1.答:VFP中的刪除命令與我們現實中理解的刪除命令是不同的,VFP中的刪除命令只是為要刪除的記錄加上刪除標記,該記錄的數據還會儲存在數據表中沒有真正被刪除,還可以執行恢復命令來恢復被加上了刪除標記的記錄。如果要徹底刪除數據表的記錄,就必須使用到VFP中的徹底刪除命令。首先執行刪除命令為要刪除的記錄加上刪除標記,然后選擇VFP“表”菜單下面的“徹底刪除”命令,此時會彈出一個警告框,詢問用戶是否確定刪除記錄,單擊確定后可以將記錄徹底從表中刪除。注意:徹底刪除的記錄不能恢復。2.答:工作區是VFP在內存中提供的一個區域。之前所說的打開數據表表進行有關操作,實際上就是把數據表從電腦硬盤調入到這個區域中。每一個工作區只允許打開一個表,同樣一個表也只能在一個工作區中打開。初始情況下,用戶打開的第一個表都放在第一個工作區中;接著打開的第二個表則會放在第二個工作區中,如此往下。但是在任何時刻里,用戶只能對其中一個工作區中打開的表文件進行操作,我們就稱這個工作區為當前工作區,稱在該工作區中打開的表為當前表文件。在默認情況下,VFP總是把第一個工作區設為當前工作區,即在沒有指定其他工作區時,我們對表文件所進行的所有操作都是在第一個工作區。3.答:建立關聯的兩個表中,當前的表文件稱為父表,被關聯的表文件稱為子表。建立表間關聯的條件通常要求比較不同表的兩個字段表達式值是否相等,所以除了要在關聯命令中指明這兩個字段表達式以外,還必須先為子表以這個字段表達式為關鍵字建立索引。這樣在執行時,父表指針移動,子表的記錄指針才根據此索引而指向與之匹配的記錄。例如,在GZB.dbf和JJB.dbf中都有相同的“工作編號”字段。因此可以將GZB.dbf作為父表,將JJB.dbf作為子表,并在JJB.dbf中以“工作編號”為關鍵字建立索引,這樣這兩個表就具備了建立表間關聯的條件。四、上機題1.解:(1)①在創建自由表結構之前,首先創建一個項目管理器,命名為ZQGLXT,保存到C盤目錄下的“課后習題”文件夾中。接著在“項目管理器”中選擇“數據”選項卡下的“自由表”選項,單擊右邊的“新建”按鈕,彈出“新建表”對話框,如圖A-2所示。圖A-2②在“新建表”對話框中單擊“新建表”按鈕,在打開的“創建”對話框中輸入表的文件名和保存路徑后,單擊“確定”按鈕即可進入“表設計器”對話框窗口,在“表設計器”中按照上表所示依次輸入各個字段的字段名、數據類型、寬度、小數位數等屬性值,結果如圖A-3所示。圖A-3③表結構設置完畢后,即可向表中輸入表記錄。打開“資金余額”表,選擇VFP“表”菜單下面的“追加新記錄”命令后,系統會在表的最前面增加了一條空白記錄,使表變成可編輯狀態,如此操作按照上表所示依次輸入表記錄即可,最終結果如圖A-4所示。圖A-4(2)如圖A-5所示。ClearUse資金余額Go2DisplayNext5圖A-5(3)如圖A-6所示。ClearUse資金余額DisplayFor帳號余額>=50000Fields姓名,開戶日期,帳號余額圖A-6(4)如圖A-7所示。ClearUse資金余額DisplayForSubstr(帳號類型,3,1)=“A”圖A-7(5)如圖A-8所示。ClearUse資金余額DisplayForYear(開戶日期)<=2002Fields姓名,開戶日期,帳號余額*1.5圖A-82.解:(1)界面操作方法。①打開“資金余額”表,雙擊第二條記錄的“證件”字段,打開該通用型字段的編輯窗口。然后選擇VFP系統“編輯”菜單下面的“插入對象”命令,打開“插入對象”對話框,如圖A-9所示。②在“插入對象”對話框中選擇“由文件創建”選項,并在后面的文本框中選擇一張圖片文件,單擊“確定”按鈕即可直接將圖片文件載入到相應的通用型字段中,結果如圖A-10所示。圖A-9圖A-10(2)命令操作方法。Use資金余額Go2AppendGeneral資金余額.證件FromC:\課后習題\張英.bmpBrowse3.解:(1)如圖A-11所示。ClearUse資金余額CopyTo資金余額1Use資金余額1DisplayStructure圖A-11(2)如圖A-12所示。ClearUse資金余額CopyTo資金余額2For帳號余額>=50000CopyTo資金余額3For帳號余額<50000Use資金余額2AppendFrom資金余額3List圖A-12(3)如圖A-13所示。ClearUse資金余額1Replace帳號余額With帳號余額*2ForYear(開戶日期)<=2002List圖A-13(4)如圖A-14所示。ClearUse資金余額1Go2InsertBlankList圖A-14(5)如圖A-15所示。ClearUse資金余額1Go2DeleteNext4List圖A-154.解:表結構的創建和記錄的輸入請參考上面第1題,下面介紹不同工作區之間數據的互訪。如圖A-16所示。ClearSelect1Use資金余額Alias資金余額Select2Use賣出股票Alias賣出股票?資金余額.姓名,資金余額.帳號余額,賣出股票.賣出總額圖A-165.解:(1)依次在1號、2號和3號工作區中打開“資金余額”表、“賣出股票”表和“買入股票”表,并選擇VFP“窗口”菜單下的“數據工作期”命令,打開數據工作期窗口,如圖A-17所示。(2)在“別名”列表中選擇作為父表的“資金余額”表,然后單擊“關系”按鈕,此時“資金余額”表就會添加到“關系”列表中。接著在“別名”列表中單擊作為子表的“賣出股票”表,則彈出“設置索引順序”對話框,要求選擇索引順序,這里選擇“賣出股票”表的“資金帳號”作為索引項,如圖A-18所示。圖A-17圖A-18(3)上述設置完成以后,系統就會在數據工作期中建立了“資金余額”表和“賣出股票”表的一對一關系。同上述操作,以“買入股票”表的“資金帳號”作為索引項建立“資金余額”表與“買入股票”表的一對一關系,如圖A-19所示,此時可以看到“資金余額”表、“賣出股票”表和“買入股票”表之間的連線都是單線,表明它們之間是一對一關系。(4)下面開始創建父表與子表之間的一對多關系,在“關系”列表中選擇“資金余額”表,然后單擊數據工作期窗口下面的“一對多”按鈕,將彈出對話框左邊列表中的“賣出股票”表和“買入股票”表添加到右邊的列表中,如圖A-20所示。圖A-19圖A-20(5)設置完畢后單擊“確定”按鈕返回數據工作期窗口,此時系統已經為“資金余額”表、“賣出股票”表和“買入股票”表建立了一對多的關系,其中“資金余額”表作為父表,“賣出股票”表和“買入股票”表作為子表,如圖A-21所示,可以看到子表一端的連線已經變成了雙線。(6)完成表間關聯的創建以后,分別打開“資金余額”表、“賣出股票”表和“買入股票”表,此時只要在父表“資金余額”中任意選中一個記錄,就會立刻在“賣出股票”表和“買入股票”表中顯示出該用戶記錄賣出股票或者買入股票的情況,如圖A-22所示。圖A-21圖A-226.解:CloseallSelect1Use資金余額Select2Use賣出股票IndexOn資金帳號Tag資金帳號Select3Use買入股票IndexOn資金帳號Tag資金帳號Select1SetRelationTo資金帳號Into賣出股票SetRelationTo資金帳號Into買入股票AdditiveSetSkipTo賣出股票,買入股票BrowseFields資金帳號,姓名,帳號余額,賣出股票.賣出總額,買入股票.買入總額Title“用戶金額詳細情況”CreateView用戶金額詳細情況如圖A-23所示。圖A-23第5章一、選擇題1.B 2.C 3.D 4.C 5.A二、填空題1.物理排序邏輯排序2.主索引候選索引普通索引二進制索惟一索引3.普通索引4.BinaryCandidate5.變量表文件三、簡答題1.答:數據表中的各條記錄通常是按輸入的先后順序來排列的,用List等命令輸出表記錄時也將按此順序輸出,然而,在對表數據進行查詢或者進行其他一些操作的時候,都要求了數據表的各條記錄必須按照某種規則來排序,因此需要對數據表進行排序或者索引,排序和索引都能改變表記錄的輸出順序,后者還能決定表記錄的存取順序。排序又叫物理排序,它能另外生成一個與原表類似但是各條記錄已經按照要求排好順序的數據表文件;索引又叫邏輯排序,是在原表基礎上生成一個簡單的排序索引表,索引表中記存著原表各條記錄的記錄號以及指定應有的排列順序,該索引表必須要原表一起使用,這樣原表記錄的實際存儲順序并沒有改變,保持著原有的無序狀態,但是對其進行操作時可以按照索引表指定的排列順序進行排序,因此從邏輯上來說原表記錄是有順序的。雖然排序與索引都以增加一個文件為代價,但索引文件只包括索引字段和記錄號兩個字段,比被索引得表要小得多。索引起作用后,增刪或者修改表記錄時索引文件都會自動更新,因此索引的應用遠比排序要廣。2.答:(1)索引文件的類型。按照索引文件的擴展名可以將索引文件分成兩種:一種是擴展名為.idx的單索引文件,另一種是擴展名為.cdx的復合索引文件。單索引文件只包含一個索引,它是為了與FoxBase+開發的應用程序相兼容而保留的;而復合索引文件則可以包含多個索引,每個索引都有一個索引標識,代表數據表一種記錄的邏輯順序。復合索引又有結構復合索引文件與非結構復合索引文件兩種,如果定義復合索引文件時用戶為它取了名字,則這種復合索引文件是非結構的,否則就是結構的。打開非結構復合索引文件需要使用SetIndex命令或者Use命令中的Index子句;而結構復合索引文件的名稱與原表的名稱相同,擴展名為.cdx,它隨數據表的打開而打開,在對數據表記錄進行添加、修改或者刪除的時候還會自動維護,因此結構復合索引是VFP中最為重要最為常見的索引。(2)索引的類型。VFP9.0版本中的索引類型有主索引、候選索引、普通索引和二進制索引四種:①主索引。主索引僅僅適用于數據庫表,自由表中沒有主索引。主索引索引關鍵字的值不允許出現重復值,而且一個數據庫表中只能有一個主索引。②候選索引。候選索引索引關鍵字的值也不允許出現重復值,但是一個數據表中可以建立多個候選索引,因為候選索引與主索引一樣禁止重復值,因此候選索引也稱作主索引的候選項。③普通索引。普通索引索引關鍵字的值和表達式都允許出現重復值,并且一個數據表可以創建多個普通索引。普通索引可以用來對數據表中的記錄進行排序,也可以作為“一對多關系”中的“多方”。④二進制索引。二進制索引是VFP9.0新引進的索引類型,它可以在任何邏輯表達式中使用,這種新型索引的訪問速度和一般索引差不多,但是它的大小比一般索引還要小90%,插入記錄時要快80%,從而大大提高了查詢的性能。3.答:利用索引進行查詢的時候,必須同時打開數據表以及索引文件,一個表可以打開多個索引文件,同一個復合索引文件中也可以包含多個索引標識,但是任何時候只能有一個索引文件能起作用,同樣復合索引文件中也只能有一個索引標識能起作用,當前起作用的索引文件叫主控索引文件,當前起作用的索引標識叫主控索引。實現數據查詢必須先確定主控索引文件,對于復合索引文件還必須確定主控索引。如果當前只打開了一個索引文件,則該索引文件自然成為主控索引文件;如果當前打開了多個索引文件,那么就要使用SetIndex命令來確定主控索引文件。如果主控索引文件是單索引文件,則該索引就是主控索引;如果主控索引文件是復合索引文件,那么就要使用SetOrder命令來確定主控索引。四、上機題1.解:(1)如圖A-24所示。ClearUse資金余額SortTozjyeOn帳號余額UsezjyeList圖A-24(2)如圖A-25所示。ClearUse賣出股票SortTomcgpOn單價/D,數量UsemcgpList圖A-25(3)如圖A-26所示。ClearUse買入股票SortTomrgpOn數量/DFor買入總額>20000Fields資金帳號,股票名稱,單價,數量,買入總額UsemrgpList圖A-262.解:(1)命令操作方法。ClearUse資金余額IndexOn帳號余額TagzhyeDescendingListIndexOn帳號類型+Str(帳號余額,10,2)TagzhlxyeListIndexOn帳號類型+DTOS(開戶日期)TagzhlxrqDescendingCandidateLIST如圖A-27所示。圖A-27(2)界面操作方法。①在項目管理器中選擇要建立索引的“資金余額”表,單擊右邊的“修改”按鈕,打開該表的表設計器,切換到“索引”選項卡,單擊“插入”按鈕插入一條默認為升序的空白的索引,單擊一下“排序”下面的按鈕將其設置為降序排序,接著在“索引”文本框中輸入索引名稱“ZHYE”,在“類型”列表框中選擇“普通索引”,最后在“表達式”文本框中輸入“帳號余額”,表達式的設置可以通過“表達式生成器”來實現,這里不再詳細介紹,如圖A-28所示。圖A-28②同上操作插入一條空白的索引,在“索引”文本框中輸入索引名稱“ZHLXYE”,在“類型”列表框中選擇“普通索引”,最后在“表達式”文本框中輸入“帳號類型+STR(帳號余額,10,2)”,表達式的設置可以通過“表達式生成器”來實現,這里不再詳細介紹,如圖A-29所示。圖A-29③同上操作插入一條空白的索引,單擊一下“排序”下面的按鈕將其設置為降序排序,接著在“索引”文本框中輸入索引名稱“ZHLXRQ”,在“類型”列表框中選擇“候選索引”,最后在“表達式”文本框中輸入“帳號類型+DTOS(開戶日期)”,表達式的設置可以通過“表達式生成器”來實現,這里不再詳細介紹,如圖A-30所示。圖A-303.解:(1)順序查詢方法。ClearUse資金余額LocateForYear(開戶日期)=2007AndSubstr(帳號類型,3,1)=“A”DisplayContinue(2)索引查詢方法。ClearUse資金余額SetFilterToSubstr(帳號類型,3,1)=“A”IndexOnYear(開戶日期)TagkhrqSeek“2007DisplaySetFilterTo如圖A-31所示。圖A-314.解:(1)ClearUse資金余額CountForYear(開戶日期)<=2002Tokhrs?“2003年以前開戶的人數是:”,khrs顯示結果“2003年以前開戶的人數是:4(2)ClearUse資金余額Sum帳號余額TojezhForSubstr(帳號類型,3,1)=“A”?“開通A股帳號的用戶金額總和是:”,jezh顯示結果“開通A股帳號的用戶金額總和是:297(3)ClearUse買入股票IndexOn資金帳號TagzjzhTotalOn資金帳號TohzjeUsehzjeBrowseFields資金帳號,買入總額Title“匯總金額”如圖A-32所示。圖A-32第6章一、選擇題1.B 2.D 3.A 4.D 5.D二、填空題1.結構化查詢語言數據查詢數據定義數據操縱數據控制數據控制2.Column3.Like4.Select*From學生Where籍貫=北京intoTableTEMP5.Count(*)GroupBy班級名稱三、簡答題1.答:(1)SQL是結構化查詢語言(StructuredQueryLanguage)的縮寫,1987年2月被美國國家標準局ANSI確認為關系數據庫語言的標準,現在SQL已經成為數據庫操作的基礎,幾乎所有的關系數據庫系統都支持這種語言。(2)SQL語言的特點:①功能強大。SQL語言是一種一體化語言,包括了數據定義、數據查詢、數據操作以及數據控制等多方面的功能,它可以完成數據庫活動的全部工作。②高度非過程化。SQL語言是一種非過程化的語言,它一次處理一條記錄,對數據提供自動導航,允許用戶在更高層次的數據結構中使用。③語言簡潔。SQL語言非常簡潔,它雖然功能強大,但是只有位數不多的幾條命令;同時其語法也十分簡單,接近于英語,容易學習掌握和提高。④操作方式自由。SQL語言可以直接以命令方式使用,也可以嵌入到程序設計語言中以程序方式使用,現在很多數據庫開發工具都將SQL語言直接融入自身語言中,使其運用起來十分方便。(3)SQL語言的功能非常強大,一條SQL命令可代替多條普通命令,表A-3列舉出SQL語言的類型、命令關鍵字以及命令的功能。表A-3SQL語言的命令類型與功能SQL類型命令關鍵字命令功能數據定義Create創建表結構Alter修改表結構Drop刪除表數據修改Insert插入記錄Delete刪除記錄Update更新記錄數據查詢Select查詢數據數據控制Grant授權Revoke收回授權2.答:表間關聯是為不同工作區的記錄指針建立一種臨時的聯動關系,使父表的記錄指針移動時子表記錄指針自動移動到滿足關聯條件的記錄上。表間聯接是一種專門的關系運算,它的作用是按照特定的聯接條件,將當前工作區中的表與另一個工作區中的表進行聯接,從而產生一個新表,這個新表可以在查詢時接受檢索。表與表之間的聯接包含內部聯接(InnerJoin)、左聯接(LeftJoin)、右聯接(RightJoin)和完全聯接(FullJoin)四種類型。3.答:GroupBy子句的作用是指定SQL查詢結果按照GroupBy子句中的<分組字段|分組表達式>參數進行分組,常用于分組統計。使用該子句的前提是,作為分組依據的字段(或者表達式),它的字段值必須不能是惟一,即只有具有重復字段值的字段才能作為分組字段。四、上機題1.解:(1)CreateTable資金余額Free(資金帳號C(10),姓名C(10),帳號類型C(10),開戶日期D,帳號余額N(10,2),備注MNull,證件GNull)(2)CreateTable賣出股票Free(資金帳號C(10),股票代碼C(10),股票名稱C(10),單價N(10,2),數量I,賣出總額N(10,2))(3)CreateTable買入股票Free(資金帳號C(10),股票代碼C(10),股票名稱C(10),單價N(10,2),數量I,買入總額N(10,2))2.解:ClearUse賣出股票CopyTo賣出股票1(1)界面操作方法。將“賣出股票1”添加到項目管理器中,并打開“賣出股票1”表的表設計器,在“字段”選項卡中選中“股票名稱”字段,將其字段寬度改為“20”;選中“單價”字段,將其字段名稱改為“賣出價格”;選中“股票代碼”字段,單擊“刪除”按鈕將該字段刪除;最后單擊“插入”按鈕添加一個字段,在“字段”文本框中輸入字段名稱“賣出日期”,在“類型”列表框中選擇“日期型”。以上修改完畢后,結果如圖A-33圖A-33(2)命令操作方法。①AlterTable賣出股票1Alter股票名稱C(20)②AlterTable賣出股票1RenameColumn單價To賣出價格③AlterTable賣出股票1Add賣出日期D④AlterTable賣出股票1Drop股票代碼3.解:(1)InsertInto賣出股票(資金帳號,股票代碼,股票名稱,單價,數量,賣出總額)Values(“0102836027”,“000971”,“湖北邁亞(2)InsertInto賣出股票Values(“0102836027”,“000971”,“湖北邁亞(3)DimensionA(6)A(1)=“0102836027A(2)=“000971A(3)=“湖北邁亞”A(4)=10.45A(5)=2000A(6)=20900.00InsertInto賣出股票FromArrayA(4)資金帳號=“0102836027”股票代碼=“000971”股票名稱=“湖北邁亞”單價=10.45數量=2000賣出總額=20900.00InsertInto賣出股票FromMemvar如圖A-34所示。4.解:Select資金余額.資金帳號,資金余額.姓名,資金余額.帳號類型,資金余額.開戶日期From資金余額Where資金帳號In(Select資金帳號From賣出股票Where賣出總額Between50000And200000)OrderBy開戶日期如圖A-35所示。圖A-34圖A-355.解:Select資金余額.資金帳號,資金余額.姓名,資金余額.帳號余額,賣出股票.賣出總額,買入股票.買入總額From資金余額LeftJoin賣出股票On資金余額.資金帳號=賣出股票.資金帳號LeftJoin買入股票On資金余額.資金帳號=買入股票.資金帳號OrderBy帳號余額,賣出總額如圖A-36所示。圖A-36第7章一、選擇題1.C 2.D 3.C 4.D 5.C二、填空題1..dbc.dct.dcx2.普通索引3.字段表4.主普通5.級聯三、簡答題1.答:建立數據庫的一般步驟有:(1)分析數據需求,確定建立數據庫的目的。(2)確定需要的表,為數據庫每個主題建立數據表。(3)確定每個表所需要的字段,確立表的結構。(4)確定表與表之間的關系。(5)改進整個設計,進一步完善工作。2.答:數據字典中儲存數據庫中所有表的各種信息,包括表的屬性、字段屬性、對表內記錄或者字段進行有效性檢查的一些規則、各表之間的永久關系以及參照完整性、視圖等有關信息。數據字典的主要作用是儲存數據庫表的這些信息,以便用戶設計和修改數據庫。但是,數據字典中并不儲存自由表的信息。數據字典中的這些屬性或者信息可以通過數據庫設計器、表設計器或者視圖設計器來設置、顯示或者修改,并且由系統保存到數據字典中,直到相關的表或者視圖從數據庫中移去或者刪除為止。3.答:主索引只能存在于數據庫表中,它不允許出現重復值,而且每個數據庫表中最多只能有一個主索引,一旦發現重復值或者多個主索引時會禁止存盤并提示出錯信息,因此主索引可以作為表的主關鍵字,用于創建表間永久關系,并建立參照完整性規則。如果要在數據庫的兩個表間建立永久關系,則要求兩個表的索引中至少有一個主索引,其中父表索引必須為主索引,而子表索引可以是主索引,也可以不是主索引。子表中的索引類型決定了要創建永久關系的類型,如果子表索引是主索引或者候選索引,則建立的就是一對一關系;如果子表索引是普通索引,則建立的就是一對多關系。4.答:參照完整性(ReferentialIntegrity,簡稱RI)是用來控制數據的一致性,尤其是控制數據庫中相關表之間的主關鍵字和外部關鍵字之間數據一致性的規則。在VFP中可以使用“參照完整性”生成器對話框來設置規則,從而控制如何在關系表中插入、修改或者刪除記錄數據。參照完整性包括更新規則、刪除規則和插入規則三種,各自又分別有級聯、限制和忽略三種設置,其詳細含義以及各自的功能如表A-4所示。表A-4參照完整性生成器選項的功能更新規則刪除規則插入規則當父表中的記錄關鍵字值被修改更新時觸發當父表中的記錄關鍵字值被刪除時觸發當子表中插入或者更新記錄時觸發級聯修改父表中某一記錄的時候,子表中的相應記錄將會修改刪除父表中某一記錄的時候,子表中的相應記錄將被刪除限制修改父表記錄的時候,如果子表中有相應記錄,則禁止操作刪除父表記錄的時候,如果子表中有相應記錄,則禁止操作在子表中插入記錄時,如果父表中沒有相應的記錄,則禁止操作忽略允許兩表進行更新、插入或者修改記錄等操作,互不影響四、上機題1.解:(1)創建數據庫并添加表。①打開項目管理器“ZQGLXT”,在“數據”選項卡中選擇“數據庫”,然后單擊項目管理器右邊的“新建”按鈕,打開如圖A-37所示的“新建數據庫”對話框。②在“新建數據庫”對話框中單擊“新建數據庫”按鈕,打開“創建”對話框,輸入數據庫的名稱“證券管理系統”,并指定保存路徑(C盤的“課后習題”文件夾),如圖A-38所示。圖A-37圖A-38③單擊“保存”按鈕后,系統就會創建出一個空白的數據庫,此時打開項目管理器,券將“自由表”選項下面的“資金余額”表、“賣出股票”表和“買入股票”表依次拖放到“證管理系統”數據庫中,即可將這三個自由表添加到數據庫中,形成數據庫表,結果如圖A-39所示。圖A-39(2)在數據庫中創建數據庫表。在數據庫中創建數據庫表,與之前介紹的創建自由表的方法是一樣的,只不過創建自由表之前要選擇項目管理器“數據”選項卡中的“自由表”選項;而創建數據庫表則先要選擇“數據庫”選項下面“證券管理系統”數據庫的“表”選項。具體的創建過程不再詳細介紹,結果如圖A-40所示。圖A-402.解:(1)在“資金余額”表設計器中選擇“帳號類型”字段,在“輸入掩碼”中輸入“A-A”。如圖A-41所示。圖A-41(2)在“資金余額”表設計器中選擇“帳號余額”字段,在“規則”中輸入“帳號余額>=0”。圖A-42(3)在“資金余額”表設計器中選擇“資金帳號”字段,在“輸入掩碼”中輸入“XXXXXXXXXX”。如圖A-43所示。圖A-43(4)在“資金余額”表設計器中選擇“證件”字段,在“標題”中輸入“用戶相片”。如圖A-44所示。圖A-44(5)在“資金余額”表設計器中選擇“備注”字段,在“默認值”中輸入“股市有風險,入市要謹慎!”。如圖A-45所示。圖A-453.解:(1)按照上表所示設置好各個數據庫表的索引,接著在項目管理器“數據”選項卡雙擊“證券管理系統”數據庫,打開其數據庫設計器。注意:“資金余額”表中“資金帳號”索引前面顯示一個鑰匙圖標,表示該索引就是整個數據庫的主索引。(2)下面開始創建表間永久關系,在“帳號類型”表中選中“帳號類型”索引,把它拖放到“資金余額”表中相應的“帳號類型”索引中,此時兩個表索引之間就會產了一條連線,表示已經創建了兩表間的永久關系;同理,依次將“資金余額”表中的“資金帳號”索引拖放到“賣出股票”表和“買入股票”表中相應的“資金帳號”索引中,建立“資金余額”表和“賣出股票”表、“資金余額”表和“買入股票”表之間的一對多永久關系,如圖A-46所示。圖A-46(3)如果表索引之間的連線一端(父表)為一根,另一端(子表)為三根,則表示關系類型為一對多關系;如果連線的兩端都是一根,則表示關系類型是一對一關系。由上圖可以看到,這里創建的三個關系都是一對多關系。第8章一、選擇題1.C 2.C 3.D 4.C 5.A二、填空題1.字段聯接篩選排序依據分組依據雜項更新條件2.瀏覽屏幕3.字段值在給定的數值列表中4.本地視圖遠程視圖5.SQL視圖(作為數據源的)基表三、簡答題1.答:視圖與查詢的主要區別如下:(1)功能不同。視圖可以更新字段的內容并將修改結果返回到數據源表中;而查詢文件中的記錄數據是只讀的,不能被修改。(2)從屬不同。視圖不是一個獨立的文件,而是從屬于某一個數據庫;查詢則是一個獨立的文件,它不從屬于任何一個數據庫。(3)數據源不同。視圖數據可以使用本地數據或者遠程數據作為數據源;而查詢這只能使用本地數據作為數據源。(4)輸出去向不同。視圖只能在瀏覽窗口中輸出;而查詢則可以選擇多種輸出去向,如圖形、報表、標簽、屏幕等等。(5)使用方式不同。視圖只有在所屬的數據庫被打開的時候才能使用;而查詢文件則可以獨立于數據庫被使用。2.答:視圖的優點包括有:(1)提高數據庫應用的靈活性。一般情況下,每個數據庫都擁有很多用戶,不同的用戶需要查看不同的數據。視圖出現以后,各個用戶就可以根據自己的實際需求來制定視圖。這樣,同一個數據庫在不同用戶的眼中就呈現為不同的視圖,從而簡化了用戶的操作,提高了數據應用的靈活性。(2)減少用戶對數據庫物理結構的依賴。在關系數據庫中,數據庫表的結構一旦出現了變動,應用程序也必須跟著修改,十分麻煩。引入視圖概念以后,當數據庫的物理結構發生變化的時候,則只需簡單修改視圖即可,不必進行繁瑣的應用程序的修改,從而減少了用戶對數據庫物理結構的依賴性。(3)支持本地和遠程數據的應用。視圖可以分成本地視圖和遠程視圖兩種,視圖除了可以使用本地數據以外,還可以直接使用遠程數據庫中的數據。VFP創建的遠程視圖就支持在同一個視圖中合并使用本地數據和遠程數據,從而擴大了用戶的數據查詢范圍。3.答:交叉表查詢是數據庫中比較特殊的一種查詢,它將以表中兩個字段作為分組依據進行分組統計,從而實現對數據的求和、求平均、計數等匯總計算。在顯示結果中,兩個分組字段的字段值將分別顯示在查詢結果的“行”和“列”中,因此它形式比一般的查詢更為復雜,顯示結果也更為清晰。并不是所有的表都能建立交叉表查詢,只有具有兩個或者兩個以上可以作為分組依據的字段的表才能建立交叉表查詢。四、上機題1.解:(1)打開項目管理器“ZQGLXT”,在“數據”選項卡中選中“查詢”選項,單擊右邊的“新建”按鈕即可打開“新建查詢”對話框,如圖A-47所示。(2)單擊“查詢向導”按鈕進入“向導選取”對話框,從中選擇“交叉表向導”進入交叉表查詢的“字段選取”對話框,在左邊的列表中選中“買入股票”表,將其中的“資金帳號”、“股票名稱”和“買入總額”三個字段添加到右邊的列表中,如圖A-48所示。圖A-47圖A-48(3)單擊下一步按鈕,進入“定義布局”對話框,將左邊列表中的“資金帳號”字段拖放到右邊的“行”文本框中,同樣將“股票名稱”字段拖放到“列”文本框中,將“買入總額”字段拖放到“數據”文本框中,結果如圖A-49所示。(4)單擊下一步按鈕,進入“加入總結信息”對話框,本例要求統計各個用戶記錄買入股票的總額,因此要點選“總結”欄中的“求和”選項和“分類匯總”欄中的“數據求和”選項,如圖A-50所示。圖A-49圖A-50(5)單擊下一步,進入“完成”對話框,取消勾選“顯示Null值”選項,表示在查詢結果中如果沒有相應的數據時,字段值將保持空白,而不顯示為“Null”值,如圖A-51所示。(6)以上設置完畢后保存查詢文件,命名為“交叉表顯示買入股票”,其運行結果如圖A-52所示。圖A-51圖A-522.解:(1)同上例操作,打開項目管理器“ZQGLXT”,在“數據”選項卡中選中“查詢”選項,單擊右邊的“新建”按鈕即可打開“新建查詢”對話框,如圖A-53所示。圖A-53(2)單擊“查詢向導”按鈕進入“向導選取”對話框,從中選擇“圖形向導”進入圖形查詢的“字段選取”對話框,在左邊的列表中選中“資金余額”表,將其中的“姓名”和“帳號余額”字段添加到右邊的列表中,如圖A-54所示。圖A-54(3)單擊下一步,進入“定義布局”對話框,將左邊列表中的“姓名”字段拖放到右邊圖形的“坐標軸”文本框上,然后將“帳號余額”字段拖放到中間的“數據系列”中,如圖A-55所示。(4)單擊下一步,進入“選擇圖形樣式”對話框,在這里可以設置圖形查詢結果中要用何種圖形樣式來輸出,本例中選擇一個帶陰影的柱狀圖樣式,如圖A-56所示。圖A-55圖A-56(5)單擊下一步,進入“完成”對話框,在這里可以為圖形查詢結果設置一個標題,還可以單擊“預覽”按鈕查看圖形查詢的結果。本例中設置標題為:圖形顯示帳號余額,如圖A-57所示。圖A-57(6)以上設置完畢后單擊“完成”按鈕保存查詢文件,命名為“圖形顯示帳號余額”,其運行結果如圖A-58所示。注意:這里創建的是一個表單文件不是查詢文件。圖A-583.解:(1)打開項目管理器“ZQGLXT”,在“數據”選項卡中展開數據庫“證券管理系統”,從中選擇“本地視圖”選項,然后單擊右邊的“新建”按鈕,打開“新建本地視圖”對話框,如圖A-59所示。圖A-59(2)在“新建本地視圖”對話框中單擊“新建視圖”按鈕,打開視圖設計器,并通過“添加表或視圖”窗口將“資金余額”表和“賣出股票”表添加到視圖設計器中,如圖A-60所示。圖A-60(3)切換到“字段”選項卡,將左邊“可用字段”列表的“資金帳號”、“姓名”、“帳號類型”、“開戶日期”、“帳號余額”和“賣出總額”等字段添加到右邊的“已選擇字段”列表中,如圖A-61所示。圖A-61(4)切換到“連接”選項卡,將“資金余額”表和“賣出股票”表通過“資金帳號”字段建立好表間連接,如圖A-62所示。圖A-62(5)切換到“篩選”選項卡,在“字段名”列表中選擇“資金余額.資金帳號”,在標準列表中選擇“=”,最后在“實例”文本框中輸入“?要查詢的資金帳號”,表示這個參數值由用戶的運行時才輸入,其中問號后面的字符串將作為輸入提示,而不是作為變量,如圖A-63所示。圖A-63(6)切換到“篩選”選項卡,將左邊“選定字段”列表中的“帳號余額”字段添加到右邊的“排序標準”列表中,并在“排序選項”中選擇“升序”,表示查詢結果將按照“帳號余額”的升序進行排序,如圖A-64所示。圖A-64(7)上述設置完畢后,保存視圖,命名為“參數化顯示用戶信息”。返回項目管理器,選擇剛才創建的參數化視圖,然后單擊右邊的“瀏覽”按鈕,此時系統會彈出一個“視圖參數”的對話框,提示用戶輸入要查詢的“資金帳號”,如圖A-65所示。(8)在“視圖參數”對話框中任意輸入一個要查詢的資金帳號,如“A683458202”,然后單擊“確定”按鈕,即可顯示出該“資金帳號”對應的用戶記錄,如圖A-66所示。圖A-65圖A-66第9章一、選擇題1.B 2.B 3.C 4.C 5.A二、填空題1.順序結構分支結構循環結構循環2.試考級等機算計3.184.1020105.公共變量私有變量局部變量私有變量三、簡答題1.答:(1)Loop子句表示終止本次循環,重新跳轉到循環語句的頭部,繼續判斷循環條件是否成立,以決定是否執行下一次循環。Loop語句可以放在循環體內的任何位置,如果放在循環體的尾部,其作用相當于Enddo語句的作用,這時候Loop語句可以省略不寫。(2)Exit子句表示強行結束循環語句的執行,退出循環體。Exit語句也可以放在循環體內的任何位置。程序執行的時候,一旦遇到Exit語句,就退出該循環語句,跳轉執行Enddo后面的語句。(3)Loop和Exit兩個命令可以改變程序執行的順序。Loop子句表示重新開始新的循環,Exit子句表示終止循環并退出循環體。2.答:程序設計的時候通常會用到很多類似的運算程序或者處理程序,它們的功能基本相同,只是由不同的參數來參與程序運行而已。如果在同一個程序中重復寫入這些相同的程序段,不但會增加程序文件所占用的空間,而且會降低程序運行的速度。因此,可以將這些功能相同,并且在程序中重復出現的程序段寫成一個相對獨立的程序模塊,當程序中需要完成這個程序模塊的功能時,只需調用這個程序模塊就可以,我們稱這些程序模塊為子程序。過程與子程序基本相同,都是一段可以實現某種特定功能的程序代碼。兩者的區別是:子程序代碼必須儲存在一個獨立于主程序的程序文件中;而過程代碼則既可以和主程序代碼編寫于同一個程序文件中,又可以像子程序代碼那樣儲存在一個獨立于主程序的程序文件中。值得注意的是:過程在被調用之前,必須使用Procedure命令進行定義。3.答:數據庫應用系統在編寫程序時通常會分為許多個程序模塊,這樣就必然會錯綜復雜地使用到許多內存變量,很可能會出現相同的變量名。因此必須確保它們互不干擾,使它們在各自的范圍內起作用,就把一個變量的有效作用范圍稱為它的作用域。根據變量作用域的不同,內存變量可以分成局部變量、全局變量和私有變量三種。局部變量也叫做本地變量,使用Local關鍵字來說明,局部變量只在當前定義的程序中有效,不能在上級程序(即調用程序,下同)或者下級程序(即被調用程序,下同)中使用,該程序一旦執行完畢,將會自動釋放局部變量。全局變量也叫做全程變量,使用Public關鍵字來說明,全局變量在所有程序中都有效,包括當前程序、被調用的下級程序以及調用它的上級程序。與本地變量不同的是,程序執行完畢時全局變量并不會自動釋放,而必須用Release或者Clear命令來釋放。自定義創建的內存變量叫做私有變量,VFP默認在“程序編輯窗口”中定義的變量都是私有變量,它在當前程序以及被它調用的下級程序中有效,并在當前程序運行結束時自動清除。四、上機題1.解:ClearSetTalkOffUse資金余額Accept“請輸入用戶的資金帳號:”ToZJZHDoWhileNotEof()If資金帳號=ZJZH?“姓名:”+姓名,“帳號余額”+STR(帳號余額,10,2)EndifSkipEnddoSetTalkOn2.解:ClearUse資金余額ZJZH=Space(10)@2,2Say“請輸入要修改記錄的資金帳號:”GetZJZHReadLocateFor資金帳號=ZJZHIfFound()@4,4Say“姓名:”Get姓名@6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 青春期生理心理健康
- 感染性休克并發癥及防治策略
- 大學生心理健康建設課件
- 大班健康課:健康過春天
- 健康講堂微量元素專題
- 小班健康領域說課稿設計
- 氧氣霧化吸入健康教育
- 胎盤臍帶異常超聲診斷
- 預防脊柱彎曲健康教育
- 酒店房間設計
- 2025春季學期國開電大專科《行政組織學》一平臺在線形考(形考任務1至5)試題及答案
- JGT266-2011 泡沫混凝土標準規范
- GB/T 9444-2019鑄鋼鑄鐵件磁粉檢測
- GB/T 7723-2002固定式電子秤
- GB/T 19844-2005鋼板彈簧
- GB/T 14486-2008塑料模塑件尺寸公差
- 特種設備管理臺帳(5個臺賬)
- 地裂縫、地面塌陷地質災害危險性評估課件
- 電力拖動自動控制系統-運動控制系統(第5版)習題答案
- 魚丸生產加工項目可行性研究報告
- 勝動燃氣發電機組基本構造與工作原理課件
評論
0/150
提交評論