📄 主程序.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 + -