【正文】
tCourseTb on SelectCourseTb(StudentId,CouId)創(chuàng)建課程類別取值范圍為計(jì)算機(jī)類、管理類、機(jī)械類、化工類的規(guī)則,并與相應(yīng)的列綁定 ;create rule CouCate as @CouCate in (39。管理類39。,39。經(jīng)濟(jì)類39。,39。電子類39。,39。計(jì)算機(jī)類39。,39?;ゎ?9。,39。藝術(shù)類39。)goexec sp_bindrule 39。CouCate39。,39。39。go在成績實(shí)體中創(chuàng)建成績默認(rèn)值為的默認(rèn),并與相應(yīng)的列綁定;use SelectCoursealter table SelectCourseTbADD CONSTRAINT pk_Grades DEFAULT(60) FOR Gradeinsert SelectCourseTb(StudentId,CouId,CouName,TeacherId,TeaName,SelectYesOrNO,TestYesOrNO)values(39。0108030339。,39。J0139。,39。計(jì)算機(jī)基礎(chǔ)39。,39。JS100139。,39。林天39。,39。是39。,39。是39。)創(chuàng)建一個(gè)可以通過課程類別和任課教師進(jìn)行查詢課程的存儲過程; use SelectCoursegocreate proc proCourse@課程類別 char(20),@任課教師 char(10)asselect CouId as 課程號 ,CouName as 課程名稱 ,CouCateId as 課程類別號,Credits as 課程總學(xué)分,TeacherId as 教師編號from CourseTb where CouCateId=@課程類別 andTeacherId=@任課教師use SelectCoursegoEXECUTE proCourse @課程類別=39。10139。,@任課教師=39。JS100139。use SelectCoursegoEXECUTE proCourse @課程類別=39。10139。,@任課教師=39。JS100239。通過觸發(fā)器定義已選課未考試的學(xué)生不能從學(xué)生實(shí)體中刪除;use SelectCoursegocreate trigger Select_studentTreon SelectCourseTbAFTER deleteasbegindeclare @StudentId CHAR(8)declare @SelectYesOrNO char(2)declare @TestYesOrNO char(2)Select @StudentId=StudentId ,@SelectYesOrNO=SelectYesOrNO ,@TestYesOrNO=TestYesOrNO from DELETEDif not exists (select SelectYesOrNO, TestYesOrNO from SelectCourseTbwhere SelectYesOrNO=39。是39。 and SelectYesOrNO=@SelectYesOrNOand TestYesOrNO=@TestYesOrNO and TestYesOrNO=39。否39。)delete StudentTbwhere StudentId=@StudentIdprint39。已選課未考試的學(xué)生不能從學(xué)生實(shí)體中刪除!39。enddelete from SelectCourseTbwhere StudentId=39。0108030139。and SelectYesOrNO=39。是39。 and TestYesOrNO=39。否39。go通過觸發(fā)器定義平均成績低于分的學(xué)生不能評為優(yōu)秀學(xué)生;use SelectCoursegoif exists(select name from sysobjects where name=39。student_tri39。and type=39。TR39。)drop trigger student_trigocreate trigger student_trion studentTbinstead of updateasbegindeclare @studentid char(8)declare @t intselect @studentid=studentId from insertedselect @t=avg(Grade) from SelectCourseTb where studentId=@studentid group by studentIdif @t90print39。平均成績低于分的學(xué)生不能評為優(yōu)秀學(xué)生!39。endgoupdate studentTb set ExcelentYesOrNO=39。優(yōu)秀39。 where studentid=39。0108030139。 建立包括選課學(xué)生的學(xué)號,姓名,系別,所選課程號,課程名,和成績的視圖;create view 選課學(xué)生的視圖asselect ,CouId ,CouName ,Grade from StudentTb S joinSelectCourseTb SEon =goSELECT * FROM 選課學(xué)生的視圖使用事務(wù),保證數(shù)據(jù)一致性。use SelectCoursegobegin tran tran_inst insert into Admins(Name,Passwords) values(39。ab539。,39。15339。)save tran int_poitinsert Admins(Name,Passwords)values(39。bc339。,39。14339。)goinsert Admins(Name)values(39。b44339。)goif @@ERROR0 rollback tran int_poit go mit tran tran_inst go 統(tǒng)計(jì)查詢(1) 在選課關(guān)系中,統(tǒng)計(jì)出選修課程超過4門以上的學(xué)生信息。select * from StudentTbwhere StudentId in(select StudentIdfrom SelectCourseTbgroup by StudentId having count(*)4)(2) 檢索出成績優(yōu)秀的、性別為女的學(xué)生信息。select *from StudentTbwhere Sex=39。女39。 and StudentIdin(select StudentIdfrom SelectCourseTbwhere Grade=80)(3) 統(tǒng)計(jì)出平均分在分以上的學(xué)生的信息,并將結(jié)果按平均分升序排列。select StudentId,AVG(Grade) as 平均分into 學(xué)生平均分表from SelectCourseTbgroup by StudentIdselect StudentTb.*,平均分from StudentTb,學(xué)生平均分表where = and 平均分80order by 平均分(4) 統(tǒng)計(jì)出至少有名學(xué)生選修的課程的平均分,統(tǒng)計(jì)項(xiàng)包含課程編號和平均分。select ,avg(all Grade) 平均分from StudentTb,CourseTb,SelectCourseTbwhere = and =group by having count(*)=10go (三)前臺應(yīng)用設(shè)計(jì) 前臺程序的開發(fā)平臺我選擇了java編寫前臺程序。(1) 數(shù)據(jù)庫的連接本程序采用BDE方式連接數(shù)據(jù)庫。在程序中添加TQuery控件,由其連接BDE。再添加TDataSource控件,由其接受TQuery發(fā)回的數(shù)據(jù)集,并發(fā)送給數(shù)據(jù)控制控件。(2) 管理員登陸管理員用固定的用戶名administer登陸,程序通過判斷用戶輸入的用戶名,查詢不同的數(shù)據(jù)表,得到該用戶的密碼,和用戶輸入的密碼比較。若密碼正確,則根據(jù)用戶的不同顯示不同的界面;若密碼錯(cuò)誤,則提示重新輸入。管理員成功登陸后,顯示一個(gè)選項(xiàng)卡界面,五各選項(xiàng)卡分別顯示五張數(shù)據(jù)表。如下圖所示:在學(xué)生表的選項(xiàng)卡上,還設(shè)置了數(shù)據(jù)查詢控件:用戶可在輸入框中輸入學(xué)號或姓名,通過點(diǎn)擊不同的按鈕按學(xué)號查詢或按姓名查詢。管理員也可查詢?nèi)繉W(xué)生的信息。另外,為了操作方便,管理員可以按原表方式和直觀方式查看數(shù)據(jù)。在原表方式下,管理員可以看到基本表的結(jié)構(gòu)和數(shù)據(jù);在直觀方式下,管理員可以看到連接后得到的視圖,這樣數(shù)據(jù)顯示得更為直觀。因?yàn)楣芾韱T擁有更新數(shù)據(jù)的權(quán)限,所以在直觀方式下,更新功能被屏蔽;而在原表方式下,更新功能被打開,管理員可以對任一數(shù)據(jù)表進(jìn)行修改、插入和刪除等更新操作。(3) 學(xué)生登陸學(xué)生登陸時(shí)用戶名為學(xué)號,和管理員登陸一樣,程序會判斷密碼,密碼正確后,顯示如下圖所示界面(以學(xué)號為20030001的學(xué)生為例):學(xué)生用戶登陸后,顯示一個(gè)數(shù)據(jù)表控件,其中只顯示該學(xué)生的個(gè)人信息;在數(shù)據(jù)表控件下方設(shè)置了幾個(gè)顯示框控件,直觀的分項(xiàng)顯示了學(xué)生個(gè)人的所有信息;學(xué)生個(gè)人只有修改除密碼外數(shù)據(jù)的權(quán)限,因此上述控件的ReadOnly屬性均被設(shè)置為Ture,設(shè)置一個(gè)編輯框控件,接受學(xué)生輸入的新密碼,并寫入數(shù)據(jù)庫。五、設(shè)計(jì)體會及總結(jié)(1)設(shè)計(jì)是否達(dá)到預(yù)定的目標(biāo)(2)有哪些收獲?(3)尚存在哪些不足?(4)對今后學(xué)習(xí)和工作的影響等學(xué)生學(xué)籍管理系統(tǒng)是典型的信息管理系統(tǒng),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護(hù)以及前臺應(yīng)用程序的開發(fā)兩個(gè)方面,對于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng),數(shù)據(jù)安全性好的數(shù)據(jù)庫,而對于后者則要求應(yīng)用程序功能完善,易使用等特點(diǎn)。因此,可以通過建立學(xué)籍管理信息系統(tǒng),使學(xué)生學(xué)籍管理工作科學(xué)化、規(guī)范化、程序化,促使提高信息處理的速度和正確性,使學(xué)校的信息流程和流向清晰化、合理化,第一時(shí)間把握學(xué)生信息,以提高整體教學(xué)水平。此次課程設(shè)計(jì)是學(xué)習(xí)完《數(shù)據(jù)庫原理》課程后進(jìn)行的一次全面的綜合練習(xí),通過這次課程設(shè)計(jì),加深了我對數(shù)據(jù)庫基礎(chǔ)理論和基本知識的理解,使我掌握了使用數(shù)據(jù)庫設(shè)計(jì)與使用的基本方法,提高了運(yùn)用數(shù)據(jù)庫解決實(shí)際問題的能力,進(jìn)一步鞏固了我所學(xué)的知識,提高了我的動(dòng)手能力。六、參考資料1. 數(shù)據(jù)庫系統(tǒng)概論》 薩師煊,王珊主編 高等教育出版社2.《SQL sever 2000與IBM DB2數(shù)據(jù)庫實(shí)驗(yàn)指導(dǎo)教程》 林仲達(dá),王似雪主編 清華大學(xué)出版社3. 《Delphi數(shù)據(jù)庫開發(fā)畢業(yè)設(shè)計(jì)指導(dǎo)及實(shí)例》劉瑞新主編 機(jī)械工業(yè)出版社 如還有再補(bǔ)充 第 31 頁 2022417