计算机1403学生成绩管理系统项目设计报告作者:……………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项目设计总结..............................................................181项目背景及需求分析1.1项目背景高校是教学和科研的重要基地,同时还是培养人才的重要场所。随着计算机技术的发展和互联网时代的到来,学校的教学管理受到了极大的挑战。Internet技术持续迅猛的发展为传统的教学管理提出了新的模式。以现在计算机技术、网络技术为基础的数字化教学管理要依靠自身的人才优势,加强对信息资源的开发和利用,做好学校信息化的基础教学工作,是学校朝着信息化、网络化、现代化的目标迈进。这种新的管理模式,对于管理极为宝贵的特性,可以为新型管理模式的建构提供理想的基础。系统由授课教师来完成成绩录入,而学生可以自行查询成绩。这样除了减轻教学管理部门人员的工作负担,还可以减少信息错误的发生,同时为其他部门甚至全校教职工提供信息服务。开发的学生成绩管理系统则是以校园网为基础的管理系统,利用网络能快速、及时、准确的传递信息的作用,使部门的“信息孤岛”过渡到紧密相关并在全校范围内都可用的数据。通过网络可以使管理部门能够更方便的管理学生的成绩系统;也使得教师能够方便的上传、校队学生成绩;还可以使学生能够快速查询成绩。这样管理部门对信息的管理和控制方式变成双向的,不但减少管理方面的工作量,而且可以做到信息管理规范化,从而得到科学的统计和快速的查询。1.2需求分析针对河北工程大学的成绩管理工作量大、繁杂,人工处理非常困难。学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。2概念结构设计2.1抽象出系统实体课程(课程编号、课程教师编号、课程名称);成绩(学号、课程编号、分数);学生(班级、姓名、学号、性别、专业);教师(教师号、姓名、所属专业、性别)。2.2局部E-R图课程号课程名任课教师号教师号教师号课程教师师姓名系别性别教师号授课mn班级姓名学生师学号性别专业学号教师师姓名系别教师号性别教授教师号1n成绩师学号课程编号分数课程号学号n1考试学生师专业学号班级性别姓名课程师课程号课程名任课教师号nm选修课程号成绩学号学生师专业学号班级性别姓名2.3全局E-R图1拥有选修课程名成绩学号1n考试课程号学号学号课程编号分数n1讲授教师号课程号课程编号任课教师号课程名称课程性别系别姓名教师号教师成绩专业性别学号姓名班级学生1n教授教师号学号13逻辑结构设计E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。设计学生成绩管理数据库,包括课程(course)、学生(student)、成绩(sc)、教师(teacher)四个关系,其关系模式中对每个实体定义的属性如下:course表:(课程号(cno),教师号(tno),课程名(cname))此为联系“course表”所对应的关系模式。课程号和教师号为该关系的候选码,满足第三范式。student表:((学号(sno),班级(sclass),姓名(sname),性别(ssex),专业(smajor))此为联系“student表”所对应的关系模式。学号为该关系的候选码,满足第三范式。sc表:(学号(sno),课程号(cno),成绩(degree))此为联系“sc表”所对应的关系模式。学号和课程号为该关系的候选,满足第三范式。teacher表:(教师姓名(tname)、性别(tsex)、教师号(tno)、专业(tmajor))此为联系“teacher表”所对应的关系模式。教师号为该关系的候选码,满足第三范式。数据库中包含4个表,即课程信息(course),学生信息(student),成绩信息(sc),教师信息(teacher)。course表的表结构列名数据类型长度小数位数是否允许NULL值说明cnochar5否主码cnamevarchar20否tnochar3否student表的表结构列名数据类型长度小数位数是否允许NULL值说明snochar9否主码snamechar8是ssexchar2是取值:男或女smajorchar20是sclasschar10是sc表的表结构列名数据类型长度小数位数是否允许NULL值说明snochar10否组合主码,外码degreedecimal41是取值1-100cnochar5否组合主码,外码teacher表的表结构列名数据类型长度小数位数是否允许NULL值说明tnochar3否主码tnamevarchar8是tsexchar2是取值:男或女tdeptchar16是4创建数据库及相关操作4.1创建数据库CREATEdatabasetest;/*创建test数据库*/4.1.1创建表CREATETABLEcourse(//创建课程信息表cnochar(5)NOTNULL,cnamevarchar(20)NOTNULL,tnochar(3)NOTNULL,CONSTRAINTC1PRIMARYKEY(cno));CREATETABLEstudent(//创建学生信息表snochar(9)PRIMARYKEY,snamechar(8),ssexchar(2),smajorchar(20),sclasschar(10));CREATETABLEsc(//创建成绩表snochar(10)NOTNULL,degreedecimal(4,1),cnochar(5)NOTNULL,CONSTRAINTA1PRIMARYKEY(sno,cno),CONSTRAINTA2CHECK(degree=0anddegree=100));CREATETABLEteacher(//创建教师表tnochar(3)NOTNULL,tnamevarchar(8),tsexchar(2),tdeptchar(16),CONSTRAINTC1PRIMARYKEY(tno));4.1.2添加记录course表添加示例:INSERTINTOcourseVALUES(’C01’,’科学导论’,’101’);为了简化,其余用Navicat添加student表添加示例:INSERTINTOstudentVALUES(’140210316’,’叶何斌’,’男’,’计算机科学与技术’,’计算机1403’);为了简化,其余用Navicat添加。sc表添加示例:INSERTINTOscVALUES(’140210316’,’87’,’C01’);为了简化,其余用Navicat添加teacher表添加示例:INSERTINTOteacherVALUES(’140210316’,’叶何斌’,’男’,’计算机科学与技术’,’计算机1403’);为了简化,其余用Navicat添加4.2建立视图4.2.1定义视图v_student,查询所有选修科学导论的课程的学生的学号(sno),姓名(sname),成绩(degree)。代码:CREATEVIEWv_studentASSELECTA.sno,sname,degreeFROMstudentA,courseB,scCWHEREA.sno=C.snoANDB.cno=C.cnoANDcname='科学导论';查询定义视图v_student代码:SELECT*FROMv_student;结果:4.2.2利用视图向表sc中插入一条数据。view_sc是创建的视图代码:CREATEVIEWview_sc//创建ASSELECTsno,degree,cnoFROMsc;INSERTINTOview_sc//执行VALUES('140210321','88','C01');SELECTsno,degree,cno//查看结果FROMsc;结果:在sc表中已经正确插入。DELETEFROMview_scWHEREsno=’140210321’;//删除结果:已经正确删除。4.2.3修改视图view_sc的代码为:ALTERVIEWview_scASSELECTsno,degree,cno;删除视图view_sc的代码为:DROPVIEWview_sc;4.3建立存储过程4.3.1创建一个存储过程,从student表中检索出所有班级为“计算机1403”的学生的学号,姓名。代码:DELIMITER///*将MYSQL的结束符设置为//*/CREATEPROCEDUREproc_stud()READSSQLDATABEGINSELECTsno,sname,smajorFROMstudentWHEREsclassLIKE'%计算机1403%'ORDERBYsno;END//DELIMITER;/*将结束符恢复成分号*/执行存储过程:CALLproc_stud;结果:4.3.2创建一个num_sc的存储过程,统计一个同学的课程成绩个数。代码:DELIMITER///*将MYSQL的结束符设置为//*/CREATEPROCEDUREnum_sc(INtmp_snochar(9),OUTcount_numINT)READSSQLDATABEGINSELECTCOUNT(*)INTOcount_numFROMscWHEREsno=tmp_sno;END//DELIMITER;/*将结束符恢复成分号*/4.4建立触发器在数据库的student表中,定义一个触发器,当一个学生被删