CLOSE ALL SET talk OFF SET SAFETY OFF *创建数据表,后面可以将数据导入到表中 IF NOT FILE('tongji.dbf') *字段名依次为科目,教师姓名,任课班级,任课班级数,课时总数,周一至周五早自习节数、白天课程节数、晚自习节数,周六周日早自习节数、白天课程数、晚自习节数 CREATE TABLE tongji (km C(2),xm C(8),bjh C(60),bjs N(2),kszs N(2),mx1 N(2),day1 N(2),ex1 N(2),mx2 N(2),day2 N(2),ex2 N(2)) ENDIF IF NOT FILE('jiaoshi.dbf') *字段名依次为班级号,组合名称,班主任姓名,语数英物化生政历地体音美信各科任课教师 CREATE TABLE jiaoshi (bjh N(2),zhmc C(6),bzr C(8),语 C(8),数 C(8),英 C(8),物 C(8),化 C(8),生 C(8),政 C(8),历 C(8),地 C(8),体 C(8),音 C(8),美 C(8),信 C(8)) ENDIF IF NOT FILE('kebiao.dbf') *字段名依次为星期和课程节次 CREATE TABLE kebiao (xq N(1),jc N(2)) SELECT kebiao *根据班级数循环添加班级号字段 FOR i=1 TO 20 *列名为班级序号 lcFieldName="B"+ALLTRIM(STR(i)) ALTER table kebiao ADD COLUMN &lcFieldName. c(2) ENDFOR ENDIF *关闭已打开表 USE *打开统计表,最终要生成的表 SELECT a USE tongji ALIAS tongji *将tongji表中的相关字段数据初始化,避免程序执行多次后数据有误 REPLACE ALL bjh WITH "",bjs WITH 0,kszs WITH 0,mx1 WITH 0,day1 WITH 0,ex1 WITH 0,mx2 WITH 0,day2 WITH 0,ex2 WITH 0 *打开教师安排表 SELECT b USE jiaoshi ALIAS jiaoshi *打开班级课程安排表 SELECT c USE kebiao ALIAS kebiao *取得tongji表的记录数,后面进行循环 SELECT tongji lnCount=reccount() ?lnCount *tongji表开始循环 FOR i=1 TO lnCount *到指定记录号 GO i *从tongji表中读取教师姓名,科目名称 lcName=xm lcKmName=km *从教师安排表中筛选出某教师的信息,主要是取班级以及任教班级数 SELECT bjh,&lcKmName. FROM jiaoshi WHERE &lcKmName.=lcName INTO CURSOR tmp *班级号、班级数初始赋值 lcBjh="" lnBjs=0 *对tmp表进行循环,取班级号、班级数 DO WHILE NOT EOF() lcBjh=ALLTRIM(STR(tmp.bjh))+","+lcBjh lnBjs=lnBjs+1 *构造课表的字段,即班级号,后面需要使用宏替换 lcBjhTmp="B"+ALLTRIM(STR(tmp.bjh)) *统计课表中的相关课时数 *周一至周五的早自习数,xq表示星期,jc表示课程节次,1是早自习,2-7为白天课,8-10为晚自习,&lcBjhTmp.为kebiao中的字段名如B1,lcKmName为字段值,即科目名称如语 SELECT COUNT(*) as kss FROM kebiao WHERE xq<6 AND jc=1 AND &lcBjhTmp.=lcKmName INTO CURSOR ks1 *mx1=mx1+ks1.kss,因为涉及到多班情况,所以需要循环添加 UPDATE tongji SET mx1=mx1+ks1.kss WHERE recno()=i *周六周日的早自习数 SELECT COUNT(*) as kss FROM kebiao WHERE xq>=6 AND jc=1 AND &lcBjhTmp.=lcKmName INTO CURSOR ks2 UPDATE tongji SET mx2=mx2+ks2.kss WHERE recno()=i *周一至周五的白天课时数 SELECT COUNT(*) as kss FROM kebiao WHERE xq<6 AND jc>1 AND jc<8 AND &lcBjhTmp.=lcKmName INTO CURSOR ks3 UPDATE tongji SET day1=day1+ks3.kss WHERE recno()=i *周六周日的白天课时数 SELECT COUNT(*) as kss FROM kebiao WHERE xq>=6 AND jc>1 AND jc<8 AND &lcBjhTmp.=lcKmName INTO CURSOR ks4 UPDATE tongji SET day2=day2+ks4.kss WHERE recno()=i *周一至周五的晚自习课时数 SELECT COUNT(*) as kss FROM kebiao WHERE xq<6 AND jc>=8 AND &lcBjhTmp.=lcKmName INTO CURSOR ks5 UPDATE tongji SET ex1=ex1+ks5.kss WHERE recno()=i *周六周日的白天课时数 SELECT COUNT(*) as kss FROM kebiao WHERE xq>=6 AND jc>=8 AND &lcBjhTmp.=lcKmName INTO CURSOR ks6 UPDATE tongji SET ex2=ex2+ks6.kss WHERE recno()=i *选择查询到的临时表,并将记录跳到下一行 SELECT tmp skip ENDDO *tmp表循环结束,更新tongji表中的班级号,班级数 UPDATE tongji SET bjh=lcBjh,bjs=lnBjs WHERE recno()=i SELECT tongji ENDFOR *tongji表循环结束 *更新tongji表中的总课时数 SELECT tongji REPLACE ALL kszs WITH mx1+mx2+day1+day2+ex1+ex2
最后编辑:2023年11月07日
©著作权归作者所有
最新回复