根据上述需求分析,现将通用实验室排课辅助系统归纳为版权信息、排课录入、数据查询、数据维护4个功能模块:
(1) 版权信息:包括版本信息、作者介绍、联系方式等内容,用于保护版权及方便使用者;
(2) 排课录入:包括实验时间、实验地点、实验人物、实验项目等录入,以及时间冲突检测、录入后处理等操作;
(3) 数据查询:包括实验室、教学单位、教学班级、教师等查询,并有将查询内容导出到Microsoft Excel及Word等文档中的操作;
(4) 数据维护:包括总库数据、实验室数据、教学单位数据、其他数据等维护,其中,其他数据包括生成教学计划表及工作人员工作量表。
2 系统实现
2.1 总体结构设计
建立1个数据库,内含基本信息表、实验室数据表、教学单位数据表,其中表结构相应地结合对应信息参数设置,其中基本信息表每1个记录对应1个最小时间单位、最小空间单位、最小实验人物单位,这是时间冲突检测算法的强硬要求,实验室数据表每1个记录对应每个实验室数据,教学单位数据表每1个记录对应每个教学单位数据,数据库具体结构略去。用面向对象程序设计思想,在VisualFoxpro6.0数据库管理系统中快速建立该数据库管理系统的框架,并嫁接到各个数据表。
2.2 快速建立该数据库管理系统的原型
2.2.1版权信息
如图1所示:
表1 版权信息
2.2.2排课录入
如图2所示:
图2 排课录入
2.2.3数据查询
如图3所示:
表3 数据查询
2.2.4数据维护
如图4所示:
图4 数据维护
实现的方法:
(1)本程序仅用于通用排课信息录入及处理,生成适合应用的Microsoft Excel及Word等文档,并可对数据进行再加工,生成教学计划表及工作人员工作量表等;
(2)排课录入:分3部分,先进行快速录入,可连续输入多周次、星期、节次等排课信息,再进行时间冲突检测,最后进行录入后处理;
(3)数据查询:对进行录入后处理的数据进行各种查询,分为实验室、教学单位、教学班级、教师等4部分查询,并对当前查询生成Microsoft Excel及Word等文档再进行细加工处理或打印;
(4)数据维护:分为总库维护、实验室、教学单位数据维护3部分,另附其他功能(如教学计划表、工作人员工作量生成Microsoft Word文档等)。其中总库维护包括初始化、与Microsoft Excel文档进行交互编辑等。
2.3 系统关键编码
2.3.1 数据处理部分
对输入的数据进行处理采用蛮力法算法,先进行时间冲突检测,如果存在时间冲突,则必须调整时间冲突课程,确保无时间冲突方可进行录入后处理;录入后处理则通过固定的星期(1至7)、固定的节数(1至9)的循环处理,对同班、同室、同周、同课程的课时按学期计连续安排,再按节次计连续安排,最后将运算结果生成总表,后续的查询、工作计划及工作量生成等都在此总表基础上进行处理。以下给出连续节次检测部分编码以供参考:
*打开提取星期的临时数据表
2.3.2 数据与Microsoft Excel及Word交互部分
在总表基础上,通过查询将相应记录的生成Microsoft Excel及Word文档,这是通用实验室排课辅助系统的最终任务,这部分的算法及编码是相当重要的,涉及到Windows 的OLE技术。本文通过VisualFoxpro调用Word.Application对象及Excel.Application对象在已有模板的基础上生成Microsoft Excel及Word文档。以下给出单实验室课表生成Microsoft Word文档部分编码以供参考:
WAIT "正在访问 Word 软件……" WINDOW NOWAIT
WordApp=CREATEOBJECT("Word.application") &&访问WORD
If Type("WordApp")#"O"
WAIT CLEAR
MessageBox( "访问Word失败!请检查你的系统是否正确安装 Word 软件!",48,"没有安装Word")
RETURN
ENDIF
WAIT "正在生成表格……" WINDOW NOWAIT
WordApp.Visible =.T.&&&
WordApp.Caption =’生成Word文档’
WordApp.Documents.Open("D:\排课\实验教学课程表模板.doc")
WordTable=WordApp.Documents(1).Tables(1)
*******************
WordCellText=""
select 实验室名称 into table wdmmcc.dbf from wd group by 实验室名称
select 系别 into table wdxb.dbf from wd group by 系别
select wdxb
if recc()>1
jxdw="系(部、中心) :实验中心"
else
jxdw="系(部、中心) :"+trim(系别)
endif
use in wdxb
WordApp.Documents(1).Paragraphs(2).Range.Text=jxdw+"学年度第学期"
select wdmmcc
for wdi=1 to recc()
select wdmmcc
go wdi
if wdi<>recc()
*WordTable.Rows.add
endif
xyxmc=实验室名称
select * into table wdxyx.dbf from wd where 实验室名称=xyxmc
select wdxyx
WordTable.Cell(1,2).Range.Text=trim(实验室名称)+chr(13)+"("+trim(实验室地点)+")"
FOR wdii=1 TO 7
FOR wdiii=1 TO RECC()
GO wdiii
if val(星期)=wdii
WordCellText=WordCellText+trim(节次安排)+’节:第’+trim(学期安排)+’周,’+trim(班级)+’,’+trim(学生人数)+’人,’+trim(课程名称)+’,’+trim(实验教师)+chr(13)
endif
endfor
WordTable.Cell(wdii+1,2).Range.Text=WordCellText
WordCellText=""
endfor
use in wdxyx
endfor
use in wdmmcc
use in wd
WordApp.Documents(1).SaveAs("D:\排课\实验室课表.doc")
WordApp.Quit
RELEASE
WAIT CLEAR
MessageBox( "生成WORD文件完毕,文件位置 D:\排课\实验室课表.doc !",64,"完毕")
RETURN
3系统测试
本辅助系统用VisualFoxpro6.0数据库管理系统编译并生成安装文件,安装到Win2000操作系统,并在安装有Microsoft Office系列办公软件下的单机中进行测试。执行该辅助系统,进行各种处理后,发现在与Microsoft Excel交互过程中,如果Microsoft Excel版本过高的话,要先将Microsoft Excel文档保存为低版本文档,去除格式设置后,才可与VisualFoxpro进行导入,这是VisualFoxpro6.0的局限性。因此在编写与Microsoft Excel交互的模块中,注意通过调用Excel.Application对象另存为版本低的Excel文件,以避免出现导入错误。
4 结束语
经过运行验证,本辅助系统适用于实验室排课相关工作,能适应较低机器配置,其方法是完全可行的,并且工作效率极高,输出格式规范美观且可进1步加工。如要更进1步提高系统处理的能力,可以考虑用网络数据库管理系统对用户数据进行分散输入、集中管理,即应用此开发模型转为网络开发平台,如转为C/S或B/S结构,将会极大提高其应用范围。
参考文献:
[1]柳纯录.信息系统项目管理师教程[M].北京:清华大学出版社,2005.
[2]李雁翎.FoxPro 6.0 使用与开发技术[M].北京:清华大学出版社,2005 . 需要论文,联系我们qq:3710167
-