vf計算機課程設(shè)計_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告</b></p><p>  設(shè)計地點(單位)____ 第一實驗樓I305__ _ _ </p><p>  設(shè)計題目:____ 成績計算系統(tǒng)_____________ </p><p>  完成日期: 2012年 6月 29日</p&

2、gt;<p>  指導(dǎo)教師評語: _______________________________________</p><p>  ______________________________________________________________________________________________________________________________________

3、___________________________________________________________________ __________ _ </p><p>  成績(五級記分制):______ __________ 指導(dǎo)教師(簽字):________ ________</p><p><b>  目 錄&l

4、t;/b></p><p><b>  1 需求分析04</b></p><p>  1.1 問題描述4</p><p>  1.2 基本要求4</p><p><b>  2 概要設(shè)計5</b></p><p>  2.1 學(xué)生信息的設(shè)計5</p>

5、;<p>  2.2系統(tǒng)功能的設(shè)計6</p><p>  2.3結(jié)構(gòu)框架圖6</p><p><b>  3 詳細設(shè)計8</b></p><p>  3.1 數(shù)據(jù)庫的設(shè)計8</p><p>  3.2 系統(tǒng)功能的設(shè)計8</p><p>  3.3 設(shè)計主程序9</

6、p><p>  3.4 設(shè)計主界面模塊10</p><p>  3.5 設(shè)計整理數(shù)據(jù)12</p><p>  3.6設(shè)計輸入數(shù)據(jù)模塊13</p><p>  3.7設(shè)計高分段平均分17</p><p>  3.8設(shè)計離均差模塊18</p><p>  3.9 設(shè)計大平均分19</p

7、><p>  3.10設(shè)計設(shè)置高分段22</p><p><b>  4 調(diào)試分析24</b></p><p>  5 用戶使用說明25</p><p><b>  6 測試結(jié)果26</b></p><p><b>  7 總 結(jié)27</b>&l

8、t;/p><p><b>  8 致 謝28</b></p><p><b>  9 參考文獻29</b></p><p><b>  10 附 錄30</b></p><p><b>  1 需求分析</b></p><p>

9、<b>  1.1 問題描述</b></p><p>  成績計算系統(tǒng)是Visual ForPro進行系統(tǒng)操作的理想實例,包含了計算離均差、大平均差、高分段平均分3個主要功能。其中離均差是運用方差分析的方法處理學(xué)生的成績,得出各個班整體的;大平均分是將所有參考學(xué)生的成績平均,了解學(xué)生的平均水平;高分段平均分是按照給定的分?jǐn)?shù)線計算該分?jǐn)?shù)線以上的平均分。</p><p>

10、<b>  1.2 基本要求</b></p><p>  學(xué)生通過動手動腦解決實際問題,是學(xué)生學(xué)完課程后進行的一次全面的綜合訓(xùn)練,是一個非常重要的教學(xué)環(huán)節(jié),通過課程設(shè)計,使學(xué)生經(jīng)受一次綜合動用所學(xué)知識,解決實際問題的方法。</p><p>  《VFP課程設(shè)計》課程設(shè)計旨在讓學(xué)生掌握目前在辦公系統(tǒng)流行的Visual Foxpro6.0,具備數(shù)據(jù)庫軟件開發(fā)基本技能,加強

11、數(shù)據(jù)庫教學(xué)的實踐環(huán)節(jié),培養(yǎng)學(xué)生對關(guān)系數(shù)據(jù)庫的實際應(yīng)用能力。通過課程設(shè)計,使學(xué)生能靈活使用Visual Foxpro6.0系統(tǒng),了解計算機軟件開發(fā)的基本步驟,編制方法,調(diào)試過程等基本知識。為將來熟練地應(yīng)用計算機系統(tǒng)進行日常業(yè)務(wù)處理及運用相關(guān)知識處理問題打下良好的基礎(chǔ)。</p><p><b>  要求如下:</b></p><p>  1)鞏固和加深對Visual Fo

12、rPro 語言基礎(chǔ)知識的理解,提高綜合運用所學(xué)課程知識的能力。</p><p>  2)培養(yǎng)學(xué)生的實際動手操作能力。</p><p>  3)通過實際的課程設(shè)計,初步掌握簡單軟件的分析方法和設(shè)計方法。</p><p>  4)需要了解排序算法。</p><p>  5)能熟練地錯誤程序進行調(diào)試,能正確解釋和分析實驗結(jié)果。</p>

13、<p>  6)要求程序結(jié)構(gòu)簡單,功能齊全,使用方便。</p><p><b>  2 概要設(shè)計</b></p><p>  2.1 學(xué)生信息的設(shè)計</p><p>  學(xué)生的信息包括:考生考號、考生的姓名、班級名稱、科目名稱,任課教師姓名、離均差、大平均分。這些信息反映到數(shù)據(jù)庫表中,其字段名如下:</p><p

14、>  2.1.1 標(biāo)題字號</p><p>  KSH //考生考號</p><p>  XM //考生的姓名</p><p><b> ?、?班級名稱</b></p><p>  KM //科目名稱</p><p><b>  1)任課教師姓名</b>&l

15、t;/p><p>  LJC //離均差</p><p><b>  平均分</b></p><p>  表2-1 離均差表</p><p>  2.2系統(tǒng)功能的設(shè)計</p><p>  成績處理系統(tǒng)的目的是客觀評價學(xué)生的成績,為以后改良教學(xué)方法提供依據(jù),這就要求分析

16、的結(jié)果準(zhǔn)確、客觀、全面。對于單科成績,需要了解該科的平均分、最高分以及與其他班級的差距。為此,該系統(tǒng)設(shè)計了輸入數(shù)據(jù)、離均差、大平均分、高分段平均分幾個功能模塊,以及數(shù)據(jù)整理和設(shè)置高分段兩個輔助功能。結(jié)構(gòu)圖如下所示。</p><p><b>  2.3結(jié)構(gòu)框架圖</b></p><p>  確定了系統(tǒng)的功能,即可設(shè)計系統(tǒng)的功能模塊。針對以上功能要求,分別設(shè)計GFD_SH

17、R1、SELECT_CLASS、ZHL、SHOW_LJC、SHOW_GFD表單,其結(jié)構(gòu)圖如下:</p><p>  用戶運行程序時,彈出MAIN表單,在該表單上放置了6個功能項,單擊其中某個按鈕,程序?qū)凑找?guī)定的方法處理數(shù)據(jù),最后將處理的結(jié)果展示給用戶以便查閱,用戶確認(rèn)無誤后,單擊界面上的“打印”按鈕系統(tǒng)將打印出處理結(jié)果。</p><p>  下面詳細向讀者介紹各個模塊的功能以及詳細設(shè)計。

18、</p><p><b>  3 詳細設(shè)計</b></p><p>  3.1 數(shù)據(jù)庫的設(shè)計</p><p>  學(xué)生成績表存儲的是光電閱卷機提供的原始成績,即系統(tǒng)要處理的數(shù)據(jù),根據(jù)參考班級數(shù)量,有相應(yīng)數(shù)量的數(shù)據(jù)庫,其中主文件名中后3位是相應(yīng)的班級名稱。高中分為文科和理科兩大類班級,每一類設(shè)置的考試科目是不同的,所以有兩個數(shù)據(jù)庫結(jié)構(gòu)。理科班級

19、的考試科目有數(shù)學(xué)、英語、語文、理科綜合、物理、化學(xué)、生物。</p><p>  3.2 系統(tǒng)功能的設(shè)計</p><p>  成績處理系統(tǒng)的目的是客觀評價學(xué)生的成績,為以后改良教學(xué)方法提供依據(jù),這就要求分析的結(jié)果準(zhǔn)確、客觀、全面。對于單科成績,需要了解該科的平均分、最高分以及與其他班級的差距。為此,該系統(tǒng)設(shè)計了輸入數(shù)據(jù)、離均差、大平均分、高分段平均分幾個功能模塊,以及數(shù)據(jù)整理和設(shè)置高分段兩個

20、輔助功能。結(jié)構(gòu)圖如圖3-1所示:</p><p>  圖3-1 功能分析圖</p><p>  確定了系統(tǒng)的功能,即可設(shè)計系統(tǒng)的功能模塊。針對以上功能要求,分別設(shè)計GFD_SHR1、SELECT_CLASS、ZHL、SHOW_LJC、SHOW_GFD表單,其結(jié)構(gòu)圖如圖3-2所示:</p><p>  圖3-2 程序結(jié)構(gòu)圖</p><p>&l

21、t;b>  3.3 設(shè)計主程序</b></p><p>  程序在運行期間要使用部分變量來傳遞數(shù)據(jù),這些變量都是在主程序定義的。</p><p>  打開 Visual FoxPro 程序,進入設(shè)計界面,然后新建一個項目文件,以“成績“命名”保存,打開該項目的管理器,在管理器的“代碼”選項卡中添加一個名為“MIAN”的代碼文件,并在“MIAN”代碼文件窗口中添加如下代碼:

22、</p><p><b>  *初始化系統(tǒng)</b></p><p><b>  CLOSE ALL</b></p><p><b>  CLEAR ALL</b></p><p>  SET TALK OFF</p><p>  SET DELETED

23、ON</p><p><b>  *設(shè)置窗口的屬性</b></p><p>  _SCREEN.CAPTION=“計算”</p><p>  _SCREEN.WINDOWSTATE=2</p><p>  *設(shè)置全局變量,用來傳遞數(shù)據(jù)</p><p>  PUBLIC SHOW_FILE_NAME

24、</p><p><b>  *調(diào)用主界面</b></p><p>  DO FORM MIAN</p><p>  上述代碼中1~5行對系統(tǒng)的運行進行了一系列的設(shè)置,6~7行定義了窗口的名稱和狀態(tài),第8行定義了一個全局變量,用來傳遞數(shù)據(jù),第9行調(diào)用系統(tǒng)的主界面,讀者可以根據(jù)實際的需要來設(shè)置上面的代碼。</p><p>

25、  3.4 設(shè)計主界面模塊</p><p>  主界面是操作者選擇功能的主要方式,在設(shè)計上力求簡單快捷。由于該系統(tǒng)的功能比較單一,因此采用了按鈕的方式,如果系統(tǒng)的功能比較多建議采用菜單的方式,可以使界面簡潔。在項目管理器中添加一個表單,命名為“MAIN”,Caption屬性設(shè)置為“成績分析”</p><p>  使用“表單控件”工具欄在表單上一個CommandGroup控件,用戶分隔顯示界

26、面如圖3-3</p><p>  圖3-3 添加CommandGroup 控件</p><p>  利用同樣的方法在該表單上添加另外2個CommandGroup 控件,接下來添加利用“表單控件”工具箱在表單中添加7個CommandGroup控件完成具體功能,1個Lable控件顯示標(biāo)題信息。屬性如表3-1所示。</p><p>  表3—1 屬性設(shè)置<

27、;/p><p>  完成設(shè)計后界面如圖3-4 所示</p><p>  圖3-4 設(shè)計主界面</p><p>  在主界面設(shè)計了6項功能,用6 個Command控件完成,將完成此項功能所需的代碼添放在6個Command控件的Click事件中。</p><p>  3.5 設(shè)計整理數(shù)據(jù)</p><p>  在系統(tǒng)中處理

28、學(xué)生成績的一部分是由自動閱卷機產(chǎn)生的,另外一部分由人工輸入的,再由這兩部分?jǐn)?shù)據(jù)合成其他的相關(guān)數(shù)據(jù),數(shù)據(jù)整理的,目的就是為了完成上述功能。</p><p>  在Main表單的commang3控件的click行為窗口中輸入如下代碼:</p><p><b>  *整理數(shù)據(jù)</b></p><p>  USE DMD_G.DBF</p>

29、<p>  REPLACE CHJI WITH0,CHJH2WITH O</p><p><b>  USE</b></p><p><b>  *整理理科班的成績</b></p><p>  FOR J=1 TO 3</p><p><b>  DO CASE</b&

30、gt;</p><p><b>  CASEI=1</b></p><p>  BJ_DAIMA="CJG301.DBF"</p><p><b>  CASE I=2</b></p><p>  BJ_DAIMA="CJG302.DBF"</p>

31、<p><b>  CASE I=3</b></p><p>  BJ_DAIMA="CJG303.DBF"</p><p><b>  ENDCASE</b></p><p>  USE&BJ_DAIMA</p><p>  REPLACE YW WITH

32、 YW1+YW2,SX WITH SX1+SX2,YY WITH YY1+YY2 ALL</p><p><b>  GOTO 1</b></p><p>  REPLACE WL WITH WL1+WL2,HX WITH HX1+HX2,SW WITH SW1+SW2 ALL</p><p><b>  GOTO 1</b&g

33、t;</p><p>  REPLACE ZF WITH YW+SX+YY+WL+HX+SW ALL</p><p><b>  ENDFOR</b></p><p><b>  *整理文科班的成績</b></p><p>  FOR I=4 TO 6</p><p><

34、;b>  DO CASE </b></p><p><b>  CASE I=4</b></p><p>  BJ_DAIMA="CJG304.DBF"</p><p><b>  CASE I=5</b></p><p>  BJ_DAIMA="CJ

35、G305.DBF"</p><p><b>  CASE I=6</b></p><p>  BJ_DAIMA="CJG306.DBF"</p><p><b>  ENDCASE</b></p><p>  USE &BJ_DAIMA</p>&

36、lt;p>  REPLACE YW WITH YW1+YW2,SX1+SX2,YY WITH YY1+YY2 ALL</p><p><b>  COTO 1</b></p><p>  REPLACE ZZ WITH ZZ1+ZZ2,LS WITH LS1+LS2,WITH DL1+DL2 ALL</p><p><b>  

37、GOTO 1</b></p><p>  REPLACE ZF WITH YW+SW+YY+ZZ+LS+DL ALL</p><p><b>  USE</b></p><p><b>  ENDFOR</b></p><p>  MESSAGEBOX('數(shù)據(jù)整理完畢!"

38、;)</p><p>  執(zhí)行上面的代碼計算每個學(xué)生的卷一、卷二以及總分成績,整理完畢后提供給后面的處理使用。</p><p>  3.6設(shè)計輸入數(shù)據(jù)模塊</p><p>  在實際考試中考試的成績由主觀成績和客觀成績兩部分組成。所以在系統(tǒng)中提供了輸入主觀成績的界面,即輸入數(shù)據(jù)模塊。</p><p>  3.6.1選擇班級模塊</p&g

39、t;<p>  在輸入數(shù)據(jù)前應(yīng)該先選擇要輸入的班級,為此設(shè)計了選擇班級的界面。在項目管理器中新建一表單,命名為“SELECT_CLASS”將Caption屬性設(shè)置為“班級選擇”,并添加2個CommandGroup控件分隔顯示界面、1個Image控件用來插入背景圖片、1個Combo控件供用戶選擇班級、2個Command控件完成控制功能,上述控件的主要屬性設(shè)置如表3—2 所示。</p><p>  表3

40、—2 屬性設(shè)置</p><p>  設(shè)計完成后界面如下圖3-5 所示</p><p>  圖3-5 選擇班級界面</p><p>  系統(tǒng)運行時允許用戶選擇所要輸入成績的班級,并根據(jù)用戶的選擇打開相應(yīng)班級的成績單供用戶修改,為此Command1控件的Click行為中添加代碼,見附錄4.5</p><p>  3.6.2設(shè)計輸入

41、學(xué)生成績表單</p><p>  在SELECT_CLASS表單中要調(diào)用一個修改學(xué)生成績的表單,下面介紹設(shè)計過程。</p><p>  在項目管理器中新建一表單,命名為“XG”將Caption屬性設(shè)置為“輸入數(shù)據(jù)”。下面為該表單設(shè)置數(shù)據(jù)環(huán)境,用鼠標(biāo)右鍵在表單空白處單擊,在彈出的快捷菜單中現(xiàn)在“數(shù)據(jù)環(huán)境”命令,將打開“數(shù)據(jù)環(huán)境設(shè)計器”窗口。接下來將SHOW,DBF 數(shù)據(jù)表添加到數(shù)據(jù)環(huán)境中,用

42、鼠標(biāo)右鍵在設(shè)計器的空白處單擊,現(xiàn)在彈出的快捷菜單中的“添加”命令。</p><p>  通過數(shù)據(jù)環(huán)境中的表可以實現(xiàn)多種功能如用數(shù)據(jù)環(huán)境在的表建立一個Gril控件,只需要將現(xiàn)在的表文件拖放到表單中即可。在此Gril控件中可以任意修改學(xué)生的成績,為了將修改的結(jié)果保存到相應(yīng)的班級成績表中,在表單上添加10個Command控件,命名為Command1,并將Caption屬性設(shè)置為“確定”,如圖3-6 所示。</p&

43、gt;<p>  圖3-6 添加Command控件</p><p>  在Command1控件的Click行為代碼窗口中添加如下代碼,將修改的結(jié)果保持到相應(yīng)的比較成績表中,其中SHOW_HILE_NAME為用戶選擇的比較成績庫文件名。代碼見附錄4.</p><p>  3.6.2 設(shè)計輸入學(xué)生成績單</p><p>  在SELECT_CL

44、ASS表單中要調(diào)用一個修改學(xué)生成績的表單,下面就介紹一下設(shè)計過程。</p><p>  在項目管理器中新建一個表單,命名為“XG”,并將該表單的Caption屬性設(shè)置為“輸入數(shù)據(jù)”。下面為該表單設(shè)置數(shù)據(jù)環(huán)境,用鼠標(biāo)右鍵在表單的空白處單擊,在彈出的快捷菜單中選擇“數(shù)據(jù)環(huán)境”命令,將打開“數(shù)據(jù)設(shè)計環(huán)境設(shè)計器”窗口。</p><p>  接下來將SHOW.DBF數(shù)據(jù)表添加到數(shù)據(jù)環(huán)境中,用鼠標(biāo)右鍵

45、在設(shè)計器的空白處單擊,選擇彈出的快捷菜單中的“添加”命令。</p><p>  通過數(shù)據(jù)環(huán)境中的表可以實現(xiàn)多種功能,如下面將用數(shù)據(jù)環(huán)境中的標(biāo)建立一個Gril空間,采用這種方法極為簡單,只需要將選擇的表文件拖放到表單中即可以創(chuàng)建一個Gril控件。</p><p>  在此Gril控件中可以修改任意修改學(xué)生的成績,十分方便。為了將修改的結(jié)果保存到相應(yīng)的班級成績表中,在該表單上添加10個Comm

46、and控件,命名為Command1,并將Caption屬性設(shè)置為“確定”,如圖3-7所示:</p><p>  圖3-7 添加Command控件</p><p>  在Command1控件的click行為代碼窗口中添加如下代碼,將修改結(jié)果保存到相應(yīng)班級成績表中。</p><p>  *選擇要輸入的班級,然后輸入該班的成績</p><p>  

47、file_name=alltrim(thisform.combo1.value)</p><p>  *刪除show.dbf表文件</p><p>  if file("show.dbf")</p><p>  delete file show.dbf</p><p><b>  endif</b>&

48、lt;/p><p>  *將用戶選擇的班級成績導(dǎo)入到show.dbf表中</p><p>  select*from&file_name into table show.dbf</p><p><b>  close all</b></p><p>  *用全局變量來保存用戶的選擇</p><p&

49、gt;  show_file_name=file_name</p><p><b>  *執(zhí)行修改表單</b></p><p>  do form xg</p><p>  *將用戶修改的數(shù)據(jù)保存到選擇的班級成績表中</p><p>  use&show_file_name</p><p>

50、;  delete all</p><p><b>  pack</b></p><p>  *將修改的結(jié)果保存到選擇的班級文件中</p><p>  append from show.dbf</p><p>  thisform.release</p><p><b>  *退出修改表

51、單</b></p><p><b>  close all</b></p><p>  至此,輸入數(shù)據(jù)的模塊就完成了。</p><p>  3.7設(shè)計高分段平均分</p><p>  高分段平均分反映的是上段分?jǐn)?shù)的平均水平,反映出高分成績的水平。高分段是人為規(guī)定的,高于該分?jǐn)?shù)段的成績都稱之為高分,對該成績平均

52、得到的數(shù)據(jù)叫做叫做高分段平均分。</p><p>  在上面的代碼的最后調(diào)用了SHOW_GFD表單,該表單的設(shè)計方法與SHOW_LJC相同,區(qū)別在于數(shù)據(jù)環(huán)境中的添加表為LKGFBB.DBF,設(shè)計界面如圖3-8所示:</p><p>  圖3-8 高分段平均分表單設(shè)計界面</p><p>  3.8設(shè)計離均差模塊</p><p>  在處理離均

53、差前首先要計算出每班每科的P值,計算過程是首先分別將一個班級的單科成績降序排列,然后將該成績序列分成3個分?jǐn)?shù)段,每個分?jǐn)?shù)段的起始點是人為規(guī)定的,其次計算出每個分?jǐn)?shù)段的平均分,最后將3個分?jǐn)?shù)段的平均分乘以一個系數(shù),將得到的結(jié)果相加得到的就是P值,接下來處理系數(shù)、可比離均差、離均差漲幅等多項數(shù)據(jù)。</p><p>  上述功能的實現(xiàn)放在了主界面中,即MAIM表單中的Command2控件的Click行為窗口,添加實現(xiàn)功

54、能的代碼。首先初始化表:</p><p>  SET TALK OFF</p><p><b>  CLOSE ALL</b></p><p><b>  *清空離均差表</b></p><p>  USE LJC.DBF</p><p>  REPLACE ALL PZH

55、WITH 0</p><p>  REPLACE LJC WITH O</p><p><b>  USE</b></p><p>  計算P值是離均差處理中的一個重要的數(shù)據(jù),在以后的計算中要重復(fù)使用,計算的方法為:將某個班的單科成績存放在一個數(shù)組中,所有的成績降序排列,排列的方法采用了效率較高的冒泡排序法。然后將排好序的成績分成3個分?jǐn)?shù)段,開

56、放分?jǐn)?shù)段的取值范圍越大則表明對P值的影響越大,具體的分?jǐn)?shù)段取值范圍讀者可以根據(jù)需要來確定。P值可以使用下面的公式計算出來:</p><p>  P=第一個分?jǐn)?shù)段的平均分*0.5+第二個分?jǐn)?shù)段的平均分*0.35+第三個分?jǐn)?shù)段的平均分*0.15</p><p>  公式中每個分?jǐn)?shù)段平均分乘以權(quán)重是根據(jù)需要確定的,用戶可以自行修改。計算出來的P值存放在LJC.DBF數(shù)據(jù)表。</p>

57、<p>  接下來處理每科成績的系數(shù),系數(shù)代表了本次考試成績與本學(xué)期第一次考試成績的比值,系數(shù)越小表明本次考試越好。計算系數(shù)就是將同種類型的班級的某一科成績存放在一個數(shù)組中,將降序的方法排列,提取前一定比例的平均分以及后一定比例的平均分,提取分?jǐn)?shù)的比例是人為規(guī)定的,將兩個分?jǐn)?shù)段的平均分相減作為系數(shù)計算的分母。使用上述方法處理的本學(xué)期的第一次考試存放在XSH.DBF中,作為本學(xué)期所有考試系數(shù)處理的分子。</p>

58、<p>  取出理科班某一科所有班級的P值,計算出該科P值的平均值,然后用理科班所有班級的相應(yīng)科目的P值和計算處理的平均值相減,得到的結(jié)果就是離均差,并將其存放在LJC.DBF表中。</p><p>  在LJC.DBF表設(shè)置了一個可比離均差,該數(shù)值反映了本次考試與上次考試的對此情況,計算的方法是用本次的離均差與本學(xué)期第一次考試離均差相減得到的結(jié)果即為可比離均差。</p><p>

59、;  接下來要計算離均差的漲幅,計算的方法是用本次的可比離均差與起始離均差與相減,得到的結(jié)果即為離均差的漲幅。</p><p>  通過上面的設(shè)計以及將所有的離均差相關(guān)的數(shù)據(jù)處理完畢,為了更加清楚地反映本次的考試結(jié)果,將處理的結(jié)果按科目排序,排序的結(jié)果存放在LJC_PX.DBF表中。完成后的設(shè)計界面如圖3-9所示:</p><p>  圖3-9 離均差設(shè)計界面</p><

60、;p>  3.9 設(shè)計大平均分</p><p>  平均分是成績處理中最為基礎(chǔ)的計算方法,在MAIN表單中鼠標(biāo)雙擊command4,打開click行為的代碼編輯窗口,將計算大平均分的功能添加到窗口中。代碼設(shè)計如下:</p><p>  *計算3理科班的大平均分</p><p><b>  CLOSE ALL</b></p>

61、<p>  CLEAR MEMORY</p><p>  SET TALK OFF</p><p>  USE DPJ.DBF</p><p>  DELETE ALL</p><p><b>  PACK USE</b></p><p>  USE DPJBB.DBF</p>

62、;<p>  DELETE ALL</p><p><b>  PACK</b></p><p><b>  USE</b></p><p>  FOR I=1 TO 3</p><p><b>  DO CASE</b></p><p>

63、<b>  CASE I=1</b></p><p>  BJ_NAME=”CJG301.DBF”</p><p>  BJ_MCH=”高三(1)班”</p><p><b>  CASE I=2</b></p><p>  BJ_NAME=”CJG302.DBF”</p><p

64、>  BJ_MCH=”高三(2)班”</p><p><b>  CASE I=3</b></p><p>  BJ_NAME=”CJG303.DBF”</p><p>  BJ_MCH=”高三(3)班”</p><p><b>  ENDCASE</b></p><p&g

65、t;  FOR J=1 TO 6 &&計算一個班中的6科成績的平均分</p><p><b>  DO CASE</b></p><p><b>  CASE J=1</b></p><p>  KM_NAME=”語文”</p><p>  KM_DAIMA=”YW”</p&g

66、t;<p><b>  CASE J=2</b></p><p>  KM_NAME=”數(shù)學(xué)”</p><p>  KM_DAIMA=”SX”</p><p><b>  CASE J=3</b></p><p>  KM_NAME=”英語”</p><p> 

67、 KM_DAIMA=”YY”</p><p><b>  CASE J=4</b></p><p>  KM_NAME=”物理”</p><p>  KM_DAIMA=”WL”</p><p><b>  CASE J=5</b></p><p>  KM_NAME=”化學(xué)”

68、</p><p>  KM_DAIMA=”HX”</p><p><b>  CASE J=6</b></p><p>  KM_NAME=”生物”</p><p>  KM_DAIMA=”SW”</p><p><b>  ENDCASE</b></p>&l

69、t;p>  USE &BJ_NAME &&打開相應(yīng)的班級庫文件</p><p>  AVERAGE &KM_DAIMA TO DKPJF && 計算單科平均分</p><p><b>  USE</b></p><p>  LOCATE FOR NAME=”&BJ_MCH”.AND.

70、KM=”&KM_NAME”</p><p>  RKJSH=T_NAME</p><p><b>  USE</b></p><p>  USE DPJ.DBF</p><p>  APPEND BLANK</p><p>  REPLACE BJ WITH BJ_MCH,KM WITH

71、KM_NAME,RK WITH RKJSH,PJF WITH DKPJF</p><p><b>  USE</b></p><p><b>  ENDFOR</b></p><p><b>  ENDFOR</b></p><p>  *處理文科班的大平均分</p>

72、;<p>  FOR I=4 TO 6</p><p><b>  DO CASE</b></p><p><b>  CASE I=4</b></p><p>  BJ_NAME=”CJG304.DBF”</p><p>  BJ_MCH=”高三(4)班”</p>&l

73、t;p><b>  CASE I=5</b></p><p>  BJ_NAME=”CJG305.DBF”</p><p>  BJ_MCH=”高三(5)班”</p><p><b>  CASE I=3</b></p><p>  BJ_NAME=”CJG306.DBF”</p>

74、<p>  BJ_MCH=”高三(6)班”</p><p><b>  ENDCASE</b></p><p>  FOR J=1 TO 6 &&計算一個班中的6科成績的平均分</p><p><b>  DO CASE</b></p><p><b>  C

75、ASE J=1</b></p><p>  KM_NAME=”語文”</p><p>  KM_DAIMA=”YW”</p><p><b>  CASE J=2</b></p><p>  KM_NAME=”數(shù)學(xué)”</p><p>  KM_DAIMA=”SX”</p>

76、<p><b>  CASE J=3</b></p><p>  KM_NAME=”英語”</p><p>  KM_DAIMA=”YY”</p><p><b>  CASE J=4</b></p><p>  KM_NAME=”物理”</p><p>  KM

77、_DAIMA=”WL”</p><p><b>  CASE J=5</b></p><p>  KM_NAME=”化學(xué)”</p><p>  KM_DAIMA=”HX”</p><p><b>  CASE J=6</b></p><p>  KM_NAME=”生物”<

78、;/p><p>  KM_DAIMA=”SW”</p><p><b>  ENDCASE</b></p><p>  USE &BJ_NAME &&打開相應(yīng)的班級庫文件</p><p>  AVERAGE &KM_DAIMA TO DKPJF && 計算單科平均分</p

79、><p><b>  USE</b></p><p>  LOCATE FOR NAME=”&BJ_MCH”.AND.KM=”&KM_NAME”</p><p>  RKJSH=T_NAME</p><p><b>  USE</b></p><p>  USE

80、DPJ.DBF</p><p>  APPEND BLANK</p><p>  REPLACE BJ WITH BJ_MCH,KM WITH KM_NAME,RK WITH RKJSH,PJF WITH DKPJF</p><p><b>  USE</b></p><p><b>  ENDFOR</

81、b></p><p><b>  ENDFOR</b></p><p>  FOR I=1 TO 9</p><p><b>  DO CASE</b></p><p><b>  CASE I=1</b></p><p>  KM_DAIMA=”

82、語文”</p><p><b>  CASE I=2</b></p><p>  KM_DAIMA=”數(shù)學(xué)”</p><p><b>  CASE I=4</b></p><p>  KM_DAIMA=”物理”</p><p><b>  CASE I=5</

83、b></p><p>  KM_DAIMA=”化學(xué)”</p><p><b>  CASE I=6</b></p><p>  KM_DAIMA=”生物”</p><p><b>  CASE I=7</b></p><p>  KM_DAIMA=”政治”</p&

84、gt;<p><b>  CASE I=8</b></p><p>  KM_DAIMA=”歷史”</p><p><b>  CASE I=9</b></p><p>  KM_DAIMA=”地理”</p><p><b>  ENDCASE</b></p

85、><p>  USE DPJBB.DBF</p><p>  APPEND FROM DPJ.DBF FOR KM”=&KM_DAIMA”</p><p><b>  USE</b></p><p><b>  ENDFOR</b></p><p>  MESSAGEBO

86、X(“數(shù)據(jù)處理完畢!”)</p><p>  DO FORM Show-DPJ</p><p>  3.10設(shè)計設(shè)置高分段</p><p>  高分段是考試結(jié)束后人為確定的,本系統(tǒng)中提供了設(shè)置高分段的一個模塊,在項目管理器中添加一個表單,命名為GFD.SHR。添加2個ComandGroup控件,用來分割表單顯示區(qū)域;3個lable控件,用來顯示標(biāo)題和提示信息;2個t

87、ext控件,供用戶輸入成績;1個Command控件,完成輸入結(jié)果的保存,</p><p>  返回到主界面,在Command6控件的click行為代碼窗口中添加如下代碼,以便用戶調(diào)用設(shè)置高分段表單:</p><p>  表3-3 主界面控件屬性設(shè)置</p><p>  設(shè)計完成的表單如圖3-10所示:</p><p>  圖3-10 高分段輸

88、入設(shè)計界面</p><p>  Do form GFD_SHR</p><p>  調(diào)用高分段設(shè)計模塊,同時在Command7控件的click行為代碼窗口中添加,退出該系統(tǒng),</p><p>  This for.release</p><p>  這個系統(tǒng)的設(shè)計工作就完成了。</p><p><b>  4

89、 調(diào)試分析</b></p><p>  在設(shè)計好了各個模塊的表單中的程序之后,對每一個模塊都進行了實驗。通過正確地輸入數(shù)據(jù),得到了與預(yù)期相同的結(jié)果,由此確定該程序的正確性和可行度。程序發(fā)布前的最后調(diào)試是指對最終功能和程序的健壯性的測試。包括最后調(diào)試和功能測試兩個方面。程序的最后調(diào)試工作是應(yīng)用程序發(fā)布版本的最后檢查階段,主要有以下幾點:程序遇到用戶錯誤操作時能否正確處理;程序的預(yù)定功能是否到達;程序在運

90、行錯誤時是否能夠正確的處理錯誤。</p><p>  在成績處理程序中,輸入了對應(yīng)的正確信息之后,在運行程序的時候也得到了正確的結(jié)果。然而在重新登錄表單的程序運行中,輸入的數(shù)據(jù)沒有進行事先的檢驗,導(dǎo)致運行之后得不到數(shù)據(jù),顯示不出來,后來重新對程序的編譯,數(shù)據(jù)的輸入進行檢查,找到了問題的所在——輸入的數(shù)據(jù)不能在數(shù)據(jù)庫表中找到。之后的數(shù)據(jù)備份模塊和系統(tǒng)維護模塊都運行正常,得到了正確的結(jié)果。</p>&l

91、t;p><b>  5 用戶使用說明</b></p><p>  在前面,我們已將各模塊的程序設(shè)計完畢,現(xiàn)在可以把它們組合起來以完成一個完整的成績計算系統(tǒng)。</p><p><b>  (1)成績錄入系統(tǒng)</b></p><p>  試卷采用主觀和客觀兩種方式的試題,客觀試題采用自動閱卷機收集成績,而主觀試題只能人工

92、來評閱。在系統(tǒng)中提供了輸入主觀試題成績的功能。在選擇班級界面選擇要輸入的班級,系統(tǒng)運行時允許用戶選擇所要輸入的班級,并根據(jù)用戶的選擇打開相應(yīng)班級的成績單供用戶修改,將修改的結(jié)果保存到相應(yīng)的班級成績表中。</p><p><b>  (2)數(shù)據(jù)處理系統(tǒng)</b></p><p>  在處理離均差前首先要計算出每班每科的P值,計算過程是首先分別將一個班級的單科成績降序排列,

93、然后將該成績序列分成3個分?jǐn)?shù)段,每個分?jǐn)?shù)段的起始點是人為規(guī)定的,其次計算出每個分?jǐn)?shù)段的平均分,最后將3個分?jǐn)?shù)段的平均分乘以一個系數(shù),將得到的結(jié)果相加得到的就是P值,接下來處理系數(shù)、可比離均差、離均差漲幅等多項數(shù)據(jù)。</p><p>  接下來處理每科成績的系數(shù),系數(shù)代表了本次考試成績與本學(xué)期第一次考試成績的比值,系數(shù)越小表明本次考試越好。計算系數(shù)就是將同種類型的班級的某一科成績存放在一個數(shù)組中,將降序的方法排列,

94、提取前一定比例的平均分以及后一定比例的平均分,提取分?jǐn)?shù)的比例是人為規(guī)定的,將兩個分?jǐn)?shù)段的平均分相減作為系數(shù)計算的分母。</p><p>  (3)成績分析處理系統(tǒng)</p><p>  計算平均分是成績處理中典型的數(shù)據(jù)處理方法,通過處理的結(jié)果可以得到成績總體水平。</p><p>  一定的分?jǐn)?shù)線稱為高分段,對超過該分?jǐn)?shù)段的成績的平均成績叫做高分段平均分,該數(shù)據(jù)顯示了

95、優(yōu)秀學(xué)生的平均情況,計算的方法為將等于或者超過高分段的成績平均,得到的值即為高分段。</p><p>  考試結(jié)束后參考以前考試的效果,人為地規(guī)定出本次考試的理科和文科的高分段。設(shè)置高分段分?jǐn)?shù)功能模塊將接受用戶的輸入。</p><p><b>  6 測試結(jié)果</b></p><p>  通過各項測試,對于程序編寫時引發(fā)的錯誤,進行了修改,最后

96、得到了正確的程序內(nèi)容。</p><p>  在測試成績處理模塊的時候,我們對測試結(jié)果進行了檢驗。,結(jié)果是沒有錯誤的。但是在數(shù)據(jù)計算模塊的時候,調(diào)用表單需要傳遞給它一個參數(shù),告訴表單計算的形式是什么。使用的select…sql語句和集合函數(shù)sum()來進行統(tǒng)計。但是我們之前并沒有考慮到這一點,所以得不到所對應(yīng)的數(shù)據(jù)。在輸入正確的信息后,我們也能夠得到正確的結(jié)果。模塊之間的聯(lián)系也處于正常狀態(tài)??偟膩碚f,測試結(jié)果是令人

97、滿意的。</p><p><b>  7 總 結(jié)</b></p><p>  這一周的安排如下:周一上午看老師所發(fā)的資料,大致了解此次課程設(shè)計的主要內(nèi)容。下午,組員在一起商量整個系統(tǒng)模塊的建設(shè),每個模塊的應(yīng)用范圍以及原理。周二,編寫主程序,每個模塊對應(yīng)下表單的相關(guān)程序。一直持續(xù)到周三上午。周三下午,對所編寫的程序進行調(diào)試,有差錯的地方及時調(diào)整。周四,編寫實驗報告,做

98、一個較為詳細的用戶說明書。周五,做最后的檢查,遞交實驗報告。我相信,這一次課程實習(xí)之后,我對于這一方面的知識會更加得心應(yīng)手。</p><p><b>  8 致 謝</b></p><p>  這一周的課程設(shè)計的學(xué)習(xí),時間雖然很短,但是真的讓我學(xué)習(xí)到了很多平時上課不能學(xué)到的東西,例如,細節(jié)決定成敗。這句話或許在平時體現(xiàn)得不是很明顯,但是在編寫程序的時候卻體現(xiàn)得淋漓盡

99、致,真的是細節(jié)決定你這個程序能不能正常運行,一個字母或者是一個符號錯了,你編寫出來的程序就不能運行了。我們學(xué)習(xí)編寫程序,學(xué)習(xí)的不只是如何來設(shè)計程序,還有如何做人,如何提高自己的能力.細心,合作,耐心,這些都是編寫所需要的。這一周,真的讓我受益匪淺,不僅提高了我的實際操作能力,還對我以后不論是在工作中還是生活中,都有很大的幫助。</p><p>  感謝學(xué)校開展了課程設(shè)計這個專周, 希望學(xué)校能夠多多開展此類教學(xué)活動

100、來豐富我們的學(xué)習(xí)生活。</p><p>  感謝在我寫這份報告時指導(dǎo)我的老師們,每次設(shè)計遇到問題時老師不辭辛苦的講解才使得我的課程設(shè)計順利的進行,花費了老師很多時間,在此,向老師們衷心的感謝,老師們嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,開拓進取的精神和高度的責(zé)任心都對我?guī)椭艽蟆?lt;/p><p>  還要感謝和我一起合作的幾位同學(xué)們,是你們在我平時設(shè)計中和我一起探討問題,并指出我的一些誤區(qū),使我能及時發(fā)現(xiàn)問題,

101、并且改正,沒有你們的幫助,我不可能這樣子順利的完成這篇報告,在此表示深深地謝意.。</p><p><b>  9 參考文獻</b></p><p>  [1] 劉衛(wèi)國.Visual FoxPro課程設(shè)計教程(第二版). 北京.北京郵電大學(xué)出版社,2005.09.34-36;</p><p>  [2] 陳洛資. 數(shù)據(jù)庫系統(tǒng)及應(yīng)用基礎(chǔ)[M].北

102、京:北京交通大學(xué)出版社,2003.08.55-56;</p><p>  [3] 黎明.計算機應(yīng)用基礎(chǔ)[M].成都:電子科技大學(xué)出版社, 2004.03.45-47</p><p>  [4] 崔巍.數(shù)據(jù)庫系統(tǒng)及應(yīng)用(第二版).北京:高等教育出版社,2003.05.35-36</p><p><b>  10 附 錄</b></p>

103、<p><b>  設(shè)計輸入數(shù)據(jù)模塊</b></p><p>  *選擇要輸入的班級,然后輸入該班的成績</p><p>  file_name=alltrim(thisform.combo1.value)</p><p>  *刪除show.dbf表文件</p><p>  if file("s

104、how.dbf")</p><p>  delete file show.dbf</p><p><b>  endif</b></p><p>  *將用戶選擇的班級成績導(dǎo)入到show.dbf表中</p><p>  select*from&file_name into table show.dbf&

105、lt;/p><p><b>  close all</b></p><p>  *用全局變量來保存用戶的選擇</p><p>  show_file_name=file_name</p><p><b>  *執(zhí)行修改表單</b></p><p>  do form xg<

106、/p><p>  *將用戶修改的數(shù)據(jù)保存到選擇的班級成績表中</p><p>  use&show_file_name</p><p>  delete all</p><p><b>  pack</b></p><p>  *將修改的結(jié)果保存到選擇的班級文件中</p><

107、;p>  append from show.dbf</p><p>  thisform.release</p><p><b>  *退出修改表單</b></p><p><b>  close all</b></p><p><b>  設(shè)計離均差模塊</b><

108、/p><p><b>  初始化表</b></p><p>  SET TALK OFF</p><p><b>  CLOSE ALL</b></p><p><b>  *清空離均差表</b></p><p>  USE LJC.DBF</p>

109、;<p>  REPLACE ALL PZH WITH 0</p><p>  REPLACE LJC WITH O</p><p><b>  USE</b></p><p><b>  計算P值</b></p><p><b>  ABC=1</b></

110、p><p>  FOR I1=1 TO 3 &&依次處理1到3班的成績</p><p>  DO CASE &&選擇班級名稱,并且存儲班名,共個3個</p><p><b>  CASE I1=1</b></p><p>  BJ_NAME="CJG301.DBF"

111、;</p><p>  BJ_MCH="高三(1)班"</p><p><b>  CASE I1=2</b></p><p>  BJ_NAME="CJG302.DBF"</p><p>  BJ_MCH="高三(2)班"</p><p&g

112、t;<b>  CASE I1=3</b></p><p>  BJ_NAME="CJG303.DBF"</p><p>  BJ_MCH="高三(3)班"</p><p><b>  ENDCASE</b></p><p>  FOR I=1 TO 6 &

113、amp;&處理各班數(shù)據(jù)</p><p><b>  DO CASE</b></p><p>  CASE I=1 &&處理一個班的成績</p><p>  USE &BJ_NAME &&打開數(shù)據(jù)庫</p><p>  K=RECCOUN()</p><p

114、>  DECLARE TEMP(K)</p><p><b>  GOTO 1</b></p><p>  KM_MCH="語文"</p><p>  FOR J=1 TO K &&傳遞給數(shù)組</p><p>  TEMP(J)=YW</p><p>&

115、lt;b>  SKIP</b></p><p><b>  ENDFOR</b></p><p>  CASE I=2 &&處理一個班的成績</p><p>  USE &BJ_NAME &&打開數(shù)據(jù)庫</p><p>  K=RECCOUNT()</p&g

116、t;<p>  DELETE TEMP(K)</p><p><b>  GOTO 1</b></p><p>  KM_MCH="數(shù)學(xué)" </p><p><b>  J=1</b></p><p>  FOR J=1 TO K &&傳遞給數(shù)

117、組</p><p>  TEMP(J)=SX</p><p><b>  SKIP</b></p><p><b>  ENDFOR</b></p><p>  CASE I=3 &&處理一個班的成績</p><p>  USE &BJ_NAME &a

118、mp;&打開數(shù)據(jù)庫</p><p>  K=RECCOUN()</p><p>  DECLARE TEMP(K)</p><p><b>  GOTO 1 </b></p><p>  KM_MCH="英語"</p><p><b>  J=1</b

119、></p><p>  FOR J=1 TO K &&傳遞給數(shù)組</p><p>  TEMP(J)=YY</p><p><b>  SKIP</b></p><p><b>  ENDFOR</b></p><p>  CASE I=4 &

120、&處理一個班的成績</p><p>  USE &BJ_NAME &&打開數(shù)據(jù)庫</p><p>  K=RECCOUN()</p><p>  DECLARE TEMP(K)</p><p><b>  GOTO 1 </b></p><p>  KM_MCH=

121、"物理"</p><p><b>  J=1</b></p><p>  FOR J=1 TO K &&傳遞給數(shù)組</p><p>  TEMP(J)=WL</p><p><b>  SKIP</b></p><p><b>

122、  ENDFOR</b></p><p>  CASE I=5 &&處理一個班的成績</p><p>  USE &BJ_NAME &&打開數(shù)據(jù)庫</p><p>  K=RECCOUN()</p><p>  DECLARE TEMP(K)</p><p><

123、b>  GOTO 1 </b></p><p>  KM_MCH"化學(xué)"</p><p><b>  J=1</b></p><p>  FOR J=1 TO K &&傳遞給數(shù)組</p><p>  TEMP(J)=HX</p><p>&

124、lt;b>  SKIP</b></p><p><b>  ENDFOR</b></p><p>  CASE I=6 &&處理一個班的成績</p><p>  USE &BJ_NAME &&打開數(shù)據(jù)庫</p><p>  K=RECCOUN()</p>

125、;<p>  DECLARE TEMP(K)</p><p><b>  GOTO 1 </b></p><p>  KM_MCH"生物"</p><p><b>  J=1</b></p><p>  FOR J=1 TO K &&傳遞給數(shù)組&

126、lt;/p><p>  TEMP(J)=SW</p><p><b>  SKIP</b></p><p><b>  ENDFOR</b></p><p><b>  ENDCASE</b></p><p>  &&下面的操作是進行的排序操

127、作</p><p><b>  M=0</b></p><p><b>  N=0</b></p><p><b>  Y=0</b></p><p><b>  &&指針變量</b></p><p>  X=0 &

128、amp;&中間變量</p><p>  FOR M=2 TO K</p><p>  IF TEMP(M)>TEMP(M-1)</p><p><b>  N=M-1</b></p><p><b>  X=TEMP(M)</b></p><p>  DO WH

129、ILE X>TEMP(N)</p><p>  TEMP(N+1)=TEMP(N)</p><p><b>  N=N-1</b></p><p><b>  IF N=0</b></p><p><b>  EXIT</b></p><p>&

130、lt;b>  ENDIF</b></p><p><b>  ENDDO</b></p><p>  TEMP(N+1)=X</p><p><b>  ENDIF</b></p><p><b>  ENDFOR</b></p><p&g

131、t;<b>  &&排序完畢</b></p><p><b>  ZH1=0</b></p><p><b>  ZH2=0</b></p><p><b>  ZH3=0</b></p><p><b>  &&

132、計算離均差</b></p><p>  FOR M=1 TO 1</p><p>  ZH1=ZH1+TEMP(M)</p><p><b>  ENDFOR</b></p><p>  FOR M=2 TO 2</p><p>  ZH2=ZH2+TEMP(M)</p>

133、<p><b>  ENDFOR</b></p><p>  FOR M=3 TO 3</p><p>  ZH3=ZH3+TEMP(M)</p><p><b>  IF EOF()</b></p><p><b>  EXIT</b></p>&l

134、t;p><b>  ENDIF</b></p><p><b>  ENDFOR</b></p><p>  P=(ZH1/1)*0.5+(ZH2/1)*0.35+(ZH3/1)*0.15</p><p><b>  CLOSE ALL</b></p><p>  USE

135、 TEACHER &&查找任課教師姓名</p><p>  LOCATE FOR NAME=BJ_MCH.AND.KM=KM_MCH</p><p>  KR_TEACHER=TEACHER.T_NAME</p><p><b>  USE</b></p><p>  USE LJC.DBF &

溫馨提示

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

評論

0/150

提交評論