第4組實(shí)驗(yàn)題
上機(jī)步驟和操作說明
(1)Windows NT用戶注冊,用戶名為個人賬號,口令欄直接按回車。
(2)進(jìn)入Visual FoxPro(VFP)系統(tǒng)環(huán)境,中途不要退出。
(3)在VFP命令窗口中鍵入以下兩條命令:
SET DEFAULT TO Z:\<目錄名> (目錄名即你的賬號,目錄已建好)
SET SAFETY OFF
第一條命令的目的是設(shè)置你的缺省工作目錄,這樣,操作命令中就不要再帶路徑名。
(4)按題目要求創(chuàng)建數(shù)據(jù)庫,錄入數(shù)據(jù),編寫程序。
(5)在程序編輯器窗口錄入、修改程序,編輯完畢,保存后再執(zhí)行。
(6)第3題和第4題的各小題,都要分別保存為一個程序文件。文件名要用“賬號+題號”命名,例如:C100_3,表示是C100賬戶的第3題的程序。C108_4_2表示是C108賬戶的第4題的第(2)小題的程序。
(7)做題次序不限,實(shí)現(xiàn)方法不限。題目中所謂的“表”即指“數(shù)據(jù)庫文件”。為減少錄入的負(fù)擔(dān),表名、字段名、變量名等盡量不要用漢字,可用英文或漢語拼音。
現(xiàn)有關(guān)于科研項(xiàng)目管理數(shù)據(jù)庫的模式如下:
項(xiàng)目(項(xiàng)目號,項(xiàng)目名,領(lǐng)域,經(jīng)費(fèi),負(fù)責(zé)人)
人員(職工號,姓名,出生日期,職稱)
承擔(dān)(職工號,項(xiàng)目號,業(yè)績評分)
項(xiàng)目與人員是多對多聯(lián)系。一個項(xiàng)目只設(shè)一名負(fù)責(zé)人。一個研究領(lǐng)域可有多個研究項(xiàng)目。假設(shè)有數(shù)據(jù)倉庫(DW)、空間信息(SI)、人工智能(AI)、網(wǎng)絡(luò)(NW)等領(lǐng)域。
要求完成如下操作:
1.按題目要求建立表結(jié)構(gòu),各表各個字段的名字、數(shù)據(jù)類型、長度等根據(jù)語義和查詢的需要自行決定。根據(jù)查詢需要建立索引。 (15分)
2.利用你所熟悉的方法向各表錄入適量的、滿足題目需要的數(shù)據(jù)。各數(shù)據(jù)項(xiàng)的取值范圍應(yīng)該合理、有效,并與查詢要求相呼應(yīng)。 (10分)
3.編寫一個按項(xiàng)目經(jīng)費(fèi)查找項(xiàng)目信息的查詢程序。允許用戶在鍵入的經(jīng)費(fèi)數(shù)值前加<、=、>三種不同的比較運(yùn)算符,以表示不同的查詢要求。如果查到,則顯示滿足條件的記錄;如果查不到,則顯示:“無滿足條件的項(xiàng)目!”。要求不退出本程序能繼續(xù)執(zhí)行查詢操作。(20分)
4.用FoxPro語言或SQL語言編寫程序完成以下查詢。在求解過程中有的題目可能需要建立若干臨時(shí)表。(以下三題依次為15分、20分、20分)
(1)列出項(xiàng)目清單,要包含所有項(xiàng)目的項(xiàng)目號、項(xiàng)目名、領(lǐng)域和經(jīng)費(fèi)信息,且在最后一行顯示:
數(shù)據(jù)倉庫和人工智能領(lǐng)域且經(jīng)費(fèi)在25萬元以上的項(xiàng)目有 xx 個。
(2)列出50歲以下的教授的職工號、姓名、出生日期和所承擔(dān)項(xiàng)目的總業(yè)績分,并按總業(yè)績分的降序排列。
(3)計(jì)算各個領(lǐng)域項(xiàng)目參加者的平均年齡,存入一個新表,其結(jié)構(gòu)如下:
領(lǐng)域 平均年齡
DW
SIS
……
第4組實(shí)驗(yàn)題
現(xiàn)有關(guān)于科研項(xiàng)目管理數(shù)據(jù)庫的模式如下:
項(xiàng)目(項(xiàng)目號,項(xiàng)目名,領(lǐng)域,經(jīng)費(fèi),負(fù)責(zé)人)
人員(職工號,姓名,出生日期,職稱)
承擔(dān)(職工號,項(xiàng)目號,業(yè)績評分)
項(xiàng)目與人員是多對多聯(lián)系。一個項(xiàng)目只設(shè)一名負(fù)責(zé)人。一個研究領(lǐng)域可有多個研究項(xiàng)目。假設(shè)有數(shù)據(jù)倉庫(DW)、空間信息(SI)、人工智能(AI)、網(wǎng)絡(luò)(NW)等領(lǐng)域。
要求完成如下操作:
1.按題目要求建立表結(jié)構(gòu),各表各個字段的名字、數(shù)據(jù)類型、長度等根據(jù)語義和查詢的需要自行決定。根據(jù)查詢需要建立索引。(15分)
答:見第4組實(shí)驗(yàn)題答案文件夾。
2.利用你所熟悉的方法向各表錄入適量的、滿足題目需要的數(shù)據(jù)。各數(shù)據(jù)項(xiàng)的取值范圍應(yīng)該合理、有效,并與查詢要求相呼應(yīng)。(10分)
答:見第4組實(shí)驗(yàn)題答案文件夾。
3.編寫一個按項(xiàng)目經(jīng)費(fèi)查找項(xiàng)目信息的查詢程序。允許用戶在鍵入的經(jīng)費(fèi)數(shù)值前加<、=、>三種不同的比較運(yùn)算符,以表示不同的查詢要求。如果查到,則顯示滿足條件的記錄;如果查不到,則顯示:“無滿足條件的項(xiàng)目!”。要求不退出本程序能繼續(xù)執(zhí)行查詢操作。(20分)
答:程序清單如下
clear
set talk off
use 第4組實(shí)驗(yàn)題答案文件夾\xiangmu
act=.t.
do while act
clear
ch=“ ”
n=0
@ 1,5 say “請輸入待查詢項(xiàng)目的經(jīng)費(fèi)信息(格式:n):”
@ 2,5 get ch picture “x” valid ch=“<” or ch=“=” or ch=“>”
@ 2,6 get n picture “9999999.99”
read
go top
clear
do case
case ch=“=”
scan for 經(jīng)費(fèi)=n
display
endscan
case ch=“<”
scan for 經(jīng)費(fèi) display
endscan
case ch=“>”
scan for 經(jīng)費(fèi)>n
display
endscan
endcase
go top
n1=經(jīng)費(fèi)
n2=經(jīng)費(fèi)
do while not eof()
if n1>經(jīng)費(fèi)
n1=經(jīng)費(fèi)
endif
if n2<經(jīng)費(fèi)
n2=經(jīng)費(fèi)
endif
skip
enddo
if (nn2)
@ row()+1,5 say “無滿足條件的項(xiàng)目”
endif
@ row()+1,5 say “還繼續(xù)查找嗎(Y/N)?” get act picture “L”
read
enddo
use
clear
set talk on
return
4.用FoxPro語言或SQL語言編寫程序完成以下查詢。在求解過程中有的題目可能需要建立若干臨時(shí)表。(以下三題依次為15分、20分、20分)
(1)列出項(xiàng)目清單,要包含所有項(xiàng)目的項(xiàng)目號、項(xiàng)目名、領(lǐng)域和經(jīng)費(fèi)信息,且在最后一行顯示:
數(shù)據(jù)倉庫和人工智能領(lǐng)域且經(jīng)費(fèi)在25萬元以上的項(xiàng)目有 xx 個。
答:程序清單如下
clear
set talk off
use 第4組實(shí)驗(yàn)題答案文件夾\xiangmu
count for (領(lǐng)域=“數(shù)據(jù)倉庫” or 領(lǐng)域=“人工智能”) and (經(jīng)費(fèi)>250000) to n1
list off 項(xiàng)目號,項(xiàng)目名,領(lǐng)域,經(jīng)費(fèi)
? “ 數(shù)據(jù)倉庫和人工智能領(lǐng)域且經(jīng)費(fèi)在25萬元以上的項(xiàng)目有”+str(n1,2)+“個”
use
set talk on
return
(2)列出50歲以下的教授的職工號、姓名、出生日期和所承擔(dān)項(xiàng)目的總業(yè)績分,并按總業(yè)績分的降序排列。
答:程序清單如下
clear
set talk off
select B.職工號 as 職工號,B.姓名 as 姓名,b.出生日期 as 出生日期,sum(C.業(yè)績評分) as 總業(yè)績分;
from 第4組實(shí)驗(yàn)題答案文件夾\xiangmu A, 第4組實(shí)驗(yàn)題答案文件夾\renyuan B,;
第4組實(shí)驗(yàn)題答案文件夾\chengdan C;
where (A.項(xiàng)目號=C.項(xiàng)目號) and (C.職工號=B.職工號) and (B.職稱=“教授”) ;
and (year(date())-year(B.出生日期))<50;
group by B.姓名;
into table 第4組實(shí)驗(yàn)題答案文件夾\zongfen
use 第4組實(shí)驗(yàn)題答案文件夾\zongfen
index on -總業(yè)績分 to 第4組實(shí)驗(yàn)題答案文件夾\zongfen0
list off 職工號,姓名,出生日期,總業(yè)績分
close databases
set talk on
return
(3)計(jì)算各個領(lǐng)域項(xiàng)目參加者的平均年齡,存入一個新表,其結(jié)構(gòu)如下:
領(lǐng)域 平均年齡
DW
SIS
……
答:程序清單如下
clear
set talk off
select b.職工號 as 職工號,a.領(lǐng)域 as 領(lǐng)域,(year(date())-year(b.出生日期)) as 年齡;
from 第4組實(shí)驗(yàn)題答案文件夾\xiangmu a, 第4組實(shí)驗(yàn)題答案文件夾\renyuan b,;
第4組實(shí)驗(yàn)題答案文件夾\chengdan c;
where a.項(xiàng)目號=c.項(xiàng)目號 and c.職工號=b.職工號;
into cursor tmp
select tmp.領(lǐng)域 as 領(lǐng)域,avg(tmp.年齡) as 平均年齡;
from tmp;
group by tmp.領(lǐng)域;
into table 第4組實(shí)驗(yàn)題答案文件夾\pingjun
close databases
use 第4組實(shí)驗(yàn)題答案文件夾\pingjun
list off
use
set talk on
return
上機(jī)步驟和操作說明
(1)Windows NT用戶注冊,用戶名為個人賬號,口令欄直接按回車。
(2)進(jìn)入Visual FoxPro(VFP)系統(tǒng)環(huán)境,中途不要退出。
(3)在VFP命令窗口中鍵入以下兩條命令:
SET DEFAULT TO Z:\<目錄名> (目錄名即你的賬號,目錄已建好)
SET SAFETY OFF
第一條命令的目的是設(shè)置你的缺省工作目錄,這樣,操作命令中就不要再帶路徑名。
(4)按題目要求創(chuàng)建數(shù)據(jù)庫,錄入數(shù)據(jù),編寫程序。
(5)在程序編輯器窗口錄入、修改程序,編輯完畢,保存后再執(zhí)行。
(6)第3題和第4題的各小題,都要分別保存為一個程序文件。文件名要用“賬號+題號”命名,例如:C100_3,表示是C100賬戶的第3題的程序。C108_4_2表示是C108賬戶的第4題的第(2)小題的程序。
(7)做題次序不限,實(shí)現(xiàn)方法不限。題目中所謂的“表”即指“數(shù)據(jù)庫文件”。為減少錄入的負(fù)擔(dān),表名、字段名、變量名等盡量不要用漢字,可用英文或漢語拼音。
現(xiàn)有關(guān)于科研項(xiàng)目管理數(shù)據(jù)庫的模式如下:
項(xiàng)目(項(xiàng)目號,項(xiàng)目名,領(lǐng)域,經(jīng)費(fèi),負(fù)責(zé)人)
人員(職工號,姓名,出生日期,職稱)
承擔(dān)(職工號,項(xiàng)目號,業(yè)績評分)
項(xiàng)目與人員是多對多聯(lián)系。一個項(xiàng)目只設(shè)一名負(fù)責(zé)人。一個研究領(lǐng)域可有多個研究項(xiàng)目。假設(shè)有數(shù)據(jù)倉庫(DW)、空間信息(SI)、人工智能(AI)、網(wǎng)絡(luò)(NW)等領(lǐng)域。
要求完成如下操作:
1.按題目要求建立表結(jié)構(gòu),各表各個字段的名字、數(shù)據(jù)類型、長度等根據(jù)語義和查詢的需要自行決定。根據(jù)查詢需要建立索引。 (15分)
2.利用你所熟悉的方法向各表錄入適量的、滿足題目需要的數(shù)據(jù)。各數(shù)據(jù)項(xiàng)的取值范圍應(yīng)該合理、有效,并與查詢要求相呼應(yīng)。 (10分)
3.編寫一個按項(xiàng)目經(jīng)費(fèi)查找項(xiàng)目信息的查詢程序。允許用戶在鍵入的經(jīng)費(fèi)數(shù)值前加<、=、>三種不同的比較運(yùn)算符,以表示不同的查詢要求。如果查到,則顯示滿足條件的記錄;如果查不到,則顯示:“無滿足條件的項(xiàng)目!”。要求不退出本程序能繼續(xù)執(zhí)行查詢操作。(20分)
4.用FoxPro語言或SQL語言編寫程序完成以下查詢。在求解過程中有的題目可能需要建立若干臨時(shí)表。(以下三題依次為15分、20分、20分)
(1)列出項(xiàng)目清單,要包含所有項(xiàng)目的項(xiàng)目號、項(xiàng)目名、領(lǐng)域和經(jīng)費(fèi)信息,且在最后一行顯示:
數(shù)據(jù)倉庫和人工智能領(lǐng)域且經(jīng)費(fèi)在25萬元以上的項(xiàng)目有 xx 個。
(2)列出50歲以下的教授的職工號、姓名、出生日期和所承擔(dān)項(xiàng)目的總業(yè)績分,并按總業(yè)績分的降序排列。
(3)計(jì)算各個領(lǐng)域項(xiàng)目參加者的平均年齡,存入一個新表,其結(jié)構(gòu)如下:
領(lǐng)域 平均年齡
DW
SIS
……
第4組實(shí)驗(yàn)題
現(xiàn)有關(guān)于科研項(xiàng)目管理數(shù)據(jù)庫的模式如下:
項(xiàng)目(項(xiàng)目號,項(xiàng)目名,領(lǐng)域,經(jīng)費(fèi),負(fù)責(zé)人)
人員(職工號,姓名,出生日期,職稱)
承擔(dān)(職工號,項(xiàng)目號,業(yè)績評分)
項(xiàng)目與人員是多對多聯(lián)系。一個項(xiàng)目只設(shè)一名負(fù)責(zé)人。一個研究領(lǐng)域可有多個研究項(xiàng)目。假設(shè)有數(shù)據(jù)倉庫(DW)、空間信息(SI)、人工智能(AI)、網(wǎng)絡(luò)(NW)等領(lǐng)域。
要求完成如下操作:
1.按題目要求建立表結(jié)構(gòu),各表各個字段的名字、數(shù)據(jù)類型、長度等根據(jù)語義和查詢的需要自行決定。根據(jù)查詢需要建立索引。(15分)
答:見第4組實(shí)驗(yàn)題答案文件夾。
2.利用你所熟悉的方法向各表錄入適量的、滿足題目需要的數(shù)據(jù)。各數(shù)據(jù)項(xiàng)的取值范圍應(yīng)該合理、有效,并與查詢要求相呼應(yīng)。(10分)
答:見第4組實(shí)驗(yàn)題答案文件夾。
3.編寫一個按項(xiàng)目經(jīng)費(fèi)查找項(xiàng)目信息的查詢程序。允許用戶在鍵入的經(jīng)費(fèi)數(shù)值前加<、=、>三種不同的比較運(yùn)算符,以表示不同的查詢要求。如果查到,則顯示滿足條件的記錄;如果查不到,則顯示:“無滿足條件的項(xiàng)目!”。要求不退出本程序能繼續(xù)執(zhí)行查詢操作。(20分)
答:程序清單如下
clear
set talk off
use 第4組實(shí)驗(yàn)題答案文件夾\xiangmu
act=.t.
do while act
clear
ch=“ ”
n=0
@ 1,5 say “請輸入待查詢項(xiàng)目的經(jīng)費(fèi)信息(格式:
@ 2,5 get ch picture “x” valid ch=“<” or ch=“=” or ch=“>”
@ 2,6 get n picture “9999999.99”
read
go top
clear
do case
case ch=“=”
scan for 經(jīng)費(fèi)=n
display
endscan
case ch=“<”
scan for 經(jīng)費(fèi)
endscan
case ch=“>”
scan for 經(jīng)費(fèi)>n
display
endscan
endcase
go top
n1=經(jīng)費(fèi)
n2=經(jīng)費(fèi)
do while not eof()
if n1>經(jīng)費(fèi)
n1=經(jīng)費(fèi)
endif
if n2<經(jīng)費(fèi)
n2=經(jīng)費(fèi)
endif
skip
enddo
if (n
@ row()+1,5 say “無滿足條件的項(xiàng)目”
endif
@ row()+1,5 say “還繼續(xù)查找嗎(Y/N)?” get act picture “L”
read
enddo
use
clear
set talk on
return
4.用FoxPro語言或SQL語言編寫程序完成以下查詢。在求解過程中有的題目可能需要建立若干臨時(shí)表。(以下三題依次為15分、20分、20分)
(1)列出項(xiàng)目清單,要包含所有項(xiàng)目的項(xiàng)目號、項(xiàng)目名、領(lǐng)域和經(jīng)費(fèi)信息,且在最后一行顯示:
數(shù)據(jù)倉庫和人工智能領(lǐng)域且經(jīng)費(fèi)在25萬元以上的項(xiàng)目有 xx 個。
答:程序清單如下
clear
set talk off
use 第4組實(shí)驗(yàn)題答案文件夾\xiangmu
count for (領(lǐng)域=“數(shù)據(jù)倉庫” or 領(lǐng)域=“人工智能”) and (經(jīng)費(fèi)>250000) to n1
list off 項(xiàng)目號,項(xiàng)目名,領(lǐng)域,經(jīng)費(fèi)
? “ 數(shù)據(jù)倉庫和人工智能領(lǐng)域且經(jīng)費(fèi)在25萬元以上的項(xiàng)目有”+str(n1,2)+“個”
use
set talk on
return
(2)列出50歲以下的教授的職工號、姓名、出生日期和所承擔(dān)項(xiàng)目的總業(yè)績分,并按總業(yè)績分的降序排列。
答:程序清單如下
clear
set talk off
select B.職工號 as 職工號,B.姓名 as 姓名,b.出生日期 as 出生日期,sum(C.業(yè)績評分) as 總業(yè)績分;
from 第4組實(shí)驗(yàn)題答案文件夾\xiangmu A, 第4組實(shí)驗(yàn)題答案文件夾\renyuan B,;
第4組實(shí)驗(yàn)題答案文件夾\chengdan C;
where (A.項(xiàng)目號=C.項(xiàng)目號) and (C.職工號=B.職工號) and (B.職稱=“教授”) ;
and (year(date())-year(B.出生日期))<50;
group by B.姓名;
into table 第4組實(shí)驗(yàn)題答案文件夾\zongfen
use 第4組實(shí)驗(yàn)題答案文件夾\zongfen
index on -總業(yè)績分 to 第4組實(shí)驗(yàn)題答案文件夾\zongfen0
list off 職工號,姓名,出生日期,總業(yè)績分
close databases
set talk on
return
(3)計(jì)算各個領(lǐng)域項(xiàng)目參加者的平均年齡,存入一個新表,其結(jié)構(gòu)如下:
領(lǐng)域 平均年齡
DW
SIS
……
答:程序清單如下
clear
set talk off
select b.職工號 as 職工號,a.領(lǐng)域 as 領(lǐng)域,(year(date())-year(b.出生日期)) as 年齡;
from 第4組實(shí)驗(yàn)題答案文件夾\xiangmu a, 第4組實(shí)驗(yàn)題答案文件夾\renyuan b,;
第4組實(shí)驗(yàn)題答案文件夾\chengdan c;
where a.項(xiàng)目號=c.項(xiàng)目號 and c.職工號=b.職工號;
into cursor tmp
select tmp.領(lǐng)域 as 領(lǐng)域,avg(tmp.年齡) as 平均年齡;
from tmp;
group by tmp.領(lǐng)域;
into table 第4組實(shí)驗(yàn)題答案文件夾\pingjun
close databases
use 第4組實(shí)驗(yàn)題答案文件夾\pingjun
list off
use
set talk on
return