1、 学生成绩管理系统数据库项目设计报告学生成绩管理系统数据库项目设计报告李伟2015/11/23目 录1 项目背景及需求分析21.1项目背景21.2需求分析22 概念结构设计32.1抽象出系统实体32.2局部E-R图32.3全局E-R图63 逻辑结构设计64 创建数据库及相关操作94.1 创建数据库94.2建立视图104.3建立存储过程124.4建立触发器134.5查询问题及查询结果145项目设计总结171 项目背景及需求分析1.1项目背景高校是教学和科研关键基地,同时还是培养人才关键场所。伴随计算机技术发展和互联网时代到来,学校教学管理受到了极大挑战。Internet技术连续迅猛发展为传统教学
2、管理提出了新模式。以现在计算机技术、网络技术为基础数字化教学管理要依靠本身人才优势,加强对信息资源开发和利用,做好学校信息化基础教学工作,是学校朝着信息化、网络化、现代化目标前进。这种新管理模式,对于管理极为宝贵特征,能够为新型管理模式建构提供理想基础。系统由讲课老师来完成成绩录入,而学生能够自行查询成绩。这么除了减轻教学管理部门人员工作负担,还能够降低信息错误发生,同时为其它部门甚至全校教职员提供信息服务。开发学生成绩管理系统则是以校园网为基础管理系统,利用网络能快速、立即、正确传输信息作用,使部门“信息孤岛”过渡到紧密相关并在全校范围内全部可用数据。经过网络能够使管理部门能够更方便管理学生
3、成绩系统;也使得老师能够方便上传、校队学生成绩;还能够使学生能够快速查询成绩。这么管理部门对信息管理和控制方法变成双向,不仅降低管理方面工作量,而且能够做到信息管理规范化,从而得到科学统计和快速查询。1.2需求分析针对河北工程大学成绩管理工作量大、繁杂,人工处理很困难。学生成绩管理系统借助于计算机强大处理能力,大大减轻了管理人员工作量,并提升了处理正确性。学生成绩管理系统开发利用,实现了学生成绩管理自动化,不仅把广大老师从繁重成绩管理工作中解脱出来、把学校从传统成绩管理模式中解放出来,而且对学生成绩判定和整理更合理、更公正,同时也给老师提供了一个正确、清楚、轻松成绩管理环境。2 概念结构设计2
4、.1抽象出系统实体课程(课程编号、课程老师编号、课程名称);成绩(学号、课程编号、分数);学生(班级、姓名、学号、性别、专业);老师(老师号、姓名、所属专业、性别)。2.2局部E-R图课程号课程名任课老师号老师号老师号课程老师师姓名系别性别老师号讲课mn班级姓名学生师学号性别专业学号老师师姓名系别老师号性别教授老师号1n成绩师学号课程编号分数课程号学号n1考试学生师专业学号班级性别姓名课程师课程号课程名任课老师号nm选修课程号成绩学号学生师专业学号班级性别姓名2.3全局E-R图1拥有选修课程名成绩学号1n考试课程号学号学号课程编号分数n1讲授老师号课程号课程编号任课老师号课程名称课程性别系别姓
5、名老师号老师成绩专业性别学号姓名班级学生1n教授老师号学号13 逻辑结构设计E-R图向关系模型转化要处理问题是怎样将实体型和实体间联络转化为关系模式,怎样确定这些关系模式属性和码。 设计学生成绩管理数据库,包含课程(course)、学生(student)、成绩(sc)、老师(teacher)四个关系, 其关系模式中对每个实体定义属性以下: course表:(课程号(cno),老师号(tno),课程名(cname)) 此为联络“course表”所对应关系模式。课程号和老师号为该关系候选码,满足第三范式。student表:(学号(sno),班级(sclass),姓名(sname),性别(ssex)
6、,专业(smajor))此为联络“student表”所对应关系模式。学号为该关系候选码,满足第三范式。 sc表:(学号(sno),课程号(cno),成绩(degree)此为联络“sc表”所对应关系模式。学号和课程号为该关系候选,满足第三范式。teacher表:(老师姓名(tname)、性别(tsex)、老师号(tno)、专业(tmajor)此为联络“teacher表”所对应关系模式。老师号为该关系候选码,满足第三范式。数据库中包含4个表,即课程信息(course),学生信息(student),成绩信息(sc),老师信息(teacher)。course表表结构列名数据类型长度小数位数是否许可NU
7、LL值说明cnochar5否主码cnamevarchar20否tnochar3否student表表结构列名数据类型长度小数位数是否许可NULL值说明snochar9否主码snamechar8是ssexchar2是取值:男或女smajorchar20是sclasschar10是sc表表结构列名数据类型长度小数位数是否许可NULL值说明snochar10否组合主码,外码degreedecimal41是取值1-100cnochar5否组合主码,外码teacher表表结构列名数据类型长度小数位数是否许可NULL值说明tnochar3否主码tnamevarchar8是tsexchar2是取值:男或女td
8、eptchar16是4 创建数据库及相关操作4.1 创建数据库CREATE database test;/*创建test数据库*/4.1.1 创建表CREATE TABLE course(/创建课程信息表cno char(5) NOT NULL,cname varchar(20) NOT NULL,tno char(3) NOT NULL,CONSTRAINT C1 PRIMARY KEY(cno);CREATE TABLE student(/创建学生信息表sno char(9) PRIMARY KEY,sname char(8),ssex char(2),smajor char(20),sc
9、lass char(10);CREATE TABLE sc(/创建成绩表sno char(10) NOT NULL,degree decimal(4,1) ,cno char(5) NOT NULL,CONSTRAINT A1 PRIMARY KEY(sno,cno),CONSTRAINT A2 CHECK(degree=0 and degree=100);CREATE TABLE teacher(/创建老师表tno char(3) NOT NULL,tname varchar(8),tsex char(2),tdept char(16),CONSTRAINT C1 PRIMARY KEY(t
10、no);4.1.2 添加统计 course表添加示例:INSERT INTO courseVALUES(C01,科学导论,101);为了简化,其它用Navicat添加student表添加示例:INSERT INTO studentVALUES(,叶何斌,男,计算机科学和技术,计算机1403);为了简化,其它用Navicat添加。sc表添加示例:INSERT INTO scVALUES(,87,C01);为了简化,其它用Navicat添加teacher表添加示例:INSERT INTO teacherVALUES(,叶何斌,男,计算机科学和技术,计算机1403);为了简化,其它用Navicat添
11、加4.2建立视图4.2.1定义视图v_student,查询全部选修科学导论课程学生学号(sno),姓名(sname),成绩(degree)。代码:CREATE VIEW v_studentASSELECT A.sno,sname,degreeFROM student A,course B,sc CWHERE A.sno=C.sno AND B.cno=C.cno AND cname=科学导论;查询定义视图v_student代码:SELECT *FROM v_student;结果:4.2.2利用视图向表sc中插入一条数据。view_sc是创建视图代码:CREATE VIEW view_sc/创建
12、ASSELECT sno,degree,cnoFROM sc;INSERT INTO view_sc/实施VALUES(,88,C01);SELECT sno,degree,cno/查看结果FROM sc;结果:在sc表中已经正确插入。DELETE FROM view_sc WHERE sno=;/删除结果:已经正确删除。4.2.3修改视图view_sc代码为:ALTER VIEW view_sc AS SELECT sno,degree,cno;删除视图view_sc代码为:DROP VIEW view_sc;4.3建立存放过程4.3.1创建一个存放过程,从student表中检索出全部班级为
13、“计算机1403”学生学号,姓名。代码:DELIMITER /*将MYSQL结束符设置为/*/CREATE PROCEDURE proc_stud()READS SQL DATABEGINSELECT sno,sname,smajor FROM studentWHERE sclass LIKE %计算机1403% ORDER BY sno;END /DELIMITER ;/*将结束符恢复成份号*/实施存放过程:CALL proc_stud;结果:4.3.2创建一个num_sc存放过程,统计一个同学课程成绩个数。代码:DELIMITER /*将MYSQL结束符设置为/*/CREATE PROCE
14、DURE num_sc(IN tmp_sno char(9), OUT count_num INT)READS SQL DATABEGINSELECT COUNT(*) INTO count_num FROM scWHERE sno=tmp_sno;END /DELIMITER ;/*将结束符恢复成份号*/4.4建立触发器在数据库student表中,定义一个触发器,当一个学生被删除时,把该学生学号和姓名添加到delstudent表中。代码:CREATE TABLE delstudent SELECT sno,sname FROM student WHERE 1=0;/创建一个空表用于接收删除后
15、数据CREATE TRIGGER trig_student/创建student表触发器AFTER DELETE ON student FOR EACH R0WINSERT INTO delstudent(sno,sname) values(old.sno, old.sname);DELETE FROM student WHERE sname=李甜甜;/删除一个学生,验证触发器是否触发。select * from delstudent;/查看接收删除数据表结果:触发器已经触发。4.5查问询题及查询结果4.5.1查询全部学生学号、姓名、性别和专业代码:select sno,sname,ssex,s
16、major from student;结果:4.5.2计算“C01”课程平均成绩。代码:SELECT AVG(degree) FROM sc WHERE cno=C01;结果:4.5.3查询选修课程名为“高等数学”学生学号和姓名。代码:SELECT A.sno,snameFROM student A INNER JOIN sc B ON A.sno=B.snoINNER JOIN course C ON B.cno=C.cnoWHERE C.cname=高等数学;结果:4.5.4查询“C03”课程不及格学生信息代码:SELECT A.sno,sname,ssex,smajor,sclassFR
17、OM student A INNER JOIN sc B ON A.sno=B.snoINNER JOIN course C ON B.cno=C.cnoWHERE C.cno=C03 AND B.degree60;结果:4.5.5查询不讲授“C01”课程老师姓名。代码:SELECT tnameFROM teacherWHERE tno=ANY(SELECT tno FROM course WHERE cno!=C01 );结果:4.5.6插入学号为“”、姓名为“曾淑亮”、性别为“男”学生信息。代码:INSERT INTO student (sno,sname,ssex)VALUES (,曾淑
18、亮,男);结果:5项目设计总结 这次学生成绩管理系统设计,我们关键采取是命令行,然后Navicat图形界面辅助操作方法完成设计。经过这次程序设计,加深了对课程设计了解。在这次课程设计中,我们回顾了很多以前东西,也发觉了很多问题,以前全部没遇见过,收获很大。在对不一样功效代码是不一定能够完整实施,不过大约全部是一样。看着自己做系统,我们自己就会又欣慰又难过,欣慰是最终把它做出来了,即使碰到很多困难,难过是自己知道还有很多不足,不过因为知识有限,无法去完善,才知道“书到用时方恨少”。 此次成绩管理系统设计让我们对Mysql数据库了解愈加深入,在整个是设计过程中,经过对把各个管理信息连接起来分析,锻炼了我们对事情分析能力,经过怎样处理过程中出现问题,提升了我们查找文件能力,对网络资源利用能力和和其它同学交流沟通能力。而且经历这次课程设计,我们也学会了自学和分工合作。我们认为每一次课程设计,全部是让我们对原有知识从了解表面到深入本质,从个体学习到整体把握跳跃,更是让我们把书本知识应用到实际中,让我们了解了我们学习有什么用,能够处理什么样问题,增加我们自信和学习动力。 总而言之,经过这次课程设计,我们获益匪浅。也感受到了和同学合作开发乐趣,同时验证了一句话“团结就是力量”。最终感谢老师悉心教导,为我们程序开发之路打下了扎实基础。