Visual FoxPro 程序設(shè)計(jì) 教案(vfp)_第1頁
Visual FoxPro 程序設(shè)計(jì) 教案(vfp)_第2頁
Visual FoxPro 程序設(shè)計(jì) 教案(vfp)_第3頁
Visual FoxPro 程序設(shè)計(jì) 教案(vfp)_第4頁
Visual FoxPro 程序設(shè)計(jì) 教案(vfp)_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

學(xué)習(xí)好資料歡迎下載學(xué)習(xí)好資料歡迎下載學(xué)習(xí)好資料歡迎下載哈爾濱劍橋?qū)W院教案系部計(jì)算機(jī)工程系課程名稱VisualFoxPro程序設(shè)計(jì)教師姓名朱瑩澤職稱講師學(xué)年學(xué)期2012—2013學(xué)年第二學(xué)期教案首頁課程名稱VisualFoxPro程序設(shè)計(jì)課程編碼JSJ1002課程性質(zhì)√必修課選修課課程類型√公共基礎(chǔ)課專業(yè)基礎(chǔ)課專業(yè)課授課專業(yè)12工商年級、班2012級周學(xué)時(shí)數(shù)/周數(shù)4/16總學(xué)時(shí)數(shù)64講授學(xué)時(shí)數(shù)32實(shí)踐環(huán)節(jié)時(shí)數(shù)32考核性質(zhì)√考試考查考核方式√閉卷開卷學(xué)生數(shù)98人教材:(名稱、作者、出版社、出版時(shí)間)VisualFoxPro程序設(shè)計(jì)劉丕娥編著哈爾濱工業(yè)大學(xué)出版社2012年1月第1版教材參考書:(名稱、作者、出版社、出版時(shí)間)VFP程序設(shè)計(jì)與應(yīng)用實(shí)踐教程孔慶彥編著中國鐵道出版社2009年5月第2版系(部)審閱意見系(部)主任簽字年月日第1章授課章節(jié)第1章VisualFoxPro數(shù)據(jù)庫基礎(chǔ)知識所需學(xué)時(shí)講授學(xué)時(shí)數(shù):2實(shí)踐環(huán)節(jié)學(xué)時(shí)數(shù):2教學(xué)目的與要求目的:介紹數(shù)據(jù)庫系統(tǒng)基礎(chǔ)知識;VF操作基礎(chǔ)簡介。要求:了解數(shù)據(jù)庫系統(tǒng)的組成;初步掌握VF啟動與操作;教學(xué)重點(diǎn)1、關(guān)系數(shù)據(jù)庫相關(guān)概念;2、VF系統(tǒng)的啟動。教學(xué)難點(diǎn)1、數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)三者的關(guān)系。教學(xué)方法與手段1、課堂講授2、上機(jī)操作教學(xué)內(nèi)容時(shí)間分配第1次課講授:數(shù)據(jù)庫系統(tǒng)基礎(chǔ)知識第1次上機(jī):熟悉VF上機(jī)環(huán)境和簡單命令使用。作業(yè)及思考題1、關(guān)系數(shù)據(jù)庫特點(diǎn);2、VF三種操作方式;教學(xué)的基本內(nèi)容時(shí)間安排教學(xué)方法第1章VisualFoxPro數(shù)據(jù)庫基礎(chǔ)知識一、數(shù)據(jù)庫系統(tǒng)概述(一)基本概念1.數(shù)據(jù)(data):描述事物的符號記錄,存儲在某種媒體上型+值臨時(shí)性(內(nèi)存)&持久性(磁盤)--數(shù)據(jù)庫系統(tǒng)處理的表現(xiàn)形式:數(shù)字、字母、文字、文本數(shù)據(jù)、圖形、圖像、聲音、影像和動畫等2.數(shù)據(jù)庫(database,DB):數(shù)據(jù)的集合統(tǒng)一的結(jié)構(gòu)形式,存放于統(tǒng)一的存儲介質(zhì)中包括:數(shù)據(jù)本身+事物間的關(guān)系3.數(shù)據(jù)庫管理系統(tǒng)(DBMS):組織、操縱、控制數(shù)據(jù)系統(tǒng)軟件,建庫,建表,查詢,刪除等4.數(shù)據(jù)庫管理員(DBA):負(fù)責(zé)對數(shù)據(jù)庫的規(guī)劃、設(shè)計(jì)、維護(hù)、監(jiān)視等工作的人員5.數(shù)據(jù)庫系統(tǒng)(DBS):DB+DBMS+計(jì)算機(jī)系統(tǒng)+DBA6.數(shù)據(jù)庫應(yīng)用系統(tǒng)(DBAS):面向某一類實(shí)際應(yīng)用的應(yīng)用軟件系統(tǒng),如圖書管理,售票系統(tǒng)。(二)數(shù)據(jù)庫系統(tǒng)的發(fā)展數(shù)據(jù)管理發(fā)展的3個(gè)階段:(低—>高)1.人工管理:20世紀(jì)50年代中以前卡片、紙帶、磁帶無磁盤,無管理數(shù)據(jù)的軟件,無OS特點(diǎn):數(shù)據(jù)不獨(dú)立,無法共享,數(shù)據(jù)冗余,數(shù)據(jù)不一致性2.文件系統(tǒng):20世紀(jì)50后-60中后期硬件有存儲器(磁盤),軟件有os——文件系統(tǒng)特點(diǎn):一定的獨(dú)立性,程序數(shù)據(jù)分開存儲,數(shù)據(jù)不一致,仍有冗余3.數(shù)據(jù)庫系統(tǒng):20世紀(jì)60中至今DB誕生特點(diǎn):集成性,共享性,低冗余,獨(dú)立性數(shù)據(jù)庫系統(tǒng)發(fā)展3個(gè)階段第一代:1)層次、網(wǎng)狀數(shù)據(jù)庫系統(tǒng)層次:樹狀(有序樹)--層次清晰,橫向聯(lián)系若網(wǎng)狀:有向圖--聯(lián)系強(qiáng),但操作不方便第二代:2)關(guān)系數(shù)據(jù)庫系統(tǒng)relationaldatabasesystemRDBS關(guān)系二維表Oracle,sqlserver,sybase,db2,vfp第三代:3)面向?qū)ο髷?shù)據(jù)庫系統(tǒng)繼承第二代技術(shù),網(wǎng)絡(luò),分布式技術(shù),多媒體技術(shù)(三)數(shù)據(jù)模型1.實(shí)體:現(xiàn)實(shí)世界中客觀存在的事物稱為實(shí)體可以具體,也可以抽象(一次借書,一次訂貨,一次買票)2.屬性:描述了實(shí)體某一方面的特性描述學(xué)生實(shí)體可以用學(xué)號,姓名,性別,出生日期等屬性。課程導(dǎo)入:本課程開設(shè)的目的和意義,學(xué)時(shí)分配,掌握程度,等級考試等.5分鐘舉例:學(xué)籍管理系統(tǒng)手機(jī)繳費(fèi)飯卡使用存錢取錢買火車票引入身邊實(shí)例,全面介紹數(shù)據(jù)庫系統(tǒng).10分鐘介紹數(shù)據(jù)庫系統(tǒng)發(fā)展5分鐘實(shí)體間聯(lián)系舉例數(shù)據(jù)模型形象化5分鐘教學(xué)的基本內(nèi)容時(shí)間安排教學(xué)方法3.域:實(shí)體屬性值的取值范圍人的年齡0~130;身高0.2~2.8m4.實(shí)體間的聯(lián)系:3種類型1)一對一(1:1):(獨(dú))父子,夫妻;學(xué)校-校長;國家-主席2)一對多(1:n):多生父子;我有多個(gè)手機(jī);學(xué)校-學(xué)生3)多對多(m:n):學(xué)生-課程;老師-學(xué)生5.數(shù)據(jù)模型:對客觀事物及其【聯(lián)系的數(shù)據(jù)描述】常用的:層次模型,網(wǎng)狀模型,關(guān)系模型P6—關(guān)系模型的特點(diǎn)(四)關(guān)系數(shù)據(jù)庫:基于關(guān)系模型建立的數(shù)據(jù)庫1.基本術(shù)語1)關(guān)系:二維表.dbfvisualfoxpro表文件2)元組:一行一元組一記錄3)屬性:一列一屬性一字段4)域:屬性取值范圍5)關(guān)鍵字:能唯一區(qū)分不同元組的屬性或?qū)傩缘慕M合(最小組合)6)候選關(guān)鍵字:凡能夠唯一區(qū)分不同元組的屬性或組合(可多個(gè))7)主關(guān)鍵字:在候選關(guān)鍵字中選一個(gè)(只有一個(gè))--主鍵8)外部關(guān)鍵字:某屬性或組合不是該關(guān)系的關(guān)鍵字,而是另一個(gè)關(guān)系的主關(guān)鍵字,則它為外部關(guān)鍵字—外鍵。2.關(guān)系運(yùn)算1)選擇:行操作2)投影:列操作–去掉重復(fù)行3)連接:多表操作3.數(shù)據(jù)完整性:保證數(shù)據(jù)庫中數(shù)據(jù)的正確性、相容性而提出的某種約束條件和規(guī)則包括:(1)實(shí)體完整性:主鍵實(shí)現(xiàn)—保證記錄唯一性主鍵非空(2)域完整性:屬性取值范圍(3)參照完整性:外鍵(多表間關(guān)系約束)二、VisualFoxPro操作基礎(chǔ)(一)VFP簡介美Microsoft公司,面向?qū)ο?,可視化,DBMS,DBAS開發(fā)工具(二)安裝與啟動1.安裝–雙擊setup.exe37接受協(xié)議并輸入產(chǎn)品ID號:111-11111112.啟動1)開始-程序-VisualFoxPro6.02)雙擊快捷方式圖標(biāo)3)找到安裝文件的VFP6.0.EXE,雙擊該文件3.退出命令窗口:QUIT(不區(qū)分大小寫)Alt+F4(三)VFP窗口應(yīng)用程序窗口:標(biāo)題欄,菜單欄,工具欄,狀態(tài)欄,命令窗口,輸出區(qū)域命令窗口:顯示和隱藏:窗口/命令窗口或者Ctrl+F2輸入VFP命令,按回車鍵執(zhí)行命令行可修改,刪除,剪切,復(fù)制和粘貼等(四)VFP操作1.操作方式交互式三種菜單方式:菜單系統(tǒng)/工具欄交互式命令方式:命令窗口輸入命令后執(zhí)行程序方式:編寫程序文件后執(zhí)行自動化教學(xué)反思:這是非計(jì)算機(jī)專業(yè)學(xué)生的計(jì)算機(jī)程序設(shè)計(jì)類入門課程,為了提高學(xué)生的學(xué)習(xí)興趣,必須把第一次課上好,讓學(xué)生從整體上對這門課有個(gè)初步的了解,這要求我們老師一要組織好教學(xué),二要精心制作幻燈片,三要合理安排教學(xué)內(nèi)容。從第一周的上課效果來看,大一學(xué)生的整體狀態(tài)比較積極,對計(jì)算機(jī)類程序設(shè)計(jì)課程比較感興趣,并為了日后的等級考試,下定了初步的決心。Vfp是一門實(shí)踐性很強(qiáng)的學(xué)科,教學(xué)內(nèi)容一定要和上機(jī)實(shí)踐緊密結(jié)合,所以布置合理的上機(jī)實(shí)驗(yàn),是對教學(xué)內(nèi)容最有效的檢驗(yàn),大家通過課堂教堂,或者網(wǎng)絡(luò)搜索,結(jié)合自己的親自操作,總結(jié)經(jīng)驗(yàn),檢驗(yàn)課堂理論,并通過難度的不斷加大,逐漸形成獨(dú)立思考的能力,分析問題和解決問題的能力。加大案例教學(xué)的力度,形成項(xiàng)目驅(qū)動模式,使vfp各個(gè)章節(jié)形成體系,相互關(guān)聯(lián),整體統(tǒng)一,為學(xué)好學(xué)透這門課程打下堅(jiān)實(shí)的基礎(chǔ)。實(shí)例講解實(shí)體間聯(lián)系5分鐘介紹基本術(shù)語10分鐘關(guān)系運(yùn)算10分鐘安裝知識講座5分鐘實(shí)際操作法講解Vfp窗口界面介紹3分鐘最后總結(jié)提高學(xué)生日后學(xué)習(xí)興趣第2章授課章節(jié)第2章VisualFoxPro的基本語法所需學(xué)時(shí)講授學(xué)時(shí)數(shù):6實(shí)踐環(huán)節(jié)學(xué)時(shí)數(shù):6教學(xué)目的與要求目的:掌握VF數(shù)據(jù)類型、變量、函數(shù)、數(shù)組和命令。要求:掌握數(shù)據(jù)類型定義與使用;2、掌握函數(shù)定義與使用;3、初步掌握VF命令。教學(xué)重點(diǎn)1、變量定義及常用函數(shù)的使用;教學(xué)難點(diǎn)1、二維數(shù)組定義與使用教學(xué)方法與手段1、課堂講授2、上機(jī)操作教學(xué)內(nèi)容時(shí)間分配第2次課講授:常量和變量第2次上機(jī):常量使用,定義和使用變量第3次課講授:運(yùn)算符和表達(dá)式;數(shù)值函數(shù)第3次上機(jī):熟練使用常用表達(dá)式和基本函數(shù)第4次課講授:日期和轉(zhuǎn)換函數(shù)第4次上機(jī):熟練使用常用vfp日期和轉(zhuǎn)換等函數(shù)作業(yè)及思考題1、VF三種操作方式;2、二維數(shù)組的使用。教學(xué)的基本內(nèi)容時(shí)間安排教學(xué)方法第2章VisualFoxPro的基本語法一、VisualFoxPro數(shù)據(jù)元素(一)VisualFoxPro數(shù)據(jù)類型字符型C‘中國’[劍橋09英語]“VisualFoxPro程序”中文–2字節(jié)西文–1字節(jié)日期型D8字節(jié)日期時(shí)間型T8字節(jié)邏輯型L.T.或.F.1字節(jié)貨幣型Y$數(shù)值8字節(jié)數(shù)值型N數(shù)值8字節(jié)(二)VisualFoxPro常量1.數(shù)值型常量0~9,”+”,”-“,“.“?-0.12?+45?012?2.34e3?2.34e-3-0.1245(空格)_122340.002342.貨幣型常量$+數(shù)值型常量保留4位小數(shù)?$24.46不能用科學(xué)計(jì)數(shù)形式表示3.字符型常量定界符‘’“”[]若界限符分身就是字符型常量的一部分,則使用其他界限符[“計(jì)算機(jī)”]4.日期型常量定界符{}嚴(yán)格日期格式{^yyyy-mm-dd}?{^2010-03-8}?{^2008/8/8}5.日期時(shí)間型常量?{^2010-5-19,1:28pm}?{^2009-12-44:40:25p}6.邏輯型常量?.y.?.t.?.n.?.f..T..T..F..F.(三)VisualFoxPro變量(其值可以改變的量)內(nèi)存變量–單值變量簡單變量變量:數(shù)組變量字段變量–多值變量變量的命名首:字母、漢字、下劃線開頭后續(xù):字母、數(shù)字、漢字、下劃線內(nèi)存變量的賦值(1)用“=”賦值單個(gè)變量賦值r=123s={^1987/04/13}(2)用store賦值多個(gè)變量賦同值Store<表達(dá)式>to<內(nèi)存變量名表>Store“china”tostr1,str2,str3?str1,str2,str3(3)Input賦值Input“給x賦值:”tox給x賦值:12“男”?x12男注:可以給數(shù)值型、字符型、貨幣型、日期型、日期時(shí)間型、邏輯型多種變量賦值A(chǔ)ccept賦值A(chǔ)ccept“給x賦值:”tox給x賦值:12“男”?x12“男”注:只接受字符型數(shù)據(jù),輸入時(shí)不加定界符Wait賦值Wait“給x賦值:”tox給x賦值:1“?x1“注:只接收單個(gè)字符表達(dá)式值的顯示?先換行,再輸出??當(dāng)前位置輸出4.數(shù)組–一組帶下標(biāo)的變量只有一維和二維同一數(shù)組的不同元素,數(shù)值的類型可以不同初始值:.F.(1)定義Dimension|Declarestu(4),stum(2,3)注:當(dāng)一維和二維數(shù)組重名時(shí),先定義的將被覆蓋stum(2,2)等價(jià)于stum(5)可以用一維數(shù)組元素訪問二維數(shù)組(2)使用:同簡單變量(四)VisualFoxPro函數(shù)注:每個(gè)函數(shù)都有一個(gè)返回值,但不一定都有參數(shù)數(shù)值函數(shù)絕對值函數(shù)abs?abs(2-11)9符號函數(shù)sign表達(dá)式結(jié)果為正1負(fù)-100?sign(10-5)1(3)取整函數(shù)int舍掉小數(shù)?int(3.1415926)?int(10.9875)?int(-5.8)310-5(4)向下取整floor?floor(10.123)?floor(-10.123)10-11(5)向上取整ceiling?ceiling(10.123)?ceiling(-10.123)11-10(6)四舍五入函數(shù)round?round(1150.163,2)?round(1150.163,1)?round(1150.163,-2)1150.161150.21200n>=0要保留n位小數(shù)n<0整數(shù)部分舍入的位數(shù)(7)平方根函數(shù)sqrt表達(dá)式>=0,默認(rèn)保留兩位小數(shù)?sqrt(16)4.00(8)求余mod(被除數(shù),除數(shù)),運(yùn)算結(jié)果符號與除數(shù)相同同號余數(shù)異號余數(shù)+除數(shù)?mod(10,3)?mod(-10,3)?mod(10,-3)?mod(-10,-3)12-2-1(9)求最大值max?max(10,20,15,40)?max(“a”,”20”,”bb”,”40bb?max(“a”,20,”bb”,”40”出錯,參數(shù)類型不一致規(guī)則:數(shù)字<大寫<小寫.T.<.F.?max(.T.,.F.).T.(10)求最小值min?min({^1988/10/22},{^1967/12/23},{^1985/01/10})12/23/67字符函數(shù)取左子串left?left(“information”,5)infor?left(“劍橋?qū)W院”,5)劍橋?left(“劍橋A級學(xué)院”,5)劍橋A取右子串right?right(“information”,4)tion取子串substr?substr(“information”,4,2)or從第4個(gè)字符取2位求字符串長度len?len(“information”)?len(“黑大劍橋吧主NO.1”1117求子串位置at|atc若不出現(xiàn),返回0at()區(qū)分大小寫atc()不區(qū)分大小寫?at(“For”,“information”)0?atc(“For”,“information”)3?at(“1”,“英語1班”)5子串替換stuff?stuff(”infomation”,3,2,”for”)fo->forinformation(7)小寫字母->大寫字母upper?upper(“12”)12?upper{“你好”}你好(8)大寫字母->小寫字母lower?lower(“InforMation”)Information(9)空格字符串生成space?space(5)+“s”_____S(10)產(chǎn)生重復(fù)字符replicate?replicate(“*”,5)*****(11)刪除首尾空格alltrim()(12)刪除首部空格ltrim()(13)刪除尾部空格rtrim()trim()(14)宏函數(shù)&x=”123”x=”.t.”x=”{^2009/5/14}?&x?&x?&x123(字符).T.(邏輯)09/05/14(日期)x=”{^2005/12/234:50p}”x=”a”x=”a”?&xa=5a=”b”05/12/2304:50:00pm?&xb=55?&x->b字符型x=2002y=150z=”x+y”?&a->5數(shù)值型?&z+12153?&b出錯!x=”學(xué)生”use&xuse學(xué)生(15)空值測試函數(shù)ISNULL()X=NULLX=.NULL.?X,ISNULL(X).NULL..T.(16)“空”值測試函數(shù)EMPTY()?empty(0),empty(“”),empty(““),empty($0),empty(.f.),?empty(ctod(“”),empty(ctot(“”))均為.T.?empty(.NULL.)或empty(null)均為.F.不“空”。日期時(shí)間函數(shù)(1)系統(tǒng)日期?date()04/07/10(2)系統(tǒng)時(shí)間?time()22:31:11(3)系統(tǒng)日期時(shí)間?datetime()04/07/1010:31:11PM(4)年份?year({^2005/12/23})2005(5)月份?month({^2005/12/23})12(6)天數(shù)?day({^2005/12/23})23(7)小時(shí)?hour({^2009-12-44:40:25pm})16(8)分鐘?minute({^2009-12-44:40:25pm})40(9)秒數(shù)?sec({^2009-12-44:40:25pm})254.類型轉(zhuǎn)換函數(shù)(1)數(shù)值型->字符型返回C字符型?str(3.1415926,6,4)3.1416長度小數(shù)位數(shù)?str(3141.5926,6)?str(3141.5926,3)?str(3141.5926)不含小數(shù)__3142***不含小數(shù),默認(rèn)長度為10______3142?str(+123.45,6,1)?str(-1.438e6,6,3)?str(-1.438e6,9)_123.5-1.E+6_-1438000(2)字符串->數(shù)值返回N數(shù)值型,默認(rèn)2位小數(shù)。?val(“3.1415圓周率”)?val(“圓周率3.1415”0注:返回值的小數(shù)點(diǎn)位數(shù)取決于setdecimalto命令設(shè)置的位數(shù)(3)字符串->日期返回值D日期型?ctod(”12/23/78”)?ctod(“2008-12-23”)注:機(jī)器內(nèi)能識別的日期格式?。?)日期->字符串返回值C字符型?dtoc({^1980/12/25})12/25/80Setstrictdateto0?dtoc({09/19/89})09/19/895.其他函數(shù)(1)條件測試?if(3>4,”正確”,”錯誤”)錯誤(2)值域測試?between(“d”,”b”,”s”).T.(3)數(shù)據(jù)類型測試?vartype(90),vatype(“a”),vartype(date()),vartype(null),vartype(3>5),vartype(“a”+3),NCDXL不匹配(五)運(yùn)算符、表達(dá)式1.算術(shù)運(yùn)算符+-*/^%2.字符運(yùn)算符+原樣連接-第一個(gè)字符串尾部空格移到整個(gè)連接字符串的尾部3.日期和時(shí)間日期+3加天數(shù)結(jié)果為日期日期-3減天數(shù)日期日期-日期相差天數(shù)數(shù)值時(shí)間+3加秒數(shù)時(shí)間時(shí)間-3減秒數(shù)時(shí)間時(shí)間-時(shí)間相差秒數(shù)數(shù)值4.關(guān)系運(yùn)算符Setexacton加空格_精確比較==Setexactoff左包含右即可=5.邏輯運(yùn)算符?not.t.?.t.and.f.?not(3>5)?”a”==”b”or(7>5).F..F..T..T.教學(xué)反思:這一章,理論教學(xué)內(nèi)容較多,對于數(shù)據(jù)類型的理解,常量變量的使用,數(shù)組的定義與賦值,到最后函數(shù)的應(yīng)用,逐層深入,環(huán)環(huán)緊扣。課堂教學(xué)當(dāng)以打基礎(chǔ)為主,讓學(xué)生理解數(shù)據(jù)類型的含義,結(jié)合生活實(shí)際,會區(qū)分不同的事物劃分不同的類型。在數(shù)組這一環(huán)節(jié),可以實(shí)例演示,讓學(xué)生看到真正的運(yùn)行結(jié)果,體會數(shù)組元素初始值是邏輯假的事實(shí),然后分別用不同類型的值去覆蓋數(shù)組,加深對數(shù)組的認(rèn)知。由于函數(shù)比較多,所以我制作了大量的實(shí)例,把函數(shù)的各種不同類型的參數(shù)都覆蓋上,這樣的ppt講解的時(shí)候,全面清楚的看清了函數(shù)不同種參數(shù)的實(shí)際運(yùn)行效果,區(qū)別數(shù)值函數(shù)、字符函數(shù)、日期函數(shù)、數(shù)據(jù)類型測試函數(shù)、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的不同應(yīng)用,會熟知函數(shù)的不同運(yùn)算結(jié)果,為日后各章數(shù)值處理做好準(zhǔn)備。聯(lián)系生活實(shí)際對各種數(shù)據(jù)類型進(jìn)行介紹6分鐘舉例法介紹常量15分鐘由常量的特點(diǎn)引入變量變量賦值10分鐘數(shù)組的定義與使用10分鐘為了實(shí)現(xiàn)特定的功能,我們使用函數(shù),可由系統(tǒng)提供,也可自定義.函數(shù)40分鐘注意區(qū)別Floor和Ceiling關(guān)注第二個(gè)參數(shù)為負(fù)的情況具體問題具體對待,不同的程序設(shè)計(jì)語言,規(guī)定可能不一樣,結(jié)果也不盡相同.日期比較大小?Left函數(shù)重點(diǎn)講解5分鐘注意區(qū)別大小寫思考:能否刪除字符中間某處空格?宏替換比較難理解,注意分析不同實(shí)例8分鐘比較ISNULL()和EMPTY()注意表示時(shí)間的順序Str常考函數(shù)6分鐘根據(jù)函數(shù)功能識記函數(shù)If函數(shù)正確使用4分鐘如何用好vartype函數(shù)?兩種比較有何不同?如何切換?4分鐘

第3章授課章節(jié)第3章數(shù)據(jù)庫的建立和維護(hù)所需學(xué)時(shí)講授學(xué)時(shí)數(shù):2實(shí)踐環(huán)節(jié)學(xué)時(shí)數(shù):2教學(xué)目的與要求目的:掌握數(shù)據(jù)庫的基本操作。要求:1、理解數(shù)據(jù)庫與表的關(guān)系;2、掌握數(shù)據(jù)庫的創(chuàng)建與使用教學(xué)重點(diǎn)1、命令操作數(shù)據(jù)庫2、數(shù)據(jù)庫的打開關(guān)閉與刪除教學(xué)難點(diǎn)1、當(dāng)前數(shù)據(jù)庫教學(xué)方法與手段1、課堂講授2、上機(jī)操作教學(xué)內(nèi)容時(shí)間分配第5次課講授:數(shù)據(jù)庫的基本操作第5次上機(jī):建立、使用、刪除數(shù)據(jù)庫作業(yè)及思考題數(shù)據(jù)庫與表的關(guān)系;教學(xué)的基本內(nèi)容時(shí)間安排教學(xué)方法第3章數(shù)據(jù)庫的建立和維護(hù)一、數(shù)據(jù)庫與表的概述(一)數(shù)據(jù)庫:邏輯概念,它通過一組系統(tǒng)文件將相互關(guān)聯(lián)的數(shù)據(jù)庫表及其相關(guān)的數(shù)據(jù)庫對象統(tǒng)一組織和管理。.DBC自動建立.DCT數(shù)據(jù)庫備注文件.DCX數(shù)據(jù)庫索引文件(二)表:在關(guān)系數(shù)據(jù)庫中,將關(guān)系稱為表。表結(jié)構(gòu):字段名(表頭),類型,寬度,小數(shù)位數(shù)表表數(shù)據(jù):表中記錄表文件的擴(kuò)展名:.DBF數(shù)據(jù)庫與表:數(shù)據(jù)庫表:歸數(shù)據(jù)庫管理的表自由表:不歸任何數(shù)據(jù)庫管理的表自由表可以添加到數(shù)據(jù)庫中,成為數(shù)據(jù)庫表;數(shù)據(jù)庫表也可以從數(shù)據(jù)庫中移出成為自由表。二、數(shù)據(jù)庫的操作(一)建立數(shù)據(jù)庫文件->新建->數(shù)據(jù)庫->新建文件->命名->打開數(shù)據(jù)庫設(shè)計(jì)器(二)打開數(shù)據(jù)庫文件->打開->文件類型->數(shù)據(jù)庫.dbc->打開數(shù)據(jù)庫設(shè)計(jì)器(三)設(shè)置當(dāng)前數(shù)據(jù)庫“常用”工具欄上數(shù)據(jù)庫下拉列表教學(xué)反思:這一章的內(nèi)容較少,要結(jié)合第四章的表的實(shí)際操作,與數(shù)據(jù)庫表的建立與使用共同學(xué)習(xí)。重點(diǎn)掌握數(shù)據(jù)庫的各種菜單操作方式和命令操作方式,會建立、修改、刪除、維護(hù)數(shù)據(jù)庫,為數(shù)據(jù)庫表的建立打好基礎(chǔ)。數(shù)據(jù)庫與表的關(guān)系引入?3分鐘各種文件的擴(kuò)展名識記2分鐘建立打開與關(guān)閉數(shù)據(jù)庫6分鐘表與數(shù)據(jù)操作15分鐘熟悉識記各種操作數(shù)據(jù)庫和表的命令15分鐘第4章授課章節(jié)第4章數(shù)據(jù)表的創(chuàng)建與操作所需學(xué)時(shí)講授學(xué)時(shí)數(shù):4實(shí)踐環(huán)節(jié)學(xué)時(shí)數(shù):4教學(xué)目的與要求目的:掌握數(shù)據(jù)庫的基本操作。要求:1、理解數(shù)據(jù)庫與表的關(guān)系;2、掌握數(shù)據(jù)表的創(chuàng)建與使用3、索引的使用與操作數(shù)據(jù)4、參照完整性教學(xué)重點(diǎn)1、命令操作數(shù)據(jù)庫與表2、主索引的作用3、數(shù)據(jù)排序教學(xué)難點(diǎn)1、多工作區(qū)的切換教學(xué)方法與手段1、課堂講授2、上機(jī)操作教學(xué)內(nèi)容時(shí)間分配第6次課講授:數(shù)據(jù)表的基本操作第6次上機(jī):建立、使用、刪除數(shù)據(jù)第7次課講授:索引和工作區(qū)的使用第7次上機(jī):建立、使用、刪除索引,切換工作區(qū)作業(yè)及思考題表間聯(lián)系與參照完整性;教學(xué)的基本內(nèi)容時(shí)間安排教學(xué)方法第4章數(shù)據(jù)表的創(chuàng)建與操作一、表的基本操作(一)菜單操作方式(1)建表結(jié)構(gòu)文件->新建->表->新建文件->命名->打開表設(shè)計(jì)器(2)錄入數(shù)據(jù)兩種方式:直接錄入+追加錄入瀏覽狀態(tài)下,“顯示”->“追加方式”(3)顯示表結(jié)構(gòu)/修改表結(jié)構(gòu)顯示->表設(shè)計(jì)器(4)表記錄的瀏覽表打開狀態(tài)下,顯示->瀏覽(5)記錄刪除/恢復(fù)表瀏覽狀態(tài)下,表->刪除記錄/恢復(fù)記錄(6)物理刪除表瀏覽狀態(tài)下,表->徹底刪除(7)表的打開與關(guān)閉打開:文件->打開->文件類型->表.dbf關(guān)閉:窗口菜單->數(shù)據(jù)工作期,選擇要關(guān)閉的表->[關(guān)閉]按鈕(二)、命令操作方式:庫操作Createdatabase學(xué)生管理Opendatabase學(xué)生管理Modifydatabase學(xué)生管理Setdatabaseto學(xué)生管理Setdatabaseto當(dāng)前數(shù)據(jù)庫為空Closedatabase關(guān)閉當(dāng)前數(shù)據(jù)庫Closeall關(guān)閉所有打開庫Deletedatabase學(xué)生管理recycledeletetable注:.dbc.dct.dcx均刪放回收站刪表(三)、命令操作方式:表操作Create學(xué)生表Append增加記錄在表尾Appendblank增加一條空記錄Go3Insert[before][blank]Use學(xué)生表UseList/displaystructureGo3DisplayListListrecord3Listfor入學(xué)成績>=500Listfor性別=“女”listrestListnext4Modifystructure打開表設(shè)計(jì)器Replace入學(xué)成績with79for學(xué)號=“001Replaceall入學(xué)成績with入學(xué)成績+10Replaceall入學(xué)成績with入學(xué)成績+5for性別=“女”BrowseGo4delete邏輯刪除當(dāng)前記錄recall恢復(fù)當(dāng)前記錄Deleterecord3deletefor性別=“女”Deleteallrecallfor性別=“女”recallallPackZapGotopSkip3GobottomSkip-2Locatefor性別=“女”continueAddtable自由表名添加自由表到當(dāng)前數(shù)據(jù)庫Removetable表名deleterecycle‘刪除數(shù)據(jù)庫表刪除放回收站Deletefilexs.dbf‘刪除自由表,必須文件擴(kuò)展名與表有關(guān)的函數(shù)(1)記算表中記錄個(gè)數(shù)函數(shù)格式:RECCOUNT()功能:測試指定工作區(qū)中表的記錄個(gè)數(shù)。說明:做過邏輯刪除的記錄包括在內(nèi)。?RECCOUNT()‘結(jié)果為34(2)返回表中當(dāng)前記錄號函數(shù)格式:RECNO()功能:返回當(dāng)前記錄的記錄號?!纠縐SEStudentGO2?RECNO()‘結(jié)果為2(3)表文件首測試函數(shù)格式:BOF()功能:測試記錄指針是否指向第一條記錄之前。(4)表文件尾測試函數(shù)格式:EOF()功能:測試記錄指針是否指向最后一條記錄之后。【例】USEXS?BOF()‘結(jié)果為.F..SKIP–1?BOF()‘結(jié)果為.T.GOBOTTOM?EOF()‘結(jié)果為.F.SKIP‘等價(jià)于SKIP1?EOF()‘結(jié)果為.T.(5)記錄是否有刪除標(biāo)記函數(shù)格式:DELETED()功能:測試當(dāng)前記錄是否有刪除標(biāo)記*。有返回.T.,沒有.F.【例】DELETERECORD3GO3?DELETED()‘返回.T.(6)測試記錄是否找到函數(shù)格式:FOUND()功能:測試是否找到符合要求的記錄。找到返回.T.,否則返回.F.【例】USEStudentLOCATEFORName=“高涵”IfFOUND()‘如果結(jié)果為.t.,那么說明已找到姓名為“高涵”的學(xué)生DISPLAYEndif(五)、表的復(fù)制復(fù)制表結(jié)構(gòu)(將當(dāng)前表結(jié)構(gòu)復(fù)制到指定表中)usestudentcopystructuretotable1use復(fù)制后,新表處于關(guān)閉狀態(tài)usetable1liststructureuse2.復(fù)制表結(jié)構(gòu)+數(shù)據(jù)(復(fù)制當(dāng)前表結(jié)構(gòu)+數(shù)據(jù))usestudentcopytotable2copytotable3for性別=“女”useUsetable3ListUse3.從其他表文件向表中添加數(shù)據(jù)從其它表文件添加數(shù)據(jù)到當(dāng)前打開的表尾中Usetable1Appendfromtable2(table1table2)ListAppendfromstufields學(xué)號,姓名,入學(xué)成績ListUse(六)、工作區(qū)與同時(shí)使用多個(gè)表不引入工作區(qū),先打開A表,當(dāng)再打開B表時(shí),表A自動關(guān)閉。引入工作區(qū),1~32767個(gè),可同時(shí)在不同的工作區(qū)分別打開多個(gè)表。Select1Use表1Select2Use表2Select0《=》select3Use表3Use表4in4Select0表示使用最小的空閑工作區(qū)(七)、使用數(shù)據(jù)工作期數(shù)據(jù)工作期窗口對多表操作提供了便利條件,它可以方便的打開表、關(guān)閉表、瀏覽表,還可以對已經(jīng)排序的兩個(gè)表建立關(guān)系。“窗口”->“數(shù)據(jù)工作期”表之間的臨時(shí)關(guān)系要求兩個(gè)表有共同的關(guān)鍵字并分別用關(guān)鍵字建立了索引,可以用setrelation命令建立臨時(shí)關(guān)系。Use成績in1Use學(xué)生in2setrelationto學(xué)號into1二、表的索引索引是一種快速查詢和定位技術(shù)。如果要按照特定的順序定位、查看或者操作表中的記錄,可以通過索引完成相關(guān)的操作。Visualfoxpro索引是由指針構(gòu)成的文件,這些指針邏輯上按照索引關(guān)鍵字的值進(jìn)行排序(升序或者降序),索引文件和表文件分別存儲,索引并不會改變表中記錄的物理順序。(一)索引文件類型索引文件有二種單索引文件.idx,用命令建立復(fù)合索引文件:獨(dú)立復(fù)合索引文件.cdx,與表名不同,用命令建立結(jié)構(gòu)復(fù)合索引文件.cdx,與表名同名,用命令+表設(shè)計(jì)器均可建立(二)索引類型主索引:主關(guān)鍵字特性,不允許出現(xiàn)重復(fù)值或空值,只能在數(shù)據(jù)庫表中創(chuàng)建一個(gè)主索引。候選索引:候選關(guān)鍵字特性,不包含Null值或重復(fù)值。在數(shù)據(jù)表和自由表中均可以為每個(gè)表建立多個(gè)候選索引。唯一索引:只在索引文件中保留第一次出現(xiàn)的索引關(guān)鍵字值。以指定字段的首次出現(xiàn)值為基礎(chǔ),選定一組記錄,并對記錄進(jìn)行排序。在數(shù)據(jù)表和自由表中均可以為每個(gè)表建立多個(gè)唯一索引。普通索引:可以用來對記錄排序和搜索記錄,它不強(qiáng)迫記錄中的數(shù)據(jù)具有唯一性。在數(shù)據(jù)表和自由表中均可以為每個(gè)表建立多個(gè)普通索引。(三)索引文件的建立表設(shè)計(jì)器中建立結(jié)構(gòu)復(fù)合索引索引選項(xiàng)卡:索引名,類型,表達(dá)式,篩選2.命令建立結(jié)構(gòu)復(fù)合索引Indexon學(xué)號tagxh普通索引Indexon學(xué)號tagxhunique唯一索引Indexon學(xué)號tagxhcandidate候選索引注:不能建立主索引(四)結(jié)構(gòu)復(fù)合索引文件的使用指定索引順序菜單方式表瀏覽狀態(tài)下:“表”->“屬性”->p58圖2-192.命令方式Setordertoxh‘升序Setordertoxhdesc‘降序使用索引快速查詢索引可以提高查詢速度,將記錄指針快速定位到要查詢的記錄處,可以用seek命令來快速定位。Seek“0202”刪除結(jié)構(gòu)復(fù)合索引表設(shè)計(jì)器中“索引”選項(xiàng)卡中的【刪除】按鈕2.命令方式DeletetagxhDeletetagall三、數(shù)據(jù)完整性回到教材第9頁(1)實(shí)體完整性:保證記錄唯一的特性。--主索引和候選索引(2)域完整性:字段類型的定義和字段取值范圍的約束規(guī)則。--表設(shè)計(jì)器中建立字段有效性規(guī)則:規(guī)則,信息,默認(rèn)值。(3)參照完整性:建立表之間的關(guān)聯(lián)(一)建立關(guān)聯(lián)1.主表/父表輔表/子表主索引/候選索引普通索引方法:鼠標(biāo)拖動主/候-->普通索引處2.“數(shù)據(jù)庫”菜單->“清理數(shù)據(jù)庫”注:關(guān)閉數(shù)據(jù)庫表才能清理3.設(shè)置參照完整性更新規(guī)則級聯(lián)限制忽略刪除規(guī)則級聯(lián)限制忽略插入規(guī)則限制忽略教學(xué)反思:這一章是整本書的核心章節(jié),所以放慢速度來講,力求打好基礎(chǔ),講懂講透。對于表的創(chuàng)建,表結(jié)構(gòu)的修改,表記錄的錄入、修改與刪除,不但要掌握界面的操作方式,更主要的,學(xué)會用vfp的命令來控制,熟悉各種命令的書寫規(guī)則,加深對vfp常用表處理命令的記憶與識別,學(xué)會插入數(shù)據(jù),修改數(shù)據(jù)和刪除數(shù)據(jù),對多工作區(qū)要有個(gè)正確的認(rèn)識,要理解索引的優(yōu)點(diǎn)與含義,索引的類型,如何創(chuàng)建結(jié)構(gòu)復(fù)合類型索引,以及索引的具體應(yīng)用。這一章同樣要利用教學(xué)經(jīng)典實(shí)例,結(jié)合書上的數(shù)據(jù)操作,理解vfp表數(shù)據(jù)的執(zhí)行過程,并配合等級考試真題,加深課堂內(nèi)容的理解。表與數(shù)據(jù)操作15分鐘熟悉識記各種操作數(shù)據(jù)庫和表的命令15分鐘運(yùn)行后查看結(jié)果注意和update語句比較物理刪除與邏輯刪除區(qū)別?命令后注意回車執(zhí)行10分鐘刪除標(biāo)記的記錄也統(tǒng)計(jì)在內(nèi)注意返回結(jié)果為數(shù)值型表文件首尾的位置4分鐘快速復(fù)制表數(shù)據(jù)或結(jié)構(gòu)3分鐘追加記錄比較實(shí)用多工作區(qū)使用5分鐘思考:引入多工作區(qū)有何好處?如何標(biāo)記?提問:索引好處?3分鐘依次舉例讓學(xué)生看到創(chuàng)建索引的好處18分鐘掌握命令創(chuàng)建與刪除索引4分鐘提問?為何要引入數(shù)據(jù)完整性?有何優(yōu)點(diǎn)?詳細(xì)演示并講解如何建立表間的關(guān)聯(lián)??15分鐘第5章授課章節(jié)第5章結(jié)構(gòu)化查詢語言所需學(xué)時(shí)講授學(xué)時(shí)數(shù):6實(shí)踐環(huán)節(jié)學(xué)時(shí)數(shù):6教學(xué)目的與要求目的:掌握SELECT命令主要短語的用法和作用;掌握SQL語言中記錄的插入,修改和刪除.要求:1、通過命令窗口及程序窗口編寫sql語句創(chuàng)建數(shù)據(jù)庫對象2、熟練用vfp命令和sql語句兩種方式操作數(shù)據(jù).(插入,修改和刪除)3、sql語句對數(shù)據(jù)綜合查詢.教學(xué)重點(diǎn)1、select查詢語句書寫規(guī)則2、多表連接查詢教學(xué)難點(diǎn)1、嵌套查詢及聚合函數(shù)的使用教學(xué)方法與手段1、課堂講授2、上機(jī)操作教學(xué)內(nèi)容時(shí)間分配第8次課講授:數(shù)據(jù)查詢(單表+聯(lián)接查詢)第8次上機(jī):編寫習(xí)題書后程序,并執(zhí)行第9次課講授:嵌套查詢和數(shù)據(jù)定義第9次上機(jī):編寫書后程序,并做習(xí)題第10次課講授:數(shù)據(jù)操縱(insert+update+delete),查詢和視圖第10次上機(jī):編寫書后程序,并做習(xí)題作業(yè)及思考題1、in,notin的使用。3、數(shù)組在查詢中的應(yīng)用。教學(xué)的基本內(nèi)容時(shí)間安排教學(xué)方法第5章結(jié)構(gòu)化查詢語言SQL簡介StructuredQueryLanguage結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL語言的基本功能:數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE、DROP、ALTER數(shù)據(jù)操縱INSERT、UPDATE、DELETE數(shù)據(jù)控制GRANT、REVOKE一、數(shù)據(jù)查詢功能SQL語言的查詢功能由SELECT命令完成。SELECT[ALL|DISTINCT][TOPN[PERCENT]]要查詢的數(shù)據(jù)FROM數(shù)據(jù)源1[連接方式JOIN數(shù)據(jù)源2][ON連接條件][WHERE查詢條件][GROUPBY分組字段[HAVING分組條件]][ORDERBY排序選項(xiàng)1[ASC|DESC][,排序選項(xiàng)2[ASC|DESC]...]][輸出去向]1基于單個(gè)表的查詢【例4.1】查詢教師情況表中教師的姓名、性別和職稱信息。Select姓名,性別,職稱from教師情況表【例4.2】查詢教師情況表中的所有字段信息。Select*from教師情況表或Select*from教學(xué)管理數(shù)據(jù)庫!教師情況表【例4.3】查詢教師情況表中的職稱信息Selectdistinct職稱from教師情況表【例4.4】查詢教師情況表中職稱為講師的信息。Select*from教師情況表where職稱=“講師”【例4.5】查詢教師情況表中職稱為講師的男職工信息。Select*from教師情況表where職稱=“講師”and性別=“男”【例4.6】查詢教師情況表中的所有信息,并按照出生日期升序排序輸出。Select*from教師情況表orderby出生日期【例4.7】查詢教師情況表中姓名、職稱和出生日期,并按照職稱降序、出生日期升序排序輸出。Select姓名,職稱,出生日期from教師情況表orderby職稱desc,出生日期【例4.8】查詢教師情況表中姓名和出生日期的信息,將查詢結(jié)果按照出生日期升序排序,并只顯示查詢結(jié)果的前3條記錄。Selecttop3姓名,出生日期from教師情況表Oderyby出生日期【例4.9】查詢教師情況表中的職工人數(shù)。Selectcount(姓名)from教師情況表或Selectcount(教師編號)from教師情況表或Selectcount(*)from教師情況表Selectcount(教師編號)as教工人數(shù)from教師情況表Selectcount(教師編號)教工人數(shù)from教師情況表【例4.10】查詢教師情況表中男、女職工的人數(shù)信息。Select性別,count(*)教工人數(shù)from教師情況表groupby性別【例4.11】查詢教師情況表中各種職稱的人數(shù)信息。Select職稱,count(*)人數(shù)from教師情況表;groupby職稱【例4.12】查詢教師情況表中職稱人數(shù)在3人以上的信息,并按照人數(shù)降序輸出。Select職稱,count(*)人數(shù)from教師情況表groupby職稱havingcount(*)>=3;Orderby人數(shù)desc或Orderby2desc【例4.13】查詢教師情況表中的所有信息,并將查詢結(jié)果保存在永久表table1中。Select*from教師情況表intodbftable1Select*from教師情況表intotabletable1【例4.14】查詢教師情況表中的所有信息,并將查詢結(jié)果保存到臨時(shí)表temp中。Select*from教師情況表intocursortemp【例4.15】查詢教師情況表中男職工的姓名、性別、職稱、基本工資情況,并將查詢結(jié)果保存到文本文件mn中。(.txt)Select姓名,性別,職稱,基本工資from教師情況表where性別=“男”tofilemn【例4.16】查詢教師情況表中的1990年之前參加工作的職工姓名、工作日期、基本工資,將查詢結(jié)果在數(shù)組AX中。(二維)Select姓名,工作日期,基本工資from教師情況表where工作日期<{^1990/01/01}intoarrayax注:如果查詢結(jié)果只有一個(gè)值,則存至ax(1,1)中,二維數(shù)組。2聯(lián)接查詢基于多表間的查詢,必須指定多表之間的聯(lián)接條件?!纠?.17】查詢學(xué)生學(xué)號、姓名和各課程的課程號及成績。Select學(xué)生情況表.學(xué)號,姓名,課程號,成績;from學(xué)生情況表,學(xué)生成績表;Where學(xué)生情況表.學(xué)號=學(xué)生成績表.學(xué)號或Selectx.學(xué)號,姓名,課程號,成績;from學(xué)生情況表x,學(xué)生成績表y;wherex.學(xué)號=y.學(xué)號【例4.18】查詢選修了”計(jì)算機(jī)基礎(chǔ)”課程的學(xué)生姓名、課程名和成績。Select姓名,課程名稱,成績;from學(xué)生成績表x,學(xué)生情況表y,課程情況表z;wherex.學(xué)號=y.學(xué)號andx.課程號=z.課程號;and課程名稱=“計(jì)算機(jī)基礎(chǔ)”聯(lián)接包括4種:左聯(lián)接leftjoin右聯(lián)接rightjoin全聯(lián)接fulljoin內(nèi)聯(lián)接innerjoin(1)左聯(lián)接–左表全部記錄+右表匹配記錄,不匹配用null聯(lián)接。Selectxs.*,課程號,成績fromxsleftjoincjOnxs.學(xué)號=cj.學(xué)號(2)右聯(lián)接–右表全部記錄+左表匹配記錄,不匹配用null聯(lián)接。Selectxs.*,課程號,成績fromxsrightjoincjOnxs.學(xué)號=cj.學(xué)號(3)全聯(lián)接–倆表全部記錄,不匹配用null聯(lián)接。Selectxs.*,課程號,成績fromxsfulljoincjOnxs.學(xué)號=cj.學(xué)號(4)內(nèi)聯(lián)接–只顯示滿足條件的記錄Selectxs.*,課程號,成績fromxsinnerjoincjOnxs.學(xué)號=cj.學(xué)號【例4.17】查詢學(xué)生學(xué)號、姓名和各課程的課程號及成績。Selectx.學(xué)號,姓名,課程號,成績;from學(xué)生成績表xinnerjoin學(xué)生情況表y;onx.學(xué)號=y.學(xué)號或Selectx.學(xué)號,姓名,課程號,成績from學(xué)生成績表x,學(xué)生情況表ywherex.學(xué)號=y.學(xué)號【例4.18】查詢選修了”計(jì)算機(jī)基礎(chǔ)”課程的學(xué)生姓名、課程名和成績。Select姓名,課程名稱,成績;from學(xué)生情況表xinnerjoin學(xué)生成績表y;innerjoin課程情況表z;onz.課程號=y.課程號;onx.學(xué)號=y.學(xué)號;Where課程名稱=“計(jì)算機(jī)基礎(chǔ)”或Select姓名,課程名稱,成績;from學(xué)生成績表x,學(xué)生情況表y,課程情況表z;wherex.學(xué)號=y.學(xué)號andz.課程號=x.課程號;and課程名稱=“計(jì)算機(jī)基礎(chǔ)”3嵌套查詢一個(gè)查詢中完整地包含另一個(gè)完整的查詢命令。內(nèi)外層查詢可以是同一個(gè)表,也可以是不同的表?!纠?.19】查詢?nèi)雽W(xué)成績最高的學(xué)生信息。Select學(xué)號,姓名,入學(xué)成績from學(xué)生成績表where入學(xué)成績=;(Selectmax(入學(xué)成績)from學(xué)生情況表)【例4.20】查詢已選課的學(xué)生信息。Select*from學(xué)生情況表where學(xué)號in(Selectdistinct學(xué)號from學(xué)生成績表)【例4.21】查詢未選課的學(xué)生信息。Select學(xué)號,姓名from學(xué)生情況表where學(xué)號notin;(Selectdistinct學(xué)號from學(xué)生成績表)【例4.22】查詢?nèi)雽W(xué)成績低于500分的學(xué)生的學(xué)號和選課的課程數(shù)目。Select學(xué)號,count(課程號)選課門數(shù)from學(xué)生成績表where學(xué)號in;(select學(xué)號from學(xué)生情況表where入學(xué)成績<500)groupby學(xué)號【例4.23】查詢學(xué)生情況表中入學(xué)成績低于平均入學(xué)成績的學(xué)生信息。Select*from學(xué)生情況表where入學(xué)成績<(Selectavg(入學(xué)成績)from學(xué)生情況表)二、數(shù)據(jù)定義功能1.表的定義CREATETABLE|DBF<表名>[FREE](字段名1字段類型[(寬度[,小數(shù)位數(shù)])][NULL|NOTNULL][CHECK表達(dá)式[ERROR字符型表達(dá)式]][DEFAULT默認(rèn)值][PRIMARYKEY|UNIQUE][,字段名2...])【例4.24】建立數(shù)據(jù)庫“學(xué)生.dbc”,建立數(shù)據(jù)庫表“STU.dbf”Createdatabase學(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))Createdbfstu1(序號C(2)primarykey,性別C(2)check性別="男"or性別="女"error"性別只能是男或女",入學(xué)成績n(3)check入學(xué)成績>400error"成績>400"default450)2.表結(jié)構(gòu)的修改1)格式1ALTERTABLE表名[DROP[COLUMN]字段名][SETCHECK表達(dá)式[ERROR字符型表達(dá)式]][DROPCHECK][ADDPRIMARYKEY表達(dá)式][DROPPRIMARYKEY][RENAMECOLUMN原字段名TO新字段名](1)增加字段Altertablestuadd民族C(20)Altertablestuadd性別C(2)check性別$"男女";error"性別只能是男或女"default"女“(2)刪除字段Altertablestudrop入學(xué)日期Altertablestudropcolumn出生日期(3)重命名字段Altertablesturename學(xué)號to學(xué)生學(xué)號Altertablesturenamecolumn照片to一寸照片(4)修改字段Altertablestualter學(xué)號C(10)Altertablestualter學(xué)號C(10)primarykeyAltertablestualter入學(xué)成績N(3)check入學(xué)成績>400(5)增加字段級有效性Altertablestualter入學(xué)成績setdefault450Altertablestualter入學(xué)成績setcheck入學(xué)成績>400error“!”注:setdefault和setcheck二者一次只能修改其中的一個(gè)(6)刪除字段級有效性Altertablestualter入學(xué)成績dropdefaultAltertablestualter入學(xué)成績dropcheck注:dropdefault和dropcheck二者一次只能刪除其中的一個(gè),規(guī)則和默認(rèn)值是一起刪掉的。(7)修改表級有效性Altertablestusetcheck入學(xué)日期>出生日期error“。。。”Altertablestudropcheck【例4.25】刪除STU表中的姓名字段。Altertablestudropcolumn姓名【例4.26】將STU表中的”入學(xué)成績”字段改為”成績”字段。altertablesturenamecolumn入學(xué)成績to成績【例4.27】將STU表設(shè)置表一級有效性規(guī)則,規(guī)定入學(xué)日期字段的值必須大于出生日期字段的值,不符合規(guī)定時(shí),顯示“入學(xué)日期必須大于出生日期”。altertablestusetcheck入學(xué)日期>出生日期Error“入學(xué)日期必須大于出生日期”【例4.28】刪除STU表的表一級有效性規(guī)則。altertablestudropcheck2)格式2ALTERTABLE表名ADD|ALTER[COLUMN]字段名字段類型[(字段寬度[,小數(shù)位數(shù)])][NULL|NOTNULL][CHECK表達(dá)式[ERROR字符型表達(dá)式]][DEFAULT默認(rèn)值][PRIMARYKEY|UNIQUE]【例4.29】為STU表增加一個(gè)性別字段,字段類型為字符型,寬度為2altertablestuadd性別C(2)3)格式3ALTERTABLE表名ALTER[COLUMN]<字段名>[SETDEFAULT默認(rèn)值][SETCHECK表達(dá)式[ERROR字符型表達(dá)式]][DROPDEFAULT][DROPCHECK]【例4.30】修改或定義STU表成績字段的有效性規(guī)則。altertablestualter成績Setcheck成績>450error“成績必須在450分以上”【例4.31】刪除STU表中成績字段的有效性規(guī)則。altertablestualter成績dropcheck3.表的刪除DROPTABLE表名只刪除dbf文件。Droptablestu三、數(shù)據(jù)操縱功能1.插入記錄INSERTINTO表名[(字段名表)]VALUES(表達(dá)式表)INSERTINTO表名FROMARRAY數(shù)組名【例4.32】在STU表中插入一條記錄。INSERTINTOSTUVALUES(“1020”,”李丹”,{^1985/10/12},{^2001/9/12},480,“男”)【例4.33】對STU表只插入姓名和性別字段的值。INSERTINTOSTU(姓名,性別)VALUES(“可可”,”女”)【例4.34】用一段程序來說明insertinto...fromarray的使用方式UsestuListSelect*fromstuintoarrayapInsertintostufromarrayapListUse2.更新記錄UPDATE表名SET字段名1=表達(dá)式1[,字段名2=表達(dá)式2...][WHERE條件]UPDATESTUSET成績=550【例4.36】將STU表中男同學(xué)記錄的成績值增加50%。UPDATESTUSET成績=成績*1.5where性別=“男”3.刪除記錄–邏輯刪除DELETEFROM[WHERE條件]【例4.37】刪除STU表中學(xué)號為1020的記錄。Deletefromstuwhere學(xué)號=“1020”教學(xué)反思:由于這一章在等級考試中占有的比重較大,也是學(xué)習(xí)數(shù)據(jù)庫類課程的重點(diǎn)內(nèi)容,所以我加大了學(xué)時(shí),由淺入深,重點(diǎn)講解。結(jié)合書上的實(shí)例,對select各個(gè)子句的逐層深入學(xué)習(xí),讓學(xué)生自己分析,自己總結(jié),寫出正確的select語句對數(shù)據(jù)完成查詢。充分調(diào)動了學(xué)生的學(xué)習(xí)積極性,采用了比賽的形式,看誰編寫的select語句能滿足查詢要求,如何分組,何時(shí)分組,怎樣篩選等等,通過正確合理的引導(dǎo),讓學(xué)生自己發(fā)現(xiàn)答案,取得了良好的教學(xué)效果。在制作幻燈片的時(shí)候,加入幻燈片切換效果的內(nèi)容,留出學(xué)生思考的空間,互動教學(xué)+啟發(fā)引導(dǎo),達(dá)到了預(yù)期的目的。掌握select命令10分鐘舉例書寫滿足查詢要求的select語句18分鐘注意top3的位置5分鐘注意分號;什么時(shí)候加?什么時(shí)候不加?例題講解13分鐘連接查詢思想:兩個(gè)表要有連接字段8分鐘4分鐘嵌套查詢思想?查詢中有查詢注意內(nèi)層查詢要有括號!12分鐘表結(jié)構(gòu)的定義格式6分鐘表結(jié)構(gòu)的修改8分鐘有效性3分鐘理論聯(lián)系實(shí)際格式的選擇刪除表3分鐘記錄的隨意錄入查看結(jié)果10分鐘總結(jié)5分鐘第6章授課章節(jié)第6章VisualFoxPro程序設(shè)計(jì)所需學(xué)時(shí)講授學(xué)時(shí)數(shù):4實(shí)踐環(huán)節(jié)學(xué)時(shí)數(shù):4教學(xué)目的與要求目的:了解結(jié)構(gòu)化程序設(shè)計(jì)思想,掌握順序、選擇、循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)方法。要求:1、掌握程序文件的建立、修改、執(zhí)行方法。2、掌握順序、循環(huán)結(jié)構(gòu)。3、理解常用算法。教學(xué)重點(diǎn)1、程序設(shè)計(jì)的思路2、選擇、循環(huán)程序設(shè)計(jì)方法教學(xué)難點(diǎn)1、多重循環(huán)教學(xué)方法與手段1、課堂講授2、上機(jī)操作教學(xué)內(nèi)容時(shí)間分配第11次課講授:順序、選擇結(jié)構(gòu)程序的建立和執(zhí)行第11次上機(jī):編寫習(xí)題書后程序,并執(zhí)行第12次課講授:循環(huán)結(jié)構(gòu),變量的作用域第12次上機(jī):編寫書后程序,并做習(xí)題作業(yè)及思考題1、loop,exit語句的使用3、程序之間的聯(lián)系教學(xué)的基本內(nèi)容時(shí)間安排教學(xué)方法第6章VisualFoxPro程序設(shè)計(jì)VisualFoxPro系統(tǒng)的3種操作方式:菜單方式—交互方式命令方式—交互方式程序方式—自動化方式結(jié)構(gòu)化程序設(shè)計(jì)方法:程序結(jié)構(gòu)清晰,易于閱讀和理解,便于調(diào)試和維護(hù)。它的思想是:自頂向下逐步求精模塊化一、程序設(shè)計(jì)概述(一)程序的概念程序就是能夠完成一定任務(wù)的命令的有序集合。程序方式,就是先根據(jù)任務(wù)的要求確定能完成該任務(wù)的命令序列,即編寫程序;然后在磁盤上建立包含程序代碼的程序文件;最后通過運(yùn)行程序,讓系統(tǒng)自動執(zhí)行程序代碼,完成該任務(wù),輸出結(jié)果。程序通常以文件形式存放在磁盤上,在VisualFoxPro中,程序文件也稱為命令文件,其擴(kuò)展名為.prg。程序文件一旦建立,可以被多次重復(fù)執(zhí)行。(二)、程序的控制結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計(jì)有三種基本控制結(jié)構(gòu)語句語句1語句2語句3語句塊2語句塊1條件.T..F.循環(huán)體循環(huán)條件件.T..F.順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)(三)、程序文件的建立1.程序文件的建立單擊“文件”下拉菜單中的“新建”命令,或者單擊常用工具欄上的“新建”按鈕;在“新建”對話框中選擇文件類型為“程序”,然后單擊“新建文件”按鈕,打開編輯窗口。輸入程序內(nèi)容后保存,默認(rèn)擴(kuò)展名是.prg。ModifyCommand<程序文件名>說明:⑴程序文件名必須以字母(包括漢字)、下劃線開頭,由字母、數(shù)字、下劃線組成。⑵執(zhí)行Modify命令時(shí),文件名前可以加路徑,系統(tǒng)首先在指定路徑或當(dāng)前路徑下查找命令中指定的文件,如果未找到,則建立新文件,進(jìn)入編輯窗口;如果找到了命令中指定的文件,系統(tǒng)自動將該文件調(diào)入內(nèi)存并顯示在編輯窗口中。(3)一行只能寫一條命令,寫完要輸入回車,表示命令結(jié)束。(4)一條命令的長度不得超過2048個(gè)字符。為便于閱讀,可以將長的命令分成若干行書寫,但要在行尾加上;,表示下一行是本行的繼續(xù)。2.程序文件的調(diào)用執(zhí)行單擊“程序”菜單中的“運(yùn)行”命令,或者!按鈕Do<程序文件名>功能:將磁盤上指定的程序文件調(diào)入內(nèi)存并運(yùn)行。說明:程序執(zhí)行過程中,若發(fā)生錯誤,系統(tǒng)將顯示出錯信息,用戶可返回編輯狀態(tài)進(jìn)行修改。3.程序文件的修改(1).菜單方式文件->打開->文件類型選程序->找到程序文件->確定(2).命令方式MODIFYCOMMAND程序文件名4.注釋命令為增加程序的可讀性,常常要在程序中加入一些注釋,對程序中使用的變量、算法進(jìn)行說明。注釋僅起說明作用,不參與程序運(yùn)行。VisualFoxPro提供了2種注釋的方法:在程序行開頭加*或Note,表示本行為注釋行。命令行中字符&&后面的部分為注釋行。二、順序結(jié)構(gòu)不需要特定的語句來實(shí)現(xiàn),它只需先把處理過程的各個(gè)步驟詳細(xì)列出,然后把有關(guān)命令按照處理的邏輯順序自上而下地排列起來便可。UsestudentInput“請輸入要顯示的記錄號”tordGordDisplayUse順序結(jié)構(gòu)舉例:編寫程序求半徑為3的圓周長和面積。在打開的程序編輯窗口中,輸入下列程序行:r=3C=2*pi()*rS=pi()*r^2?"周長=",c?"面積=",s三、選擇結(jié)構(gòu)1.雙分支語句格式:If<條件><語句塊1>[Else<語句塊2>]Endif功能:首先對<條件>進(jìn)行判斷,判斷結(jié)果為邏輯值.T.時(shí),就執(zhí)行<語句塊1>,然后執(zhí)行Endif后邊的語句;判斷結(jié)果為.F.時(shí),如果有ELSE選項(xiàng),則執(zhí)行<語句塊2>,如果沒有,則執(zhí)行Endif后的語句。說明:If、Else和Endif必須配對使用,且這三條子句應(yīng)各占一行;【例】:鍵盤輸入一個(gè)實(shí)數(shù),計(jì)算并輸出其絕對值。Input‘請輸入一個(gè)實(shí)數(shù):'ToxIfx<0?"其絕對值為:",-xElse?"其絕對值為:",xEndif【例3.3】成績值超過85分(包括85分),則輸出“優(yōu)秀”,否則輸出“良好”。Input“輸入學(xué)生成績”tomarIfmar>=85?”優(yōu)秀

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論