第一篇:Vf練習1-5
Vf練習1—51、任意一個數,若能被7或3整除,則輸出該
3、從鍵盤上連續輸入10組數,分別輸出每數和,對輸入進行規定,每組數的結束標志為“0” ENDDO I=I+1 J=1
數,最后釋放所有的內存變量 SET TALK OFF
INPUT “輸入一個數”TO X?[24]ENDIF
RETURN1、下面程序的功能是計算1——100之間所有整數的平方和并輸出結果 S=0
DO WHILE X<100ENDDO ?S RETURN1、編程求1——1000之間被3整除又被5整除的個數及其和。N=0 S=0 K=1
S=S+K ENDIF K=K+1 ENDDO ?N,S RETURN
K=1
?”請輸入第”+“組數” S=0 X=1
INPUT “請輸入下一個數:”TO X ENDDO
?”第”+[11]+“組數之和”,S K=K+1 ENDDO RETURN4、編寫程序,要求從鍵盤輸入9個數,按從小到大的順序排列并顯示出來。CLEAR
I=1
INPUT TO K(I)I=I+1 ENDDO I= 1
T=K(I)K(I)=K(J)K(J)=T ENDIF
ENDDO I=1
DO WHILE I<10I=I+1 ENDDO RETURN3、鍵盤輸入10個數,輸入最小數 SET TALK OFF CLEAR K=1
INPUT “請輸入第1個數:” TO AINPUT “請輸入第2個數:” TO BENDIF
?“最小數”,A SET TALK ON RETURN4、從鍵盤輸入10個數,按從小到大的順序輸出
SET TALK OFF CLEAR
I=1
DO WHILE I<=10 INPUT TO M(I)
I=1
T=M(J)M(J)=M(J+1)M(J+1)=T ENDIF
ENDDO I=I+1 ENDDO I=1
DO WHILE I<=10 I=I+1 ENDDO SET TALK ON RETURN4、計算10!+15!+20!+25!CLEAR I=10 T=0
S=0
ENDDO ?T ENDDO RETURN
子程序功能計算P=N!*子程序PRO1.PRG
PARAMETERS P,N,PL=L+1 ENDDO6、編寫一個子程序計算N的階乘,在主程序中計算3!+5!+7!+9!+11!。*主程序JCS.PRG SET TALK OFF CLEAR STORE 0 TO S,K
DO JC1
NEXT
RETURN *子程序JC1.PRG *計算N!的階乘
STORE(24)TO L,K FOR L=1 TO N(25)NEXT RETURN3、已知一數列的前三個數:0,0,1以后每個數為前三個數的和,求該數列的前20個數。F1=0 F2=0 F3=1
?F1,F2,F3 I=
4??F4
I=I+1 ENDDO SET TALK ON RETURN3、程序的功能是:從鍵盤上輸入10個正數放在一維數組X中,然后顯示最大的數組元素及其下標
(10)MAX=0 C=1
FOR K=1 TO 10 INPUT?輸入?+?第?+STR(K)+?個數據?NEXT KMAX=X(1)FOR K=2 TO 10
IF(12)(13)C=K
(14)ENXT K ?MAX,C1、下列程序的功能是完成建立索引文件,輸入表文件名,索引關鍵字(字符型)和索引名,運行后生成一個按輸入關鍵字進行索引的索引文件之后顯示索引文件和索引扣的數據,最后關閉文件
SET TALK OFF
ACCEPT “輸入表文件名:” TO FNAME ACCEPT “輸入索引關鍵字:” TO KEY ACCEPT “輸入索引名:” TO INAME
INDEX ON [2]TAG [3]
?“索引名”+[4]USE RETURN2、已知XSCJ.DBF有如下的記錄,編程計算每個學生的總分,總分=英語+語文+數學,并根據總分給每個學生填入內容:總分>=240等級為‘優’;180<=總分<240分等級為‘良’;總分<180分等級為‘不及格’ 姓名 英語 語文 數學 總分 等級 張山 90 80 65李四 60 75 70王五 80
SETTALK OFF
CLEAR USE XSCJ
GO TOP
DO WHILE NOT EOF()DO CASE CASE總分>=240
REPLACE 等級別 WITH “優” REPLACE 等級別 WITH “良” CASE總分<180ENDCASE
ENDDO USE RETURN5、在XSCJ.DBF表文件中查找一位學生根據其
平均分判斷該生的學生情況 CLEAR
[20]ACCEP“請輸入學號:” TO XH LOCATE[21]IF[22][23]CASE平均分>=80 ?“成績優秀!” CASE平均分>=60 ?“成績及格!” OTHERWISE
?[24]ENDCASE
?“查無此人!” ENDIF USE RETURN
已知表文件XS.DBF有三個字段:姓名/C/ 8,團員/L,團員/L,出生日期/D
1,編寫程序,顯示XS.DBF中所有團員同學的名單。CLEARUSEXSGO 1
DO WHILE[1]____________________IF[2]_____________________[3]________________________姓名ENDIF
[4]_________________________ ENDDO
[5]_________________________ RETURN
2._編寫程序,在中查找并顯示1992年出生的同學。CLEAR
DO WHILE NOT EOF()ENDDO USERETURN1、現在學生表XS.dbf,試用scan循環顯示學生表中男生的情況 CLEAR
SCAN
LOOPENDIF
ENDSCAN USE RETURN2、在學生表文件中“年齡”字段為N型,“標志”字段為L型,通過索引查詢顯示所有年齡為20的學生記錄,然后把記錄11到末記錄的標志字段設置為.T.SET TALK OFF USE 學生
INDEX ON 年齡 TAG NLDO WHILE NOT EOF()DISPLAY
IFEXIT ENDIF ENDDO
USESET TALK ON RETURN2、閱讀下列程序并將程序填寫完整 STORE “Y” TO YN USE SP1
INDEX ON 品牌 TAG PIN SET ORDER TO PIN
DO WHILE(4)ACCETP“請輸入查詢的品牌:” TO CHX SEEK(5)IF(6)DISPLAY(7)?“無此品牌商品!”(8)
WAIT“繼續查找嗎?(Y/N)” TO YN IF(9)EXIT
(8)ENDDO RETURN4、設數據表文件PHONE.DBF中包含了“姓名”、“電話”和“地址”三個字符型字段。以下程序的功能是打開表,按用戶輸入的任一電話號碼進行查找,如查存在該號碼,則顯示其單位地址,關閉文件并結束程序,請將補充程序。
(15)DO WHILE.T.PHN=SPACE(8)
ACCEPT”請輸入電話號碼” to PHN LOCATE FOR PHN=電話 IF(16)?“單位地址:”+地址 USE
(17)ENDIF ENDDO5、輸入要刪除的記錄號且記錄號不超過XJ表的記錄范圍 USE
(18)C=RECCOUNT()IF C>=N
DELETE
ENDIF5、從鍵盤輸入一個字符串,然后按組成字符串字符的倒序輸入單個字符,在輸出過程中如遇到空格字符便停止輸出。
ACCEPT“輸入一個字符串:” TO ST
IF SUBSTR(ST,N,1)=SPACE(1)ELSE
ENDIF ENDDO
RETURN5、編寫打印如下圖形。ABBBCCCCC
DDDDDDD
I=1
J=
1ENDDO
ENDDO RETURN
4、打印圖形**************** SET TALK OFF CLEAR
S=1
??”*” S=S+1 ENDDO
ENDDO RETURN
第二篇:VF電子教案(表單練習)
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(1)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
一、與表無關的表單設計(與計時器無關)1.要求:(1)編制一個按鈕組調色板
(2)當用戶按了命令按鈕組中的某個按鈕后,表單的背景色就會變為按鈕指定的對應顏色。
? 命令按鈕組Commandgroup1的Click事件代碼:
do case
case this.value=1 thisform.backcolor=rgb(225,0,0)case this.value=2 thisform.backcolor=rgb(0,255,0)case this.value=3 thisform.backcolor=rgb(0,0,255)case this.value=4 thisform.backcolor=rgb(0,0,0)case this.value=5 thisform.backcolor=rgb(225,255,255)endcase thisform.refresh
2.要求:(1)編制一個按鈕組調色板
(2)當用戶按了命令按鈕組中的某個按鈕后,命令按鈕組的背景色就會變為按鈕指定的對應顏色。(注意與上一題比較,14是設置表單的背景色,本題是設置命令按鈕組的背景色。
? 命令按鈕組Commandgroup1的Click事件代碼:
do case
case this.value=1 this.backcolor=rgb(225,0,0)case this.value=2 this.backcolor=rgb(0,255,0)case this.value=3 this.backcolor=rgb(0,0,255)case this.value=4 this.backcolor=rgb(0,0,0)case this.value=5 this.backcolor=rgb(225,255,255)endcase thisform.refresh
3.要求:(1)編制一個選項按鈕組調色板
(2)當用戶按了某個選項按鈕后,表單的背景顏色就會變為按鈕指定的對應顏色。
? 選項按鈕組Optiongroup1的Click事件代碼:
do case
case this.value=1
thisform.backcolor=rgb(255,0,0)case this.value=2
thisform.backcolor=rgb(0,255,0)case this.value=3 教學時間約
****年**月**日
總第節
審批簽字:
thisform.backcolor=rgb(0,0,255)case this.value=4
thisform.backcolor=rgb(0,0,0)case this.value=5
thisform.backcolor=rgb(255,255,255)endcase ? 如果是設置選項按鈕組的背景色,如下圖
則顏色設置語句為:thisform.optiongroup1.backcolor=rgb(255,0,0)4.要求:(1)編制一個“選頁調色板”表單
(2)當用戶按了某頁后,頁框的背景色就會變成指定的對應顏色。
? 選項按鈕組Pageframe1的Click事件代碼:
do case case this.activepage=1
this.page1.backcolor=rgb(255,0,0)case this.activepage=2
this.page2.backcolor=rgb(0,255,0)case this.activepage=3
this.page3.backcolor=rgb(0,0,255)case this.activepage=4
this.page4.backcolor=rgb(0,0,0)case this.activepage=5
this.page5.backcolor=rgb(255,255,255)endcase thisform.refresh
5.要求:(1)編制一個表單完成口令判定功能;(2)用戶從鍵盤輸入口令時,表單的顯示控件以“*”代替具體內容;(3)系統的口令存放在表文件“學生.dbf”的姓名字段中,要求完全匹配;(4)輸入口令后,按回車,將自動在表單上顯示“正確”或“錯誤”信息。
***text1的Valid事件代碼:
loca for alltrim(this.value)=alltrim(姓名)if found()
thisform.label2.caption=”正確!” else
thisform.label2.caption=”錯誤!” endif select 學生
6.要求:編制一個人工翻動日歷牌,界面窗口中顯示當前日期,但是可以通過界面提供的微調按鈕任意地向前或向后翻動日期。
? Text1的dateformat屬性設為“14-漢語” ? 微調Spinner1的Downclick事件代碼:
thisform.text1.value=thisform.text1.value-1 thisform.refresh ? 微調Spnnier1的Upclick事件代碼:
thisform.text1.value=thisform.text1.value+1 thisform.refresh
(四)小結 【教學后記】
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(2)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
7.要求(1)設計一個表單,接受用戶輸入的數字,生成相應的矩陣
(2)文本框內輸入一個小于等于10的數字,生成一個相應的對稱矩陣,且這個矩陣的對角線的數字全部為0,其他的數字為1。
? “顯示”按鈕Command1的click事件的代碼:
n=val(thisform.text1.value)s=“" for i=1 to n
for j=1 to n
if j=i or j+i=n+1
s=s+”0“+space(2)
else
s=s+”1“+space(2)
endif
endfor
s=s+chr(13)&&每N個字符加一個回車鍵,所以在內循環結束時執行該語句 endfor thisform.edit1.value=s thisform.refresh
8、要求:按“開始”按鈕,在編輯框中顯示九九乘法口訣表。
**表單form1的init事件代碼: public c,m store “” to c,m **“開始”按鈕的click事件 m=”*”
for a=1 to 9
m=m+str(a,4)endfor for I=1 to 9
c=c+str(I,1)for j=1 to I
c=c+str(I*j,4)endfor c=c+chr(13)endfor thisfom.edit1.value=m+c thisform.refresh
9、要求:在文本框中輸入一個起始數,在編輯框中顯示20個從起始位置開始并且是3的倍數的整數,且這20個數字的個位數都是3,利用標簽輸出這20個數的和。教學時間約
****年**月**日
總第節
審批簽字:
***文本框text1的valid事件代碼: public s j=1 I=val(alltrim(thisform.text1.value))S=0 Do while j<=20
If I%3=0 and mod(I,10)=3 J=j+1 S=s+I Thisform.edit1.value=thisform.edit1.value+str(I,10)
Endif
I=I+1 Enddo Thisform.refresh
***command1的click事件代碼:
thisform.label2.caption=”這組數字的和=”+str(s,10)thisform.refresh
10、要求:(1)在文本框text1中輸入任意一個100以內的正整數;(2)將所有300以內的能被該整數整除的數顯示在編輯框中;(3)將所在這些數的和顯示在text2中;(4)按“清除”按鈕時,將文本框及編輯框清空。
**表單form1的init事件代碼: thisform.text1.value=0 thisform.text1.setfocus thisform.text2.value=0 ***文本框text1的valid事件代碼: for I=1 to 300
if mod(I,thisform.text1.value)=0 thisform.edit1.value=thisform.edit1.value+str(I,5)+chr(13)thisform.text2.value=thisform.text2.value+i
endif endfor ***“清除”按鈕的click事件代碼: thisform.text1.value=0 thisform.text2.value=0 thisform.edit1.value=”” thisform.text1.setfocus
(四)小結 【教學后記】
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(3)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
要求:按“開始”按鈕,在編輯框中顯示九九乘法口訣表。**表單form1的init事件代碼: public c,m store “” to c,m **“開始”按鈕的click事件 m=”*” for a=1 to 9
m=m+str(a,4)endfor for I=1 to 9
c=c+str(I,1)for j=1 to I
c=c+str(I*j,4)endfor c=c+chr(13)endfor thisfom.edit1.value=m+c thisform.refresh
(二)目標展示:表單的操作與命令
(三)導學達標:
11、要求:按“開始”按鈕,在列表框中顯示2000-2100年之間所有的閏年。
**“開始”按鈕的click事件代碼: thisform.list1.clear for n=2000 to 2100
if n%4=0 if n%100<>0 or n%400=0
y=1 else
y=0 endif else y=0
endif if y=1
thisform.list1.additem(alltrim(str(n)))endif endfor
12.要求:(1)編制一個小型文本編輯器,界面見下圖;(2)文字信息從鍵盤輸入至edit框;(3)三個單選按鈕分別用于設置“宋體”、“黑體”和“隸書”;(4)三個check按鈕用設置字體的“傾斜”、“加粗”和“下劃線”;(5)字號用微調控件實現 教學時間約
****年**月**日
總第節
審批簽字:
***optiongroup1的click事件代碼: do case
case this.value=1 thisform.text1.fontname=”宋體”
case this.value=2 thisform.text1.fontname=”楷體”
case this.value=3
thisform.text1.fontname=”隸書” endcase ***check1的click事件代碼: if this.value=1
thisform.text1.fontbold=.t.else
thisform.text1.fontbold=.f.endif ***check2,3的代碼類似于check1 ***spinner1的upclick事件代碼
thisform.text1.fontsize=thisform.text1.fontsize-1 ***spinner1的downclick事件代碼
thisform.text1.fontsize=thisform.text1.fontsize+1 13.要求:(1)在表單中的三個文本框中分別輸入3個數,判別是否能形成三角形,如果是三角形,求出此三角形的面積。(2)判斷是否是三角形,可利用:a+b>c,且c>0;a+c>b,且b>0;b+c>a,且a>0
***判斷計算按鈕command1的click事件代碼: a=val(thisform.text1.value)b=val(thisform.text2.value)c=val(thisform.text3.value)if(a+b>c and c>0)or(a+c>b and b>0)or(b+c>a and a>0)
s=(a+b+c)/2
area=sqrt(s*(s-a)*(s-b)*(s-c))endif thisform.label2.caption=”能構成三角形,面積等于:” +str(atea)14.建立一個如圖所示的表單
? 選項按鈕組Optiongroup1的Click事件代碼:
do case
case this.value=1
create
case this.value=2 create form case this.value=3
modify command endcase
(四)小結 【教學后記】 教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(4)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
二、與表無關的表單設計(計時器類表單設計)
15.要求:編制一個信息顯示(時鐘)的界面,顯示當前時間(每秒動態顯示跳動一次)(2)并將表單的背景顏色設置為藍、綠色自動變換(與時間同步切換)
? Timer1的Timer事件代碼:
s=substr(time(),1,2)f=substr(time(),4,2)m=substr(time(),7,2)mn=val(m)if int(mn/2)=mn/2
thisform.backcolor=rgb(0,0,255)else
thisform.backcolor=rgb(0,255,0)
endif thisform.text1.value=time()16.要求:(1)編制一個表單完成數字時鐘顯示功能(2)表單將自動以1秒為間隔動態顯示系統時間(3)時、分、秒要求用漢字說明
? 文本框Text1的背景色Backcolor為RGB(255,255,255);FONTNAME為“隸書”。? 時鐘控件Timer1的Timer事件代碼:
s=substr(time(),1,2)f=substr(time(),4,2)m=substr(time(),7,2)thisform.text1.value=s+”時“+f+'分'+m+'秒'
thisform.refresh 17.要求:(1)編制一個表單完成計時器計數顯示功能(2)表單初始顯示狀態為全零“00:00:00”
(3)按“計數”按鈕,將自動以秒為單位從零開始計數(設:時的計數屬性名為S,分的計數屬性名為F,秒的計數屬性名為M。)并在表單上動態顯示。按“停止”按鈕將顯示最后一刻的計數時間。
? 創建1個新建屬性,clocknum初值設為0 ? 表單的form1的init事件代碼:
thisform.timer1.enabled=.f.thisform.text1.value=”00:00:00“ thisform.refresh ? “計數”按鈕command1的click事件代碼: thisform.timer1.enabled=.t.? “停止”按鈕command2的click事件代碼: thisform.timer1.enabled=.f.? 時鐘控件timer1的timer事件代碼:
js=thisform.clocknum s=int(js/3600)f=int(js/60)m=js%60 s1=iif(s<10,'0'+str(s,1),str(s,2))f1=iif(f<10,'0'+str(f,1),str(f,2))
教學時間約
****年**月**日
總第節
審批簽字:
m1=iif(m<10,'0'+str(m,1),str(m,2))thisform.text1.value=s1+”:“+f1+”:“+m1 thisform.clocknum=thisform.clocknum+1 thisform.refresh 18.要求:(1)“日期”“星期”“時鐘”標簽上的文本能自動換行,自動調整大小,背景透明;(2)時鐘每1秒種跳一次
? 時鐘控件Timer1的Timer事件代碼:
y=str(year(date()),4)m=str(month(date()),2)d=str(day(date()),2)thisform.text1.value=y+”年“+m+”月“+d+”日“ c=”日一二三四五六“ n=dow(date())w=”星期“+substr(c,2*n-1,2)+”(“+cdow(date())+”)“ thisform.text2.value=w thisform.text3.value=time()19.要求:(1)編制一個表單完成文字水平動態移動操縱的表單;(2)文字信息(縱向)初始顯示位置在表單的左邊,表單執行后,每間隔20毫秒,文字會自動以間隔加1的幅度逐步向表單右邊移動,直到文字到達表單最右邊緣;(3)然后,每間隔20毫秒文字會自動以間隔加1的幅度逐步向表單左邊移動,直到文字回復到初始位置;(4)整個過程不間斷地來回移動
? 新建表單屬性:right ? 表單的Form1的Init事件代碼:
thisform.timer1.interval=20 ? 時鐘控件Timer1的Timer事件代碼:
IF thisform.label1.Left=0
thisform.right=.f.endif if thisform.label1.left+thisform.label1.width=thisform.width
thisform.right=.t.ENDIF IF thisform.right
thisform.label1.Left=thisform.label1.Left-1 ELSE
thisform.label1.Left=thisform.label1.Left+1 ENDIF thisform.refresh 20.編制一個日歷時鐘表單,界面如圖所示.要求:(1)表單中的日歷是當前日期,時鐘每秒跳動一次;(2)單擊微調控件的前翻后翻按鈕,日期與星期隨之變化。
***表單Form1的init事件代碼: thisform.text1.value=date()w=iif(dow(date())>1,dow(date())-1,7)thisform.text2.value=”星期”+substr(“一二三四五六日”,2*w-1,2)+”(“+cdow(date())+”)” thisform.text3.value=time()thisform.spinner1.setfocus ***spinner1的upclick事件代碼:
thisform.text1.value=thisform.text1.value+1 w=iif(dow(thisform.text1.value)>1,dow(thisform.text1.value)-1,7)thisform.text2.value=”星期”+substr(“一二三四五日”,2*w-1,2)+”(“+cdow(thisform.text1.value)+”)” ***spinner1的downclick事件代碼:
thisform.text1.value=thisform.text1.value-1 w=iif(dow(thisform.text1.value)>1,dow(thisform.text1.value)-1,7)thisform.text2.value=”星期”+substr(“一二三四五日”,2*w-1,2)+”(“+cdow(thisform.text1.value)+”)” ***timer1 的timer事件代碼:
thisform.text3.value=time()
(四)小結【教學后記】
六
六教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(5)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
21.要求:(1)編制一個表單完成文字動態縮放操縱的表單;(2)文字信息初始的位置在表單的正中央,表單執行后,第間隔20毫秒,文字自動以字號加1的幅度逐步向周邊延伸變大,直到文字充滿整個表單;(3)然后每間隔20毫秒,文字會自動以字號加1的幅度逐步向中lkd回縮變小,直到文字復原為初始的狀態;(4)整個過程不間斷地縮放(最小字號為4,最大學號為52)
.****新建表單屬性change ****表單的Form1的Init事件代碼: thisform.change=0 ****時鐘控件Timer1的Timer事件代碼: if thisform.label1.fontsize=52
thisform.change=1 endif if thisform.label1.fontsize=4
thisform.change=0 endif if thisform.change=0 thisform.label1.fontsize=thisform.label1.fontsize+1 else
thisform.label1.fontsize=thisform.label1.fontsize-1 endif thisform.refresh
三、與表相關的表單設計(單表)
1.要求:(1)編制一個表單完成表文件“學生.dbf”內容的只讀瀏覽顯示功能;(如圖1)(2)表單初始顯示內容為表文件“學生.dbf”內容的首記錄;
(3)表單內容將以10秒為間隔自動刷新,即自動向后翻記錄,當翻至表底時,瘵自動回到首記錄循環翻動。
? 表單的Form1的Init事件代碼:
THIS.SETALL(”READONLY“,.T.,”TEXTBOX“)GO TOP THISFORM.REFRESH ? 時鐘控件Timer1的Timer事件代碼: SKIP IF EOF()
GO TOP ENDIF THISFORM.REFRESH
2.要求:(1)編制一個表單完成表文件“學生.dbf“內容的只讀瀏覽顯示功能(如圖2)(2)表單初始顯示內容為表文件“學生.dbf”的首記錄(3)當按“前翻”、“后翻”、“首記錄”、“末記錄”按鈕時,表單將自動顯示相應記錄的內容(4)當翻至表頭或表底時,將自動設置相應按鈕不可訪問。教學時間約
****年**月**日
總第節
審批簽字:
? 表單的Form1的Init事件代碼:
THIS.SETALL(”READONLY“,.T.,”TEXTBOX“)Sele 學生 GO TOP THISFORM.REFRESH ? “首記錄”按鈕Command1的Click事件代碼:
go top thisform.command2.enabled=.t.thisform.command3.enabled=.t.thisform.command4.enabled=.t.thisform.command1.enabled=.f.thisform.refresh ? “前翻”按鈕Command2的Click事件代碼:
skip-1 if bof()thisform.command1.enabled=.f.this.enabled=.f.endif thisform.command3.enabled=.t.thisform.command4.enabled=.t.thisform.refresh
? “后翻”按鈕Command3的Click事件代碼:
skip if eof()thisform.command3.enabled=.f.thisform.command4.enabled=.f.endif thisform.command1.enabled=.t.thisform.command2.enabled=.t.thisform.refresh
? “末記錄”按鈕Command4的Click事件代碼: go bottom thisform.command1.enabled=.t.thisform.command2.enabled=.t.thisform.command3.enabled=.t.thisform.command4.enabled=.f.thisform.refresh 3.要求:(1)編制“學生“表信息查詢界面
(2)查詢與用戶指定的學生姓名相匹配的記錄,并顯示指定學生的所有信息。
? ? ?
?
List1的Rowsourcetype為“6-字段”,Rowsource為“學生.姓名”;文本框Text1~Text5的數據源屬性分別為學生表中對應字段 所有文本框Text的ReadOnly屬性為“.T.”; 表單的Form1的Init事件代碼: use 學生
thisform.setall(”visible“,.f.,”textbox“)thisform.setall(”visible“,.f.,”label“)thisform.label1.visible=.t.thisform.refresh 列表框List1的Interactivechange事件代碼: thisform.setall(”visible“,.t.)thisform.refresh
(四)小結 【教學后記】
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(6)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
4.要求:(1)編制“學生表”信息查詢界面(2)顯示指定學生的所有信息。
? ? ?
?
Combo1的Rowsourcetype為“6-字段”,Rowsource為“學生.姓名”;文本框Text1~Text5的數據源屬性分別為學生表中對應字段 所有文本框Text的ReadOnly屬性為“.T.”; 表單的Form1的Init事件代碼: use 學生
thisform.setall(”visible“,.f.,”textbox“)thisform.setall(”visible“,.f.,”label“)thisform.label1.visible=.t.thisform.refresh 組合框Combo1的Interactivechange事件代碼: thisform.setall(”visible“,.t.)thisform.refresh
5.要求:編制“學生”表信息查詢界面,查詢與用戶輸入的學生學號相匹配的記錄,并顯示指定學生的所有信息。
? Label3、Label4、Label5、Label6的Caption屬性分別設置為“姓名:”、“性別:”、“出生年月:”、“獎學金:”,并設置所有文本框的數據源屬性為學生表中的對應字段 ? 標簽Label2的Forecolor屬性為“255,255,255”
? 除學號文本框,所有文本框Text的ReadOnly屬性為“.T.”; ? 表單的Form1的Init事件代碼:
use 學生
thisform.setall(”visible“,.f.)thisform.label1.visible=.t.thisform.text1.visible=.t.? 文本框Text1的Valid事件代碼:
loca for alltrim(學號)=alltrim(this.value)if found()
thisform.label2.caption=”“
thisform.setall(”visible“,.t.)else
thisform.setall(”visible“,.f.)
thisform.label1.visible=.t.thisform.text1.visible=.t.thisform.label2.visible=.t.thisform.label2.caption=”您所指定的學生并不存在!“ endif thisform.refresh
6.要求:(1)編制一個界面程序,實現將用戶指定的表文件的字段名列表顯示(2)系統自動查詢用戶指定的表文件是否存在,存在則列表顯示指定表文件的所有字段名信息,否則給出信息提示框 教學時間約
****年**月**日
總第節
審批簽字:
? Form1的Init事件的代碼:
Thisform.label2.visible=.f.Thisform.list1.visible=.f.? Text1的Valid事件的代碼
fn=alltrim(this.value)+ ”.dbf“ if file(fn)thisform.setall(”visible“,.t.)thisform.list1.clear
use(fn)for i=1 to fcount()
thisform.list1.additem(field(i))endfor else Thisform.label2.visible=.f.Thisform.list1.visible=.f.messagebox(”指定的表文件不存在!“,0+64, ”表文件存在判斷“)endif thisform.refresh
7.編制一個表單完成學生成績信息查詢顯示功能(界面如圖所示)。要求(1)當輸入學生 9.要求:(1)編制一個表單完成表文件“學生.dbf”內容的查詢顯示功能(2)當用戶在組合框(下拉列表)選擇班級(學號的左三位)后,表單將自動顯示對應班級的獎學金總額
(3)按“退出”按鈕時,自動關閉表單。
? 表單Form1的Init事件代碼:
sele 學生
index on left(學號,3)to xh unique scan thisform.combo1.additem(left(學號,3))endscan ? 組合框Combo1的Valid事件代碼:
set talk off Sum 獎學金 to jxj for left(學號,3)=this.value Thisform.twxt1.value=jsj ? “退出”按鈕Command1的Click事件代碼:
thisform.release 10.要求:(1)編制一個表單完成表文件“學生.dbf”“成績.dbf”內容的查詢顯示功能(2)當用戶在組合框(下拉列表)選擇班級(學號的左三位)后,表單將自動顯示對應班級的所有學生的總平均成績
(3)按“退出”按鈕時,自動關閉表單。
? 表單Form1的Init事件代碼:
Set talk off index on left(學號,3)to xh unique scan
thisform.combo1.additem(left(學號,3))endscan set index to ? 組合框combo1的Valid事件代碼:
set talk off average成績 to cj for left(學號,3)=this.value thisform.text1.value=cj ? “退出”按鈕Command1的Click事件代碼: thisform.release
(四)小結 【教學后記】 教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(7)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
11.編制一個表單完成數據轉移操作功能
? 命令按鈕“添加一項”command1的click事件代碼:
thisform.list2.additem(thisform.list1.value)thisform.list1.removeitem(thisform.list1.listindex)&&“添加一項”將list1內容移到list2,即list1的內容減少一項(removeitem),list2的內容增加一項(additem)。thisform.refresh ? 命令按鈕“全部添加”command2的click事件代碼:
thisform.list1.clear thisform.list2.clear scan thisform.list2.additem(姓名)endscan &&“全部添加”將list1內容全部移到list2,即list1全部清空(clear),list2內容為學生表的“姓名”。thisform.refresh ? 命令按鈕“移去一項”command3的click事件: thisform.list1.additem(thisform.list2.value)thisform.list2.removeitem(thisform.list2.listindex)&&“移去一項”將list2的內容移到list1,list2減少一項(removetiem),list1增加一項(additem)。thisform.refresh ? 命令按鈕“全部移去”command4 的click事件: thisform.list2.clear thisform.list1.clear scan thisform.list1.additem(姓名)endscan &&“全部移去”將list2內容全部移到list1,即list2全部清空(clear),list1內容為學生表的“姓名”。
thisform.refresh
12.要求:(1)編制一個列表框數據轉移操作表單;(2)當在左邊顯示學生姓名的窗口選擇某個學生后,單擊“選擇一項”按鈕,左邊的列表中的所選中的單項信息將自動轉移到右邊的列表框中;(3)當在右邊顯示學生姓名的窗口選擇某個學生后,單擊“退還一項”按鈕,右邊的列表中選中的單項信息將自動轉移到左邊的列表框中。
*****表單Form1的init事件代碼: 教學時間約
****年**月**日
總第節
審批簽字:
this.list2.rowsourcetype=0 this.list2.rowsource=” this.list12.sorted=.t.this.list1.rowsourcetype=0 this.list1.rowsource=”” use 學生 scan
this.list1.additem(姓名)endscan *****命令按鈕”選擇一項”command1的click事件代碼: thisform.list2.additem(thisform.list1.value)thisform.list1.removeitem(thisform.list1.listindex)thisform.refresh *****命令按鈕”退還一項”command2的click事件代碼: thisform.list1.additem(thisform.list2.value)thisform.list2.removeitem(thisform.list2.listindex)thisform.refresh
13.要求:在文本框中輸入一個工資金額數,從數據表文件gzb.dbf(工資表)中查找高于此工資數男女人數,利用標簽輸出統計結果。
*****統計按鈕command1的click事件代碼: select gzb count to x for 工資>val(thisfom.text1.value)and 性別=.t.count to y for 工資>val(thisform.text1.value)and 性別=.f.thisform.label2.caption=”工資超過”+thisform.text1.value+”的男職工人數為:”+str(x,4)thisform.label3.caption=”工資超過”+thisform.text1.value+”的女職工人數為:”+str(y,4)14.四、與表相關的表單設計(多表)
15.要求:(1)編制一個表單完成表文件“課程.dbf”“成績.dbf”內容的查詢顯示功能
(2)當用戶在組合框選擇課程名后,表單將自動顯示對應課程的所有學生的總平均成績
(3)按“退出”按鈕時,自動關閉表單。
? 組合框Combo1的RowSouceType屬性為“6-字段”,RowSouce屬性為“課程.課程名”。? 組合框Combo1的Valid事件代碼:
set talk off select 課程 kch=課程號 select 成績
average 成績 to cj for 課程號=kch thisform.text1.value=cj ? “退出”按鈕Command1的Click事件代碼:
thisform.release
(四)小結 【教學后記】
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(8)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
16.要求:(1)編制一個表單完成表文件“學生.dbf”“成績.dbf”內容的查詢顯示功能(2)當用戶在組合框(下拉列表)選擇姓名后,表單將自動顯示對應學生的平均成績(3)按“退出”按鈕時,自動關閉表單。
? 組合框Combo1的RowSouceType屬性為“6-字段”,RowSouce屬性為“學生.姓名”。? 組合框Combo1的Interactivepage事件代碼:
set talk off select 學生 xh=學號 select 成績
average 成績 to cj for 學號=xh thisform.text1.value=cj ? “退出”按鈕Command1的Click事件代碼:
thisform.release
17.要求:(1)編制一個表單完成表文件“學生.dbf”、“成績.dbf”、“課程.dbf”內容的編輯瀏覽顯示功能
(2)三個表文件分別顯示在三個不同的頁面上(3)未被激活的頁面自動設為不可訪問
? Timer1的Interval屬性設置為10000 ? Timer1的Timer事件的代碼:
P=Thisform.PageFrame1.ActivePage P=P+1 IF P>3
P=1 ENDIF
Thisform.PageFrame1.SetAll(”Enabled“,.F.,”Page")Thisform.PageFrame1.Pages(P).Enabled=.T.Thisform.PageFrame1.ActivePage=P
18.要求:(1)編制一個學生成績查詢表單,表單中的顯示學生信息的窗口的指針移動時,在另一個窗口可以自動顯示出對應那個學生所所有成績信息。
*****Form1的init事件代碼: sele 成績 教學時間約
****年**月**日
總第節
審批簽字:
inde on 學號 to xh sele 學生
set rela to 學號into 成績
19.要求:(1)編制一個表單完成表文件“學生.dbf”“成績.dbf”“課程.dbf”內容的編輯瀏覽顯示功能;(2)三個表文件分別顯示在三個不同的頁面上;(3)當在選項按鈕組選擇某個表文件時,頁框中的頁會自動翻頁,即自動翻動為與選擇的表文件對應的頁;(4)未被激活的頁面自動設為不可訪問
*****Form1的init事件代碼: thisform.pageframe1.setall(“enabled”..f.,”page”)thisform.pageframe1.page1.enabled=.t.*****Optiongroup1的click事件代碼: thisform.pageframe1.setall(“enabled”,.f.,”page”)do case
case this.value=1
thisform.pageframe1.page1.enabled=.t.thisform.pageframe1.activepage1=1 case this.value=2
thisform.pageframe1.page2.enabled=.t.thisform.pageframe1.activepage=2 case this.value=3 thisform.pageframe1.page3.enabled=.t.thisform.pageframe1.activepage=3 endcase 20.要求:(1)編制一個小型文本編輯器,界面見下圖;(2)文字信息從鍵盤輸入至edit框;(3)三個單選按鈕分別用于設置“宋體”、“黑體”和“隸書”;(4)三個check按鈕用設置字體的“傾斜”、“加粗”和“下劃線”;(5)字號用微調控件實現
***optiongroup1的click事件代碼: do case case this.value=1 thisform.text1.fontname=”宋體” case this.value=2 thisform.text1.fontname=”楷體” case this.value=3 thisform.text1.fontname=”隸書” endcase ***check1的click事件代碼: if this.value=1 thisform.text1.fontbold=.t.else thisform.text1.fontbold=.f.endif ***check2,3的代碼類似于check1 ***spinner1的upclick事件代碼
thisform.text1.fontsize=thisform.text1.fontsize-1 ***spinner1的downclick事件代碼
thisform.text1.fontsize=thisform.text1.fontsize+1
(四)小結 【教學后記】
第三篇:vf簡答題
一、問答題
1、什么是關系運算?常見的關系運算有哪幾種?(第一章)
參考答案:關系運算是指以關系為對象的關系運算,在關系運算中,變量是關系,運算的結果仍然是關系。
常見的關系運算有選擇運算、投影運算和連接運算三種。
2,什么是數據模型?常用的數據模型有哪幾種?各種數據模型有什么特點?(第一章)
參考答案:數據模型是指具有聯系性的相關數據總是按照一定的組織關系排列,從而構成一定的結構,對這種結構的描述就是數據模型。
常用的數據模型有:層次模型、網狀模型、關系模型。
層次模型以樹形結構表示數據間的關系;網狀模型以網絡結構表示結點間的關系;關系模型以二維表表示數據間的關系。
3、什么是數據庫?什么是數據庫系統?(第一章)
參考答案:數據庫(Data Base)是數據庫系統的核心和管理對象。所謂數據庫,就是以一定的組織方式將相關的數據組織在一起,存放在計算機外存儲器上形成的,能為多個用戶共享的,與應用程序彼此獨立的一組相關數據的集合。
數據庫系統是以數據庫為核心的信息處理系統,它能集中地進行數據管理,也能夠開發、維護應用系統程序。
4、在VFP中,表達式的輸出命令“?” 和“??”有什么區別?數據輸入命令input 和accept的區別是什么?(第三章)
參考答案:使用?命令,顯示結果在下一行輸出,即在輸出之前先換行一次;使用??命令,顯示結果在當前行輸出;假如使用?命令,后面沒有任何表達式,此時輸出一個空行。
Input可以輸入各種數據類型的數據;accept只能輸入字符型數據。
5、在Visual FoxPro 6.0有哪幾種數據類型并說明它們分別對應的關鍵字(請列舉出五個以上)?有哪些類型的表達式?(第三章)
參考答案:有七類數據類型:字符型(C型)、邏輯型(L型)、數值型(N型)、備注型(M型)、日期型(D型)、通用型(G型)、日期時間型(T型)
算術表達式、字符表達式、日期時間表達式、關系表達式、邏輯表達式。
6、在VFP中,對表記錄的操作命令中,邏輯刪除記錄和物理刪除記錄的命令分別是什么?它們有什么區別?(第四章)
參考答案:邏輯刪除記錄的命令是Delete,物理刪除記錄的命令是Pack。區別:邏輯刪除記錄只是在記錄上做一個刪除標記,并不真正刪除記錄,需要時還可恢復。而物理刪除記錄是把做了刪除標記的記錄從表中徹底刪除,不可再恢復。
7、簡述VF中用菜單方式建立一個STUDENT表,通過編輯窗口追加方式向表中添加學生記錄與瀏覽顯示結果的操作步驟。(第四章)
參考答案:建表:文件—新建—新建文件-輸入表名STUDENT-在表設計器窗體定義字段、類型-確定。追加方式輸入學生記錄:
打開STUDENT表—顯示—瀏覽―編輯―顯示-追加-輸入學生記錄—關閉。瀏覽結果:
文件-打開表—顯示—瀏覽。
8、索引的類型有哪幾種?各自有何特征?(第五章)
參考答案:索引有四種:主索引、候選索引、普通索引、唯一索引
主索引要求每一個記錄的索引表達式的值是唯一的,在一個數據庫表中只能有一個主索引。候選索引與主索引一樣要求每一個記錄的索引表達式的值是唯一的,在一個數據表中可以有多個候選索引。
普通索引允許索引表達式的值出現重復值,而唯一索引如果表中記錄的索引表達式的值相同,則只存儲第一個索引表達式的值。1 簡述什么是參照完整性
回答:參照完整性是指關系的值受限于外關鍵字。
2在關系運算中,查找滿足一定條件的元組的運算稱為什么運算?
回答:選擇運算。(關系數據庫的基本運算:選擇:元組的選擇稱為選擇,屬性的選擇稱為投影,連接運算是通過兩個關系共有的屬性連接成一個新的關系。)
3.表達式at(“sd”,”dsdhihsd”,2)=len(“dsfg”)最后返回結果的數據類型是什么? 回答:數據庫表有什么特點?
回答:1.可以支持使用長表名、長字段名,字段名最長為128個字符。2.可以使用指定字段默認值和輸入掩碼。3.可以規定字段級有效性規則和記錄級有效性規則。4.支持主關鍵字、表間永久關系和設置表間的參照完整性。5.支持insert,update,delete觸發器。
***關系數據庫有什么特點?
回答:關系的最基本要求是屬性不可分割;關系中不能有相同的屬性名;同一字段數據類型相同;元組和字段次序無關緊要。
5.SQL語句中修改表結構的命令是什么?(寫出主要命令動詞)回答:alter table1、什么是數據庫管理系統?其基本功能是什么? 答:數據庫管理系統(DBMS)是處于用戶與操作系統之間的一種軟件,其作用是實現對數據庫中的數據的有效組織與管理。其基本功能是:(1)數據定義功能。(2)數據操作功能。(3)控制和管理功能。(4)數據通信功能。
2、VFP的特點是什么?
答:VFP是一種功能強大的可視化編程語言,其特點主要是:(1)功能強大的自含型命令式開發語言。(2)支持面向對象的程序設計。(3)通過COM組件實現應用集成。(4)支持網絡應用。(5)大量使用可視化的輔助工具。
3、分析說明VFP的工作界面的主要組成要素?
答:VFP是采用一種圖形用戶界面的窗口操作軟件,形成WIMP的界面,其主要構成要素包括:
(1)程序窗口。(2)命令窗口。(3)工具窗口。
4、什么是關系模型?VFP建立表結構時基本的字段屬性是什么? 答:所謂關系模型,是指在數據的組織中所構建的行、列交叉的原子類二維表格。
VFP建立表結構時基本的字段屬性包括字段名、字段類型、字段寬度、小數點。
5、什么是常量?什么是變量?并舉例說明常量的表示?
答:常量是指固定不變的數據;變量是指在命令操作和運行中其值允許變化的量。
數據型常量:-300 字符型常量:“ABCD”
日期型常量:ctod(“06/25/09”)邏輯型常量:.t.、.f.6、寫出內存變量的命名基本規則?
答:內存變量的主要命名規則是:(1)以字母或下劃線開頭。(2)由字母、下劃線或數字等組成。(3)至多128個字符。(4)不可與系統保留字同名。
7、寫出VFP中常用子句的范圍的表示及意義?
答:在VFP中常用子句的范圍的表示及意義:(1)all:表示整個數據表。(2)next N:表示從當前開始,到下N條。(3)rest:表示從當前到末尾。(4)record N:表示具體操作第N條。
8、寫出VFP中命令的書寫規則是什么?
答:在VFP中命令的基本書寫規則是:(1)命令動詞、子句與子句、子句內各部分用空格分開,子句位置可任意。(2)命令動詞置于命令開頭,可為前4個字母,大小寫隨意。(3)一條命令長度可達8192個字符,若一行寫不下,以“;”結束。
9、什么是過濾器?并寫出過濾器的應用格式?
答:過濾器是指在VFP命令應用時,將不滿足條件的記錄“隱蔽”起來,即讓記錄從邏輯上消失,基本格式是: Set filter to <過濾>條件
10、什么是記錄定位?并說明絕對定位與相對定位的主要區別? 答:記錄定位是將記錄指針指向待操作的記錄。
絕對定位:是直接將記錄指針指向待操作的記錄的物理位置。
相對定位:是在當前記錄的基礎上改變一個數值,從而使記錄指針指向待操作的記錄位置。
11、簡述索引的概念和種類。
答題要點:索引不改變記錄的物理順序,而是按某個索引關鍵字來建立記錄的邏輯順序。在索引文件中,所有關鍵字值按升序或降序排列,每個值對應一個記錄號,這樣就確定了記錄的邏輯順序。索引可分為復合索引和單索引。
12、什么是查詢?VFP有哪幾種查詢方法?
答題要點:查詢就是按指定條件在表中查找所需的記錄。VFP提供了三種查詢方法:順序查詢、索引查詢和SELECT-SQL查詢。
13、什么是工作區?VFP用什么來表示和區別工作區?
答題要點:工作區是內存的一個區域,VFP提供了32767個工作區,每個工作區只允許打開一個表。VFP可以用編號和別名來表示和區別工作區。
14、簡述關聯的概念和建立關聯的方法。
答題要點:關聯就是使不同工作區的記錄指針臨時建立起一種聯動關系,使一個表的指針移動時另一個表的指針能隨之移動。可在“數據工作期”窗口中建立關聯,也可使用SET RELATION命令建立關聯,此外還可在“數據庫設計器”中建立關聯。
15、什么是SELECT-SQL查詢?如何定制和執行查詢?
答題要點:SELECT-SQL查詢是從SQL移植過來的查詢命令,具有強大的單表和多表查詢功能。可通過“查詢設計器”或“數據庫設計器”定制和執行查詢。
16、什么是數據完整性?在VFP中允許設置哪幾種有效性驗證?
答題要點:數據完整性主要是指數據的正確性和相容性。當用戶在對數據進行的各種操作中發生差錯時,數據庫系統應有一定的檢驗及約束機制,以保證數據的有效性。在VFP中允許設置三級驗證:字段級驗證、記錄級驗證和參照完整性。
17、VFP能提供哪幾種基本的程序控制結構?
答題要點:順序結構、分支結構和循環結構。順序結構按命令的書寫順序依次執行;分支結構能根據指定條件的當前值在兩條或多條程序路徑中選擇一條執行;而循環結構則由指定條件的當前值來控制循環體中的語句序列是否要重復執行。
18、試比較子程序、自定義函數和過程三者的異同。
答題要點:子程序、自定義函數和過程都是可以命名的一個程序段,是功能相關而又相對獨立的模塊。三者定義的格式各有不同,子程序和過程均通過DO命令調用,而自定義函數則主要在表達式中調用。
19、程序調試的目的是什么?程序中常見的錯誤有哪幾種?
答題要點:程序調試的目的是檢查并糾正程序中的錯誤,以保證程序的可靠運行。程序中常見的錯誤有:語法錯誤、超出系統允許范圍的錯誤和邏輯錯誤。
20、什么是目標程序?試寫出幾種VFP目標程序的擴展名。
答題要點:對VFP程序進行編譯就得到目標程序,目標程序是緊湊的非文本文件,運行速度快,并可起到對源程序加密的作用。擴展名為:.FXP、.QPX、.MP等的文件均為目標程序。
第四篇:VF程序設計教學大綱
《VF程序設計》教學大綱
一、課程名稱:《VF程序設計》
課程負責人:袁明蘭
二、學時與學分:48
三、適應專業:外語、建筑設計技術、工程監理、藝術、旅游等專業
四、課程教材:張彥芳等編著《Visual FoxPro程序設計》,中國地質大學出版社,2011年
五、參考教材:蘇忠等.Visual Foxpro 6.0中文版應用與開發.電子工業出版社,2003 楊國才編著《Visual FoxPro程序設計》,重慶大學出版社,2002年
謝膺白.Visual Foxpro 6.0中文版教程.人民郵電出版社,2002 肖金秀.新編Visual Foxpro 6.0應用基礎教程.中國石化出版社,2011
六、課程的性質、目的和任務:
本課程是非計算機專業的主要公共基礎課。
通過本課程的學習,使非計算機專業的學生掌握數據庫的基本概念和VFP的基礎知識,熟練掌握數據庫的基本操作,并能進行初步的程序設計,能應用VFP進行數據庫管理。
七、課程的基本要求:
通過理論教學和實驗教學,達到如下基本要求。
1.了解計算機數據管理的發展、掌握數據系統、關系數據庫的基本概念,掌握面向對象程序設計的概念,理解數據的一致性和完整性。
2.了解Visual FoxPro的發展、特點及安裝,掌握Visual FoxPro 6.0的啟動與關閉。熟悉Visual FoxPro 6.0系統界面,理解其幾種工作方式。了解項目管理器、常用項目元素與文件類型、創建項目文件,及項目管理器的使用。
3.掌握常量與變量、數據類型,了解常用的文件類型,掌握幾種常用函數的應用、運算符與表達式的應用,掌握內存變量的幾種操作,掌握數組的應用。理解Visual FoxPro 6.0命令及命令和子句的使用規則。
4.掌握數據表的基本操作(表結構及字段的基本要素、表的創建和修改[使用表設計器]、表的打開與關閉、數據記錄的輸入、顯示和編輯、錄指針與定位、邏輯與物理刪除表的記錄、記錄的復制與添加、表的索引、表的查詢、表的運算等),掌握多表工作區及其應用。
5.理解數據庫的概念與基本組成、掌握數據庫的基本操作、理解數據庫表的數據完整性、熟練掌握數據庫表之間的關聯、了解參照完整性。
6.理解程序與結構化程序設計的基本概念,掌握程序文件的建立、執行與編輯,掌握程序設計的基本命令,掌握程序的基本控制結構,掌握變量的作用域
與生存期,理解模塊化程序設計方法與模塊化程序設計,掌握子程序和過程與自定義函數及其調用,學會程序的調試,熟練掌握結構化程序設計簡單應用。
7.掌握面向對象的基本概念、掌握對象及其屬性、事件、方法,了解類的創建與使用。
8.熟練掌握表單的創建與管理,掌握猜數游戲設計、計算器設計、學生成績查詢與修改界面設計、軟件登錄界面與權限設計。
9.理解查詢的概念、掌握用查詢設計器創建查詢、創建多表查詢,用查詢向導創建查詢,運行查詢。了解用視圖設計器創建本地視圖、了解用視圖向導創建本地視圖、視圖的使用、利用視圖更新源表數據。
10.了解SQL語言概述、熟練掌握SQL語句對數據表的操作(創建數據表,SQL修改表結構,SQL查詢數據表,SQL對數據表運算,SQL刪除表記錄,SQL更新表的記錄內容)。
11.了解菜單設計器、標準菜單及快捷菜單的設計。了解報表基本概念、報表的數據來源、報表設計器,了解報表的創建(用報表向導創建、用報表設計器創建),了解設置報表(給報表添加帶區、改變報表的列標簽、修改報表表達式、增加表格線、頁面設置、字體設置、布局設置、在報表中使用數據分組、匯總區),了解使用報表(報表命令、報表預覽和打印機設置),了解標簽設計。
12.了解應用需求分析、數據庫與表設計、系統功能模塊設計、菜單設計、用戶界面設計、查詢設計、.報表設計、系統維護設計、系統模塊調試、用項目管理器連編成應用程序、應用程序管理、發布樹、應用程序發布和安裝。
八、課程的主要內容:
㈠ 理論教學 1.數據庫基礎知識 數據庫、數據庫管理系統和數據庫系統的基本概念、數據管理技術的產生和發展;數據庫系統的組成及體系結構;數據庫管理系統(DBMS)的功能;關系模式的基本術語、主要操作和數據完整性約束;面向對象程序設計的基本概念(包括類、對象、事件、方法和屬性等)。
2.Visual FoxPro 系統簡介
Visual FoxPro的發展、特點及安裝、啟動與關閉。Visual FoxPro 6.0系統界面、幾種工作方式,項目管理器、及項目管理器的使用。3.Visual Foxpro應用基礎
常量與變量、數據類型,文件類型、幾種常用函數、運算符與表達式的應用,內存變量的幾種操作,數組的應用,Visual FoxPro 6.0命令及命令和子句的使用規則。
4.數據表的基本操作 數據表的基本操作(表結構及字段的基本要素、表的創建和修改[使用表設計器]、表的打開與關閉、數據記錄的輸入、顯示和編輯、錄指針與定位、邏輯與物理刪除表的記錄、記錄的復制與添加、表的索引、表的查詢、表的運算等),多表工作區及其應用。
5.結構化程序設計
程序與結構化程序設計的基本概念,程序文件的建立、執行與編輯,程序設計的基本命令,程序的基本控制結構,變量的作用域與生存期,模塊化程序設計方法與模塊化程序設計,子程序和過程與自定義函數及其調用,程序的調試。6.數據庫設計
數據庫的概念與基本組成、數據庫設計器的使用、數據庫的建立、打開與關閉(命令)、數據庫表的數據完整性、數據庫表之間的關聯、參照完整性。7.面向對象程序設計初步
面向對象的基本概念、對象及其屬性、事件、方法,類的創建與使用。8.表單與控件
表單的創建與管理,猜數游戲設計、計算器設計、學生成績查詢與修改界面設計、軟件登錄界面與權限設計。9.菜單設計
菜單設計器、標準菜單及快捷菜單的設計。10.查詢與視圖
查詢的概念、用查詢設計器創建查詢、創建多表查詢,用查詢向導創建查詢,運行查詢。用視圖設計器創建本地視圖、用視圖向導創建本地視圖、視圖的使用、利用視圖更新源表數據。SQL語言概述,對數據表的操作(創建(數據庫和)數據表,SQL修改表結構,SQL查詢數據表,SQL對數據表運算,SQL刪除表記錄,SQL更新表的記錄內容)11.報表與標簽設計
查詢的概念、用查詢設計器創建查詢、創建多表查詢,用查詢向導創建查詢,運行查詢。用視圖設計器創建本地視圖、用視圖向導創建本地視圖、視圖的使用、利用視圖更新源表數據。SQL語言概述,對數據表的操作(創建(數據庫和)數據表,SQL修改表結構,SQL查詢數據表,SQL對數據表運算,SQL刪除表記錄,SQL更新表的記錄內容)。12.應用程序的開發與發布過程
應用需求分析、數據庫與表設計、系統功能模塊設計、菜單設計、用戶界面設計、查詢設計、.報表設計、系統維護設計、系統模塊調試、用項目管理器連編成應用程序、應用程序管理、發布樹、應用程序發布和安裝。
九、先修課程:
本課程是非計算機專業的基礎課,其先修課程是計算機文化基礎。
十、考核方式:
理論教學部分占70%,實驗教學部分占30%,理論教學部分集中筆試,實驗教學部分以完成16個實驗和上機考試進行考核。
十一、學時分配:
講授: 48 學時
1.數據庫基礎知識
2學時 2.Visual FoxPro 系統簡介
2學時 3.Visual Foxpro應用基
4學時
4.數據表的基本操作
10學時 5.程序設計
14學時 6.數據庫設計
1學時 7.面向對象程序設計初步
2學時 8.表單與控件
6學時 9.菜單設計
1學時 10.查詢與視圖
2學時 11.報表與標簽設計 1學時 12.應用程序的開發與發布過程 1
學時
第五篇:VF基礎教案
第2章Visual FoxPro 6.0概述
2.1 Visual FoxPro的安裝、啟動與關閉 2.1.1 Visual FoxPro 6.0 的安裝
中文Visual FoxPro 可以從CD-ROM或網絡上安裝。以下介紹三種從CD-ROM上安裝Visual FoxPro 的方法。
1.直接啟動CD-ROM
2.直接運行安裝程序
3.使用Windows 安裝 2.1.2 Visual FoxPro 6.0的啟動與關閉
一、Visual FoxPro 6.0的啟動
啟動Visual FoxPro有多種方法,可采用以下三種方式之一。
1.從“開始”菜單啟動
2.從“運行”對話框中啟動
3.從資源管理器中啟動
4.雙擊Visual Foxpro6.0快捷圖標
二、Visual FoxPro 6.0的退出
(1)在Microsoft Visual FoxPro主菜單中,打開“文件”菜單,選擇“退出”選項;
(2)按Alt+F4組合鍵;
(3)按Ctrl+Alt+Del組合鍵,進入“關閉程序”窗口,按“結束任務”按鈕;
(4)在Microsoft Visual FoxPro的系統環境窗口,單擊其右上角的“退出”按鈕;
(5)在“命令”窗口,輸入命令Quit。2.2 Visual FoxPro 6.0系統運行環境的配置
Visual FoxPro系統環境的配置,決定了Visual FoxPro系統的操作環境和工作方式。
單擊“工具”-> “選項”可以打開選項選窗口,在“選項”窗口中,有12種不同類別的環境選項卡,用戶可以根據操作的需要通過“選項”窗口中的各種選項卡,確定或修改設置每一個參數,從而確定Visual FoxPro的系統環境.2.2.1 設置默認工作目錄
VF有其默認的工作目錄,就是系統文件所在的VF6.0目錄,但是,為了管理,用戶最好還是設置自己的工作目錄以保存所建的文件 設置默認路徑的方法: “工具”->“選項”->文件位置 使用命令設置:
SET DEFA TO <默認路徑> 功能:設置默認路徑 例:
SET DEFA TO D:WMQ SET DEFA TO E:200723 2.2.2 設置日期的表示格式 設置日期時間格式: “工具”->“選項”->“區域”
2.3 Visual FoxPro 6.0的系統窗口
Visual FoxPro的界面
Visual FoxPro界面,是由標題欄、菜單欄、工具欄、工作區、狀態欄和命令窗口組成的。
一、標題欄
標題欄位于屏幕界面的第一行,它包含系統程序圖標、主屏幕標題、最小化按鈕、最大化按鈕和關閉按鈕5個對象。
二、菜單欄
菜單欄位于屏幕的第二行,它包含文件、編輯、顯示、格式、工具、程序、窗口和幫助8個菜單選項。
當單擊其中一個菜單選項時,就可以打開一個對應的“下拉式”菜單,在該“下拉式”菜單下,通常還有若干個子菜單選項,當選擇其中一個子菜單選項時,就可以執行一個操作。
三、工具欄
Visual FoxPro系統提供了11種常用的工具欄:
(1)常用工具欄(2)布局工具欄
(3)表單控件工具欄(4)表單設計器工具欄
(5)查詢設計器工具欄(6)視圖設計器工具欄
(7)數據庫設計器工具欄(8)報表控件工具欄
(9)報表設計器工具欄(10)調色板工具欄
(11)打印預覽工具欄
四、命令窗口
命令窗口位于菜單欄和狀態欄之間,是Visual FoxPro系統命令執行、編輯的窗口。在命令窗口中,可以輸入命令實現對數據庫的操作管理;也可以用各種編輯工具對操作命令進行修改、插入、刪除、剪切、拷貝、粘貼等操作;還可以在此窗口建立命令文件并運行命令文件。
在“窗口”菜單下,選擇“隱藏”,可以關閉命令窗口;選擇“命令窗口”,可以彈出命令窗口。
五、工作區與狀態行
狀態行位于屏幕的最底部,用于顯示某一時刻的管理數據的工作狀態。(1)Set Status off/ on,可控制屏幕上的狀態行是否出現。
(2)如果當前工作區中沒有表文件打開,狀態行的內容是空白;如果當前工作區中有表文件打開,狀態行顯示表名、表所在的數據庫名、表中當前記錄的記錄號、表中的記錄總數、表中的當前記錄的共享狀態等內容。
2.4 可視化管理工具
1、設計器
通過設計器可以方便地對表、表單、數據庫、查詢和報表等進行管理。
2、向導
通過用戶對問題的回答或對選項的選擇,向導將創建相應的文件或執行某一項任務。
3、生成器 是一種可視化的輔助工具,用來幫助擁護按要求設計各種控件的表現形式。2.5 Visual Foxpro 6.0的工作方式 Visual FoxPro 6.0提供了兩種工作方式:
? ? 交互方式(可執行方式和可視化操作方式)程序方式
2.5.1 交互方式
包括命令執行方式和可視化操作方式。
1、命令執行方式
Visual FoxPro 6.0提供命令方式主要有兩種目的,一是對數據庫的操作使用命令比使用菜單或工具欄要快捷而靈活;另一方面,熟悉命令操作是程序開發的基礎。
Visual FoxPro 6.0提供了命令窗口用于輸入執行命令。
Visual FoxPro 6.0中的命令采用近似于自然語言的結構。
Visual FoxPro 6.0中的命令不區分大小寫,即命令可以用大寫字母也可以用小寫字母書寫。另外,對于較長的命令可以只輸入命令的前四個字母。
Foxpro提供了多條命令,命令中常出現的一些符號有:(P19)
<....> 必選項
[....]
可選項
...|... 擇一選項 這些符號在實際使用時不必輸入. 命令的一般格式為:
命令動詞 [<范圍>][fields<字段名表>][for <條件>] 其中:
命令動詞:決定此命令的功能,一般為英文動詞. 范圍:表示記錄的操作范圍,有]四種形式:
ALL 表示對數據庫中的所有記錄進行操作。?
RECORD N
表示僅對第N條記錄進行操作 ?
NEXT N 表示從當前記錄開始共N個記錄
REST
表示從當前記錄開始到文件結束的所有記錄
Fileds:說明數據庫的字段名稱,不選此項,則表示選擇所有字段 命令書寫規則 ? ? ? ? ? 任何命令必須以命令動詞開頭, 大小寫不限,其后的各項順序不限。各子句之間用空格分隔。
命令可縮寫成前4個字母,但不提倡
一行寫不下時,在行末用續行符“;”,并在下行繼續書寫 一行只能寫一條命令語句
例如,顯示xsda數據表中所有不住校的女生的姓名、年齡
use xsda
list all fields 姓名,年齡
for 住校否=.F.and 性別=’女’
2、可視化操作方式
可視化操作方式包括:菜單方式、設計器方式、向導方式。
在VisualFoxpro系統中,通過菜單、窗口、對話框、工具欄等圖形界面,可以直接操作數據表、視圖、查詢、表單、報表等,并以窗口的方式把結果顯示給用戶。
2.5.2 程序執行方式
Visual FoxPro 6.0提供了一個程序編輯器,可以使用MODIFY COMMAND 命令打開程序編輯器,或者從“文件”菜單中選擇“新建”命令,在彈出的“新建”對話框中選擇“程序”單選項,最后單擊“新建文件”按鈕即可打開程序編輯器。
2.6 Visual Foxpro 6.0的主要性能指標 主要性能指標有:
1、每個數據庫最多記錄數為10億個
2、每條記錄可包含的字段個數最多為225個
3、每條記錄最多字符數為655000個字節
4、字段型字段最大寬度(即最多可容納的字符數)為254個字節。
5、數值型字段最大寬度為20位,精度為16位
6、有32767個工作區,可同時打開的數據庫文件最多32767個。
7、可使用的內存變量默認總數位256個,最多為65000個。最大數組個數為65000個,每個數組的最多的元素數為65000個。