选定班级的”确定” 按钮的clicked事件代码如下:
string name
int n
name=trim(w_courseopen.ddlb_class.text) //获得班级名称
if name="" then return //没有输入班级名称,返回
//检查输入的班级名称是否正确
n=ds_class.find("名称='"+name+"'",1,ds_class.rowcount())
if n<=0 then
messagebox("课程分配","班级名称错误!",Exclamation!)
w_courseopen.ddlb_class.setfocus()
return //返回
end if
//显示班级已选课程
dw_selected.setfilter("课程分配_班级
="+string(ds_class.GetItemNumber(n,1))+"")
dw_selected.filter()
//启用相关操作按钮
w_courseopen.cb_add.enabled=true
w_courseopen.cb_delete.enabled=true
w_courseopen.cb_save.enabled=true
w_courseopen.cb_sdelete.enabled=true
w_courseopen.cb_refresh.enabled=true
w_courseopen.cb_clear.enabled=true
保存选课的“保存“按钮的clicked事件代码如下:
//将当前预选课程添加到课程分配记录表中
int class_num,course_num ,n,i
string name
//获得当前班级编号
n=ds_class.rowcount()
n=ds_class.find("名称='"+w_courseopen.ddlb_class.text+"'",0,n)
class_num=ds_class.getitemnumber(n,1)
for i=1 to w_courseopen.lb_preselect.totalitems()
//获得课程编号
name=w_courseopen.lb_preselect.text(i)
n=w_courseopen.dw_course.rowcount()
n=w_courseopen.dw_course.find("名称='"+name+"'",0,n)
course_num=w_courseopen.dw_course.getitemnumber(n,1)
//添加选课记录
insert into 课程分配(课程,班级)
values (:course_num,:class_num);
if sqlca.sqlnrows>0 then
commit; //提交
else
rollback; //回滚
end ifnext
messagebox("课程分配","已成功保存课程分配记录!")
//清除预选课程列表
w_courseopen.lb_preselect.reset()
//刷新已选课程列表
w_courseopen.dw_selected.retrieve()
§4.4.2 排课问题的解决方案
制定课表是该系统中比较难的一部分,数据窗口复杂,连接多,牵涉到的数据表多几个问题,在编码时主要采用了利用数据存储对象分别对每一个数据窗口进行操作的原理,简化了代码。其操作窗口如下:
图4.8 排课窗口
该模块通过选择班级,来进一步的对班级的所有课程进行安排。其中调用了班级信息表,教室资源表,课程临时表以及课程分配表。
对班级的选择只能选已经存在的班级,通过下拉菜单来实现对班级输入信息的限制,在选择了班级的同时,系统将首先清除它的原课程信息记录并通过调用班级人数获得适合该班级的教室信息链接到教室的下拉菜单中进行选择。
该窗口的open事件代码如下:
string name
int i,j,n,nrow
//建立教室资源数据存储对象
ds_rooms=create datastore //创建DataStore实例
ds_rooms.dataobject="dw_roomresourse" //关联数据窗口
ds_rooms.settransobject(sqlca) //指定事务对象
ds_rooms.retrieve() //获得最新教室资源数据
//建立排课记录数据存储对象
ds_table=create datastore //创建DataStore实例
ds_table.dataobject="dw_coursetable" //关联数据窗口
ds_table.settransobject(sqlca) //指定事务对象
ds_table.retrieve() //检索数据
//建立班级信息数据存储对象
ds_class=create datastore //创建DataStore实例
ds_class.dataobject="dw_grade" //关联数据窗口
ds_class.settransobject(sqlca) //指定事务对象
ds_class.retrieve() //检索数据
//检索班级课程信息数据
dw_course.settransobject(sqlca) //指定事务对象
dw_course.retrieve() //检索数据
//检索课程临时表数据
dw_ctabletemp.settransobject(sqlca) //指定事务对象
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>