?? 主程序.prg
字號:
*根據成績庫的的考號,及數目
*自動計算各班學生數,女生數
*自動識別文理科科目變化
*內含三年級排考場程序
***********分年級統計成績
***********學生成績名次,平均分,對號,教師積分運算程序
***********用于2002年——2003學年度考試的成績統計,教師積分的計算。
***********編制2003年5月24日更新 編者:朱光銳
*說明:成績庫中的班級及KL,積分庫中的KL,總分不須輸入,刪除列填"*"或者"#",表示不在統計之列的學生!
*備注欄中填有流失,轉走,留級,將自動在刪除欄中被置為"*"
*備注欄中填上刪除的記錄,將被程序徹底刪除掉
*備注欄中填有寄讀,借讀,轉入,晚來,坐級,將自動在刪除欄中被置為#"
*某科分中有半分,可在自己在表結構中將該科及總分數據改為寬度為5,小數位數為1
*積分庫中由BJ,KL,KLH,JSH可填可不填, 由程序自己推算出!
*刪除欄中為"*"的學生的各項成績一律為空及其它事項一律不打印輸出,但檔案仍存在庫中
*刪除欄中為"#"的學生的各項成績及其它事項在打印時也輸出,其名次等于其他同等分的學生的名次.其本身不計入名次!其它積分選項也不統計此類學生
*班級由得來,KL---科類是由班級設置得來!
*要把某個學生調往某班,或者對調則只須改動其編號,編號不能重復,只能后續!編號規則為五位數字,第一位代表年級,第二,三位代表班級,四,五位代表序號
*字段說明 JSH 為教師序號BJ為教師任課班級的序號!
SET TALK OFF
SET ESCA OFF
SET EXACT OFF
SET EXCL ON
SET CONS ON &&激活從程序中向 Visual FoxPro 主窗口或活動的用戶自定義窗口的輸出。
SET DATE JAPAN &&設置日期格式
SET SCORE OFF &&設定Num Lock、 Caps Lock 和 Insert 鍵狀態
SET SAFE OFF &&關閉對話框
SET STAT BAR ON &&打開狀態欄
SET CENT OFF &&設定日期格式年為2位數
SET COLOR TO &&設定配色方案
SET SYSMENU OFF &&關閉系統主菜單
CLEA &&刷新屏幕
CLEAR ALL &&清理變量
CLOS ALL
SET SAFE OFF
SET SAFE ON
PUBLIC path0,zdm
path0=LEFT(SYS(16),RAT("\",SYS(16)))
=IMES(0)
*SET DEFAULT TO SYS(5)+SYS(2003)
***********************************************************************************初始化變量結束
IF DIRE(path0)
SET DEFA TO &path0
ELSE
path0= GETDIR(HOME(),"成績統計軟件的默認工作目錄")
SET DEFA TO &path0
ENDIF
*ON ERROR DO err &&設定出錯處理程序
*on shutdown do qUIT1 &&指定當試圖退出FoxPro時,要執行的命令,否則提示不能退出FoxPro
WITH _SCREEN &&設定FoxPro主窗口屬性
.VISIBLE=.F. &&設定主窗口不可見
ENDWITH
WITH _SCREEN &&對主窗口進行再次設定
.CLOSABLE=.T.
.CONTROLBOX=.T.
.MAXBUTTON=.T.
.MINBUTTON=.T.
.MOVABLE=.T.
.TOP=0
.LEFT=0
.WINDOWSTATE=2 &&將主窗口最大化
.CAPTION="中學學生成績統計專用——2003.6.20更新"
.ICON='MISC01.ico' &&設定圖標
ENDWITH
*************************************定義全局變量
*********************************************************************************定義變量開始
FOR i=1 TO 35
zdm="H"+ALLT(STR(i))
zdm1="HMLX"+ALLT(STR(i))
zdm2="HMKD"+ALLT(STR(i))
PUBLIC (zdm),(zdm1),(zdm2)
ENDF
FOR i=1 TO 12
zdm="ZB"+ALLT(STR(i))
zdm1="ZBLX"+ALLT(STR(i))
zdm2="ZBKD"+ALLT(STR(i))
zdm3="ZBWS"+ALLT(STR(i))
PUBLIC (zdm),(zdm1),(zdm2),(zdm3)
ENDF
****************************
PUBLIC path0,pathkc,pathbak,pathdat,pathprint,pathdbf,pathtemp,pathfb,temp,temp1,temp2 &&工作目錄,成績表的目錄,教學積分的目錄
PUBLIC sffwlk,sffwlk1 &&是否分文理科 1表示不分文理科,2表示分文理科
PUBLIC dxhz &&大寫漢字"一二三四五六七八九十"
PUBLIC dqrq,ksqc,dqnf,jdmcbh,jdmc,jdmc_all &&當前日期,考試全稱,當前年份,考試階段名稱考號,及其集合,考試階段名稱 &&1,2,3,4春,秋的期中,期末,8--19,代表12個月
PUBLIC bjs,wbjs,lbjs,wk_bj,lk_bj,sy_bj,nj,njmc &&班級數,文、理班級數,文、理科班級項的集合,所有使用班級項目的集合,年級、年級名稱
PUBLIC bjmc_all &&班級名稱的總集合
PUBLIC sjbjrs[20],sfbjrs[20],bjrs_max,min_brs,max_brs,nvsrs[20],nansrs[20],rs1,rs2&&最大人數的班
PUBLIC kms,wkms,lkms,kmmc_all,wk_km,lk_km ,sy_km&&科目數,文、理科目數,全部科目的總集合,所有使用的文、理的科目的集合
PUBLIC tj_bmc,tj_zmc &&統計班名次、統計總名次、年級對號、班級對號的集合
PUBLIC jss &&該年級的教師數
PUBLIC jgfbl,yxfbl,dfbl,fdbl,zhzsjsgs &&及格分\優秀\低分比率,FDBL,綜合指數計算公式
*******************最大支持20個班級18門科目,以下對應21個積分指標.
PUBLIC pjf[20,18],jgs[20,18],rs[20],yxs[20,18],dfs[20,18],zgf[20,18],zdf[20,18],mf[18]
PUBLIC file1,file2,file3,file4,file5,wjm1,wjm2,wjm3,wjm4,wjm5 &&第一、二、三、四、五工作區的文件全名(帶路徑與擴展名)與文件名(不帶路徑與擴展名)
PUBLIC wk_kms,lk_kms,bjdyrs
PUBLIC lfsfjs &&零分是否計算平均分
PUBLIC zfmf,zwmf,zlmf
PUBLIC kmzdlb,sxkm
PUBLIC sftjzbs,zhksjsld &&是否統計借讀,寄讀,轉入,晚來,坐級的學生的平均分及分段統計人數
PUBLIC sfzxpl,pkcck &&排考場是否分班叉開
pkcck=.T.
sfzxpl=.F.
STOR 70 TO sjbjrs,sfbjrs,bjrs_max,min_brs,max_brs
sftjzbs=.T.
zhksjsld=.T.
STOR 1999 TO rs1,rs2
*************************************************************************************定義變量結束
SET SAFE OFF
DELE FILE temp*.mem
IF FILE('A.FXP')
DELE FILE a.fxp
ENDIF
if year(date())>=2004
IF FILE("CJTJARUI.lhm")
DELE FILE cjtjarui.lhm
ENDIF
endif
DELE FILE *.idx
DELE FILE *.bak
SET SAFE ON
CLOSE DATA
***********************************************************************************初始化變量
FOR i=1 TO 35
zdm="H"+ALLT(STR(i))
zdm1="HMLX"+ALLT(STR(i))
zdm2="HMKD"+ALLT(STR(i))
STOR "" TO (zdm)
STOR "N" TO (zdm1)
STOR 4 TO (zdm2)
ENDF
kmzdlb="語文,數學,外語"
sxkm="語文"
hmlx1="C"
hmlx2="C"
hmlx3="d"
hmlx4="c"
hmlx5="c"
******************************
hmkd1=9
hmkd2=2
hmkd3=8
hmkd4=8
hmkd5=40
hmkd6=4
hmkd35=3
*************************
h1="學號"
h2="性別"
h3="出生年月"
h4="家長姓名"
h5="家庭住址"
********************0
h6="入學分"
h7="入學BMC"
h8="入學ZMC"
**************1
h9 ="一上期中分"
h10="一上期中ZM"
**************2
h11='一上期末分'
h12='一上期末ZM'
**************3
h13="一下期中分"
h14="一下期中ZM"
**************4
h15='一下期末分'
h16='一下期末ZM'
**************5
h17="二上期中分"
h18="二上期中ZM"
**************6
h19='二上期末分'
h20='二上期末ZM'
**************7
h21="二下期中分"
h22="二下期中ZM"
**************8
h23='二下期末分'
h24='二下期末ZM'
**************9
h25="三上期中分"
h26="三上期中ZM"
**************10
h27='三上期末分'
h28='三上期末ZM'
**************11
h29="三下期中分"
h30="三下期中ZM"
**************12
h31='三下適應分'
h32='三下適應ZM'
**************13
h33="中考總分"
h34="中考ZMC"
h35='中考BMC'
**************14
PUBLIC lncjh[14]
lncjh[14]=35
FOR i=1 TO 13
lncjh(i)=6+i*2
ENDF
**********************積分表中的指標
FOR i=1 TO 11
zdm="ZB"+ALLT(STR(i))
zdm1="ZBLX"+ALLT(STR(i))
zdm2="ZBKD"+ALLT(STR(i))
zdm3="ZBWS"+ALLT(STR(i))
STOR "" TO (zdm)
STOR "N" TO (zdm1)
STOR 6 TO (zdm2)
STOR 2 TO (zdm3)
ENDF
zb1="平均分"
zb2="及格數"
zb3="人數"
zb4="及格率%"
zb5="優秀數"
zb6="優秀率%"
zb7="低分數"
zb8="低分率%"
zb9="最高分"
zb10="最低分"
zb11="綜合指數"
****************************
STOR 0 TO zbws2,zbws3,zbws5,zbws7,zbws9,zbws10
STOR 4 TO zbkd2,zbkd3,zbkd5,zbkd7,zbkd9,zbkd10
STOR 4 TO zbws11
****************************
jgfbl=60
yxfbl=80
dfbl=40
fdbl=10
zhzsjsgs="(平均分/MF(KLH)+及格率%/100+優秀率%/100+1-低分率%/100)/3"
STOR .T. TO lfsfjs
STOR 1 TO rs
STOR 0 TO pjf,jgs,jgl,yxs,yxl,dfs,dfl,zgf,zdf,zhzs
temp='語文+數學+外語+物理+化學+生物+政治+歷史+地理'
temp1="物理+化學+生物"
temp2="政治+歷史+地理"
STOR 45 TO nansrs
STOR 25 TO nvsrs
STOR 100 TO mf
zfmf=660
zlmf=150
zwmf=150
wk_mf=660
lk_mf=660
STOR path0+"數據備份\" TO pathbak
STOR path0+"原始數據\" TO pathdbf
STOR path0+"處理結果\" TO pathdat
STOR path0+"考場安排\" TO pathkc
STOR path0+"臨時數據\" TO pathtemp
STOR path0+"打印輸出\" TO pathprint
STOR path0+"分班結果\" TO pathfb
IF .NOT. DIRE(pathbak)
MD (pathbak)
ENDIF
IF .NOT. DIRE(pathfb)
MD (pathfb)
ENDIF
IF .NOT. DIRE(pathdbf)
MD (pathdbf)
ENDIF
IF .NOT. DIRE(pathdat)
MD (pathdat)
ENDIF
IF .NOT. DIRE(pathkc)
MD (pathkc)
ENDIF
IF .NOT. DIRE(pathtemp)
MD (pathtemp)
ENDIF
IF .NOT. DIRE(pathprint)
MD (pathprint)
ENDIF
STOR "⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇" TO bjmc_all &&一個年級最多班級可為20個
FOR i=21 TO 50
bjmc_all=bjmc_all+STR(i,2)
ENDF
STOR "__入學上期中上期末下期中下期末適應性__中考__01月__02月__03月__04月__05月__06月__07月__08月__09月__10月__11月__12月" TO jdmc_all
STOR "一二三四五六七八九十" TO dxhz
*********************************************
********裝入年份,年級,班級數,科目節次,文件名,日期,考試全稱等默認初始值
STOR 1 TO nj
STOR 1 TO sffwlk,sffwlk1
STOR 70 TO min_brs
STOR "zgr" TO file1,file2,file3,file4,file5,wjm1,wjm2,wjm3,wjm4,wjm5
njmc=SUBS(dxhz,nj*2-1,2)+"年級"
dqrq=DATE() &&當前日期
dqnf=YEAR(dqrq) &&當前年份
*!* DO 變量定義.FXP
DO tcnfrqjdmc &&推測年級,年份,日期,階段名稱JDMC,考試全稱KSQC
*******************************************初始班級信息,科目信息
*********裝入默認值
sy_bj="⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽"&&所使用的班級所有集合是全部集合的一部分!
wk_bj="⑴⑵⑶⑷"
lk_bj="⑸⑹⑺⑻⑼⑽"
bjs= LENC(sy_bj)
wbjs=LENC(wk_bj)
lbjs=LENC(lk_bj)
jss=bjs*8
kmmc_all= "語文數學外語物理化學生物綜理政治歷史地理綜文音樂美術勞技代數幾何算術思品自然總分"
sy_km="語文數學外語物理化學生物綜理政治歷史地理綜文總分"
wk_km="語文數學外語政治歷史地理綜文總分"
lk_km="語文數學外語物理化學生物綜理總分"
kms=LEN(sy_km)/4
wkms=LEN(wk_km)/4
lkms=LEN(lk_km)/4
PUBLIC mima
mima='zzzzzz'
*?'z'+strt(ALLT(STRT(STR(COS(SIN(機器號)),12,10),'.','')),'-','')===>序列號
***********************************************************************
DO tcmcm &&推測字段名(名次名,對號名)
***********************************************************************
password1='ZZZZZZZZ'
IF FILE("CJTJARUI.zgr")
RESTOR FROM cjtjarui.zgr ADDI
mima=password1
else
IF FILE("CJTJARUI.lhm")
RESTOR FROM cjtjarui.lhm ADDI
mima=password1
ENDIF
ENDIF
IF mima<>'z'+STRT(ALLT(STRT(STR(COS(SIN(VAL(SYS(2020))*2)),12,10),'.','')),'-','')
DO FORM koulin
READ EVEN
ENDIF
DO FORM 封面 NAME 封面1 &&執行啟動畫面(包括版權、版本、使用者等)
DO FORM 字幕動畫.scx NAME 動畫1 &&菜單部分
READ EVENT
*!*定義子程序*********************************************
PROC dakai1() &&子程序:打開成績表,讀取學生信息,初始化有關變量
IF mima<>'z'+STRT(ALLT(STRT(STR(COS(SIN(VAL(SYS(2020))*2)),12,10),'.','')),'-','')
=MESSAGEBOX(" 試用版,只能由計算機填入模擬數據!不能導入數據,更不能錄入數據!請記下機器號";
+CHR(13)+"與白水高中:朱光銳 聯系獲得序列號,TEL:6726356!,感謝支持正版!",16,"未授權!")
RETU
ENDIF
CLOSE DATA
SET DEFA TO &pathdbf
file1=GETFI("DBF",'學生成績表','打開',0,"打開學生成績表")
SET DEFA TO &path0
wjm1=STRT(RIGHT(file1,LEN(file1)-RAT("\",file1)),".DBF","")&&不帶路徑,不帶擴展名".DBF"的文件名
IF .NOT. FILE(file1)
IF MESSAGEBOX("指定的成績表文件&FILE1.不存在,是否新建一個成績表",36,"打開文件失敗!")=6
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -