、t_students(学生表)将数据提取出来,在专业下拉框中可以选择你要选择的专业,当专业下拉框的内容变化时,班级下拉框将显示该专业所包含的班级。学生信息框中将显示表t_studnets中存有的所有学生的信息,信息量大,查询时很不方便,所以利用了专业、班级对学生进了过滤。如图4-5。
4.4.3专业信息查询(辅导员)
专业信息:
SELECT t_speciality.specialityid,
t_speciality.specialityname,
t_teachers.teachername,
t_speciality.specialityaddr,
t_speciality.telephone
FROM t_speciality,
t_teachers
WHERE ( t_teachers.teacherid = t_speciality.specialityhead )
ORDER BY t_speciality.specialityid ASC
班级信息:
SELECT t_class.classid,
t_class.classname,
t_students.studentname,
t_teachers.teachername,
t_class.entranceyear,
t_class.specialityid
FROM {oj t_teachers RIGHT OUTER JOIN t_class ON t_teachers.teacherid = t_class.classhead LEFT OUTER JOIN t_students ON t_class.monitorid = t_students.studentid}
专业信息查询有两部分组成,专业信息和班级信息,专业信息利用表t_speciality、t_teachers将专业信息提取出来,如图4-6中专业信息组合框中的内容;班级信息利用表t_teachers、t_class、t_students这三个表利用外部连接将信息提取出来。班级信息应和专业相对应,即专业信息选择发生变化时,班级信息应适时专业的变化而变化。
图4-6
4.5部分代码讨论
4.5.1验证登陆信息函数
本函数主要完成对登陆信息的验证,根据不同的用户加载与之相应的菜单、窗体和个人信息,登陆后窗体如图4-1~4-3所示。具体函数代码与说明如下:
integer confirmLoginInfor(string loginUserPsd,string loginUser,integer loginUserLb)
/*
参数说明loginUserPsd用户密码,loginUser用户名,UserLb用户类别
返回值,返回值为integer(整型)表示函数一次调用函数操作状态,其可能取值为:
操作成功
没有此用户
密码错误
*/
//函数体
integer flag=0 //返回值标示
string lUser,lPwd //暂存用户名、密码变量
Choose Case loginUserLb
Case 1 //辅导员
//提取用户名,并存入lUser中
select DepartmentHead
into :lUser
from t_department where DepartmentID="001";//管理员为系主任
//验证是否成功操作
if SQLCA.SQLCode=100 then
flag=1 //设置标示
elseif lUser=loginUser then
//提取密码,并存入lPwd中
select pwd into:lPwd from t_teachers where teacherID=:loginUser;
if loginUserPsd<>lPwd then //验证密码
flag=2
end if
end if
Case 2 //教师
//根据形参loginUser检索数据库的t_te