当前位置:文档之家› 数据库课程设计-教学管理系统的设计与实现

数据库课程设计-教学管理系统的设计与实现

教学管理系统的设计与实现一、概述随着学校教务的越来越繁重,学校的学生,教师,课程的日益增多,因此对它们的管理问题也是日益突显,所以需要一个专业的应用程序对它们实施系统的管理。

本系统——教学管理系统就是为了实现对它们的管理而专门设计的。

本教学管理系统是用Sybase公司的PowerBuilder数据库应用开发工具而开发的。

它主要包括学生管理、成绩管理、班级管理、课程管理和教师管理。

它是通过对学校日常教学管理中的课程、选课、学生、班级、教师、成绩等相关内容进行分析,完成具有学生管理、成绩管理、班级管理、教师管理、课程管理等相关功能的小型数据库管理应用系统。

基本要求:1、完成学生、班级、课程等表的维护2、完成成绩表的浏览查找3、完成成绩表的维护4、按班级、按课程计算平均成绩、最高成绩、最低成绩、及格率5、统计某学生、某学期的所有课程的平均成绩。

6、查询教师的授课情况7、完成注册用户管理功能二、需求分析1、本系统是开发目标是有效管理学生,教师,课程等信息,实现这些信息的数据录入、浏览、修改、查询等,从而实现对信息的规范化、系统化、自动化管理。

根据对终端用户的调研,得出下面的需求分析说明文本:(1)由于学生等信息具有一定的保密性,为了便于管理,应该为用户设置密码保护,以提高系统的数据安全性。

(2)使用该系统,能够对学生,教师信息时行记录,并能够非常方便地浏览、添加、编辑和查询。

(3)使用该系统,能够对学生的成绩信息非常方便地浏览、添加、编辑和查询,实现对成绩的有效管理,方便教师查看。

(4)学校的班级是不断增加的,有些班级还要撤编,所以应用程序应该能够方便地对学生班级进行添加、编辑、删除。

(5)课程信息描述了课程名称、授课教师等重要教学方面的信息,应该方便进行管理。

2、根据系统设计规化出的实体有学生实体,班级实体,课程实体,教师实体,各实体的E-R图如下:图1学生实体E-R图图2班级实体E-R图图3课程实体E-R图图4教师实体E-R图图5各实体联系E-R图三、数据库逻辑设计根据图5得出各个关系模式:学生信息表(学号,姓名,性别,出生日期,班级号,总学分)班级信息表(班级号,班级名,学院,专业,人数)课程信息表(课程号,课程名,学时,学分,开课学期,教师号)教师信息表(教师号,教师名,性别,职称)成绩信息表(学号,课程号,分数,学期,班级号)用户表(用户名,密码)其中用户表是教学管理系统注册用户使用的。

由关系模式得出关系表,如下:字段名数据类型含义说明空值情况学号Char(6) 学生编号主关键字姓名Char(8) 学生姓名不为空性别Char(2) 学生性别不为空出生日期Date 出生日期可为空班级号Char(6) 所在班级可为空总学分Dec(4,1) 总学分可为空表3course课程信息表表4teacher教师信息表四、软件功能设计1、登录到教学管理系统可以完成系统管理功能,学生管理功能,成绩管理功能,班级管理功能,班级管理功能,课程管理功能和教师管理功能(如图6)。

系统管理:可以实现用户的添加和修改密码。

学生管理:可以对学生的记录进行添加,删除,修改和查询。

还可以统计某学生,某学期的所有课程的平均成绩。

成绩管理:可以对成绩记录进行添加,删除,修改和查询。

还可以统计某学生、某学期的所有课程的平均成绩及按班级,按课程计算平均成绩、最高成绩、最低成绩、及格率。

班级管理:可以对成绩记录进行添加,删除,修改和查询。

课程管理:可以对课程记录进行添加,删除,修改和查询。

教师管理:可以对课程记录进行添加,删除,修改和查询及教师授课情况的查询。

图6 软件功能图2、软件功能介绍(1)首先进入用户登录界面,在该界面输入有效的用户名与密码,单击“确认”登录。

如果没有用户名和密码的话也可以自己注册。

图7 用户登录界面图8用户注册密码(2)进入教学管理系统主应用界面后,单击对应的菜单栏选项,选择所需的操作。

图8主页面(3)打开学生管理菜单可以对学生的记录进行添加、删除、修改和查询。

图9学生管理页面可以对学生的姓名和班级分别进行查询。

图10 学生查询页面(4)打开成绩管理菜单可以对成绩的记录进行添加、删除、修改和查询。

图11成绩管理页面可以对学号,课程号分别查询,也可以学号、课程号一起查询。

图12 成绩查询页面1输入班级号、输入课程号计算平均成绩、最高成绩、最低成绩、及格率图12 成绩查询页面2统计某学生,某学期的所有课程的平均成绩图13 学期平均成绩查询页面(5) 打开班级管理菜单可以对班级的记录进行添加、删除、修改和查询。

图14 班级管理页面输入班级号,对班级所有信息进行查询图15 班级查询页面(6)打开课程管理菜单可以对课程的记录进行添加、删除、修改和查询。

图16 课程管理页面输入课程号,对课程所有信息进行查询图17 课程查询页面(7) 打开教师管理菜单可以对教师的记录进行添加、删除、修改和查询。

图18 教师管理页面输入教师号,可对教师所授课程时行查询图19教师查询页面五、程序源代码下面给出系统的部分设计图及部分源代码(1)在进行系统界面编程前,先建立数据库,并建立外键。

(2)数据库建立后,进行窗口编程。

首先建立一个新的工作空间和应用。

连接数据库,在应用的open事件下输入如下代码:// Profile StudentSQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "Connectstring='DSN=student'"connect;if sqlca.sqlcode<>0 thenmessagebox("连接失败","不能连接数据源")returnend ifopen(w_login)(3)学生管理页面、成绩管理页面、班级管理页面、课程管理页面、教师管理页面功能似,类所以以学生管理页面为例,学生管理页面(图9)的代码如下:显示按钮cb_3的代码:dw_1.retrieve('%','%')添加按钮cb_tianjia的代码:string ls_ssexdec ls_szongif rb_1.checked thenls_ssex='男'elseif rb_2.checked thenls_ssex='女'end ifend ifls_szong=dec(sle_5.text)insert into stu values(:sle_1.text,:sle_2.text,:ls_ssex,:em_1.text,:sle_4.text,:ls_szong); commit;dw_1.retrieve('%','%')dw_1.scrolltorow(dw_1.rowcount())删除按钮cb_1的代码:dw_1.deleterow(dw_1.getrow())修改按钮cb_4的代码:dw_1.selectrow(dw_1.getrow(),false)if cb_4.text="修改" thendw_1.selectrow(dw_1.getrow(),true)cb_4.text="确认"sle_1.text=dw_1.getitemstring(dw_1.getrow(),"学号")sle_2.text=dw_1.getitemstring(dw_1.getrow(),"姓名")em_1.text=string(dw_1.getitemdate(dw_1.getrow(),"出生日期")) sle_4.text=dw_1.getitemstring(dw_1.getrow(),"班级号")sle_5.text=string(dw_1.getitemdecimal(dw_1.getrow(),"总学分"))if dw_1.getitemstring(dw_1.getrow(),"性别")='男'then rb_1.checked=truerb_2.checked=falseelserb_2.checked=truerb_1.checked=falseend ifelsecb_4.text="修改"string ls_ssexdec ls_szongif rb_1.checked thenls_ssex='男'elseif rb_2.checked thenls_ssex='女'end ifend ifls_szong=dec(sle_5.text)dw_1.setitem(dw_1.getrow(),"学号",sle_1.text)dw_1.setitem(dw_1.getrow(),"姓名",sle_2.text)dw_1.setitem(dw_1.getrow(),"班级号",sle_4.text)dw_1.setitem(dw_1.getrow(),"总学分",dec(sle_5.text)) dw_1.setitem(dw_1.getrow(),"出生日期",date(em_1.text)) dw_1.setitem(dw_1.getrow(),"性别",ls_ssex)commit;sle_1.text=""sle_2.text=""sle_4.text=""sle_5.text=""em_1.text=""rb_1.checked=falserb_2.checked=falseend if修改按钮cb_2的代码:dw_1.update()其中dw_1的DataObject属性为d_stu.(4)学生查询页面、成绩查询页面、班级查询页面、课程查询页面、教师查询页面功能类似,所以以学生查询页面为例,学生查询页面(图10)的代码如下:学生查询按钮cb_1的代码:dw_1.retrieve('%'+sle_1.text+'%','')班级查询按钮cb_2的代码:dw_1.retrieve('','%'+sle_2.text+'%')其中dw_1的DataObject属性为d_stu.(5)按班级号、按课程号计算平均成绩、最高成绩、最低成绩、及格率功能类似,所以以查询班级号的及格率为例,查询班级号的及格率页面(图12)的代码如下:Tab_1.tabpage_4.cb_7的clicked事件下的代码为:integer count1,result,count2declare jisuan cursor forselect 分数from scorewhere 班级号=:sle_7.text;open jisuan;fetch jisuan into :result;do while sqlca.sqlcode=0count2=count2+1if result>=60 thencount1=count1+1end iffetch jisuan into :result;loopclose jisuan;messagebox("提示","该班级的及格率是:"+string((count1/count2)*100)+'%') (6)查询教师授课成绩页面(图19)的代码如下:Teacher表与course表以教师号为外键建立关联。

相关主题