学生成绩管理系统 数据库课程设计报告

上传人:汽*** 文档编号:460955966 上传时间:2022-08-11 格式:DOCX 页数:10 大小:25.04KB
返回 下载 相关 举报
学生成绩管理系统 数据库课程设计报告_第1页
第1页 / 共10页
学生成绩管理系统 数据库课程设计报告_第2页
第2页 / 共10页
学生成绩管理系统 数据库课程设计报告_第3页
第3页 / 共10页
学生成绩管理系统 数据库课程设计报告_第4页
第4页 / 共10页
学生成绩管理系统 数据库课程设计报告_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《学生成绩管理系统 数据库课程设计报告》由会员分享,可在线阅读,更多相关《学生成绩管理系统 数据库课程设计报告(10页珍藏版)》请在金锄头文库上搜索。

1、学生成绩管理系统数据库课程设计报告1 需求分析1.1用户需求概述本系统为学生成绩管理系统,该系统开发的主要目的是使得学生的成绩管理工作更加清晰、 条理化、自动化,实现对学生成绩的集中统一的管理。具体完成通过用户名和密码登录系统, 查询课程基本资料,学生所选课程成绩,修改用户密码等功能。本系统主要实现对学生成绩 的管理,需要完成的主要功能有:(1)通过用户名和密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能,容易地完成学生信息的查询操作.(2)设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。1。2 数据需

2、求Student 表:snoChar (8)不允许为空snameChar (10)不允许为空SsexChar (2)不允许为空sbirthDatetime (8)允许为空classChar(4)不允许为空typeChar (7)允许为空score 表结构:snoChar(8)不允许为空enoChar (5)不允许为空degreeFloat (8)不允许为空Course 表:eno (主键)Char(5)不允许为空enamevarehar (10)不允许为空tnoehar(3)不允许为空Teacher 表tnochar(5)不允许为空tnamevarchar(lO)不允许为空departvarc

3、har (8)不允许为空Tsexchar (2)不允许为空Tbirthdatetime ,允许为空profchar (6)允许为空2 概念设计内容2。1 概念设计综述由需求分析的结果可知,本系统设计的实体包括: (1)学生基本信息:学号,姓名,性别,地址,年龄,专业. (2)课程基本信息: 课程名,课程号,分数,学时,学分。 这些实体间的联系包括:(1)学生(学号,姓名,性别,年龄,地址,系别),其主关键字为学号; (2)课程(课程名,课程号,学时,学分),其中主关键字为课程号;(3)成绩(课程号,学号,分数)其中主关键字为学号和课程号.可以与学生关系模式合并 为:学生(学号,姓名,性别,年龄

4、,地址,系别,成绩,课程号)。2.2ER 模型如下:3规范化设计1范式的判断条件:第一范式:如果一个关系模式R的所有属性域都是原子的,我们称关系模式R属于第 一范式;第二范式:若关系模式R满足第一范式,且每一个非主属性完全函数依赖于码,则关系 模式 R 满足第二范式;BC范式:对于R中所有的函数依赖,下面至少有一个成立(a-B是平凡的,a是模 式 R 的一个超码);第三范式:在BC范式的判断条件上加多一个条件:B a中每个属性A都包含在R 的一个候选码中。2本关系模型的判断:A、对于我设计的关系模式中所有实体集和关系集,每一个属性的属性域都是不可再分 的,都具有原子性,因此由该关系模式转换而来

5、的关系模型符合第一范式的要求.B、对于由关系模式中的联系集转换而来的关系模型,因为它们的属性都是参加关系的 实体集的主码,都完全依赖于对应关系集的主码且都是非平凡的函数依赖,因此这些关系模型满足 2NF,3NF,BCNF;4数据库逻辑设计4。1 关系模型与设计的关系模式相对应的SQL语句如下:4.2。1 创建数据库: create database ssh on ( name=ssh ,filename= e: databasessh。mdf, size=1)log on( name=ssh1,filename= e: databasessh1.ldf, size=1)4。 2.2 创建数据表

6、(1) student 表 use sshcreate table student( sno char(8) primary key,sname char(10) not null,Ssex char(2) not null,Sbirth datetime,class char(4) not null semail varchar(20)(2) score 表create table score(sno char(8) not null, cno char(4) not null, degree float not null)(3) course 表create table course(cn

7、o char(5) not null primary key, cname varchar(10) not null,tno char(3) not null )(4) teacher 表create table teacher(tno char(5) not null primary key,tname varchar(10) not null,depart varchar(8) not null,Tsex char(2) not null,Tbirth datetime ,prof char(6) )4。2 编程性结构4。2.1 创建存储过程(1)创建一个存储过程。用来显示成绩表中的课程号

8、在课程表中并且所任教师性别为男、所在部 门是计算机系的成绩表中的列create proc student_11asselect from score where cno in (select cno from course ,teacher where course。tno=teacher.tno and depart=计算机系and tsex=男)调用此存储过程Exec student_11(2)创建一个带输入参数的存储过程。调用此存储过程时,给出一个学生名,显示出此学生的学号,姓名 ,所学课程号, 课程名称和对应的成绩create proc student_namesname varcha

9、r (10)asselect student.sno,sname,score。cno,degree cname from student,score, coursewhere student。 sno=score。 sno and o=course。 cno and sname=sname调用此存储过程,(此例是输出姓名为历史的学生的信息)exec student_name 历史(3)创建一个存储过程,传递一个学生姓名.先判断此学生是否有邮箱,如果有,则显示此学生的姓名,邮箱地址,学号,班级; 如果没有的话,输出此句话the semail is emp tycreate proc studen

10、t_email sname varchar( 10)as beginif (select semail from student where sname= sname) is nullbeginprintthe semail is emptyendelseselect sname,semail,sno,class from student where sname=snameend调用此存储过程exec student_email super当给出姓名的那个学生没有邮箱地址时,则会显示如下内容.exec student_email dfdf4。2。2 触发器(1) 创建一个触发器。来检查学生的邮

11、箱地址是否相同,如果相同,输出inserting fail,并且回滚事 务;如果不相同,则插入成功。create trigger studentinserton studentafter insertasif (select semail from inserted where semail in( select semail from student) isnot nullbeginprint inserting failrollback transactionendelseprintinsering succeed向学生信息表中插入一条记录,检验是否成功插入insert into stud

12、ent values ( 114, lengbing,女,198512一12, 11, lengbingsshsina。com, 一般)( 2) 在成绩表中建立一个触发器, 当向表中添加记录时,此学生的成绩都乘以 1。 2create trigger scoreupdate on scoreafter insertasupdate score set degree=degree*1 。2 from score where sno in (select sno from inserted )向表中插入一条记录,检验触发器是否有用.insert into score values(108,01,5

13、6)4。2。3 自定义函数(1) 创建一个用户自定义函数,输出与指定的学生同班的学生个数create function studentcount(sno char(5 ) returns intbegindeclare counter intselect counter=coun(t *)from student where class=(select class from student where sno=sno)return counterend调用此自定义函数(本例是查找与学号 102 同班的学生个数)declare a intset a=dbo。studentcount (102)p

14、rint convert(char(3),a)( 2) 创建一个用户自定义函数,用于输出同一个班级中的学生信息create function studentclass( class char(5)returns tablereturn(select * from student where class=class)调用自定义函数(本例是输出 12 班的学生信息)select from studentclass( 12)4。3数据操作4。 3。 1 插入( 1 )向学生表插入信息insert into student values(101,生活, 女 1983一09一18, ll)insert into student values( 102,风尘 ,男 1984-01-01, 11)insert into student values( 103,离开,男 1984一01-01 11)insert into student values( 104,流浪,女 1984一11一11, 11 )insert into student values(105,生命,男,1984-12-05, 13)insert into student values (106 无悔,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号