教学管理系统设计模板.docx
《教学管理系统设计模板.docx》由会员分享,可在线阅读,更多相关《教学管理系统设计模板.docx(19页珍藏版)》请在冰豆网上搜索。
教学管理系统设计模板
教学管理系统的设计与实现
一、概述
每年都有新生的入学,毕业生的离开。
教师队伍的壮大,新课程的开设和旧课程的删除,以及学生每学期的成绩记录。
对它们的管理问题也是日益突显,所以需要一个专业的应用程序,利用数据库对这些数据进行组织和管理。
本系统——教学管理系统就是为了实现高效的管理这些数据而专门设计的。
该教学管理系统是用PowerBuilder数据库应用开发工具SQL嵌入式语言开发而来的。
它主要包括学生管理、成绩管理、班级管理、课程管理以及教师管理,对学校的日常教学系统进行有效地组织。
二、需求分析
1、该教学管理系统是开发目标是有效管理学生,教师,课程等信息,实现这些信息的数据录入、浏览、修改、查询等,从而实现对信息的规范化、系统化、自动化管理。
根据对终端用户的调研,了解了用户端的需求,进行分析得出下面的几项需求:
(1)由于信息具有一定的保密性,为了使拥有权限的管理员对数据进行管理,应该为用户设置密码保护,在用户访问是该系统时进行身份的鉴别,以提高系统的数据安全性。
(2)使用该教学系统,能够实时对学生,教师信息时行记录,并能够非常方便地浏览、添加、编辑和查询。
(2)成绩管理,能够对学生每学期的成绩进行录入,修改,并提供计算学生的平均成绩的功能,以及每个班级某些课程的平均分进行计算。
(4)学校的班级数可能增加,有些班级也可能被撤编,所以应用程序应该能够方便地对学生班级进行添加、编辑、删除。
同时班级系统还要记录算数学院和专业以及该班级的学生数量。
(5)课程管理描述了课程号、课程名称、授课教师等重要教学方面的信息,课程号用于方便学生的学课系统管理。
2、根据以上需求抽象出的实体有学生实体,班级实体,课程实体,教师实体,各实体的E-R图如下:
图1 学生实体E-R图
图2 班级实体E-R图
图3 课程实体E-R图
图4 教师实体E-R图
成绩
选修
班级
课程
学生
讲授
属于
教师
1
1
n
n
m
n
图5 各实体联系E-R图
三、数据库逻辑设计
根据图5得出各个关系模式:
(带下划线的为主码)
学生信息表(学号,姓名,性别,出生日期,班级号,总学分)
班级信息表(班级号,班级名,学院,专业,人数)
课程信息表(课程号,课程名,学时,学分,开课学期,教师号)
教师信息表(教师号,教师名,性别,职称)
成绩信息表(学号,课程号,分数,学期,班级号)
用户表(用户名,密码)
其中用户表是教学管理系统注册用户使用的。
由关系模式得出关系表,如下:
表1 stu学生信息表
字段名
数据类型
含义说明
空值情况
学号
Char(6)
学生编号
主关键字
姓名
varchar(20)
学生姓名
不为空
性别
Char
(2)
学生性别
不为空
出生日期
Date
出生日期
可为空
班级号
Char(10)
所在班级
可为空
总学分
Dec(4,1)
总学分
可为空
表2 class班级信息表
字段名
数据类型
含义说明
空值情况
班级号
Char(6)
班级编号
主关键字
班级名
Char(12)
班级名称
可为空
学院
Char(12)
所在学院
可为空
专业
Char(12)
所在专业
可为空
人数
Dec
(2)
班级人数
可为空
表3 course课程信息表
字段名
数据类型
含义说明
空值情况
课程号
Char(6)
课程编号
主关键字
课程名
Char(12)
课程编号
不为空
学时
Dec
(2)
课程学时
可为空
学分
Dec
(2)
课程学分
可为空
开课学期
Dec
(2)
开课学期
可为空
教师号
Char(6)
授课教师
外键
表4 teacher教师信息表
字段名
数据类型
含义说明
空值情况
教师号
Char(6)
教师编号
主关键字
教师名
Char(8)
教师姓名
不为空
性别
Char
(2)
教师性别
可为空
职称
Char(8)
教师职称
可为空
表5score成绩信息表
字段名
数据类型
含义说明
空值情况
学号
Char(6)
学生编号
主关键字
课程号
Char(6)
课程编号
主关键字
分数
Dec
(2)
考试分数
可为空
学期
Dec
(2)
考试学期
可为空
班级号
Char(6)
班级编号
可为空
表6user用户信息表
字段名
数据类型
含义说明
空值情况
用户名
Varchar(12)
用户名称
主关键字
密码
Varchar(12)
用户密码
不为空
四、软件功能设计
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事件下输入如下代码:
//Pro
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="Connectstring='DSN=student'"
connect;
ifsqlca.sqlcode<>0then
messagebox("连接失败","不能连接数据源")
return
endif
open(w_login)
(3)学生管理页面、成绩管理页面、班级管理页面、课程管理页面、教师管理页面功能似,类所以以学生管理页面为例,学生管理页面(图9)的代码如下:
显示按钮cb_3的代码:
dw_1.retrieve('%','%')
添加按钮cb_tianjia的代码:
stringls_ssex
decls_szong
ifrb_1.checkedthen
ls_ssex='男'
else
ifrb_2.checkedthen
ls_ssex='女'
endif
endif
ls_szong=dec(sle_5.text)
insertintostuvalues
(:
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)
ifcb_4.text="修改"then
dw_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(),"总学分"))
ifdw_1.getitemstring(dw_1.getrow(),"性别")='男'then
rb_1.checked=true
rb_2.checked=false
else
rb_2.checked=true
rb_1.checked=false
endif
else
cb_4.text="修改"
stringls_ssex
decls_szong
ifrb_1.checkedthen
ls_ssex='男'
else
ifrb_2.checkedthen
ls_ssex='女'
endif
endif
ls_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=false
rb_2.checked=false
endif
修改按钮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事件下的代码为:
integercount1,result,count2
declarejisuancursorfor
select分数fromscore
where班级号=:
sle_7.text;
openjisuan;
fetchjisuaninto:
result;
dowhilesqlca.sqlcode=0
count2=count2+1
ifresult>=60then
count1=count1+1
endif
fetchjisuaninto:
result;
loop
closejisuan;
messagebox("提示","该班级的及格率是:
"+string((count1/count2)*100)+'%')
(6)查询教师授课成绩页面(图19)的代码如下:
Teacher表与course表以教师号为外键建立关联。
按钮Cb_1的clicked事件下的代码:
dw_1.retrieve('%'+sle_1.text+'%')
其中dw_1的DataObject属性为d_shouke
五、结束语
在做《教学管理系>的这段时间里让我了解了很多关于如何构建数据库的知识。
首先要进行的是调查用户需求,然后对需求进行分析,建立一个独立于具体数据库的概念模型,再将概念模型转为逻辑数据结构,然后为它寻造一个物理数据结构,建立数据库。
在数据的抽象上要考虑那些数据作为实体型,那些作为属性。
其次还要考虑数据的安全性,于是我设置了管理系统,只让拥有权限的管理员登入后才能对数据进行操作。
这次课设让我更深刻的理解了那句话“纸上得来终觉浅,绝知此事要躬行”。
在课堂上的学习总是肤浅的,只有在实践中才能学到更多的东西,才能对书本上的知识理解的更透彻。
由于第一次需要在短时间内单独完成这么大的任务,刚开始的时候不知如何下手,有些迷茫,但是随即我就调整状态,利用从图书馆借的几本较为实用的书作为资料,边学边做,渐渐上手,最后终于亲手完成了一个小型的数据库。
数据库理论是建数据库的基础,使数据库的建立更加完善,使数据库之间的联系更加紧密,同时也要减少存储介质消耗。
当然只有数据库组织数据还是远远不够的,因为人是最终用户,所以也要设计良好的操作界面必须得,友好的互动界面,使使用者操作起来更加得心应手。