學生成績管理系統(tǒng) 數(shù)據(jù)庫課程設(shè)計報告
《學生成績管理系統(tǒng) 數(shù)據(jù)庫課程設(shè)計報告》由會員分享,可在線閱讀,更多相關(guān)《學生成績管理系統(tǒng) 數(shù)據(jù)庫課程設(shè)計報告(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、學生成績管理系統(tǒng) 數(shù)據(jù)庫課程設(shè)計報告 1需求分析 1.1 用戶需求概述 本系統(tǒng)為學生成績管理系統(tǒng),該系統(tǒng)開發(fā)的主要目的是使得學生的成績管理工作更加清晰、條理化、自動化,實現(xiàn)對學生成績的集中統(tǒng)一的管理。具體完成通過用戶名和密碼登錄系統(tǒng),查詢課程基本資料,學生所選課程成績,修改用戶密碼等功能。本系統(tǒng)主要實現(xiàn)對學生成績的管理,需要完成的主要功能有: (1)通過用戶名和密碼登錄系統(tǒng),查詢課程基本資料,學生所選課程成績,修改用戶密碼等功能,容易地完成學生信息的查詢操作。 (2)設(shè)計人機友好界面,功能安排合理,操作使用方便,并且進一步考慮系統(tǒng)在安全性,完整性,并發(fā)控制,備份和恢復(fù)等方面的功能要
2、求. 1.2 數(shù)據(jù)需求 Student表: sno Char(8) 不允許為空 sname Char(10) 不允許為空 Ssex Char(2) 不允許為空 sbirth Datetime(8) 允許為空 class Char(4) 不允許為空 type Char(7) 允許為空 score表結(jié)構(gòu): sno Char(8) 不允許為空 cno Char(5) 不允許為空 degree Float(8) 不允許為空 Course表: cno(主鍵) Char(5) 不允許為空 cname varchar(10) 不允許
3、為空 tno char(3) 不允許為空 Teacher表 tno char(5) 不允許為空 tname varchar(10) 不允許為空 depart varchar(8) 不允許為空 Tsex char(2) 不允許為空 Tbirth datetime , 允許為空 prof char(6) 允許為空 2概念設(shè)計內(nèi)容 2。1 概念設(shè)計綜述 由需求分析的結(jié)果可知,本系統(tǒng)設(shè)計的實體包括: (1)學生基本信息:學號,姓名,性別,地址,年齡,專業(yè)。 (2)課程基本信息: 課程名,課程號,分數(shù),學時,學分. 這些實體間的聯(lián)系包括: (1
4、)學生(學號,姓名,性別,年齡,地址,系別),其主關(guān)鍵字為學號; (2)課程(課程名,課程號,學時,學分),其中主關(guān)鍵字為課程號; (3)成績(課程號,學號,分數(shù))其中主關(guān)鍵字為學號和課程號.可以與學生關(guān)系模式合并為:學生(學號,姓名,性別,年齡,地址,系別,成績,課程號)。 2.2 E—R模型如下: 3規(guī)范化設(shè)計 1.范式的判斷條件: 第一范式:如果一個關(guān)系模式R的所有屬性域都是原子的,我們稱關(guān)系模式R屬于第一范式; 第二范式:若關(guān)系模式R滿足第一范式,且每一個非主屬性完全函數(shù)依賴于碼,則關(guān)系模式R滿足第二范式; BC范式:對于R中所有的函數(shù)依賴,下面
5、至少有一個成立(α->β是平凡的,α是模式R的一個超碼); 第三范式:在BC范式的判斷條件上加多一個條件:β-α中每個屬性A都包含在R的一個候選碼中。 2.本關(guān)系模型的判斷: A、對于我設(shè)計的關(guān)系模式中所有實體集和關(guān)系集,每一個屬性的屬性域都是不可再分的,都具有原子性,因此由該關(guān)系模式轉(zhuǎn)換而來的關(guān)系模型符合第一范式的要求。 B、對于由關(guān)系模式中的聯(lián)系集轉(zhuǎn)換而來的關(guān)系模型,因為它們的屬性都是參加關(guān)系的實體集的主碼,都完全依賴于對應(yīng)關(guān)系集的主碼且都是非平凡的函數(shù)依賴,因此這些關(guān)系模型滿足2NF,3NF,BCNF; 4數(shù)據(jù)庫邏輯設(shè)計 4.1 關(guān)系模型 與設(shè)計的關(guān)系模式相對應(yīng)的S
6、QL語句如下: 4。2。1創(chuàng)建數(shù)據(jù)庫: create database ssh on ( name=ssh, filename=’e:\database\ssh.mdf’, size=1) log on ( name=ssh1, filename=’e:\database\ssh1.ldf', size=1) 4.2。2創(chuàng)建數(shù)據(jù)表 (1) student表 use ssh create table student ( sno char(8) primary key, sname char(10) not null, Ssex char(2) not
7、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) not null, tno char(3) not null )
8、 (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 編程性結(jié)構(gòu) 4.2。1創(chuàng)建存儲過程 (1) 創(chuàng)建一個存儲過程. 用來顯示成績表中的課程號在課程表中并且所任教師性別為男、所在部門是計算機系的成績表中的列 create pro
9、c student_11 as select * from score where cno in (select cno from course ,teacher where course.tno=teacher.tno and depart='計算機系' and tsex=’男’) 調(diào)用此存儲過程 Exec student_11 (2) 創(chuàng)建一個帶輸入?yún)?shù)的存儲過程。 調(diào)用此存儲過程時,給出一個學生名,顯示出此學生的學號,姓名,所學課程號,課程名稱和對應(yīng)的成績 create proc student_name @sname varchar(10) as selec
10、t student.sno,sname,o,degree cname from student,score,course where student.sno=score。sno and score。cno=o and sname=@sname 調(diào)用此存儲過程,(此例是輸出姓名為歷史的學生的信息) exec student_name ’歷史' (3) 創(chuàng)建一個存儲過程,傳遞一個學生姓名. 先判斷此學生是否有郵箱,如果有,則顯示此學生的姓名,郵箱地址,學號,班級;如果沒有的話,輸出此句話'the semail is empty' create proc student_email
11、@sname varchar(10) as begin if (select semail from student where sname=@sname) is null begin print'the semail is empty' end else select sname,semail,sno,class from student where sname=@sname end 調(diào)用此存儲過程 exec student_email 'super’ 當給出姓名的那個學生沒有郵箱地址時,則會顯示如下內(nèi)容。 exec student_email dfdf’ 4.
12、2。2觸發(fā)器 (1) 創(chuàng)建一個觸發(fā)器。 來檢查學生的郵箱地址是否相同,如果相同,輸出'inserting fail’,并且回滾事務(wù);如果不相同,則插入成功。 create trigger studentinsert on student after insert as if (select semail from inserted where semail in (select semail from student)) is not null begin print 'inserting fail’ rollback transaction end else
13、 print’insering succeed’ 向?qū)W生信息表中插入一條記錄,檢驗是否成功插入 insert into student values(’114','lengbing’,’女’,’1985-12-12’,'11',’lengbingssh@',’一般' ) (2) 在成績表中建立一個觸發(fā)器, 當向表中添加記錄時,此學生的成績都乘以1.2 create trigger scoreupdate on score after insert as update score set degree=degree*1。2 from score where sno in (s
14、elect sno from inserted ) 向表中插入一條記錄,檢驗觸發(fā)器是否有用。 insert into score values('108','01',’56’) 4。2。3自定義函數(shù) (1) 創(chuàng)建一個用戶自定義函數(shù),輸出與指定的學生同班的學生個數(shù) create function studentcount(@sno char(5))returns int begin declare @counter int select @counter=count(*) from student where class=(select class from student w
15、here sno=@sno) return @counter end 調(diào)用此自定義函數(shù)(本例是查找與學號102同班的學生個數(shù)) declare @a int set @a=dbo。studentcount('102’) print convert(char(3),@a) (2) 創(chuàng)建一個用戶自定義函數(shù),用于輸出同一個班級中的學生信息 create function studentclass (@class char(5)) returns table return(select * from student where class=@class) 調(diào)用自定義函數(shù)(本例是
16、輸出12班的學生信息) select * from studentclass('12') 4.3數(shù)據(jù)操作 4。3.1 插入 (1)向?qū)W生表插入信息 insert into student values(’101','生活',’女','1983—09-18’,'11’) insert into student values('102’,'風塵','男',’1984—01-01’,'11') insert into student values(’103’,'離開','男’,'1984-01—01',’11') insert into student values(’104’,’
17、流浪',’女’,’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 student value
18、s(’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
19、’,88) insert into score values('102',’02’,85) insert 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)向教師表中添加數(shù)據(jù) inser
20、t into course values('01’,'計算機’,’11') insert into course values('02’,’網(wǎng)絡(luò)管理','12’) insert into course values(’03’,’專業(yè)英語','13') insert into course values(’04’,’軟件工程','14') 查看記錄 Select * from course (4)向課程表中添加數(shù)據(jù) insert into teacher values('11’,'無意',’計算機系’,'男',’1973—4-5’,'教授') insert into teac
21、her values(’12',’生活’,’計算機系’,’女’,'1975—12—1’,’副教授’) insert into teacher values('13',’沒有’,'管理系’,’女',’1975-3—3','副教授') insert into teacher values(’14',’離開',’英語系','男’,’1973—5—5','教授') 查看記錄 Select * from teacher 4.3.2查詢 (1) 查詢成績大于學號為101的學生的課程為02的成績的所有列。 select * from score where degree>(select
22、degree from score where sno=’101' and cno=’02’) (2) 查詢課程號01大于課程號02的最大值、并以分數(shù)降序排序的成績表中所有列 select * from score s where o='01’ and s.degree〉=(select max(degree) from score y where o=’02' ) order by degree desc go select max(degree) as "02max" from score where cno=’02’ (3) 查詢性別為男的學號,姓名,班級,課程號和成績的學生
23、 select student.sno,student.sname,student.class,score。cno,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) 查詢score表中至少有5名學生選修的并以0開頭的課程的平均分 select avg(degree) as "平均分”,cno from score where cno lik
24、e ’0%’ group by cno having count(*)〉=5 4.3。3創(chuàng)建數(shù)據(jù)類型 創(chuàng)建一個email自定義數(shù)據(jù)類型 exec sp_addtype email, ’varchar(20)' , 'null’ 修改student表中的semail數(shù)據(jù)類型為email類型 alter table student alter column semail email 4.3.4向表中添加字段 向student表添加type,semail,,b并且郵件地址有check約束 alter table student add type char(7) alter
25、table student add semail varchar(20) null constraint ck_sem check (semail like ’%@%’) alter table teacher add tel varchar(15) 4.3.5創(chuàng)建視圖 (1) 創(chuàng)建所有11班的學生信息的視圖 create view student11 as select * from student where class=’11’ 查看視圖中的記錄 select * from student11 (2) 創(chuàng)建視圖course_degree 其中的內(nèi)容是選修計算機課程
26、的學生信息,包括(sno,sname,cno,cname,degree),創(chuàng)建時加上with check option create 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
27、 (3) 創(chuàng)建一個視圖,其中的內(nèi)容是成績表中每門課程的 create view average as select avg(degree) as '平均分' from score group by cno 查看視圖中的記錄 select * from average (4) 創(chuàng)建視圖其中的內(nèi)容是所有男教師和男學生的name,sex,birth create view man as select sname as name,ssex as sex,sbirth as birth from student where ssex='男' union select t
28、name,tsex,tbirth from teacher where tsex='男' 查看視圖中的記錄 select * from man 5實驗總結(jié)與感想。 通過這次的課程設(shè)計,使我了解了更多數(shù)據(jù)庫系統(tǒng)概念這門課程,對以前不太理解和熟悉的內(nèi)容有更多的掌握.在我設(shè)計的學生成績管理系統(tǒng)中,雖然一開始我對這個系統(tǒng)怎樣設(shè)計完完全全沒有概念,但是如果仔細的想一下,還是可以找到出發(fā)點的。首先要建立一個完整的管理系統(tǒng),就必須明白這個系統(tǒng)所包含的基本內(nèi)容、處理一些怎樣的信息等.最主要的是畫出他們的E-R圖,便可直觀的看出他們關(guān)系。在設(shè)計的時候,有時候也會感到?jīng)]有思路了,或許是只有一點點的頭緒,可經(jīng)過對圖的分析和認真觀察他們的關(guān)系后,便有了新的思路和閃光點。最后根據(jù)自己的整理資料將每一步都運用SQL語言執(zhí)行出來,并且看以下是否符合結(jié)果要求。我想經(jīng)過這次課程設(shè)計可以更好的將所學知識運用到實際中去,也讓我加深了對數(shù)據(jù)庫知識的認識和了解。在這次實踐設(shè)計過程中,我懂得了如何將所學的理論知識運用到實際中去,使得所學的知識能夠融會貫通.同時,在課程設(shè)計過程中,我懂得了許多知識,增加了我對數(shù)據(jù)庫的興趣 ,今后一定努力的學習,在實踐中增加自己的學習樂趣,讓自己更加充實。 最后,感謝老師一學期來對我們的辛勤教導(dǎo)。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。