lass.classheadLEFTOUTERJOINt_studentsONt_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所示。具体函数代码与说明如下:
integerconfirmLoginInfor(stringloginUserPsd,stringloginUser,integerloginUserLb)
/*
参数说明loginUserPsd用户密码,loginUser用户名,UserLb用户类别
返回值,返回值为integer(整型)表示函数一次调用函数操作状态,其可能取值为:
0操作成功
1没有此用户
2密码错误
*/
//函数体
integerflag=0//返回值标示
stringlUser,lPwd//暂存用户名、密码变量
ChooseCaseloginUserLb
Case1//辅导员
//提取用户名,并存入lUser中
selectDepartmentHead
into:lUser
fromt_departmentwhereDepartmentID="001";//管理员为系主任
//验证是否成功操作
ifSQLCA.SQLCode=100then
flag=1//设置标示
elseiflUser=loginUserthen
//提取密码,并存入lPwd中
selectpwdinto:lPwdfromt_teacherswhereteacherID=:loginUser;
ifloginUserPsd<>lPwdthen//验证密码
flag=2
endif
endif
Case2//教师
//根据形参loginUser检索数据库的t_teachers表
//提取密码置入lPwd中。
selectpwd
into:lPwd
fromt_teacherswhereteacherID=:loginUser;
ifSQLCA.SQLCode=100then
flag=1
elseifloginUserPsd<>lPwdthen
flag=2
endif
Case3//学生
selectpwd
into:lPwd
fromt_studentswhereStudentID=:loginUser;
ifSQLCA.SQLCode=100then
flag=1
elseifloginUserPsd<>lPwdthen
flag=2
endif
EndChoose
returnflag//返回标示
4.5.2成绩查询窗体说明
1、窗体打开函数,主要是将专业下拉框初始化。具体函数代码与说明如下:
dw_1.SetTransObject(SQLCA)
dw_1.retrieve()
dw_1.setFocus()
ddlb_3.SelectItem(7)//显示全部成绩
//声明一个用于提取专业的游标
StringStrClass
declaremyCursorcursorfor
selectdistinctSpecialityNamefromt_Speciality;
openmyCursor;//打开游标
fetchmyCursorinto:StrClass;//提取数据
//初始化专业下拉框
dowhilesqlca.sqlcode=0
ddlb_1.addItem(StrClass)//填充专业下拉框
fetchmyCursorinto:StrClass;
loop
closemyCursor;//关闭游标
2、专业下拉框的selectionChanged事件,根据专业初始化班级下拉框,具体函数代码与说明如下:
ddlb_2.reset();//清除班级下拉框中的内容
StringStrClass,strN//班级、专业
strN=ddlb_1.text//取得专业
//定义一个根据专业提取班级的游标
declaremyCursorcursorfor
SELECTt_class.classname
FROMt_class,t_speciality
WHERE(t_speciality.specialityid=t_class.specialityidandspecialityname=:strN);
openmyCursor;//打开游标
fetchmyCursorinto:StrClass;//提取数据
//初始化班级下拉框
dowhilesqlca.sqlcode=0
ddlb_2.addItem(StrClass)//填充班级下拉框
fetchmyCursorinto:StrClass;
loop
closemyCursor;//关闭游标
3、学生信息中的rowFocusChanged事件,根据所选学生的变化,成绩信息也随之变化,具体函数代码与说明如下:
stuid=this.object.data[currentRow,1]//取得学生学号
//更新学生成绩信息
dw_2.SetTransObject(SQLCA)
IFdw_2.Retrieve(stuid)=-1THEN //更新学生信息的检索参数stuid。
MessageBox("更新","更新失败!")
ENDIF
结束语
通过这次毕业设计,对软件的设计与开发过程有了更深地了解,也进一步清楚了软件工程开发的几个阶段。当然,对学生管理信息系统也有了初步的认识,并对数据库的建立、SQL语言的应用及PowerBuilder有了进一步清楚的认识。这三个多月的设计和开发,也使我增强了团队精神,对我以后的编程也提供了不少经验,对自身的发展以及提高自身素质也大有好处。尽管软件其功能基本符合要求,但由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,功能实现的不够好等多方面问题,这些都有待进一步改善。
谢辞
通过本次毕业设计,我学到了很多东西,对PowerBuilder、SQLServer等软件的使用更加熟悉。特别感谢我的导师许百成,他严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他循循善诱的教导和不拘一格的思路给予我无尽的启迪。每个实验细节和每个数据,都离不开他的细心指导。另外,感谢系统开发过程中同组的同学,也给与我不少帮助,共同完成了系统的设计与开发,在这里一并感谢。
参考文献
[1]袁方、郗亚辉、陈昊、杨成.数据库应用系统设计.成都:电子科技大学出版社,185~218
[2]金林樵、唐军芳.SQLServer数据库应用开发技术.北京:机械工业出版社,106~130
[3]刘云州、于德壹.PowerBuilder8.0数据窗口使用编程技术.北京:中国水利水电出版社,57~107
[4]夏邦贵、郭胜.PowerBuilder数据库开发入门与范例解析.北京:机械工业出版社,54~108
[5]丁宝康、李大学.数据库原理.北京:经济科学出版社,83~151
??
??
??
??
2
7
上一篇:
pb图书管理系统带论文(论文和程序)
下一篇:
扛起年轻化大旗,哈弗F系玩转行业新风潮