• 案例庫
    您當(dāng)前的位置: 首頁>案例庫

    綜合案例四
    學(xué)生選課系統(tǒng)

    發(fā)布時間: 2019-01-16      信息來源:       閱讀次數(shù):

    綜合案例四  學(xué)生選課系統(tǒng)

    【實(shí)驗(yàn)?zāi)康呐c要求】  

    1.熟練使用VFP的操作環(huán)境

    2.熟練使用項(xiàng)目管理器管理各種文件

    3.掌握數(shù)據(jù)庫的設(shè)計方法和步驟

    4.熟練掌握數(shù)據(jù)庫表及其表之間關(guān)系的創(chuàng)建與使用

    5.掌握查詢與視圖的創(chuàng)建與使用

    6.掌握程序設(shè)計的基本方法

    7.掌握表單及其表單中各種控件的設(shè)計與使用

    8.掌握菜單的創(chuàng)建和使用

    【實(shí)驗(yàn)要求】

    (1)能輸入、修改、查詢選課有關(guān)的信息,如學(xué)生檔案、課程信息、教師信息、成績信息等;

    (2)能進(jìn)行統(tǒng)計,如學(xué)生選修課程的平均成績、某課程的平均成績。

    (3)能打印學(xué)生成績單、教師工作量表等。

    用戶提出開發(fā)應(yīng)用系統(tǒng)的要求后,軟件開發(fā)者應(yīng)通過調(diào)查研究歸納出目標(biāo)系統(tǒng)的數(shù)據(jù)需求和功能需求。

    (一)數(shù)據(jù)需求

    通過調(diào)查,總結(jié)出用戶對數(shù)據(jù)的需求如下:

    (1)學(xué)生信息

    包括:學(xué)生姓名、性別、出生日期、是否團(tuán)員、專業(yè)、入學(xué)時間、入學(xué)成績、簡歷、照片等。

    (2)課程信息

    包括:課程名稱、課程性質(zhì)、學(xué)時數(shù)、學(xué)分等。

    (3)教師信息

    包括:教師姓名、性別、職稱、通信地址、電話、電子信箱等。

    (4)選課信息

    包括:學(xué)生姓名、課程名稱、開課時間、成績等。

    (二)功能需求

    功能分析的任務(wù)是了解用戶對數(shù)據(jù)的處理方法和輸出格式。

    1.基礎(chǔ)數(shù)據(jù)錄入

    基礎(chǔ)數(shù)據(jù)包括學(xué)生數(shù)據(jù)、課程數(shù)據(jù)、教師數(shù)據(jù)和學(xué)生選課數(shù)據(jù)以及編碼數(shù)據(jù)等。要求系統(tǒng)能錄入這些數(shù)據(jù),并且能夠進(jìn)行修改。注意在數(shù)據(jù)錄入和修改的過程中應(yīng)保持?jǐn)?shù)據(jù)的參照完整性。

    2、查詢

    能夠查詢出學(xué)生數(shù)據(jù)、課程數(shù)據(jù)、教師數(shù)據(jù)以及學(xué)生選課數(shù)據(jù)等。

    3、統(tǒng)計

    要求能根據(jù)學(xué)生選課信息按學(xué)生統(tǒng)計平均成績和按課程統(tǒng)計平均成績。

    4、打印輸出

    打印學(xué)生成績單和教師工作量表。

    【概要設(shè)計】

    ? 項(xiàng)目設(shè)計

    一個典型的數(shù)據(jù)庫應(yīng)用程序有數(shù)據(jù)結(jié)構(gòu)、用戶界面、查詢選項(xiàng)和報表組成。在設(shè)計應(yīng)用程序時,應(yīng)仔細(xì)考慮每個組件將提供的功能以及與其他組件之間的關(guān)系。

    一個經(jīng)過良好組織的Visula FoxPro應(yīng)用程序一般需要為用戶提供菜單;一個或多個表單,供數(shù)據(jù)輸入并顯示。同時還需要添加某些事件響應(yīng)代碼,提供特定的功能,保證數(shù)據(jù)的完整性和安全性。此外,還需要提供查詢和報表,允許用戶從數(shù)據(jù)庫中選擇信息。

    Visual FoxPro提供的項(xiàng)目管理器作為集成管理各相關(guān)組件的組織工具,并把它們編譯為單個應(yīng)用文件。使用項(xiàng)目管理器創(chuàng)建一個項(xiàng)目后,就可以應(yīng)用程序已具備一個開發(fā)框架了,下一步的工作就是如何在這個框架之下利用項(xiàng)目管理器所提供的強(qiáng)大功能,按照需求來實(shí)現(xiàn)應(yīng)用程序所要求的功能。

    1.建立學(xué)生選課系統(tǒng)“項(xiàng)目

    為快速建立一個應(yīng)用程序及其項(xiàng)目,即一個完整“應(yīng)用程序框架”的項(xiàng)目,可以使用“應(yīng)用程序向?qū)А?,在?xiàng)目建立后,便打開了應(yīng)用程序生成器。也可以使用“新建文件”,彈出創(chuàng)建對話框,指定項(xiàng)目及其組件的存儲路徑為“C:¥ 學(xué)生選課系統(tǒng)”,項(xiàng)目名為“學(xué)生選課系統(tǒng)”。

    2.設(shè)置主文件

    當(dāng)用戶運(yùn)行應(yīng)用程序時,Visual FoxPro將啟動主文件,然后主文件再依次調(diào)用所需要的應(yīng)用程序其他組件。一般最好的方法是為應(yīng)用程序建立一個主程序。但是,使用一個表單作為主程序,可以將主程序的功能和初始界面集成在一起。

    本項(xiàng)目設(shè)置主文件為程序文件“主程序”,如圖1所示。

    方法:在“主程序”上單擊鼠標(biāo)右鍵,選中“設(shè)置主文件”菜單項(xiàng),或先選中“主程序”,單擊“項(xiàng)目”菜單,選中選中“設(shè)置主文件”菜單項(xiàng)。

    例如,主文件代碼編寫如下:

    clear all

    set talk off

    set default to c:¥學(xué)生選課系統(tǒng)¥                && 設(shè)置程序的默認(rèn)路徑

    public xh,jsbh,kcbh                                            && xh、jsbhkcbh分別用于存儲輸入的學(xué)號、

    &&教師編號、課程編號

    do form 封面                                                                      && 調(diào)用封面程序

    modify window screen title '學(xué)生選課管理系統(tǒng)'  && 設(shè)置主窗口的標(biāo)題

    do 主菜單.mpr                                                        && 調(diào)用出菜單

    read event                                                                      && 建立時間循環(huán)

    quit                                                                                    && 退出VFP

    /xcxxgc_jpkc/upload/images/2019/1/1610514723.jpg

    1 設(shè)置項(xiàng)目的主文件

    ? 數(shù)據(jù)庫的設(shè)計

    數(shù)據(jù)庫設(shè)計的任務(wù)是確定系統(tǒng)所需的數(shù)據(jù)庫。數(shù)據(jù)庫是表的集合,通常一個系統(tǒng)只需一個數(shù)據(jù)庫。數(shù)據(jù)庫的設(shè)計一般可分為邏輯設(shè)計和物理設(shè)計兩步。邏輯設(shè)計的任務(wù)是根據(jù)需求分析,確定數(shù)據(jù)庫所包含的表及字段、表間的關(guān)系,物理設(shè)計就是具體確定表的結(jié)構(gòu),包括字段名、字段類型及寬度,需要的索引等。

    (一)邏輯設(shè)計

    根據(jù)對需求得到的數(shù)據(jù)結(jié)構(gòu)進(jìn)行分析,按數(shù)據(jù)輸入輸出的要求,確定表和表間的關(guān)系,并進(jìn)行驗(yàn)證、調(diào)整、修改、完善,使其能夠?qū)崿F(xiàn)用戶對數(shù)據(jù)和功能的要求。本例根據(jù)分析確定系統(tǒng)要設(shè)置如下表:

    (1)學(xué)生基本表,包括字段:學(xué)號、姓名、性別、出生日期、是否團(tuán)員、照片、入學(xué)時間、入學(xué)成績、專業(yè)編號、簡歷。學(xué)號為主索引,為專業(yè)編號建立索引,通過該索引和專業(yè)基本表建立關(guān)聯(lián)。

    (2)教師基本表,包括字段:教師編號、教師姓名、性別、職稱、電話、通訊地址、郵政編碼、電子信箱。教師編號為主索引。

    (3)課程基本表,包括字段:課程編號、課程名稱、課程性質(zhì)、學(xué)時、學(xué)分、備注。課程編號為主索引。

    (4)學(xué)生選課表,字段包括:學(xué)號、課程編號、開課時間、成績。學(xué)生、課程編號和開課時間共同做主索引,分別為學(xué)號、課程編號、開課時間、成績建立索引,通過學(xué)號和學(xué)生基本表建立關(guān)聯(lián),通過課程編號和課程基本表建立關(guān)聯(lián),開課時間和成績索引用于做統(tǒng)計計算。

    (5)教師任課表,包括字段:教師編號、課程編號。分別為教師編號和課程編號建立索引,通過教師編號和教師基本表建立關(guān)聯(lián),通過課程編號和課程基本表建立關(guān)聯(lián)。

    (6)專業(yè)表,字段包括:專業(yè)編號、專業(yè)名稱、所屬系、備注。為專業(yè)編號建立索引,通過專業(yè)編號和學(xué)生基本表建立關(guān)聯(lián)。

    (二)物理設(shè)計

    下面列出選課系統(tǒng)所有表的結(jié)構(gòu)和索引,為了便于理解,將部分?jǐn)?shù)據(jù)列出。

    1.學(xué)生基本表

    表名:學(xué)生

    結(jié)構(gòu):

    字段名

    類型

    寬度

    小數(shù)位數(shù)

    索引

    學(xué)號

    字符型

    12

    主索引

    姓名

    字符型

    8

    性別

    字符型

    2

    出生日期

    日期型

    是否團(tuán)員

    邏輯型

    照片

    通用型

    入學(xué)時間

    日期型

    入學(xué)成績

    數(shù)值型

    3

    0

    專業(yè)編號

    字符型

    4

    普通索引

    簡歷

    記憶型

    記錄:

    學(xué)號

    姓名

    專業(yè)編號

    性別

    出生日期

    入學(xué)時間

    入學(xué)成績

    團(tuán)員否

    200010301001

    謝勝

    03

    1980-10-23

    2000-9-1

    589

    TRUE

    200010301020

    張輝

    03

    1981-5-20

    2000-9-1

    608

    TRUE

    200020302045

    陳誠

    03

    1980-8-4

    2000-9-1

    598

    TRUE

    200034201002

    劉玫

    42

    1980-9-4

    2000-9-1

    567

    FALSE

    200034202123

    李丹

    42

    1981-3-5

    2000-9-1

    601

    TRUE

    199920403128

    胡廣飛

    04

    1980-4-6

    1999-9-1

    521

    FALSE

    199924104112

    廖榮化

    41

    1980-10-31

    1999-9-1

    534

    FALSE

    199934205255

    趙雅娟

    42

    1980-7-8

    1999-9-1

    546

    TRUE

    200010401081

    李文

    04

    1981-9-20

    2000-9-1

    638

    TRUE

    200010401032

    陶冶

    04

    1980-7-30

    2000-9-1

    599

    TRUE

    199934202152

    王濤

    42

    1980-1-2

    1999-9-1

    576

    TRUE

    199934101067

    高磊

    41

    1980-5-3

    1999-9-1

    543

    FALSE

    2.教師基本表

    表名:教師

    結(jié)構(gòu):

    字段名

    類型

    寬度

    小數(shù)位數(shù)

    索引

    教師編號

    字符型

    4

    主索引

    教師姓名

    字符型

    8

    性別

    字符型

    2

    職稱

    字符型

    8

    通訊地址

    字符型

    40

    郵政編碼

    字符型

    6

    電話

    字符型

    20

    電子信箱

    字符型

    40

    記錄:

    教師編號

    教師姓名

    性別

    職稱

    通訊地址

    郵政編碼

    電話

    電子信箱

    CC01

    陳利民

    教授

    武漢大學(xué)182棟8號

    430072

    027-87675423

    lmchen@263.net

    CC02

    王惠敏

    副教授

    武漢市武昌區(qū)民主路2345號

    430043

    027-87876745

    hmwang@163.net

    CC03

    劉江

    講師

    武漢大學(xué)11棟12號

    430072

    CS01

    張健中

    副教授

    武漢市中山大道345號

    430030

    027-83457231

    jzzhang@263.net

    CS02

    吳秀芝

    講師

    武漢大學(xué)14棟8號

    430072

    027-87883476

    xzwu@263.net

    3.課程基本表

    表名:課程

    結(jié)構(gòu):

    字段名

    類型

    寬度

    小數(shù)位數(shù)

    索引

    課程編號

    字符型

    4

    主索引

    課程名稱

    字符型

    20

    學(xué)時

    數(shù)值型

    3

    0

    學(xué)分

    數(shù)值型

    2

    0

    課程性質(zhì)

    字符型

    8

    備注

    備注型

    記錄:

    課程編號

    課程名稱

    學(xué)時

    學(xué)分

    課程性質(zhì)

    CC01

    C語言程序設(shè)計

    48

    3

    選修課

    CC02

    FoxPro數(shù)據(jù)庫及程序設(shè)

    32

    2

    選修課

    CC03

    多媒體計算機(jī)技術(shù)

    32

    2

    選修課

    CS01

    計算機(jī)原理

    48

    3

    必修課

    CS02

    編譯原理

    48

    3

    指定選修

    4.學(xué)生選課表

    表名:學(xué)生選課

    結(jié)構(gòu):

    字段名

    類型

    寬度

    小數(shù)位數(shù)

    索引

    學(xué)號

    字符型

    12

    普通索引

    課程編號

    字符型

    4

    普通索引

    開課時間

    日期型

    普通索引

    成績

    數(shù)值型

    3

    0

    普通索引

    記錄:

    學(xué)號

    課程編號

    開課時間

    成績

    200010301001

    CC01

    2001-2-20

    0

    200010301001

    CC03

    2001-2-20

    0

    200010301001

    CS01

    2001-9-1

    0

    200010301020

    CC02

    2001-2-20

    0

    200010301020

    CS03

    2001-2-20

    0

    200020302045

    CC02

    2001-2-20

    0

    200034201002

    CC03

    2001-2-20

    0

    200034202123

    CS02

    2001-9-1

    0

    199920403128

    CC01

    2000-2-23

    86

    199924104112

    CS02

    2000-2-23

    50

    199924104112

    CS02

    2001-2-20

    0

    199934202152

    CC02

    2000-2-23

    91

    199934202152

    CC03

    2000-2-23

    85

    199934202152

    CS01

    2000-9-3

    78

    199934202152

    CS02

    2000-9-3

    75

    200010401081

    CC02

    2001-2-20

    0

    5.教師任課表

    表名:教師任課表

    結(jié)構(gòu):

    字段名

    類型

    寬度

    小數(shù)位數(shù)

    索引

    課程編號

    字符型

    4

    普通索引

    教師編號

    字符型

    8

    普通索引

    記錄:

    課程編號

    教師編號

    CC01

    CC01

    CC01

    CC02

    CC02

    CC01

    CC02

    CC03

    CC03

    CC02

    CC03

    CC03

    CS01

    CS01

    CS01

    CS02

    CS02

    CS01

    6.專業(yè)表

    表名:專業(yè)表

    結(jié)構(gòu):

    字段名

    類型

    寬度

    小數(shù)位數(shù)

    索引

    專業(yè)編號

    字符型

    4

    主索引

    專業(yè)名稱

    字符型

    40

    所屬系

    字符型

    40

    備注

    備注型

    記錄:

    專業(yè)編號

    專業(yè)名稱

    所屬系

    03

    水動

    水利

    04

    農(nóng)田

    水利

    05

    水資源

    水利

    41

    自動化

    電力

    42

    熱動

    電力

    ? 應(yīng)用程序設(shè)計

    (一)程序總體結(jié)構(gòu)設(shè)計

    在開始程序設(shè)計前,應(yīng)先將程序的總體結(jié)構(gòu)以層次圖的形式表示出來,便于對程序分層編程和實(shí)現(xiàn)。如圖3所示。

    /xcxxgc_jpkc/upload/images/2019/1/1610515565.jpg

    圖的第一層為系統(tǒng)層,通常對應(yīng)主程序;第二層為子系統(tǒng)層,一般起劃分系統(tǒng)功能的作用,通常對應(yīng)主菜單;第三層為功能層,對應(yīng)菜單項(xiàng),一般通過表單的調(diào)用實(shí)現(xiàn)某些特定的功能。

    (二)界面設(shè)計

    1.封面設(shè)計(封面.scx

    選中項(xiàng)目管理器中文檔-表單,按下“新建”按鈕,在隨后打開的對話框中單擊“新建表單”按鈕,彈出表單設(shè)計器和一個表單,其對象名為Form1。在表單中添加一個Lable對象,采用系統(tǒng)默認(rèn)名稱Label1,一個Timer對象,系統(tǒng)默認(rèn)名稱Timer1,如圖4所示。設(shè)置對象屬性如下:

    /xcxxgc_jpkc/upload/images/2019/1/1610515690.jpg

    圖4“封面”表單

    (1)Form1的屬性設(shè)置及事件代碼

    屬性名

    設(shè)置值

    說明

    Left

    0

    Top

    0

    Heigh

    431

    Width

    771

    BorderStyle

    0-無邊框

    Picture

    C:¥windows¥circles.bmp

    設(shè)置窗口背景

    TitleBar

    0-關(guān)閉

    只顯示背景和標(biāo)簽

    Window State

    2-最大化

    Activate事件代碼:              && 調(diào)整標(biāo)簽在啟動窗口中的位置

    thisform.label1.top=thisform.height/3

    thisform.label1.left=(thisform.width-thisform.label1.width)/2

    thisform.label1.visible=.t.

    RightClick事件代碼:

    thisform.release              &&關(guān)閉啟動窗口

    (2)Label1的屬性設(shè)置

    屬性名

    設(shè)置值

    說明

    Top

    132

    Left

    60

    Height

    60

    Width

    517

    Caption

    學(xué)生選課管理系統(tǒng)

    FontName

    隸書

    FontSize

    48

    ForeColor

    255,128,128

    BackStyle

    2-透明

    以免遮住窗口背景

    Visible

    F.-假

    以免在調(diào)整標(biāo)簽位置時閃動

    (3)Timer1的屬性設(shè)置及事件代碼

    屬性名

    設(shè)置值

    說明

    Interval

    5000

    每5000ms調(diào)用一次Timer事件

    Timer事件代碼:

    thisform.release

    2.主菜單設(shè)計(主菜單.mnx

    選中項(xiàng)目設(shè)計器中其他-菜單,單擊“新建”按鈕,在彈出的對話框中選擇“菜單”按鈕,參照總體結(jié)構(gòu)圖,設(shè)計主菜單如下。

    基本信息

    選課信息

    統(tǒng)計查詢

    報表打印

    代碼維護(hù)

    學(xué)生名冊

    (學(xué)生基本情況.scx)

    選課登記

    (選課登記.scx)

    按課程查詢

    (按課程查詢.scx)

    學(xué)生成績單

    課程代碼

    教師名冊

    (教師.scx)

    按學(xué)生查詢

    教師工作量

    課程信息

    (課程信息.scx)

    按課程平均

    (按課程求平均.scx)

    課程成績單

    退出

    (命令)

    按學(xué)生平均

    “退出”菜單項(xiàng)命令如下:

    clear events              && 退出事件循環(huán)

    從菜單文件生成菜單程序“主菜單.mpr

    3.“學(xué)生名冊”表單(學(xué)生基本情況.scx

    學(xué)生名冊表單用于輸入、修改、刪除、查詢學(xué)生信息。窗口設(shè)計見圖5。在窗口上單擊鼠標(biāo)右鍵打開彈出菜單,選擇數(shù)據(jù)環(huán)境打開數(shù)據(jù)環(huán)境設(shè)計器,在數(shù)據(jù)環(huán)境中添加“學(xué)生”、“專業(yè)表”兩個表,建立關(guān)聯(lián)。如圖6所示。

    (1)StudentForm的屬性設(shè)置

    屬性名

    設(shè)置值

    說明

    Name

    StudentForm

    Caption

    學(xué)生基本情況

    AutoCenter

    .T.-真

    窗口自動居中

    BorderStyle

    2-固定對話框

    無需用戶調(diào)整窗口大小

    MaxButton

    .F.-假

    同上

    /xcxxgc_jpkc/upload/images/2019/1/1610515752.jpg

    圖5 學(xué)生基本情況“表單

    /xcxxgc_jpkc/upload/images/2019/1/1610515877.jpg

    圖6“學(xué)生基本情況”表單的數(shù)據(jù)環(huán)境設(shè)置

    (2)標(biāo)簽和文字框的設(shè)置

    從數(shù)據(jù)環(huán)境將下列字段拖到表單中規(guī)定的位置,產(chǎn)生相應(yīng)的標(biāo)簽和文本框:學(xué)生表中的學(xué)號、姓名、出生日期、入學(xué)時間、入學(xué)成績、簡歷等字段;專業(yè)表中的專業(yè)編號、專業(yè)名稱、所屬系等字段。從數(shù)據(jù)環(huán)境來產(chǎn)生標(biāo)簽和文本框,不僅速度快,而且標(biāo)簽的Caption和Name屬性、文本框的Name屬性都會自動設(shè)定位與源字段有關(guān)的名字,文本框也會自動與源表中的源字段綁定。

    (3)“專業(yè)編號”列表框的設(shè)置及事件代碼

    從表單控件工具欄中選擇“組合框”工具,在窗口上相應(yīng)位置單擊,產(chǎn)生一個組合框Combo1,設(shè)置其屬性。

    屬性名

    設(shè)置值

    說明

    Name

    Combo1

    ControlSource

    學(xué)生.專業(yè)編號

    數(shù)據(jù)存儲的字段

    RowSource

    專業(yè)表.專業(yè)編號

    列表框中數(shù)據(jù)來源字段

    RowSourceType

    6-字段

    數(shù)據(jù)來源為字段

    Style

    2-下拉列表框

    Valid事件代碼:

    thisform.refresh

    (4)“團(tuán)員”復(fù)選框的設(shè)置

    從數(shù)據(jù)環(huán)境中將“學(xué)生.團(tuán)員否“字段拖到窗口上相應(yīng)的位置,會自動產(chǎn)生團(tuán)員復(fù)選框。并且將它與學(xué)生.團(tuán)員字段綁定。

    (5)“性別”選項(xiàng)按鈕組的設(shè)置

    從表單控件工具欄中選擇選項(xiàng)按鈕組工具,在窗口相應(yīng)的位置單擊鼠標(biāo)左鍵,創(chuàng)建選項(xiàng)按鈕組控件,在控件上單擊鼠標(biāo)右鍵打開彈出式菜單,選擇生成器材單項(xiàng),打開選項(xiàng)組生成器窗口,如圖7所示,按步驟完成如下操作。

    /xcxxgc_jpkc/upload/images/2019/1/1610515955.jpg

    圖7設(shè)置“性別”選項(xiàng)組

    第一步,將標(biāo)題改為“男”、“女”;

    第二步,將布局改為水平排列;

    第三步,將值與學(xué)生.性別字段綁定。單擊“確定”完成設(shè)置。

    (6)命令按鈕組設(shè)置與事件代碼

    從表單控件工具欄中選擇命令按鈕組工具,在窗口相應(yīng)的位置單擊鼠標(biāo)左鍵創(chuàng)建命令按鈕組控件CommandGroup1,在控件上單擊鼠標(biāo)右鍵彈出菜單,選擇生成器菜單項(xiàng),打開命令組生成器窗口,格式與圖8.14類似。按要求第一步設(shè)置按鈕數(shù)目及每個按鈕的標(biāo)題(見圖8.12);第二步設(shè)置布局為水平排列,單擊“確定”即可生成按鈕組。

    CommandGroup1的Click事件代碼:

    do case

    case this.value=1              && 到首頁

                               go top

    case this.value=2              && 到上頁

                               if not bof()

                                             skip -1

                               endif

    case this.value=3              && 到下頁

                               skip

                               if eof()

                                             skip -1

                               endif

    case this.value=4              && 到末頁

                               go bottom

    case this.value=5              && 按學(xué)號查詢

                               xh=''

                               do form 輸入學(xué)號                            && 打開學(xué)號輸入窗口(見下文),關(guān)閉時

    && 將輸入的學(xué)號返回

                               dqjlh=recno()

                               if len(xh)<>0

                                             locate for 學(xué)號=xh

                                             if not found()

                                                           wait window '無此學(xué)號!'

                                                           go dqjlh

                                             endif

                               endif

    case this.value=6              && 新增學(xué)生名單

                               zy=messagebox('需要增加學(xué)生名單嗎?',4+32+256,'確認(rèn)')

                               if zy=6              && 對話框含“是”“否”按鈕,按下“是”按鈕返回6

                                             append blank

                               endif

    case this.value=7              && 刪除當(dāng)前學(xué)生名單

                               sy=messagebox('需要刪除當(dāng)前的學(xué)生名單嗎?',4+32+256,'確認(rèn)')

                               if sy=6

                                             delete

                                             pack

                               endif

    case this.value=8              && 關(guān)閉當(dāng)前窗口

                               thisform.release              

    endcase

    thisform.refresh

    4.“輸入學(xué)號”表單(輸入學(xué)號.scx

    在“學(xué)生名冊”窗口中,當(dāng)單擊尋頁按鈕時,調(diào)用“輸入學(xué)號”表單,通過公共變量xh,將輸入的需要查詢的學(xué)號傳回到“學(xué)生名冊”窗口,并進(jìn)行定位,如果沒有相應(yīng)學(xué)號的數(shù)據(jù),則在等待窗口中顯示“無此學(xué)號”?!拜斎雽W(xué)號”窗口如圖8所示。

    /xcxxgc_jpkc/upload/images/2019/1/16105162.jpg

    圖8 “輸入學(xué)號”表單窗口

    (1)Form的屬性設(shè)置

    屬性名

    設(shè)置值

    說明

    AutoCenter

    .T.-真

    BorderStyle

    2-固定對話框

    Caption

    輸入學(xué)號

    ControlBox

    .F.-假

    Name

    noForm

    WindowStyle

    1-模式

    在窗口關(guān)閉前不能操作其他窗口

    (2)命令按鈕組的屬性設(shè)置及事件代碼

    利用生成器,創(chuàng)建命令按鈕組CommandGroup1其中包含“確定”、“取消”兩個按鈕。

    CommandGroup1的Click事件代碼:

    do case

                 case this.value=1              &&單擊“確定”,將文本框中的值賦予全局變量xh

                               xh=trim(thisform.text1.value)

                               thisform.release

                 case this.value=2              &&單擊“取消”,將全局變量xh賦空字符串

                               xh=''

                               thisform.release

    endcase

    5.“選課登記”表單(選課登記.scx

    “選課登記”表單用于輸入、修改和查詢學(xué)生選課信息,需要使用學(xué)生選課表、學(xué)生表和課程表三個表。在“選課登記”表單的數(shù)據(jù)環(huán)境中加入這三個表,同時以建立學(xué)生選課表為主表建立學(xué)生選課表和學(xué)生表、學(xué)生選課表和課程表之間的關(guān)聯(lián),如圖9所示。

    /xcxxgc_jpkc/upload/images/2019/1/161051664.jpg

    圖9 “選課登記”表單的數(shù)據(jù)環(huán)境

    和“學(xué)生名冊”表單類似,從數(shù)據(jù)環(huán)境中將需要的數(shù)據(jù)拖到表單窗口的相應(yīng)位置,創(chuàng)建“選課登記”表單如圖10所示。

    /xcxxgc_jpkc/upload/images/2019/1/1610516111.jpg

    圖10 “選課登記”表單

    窗口屬性的設(shè)置和“學(xué)生名冊”表單類似,其中命令組可以從“學(xué)生名冊”表單中復(fù)制過來,修改其Click事件中的代碼如下:

    do case

                 case this.value=1

                               go top

                 case this.value=2

                               if not bof()

                                             skip -1

                               endif

                 case this.value=3

                               skip

                               if eof()

                                             skip -1

                               endif

                 case this.value=4

                               go bottom

                 case this.value=5

                               kcbh=''

                               do form 輸入學(xué)號

                               dqjlh=recno()

                               if len(kcbh)<>0

                                             locate for 課程編號=kcbh

                                             if not found()

                                                           wait window '無此選課記錄!'

                                                           go dqjlh

                                             endif

                               endif

                 case this.value=6

                               zy=messagebox('需要增加選課記錄嗎?',4+32+256,'確認(rèn)')

                               if zy=6

                                             append blank

                               endif

                 case this.value=7

                               sy=messagebox('需要刪除當(dāng)前的選課記錄嗎?',4+32+256,'確認(rèn)')

                               if sy=6

                                             delete

                                             pack

                               endif

                 case this.value=8

                               thisform.release              

    endcase

    thisform.refresh

    “課程編號”列表框?qū)傩缘脑O(shè)置參照“學(xué)生名冊”表單。

    6.“按課程查詢”表單(按課程查詢.scx

    該表單可以按所選定的課程查詢出選修了該課程的所有學(xué)生名單、開課時間以及成績,數(shù)據(jù)涉及到學(xué)生選課和課程,將這兩個表加入到數(shù)據(jù)環(huán)境中,窗口格式的建立如圖11所示。

    /xcxxgc_jpkc/upload/images/2019/1/1610516174.jpg

    圖11 “按課程查詢”表單

    (3)關(guān)閉命令按鈕的Click時間代碼

    thisform.release

    7.“按課程統(tǒng)計”表單(按課程統(tǒng)計.scx

    “按課程統(tǒng)計”表單提供用戶按課程統(tǒng)計沒門課程的平均成績,為了使表單界面設(shè)計簡單,可以先建立視圖,將成績按課程分組求平均值,視圖的建立可利用VFP提供的視圖設(shè)計器,將學(xué)生選課表和課程表加入視圖設(shè)計器中,將學(xué)生選課.課程編號、課程.課程名稱從可選字段列表加入到選定字段列表框中,利用表達(dá)式生成器生成AVG(學(xué)生選課.成績),并將它加入到選定字段列表框中。如圖12所示。

    /xcxxgc_jpkc/upload/images/2019/1/1610516267.jpg

    圖12視圖設(shè)計器

    設(shè)置連接條件為:學(xué)生選課.課程編號=課程.課程編號

    篩選條件為:NOT 學(xué)生選課.成績=0

    排序依據(jù)為:學(xué)生選課.課程編號

    分組依據(jù)為:學(xué)生選課.課程編號

    視圖名為: v學(xué)生選課_課程_統(tǒng)計1

    最后將新建的視圖加到表單的數(shù)據(jù)環(huán)境中,表單窗口的設(shè)計如圖13所示。

    /xcxxgc_jpkc/upload/images/2019/1/1610516376.jpg

    圖13 “按課程平均”表單

    成績列表框仍然利用列表框生成器設(shè)計。


    午夜免费啪在线观看视频,国产日韩欧美久久一区,久久无码高潮喷潮,国产日韩久久久久老熟女 亚太影院 柯西贝尔-游戏赚网 在线观看肉片AV网站免费