• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      使用VFP隨機抽簽安排考生座位

      2017-05-16 22:18孟漢卿

      孟漢卿

      摘要:市場見到的實驗操作考試抽簽軟件存在工作非常繁重,尾數(shù)考場抽簽不公平,工作量大等問題。用VFP編寫的實驗操作考試抽簽軟件,易操作,簡單實用。

      關(guān)鍵詞:實驗操作考試抽簽;工作非常繁重且不公平;用VFP編寫;易操作;簡單實用

      中圖分類號:G632.0 文獻標(biāo)識碼:A 文章編號:1992-7711(2017)03-0111

      山西省在全省范圍加試理化實驗操作。每場48人,要采取隨機抽簽的辦法分物理24人、化學(xué)24人,只考一科。為公平公正要求用計算機抽簽決定考生所考試題,目前見到各地市自編的軟件存在以下問題:首先,考試的前、后期準(zhǔn)備工作非常繁重,而且尾數(shù)考場抽簽非常不合理,把不到24人的考生放到一個考場,這樣對考生失去公平。其次,每場考試結(jié)束后登分,不能及時出成績,試卷按報名號順序整理,這樣勢必造成兩個考場考生試卷打亂,增加工作量。

      為了不影響其他考生正常學(xué)習(xí),按照班級順序逐班考試。根據(jù)這些要求,用VFP編寫了一個《大同市中考理化實驗操作抽簽軟件》。

      第一步:建表

      新建兩個表,一個名為學(xué)生.dbf的表(學(xué)校,學(xué)號,姓名,班級),一個名為abc.dbf的表(學(xué)校,學(xué)號,姓名,班級,考場,學(xué)科,座位號,成績)。

      第二步:建菜單

      新建四個名為數(shù)據(jù)導(dǎo)入、考場設(shè)置、數(shù)據(jù)導(dǎo)出、退出的菜單。

      1. 我們的數(shù)據(jù)是招辦提供的Excel格式的,我要把它轉(zhuǎn)換為以dbf擴展名的表。

      use 學(xué)生 exclusive &&以獨占方式打開學(xué)生表

      zap &&物理刪除表中所有記錄

      append from getfile('xls','','',0,'選擇一個Excel文件')type xl5 &&添加以擴展名xls的表

      delect for 姓名='' and 學(xué)號='' &&刪除姓名并且學(xué)號為空的記錄標(biāo)記

      pack &&徹底刪除帶有刪除標(biāo)記的記錄

      select * from 學(xué)生 into sursor 導(dǎo)入的數(shù)據(jù) &&查詢導(dǎo)入的數(shù)據(jù)“學(xué)生”,存放在臨時表“導(dǎo)入的數(shù)據(jù)”

      brow &&瀏覽“導(dǎo)入的數(shù)據(jù)”表

      2. 考場設(shè)置

      close all &&關(guān)閉所有打開的數(shù)據(jù)庫,表和索引

      delete file fzh.dbf &&從磁盤上刪除指定文件

      if file("fzh.bak") &&如果發(fā)現(xiàn)備份文件

      delete file fzh.bak &&刪除fzh備份文件

      endif

      use abc.dbf &&打開abc表

      zap &&徹底刪除表中所有記錄

      use &&關(guān)閉abc表

      use 學(xué)生 &&打開學(xué)生表

      copy to fzh &&復(fù)制到fzh表

      use &&關(guān)閉fzh表

      alter table fzh add kc c(2) &&在表中添加考場(ck)字段

      use fzh &&打開zfh表

      go top &&記錄指針指向第一條記錄

      do while not eof() &&指針不在記錄尾循環(huán)

      kch=1 &&給考場號賦值

      kch=ceiling(recn()/48) &&記錄號除以48再利用函數(shù)ceiling()向上取整產(chǎn)生考場號

      replac kc with padl(kch,2,[0]) &&更新kc

      skip &&記錄指針向下走一個

      kch=kch+1 &&考場號加1

      enddo &&結(jié)束循環(huán)

      use &&關(guān)閉表

      set date to ymd &&設(shè)置日期為年月日

      do form lh.scx &&運行理化實驗抽簽表單lh

      3. 數(shù)據(jù)導(dǎo)出

      判斷abc表是否使用,如果使用關(guān)閉當(dāng)前工作區(qū)中的abc表。如果fzh有記錄數(shù)據(jù),把數(shù)據(jù)導(dǎo)出到abc表中,并且出現(xiàn)一個信息提示對話框,程序代碼這樣寫:

      IF Used("abc")

      USE IN abc

      ENDIF

      USE abc

      if recc()<>0

      COPY TO PUTFILE("","","xls") TYPE xls

      messagebox("數(shù)據(jù)導(dǎo)出成功",0+64,"提示信息")

      else

      messagebox("沒有數(shù)據(jù),不能導(dǎo)出",0+64+0,"提示!")

      Endif

      4. 退出

      quit &&關(guān)閉所有文件并退出vfp

      第三步:建表單

      新建一個名為lh.scx的表單,表單上加兩個標(biāo)簽Label1、Label2的caption分別為大同市理化實驗操作抽簽程序、選擇場次作為提示。表單上加入一個下拉列表框,程序運行時用于選擇場次。表單上加入四個命令按鈕并將command1、command2、command3、command4的caption分別設(shè)為抽簽、預(yù)覽、打印、退出。

      (1)在組合框的屬性RowSource中輸入:

      select distinct kc from fzh into cursor temp &&查詢考場不重復(fù)的值保存到臨時表temp

      在RowSourceType屬性里選擇3-SQL語句

      (2)command1的click中輸入:

      set safe off &&關(guān)閉程序運算的顯示過程

      if file("fzh1.dbf") &&判斷表fzh1是否存在

      release fzh1

      endif

      use fzh

      copy to fzh1 for kc=thisform.combo1.value

      use in fzh

      use fzh1

      if reccount()<48 &&判斷尾數(shù)考場是否為48人

      n=48-reccount()

      for i=1 to n

      append blank

      endfor

      endif

      use

      select round(rand(),6) as sjh, * from fzh1 into cursor b1 &&添加一隨機6位數(shù)字段sjh保存到臨時表b1

      select * from b1 order by sjh into table fzh2 &&對臨時表排序

      use in fzh1

      alter table fzh2 add xk c(8) &&添加字符型字段xk到fzh2

      alter table fzh2 add zwh n(4) &&添加數(shù)值型字段zwh到fzh2

      repl xk with "物理" for recn()<=24 &&更新小于24的記錄號xk為物理

      repl xk with "化學(xué)" for recn()>24 &&更新大于24的記錄號xk為化學(xué)

      repl zwh with recn() for recn()<=24 &&更新小于24的記錄號座位號

      repl zwh with recn()-24 for recn()>24 &&更新大于24的記錄號座位號

      IF USED("abc") &&判斷表abc是否存在

      SELECT abc

      ELSE

      USE abc

      ENDIF

      use abc

      append from fzh2 &&把數(shù)據(jù)追加到fzh2

      use

      (3)command2的click中輸入:

      use fzh2

      use in select( 'fzh')

      if file("lh.frx")

      REPORT FORM lh.frx NOEJECT NOCONSOLE preview

      else

      return

      endif

      (4)command3的click中輸入:

      if file("lh.frx")

      SET PRINTER TO NAME GETPRINTER()

      report form lh.frx to printer prompt noconsole

      else

      return

      endif

      (5)command4的click中輸入:

      messagebox("請退出程序前把數(shù)據(jù)導(dǎo)出",64,"理化實驗操作系統(tǒng)") &&提示對話框是否退出

      *對學(xué)生、fzh、fzh1、fzh2四個表物理刪除全部記錄

      use 學(xué)生.dbf

      zap

      use

      use fzh.dbf

      zap

      use

      use fzh1

      zap

      use

      use fzh2

      zap

      use

      thisform.release &&退出表單

      《大同市中考理化實驗操作抽簽軟件》克服了上述的缺點,給考點工作人員減輕了不少負擔(dān),而且考試結(jié)束后,考生成績結(jié)果10分鐘就張榜公布。

      (作者單位:山西省大同市教育技術(shù)裝備中心 037000)

      牡丹江市| 湾仔区| 灵石县| 开鲁县| 兴山县| 丘北县| 宁远县| 泰来县| 格尔木市| 江安县| 南汇区| 子长县| 丹阳市| 兴义市| 万州区| 中西区| 额敏县| 台州市| 黔西县| 高雄县| 土默特左旗| 临沧市| 孟村| 龙江县| 石林| 灵丘县| 永新县| 龙川县| 保亭| 曲周县| 松江区| 柳河县| 静安区| 湖州市| 旌德县| 文成县| 呼玛县| 高淳县| 九寨沟县| 罗江县| 惠东县|