1、由关系模式得出关系表,如下:表1stu学生信息表字段名数据类型含义说明空值情况学号Char(6)学生编号主关键字姓名varchar(20)学生姓名不为空性别Char(2)学生性别出生日期Date可为空班级号Char(10)所在班级总学分Dec(4,1)表2class班级信息表班级编号班级名Char(12)班级名称学院所在学院专业所在专业人数Dec(2)班级人数表3course课程信息表课程号课程编号课程名学时课程学时学分课程学分开课学期教师号授课教师外键表4teacher教师信息表教师编号教师名Char(8)教师姓名教师性别职称教师职称表5 score成绩信息表分数考试分数学期考试学期表6 u
2、ser用户信息表用户名Varchar(12)用户名称密码用户密码四、软件功能设计1、登录到教学管理系统可以完成系统管理功能,学生管理功能,成绩管理功能,班级管理功能,班级管理功能,课程管理功能和教师管理功能(如图6)。系统管理:可以实现用户的添加和修改密码。学生管理:可以对学生的记录进行添加,删除,修改和查询。还可以统计某学生,某学期的所有课程的平均成绩。成绩管理:可以对成绩记录进行添加,删除,修改和查询。还可以统计某学生、某学期的所有课程的平均成绩及按班级,按课程计算平均成绩、最高成绩、最低成绩、及格率。班级管理:课程管理:可以对课程记录进行添加,删除,修改和查询。教师管理:可以对课程记录进
3、行添加,删除,修改和查询及教师授课情况的查询。图6 软件功能图2、软件功能介绍(1)首先进入用户登录界面,在该界面输入有效的用户名与密码,单击“确认”登录。如果没有用户名和密码的话也可以自己注册。图7 用户登录界面图8用户注册密码(2)进入教学管理系统主应用界面后,单击对应的菜单栏选项,选择所需的操作。图8主页面(3)打开学生管理菜单可以对学生的记录进行添加、删除、修改和查询。图9学生管理页面可以对学生的姓名和班级分别进行查询。图10 学生查询页面(4)打开成绩管理菜单可以对成绩的记录进行添加、删除、修改和查询。图11成绩管理页面可以对学号,课程号分别查询,也可以学号、课程号一起查询。图12
4、成绩查询页面1输入班级号、输入课程号计算平均成绩、最高成绩、最低成绩、及格率图12 成绩查询页面2统计某学生,某学期的所有课程的平均成绩图13 学期平均成绩查询页面(5) 打开班级管理菜单可以对班级的记录进行添加、删除、修改和查询。图14 班级管理页面输入班级号,对班级所有信息进行查询图15 班级查询页面(6) 打开课程管理菜单可以对课程的记录进行添加、删除、修改和查询。图16 课程管理页面输入课程号,对课程所有信息进行查询图17 课程查询页面(7) 打开教师管理菜单可以对教师的记录进行添加、删除、修改和查询。图18 教师管理页面输入教师号,可对教师所授课程时行查询图19教师查询页面五、程序源
5、代码下面给出系统的部分设计图及部分源代码 (1)在进行系统界面编程前,先建立数据库,并建立外键。(2)数据库建立后,进行窗口编程。首先建立一个新的工作空间和应用。连接数据库,在应用的open事件下输入如下代码:/ Profile StudentSQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = Connectstring=DSN=studentconnect;if sqlca.sqlcode0 then messagebox(连接失败,不能连接数据源) returnend ifopen(w_login) (3)学生管理页面、成绩管理页
6、面、班级管理页面、课程管理页面、教师管理页面功能似,类所以以学生管理页面为例,学生管理页面(图9)的代码如下:显示按钮cb_3的代码:dw_1.retrieve(%,添加按钮cb_tianjia的代码:string ls_ssexdec ls_szongif rb_1.checked then ls_ssex=男else if rb_2.checked then女 end 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_szo
7、ng);commit;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=修改 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.t
8、ext=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=true rb_2.checked=false else rb_2.checked=true rb_1.checked=false else string ls_ssexelse
9、dw_1.setitem(dw_1.getrow(),sle_1.text),sle_2.text),sle_4.text),dec(sle_5.text),date(em_1.text),ls_ssex) sle_1.text=sle_2.text=sle_4.text=sle_5.text=em_1.text=rb_1.checked=falserb_2.checked=false修改按钮cb_2的代码:dw_1.update()其中dw_1的DataObject属性为d_stu.(4)学生查询页面、成绩查询页面、班级查询页面、课程查询页面、教师查询页面功能类似,所以以学生查询页面为例,学
10、生查询页面(图10)的代码如下:学生查询按钮cb_1的代码:+sle_1.text+班级查询按钮cb_2的代码:+sle_2.text+(5)按班级号、按课程号计算平均成绩、最高成绩、最低成绩、及格率功能类似,所以以查询班级号的及格率为例,查询班级号的及格率页面(图12)的代码如下:Tab_1.tabpage_4.cb_7的clicked事件下的代码为:integer count1,result,count2declare jisuan cursor forselect 分数 from score where 班级号=:sle_7.text; open jisuan; fetch jisuan
11、 into :result; do while sqlca.sqlcode=0 count2=count2+1 if result=60 then count1=count1+1loopclose jisuan;messagebox(提示该班级的及格率是:+string(count1/count2)*100)+(6)查询教师授课成绩页面(图19)的代码如下:Teacher表与course表以教师号为外键建立关联。按钮Cb_1的clicked事件下的代码:其中dw_1的DataObject属性为d_shouke五、结束语在做教学管理系的这段时间里让我了解了很多关于如何构建数据库的知识。首先要进行
12、的是调查用户需求,然后对需求进行分析,建立一个独立于具体数据库的概念模型,再将概念模型转为逻辑数据结构,然后为它寻造一个物理数据结构,建立数据库。在数据的抽象上要考虑那些数据作为实体型,那些作为属性。其次还要考虑数据的安全性,于是我设置了管理系统,只让拥有权限的管理员登入后才能对数据进行操作。这次课设让我更深刻的理解了那句话“纸上得来终觉浅,绝知此事要躬行”。在课堂上的学习总是肤浅的,只有在实践中才能学到更多的东西,才能对书本上的知识理解的更透彻。由于第一次需要在短时间内单独完成这么大的任务,刚开始的时候不知如何下手,有些迷茫,但是随即我就调整状态,利用从图书馆借的几本较为实用的书作为资料,边学边做,渐渐上手,最后终于亲手完成了一个小型的数据库。数据库理论是建数据库的基础,使数据库的建立更加完善,使数据库之间的联系更加紧密,同时也要减少存储介质消耗。当然只有数据库组织数据还是远远不够的,因为人是最终用户,所以也要设计良好的操作界面必须得,友好的互动界面,使使用者操作起来更加得心应手。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1