📄 主程序.prg
字号:
+CHR(13)+"与白水高中:朱光锐 联系获得序列号,TEL:6726356!,感谢支持正版!",16,"未授权!")
RETU
ENDIF
DO daorucjb
ENDIF
****************推测年级值开始****************************************
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 校验分数
REPL ALL kl WITH IIF(sffwlk=1,'1',IIF(SUBS(sy_bj,班级*2-1,2) $ wk_bj,'2','1'))
SELE cjk
BLANK ALL FIELDS 去尾
IF sftjzbs
RECALL FOR 删除="#"
ELSE
DELE FOR 删除="#"
ENDIF
DO tcklxx
IF sftjzbs
RECALL FOR 删除="#"
ELSE
DELE FOR 删除="#"
ENDIF
DO tcbjrs
IF MESSAGEBOX("是否针对此成绩表,建立一个相应的各科积分表",36,"确 认")=6
DO xinjian2
ENDI
ENDPROC
*************************************************************************************************************
PROC xinjian2() &&新建一个空的积分表
IF ALLT(DBF(1))==""
= MESSAGEBOX("必须先新建一个成绩表",16,"提示")
RETU
ENDIF
wjm2=ksqc+'积分表'
file2 =pathdbf+ wjm2
file2 = PUTF('新建积分',file2,"DBF")
IF ALLT(file2)==""
=MESSAGEBOX("积分表,没命名,没能建立!",0,"提示")
RETU
ENDI
CREA TABLE (file2) (bj N(2),jsh N(3),kl c(1),klh N(2),教师名 c(8),班级名 c(6),科目名 c(4))
USE
USE (file2) IN 2 ALIA jjk
**********************积分表中的指标
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))
xxzdm=&zdm+" "+&zdm1+" ("+ALLT(STR(&zdm2))+","+ALLT(STR(&zdm3)) +")"
ALTE TABLE (DBF()) ADD &xxzdm
ENDF
x= MESSAGEBOX("积分表已建立,让电脑根据成绩表中的科目,班级自动为"+CHR(13)+"该表填充科目名,教师名,班级名,等数据!请选择【是】";
+CHR(13)+"从文件中导入数据,请选择【否】,放弃请选择【取消】";
,547,"选择")
IF x=6
DO addjjb
ENDI
IF x=7
DO daorujjb
SELE jjk
BROW FREE 教师名 NODE NOAP
ENDIF
ENDPROC
*************************************************************************************************************
PROC addcjb() &&给成绩表自动添加数据
FOR i=1 TO bjs
STOR min_brs+5-INT(6*RAND()) TO sjbjrs[i]
ENDF
DO FORM 指定班级人数
SELE cjk
FOR i=1 TO bjs
FOR j=1 TO sjbjrs[I]
APPEN BLAN
REPL 班级 WITH i,考号 WITH STR(nj*10000+i*100+j,5),姓名 WITH "S"+STRT(STR(j,2)," ","0"),;
kl WITH IIF(SUBS(sy_bj,i*2-1,2) $ lk_bj, "1","2")
ENDF
ENDF
IF MESSAGEBOX("成绩表已建立,是否让电脑填充随机成绩及性别来演示!",36,"确 认")=6
SELE cjk
REPL ALL 备注 WITH "流失",删除 WITH "*" FOR RAND()>0.95
REPL ALL 备注 WITH "借读",删除 WITH "#" FOR RAND()<0.05
DELE FOR 删除="*" .OR. (删除="#" .AND. .NOT. sftjzbs)
REPL ALL 性别 WITH IIF(RAND()>0.4,"女",'男')
FOR N=1 TO kms-1
zdm=SUBS(sy_km,N*4-3,4)
REPL ALL &zdm WITH mf(N)*(0.35+0.65*RAND())*(RAND()*0.08+0.92) FOR (AT(SUBS(sy_bj,班级*2-1,2),wk_bj)>0 .AND. AT(zdm,wk_km)>0);
.OR. (AT(SUBS(sy_bj,班级*2-1,2),lk_bj)>0 .AND. AT(zdm,lk_km)>0)
BLANK ALL FIELDS &zdm FOR 删除="*"
ENDF
REPL ALL 学号 WITH "2340"+考号
ENDI
DO tcbjrs
BROW FREE 姓名 NODE NOAPP
ENDPROC
PROC addjjb() &&给积分表自动添加数据
SELE jjk
k1=0
FOR i=1 TO kms
FOR j=1 TO bjs
IF ((SUBSTR(sy_bj,j*2-1,2) $ lk_bj) .AND. (SUBS(sy_km,i*4-3,4) $ lk_km) .OR. (SUBSTR(sy_bj,j*2-1,2) $ wk_bj) .AND. (SUBS(sy_km,i*4-3,4) $ wk_km))
k1=k1+1
APPE BLAN
REPL bj WITH j,kl WITH IIF(SUBSTR(sy_bj,j*2-1,2) $ lk_bj, "1","2"),教师名 WITH "T"+STRT(STR(k1,3)," ","0"),;
班级名 WITH SUBSTR(dxhz,nj*2-1,2)+SUBSTR(sy_bj,j*2-1,2)+"班"
REPL klh WITH i
REPL jsh WITH k1
REPL 科目名 WITH SUBS(sy_km,i*4-3,4)
ENDIF
ENDF
IF SUBS(sy_km,i*4-3,4) $ lk_km
APPE BLAN
REPL klh WITH i
REPL 科目名 WITH SUBS(sy_km,i*4-3,4)
REPL bj WITH 0,kl WITH "1",教师名 WITH IIF(sffwlk=1,IIF(klh=kms,"年级",科目名)+"组长","理科"+科目名),班级名 WITH IIF(sffwlk=1,"全年级","理科班")
ENDIF
IF sffwlk=2 .AND.SUBSTR(sy_km,i*4-3,4) $ wk_km
APPE BLAN
REPL klh WITH i
REPL 科目名 WITH SUBS(sy_km,i*4-3,4)
REPL bj WITH 0,kl WITH "2",教师名 WITH "文科"+科目名, 班级名 WITH "文科班"
ENDIF
ENDF
BROW FREE 教师名 NODE NOAP
ENDPROC
*************************************************************************************************************
*************************************************************************************************************
PROC xsbh() &&根据总分或姓氏等对学生重新编号
SELE cjk
SET FILT TO
SET DELE OFF
REPL 新号 WITH STR(nj*100000,6) FOR .T.
SET FILT TO 删除<>'*'
SET SAFE OFF
x=BAR()
DO CASE
CASE x=1
INDE ON - 总分 TO cjkidx
CASE x=2
INDE ON 姓名 TO cjkidx
CASE x=3
INDE ON 学号 TO cjkidx
ENDCASE
SET SAFE ON
x= MESSAGEBOX(" 采用五位数字作为考号:前三位为年级,班级,后两位为序号,请选择【是】,采用六位数字"+CHR(13);
+"作为考号:前三位为年级,班级,后三位为序号,请选择【否】,放弃请选择【取消】",547,"选择编考号的方法!")
IF x=7
ALTE TABLE (DBF()) ALTE 考号 c(6)
ALTE TABLE (DBF()) ALTE 新号 c(6)
k1=0
GO TOP
SCAN FOR 删除<>'*'
k1=k1+1
REPL 新号 WITH STR(nj*100000+ATCC(SUBSTR(sy_bj,班级*2-1,2),bjmc_all)*1000+k1,6)
ENDS
ENDIF
IF x=6
ALTE TABLE (DBF()) ALTE 考号 c(6)
ALTE TABLE (DBF()) ALTE 新号 c(5)
FOR i=1 TO bjs
k1=0
GO TOP
SCAN FOR 班级=i .AND. 删除<>'*'
k1=k1+1
REPL 新号 WITH STR(nj*10000+ATCC(SUBSTR(sy_bj,i*2-1,2),bjmc_all)*100+k1,5)
ENDS
ENDF
ENDIF
SET FILT TO
SET DELE OFF
ENDPROC
*************************************************************************************************************
PROC sanzf() &&加总分
SELE cjk
* 统计总分
IF "综理" $ sy_km .AND. zhksjsld
REPL ALL 综理 WITH &temp1
ENDIF
IF "综文" $ sy_km .AND. zhksjsld
REPL ALL 综文 WITH &temp2
ENDIF
IF "总分" $ sy_km
REPL ALL 总分 WITH &temp
ENDIF
IF nj=1
DO CASE
CASE jdmcbh=1
REPL ALL 入学分 WITH 总分
CASE jdmcbh=2
REPL ALL 一上期中分 WITH 总分
CASE jdmcbh=3
REPL ALL 一上期末分 WITH 总分
CASE jdmcbh=4
REPL ALL 一下期中分 WITH 总分
CASE jdmcbh=5
REPL ALL 一下期末分 WITH 总分
ENDCASE
ENDIF
IF nj=2
DO CASE
CASE jdmcbh=2
REPL ALL 二上期中分 WITH 总分
CASE jdmcbh=3
REPL ALL 二上期末分 WITH 总分
CASE jdmcbh=4
REPL ALL 二下期中分 WITH 总分
CASE jdmcbh=5
REPL ALL 二下期末分 WITH 总分
ENDCASE
ENDIF
IF nj=3
DO CASE
CASE jdmcbh=2
REPL ALL 三上期中分 WITH 总分
CASE jdmcbh=3
REPL ALL 三上期末分 WITH 总分
CASE jdmcbh=4
REPL ALL 三下期中分 WITH 总分
CASE jdmcbh=6
REPL ALL 三下适应分 WITH 总分
CASE jdmcbh=7
REPL ALL 中考总分 WITH 总分
ENDCASE
ENDIF
ENDPROC
*************************************************************************************************************
PROC sanzmc()&&算总名次
PRIV N,m,i,i1,i2
SELE cjk
**** 统计全年级各科目名次
****排文科的年级名次
SET DELE OFF
FOR N=1 TO kms
FOR m=1 TO sffwlk
zdm=SUBS(sy_km,N*4-3,4)
zmcm=SUBS(tj_zmc,N*4-3,4)
BLANK ALL FIELDS &zmcm. FOR kl=STR(m,1)
IF .NOT. ( zdm $ (IIF(m=1,lk_km,wk_km)))
LOOP
ENDIF
* @15,15 SAY "正在统计全年级【"+zdm+"】的名次,请稍候... " FONT "宋体",15 STYL "b"
lcMsg = "正在统计全年级【"+zdm+"】的名次,请稍候..."
WAIT WINDOW lcMsg NOCLEAR NOWAIT AT SROW()/2, (SCOLS()-LEN(lcMsg))/2
SET SAFE OFF
INDE ON - &zdm. TO cjkidx
SET SAFE ON
GO TOP
i3=1
i1=-1
DO WHIL .NOT. EOF() .AND. &zdm.>=0
IF kl=STR(m,1)
IF &zdm. <> i1
REPL &zmcm. WITH i3
IF 删除="*"
BLANK FIEL &zmcm
ENDIF
IF .NOT. DELE()
i1=&zdm.
i2=&zmcm.
ENDIF
ELSE
REPL &zmcm. WITH i2
IF 删除="*"
BLANK FIEL &zmcm
ENDIF
ENDIF
IF .NOT. DELE()
i3=i3+1
ENDIF
ENDIF
SKIP
ENDDO
ENDF
ENDF
* @ 15,15 SAY ' ' FONT "宋体",15 STYL "B"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -