第十五套
一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
1、在考生文件夾下建立數(shù)據(jù)庫STSC
2、把自由表STUDENT、COURSE、SCORE加入到數(shù)據(jù)庫中。
3、為SCORE表的"成績"字段建立有效性規(guī)則:成績大于等于零,否則提示信息:成績必須大于等于零
4、為STUDENT表建立主索引,索引名為PRIMARYKEY,索引表達(dá)式為學(xué)號。
本題的主要考核點(diǎn):
數(shù)據(jù)庫的建立、將自由表添加到數(shù)據(jù)庫中、建立有效性規(guī)則、索引的建立。
1.建立數(shù)據(jù)庫的常用方法有以下三種:
在項目管理器中建議數(shù)據(jù)庫
通過"新建"對話框建議數(shù)據(jù)庫
使用命令交互建議數(shù)據(jù)庫,命令為: CREATE DATABASE [DatabaseName|?]
其中DatabaseName給出了要建立的數(shù)據(jù)庫的名稱,如果不指定數(shù)據(jù)庫名稱或使用?號都會彈出創(chuàng)建對話框請用戶輸入數(shù)據(jù)庫名稱。
此處可用后兩種。
2 .將自由表添加到數(shù)據(jù)庫中,可以在項目管理器或數(shù)據(jù)庫設(shè)計器中完成。在數(shù)據(jù)庫設(shè)計器中可以從"數(shù)據(jù)庫"菜單或在數(shù)據(jù)庫設(shè)計器上單擊右鍵彈出菜單中選擇"添加表",然后在"打開"對話框中選擇要添加到當(dāng)前數(shù)據(jù)庫的自由表。還可用ADD TABLE命令添加一個自由表到當(dāng)前數(shù)據(jù)庫中。
3.建立有效性規(guī)則比較簡單直接的方法是在表設(shè)計器中建立。在表設(shè)計器中首先選中要定義有效性規(guī)則的字段"成績",在"規(guī)則"一欄中輸入"成績>=0"(或用表達(dá)式生成器生成),在"信息"欄中輸入:"成績必須大于等于零"。
4.建立索引在表設(shè)計器中的索引選項卡中完成。
二、簡單應(yīng)用(2小題,每題20分,計40分)
1、在考生文件夾中有一個商品數(shù)據(jù)庫COMMDB,其中有數(shù)據(jù)庫表SP存放商品信息,使用菜單設(shè)計器制作一個名為SMENU的菜單,菜單包括"數(shù)據(jù)操作"和"文件"兩個菜單欄。
每個菜單欄都包括一個子菜單。菜單結(jié)構(gòu)如下:
數(shù)據(jù)操作
數(shù)據(jù)輸出
文件
退出
其中:
數(shù)據(jù)輸出子菜單對應(yīng)的過程完成下列操作:打開數(shù)據(jù)庫COMMDB,使用SQL的
SELECT語句查詢數(shù)據(jù)庫表SP中所有信息,然后關(guān)閉數(shù)據(jù)庫。
退出菜單項對應(yīng)的過程含有命令SET SYSMENU TO DEFAULT,使之可以返回到
系統(tǒng)菜單。
2、在考生文件夾中有一個數(shù)據(jù)庫SDB,其中有數(shù)據(jù)庫表STUDENT2、SC和
COURSE2。三個表如下所示:
STUDENT2(學(xué)號,姓名,年齡,性別,院系編號)
SC(學(xué)號,課程號,成績,備注)
COURSE2(課程號,課程名,先修課號,學(xué)分)
用SQL語句查詢"數(shù)據(jù)庫"課程的考試成績在85分以上(含85分)的學(xué)生的全部信息并將結(jié)果按學(xué)號升序存入自由表NINE.DBF文件中。(庫的結(jié)構(gòu)同STUDENT2,并在其后加入成績字段)
第1題,本題的主要考核點(diǎn)是建立菜單和foxpro中的基本命令。
新建菜單可按下列步驟:選擇“文件”菜單中的“新建”命令,在“新建”對話框中選擇“菜單”,單擊“新建文件”按鈕。在“新建菜單”對話框中選擇“菜單”按鈕,調(diào)出“菜單設(shè)計器”。也可用CREATE MENU命令直接調(diào)出菜單設(shè)計器。在菜單名稱中填入“數(shù)據(jù)操作”,結(jié)果為子菜單,單擊編輯;在子菜單的菜單名稱中輸入“數(shù)據(jù)輸出”,結(jié)果為過程。在過程中輸入下列命令:
open data commdb
select * from sp
close all
文件菜單創(chuàng)建過程同上。
第2題 本題的主要考核點(diǎn)是SQL語句查詢。
SELECT Student2.*, Sc.成績;
FROM sdb!student2 INNER JOIN sdb!sc;
INNER JOIN sdb!course2 ;
ON Sc.課程號 = Course2.課程號 ;
ON Student2.學(xué)號 = Sc.學(xué)號;
WHERE Course2.課程名 IN ("數(shù)據(jù)庫");
AND Sc.成績 >= 85;
ORDER BY Student2.學(xué)號;
INTO TABLE nine.dbf
三、綜合應(yīng)用(1小題,計30分)
考生文件夾下有學(xué)生管理數(shù)據(jù)庫stu_nine,數(shù)據(jù)庫中有score1表,其庫結(jié)構(gòu)是學(xué)
號C(10)、少數(shù)民族L、優(yōu)秀干部L、三好生L、考試成績I、總成績I。其中,前
五項已有數(shù)據(jù)
請編寫并運(yùn)行符合下列要求的程序:
設(shè)計一個名為form_stu的表單,表單中有兩個命令按鈕,按鈕的名稱分別為
cmdYes和cmdNo,標(biāo)題分別為"計算"和"關(guān)閉"。
程序運(yùn)行時,單擊"計算"按鈕應(yīng)完成下列操作
(1)計算每一個學(xué)生的總成績。總成績的計算方法是:考試成績+加分,加分的規(guī)
則是:如果該生是少數(shù)民族(相應(yīng)數(shù)據(jù)字段為 .T.)加分5分,優(yōu)秀干部加分10分,三好生加分20分,加分不累計,取高的 。例如,如果該生既是少數(shù)民族又是三好生,加分為20分。如果都不是,總成績=考試成績
(2)根據(jù)上面的計算結(jié)果,生成一個新的自由表 ZCJ,該表只包括學(xué)號和總成績兩項,并按總成績的升序排序,如果總成績相等,則按學(xué)號的升序排序。單擊"關(guān)閉"按鈕,程序終止運(yùn)行。
本題主要考核點(diǎn):
表單的建立、程序設(shè)計中循環(huán)結(jié)構(gòu)、條件結(jié)構(gòu)的應(yīng)用、SELECT語句的應(yīng)用等知識點(diǎn)
解題思路:
第一步:利用表單設(shè)計器建立所要求的表單,將在表單上添加兩個按鈕控件。分別設(shè)置兩個按鈕控件的標(biāo)題和名字屬性。
第二步:雙擊標(biāo)題為"計算"的按鈕控件,在新打開的窗口中添加此按鈕的CLICK事件代碼:
SET TALK OFF &&在程序運(yùn)行下關(guān)閉命令結(jié)果的顯示
OPEN DATABASE STU_NINE &&打開數(shù)據(jù)庫文件
USE SCORE1 &&打開成績表
DO WHILE NOT EOF() &&遍歷成績表中的每一條記錄
STORE 0 TO JF &&對變量JF賦值0
DO CASE
CASE 三好生
JF=20
CASE 優(yōu)秀干部
JF=10
CASE 少數(shù)民族
JF=5
OTHERWISE
JF=0
ENDCASE
&&DO CASE…..ENDCASE條件語句中每次僅運(yùn)行其中的一組命令。
&&如果第一個 CASE 條件表達(dá)式 中條件表達(dá)式為.T.,則執(zhí)行第一個CASE
&&和第二個CASE之間的語句,而即使下面的有滿足條件的CASE也不再執(zhí)行
&&如果所有的CASE條件都不滿足,則執(zhí)行OTHERWISE與ENDCASE之間的語句
&&所以這里要將"三好生"放在第一個CASE的位置;"優(yōu)秀干部"話在第二個CASE中
&&"少數(shù)民族"放在第三個CASE中
REPLACE 總成績 WITH 考試成績+JF
&&用當(dāng)前的成績與可以加的分之和做為總成績
SKIP
ENDDO
SELECT 學(xué)號,總成績 FROM SCORE1 ORDER BY 總成績,學(xué)號;
INTO TABLE ZCJ
&&利用ORDER BY 子句可以將查詢結(jié)果集按一定的順序進(jìn)行排序
&&默認(rèn)是以升序進(jìn)行排序,如果要以降序進(jìn)行排序,需在排序依據(jù)的后面加DESC
&&在排序的時候可以指定多個排序的依據(jù),根據(jù)優(yōu)先級的不同依次放在ORDER BY 的后面
&&利用INTO TABLE 表名 可以將結(jié)果集放入一個永久表中
CLOSE ALL
SET TALK ON &&恢復(fù)命令結(jié)果的顯示
第三步:雙擊標(biāo)題為"退出"的按鈕控件,在新打開的窗口中添加此按鈕的CLICK事件代碼:
THISFORM.RELEASE &&退出本表單
第四步:以文件名form_stu保存表單,并運(yùn)行表單