1、学生成绩管理系统数据库课程设计报告1需求分析1.1 用户需求概述本系统为学生成绩管理系统,该系统开发得主要目得就是使得学生得成绩管理工作更加清晰、条理化、自动化,实现对学生成绩得集中统一得管理。具体完成通过用户名与密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能。本系统主要实现对学生成绩得管理,需要完成得主要功能有:(1)通过用户名与密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能,容易地完成学生信息得查询操作。(2)设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份与恢复等方面得功能要求。1、2 数据需求t
2、t表:snoha()不允许为空ameCar(0)不允许为空SsexCa(2)不允许为空sbithatetme(8)允许为空clshar(4)不允许为空tyeChar(7)允许为空score表结构:snoChar()不允许为空cnCha(5)不允许为空degreeFloat()不允许为空Coue表: co(主键)har(5)不允许为空cnmvrcha(0)不允许为空tnoc(3)不允许为空Techer表tnoar(5)不允许为空tamevarchar(1)不允许为空departvrha(8)不允许为空Tsexhar()不允许为空Tthdateti ,允许为空profar()允许为空2概念设计内容
3、2、1 概念设计综述由需求分析得结果可知,本系统设计得实体包括:(1)学生基本信息:学号,姓名,性别,地址,年龄,专业()课程基本信息:课程名,课程号,分数,学时,学分。 这些实体间得联系包括:()学生(学号,姓名,性别,年龄,地址,系别),其主关键字为学号;(2)课程(课程名,课程号,学时,学分),其中主关键字为课程号;()成绩(课程号,学号,分数)其中主关键字为学号与课程号。可以与学生关系模式合并为:学生(学号,姓名,性别,年龄,地址,系别,成绩,课程号)。2.2 ER模型如下:3规范化设计1。范式得判断条件: 第一范式:如果一个关系模式R得所有属性域都就是原子得,我们称关系模式R属于第一
4、范式; 第二范式:若关系模式R满足第一范式,且每一个非主属性完全函数依赖于码,则关系模式R满足第二范式; B范式:对于R中所有得函数依赖,下面至少有一个成立(就是平凡得,就是模式R得一个超码); 第三范式:在BC范式得判断条件上加多一个条件:中每个属性A都包含在R得一个候选码中。2。本关系模型得判断:A、对于我设计得关系模式中所有实体集与关系集,每一个属性得属性域都就是不可再分得,都具有原子性,因此由该关系模式转换而来得关系模型符合第一范式得要求。B、对于由关系模式中得联系集转换而来得关系模型,因为它们得属性都就是参加关系得实体集得主码,都完全依赖于对应关系集得主码且都就是非平凡得函数依赖,因
5、此这些关系模型满足N,N,BNF;4数据库逻辑设计、1 关系模型与设计得关系模式相对应得SQL语句如下:4、2、创建数据库: crea ataba sshon( nmesh, e:databasessh、mdf, sze=1)log n( name=ss1, e:databases1、ldf, z=1)4、2、2创建数据表() studnt表usesshreate blestdnt( no ar(8) riary key,samechr(10) not null,Ssexchar() n nl, Sbith atime,cls char() not nulmvrcha(20))() co表cr
6、eatble sce(so char(8)otnl,co car(4)nt nll, dge float ot null)() curse表eae tbl os(nhar(5) not ull pim ey,cae vrhar() not nul, tochar(3) otnull )(4) eachr表 create abl teacer(tno cha(5) ot llprimay ke, tamvarcar(0) no nul, deartarcar(8)not ul, se char() not nul, Trthdattime , procar(6))4、2 编程性结构 4、2、创建
7、存储过程 (1) 创建一个存储过程。用来显示成绩表中得课程号在课程表中并且所任教师性别为男、所在部门就是计算机系得成绩表中得列retepro sudent_11s select * from sore whe o n (seect cno from couse ,teach heecoure、tnoteaer、toanddepa=计算机系 and tsex=男)调用此存储过程xec tun_11 (2) 创建一个带输入参数得存储过程。调用此存储过程时,给出一个学生名,显示出此学生得学号,姓名,所学课程号,课程名称与对应得成绩create pcsudent_namesarchar(1)a sel
8、ec tudnt、sno,snam,soeo,dege ca rom student,sco,courswhre tdet、noscre、sno nd scoreo=cureo nd snamsam调用此存储过程,(此例就是输出姓名为历史得学生得信息)ecstent_name 历史(3)创建一个存储过程,传递一个学生姓名.先判断此学生就是否有邮箱,如果有,则显示此学生得姓名,邮箱地址,学号,班级;如果没有得话,输出此句话the semai is emtycrae proc stdet_eaisname varchar(10)asbeinf(lectemil from sudent where
9、snesnae) is nlbegnrintthe smais etyenelsesectam,semail,sno,clasfromstdent whrename=snmeend调用此存储过程ee tudnemilsp当给出姓名得那个学生没有邮箱地址时,则会显示如下内容。 exe student_al ddf4、2触发器(1) 创建一个触发器。来检查学生得邮箱地址就是否相同,如果相同,输出isrtin fail,并且回滚事务;如果不相同,则插入成功。cree tiggstdeninsertostuentaftrinsertas i (ct ml fromiseted hersal in (s
10、eemifrom stuen)) nt nulbeinprint inseting fabacktransionendleprintinsring scceed向学生信息表中插入一条记录,检验就是否成功插入isert nt ut vlues(114,lengbng,女,181,1,一般 )(2) 在成绩表中建立一个触发器,当向表中添加记录时,此学生得成绩都乘以1、2reat riggerscoreupdt on scorafe neras update scre se degreeee1、2 rm score where sno in (selt no rom inserted)向表中插入一条
11、记录,检验触发器就是否有用。inrit sce alue(108,01,56)4、3自定义函数 (1)创建一个用户自定义函数,输出与指定得学生同班得学生个数create funti tudetcn(snchar())urns tbegnecrecoutr ntselec ounercount(*) fromtudent whecass=(set class from sdentwhere o=no)reuncouteren调用此自定义函数(本例就是查找与学号12同班得学生个数)elre atse =o、stuentcot(10)print onvert(char(),a)(2) 创建一个用户自
12、定义函数,用于输出同一个班级中得学生信息createncinstdntclass(cass car()eturtaleretur(slect* fro student whee cs=ls)调用自定义函数(本例就是输出1班得学生信息)seect * frm studntclass(12)4、数据操作 4、3、1插入()向学生表插入信息nset t studetvales(1,生活,女,193-0918,11)insrtintsudnt values(102,风尘,男,1940101,1)insrt nto sudet values(103,离开,男,84,1)iert into stunt v
13、alues(,流浪,女,19841-11,)inset i tudent values(05,生命,男,18105,1)iert int student als(16,无悔,女,19411-,13)insert intostudent vlues(07,历史,女,1941-01,12)iser int student vales(18,风尘,男,1985-08,11)inst no studentvles(10,活着,男,198512-2,1)nsert into studt lues(0,傻瓜,女,185-08,12)查瞧记录 electfo stdet(2)向成绩表中添加 int nt c
14、or vales(101,0,8)inser ito scorevalue(101,02,85)ientoscore values(0,02,80)ise ino score valu(1,03,88)inrtin corelues(102,0,8)iner ntosorvalues(02,03,8)inst intocore vale(13,1,83)iner int score alues(03,0,85)isrt ntosrevalus(10,03,90)inerino sor vales(4,01,60)查瞧记录 Slec * omsoe(3)向教师表中添加数据iert ito cou
15、rseue(01,计算机,1)inertintourse value(02,网络管理,1)insertint ouse vales(03,专业英语,13)nr nocous valus(0,软件工程,14)查瞧记录Seec * from coure(4)向课程表中添加数据iset into eaher vle(1,无意,计算机系,男,173-4,教授) insert itotacer value(12,生活,计算机系,女,97121,副教授) inset otachervalues(1,没有,管理系,女,195-33,副教授) insertioacer vlus(,离开,英语系,男,17355
16、,教授)查瞧记录 Select tece 4、查询(1) 查询成绩大于学号为101得学生得课程为02得成绩得所有列。slect * from sorehere de(secdgree frm score wher sn=101 and cno=02)(2)查询课程号01大于课程号02得最大值、并以分数降序排序得成绩表中所有列select fromcore s whe s=1ads、degre=(slect mx(ege) from core y where y02 ) orderby dree deso eltmax(der) as ”02max romscr whee cno=0(3) 查询
17、性别为男得学号,姓名,班级,课程号与成绩得学生select tudent、n,student、snae,stent、cass,oreo,soe、dgee ro studnt,scoewere sudent、snscore、no adsse=男(4) 查询成绩在0到80之间得所有列selec*from scoe whre degree bwee 60 and 8()查询sce表中至少有5名学生选修得并以0开头得课程得平均分elet ag(dgee) as平均分,cno fromcre were nolke 0% group bcno haing cont(*)54、3、创建数据类型创建一个mal
18、自定义数据类型 ec sp_deemail, acha(20) , ull修改stden表中得eail数据类型为eal类型lter tabestudent ter lumn smal mail4、3、4向表中添加字段 向student表添加te,email,,b并且邮件地址有hek约束ater ablesdet dd ype cha(7)alter alestudnt add eml varchar(0) ull cnstraint ck_se cck (semail ie %)te table echradd tel archa(15)4、3、创建视图(1) 创建所有1班得学生信息得视图re
19、ateviwstue1aselet * from stuentwh class=11查瞧视图中得记录select ro student1(2) 创建视图course_gre其中得内容就是选修计算机课程得学生信息,包括(sno,same,cn,ame,dre),创建时加上wth chck optiocreate viw cursdegre(sno,sname,co,cnae,gree)aseectscor、n,snae,sreo,a,dgree romcore ,stuent,sorewhere sore=crseoandstudent、snosco、snond cnae=计算机w hck op
20、n查瞧视图中得记录e m course_gree(3) 创建一个视图,其中得内容就是成绩表中每门课程得atevew raea select av(dree) as 平均分 fr cre group y n查瞧视图中得记录selet * from aerage (4) 创建视图其中得内容就是所有男教师与男学生得nam,sx,birhcrae viw man selct same as ame,ssexs sx,sbiharthftudt ere ssx=男union selt ae,e,tbirt frm teer wher tx=男查瞧视图中得记录select * fom an5实验总结与感想
21、。通过这次得课程设计,使我了解了更多数据库系统概念这门课程,对以前不太理解与熟悉得内容有更多得掌握。在我设计得学生成绩管理系统中,虽然一开始我对这个系统怎样设计完完全全没有概念,但就是如果仔细得想一下,还就是可以找到出发点得。首先要建立一个完整得管理系统,就必须明白这个系统所包含得基本内容、处理一些怎样得信息等。最主要得就是画出她们得R图,便可直观得瞧出她们关系。在设计得时候,有时候也会感到没有思路了,或许就是只有一点点得头绪,可经过对图得分析与认真观察她们得关系后,便有了新得思路与闪光点。最后根据自己得整理资料将每一步都运用SL语言执行出来,并且瞧以下就是否符合结果要求。我想经过这次课程设计可以更好得将所学知识运用到实际中去,也让我加深了对数据库知识得认识与了解。在这次实践设计过程中,我懂得了如何将所学得理论知识运用到实际中去,使得所学得知识能够融会贯通。同时,在课程设计过程中,我懂得了许多知识,增加了我对数据库得兴趣 ,今后一定努力得学习,在实践中增加自己得学习乐趣,让自己更加充实。最后,感谢老师一学期来对我们得辛勤教导.