• 
    

    
    

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

      ?

      電腦派位錄取程序的原理及其編寫

      2008-12-04 02:36:00張小剛
      關(guān)鍵詞:源代碼程序

      張小剛

      摘 要:鑒于當(dāng)前部分民辦學(xué)校擁有較優(yōu)質(zhì)資源和教學(xué)實(shí)績(jī),往往出現(xiàn)報(bào)名人數(shù)多于錄取人數(shù)的情況。這時(shí),采用電腦軟件進(jìn)行隨機(jī)派位錄取是學(xué)校和社會(huì)所能接受的解決問題的普遍方法。本文介紹了電腦派位錄取程序的原理及其編寫。

      關(guān)鍵詞:電腦派位;隨機(jī);程序;源代碼

      中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1673-8454(2008)22-0060-02

      鑒于當(dāng)前部分民辦學(xué)校擁有較優(yōu)質(zhì)資源和教學(xué)實(shí)績(jī),往往出現(xiàn)報(bào)名人數(shù)多于錄取人數(shù)的情況。這時(shí),采用電腦軟件進(jìn)行隨機(jī)派位錄取是學(xué)校和社會(huì)所能接受的解決問題的普遍方法。鑒于社會(huì)關(guān)注度高等因素,決定了本程序設(shè)計(jì)必須做到選擇公平公正、選擇隨機(jī)、源代碼可以當(dāng)場(chǎng)展示講解且程序代碼百分之百正確,因此,雖然程序原理及運(yùn)行流程比較簡(jiǎn)單,許多學(xué)校也有具備一定知識(shí)水平的人員,卻很少有敢于承擔(dān)此項(xiàng)編程工作的。為此,本文就程序原理、代碼編寫及其在某校實(shí)際運(yùn)行過(guò)程中的操作方法進(jìn)行簡(jiǎn)要論述,并附全部源代碼,以供參考。

      一、編程語(yǔ)言的選擇

      由于關(guān)注度高,因此程序和運(yùn)行環(huán)節(jié)的公正性要求能接受社會(huì)公開監(jiān)督。有些學(xué)校為了保證其公正性不受置疑,除了請(qǐng)公證處全程公證,甚至采取電視直播的方法進(jìn)行。這就要求我們的程序能以最簡(jiǎn)潔的代碼來(lái)實(shí)現(xiàn)所需功能,以便能在運(yùn)行前當(dāng)場(chǎng)展示并講解程序代碼及原理。基于此,綜合考慮當(dāng)前流行的主要編程語(yǔ)言,我們優(yōu)先選擇了Visual Foxpro:代碼簡(jiǎn)潔、便于講解、源代碼無(wú)需編譯即可直接運(yùn)行,同時(shí)其DBF文件格式與學(xué)校一般采用的Excel錄入的報(bào)名學(xué)生名冊(cè)文件可以自由轉(zhuǎn)換。

      二、程序原理

      以在江蘇省南通市有影響的某實(shí)驗(yàn)初中為例,要求在報(bào)名的1500多名學(xué)生中隨機(jī)選擇516人錄取,分6個(gè)批次進(jìn)行,前5批次每次取100人,最后取16人。程序運(yùn)行時(shí),先對(duì)原始數(shù)據(jù)文件進(jìn)行備份,根據(jù)在屏幕上顯示“第x批”按鈕及當(dāng)前待選庫(kù)人數(shù)、本批選擇進(jìn)度條等組成程序運(yùn)行界面。每按動(dòng)“第x批”按鍵一次,電腦計(jì)算本批次應(yīng)產(chǎn)生的選中人數(shù)(如果總的待選擇數(shù)大于100則為100,否則為剩余數(shù)),隨機(jī)對(duì)當(dāng)前待選擇庫(kù)進(jìn)行派位,直到選中本批次待選人數(shù),顯示選擇結(jié)果,將選中名單導(dǎo)出到“批次.dbf”和“批次.xls”文件,并顯示報(bào)告,將已選出名單從待選擇庫(kù)中刪除,打印本批名單交公證處及相關(guān)人員簽字,如果還有待選擇名單,則屏幕界面上顯示 “第x+1批”按鈕,以供下一批次的選擇,否則選擇按鈕顯示為“選擇結(jié)束”。

      三、數(shù)據(jù)準(zhǔn)備及代碼編寫

      數(shù)據(jù)準(zhǔn)備:將學(xué)校提供的經(jīng)公證處檢查認(rèn)可的報(bào)名Excel文件保留其中的“姓名”、“身份證號(hào)”或登記號(hào)(需唯一)并另存生成bmk.DBF文件。打開該DBF文件,運(yùn)行modi stru命令,添加“原始記錄號(hào)”、“選中”、“選中順序”三個(gè)數(shù)值型字段,運(yùn)行命令repl all原始記錄號(hào) with recno(),數(shù)據(jù)準(zhǔn)備完畢。

      在新窗體添加四個(gè)標(biāo)簽,分別為L(zhǎng)abel1、Label2、Label3、Progress1,將Label2的Caption設(shè)置為“進(jìn)度”且與Progress1水平對(duì)齊,將Progress1的BackColor設(shè)置為“0,0,255”,即藍(lán)色,添加兩個(gè)命令按鈕,名稱分別為Command1、Command2,將Command1的Caption設(shè)置為“第1批”,將Command2的Caption設(shè)置為“退出”。

      1.對(duì)窗體的Init即初始化部分添加代碼

      *行前帶*號(hào)的為注解

      set esca off

      set talk off

      this.visible=.t.

      this.autocenter=.t.

      this.Command1.Caption="第1批"

      public 批次,需選人數(shù),已選出數(shù),oldwidth

      clos all

      sele 1

      use bmk

      *將標(biāo)志清0,防止被事先設(shè)置

      repl all 選中 with 0,選中順序 with 0

      copy to bmk原始備份

      批次=1

      需選人數(shù)=516

      this.label1.Caption="待選出總?cè)藬?shù)"+ltrim(str(需選人數(shù)))+",已選出0"

      已選出數(shù)=0

      **隨機(jī)數(shù)初始化

      rand(-100)

      oldwidth=thisform.Progress1.width

      coun to totalnow

      this.label3.Caption="待選庫(kù)現(xiàn)有總?cè)藬?shù)"+ltrim(str(totalnow))

      **界面顯示完成,等待進(jìn)行選擇

      2.對(duì)Command1的Click即點(diǎn)擊事件添加代碼

      rand(-100)

      if 需選人數(shù)-已選出數(shù)>100 then

      本批數(shù)=100

      else

      本批數(shù)=需選人數(shù)-已選出數(shù)

      endi

      go bott

      庫(kù)中還有總?cè)藬?shù)=recno()

      本批已選=0

      **當(dāng)本批已選<本批數(shù)時(shí) 循環(huán)選擇,考慮了防止被事先設(shè)置選中標(biāo)記的情況

      do whil 本批已選<本批數(shù)

      **產(chǎn)生隨機(jī)的選中行號(hào)隨機(jī)數(shù)精度為小數(shù)后5位(0-1)

      隨機(jī)數(shù)=round(庫(kù)中還有總?cè)藬?shù)*round(rand(),5),0)

      **如果隨機(jī)數(shù) 變量>=1,就去判斷選擇該行,

      if 隨機(jī)數(shù)>=1 then

      go 隨機(jī)數(shù)

      **如果該行的選中標(biāo)記不是1,那么“本批已選”變量加1,該行的“選中”為1,選擇順序放置在“選中順序” if 選中<>1 then

      本批已選=本批已選+1

      repl 選中 with 1,選中順序 with 本批已選

      thisform.Progress1.width=本批已選*oldwidth/本批數(shù)

      thisform.refresh

      endi

      endi

      **空循環(huán),產(chǎn)生延時(shí)效果

      delay1=1

      do whil delay1<10000

      kk=round(123456789/456789.8,8)

      delay1=delay1+1

      endd

      endd

      **將本批選中的行拷貝到“批次.dbf”例如“1.dbf”

      copy to ltrim(str(批次)) for 選中=1

      **將本批選中的行拷貝到 批次.xls

      copy to ltrim(str(批次)) xlsfor 選中=1

      **將本批選中的行從當(dāng)前待選擇表刪除

      dele allfor 選中=1

      pack

      已選出數(shù)=已選出數(shù)+本批已選

      thisform.Progress1.width=oldwidth

      thisform.Label1.Caption="待選出總?cè)藬?shù)"+ltrim(str(需選人數(shù)))+",已選出"+ltrim(str(已選出數(shù)))

      coun to totalnow

      thisform.label3.Caption="待選庫(kù)現(xiàn)有總?cè)藬?shù)"+ltrim(str(totalnow))

      =MESSAGEBOX("第"+ltrim(str(批次))+"批"+ltrim(str(本批已選))+"已選出",48,'提示')

      =MESSAGEBOX("本批名單已導(dǎo)出到文件"+ltrim(str(批次))+".xls及"+ltrim(str(批次))+".dbf",48,'提示')

      批次=批次+1

      if 已選出數(shù)<需選人數(shù)

      thisform.Command1.Caption="第"+ltrim(str(批次))+"批"

      else

      =MESSAGEBOX('選擇全部完成!',48,'提示')

      thisform.Command1.Caption="選擇結(jié)束"

      thisform.Command1.Enabled=.f.

      thisform.Command2.Enabled=.T.

      endi

      retu

      CLOS all

      四、程序運(yùn)行

      程序運(yùn)行前,先將經(jīng)公證處檢驗(yàn)密封的派位運(yùn)行專用電腦啟封,查看派位程序運(yùn)行的硬盤分區(qū)如E盤內(nèi)容應(yīng)為空白。將經(jīng)公證處事先檢驗(yàn)并密封的數(shù)據(jù)和程序U盤插上,將數(shù)據(jù)和程序從U盤拷貝到E盤,打開 Bmk.dbf文件當(dāng)眾展示,打開程序文件展示源代碼并講解其原理,即可準(zhǔn)備運(yùn)行。在每一批次(一般由嘉賓點(diǎn)擊按鈕)錄取名單生成后,根據(jù)指示當(dāng)場(chǎng)將運(yùn)行文件夾下的如 “2.xls”文件打開,展示并打印交簽字。

      本軟件通過(guò)簡(jiǎn)潔有效的代碼實(shí)現(xiàn)了電腦隨機(jī)派位錄取,結(jié)合相應(yīng)的操作流程,保證了整個(gè)選擇的隨機(jī)性、公平公正性,在實(shí)際應(yīng)用中取得良好的社會(huì)效果。

      猜你喜歡
      源代碼程序
      人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
      基于TXL的源代碼插樁技術(shù)研究
      試論我國(guó)未決羈押程序的立法完善
      軟件源代碼非公知性司法鑒定方法探析
      失能的信仰——走向衰亡的民事訴訟程序
      基于語(yǔ)法和語(yǔ)義結(jié)合的源代碼精確搜索方法
      “程序猿”的生活什么樣
      英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
      揭秘龍湖產(chǎn)品“源代碼”
      創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
      罗城| 安平县| 收藏| 柘荣县| 福贡县| 贵溪市| 化德县| 枣强县| 增城市| 锡林郭勒盟| 安化县| 武定县| 舟山市| 彭山县| 辽宁省| 宝清县| 宁乡县| 成安县| 台江县| 雷州市| 松原市| 南川市| 开化县| 辉县市| 石家庄市| 浪卡子县| 靖江市| 深水埗区| 乌拉特后旗| 杨浦区| 乌拉特中旗| 鄢陵县| 安徽省| 庆元县| 修水县| 历史| 枝江市| 三原县| 盐亭县| 健康| 东城区|