?? 主程序.prg
字號:
DO xinjian1
RETU
ENDIF
ELSE
SELE 0
USE (file1) ALIAS cjk
SELE cjk
****************推測年級值開始****************************************
RECALL ALL
DELE FOR 備注="刪除"
PACK
BLAN ALL FIELDS 去尾
REPL ALL 刪除 WITH "*" FOR 備注="流失"
REPL ALL 刪除 WITH "*" FOR 備注="轉走"
REPL ALL 刪除 WITH "*" FOR 備注="留級"
REPL ALL 刪除 WITH "#" FOR 備注="借讀"
REPL ALL 刪除 WITH "#" FOR 備注="寄讀"
REPL ALL 刪除 WITH "#" FOR 備注="晚來"
REPL ALL 刪除 WITH "#" FOR 備注="轉入"
REPL ALL 刪除 WITH "#" FOR 備注="坐級"
DELE FOR 刪除="*" &&
********找出最少班的人數
REPL ALL 班級 WITH VAL(SUBS(考號,2,2))
GO TOP
LOCA FOR LEFT(考號,1) $ "123" .AND. 刪除<>"*"
IF FOUND()
nj= VAL(LEFT(考號,1))
ELSE
IF "一年級" $ wjm1
nj=1
ENDIF
IF "二年級" $ wjm1
nj=2
ENDIF
IF "三年級" $ wjm1
nj=3
ENDIF
ENDIF
GO TOP
LOCA FOR kl="2"
IF FOUND()
sffwlk=2
ELSE
sffwlk=1
ENDIF
njmc=SUBS(dxhz,nj*2-1,2)+"年級"
***************推測年級值------結束***************************************
***************推測年份、階段、考試全稱值------開始***********************
*pathDBF=LEFT(file1,RAT("\",file1)) &&路徑未尾已帶了"\"
ksqc=STRT(wjm1,"成績","")
IF LEFT(ksqc,1) $ ("0123456789")
dqnf=IIF(BETW(VAL(ksqc),1952,2051),VAL(ksqc),IIF(BETW(VAL(ksqc),52,99),VAL(ksqc)+1900,VAL(ksqc)+2000))
ELSE
dqnf=YEAR(dqrq)
ENDIF
jdmc=SUBS(wjm1,AT("年級",wjm1)+4,AT("考試",wjm1)-(AT("年級",wjm1)+4))
IF jdmc $ jdmc_all
jdmcbh=INT((AT(jdmc,jdmc_all)+5)/6)
jdmc=ALLT(SUBS(jdmc_all,jdmcbh*6-5,6))
ksqc=STR(dqnf,4)+"年"+njmc+jdmc+"考試"
ELSE
****根據文件名推測不成,則根據當前日期來猜測
DO tcnfrqjdmc
ENDIF
**********************************************
SET SAFE OFF
INDE ON 班級 TO cjkidx
SET SAFE OFF
DO tcbjm &&推測班級名
DO tckmm &&推測科目名
DO tcmcm &&推測名次名
***************推測文、理班級數,文、理班級名稱----結束***********************
***************對推測值進行***********************
DO tcbjrs
DO FORM 班級信息
DO FORM 科目信息
DO FORM 校驗分數
sele cjk
REPL ALL kl WITH IIF(sffwlk=1,'1',IIF(SUBS(sy_bj,班級*2-1,2) $ wk_bj,'2','1'))
BLANK ALL FIELDS 去尾
IF sftjzbs
RECALL FOR 刪除="#"
ELSE
DELE FOR 刪除="#"
ENDIF
DO tcklxx
IF MESSAGEBOX("是否繼續打開相對應的教師積分表",36,"確 認")=6
IF mima<>'z'+STRT(ALLT(STRT(STR(COS(SIN(VAL(SYS(2020))*2)),12,10),'.','')),'-','')
=MESSAGEBOX(" 試用版,只能由計算機填入模擬數據!不能導入、打開、錄入數據請記下機器號";
+CHR(13)+"與白水高中:朱光銳 聯系獲得序列號,TEL:6726356!,感謝支持正版!",16,"未授權!")
DO xinjian2
ELSE
DO dakai2
ENDIF
ENDIF
ENDI
ENDPROC
******************************************************************************************
PROC dakai2() &&子程序:打開積分表,讀取教師信息,初始化有關變量
IF mima<>'z'+STRT(ALLT(STRT(STR(COS(SIN(VAL(SYS(2020))*2)),12,10),'.','')),'-','')
=MESSAGEBOX(" 試用版,只能由計算機填入模擬數據!不能導入、打開、錄入數據請記下機器號";
+CHR(13)+"與白水高中:朱光銳 聯系獲得序列號,TEL:6726356!,感謝支持正版!",16,"未授權!")
RETU
ENDIF
IF ALLT(DBF(1))==""
=MESSAGEBOX("打開積分表之前,請先打開成績庫",0,"提示")
RETU
ENDIF
SET DEFA TO &pathdbf
file2=GETFI("DBF",'教師積分表','打開',0,"打開教師積分表")
wjm2=STRT(RIGHT(file2,LEN(file2)-RAT("\",file2)),".DBF","")
SET DEFA TO &path0
IF .NOT. FILE(file2)
IF MESSAGEBOX("指定的文件&FILE2.不存在,未打開積分表!,是否新建一個積分表",36,"提示")=6
DO xinjian2
RETU
ELSE
SELE cjk
RETU
ENDIF
IF .NOT. ALLT(DBF(2))==""
SELE 2
USE
SELE cjk
RETU
ENDIF
ELSE
USE (file2) IN 2 ALIA jjk
ENDIF
SELE jjk
BLANK ALL FIEL jsh
REPL ALL kl WITH "1" FOR SUBS(sy_bj,bj*2-1,2) $ "LK_BJ" .AND. bj>0
REPL ALL kl WITH "2" FOR SUBS(sy_bj,bj*2-1,2) $ "WK_BJ" .AND. bj>0
REPL ALL 班級名 WITH LEFT(njmc,2)+SUBS(sy_bj,bj*2-1,2)+"班" FOR bj>0 .AND. bj<=bjs
****************推測文理科目名,及科目數及要統計的字段,對教師進行編號*********************************
SET SAFE OFF
INDE ON klh TO jjkidx
SET SAFE OFF
SELE jjk
REPL ALL klh WITH (AT(科目名,sy_km)+3)/4
REPL ALL bj WITH (AT(SUBS(班級名,3,2),sy_bj)+1)/2 FOR AT(SUBS(班級名,3,2),sy_bj)>0
BLAN ALL FIELDS bj FOR AT(SUBS(班級名,3,2),sy_bj)=0
jss=0
jsm="_^_^_^"
BLANK ALL FIELDS jsh
SET SAFE OFF
INDE ON STR(klh,3)+教師名 TO jjkidx
SET SAFE OFF
GO TOP
SCAN FOR klh<kms .AND. .NOT. DELE() .AND. bj>0
IF .NOT. 教師名==jsm
jsm=教師名
jss=jss+1
ENDIF
REPL jsh WITH jss
ENDS
GO TOP
jsm="_^_^_^"
SET SAFE OFF
INDE ON 教師名+IIF(jsh>0,STR(jsh,3),"999") TO jjkidx
SET SAFE OFF
SCAN FOR bj>0
IF 教師名==jsm
REPL jsh WITH xxx
ELSE
xxx=jsh
jsm=教師名
ENDIF
ENDS
DO tcmcm &&推測名次名
GO TOP
SCAN FOR .NOT. DELE()
IF (kl $ "2" .AND. 科目名 $ kmmc_all) .AND. .NOT. (科目名 $ wk_km)
=MESSAGEBOX("積分表中的文科科目與成績表中文科科目對不上,建議重建",0,"提示")
RETU
ENDIF
IF (kl $ "1" .AND. 科目名 $ kmmc_all) .AND. .NOT. (科目名 $ lk_km)
=MESSAGEBOX("積分表中的科目與成績表中科目對不上,建議重建",0,"提示")
RETU
ENDIF
ENDS
GO TOP
SCAN FOR .NOT. DELE()
IF kl $ "2" .AND. SUBS(班級名,3,2) $ bjmc_all .AND. .NOT. (SUBS(班級名,3,2) $ wk_bj)
=MESSAGEBOX("積分表中的文科班級與成績表中文科班級名對不上,建議重建",0,"提示")
RETU
ENDIF
IF kl $ "1" .AND. SUBS(班級名,3,2) $ bjmc_all .AND. .NOT. (SUBS(班級名,3,2) $ lk_bj)
=MESSAGEBOX("積分表中的班級與成績表中班級名對不上,建議重建",0,"提示")
RETU
ENDIF
ENDS
GO TOP
FOR i=1 TO kms
IF SUBS(sy_km,i*4-3,4) $ lk_km
COUN FOR klh=i .AND. 科目名=SUBS(sy_km,i*4-3,4) .AND. kl='1' .AND. bj=0 TO x
IF x<>1
=MESSAGEBOX("積分表中的匯總項不對,將自動重建,但須填備課組長名",0,"提示")
DO zjhzsj
RETU
ENDIF
ENDIF
GO TOP
IF sffwlk=2 .AND.SUBSTR(sy_km,i*4-3,4) $ wk_km
COUN FOR klh=i .AND. 科目名=SUBS(sy_km,i*4-3,4) .AND. kl='2' .AND. bj=0 TO x
IF x<>1
=MESSAGEBOX("積分表中的匯總項不對,將自動重建",0,"提示")
DO zjhzsj
RETU
ENDIF
ENDIF
ENDF
ENDPROC
PROC cjdaochu() &&另存為....
SELE cjk
x= MESSAGEBOX(" 選擇【是】將按考號后三位的順序號導出成績表,選擇【否】將按";
+CHR(13)+"以班為單位,按考號從小到大來導出成績表,選擇【取消】放棄",547,"選擇")
SET SAFE OFF
IF x=6
INDE ON SUBS(考號,4,3) TO cjkidx
ELSE
INDE ON 考號 TO cjkidx
ENDI
SET SAFE ON
file4=DBF()
wjm4=STRT(RIGHT(file4,LEN(file4)-RAT("\",file4)),".DBF","")&&不帶路徑,不帶擴展名".DBF"的文件名
filea=PUTF("導為XLS/DBF",pathbak+wjm4,"DBF;XLS")
BROW NOMODI NOAPP NODELE
IF filea==''
=MESSAGEBOX("文件名不存!",0,"提示")
RETU
ENDI
IF RIGHT(ALLT(filea),3)=="XLS"
SET SAFE OFF
COPY TO (filea) TYPE XL5
SET SAFE ON
ELSE
IF RIGHT(ALLT(filea),3)=="DBF"
SET SAFE OFF
COPY TO (filea)
SET SAFE ON
ENDI
ENDI
ENDPROC
PROC jfdaochu
SELE jjk
file5=DBF()
wjm5=STRT(RIGHT(file5,LEN(file5)-RAT("\",file5)),".DBF","")&&不帶路徑,不帶擴展名".DBF"的文件名
fileb=PUTF("導為XLS/DBF",pathbak+wjm5,"DBF;XLS")
SET SAFE OFF
IF RIGHT(ALLT(fileb),3)=="XLS"
COPY TO (fileb) TYPE XL5
ELSE
IF RIGHT(ALLT(fileb),3)=="DBF"
COPY TO (fileb)
ENDI
ENDI
SET SAFE ON
ENDPROC
***************************************
PROC tuichu() &&退出系統
SET SYSMENU TO DEFAULT
CLEA EVENTS
CLEA WINDOW 動畫1
RELEASE MENU MAIN
CLEA EVENTS
SET TALK ON
SET SAFE ON
SET STAT ON
SET SCOR ON
=IMES(0)
=INSM(.T.)
*quit
ENDPROC
PROC xinjian1() &&新建一個空的成績表
CLOSE DATA
DO FORM 班級信息
wjm1=ksqc+'成績'
file1=pathdbf+wjm1
file1=PUTFILE("新建成績:",file1,"DBF")
IF ALLT(file1)==""
=MESSAGEBOX("成績表,未命名,沒能建立!",0,"提示")
RETU
ENDI
wjm1=STRT(RIGHT(file1,LEN(file1)-RAT("\",file1)),".DBF","")
CLOS DATA
SET SAFE OFF
CREA TABLE (file1) (考號 c(6), 姓名 c(8),班級 N(2))
SET SAFE ON
DO FORM 科目信息
USE (DBF()) ALIA cjk
FOR i=1 TO kms-1
zdm=SUBS(sy_km,i*4-3,4)
ALTE TABLE (DBF()) ADD (zdm) N(5,1)
ENDF
ALTE TABLE (DBF()) ADD 總分 N(6,1)
FOR i=1 TO kms
zdm=SUBS(tj_bmc,i*4-3,4)
ALTE TABLE (DBF()) ADD (zdm) N(2)
ENDF
FOR i=1 TO kms
zdm=SUBS(tj_zmc,i*4-3,4)
ALTE TABLE (DBF()) ADD (zdm) N(4)
ENDF
IF nj=1
x= MIN(5,jdmcbh)
ENDIF
IF nj=2
x= 4+MAX(MIN(5,jdmcbh),2)
ENDIF
IF nj=3
IF jdmcbh>5
x= 8+MAX(MIN(6,jdmcbh-1),5)
ELSE
x= 8+MAX(MIN(4,jdmcbh),2)
ENDIF
ENDIF
FOR i=1 TO lncjh[MAX(1,MIN(X,14))]
zdm="H"+ALLT(STR(i))
zdm1="HMLX"+ALLT(STR(i))
zdm2="HMKD"+ALLT(STR(i))
xxzdm=&zdm+" "+&zdm1+" ("+ALLT(STR(&zdm2))+")"
ALTE TABLE (DBF()) ADD &xxzdm
ENDF
ALTE TABLE (DBF()) ADD kl c(1)
ALTE TABLE (DBF()) ADD 去尾 lb_p(1)
ALTE TABLE (DBF()) ADD 新班 N(2)
ALTE TABLE (DBF()) ADD 新號 c(6)
ALTE TABLE (DBF()) ADD 考室 N(2)
ALTE TABLE (DBF()) ADD 刪除 c(1)
ALTE TABLE (DBF()) ADD 備注 c(10)
DO FORM 校驗分數
SELE cjk
x= MESSAGEBOX("成績表已建立,讓電腦根據班級數及班人數自動為"+CHR(13)+"該表追加考號,姓名,班級等數據!請選擇【是】"+;
CHR(13)+"從文件中導入數據,請選擇【否】,放棄請選擇【取消】",547,"選擇")
IF x=6
DO addcjb
ENDI
IF x=7
IF mima<>'z'+STRT(ALLT(STRT(STR(COS(SIN(VAL(SYS(2020))*2)),12,10),'.','')),'-','')
=MESSAGEBOX(" 試用版,只能由計算機填入模擬數據!不能導入數據,更不能錄入數據!請記下機器號";
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -