《教务管理系统_数据库课程设计报告(25页).doc》由会员分享,可在线阅读,更多相关《教务管理系统_数据库课程设计报告(25页).doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-教务管理系统_数据库课程设计报告-第 22 页理 工 学 院课 程 设 计 报 告 课程名称 数据库课程设计 设计题目 教务管理系统 专 业 计算机科学与技术 班 级 学 号 姓 名 完成日期 2013年12月30 日 课 程 设 计 任 务 书设计题目: 教务管理系统 设计内容与要求:类似于我校教务管理系统,有四类用户:教务员可以输入学生、教师、班级、课程信息,一个班级只属于一个专业,一个学生只属于一个班级。教务员负责输入每个专业、每个班级需要学习哪些课程,指定课程的任课教师。教师可以查看学习该课程的学生名单。课程结束后,教师可以录入课程成绩。一个教师可以教授多个班的多门课程,每门课由多位
2、老师讲授。课程分两类,必修课和选修课。系统要记录每个学生学习各门必修课的成绩,还要记录学生选修了哪些选修课以及课程成绩。学生可以查看自己各门课程的成绩。学生还可以进行评教,给老师打分。系统管理员可以输入教室信息,并结合班级、课程、教室信息实现自动排课。 指导教师: 2013 年 12 月 20 日课 程 设 计 评 语 成绩: 指导教师:_ 年 月 日目录1 概述.21.1 课程设计目标.21.2 课程设计的背景和意义.21.1.2 课程设计的背景22 需求分析.32.1 系统需求.32.2 可行性分析.32.3 用户要求.32.3.1 信息需求.32.3.2 处理需求.42.3.3. 课程设
3、计的意义43概念结构设计.63.1设计分析.63.2概念模型设计.63.2.1 局部概念结构设计63.2.2 全局概念结构模型(E-R图)74 逻辑结构设计.85 物理结构设计105.1数据表的设计105.2数据库完整性设计125.2.1 数据库实体完整性设计125.2.2 数据库参照完整性设计125.2.3 数据库用户定义完整性设计135.3数据库安全性设计136 应用程序设计146.1系统功能模块图146.2系统界面157 设计总结288 体会与收获29参考文献301 概述1.1 课程设计目标课程设计总的目标是衡量学生是否取得学习效果,培养学生具有专业网站初步的规划、设计、制作能力。具体表
4、现在网站内容、功能、安全等方面合理策划和规划;培养具有主页和二级页面的创意、设计等方面的技术处理能力和具有强大的动态效果制作能力。培养学生具有基于后台数据库的编程技术,实现客户服务器端交互式动态网页的制作能力,掌握实际网页设计与制作开发流程和开发方法。1.2 课程设计的背景及意义现如今高等院校的招生人数越来越多,必然就会有大量的学生信息、教师信息及课程信息需要处理。如果只靠人力来完成,这将会变成一项非常繁琐、复杂的工作,而且还有可能出现很多意想不到的错误,给管理这些数据带来了极大的不便,越来越不适合高校的发展需要。教务管理系统是一个庞大而复杂的系统,它包括对教师信息的管理,对课程资料的管理,对
5、学生信息的管理和对学生成绩的管理等主要功能。教务管理系统是每所高校的一项必不可少的内容,它的好坏直接影响到学校的主要工作,此系统一旦瘫痪,不仅会影响到学校的每一位学生,学校也会因此受到非常严重的损失。随着我校近几年来的快速发展,办学模式多元化,在校学生规模不断扩大,为了加速对教务管理的计算机化,我校需要开发出符合我校实际的教务管理系统,为学校教学管理提供一个快速、简单规范的管理平台,同时也方便教员查询相关信息,提高信息传播速度,扩大信息共享范围。所以,现在设计一个功能完整、操作简单以及界面友好的教务管理系统变得非常重要。通过这个系统,管理员能够对教师信息、课程信息、学生信息和学生成绩进行查询、
6、添加、修改和删除等操作,用户也可以对自己的基本信息进行修改,学生还可以用该系统进行网上选课和成绩查询,非常的方便。因此,本系统开发的总体目标就是在教务管理中实现信息管理的系统化、自动化,减少工作繁琐度,增加效率、方便性。2 需求分析2.1 系统需求通过调查,要求系统需要有以下功能: 由于操作人员的计算机知识普遍较差,要求有良好的人机界面; 由于该系统的使用对象多,要求有较好的权限管理; 原始数据修改简单方便,支持多条件修改 方便的数据查询,支持多条件查询; 在相应的权限下,删除数据方便简单,数据稳定性好; 数据计算自动完成,尽量减少人工干预;2.2 可行性分析由于本系统管理的对象单一,都是在校
7、学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。且学校用于学生管理的微机都是PIII以上的机器,在存储量、速度方面都能满足数据库运行的要求。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。本系统的设计是在Window XP操作系统环境下,使用VS开发成功的。在开发过程中,如何选择数据库管理是一个重要的问题,目前,数据库产品较多、开发工具也很多。每种产品都具有各自的特点和适用范围,因此,在选择数据库时,应考虑数据库应用的特点及适用范围,在选择开发工具时也考虑它的健壮性、可移性、安全性等
8、问题。2.3 用户要求2.3.1 信息需求教务管理系统涉及的实体有:l 教师工作证号、姓名、职称、电话等;l 学生学号、姓名、性别、出生年月等;l 班级班号、最低总学分等;l 系系代号、系名和系办公室电话等;l 课程课序号、课名、学分、上课时间及名额等。这些实体之间的联系如下:l 每个学生都属于一个班,每个班都属于一个系,每个教师也都属于一个系。l 每个班的班主任都由一名教师担任。l 一名教师可以教多门课,一门课可以有几位主讲老师,但不同老师讲的同一门课其课序号是不同的(课序号是唯一的)。l 一名同学可以选多门课,一门课可被若干同学选中。l 一名同学选中的课若已学完,应该记录有相应成绩。2.3
9、.2 处理需求教务系统主要提供数据维护、选课和信息查询。其中常见的查询有:系统中各对象的基本信息查询。 查询指定班、系的学生信息(名单、人数等)。查询学生的成绩、学分情况。查询教师授课情况和学生选课情况。2.3.3 安全性与完整性要求l 安全性要求:1.系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;3.系统应对不同用户设置不同的权限,区分不同的用户,如学生,教师,系统管理员。l 完整性要求:1.各种信息记录的完整性,关键信息记录内容不能为空;2.各种数据间相互的联
10、系的正确性;3.相同的数据在不同记录中的一致性。2.4 需要的信息管理模块1、学生信息管理该模块是教务工作人员进行对学生信息的管理,进行学生信息的添加、修改、删除。2、教师信息管理教务工作人员通过此模块来管理教师信息,包括教师信息的添加、修改、删除等。信息的添加时,需要验证教师的编号是否重复;删除和和修改学生信息,和学生信息管理模块相同。3、 院系管理此模块是用来管理院系的信息,包括班级院系的添加,修改,删除等。在进行信息的添加时,需要进行班级的编号是否重复的检查,如院系编号重复则对用户进行提示,不重复则添加成功。院系管理模块的删除和修改和学生信息管理模块相同。4、 课程信息管理教务工作人员通
11、过该模块来管理课程的基本信息,包括课程信息的添加,修改,删除和班级课程的设置等,具体做法同前面的模块。5、 成绩管理教务工作人员通过该模块来进行学生成绩的管理,在进行学生成绩的添加时,可用它来为学生设置所在班级的课程表来直接输入成绩。6、 综合查询通过该模块可以查询教务所需要的各种信息。如学生信息查询提供了包括学生学号、姓名、所在班级、班主任名字和宿舍等信息,学生信息进行查询的各种查询条件,用户可以根据单个的查询条件或者它们的组合来进行查询。同时,在查询的时候还提供了进行模糊查询的功能,即该模块能够利用读者输入的非完整的查询条件进行查询,这样更加方便了用户的查询管理。综合查询模块包括了学生信息
12、查询、教师信息查询、班级信息查询、院系信息查询、课程信息查询和成绩查询等各种功能查询。3 概念结构设计3.1设计分析在概念结构设计中,我采用自底向上设计概念结构的方法。即第一步抽象数据并设计局部视图,第二步是集成局部视图,得到全局的概念结构。3.2概念模型设计3.2.1局部概念结构设计(1)、系内的关系模式图工资1n1n1n教师班级属于最低总学分班号电话邮箱姓名工作证号系系办公室电话系名系代号属于工作学生学号年龄性别姓名系代号图3-1 系内关系模式图(2)、选课系统的关系模式图选修期中成绩平时成绩最后成绩总评成绩期末成绩年龄学号课名学分课序号nm姓名课程学生名额性别系代号图3-2 选课系统的关
13、系模式图课序号课名(3)、教师授课系统关系模型图授课工资教师电话邮箱姓名工作证号课程n1名额学分图3-3 教师授课系统关系模型图(4)、教师与班级的关系模型图课名班级负责最低总学分班号教师电话工资姓名工作证号n1邮箱图3-4 教师与班级的关系模型图3.2.2 全局概念结构模型(E-R图)选修平时成绩最后成绩总评成绩期中成绩期末成绩课名课序号学分年龄学号姓名nm课程学生名额性别n系代号属于n1课名班号授课负责班级n最低总学分n属于111工作n1工资系教师系代号系名系办公室电话电话姓名工作证号邮箱图3-5 全局概念结构模型图4 逻辑结构设计关系模式的设计与优化E-R图向关系模型的转换:1 “教师”
14、实体对应的关系模式: 教师(工作证号,姓名,工资,电话,邮箱,系代号)代码表示为:Teacher(Tno. Tname. Salary. Tel. Email. Dno)其中,工作证号为其候选码,又因为教师与系别之间是n:1的工作关系,经过与系别关系模式的合并后,系别号Dno成为教师关系模式的外码,存在的关系依赖为Tno ( Tname,Salary,Tel,Email,Dno),不存在对候选码的部分依赖与传递依赖,所以满足BCNF。2 “学生”实体对应的关系模式: 学生(学号,姓名,性别,年龄,班号,系代号) 代码表示:Student ( Sno, Sname, Ssex, Sage. Cl
15、ass .Dno)其中,学号为其候选码,又因为学生与班级之间是n:1的属于关系,经过与班级关系模式的合并后,班号Class成为学生关系模式的外码,存在的关系依赖为Sno(Sname,Ssex.Sage.Class. Dno),Class Dno,存在对候选码的传递依赖,所以满足2NF.3 系(系代号,系名,系办公室电话) 代码表示:Sdept ( Dno, Dname, Dphone ) 系代号为候选码,存在的函数依赖为Dno (Dname,Dphone),且不存在部分依赖与传递依赖,所以满足BCNF。4 “选修”联系对应的关系模式: 选课(学号,课序号,最后成绩,平时成绩,期中成绩,期末成绩
16、,) 代码表示:SC ( Sno, Cno,Grade. Daigrade. Midbrade. Lasgrade,)此为m:n联系“选修”所对应的关系模式。Sno和Cno均为外码。存在的函数依赖为完全函数依赖(Sno,Cno) (Grade.Daigrade. Midbrade. Lasgrade. Fingrade),且不存在部分依赖与传递依赖,所以满足BCNF。5 “课程”实体对应的关系模式:课程(课序号,课名,学分,名额,工作证号)代码表示:Course ( Cno, Cname, Credit, Cnum, Tno )其中,课号为其候选码,又由于课程与教师之间是n:1的授课关系,所以
17、经过关系模式的合并后,教师的工作证号被合并为课程关系模式中的外码。存在的函数依赖为Cno (Cname,Credit,Cnum,Tno),且不存在对候选码的部分依赖和传递依赖,所以,满足BCNF。6 “班级”实体对应的关系模式:班级(班号,最低总学分,工作证号,系代号)代码表示:Class ( Class, Ccredit, Tno. Dno )其中,班号为其候选码,又由于班级与系别之间是n:1的“属于”关系,经过“班级”与“系别”两个实体关系模式的合并后,系号被合并为班级对应的关系模式的外码。而班级与教师之间是n:1的“负责”关系,所以按照规定,教师的工作证号也被合并为班级的外码。存在的函数
18、依赖为Class (Ccredit, Tno.Dno ),其中Class Tno,而Tno Dno,即存在对候选码的传递依赖,所以只满足2NF。5 物理结构设计5.1 数据表的设计根据实体属性图可以建立以下各表,建表的同时定义表有关的完整性约束条件。1 学生基本信息表表5-1学生基本信息表列名长度类型NULLDEFAULT主键学号10char()nonoYes姓名20varchar()nonono性别2char()nonono所在专业2char()yesnono所属院系2char()yesnono联系电话11char()yesnono2 专业基本信息表表5-2 专业基本信息表列名长度类型NUL
19、LDEFAULT主键专业编号2char()nonoYes专业名称20varchar()nonono所属院系2char()yesnono总学分5char()yesnono必修学分5char()yesnono3 学生成绩表表5-3学生成绩表列名长度类型NULLDEFAULT主键学号10char()nonono姓名20char()nonono课程名称10char()nonono学期学年3char()yesnono成绩2char()yesnono授课教师2char()yesnono4 院系基本信息表表5-4院系基本信息表列名长度类型NULLDEFAULT主键院系号2char()nonoyes院系名称2
20、0char()yesnono负责人10char()yesnono教务管理员10char()yesnono5 教师基本信息表表5-5教师基本信息表列名长度类型NULLDEFAULT主键教师编号10char()nonoyes姓名20varchar()nonono性别2char()yesnono所属院系2char()yesnono6 评教基本信息表表5-6评教基本信息表列名长度类型NULLDEFAULT主键教师编号10char()nonono教师姓名20varchar()yesnono课程编号50varchar()nonono课程名称10char()yesnono满意度2char()yesnono7
21、 课程基本信息表表5-7课程基本信息表列名长度类型NULLDEFAULT主键课程编号20varchar()nonoyes课程名称10char()nonono任课教师10char()yesnono开设院系30varchar()yesnono8 班级基本信息表表5-8班级基本信息表列名长度类型NULLDEFAULT主键班级编号10char()nonoyes班级人数3char()yesnono所属院系2char()yesnono9 网上选课基本信息表表5-9网上选课基本信息表列名长度类型NULLDEFAULT主键课程号50varchar()nonono开课院系30varchar()yesnono已选
22、人数3char()nonono课程类别1char()yesnono限选人数3char()yesnono5.2 数据库完整性设计数据库完整性是指数据库中数据的正确性和相容性。数据完整性包括三类:实体完整性,参照体完整性和用户定义完整性。5.2.1 数据库实体的完整性设计本教务管理系统数据库的实体有:学生,教师,专业,院系,教室,考试成绩,课程。为保证实体的完整性,将以上所有实体的主属性的属性值都设置为非空。5.2.2 数据库参照完整性设计1、学生与课程选修关系模式学生信息(学号,姓名,性别,年龄) 主键:学号课程信息(课程号,课程名称,学分)主键:课程号选修(学号,课程号,考试成绩)主键:学号,
23、课程号2、学生与班级的从属关系模式:学生信息(学号,姓名,班级编号)主键:学号班级信息(班级编号,班级名称,专业名称,院系名称)主键:班级编号3、学生与考试成绩的考试关系模式学生信息(学号,姓名)主键:学号成绩信息(成绩号,课程编号)主键:成绩号4、班级与专业的从属关系模式专业信息(专业编号,专业名称)主键:专业编号班级信息(班级编号,班级名称,专业编号)主键:班级编号5、专业与院系的从属关系模式院系信息(院系编号,专业名称)主键:专业编号专业信息(专业编号,专业名称,院系编号)主键:专业编号6、教师与课程的授课关系模式教师(教师编号,姓名) 主键:教师编号课程(课程编号,课程名称)主键:课程
24、编号授课(课程名称,教师编号,课时)主键:课程名称,教师编号5.2.3数据库的用户定义完整性设计学生基本信息表:(1)性别必须是男或女(2)身份证号必须是18位(3)所在专业,所属院系必须是本系统提供的5.3数据库安全性设计数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。系统安全保护措施是否有效是数据库系统的主要指标之一。数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。 信息系统尽管功能强大,技术先进,但由于受到自身体系结构,设计思路以及运行机制 等限制,也隐含许多不安全因素。常见因素有:数据的输入,输出,存取与备份,源程序
25、以及应用软件,数据库,操作系统等漏洞或缺陷,硬件,通信部分的漏洞,企业内部人员的因素,病毒,“黑客”等因素。因此,为使本系统能够真正安全,可靠,稳定地工作,必须考虑如下问题:为保证安全,不致使系统遭到意外事故的损害,系统因该能防止火,盗或其他形式的人为破坏。 1) 系统要能重建2) 系统应该是可审查的3) 系统应能进行有效控制,抗干扰能力强4) 系统使用者的使用权限是可识别的6 应用程序设计6.1 系统功能模块图本系统设计的并不复杂,模块划分也比较清楚。通过对不同的功能进行分析,就可以得到系统的模块划分:登录管理模块,又分为管理员登录、教师登录和学生登录三个子模块;管理员模块,包括对教师信息、
26、课程信息、学生信息和学生成绩进行查询、添加、修改及删除等子模块; 教师模块,包括对个人信息的查询及密码的修改、课表的查询等子模块; 学生模块,包括对个人信息的查询及密码的修改、网上选课、课表的查询和个人成绩的查询等子模块教务管理系统学生教师管理员登录管理成绩查询网上选课密码修改课表查询个人信息查询课表查询密码修改个人信息查询学生成绩管理学生信息管理课程信息管理教师信息管理学生登录教师登录管理员登录修改学生信息添加学生信息查询学生信息删除课程信息修改课程信息添加课程信息查询课程信息删除教师信息修改教师信息添加教师信息查询教师信息删除学生信息删除学生成绩修改学生成绩添加学生成绩查询学生成绩 图6-
27、1 系统模块图6.2系统界面1 系统的主界面图6-2 系统主界面部分设计代码如下:namespace 教务管理系统public MainForm()InitializeComponent();protected override void Dispose( bool disposing )if( disposing )if (components != null) components.Dispose();base.Dispose( disposing );private bool checkChildFrmExist(string childFrmName)foreach(Form chil
28、dFrm in this.MdiChildren)if(childFrm.Name = childFrmName) if(childFrm.WindowState = FormWindowState.Minimized)childFrm.WindowState = FormWindowState.Normal;childFrm.Activate();return true;return false;private void menuItem2_Click(object sender, System.EventArgs e)if (this.checkChildFrmExist(ClassInf
29、o) = true)return;ClassInfo newFrm=new ClassInfo();newFrm.MdiParent = this;newFrm.Show();private void menuItem3_Click(object sender, System.EventArgs e)if (this.checkChildFrmExist(StudentInfo) = true)return;StudentInfo newFrm=new StudentInfo();newFrm.MdiParent = this;newFrm.Show();private void menuIt
30、em4_Click(object sender, System.EventArgs e)if (this.checkChildFrmExist(CourseInfo) = true)return;CourseInfo newFrm=new CourseInfo();newFrm.MdiParent = this;newFrm.Show();private void menuItem6_Click(object sender, System.EventArgs e)if (this.checkChildFrmExist(CourseElect) = true)return;CourseElect
31、 newFrm=new CourseElect();newFrm.MdiParent = this;newFrm.Show();private void menuItem7_Click(object sender, System.EventArgs e) if (this.checkChildFrmExist(CurriculumSchedule) = true) return;CurriculumSchedule newFrm=new CurriculumSchedule();newFrm.MdiParent = this;newFrm.Show();private void menuIte
32、m8_Click(object sender, System.EventArgs e)if (this.checkChildFrmExist(ScoreInput) = true)return;ScoreInput newFrm=new ScoreInput();newFrm.MdiParent = this;newFrm.Show();private void menuItem11_Click(object sender, System.EventArgs e)this.Close();2学生选课界面界面图6-3 学生选课界面部分程序代码如下:private void CourseElect
33、_Load(object sender, System.EventArgs e)dataGrid1.DataSource=this.electTable;string strConn=workstation id=localhost;Integrated Security=SSPI;database=eisbook;SqlConnection cn=new SqlConnection(strConn);cn.Open();string sql=select a.课序号,a.课程编号,b.课程名称,b.教师,b.开课系别,+a.上课地点,a.上课时间天,a.上课时间节,b.拼音码+ from 课
34、程表a,课程信息b+ where (b.本学期课程=Y)and(a.课程编号=b.课程编号);SqlDataAdapter da2=new SqlDataAdapter(sql,cn);da2.Fill(this.courseTable);this.dv=courseTable.DefaultView;dataGrid2.DataSource=dv;private void ShowInfo()/string strConn=workstation id=localhost;Integrated Security=SSPI;database=eisbook;SqlConnection cn=n
35、ew SqlConnection(strConn);cn.Open();SqlCommand cmd=cn.CreateCommand();cmd.CommandText=select a.姓名,b.班级名称,a.学籍编号from 学生信息a,班级信息b +where(a.班级编号=b.班级编号)and(学号=+txt1.Text.Trim()+);SqlDataReader dr=cmd.ExecuteReader();dr.Read();if(!dr.HasRows)MessageBox.Show(无此学生,请重新输入学号,提示,MessageBoxButtons.OK,MessageBo
36、xIcon.Stop);dr.Close();return;if(dr.GetValue(2).ToString().Trim()!=1)MessageBox.Show(该学生并非在籍学生,不能选课,提示,MessageBoxButtons.OK,MessageBoxIcon.Stop); return;txt2.Text=dr.GetValue(0).ToString().Trim();txt3.Text=dr.GetValue(1).ToString().Trim();dr.Close();string sql=select a.学号,a.课序号,b.课程名称,b.教师,+b.开课系别,c
37、.上课时间天,c.上课时间节,c.上课地点+ from 选课表a,课程信息b,课程表c+ where(a.课序号=c.课序号)and(200400000+b.课程编号=a.课序号)+and(a.学号=+txt1.Text.Trim()+);SqlDataAdapter da=new SqlDataAdapter(sql,cn);da.Fill(this.electTable);this.studentID=txt1.Text.Trim();this.stduentName=txt2.Text.Trim();btnElect.Enabled=true;btnDelete.Enabled=true
38、;btnView.Enabled=true;private void btnElect_Click(object sender, System.EventArgs e)if(dv.Count=0)MessageBox.Show(可选课表为空,无法选课,提示,MessageBoxButtons.OK,MessageBoxIcon.Stop);return;string courseID=dataGrid2dataGrid2.CurrentCell.RowNumber,0.ToString().Trim();string courseDay=dataGrid2dataGrid2.CurrentCe
39、ll.RowNumber,6.ToString().Trim();string courseSec=dataGrid2dataGrid2.CurrentCell.RowNumber,7.ToString().Trim();foreach(DataRow aRow in this.electTable.Rows)if(aRow课序号.ToString().Trim()=courseID)MessageBox.Show(所选课程已经在课程表中,课程重复,MessageBoxButtons.OK,MessageBoxIcon.Stop);return;if(aRow上课时间天.ToString().
40、Trim()=courseDay&aRow上课时间节.ToString().Trim()=courseSec)string msg=所选课程和已选课程:+aRow课程名称.ToString().Trim()+ 上课时间冲突;MessageBox.Show(msg,时间冲突,MessageBoxButtons.OK,MessageBoxIcon.Stop);return;string strConn=workstation id=localhost;Integrated Security=SSPI;database=eisbook;SqlConnection cn=new SqlConnection(strConn);cn.Open();SqlCommand cmd=cn.CreateCommand();cmd.CommandText=insert into 选课表(学号,课序号) values(+this.studentID+,+courseID+);cmd.ExecuteNon