***************
* 问题来源:
https://bbs.bc-cn.net/thread-514284-1-1.html
* 规则:现有课务分工表kwfg.dbf、课时计划表ksjh.dbf、学科系数表xkxs.dbf、各班生数表gbrs.dbf。
*
由这四个表生成每个教师课时总量表文件kszl.dbf,包含字段:序号 I,姓名
c(6),具体课务 c(150),总课时 n (4),课时总量 n(5,2)
*
学科课时量=班级生数系数*学科系数*每个学科课时数
*
课时总量等于每个人任教各学科课时量总和
*
班级生数系数以45人为标准系数1,每增加或减少1人,增加或减少0.02,以些类推。
*
以上设想能否实现?请高手赐教,万分感谢!!!
* 思路:
*
* 时间:2025-4-24 星期四
***************
CLEAR
CLEAR ALL
SET SAFETY off
SET engi 70
SET CPCOMPILE TO 936 &&&
CLOSE DATABASES
CREATE TABLE gzlmx(xm c(6),nj c(6),bj c(7),xsrs n(3),xsxs n(4,2),km c(6),rkjs n(2),ksxs n(4,1),kszl n(6,2))
CLOSE DATABASES
USE gzlmx alia mx
SELECT 0
USE gbrs alia rs
SELECT 0
USE kwfg alia kw
SELECT 0
USE xkxs alia xk
SELECT 0
USE ksjh alia jh
SELECT kw
zds=FCOUNT()
FOR i=3 to zds
GO top
SCAN
zdm=FIELD(i)
SELECT mx
APPEND BLANK
REPLACE mx.xm with EVALUATE([kw.]+zdm)
REPLACE mx.nj with kw.nj
REPLACE mx.bj with kw.bj
REPLACE mx.km with zdm
SELECT kw
ENDSCAN
ENDFOR
SELECT mx
DELETE FOR EMPTY(xm)
PACK
*---
SELECT mx
GO top
SCAN
kmmc=ALLTRIM(mx.km)
SELECT rs
LOCATE for rs.nj=mx.nj and rs.bj=mx.bj
IF FOUND()
REPLACE mx.xsrs with rs.生数
ENDIF
SELECT jh
LOCATE for jh.nj=mx.nj
IF FOUND()
REPLACE mx.rkjs with EVALUATE([jh.]+kmmc)
ENDIF
SELECT xk
LOCATE for xk.nj=mx.nj
IF FOUND()
REPLACE mx.ksxs with EVALUATE([xk.]+kmmc)
ENDIF
SELECT mx
ENDSCAN
*---
SELECT mx
REPLACE xsxs with 1+(xsrs-45)*0.02 all
REPLACE kszl with xsxs*rkjs*ksxs all
*---
CLOSE DATABASES
SELECT xm,SPACE(200) as kwmc,sum(rkjs) as zks,sum(kszl) as zksl from gzlmx grou by xm into table kszl
CLOSE DATABASES
USE kszl alia bmk
SELECT 0
USE gzlmx alia kg
SELECT bmk
SCAN
_xm=ALLTRIM(bmk.xm)
_rjkw=""
SELECT kg
GO top
SCAN
IF ALLTRIM(kg.xm)=_xm
_rjkw=_rjkw+kg.nj+kg.bj+ALLTRIM(kg.km)+[;]
ENDIF
SELECT kg
ENDSCAN
SELECT bmk
REPLACE bmk.kwmc with _rjkw
ENDSCAN
MESSAGEBOX('教师课时工作量统计完成 !',64,'提示:')
CLOSE DATABASES
QUIT