VFP 課件 第11部分(多表程序及表的多重循環(huán))zxl.ppt_第1頁
VFP 課件 第11部分(多表程序及表的多重循環(huán))zxl.ppt_第2頁
VFP 課件 第11部分(多表程序及表的多重循環(huán))zxl.ppt_第3頁
VFP 課件 第11部分(多表程序及表的多重循環(huán))zxl.ppt_第4頁
VFP 課件 第11部分(多表程序及表的多重循環(huán))zxl.ppt_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Visual Foxpro 6.0,程序設(shè)計基礎(chǔ),重慶工商大學(xué)計算機學(xué)院計算機基礎(chǔ)教研室,作業(yè)中的問題,、建立關(guān)聯(lián)的步驟 、上機成績=“缺考” or “不及格” 、replace all成績合格否 with “T”; for 筆試成績=60 and 上機成績=優(yōu)秀 or 上機成績=及格,第十一講 多表程序及表的多重循環(huán),多表程序 表的多重循環(huán),內(nèi)容提要,多表程序,例(實驗指導(dǎo)書P35):根據(jù)如下兩個數(shù)據(jù)表,分別設(shè)計程序完成以下功能。,輸入課程名,查詢該課程授課教師姓名和職稱; 統(tǒng)計每位教師總的課時費。,kc.dbf,js.dbf,方法一: clear accept請輸入查詢課程名稱: to k

2、cm ?課程名:+kcm select 姓名 as 教師姓名,職稱 from js,kc ; where 職工號=授課教師 and 課程名=kcm to screen return,方法二: clear set safety off sele 1 use js index on 職工號 tag zgh sele 2 use kc set rela to 授課教師 into js accept請輸入查詢課程名稱: to kcm ?課程名:+kcm ?教師姓名 職稱 scan for 課程名=kcm ?a.姓名,space(4),a.職稱 endscan close all set safety

3、on return, 方法一: clear sele 姓名 as 教師姓名,sum(學(xué)時數(shù))*單位課時費 as 課時費 ; from js inner join kc on 職工號=授課教師; group by 授課教師 return,方法二: clear set safety off sele 1 use kc index on 授課教師 tag skjs total on 授課教師 to zks use zks index on 授課教師 to skjs sele 2 use js set rela to 職工號 into a ?教師姓名 課時費 scan ?姓名,a.學(xué)時數(shù)*單位課時費

4、endscan close all set safety on return,例:有一職工代碼表(ZD.DBF),人事信息表(RS.DBF),ZD.DBF 代碼 職稱 013 助理工程師 015 技術(shù)工人 002 工程師 001 高工,RS.DBF 編號 姓名 性別 職稱 基本工資 工齡工資 扣款 實發(fā)工資 1041 趙娟 女 013 113.00 13.00 25.70 5101 駱藝 男 002 150.00 21.00 31.51 1030 沈崢 女 015 87.00 5.00 11.00 4103 劉芳 女 001 180.00 25.00 45.60 5130 楊山 男 002 1

5、50.00 15.00 24.00 1025 劉柳 男 013 113.00 8.00 15.00,編一個程序,完成以下任務(wù): 計算實發(fā)工資(實發(fā)工資=基本工資+工齡工資-扣款)并填入RS.DBF中。 統(tǒng)計各類職稱的基本工資,工齡工資,扣款,實發(fā)工資總數(shù)。 顯示統(tǒng)計結(jié)果,其中統(tǒng)計表中“高工,工程師,助理工程師,技術(shù)工人”等職稱名字必須通過職工代碼表得到,并以代碼的索引順序顯示,其格式如下: 基本工資 工齡工資 扣款 實發(fā)工資 高工 . . . . 工程師 . . . . . . . . 合計 . . . .,clea clea all set talk off set safe off sel

6、e 1 use rs replace all 實發(fā)工資 with 基本工資+工齡工資-扣款 inde on 職稱 tag zcdm total on 職稱 to hz use hz inde on 職稱 tag zcdm sele 2 use zd set rela to 代碼 into hz,該程序涉及到幾個表,?,RS.DBF HZ.DBF ZD.DBF,一對一關(guān)系,匯總,? 基本工資 工齡工資 扣款 實發(fā)工資 scan ?職稱,hz.基本工資,hz.工齡工資,hz.扣款,hz.實發(fā)工資 endscan ?合計,jb,gl,kk,sf clos all set talk on set sa

7、fe on retu,store 0 to jb,gl,kk,sf,sum hz.基本工資,hz.工齡工資,hz.扣款,hz. 實發(fā)工資 to jb,gl,kk,sf,jb=jb+ hz.基本工資 gl=gl+ hz.工齡工資 kk=kk+ hz.扣款 sf=sf+ hz.實發(fā)工資,inde on 代碼 tag dm where stu.學(xué)號=fam.學(xué)號 and 部門=bm to screen wait 是否還要繼續(xù)?(y/n) to yn enddo retu,(0801)設(shè)有一學(xué)生成績表STU.DBF對“編號”已經(jīng)建立復(fù)合索引。其內(nèi)容如下: 記錄號編號 高數(shù) 外語 計算機 1070112

8、0909878 20701128857681 30702003778767 40702010506087 50710010657355 60713108768090 學(xué)生編號的含義是:1-2位代表年級,3-4位代表專業(yè),最后3位代表一個專業(yè)全部同學(xué)的順序號。以下程序的功能是分組匯總各專業(yè)同學(xué)各門功課的總成績和三門課程的總成績,按順序輸出它們。請?zhí)羁胀瓿伞?SET TALK OFF USE STU SET ORDER TO ? 專業(yè)編號高數(shù)外語計算機總分 DO WHILE not eof() STORE 0 TO K1,K2,K3 BH=substr(編號,3,2) DO WHILE subst

9、r(編號,3,2)=BH AND K1=K1+高數(shù) K2=K2+外語 K3=K3+計算機 SKIP ENDDO ? ENDDO USE,tag 編號,BH,K1,K2,K3,K1+K2+K3,not eof(),(0802)設(shè)有職工表和獎金表的表結(jié)構(gòu)如下: 職工表(zg.dbf):職工號(C,7)(無重復(fù)值),姓名(C,6),工作日期(D)。 獎金表(jj.dbf):職工號(C,7)(無重復(fù)值),部門號(C,4)(有重復(fù)值),獎金(N,5,1)。 按如下要求編寫一個程序: 根據(jù)以上兩個表,可以通過鍵盤任意輸入一個部門號(按回車鍵結(jié)束),按獎金從高到低顯示該部門的職工姓名、工作年限(=系統(tǒng)當前日

10、期的年份值-工作日期的年份值)及獎金,顯示格式如下: 職工姓名 工作年限 獎金 ,解法一: clear clear all set safe off select 1 use zg inde on 職工號 tag xh (2分) select 2 use jj set relation to 職工號 into zg inde on 獎金 tag jj desc (1分) do while .t. accept 輸入部門號: to bmh if len(allt(bmh)=0 (3分) exit endif ? 職工姓名 工作年限 獎金,Scan for 部門號=bmh (4分) ?zg.姓名,

11、 year(date()-year(zg.工作日期),獎金 Endscan Enddo close all set safe on return,解法二: clear do while .t. accept 輸入部門號: to bmh (3分) if len(allt(bmh)=0 exit endif select 姓名,year(date()-year(zg.工作日期) as工作年限,獎金 from zg,jj; (3分)where zg.職工號=jj.職工號 and 部門號=bmh; (5分) order by 獎金 desc (7分) Enddo,(0702)已知兩個數(shù)據(jù)表:學(xué)生檔案表

12、XSDA.dbf,有學(xué)號、姓名、專業(yè)班級(均為字符型)等字段和學(xué)生成績表XSCJ.dbf,有學(xué)號(有重復(fù)值)、課程名、成績(數(shù)值型)等字段。 編寫一程序,通過反復(fù)輸入學(xué)生的學(xué)號(輸入回車鍵退出),查詢學(xué)生的姓名,專業(yè)班級,課程名以及成績情況。,方法1:利用VFP語言實現(xiàn) clear set safety off clear all sele 1 use XSDA index on 學(xué)號 tag xh sele 2 use XSCJ set relation to 學(xué)號 into xsda,do while .T. accept 請輸入學(xué)生的學(xué)號: to xh if len(alltrim(xh

13、)=0 exit endif ?姓名 專業(yè)班級 課程名 成績 scan for 學(xué)號=xh ?xsda.姓名,xsda.專業(yè)班級,課程名,成績 endscan enddo close all set safety on return,方法2:利用select-sql語言實現(xiàn) Close all clear Do while .T. accept 請輸入學(xué)生的學(xué)號: to xh if len(alltrim(xh)=0 exit endif Select 姓名,專業(yè)班級,課程名,成績; from xscj,xsda where xsda.學(xué)號=xh and xscj.學(xué)號=xsda.學(xué)號 to

14、screen enddo,(0701)、有營業(yè)員數(shù)據(jù)表文件YYY.DBF和日銷售數(shù)據(jù)表文件RXS.DBF *YYY.DBF 營業(yè)員代碼 姓名 性別 101 天涯 女 102 海角 男 103 風(fēng)聲 男 水起 女 *RXS.DBF 營業(yè)員代碼 品名 數(shù)量 單價 營業(yè)額 101 電視 3 1230.40 0000.00 102 電話 4 223.00 0000.00 101 電扇 5 334.00 0000.00 103 電話 3 223.00 0000.00 102 電視 1 1230.40 0000.00,編程要求:(1)計算出RXS.DBF中的營業(yè)額字段的值。注:營業(yè)額=數(shù)量*單價 (2)根據(jù)用戶輸入的營業(yè)員代碼查詢某個營業(yè)員的全天營業(yè)額,按如下格式顯示: 代碼:101 姓名:天涯 性別: 女 品名 營業(yè)額 電視 3691.20 電扇 1670.00 營業(yè)額: 5361.20,clear select 1 use rxs replace all 營業(yè)額 with 數(shù)量*單價 select 2 use yyy index on 營業(yè)員代碼 tag dm select rxs set relation to 營業(yè)員代碼 into yyy accept “輸入營業(yè)

溫馨提示

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

評論

0/150

提交評論