




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生成绩管理系统数据库课程设计报告1需求分析1.1 用户需求概述本系统为学生成绩管理系统,该系统开发的主要目的是使得学生的成绩管理工作更加清晰、条理化、自动化,实现对学生成绩的集中统一的管理。具体完成通过用户名和密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能。本系统主要实现对学生成绩的管理,需要完成的主要功能有:(1)通过用户名和密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能,容易地完成学生信息的查询操作。(2)设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。1.2 数据需求St
2、udent表:snoChar(8)不允许为空snameChar(10)不允许为空SsexChar(2)不允许为空sbirthDatetime(8)允许为空classChar(4)不允许为空typeChar(7)允许为空score表结构:snoChar(8)不允许为空cnoChar(5)不允许为空degreeFloat(8)不允许为空Course表: cno(主键)Char(5)不允许为空cnamevarchar(10)不允许为空tnochar(3)不允许为空Teacher表tnochar(5)不允许为空tnamevarchar(10)不允许为空departvarchar(8)不允许为空Tsex
3、char(2)不允许为空Tbirthdatetime ,允许为空profchar(6)允许为空2概念设计内容2.1 概念设计综述由需求分析的结果可知,本系统设计的实体包括:(1)学生基本信息:学号,姓名,性别,地址,年龄,专业。(2)课程基本信息: 课程名,课程号,分数,学时,学分。 这些实体间的联系包括:(1)学生(学号,姓名,性别,年龄,地址,系别),其主关键字为学号;(2)课程(课程名,课程号,学时,学分),其中主关键字为课程号;(3)成绩(课程号,学号,分数)其中主关键字为学号和课程号。可以与学生关系模式合并为:学生(学号,姓名,性别,年龄,地址,系别,成绩,课程号)。2.2 E-R模
4、型如下:3规范化设计1范式的判断条件: 第一范式:如果一个关系模式R的所有属性域都是原子的,我们称关系模式R属于第一范式; 第二范式:若关系模式R满足第一范式,且每一个非主属性完全函数依赖于码,则关系模式R满足第二范式; BC范式:对于R中所有的函数依赖,下面至少有一个成立(是平凡的,是模式R的一个超码); 第三范式:在BC范式的判断条件上加多一个条件:-中每个属性A都包含在R的一个候选码中。2本关系模型的判断:A、对于我设计的关系模式中所有实体集和关系集,每一个属性的属性域都是不可再分的,都具有原子性,因此由该关系模式转换而来的关系模型符合第一范式的要求。B、对于由关系模式中的联系集转换而来
5、的关系模型,因为它们的属性都是参加关系的实体集的主码,都完全依赖于对应关系集的主码且都是非平凡的函数依赖,因此这些关系模型满足2NF,3NF,BCNF;4数据库逻辑设计4.1 关系模型与设计的关系模式相对应的SQL语句如下:4.2.1创建数据库: create database sshon( name=ssh, filename=e:databasessh.mdf, size=1)log on( name=ssh1, filename=e:databasessh1.ldf, size=1)4.2.2创建数据表(1) student表use sshcreate table student( sn
6、o 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(cno char(5) not null primary key,cname varchar(10
7、) 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) 创建一个存储过程。用来显示成绩表中的课程号在课程表中并且所任教师性别为男、所在部门是计算机系的成绩表中的列create p
8、roc student_11as select * from score where cno in (select cno from course ,teacher where course.tno=teacher.tno and depart=计算机系 and tsex=男)调用此存储过程Execstudent_11 (2) 创建一个带输入参数的存储过程。调用此存储过程时,给出一个学生名,显示出此学生的学号,姓名,所学课程号,课程名称和对应的成绩create proc student_namesname varchar(10)as select student.sno,sname,score
9、.cno,degree cname from student,score,course where student.sno=score.sno and o=o and sname=sname调用此存储过程,(此例是输出姓名为历史的学生的信息)exec student_name 历史(3) 创建一个存储过程,传递一个学生姓名。先判断此学生是否有邮箱,如果有,则显示此学生的姓名,邮箱地址,学号,班级;如果没有的话,输出此句话the semail is emptycreate proc student_emailsname varchar(10)asbeginif
10、(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) 创建一个触发器。来检查学生的邮箱地址是否相同,如果相同,输出inserting fail,并且回滚事务;如
11、果不相同,则插入成功。create trigger studentinserton studentafter insertas if (select semail from inserted where semail in (select semail from student) is not nullbeginprint inserting failrollback transactionendelseprintinsering succeed向学生信息表中插入一条记录,检验是否成功插入insert into student values(114,lengbing,女,1985-12-12,
12、11,,一般 )(2) 在成绩表中建立一个触发器,当向表中添加记录时,此学生的成绩都乘以1.2create trigger scoreupdate on scoreafter insertas update score set degree=degree*1.2 from score where sno in (select sno from inserted )向表中插入一条记录,检验触发器是否有用。insert into score values(108,01,56)4.2.3自定义函数 (1) 创建一个用户自定义函数,输出与指定的学生同班的学生个数c
13、reate function studentcount(sno char(5)returns intbegindeclare counter intselect counter=count(*) from student where class=(select class from student where sno=sno)return counterend调用此自定义函数(本例是查找与学号102同班的学生个数)declare a intset a=dbo.studentcount(102)print convert(char(3),a)(2) 创建一个用户自定义函数,用于输出同一个班级中的
14、学生信息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,11)insert into student values(102,风尘,男,1984-01-01,11)insert into stu
15、dent 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,无悔,女,1984-11-01,13)insert into student values(107,历史,女,1984-10-01,12)insert into student values(108,风尘,男,1985-9-08,11)insert into stud
16、ent values(109,活着,男,1985-12-12,12)insert into student values(110,傻瓜,女,1985-08-28,12) 查看记录 Select * from student(2)向成绩表中添加 insert into score values(101,01,88)insert into score values(101,02,85)insert into score values(102,02,80)insert into score values(101,03,88)insert into score values(102,02,85)ins
17、ert into score values(102,03,80)insert into score values(103,01,83)insert into score values(103,02,85)insert into score values(103,03,90)insert into score values(104,01,60)查看记录 Select * from score(3)向教师表中添加数据insert into course values(01,计算机,11)insert into course values(02,网络管理,12)insert into course
18、values(03,专业英语,13)insert into course values(04,软件工程,14)查看记录 Select * from course(4)向课程表中添加数据insert into teacher values(11,无意,计算机系,男,1973-4-5,教授) insert into teacher values(12,生活,计算机系,女,1975-12-1,副教授) insert into teacher values(13,没有,管理系,女,1975-3-3,副教授) insert into teacher values(14,离开,英语系,男,1973-5-5
19、,教授)查看记录 Select * from teacher 4.3.2查询(1) 查询成绩大于学号为101的学生的课程为02的成绩的所有列。select * from score where degree(select degree from score where sno=101 and cno=02)(2) 查询课程号01大于课程号02的最大值、并以分数降序排序的成绩表中所有列select * from score s where o=01 and s.degree=(select max(degree) from score y where o=02 ) order b
20、y degree descgo select max(degree) as 02max from score where cno=02 (3) 查询性别为男的学号,姓名,班级,课程号和成绩的学生select student.sno,student.sname,student.class,o,score.degree from student,score where student.sno=score.sno and ssex=男(4) 查询成绩在60到80之间的所有列select * from score where degree between 60 and 80(5) 查询
21、score表中至少有5名学生选修的并以0开头的课程的平均分select avg(degree) as 平均分,cno from score where cno like 0% group by cno having count(*)=54.3.3创建数据类型创建一个email自定义数据类型 exec sp_addtype email, varchar(20) , null修改student表中的semail数据类型为email类型alter table student alter column semail email4.3.4向表中添加字段 向student表添加type,semail,b并
22、且邮件地址有check约束alter table student add type char(7)alter table student add semail varchar(20) null constraint ck_sem check (semail like %)alter table teacher add tel varchar(15)4.3.5创建视图(1) 创建所有11班的学生信息的视图create view student11as select * from student where class=11查看视图中的记录select * from student11(2) 创建
23、视图course_degree其中的内容是选修计算机课程的学生信息,包括(sno,sname,cno,cname,degree),创建时加上with check optioncreate view course_degree(sno,sname,cno,cname,degree)as select score.sno,sname,o,cname,degree from course ,student, score where o=o and student.sno=score.sno and cname=计算机with check option查看视图中的记录select * from course_degree(3) 创建一个视图,其中的内容是成绩表中每门课程的create view av
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿童玩偶租赁合同样本
- 信息买卖合同样本
- 2025中学实习教师合同
- 个人房屋 涂料合同样本
- 传媒公司交易合同样本
- 公司房子抵押合同样本
- 二手车 合同样本
- 供货渠道合同样本
- 代理经营店铺合同样本
- 保险信息服务合同标准文本
- 浙江省杭州市2024届高三下学期二模地理试题 含解析
- 《Web应用开发实战》课件-单元1 Node.js认知
- 2025-2030全球智能低氧训练系统行业调研及趋势分析报告
- 2025年山东省鲁信投资控股集团招聘笔试参考题库含答案解析
- 2025年安徽国控资本有限公司招聘笔试参考题库含答案解析
- 厦门房地产经纪机构备案表-厦门房地产中介行业协会
- 如何利用+Agent+解决企业数据分析与洞察的经验探索-数势科技+李飞
- 2024商场能源管理及节能改造项目合同范本3篇
- 广东中考英语2020-2024年5年真题汇编-学生版-专题07 阅读理解之说明文
- 全国第三届职业技能大赛(无人机驾驶(植保)项目)选拔赛理论考试题库(含答案)
- 2024年度微生物菌剂产品试用与反馈协议3篇
评论
0/150
提交评论