在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)_第1頁(yè)
在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)_第2頁(yè)
在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)_第3頁(yè)
在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)_第4頁(yè)
在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

*****:在線考試系統(tǒng)在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)考生信息考生信息考生考試信息考生考試信息查看成績(jī)考生成績(jī)查看題目考生試卷抽題11111m1題庫(kù)mm答題n考生答案11對(duì)應(yīng)答案正確答案在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第5頁(yè)。在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第5頁(yè)。第三章邏輯結(jié)構(gòu)設(shè)計(jì)和物理結(jié)構(gòu)設(shè)計(jì)第一條:邏輯結(jié)構(gòu)設(shè)計(jì)(1)下面是將各個(gè)實(shí)體和聯(lián)系轉(zhuǎn)化為相應(yīng)的二維表即關(guān)系模式,指定各個(gè)關(guān)系的主關(guān)鍵字和外部關(guān)鍵字,并對(duì)各個(gè)關(guān)系的約束加以限定:考生信息表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說(shuō)明varchar(8)不允許為空性別char(2)只允許取“男”或“女”號(hào)char(6)Yes數(shù)字字符號(hào)char(18)數(shù)字字符所在學(xué)校varchar(16)考生考試信息表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說(shuō)明考生號(hào)char(5)Yes號(hào)char(6)Yes考生信息數(shù)字字符考試時(shí)間char(22)不允許為空考試狀態(tài)varchar(6)不允許為空題庫(kù)表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說(shuō)明題號(hào)intYes大于0題目varchar(100)不允許為空題目類型int1或2或3分值int分值in(1,10)備注:其中題目類型中:1-判斷題2-填空題3-選擇題在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第6頁(yè)。正確答案表在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第6頁(yè)。字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說(shuō)明題號(hào)intYes題庫(kù)大于0標(biāo)準(zhǔn)答案varchar(20)Notnull考生試卷表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說(shuō)明題號(hào)intYes題庫(kù)大于0考生號(hào)char(5)Yes考試考試信息Notnull考生答案表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說(shuō)明題號(hào)intYes題庫(kù)大于0答案Varchar(20)可為空考生號(hào)Char(5)Yes考生考試信息Notnull考生成績(jī)表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說(shuō)明號(hào)Char(6)Yes考生信息數(shù)字字符成績(jī)int成績(jī)in(0,100)缺省為0(2)所有表之間的關(guān)系圖:第二節(jié):物理結(jié)構(gòu)設(shè)計(jì)關(guān)系型數(shù)據(jù)庫(kù)的實(shí)現(xiàn):不同的數(shù)據(jù)庫(kù)產(chǎn)品所提供的物理環(huán)境,存取方法和存貯結(jié)構(gòu)有很大的區(qū)別。能供設(shè)計(jì)人員使用的設(shè)計(jì)變量,參數(shù)圍也很不相同,因此沒(méi)有通用的物理設(shè)計(jì)方法可遵循,只能給出一般的設(shè)計(jì)容和原則MicrosoftSQLServer2000就是關(guān)系數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,數(shù)據(jù)庫(kù)能匯集各種信息以供查詢、存儲(chǔ)和檢索。自定義窗體收集信息。數(shù)據(jù)表示圖提供了一種類似于Excel的電子表格,可以使數(shù)據(jù)庫(kù)一目了然,還提供了排序功能。MicrosoftSQLServer2000也提供了數(shù)據(jù)存儲(chǔ)庫(kù),可以使用桌面數(shù)據(jù)庫(kù)文件把數(shù)據(jù)庫(kù)文件置于網(wǎng)絡(luò)文件服務(wù)器,與其他網(wǎng)絡(luò)用戶共享數(shù)據(jù)庫(kù)。如上所述,MicrosoftSQLServer2000作為關(guān)系數(shù)據(jù)庫(kù)開(kāi)發(fā)具備了許多優(yōu)點(diǎn),可以在一個(gè)數(shù)據(jù)包中同時(shí)擁有桌面數(shù)據(jù)庫(kù)的便利和關(guān)系數(shù)據(jù)庫(kù)的強(qiáng)大功能。為此,首先要充分了解所用DBMS的部特征,特別是系統(tǒng)提供的存取方法和存取結(jié)構(gòu)。下面是具體的運(yùn)行設(shè)計(jì)(四)為了改善和優(yōu)化數(shù)據(jù)庫(kù)的性能和查詢效果,為每個(gè)表創(chuàng)建了索引,具體代碼如下:/*考生信息表索引*/createuniqueindexindex_ksxxonksxx(,號(hào))/*考生考試信息表索引*/createuniqueindexindex_ksksxxonksksxx(考生號(hào))createuniqueindexindex_ksksxx1onksksxx(號(hào))/*題庫(kù)表索引*/createuniqueindexindex_tkontk(題號(hào))/*正確答案表索引*/在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第7頁(yè)。createuniqueindexindex_zqdaonzqda(題號(hào))在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第7頁(yè)。/*考生答案表索引*/createuniqueindexindex_ksdaonksda(題號(hào),考生號(hào))/*考生試卷表索引*/createuniqueindexindex_kssjonkssj(考生號(hào),題號(hào))/*成績(jī)表索引*/createuniqueindexindex_kscjonkscj(號(hào))(五)為了實(shí)現(xiàn)表間數(shù)據(jù)的一致性和完整性,創(chuàng)建了觸發(fā)器,具體代碼如下:/*考生信息表觸發(fā)器*/createtriggertrigger_ksxx1 onksxxforinsert,update,deleteasif(SELECTLEN(號(hào))FROMinserted)<6or(SELECTLEN(號(hào))FROMinserted)>6beginraiserror('號(hào)長(zhǎng)度不對(duì)!',10,1)rollbacktransactionendelsebeginprint'添加成功!'endifexists(select*frominsertedwhere號(hào)in(select號(hào)fromksxx))beginprint'號(hào)已經(jīng)存在!'returnend/*考生考試信息表觸發(fā)器*/createtriggertrigger_ksksxxonksksxxforinsert,update,deleteasifexists(select*frominsertedwhere號(hào)in(select號(hào)fromksksxx))beginraiserror('號(hào)重復(fù)!',16,1)rollbacktransactionendifnotexists(select*frominsertedwhere考試時(shí)間like'%-%-%'+''+'%:%-%:%')beginraiserror('時(shí)間格式不對(duì)!',16,1)rollbacktransactionend在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第8頁(yè)。ifnotexists(select*frominsertedwhere考試狀態(tài)in('待考','就緒','考試中','結(jié)束','缺考'))在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第8頁(yè)。beginraiserror('狀態(tài)錯(cuò)誤!',16,1)rollbacktransactionend/*題庫(kù)表觸發(fā)器*/createtriggertrigger_tkontkforinsert,update,deleteasifexists(select*frominsertedwhere題目in(select題目fromtk))beginraiserror('題目重復(fù)!',16,1)rollbacktransactionendifexists(select*frominsertedwhere題目like'%?'and題目類型=2)beginraiserror('題目類型錯(cuò)誤!',16,1)rollbacktransactionend/*正確答案表觸發(fā)器*/createtriggertrigger_zqdaonzqdaforinsert,update,deleteasifexists(select*frominsertedwhere題號(hào)in(select題號(hào)fromzqda))beginraiserror('題號(hào)重復(fù)!',16,1)rollbacktransactionend/*考生答案觸發(fā)器*/createtriggertrigger_ksdaonksdaforinsert,update,deleteasifnotexists(select*frominsertedwhere題號(hào)>0and題號(hào)<(selectcount(題號(hào))fromtk))beginraiserror('題號(hào)不在圍之!',16,1)rollbacktransactionendifnotexists(select*frominsertedwhere考生號(hào)in(select考生號(hào)fromksksxxwhere考試狀態(tài)='考試中'))begin在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第9頁(yè)。raiserror('考生號(hào)有誤!',16,1)在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第9頁(yè)。rollbacktransactionend/*考生試卷觸發(fā)器*/createtriggertrigger_kssjonkssjforinsert,update,deleteasifexists(select*frominsertedwhere考生號(hào)in(select考生號(hào)fromkssj))beginraiserror('考生試卷已生成!',16,1)rollbacktransactionend/*考生成績(jī)表觸發(fā)器*/createtriggertrigger_kscjonkscjforinsert,update,deleteasifexists(select*frominsertedwhere號(hào)in(select號(hào)fromksksxxwhere考試狀態(tài)='結(jié)束'))beginraiserror('號(hào)錯(cuò)誤!',16,1)rollbacktransactionend(六)對(duì)在線考試系統(tǒng)功能的描述,針對(duì)各功能,創(chuàng)建了不同的存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn),這樣不但可以反復(fù)調(diào)用這些程序,大大減少了客戶端的處理事務(wù),同時(shí)也充分發(fā)揮服務(wù)器的功能,盡量減少網(wǎng)絡(luò)上的堵塞。根據(jù)查詢功能的需要,我創(chuàng)建了相應(yīng)的視圖,基于視圖創(chuàng)建了相應(yīng)的查詢存儲(chǔ)過(guò)程,這些存儲(chǔ)過(guò)程還包括對(duì)各表容信息的添加、刪除和更新。并且在存儲(chǔ)過(guò)程中也相應(yīng)地加入了對(duì)數(shù)據(jù)完整性和一致性的約束條件。同時(shí)還創(chuàng)建了為指定考生或所有考生隨機(jī)生成試卷和對(duì)指定考生或所有考生評(píng)卷功能的存儲(chǔ)過(guò)程。(1)為所有考生隨機(jī)生成試卷的存儲(chǔ)過(guò)程的功能實(shí)現(xiàn)可簡(jiǎn)略為:我先創(chuàng)建了一個(gè)游標(biāo),用來(lái)暫時(shí)保存在線考試的考生的考生號(hào),然后采用雙重while循環(huán),外層循環(huán)用來(lái)控制游標(biāo),一條一條地讀取考生號(hào),層循環(huán)用來(lái)為游標(biāo)所定位的考生隨機(jī)生成試題(我這里為了演示,只隨機(jī)生成了5到題)。當(dāng)游標(biāo)結(jié)束時(shí),也就為所有的考生生成了試卷。所謂隨機(jī)就是用rand()函數(shù)在所有題號(hào)(例如1-100)之間隨機(jī)生成一個(gè)隨機(jī)數(shù),由這個(gè)隨機(jī)數(shù)唯一對(duì)應(yīng)題庫(kù)中的一道題目。具體代碼如下:/*給單一考生生成試卷*/createprocpro_kssj_sj(kshchar(5)=null)asifnotexists(select*fromksksxxwhere考生號(hào)=ksh)在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第10頁(yè)。begin在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第10頁(yè)。print'非法考生號(hào)!'returnendif(selectcount(*)fromkssjwhere考生號(hào)=ksh)<5beginwhile(selectcount(*)fromkssjwhere考生號(hào)=ksh)<5begininsertintokssjvalues(1+cast(rand()*10asint),ksh)endreturnendelsebeginprint'題目已生成!'endexecpro_kssj_sj'S0001'/*執(zhí)行示例*//*給所有考生生成試卷*/createprocpro_all_kssjasifnotexists(select*fromksksxx)beginprint'暫無(wú)考試考生!'returnendelsebegindeclarecursor_all_kssjinsensitivecursorforselect考生號(hào)fromksksxxforreadonlydeclareksnochar(5)opencursor_all_kssjfetchnextfromcursor_all_kssjintoksnowhile(fetch_status=0)beginwhile(selectcount(*)fromkssjwhere考生號(hào)=ksno)<5begininsertintokssjvalues(1+cast(rand()*10asint),ksno)endfetchnextfromcursor_all_kssjintoksnoendclosecursor_all_kssj--關(guān)閉游標(biāo)deallocatecursor_all_kssj--釋放游標(biāo)在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第11頁(yè)。print'試卷已生成!'在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第11頁(yè)。endexecpro_all_kssj/*執(zhí)行示例*/(2)為所有考生評(píng)卷功能的存儲(chǔ)過(guò)程具體實(shí)現(xiàn)過(guò)程如下:創(chuàng)建一游標(biāo)讀取考生答案表里的所有信息,同樣采用的是雙重while循環(huán)來(lái)實(shí)現(xiàn)此功能。外層循環(huán)用來(lái)控制游標(biāo),并定義兩個(gè)臨時(shí)變量temp和sum,然后用層循環(huán)來(lái)把考生答案和正確答案進(jìn)行比較,如果結(jié)果一致,用變量temp從題庫(kù)表中讀取此題的分值,用變量sum來(lái)累加分值,由于每位考生只有5道題,故層循環(huán)只循環(huán)5次,最后變量sum中數(shù)值即位此考生的最后成績(jī),并通過(guò)存儲(chǔ)過(guò)程pro_insert_cj(向考生成績(jī)表中插入成績(jī))把考生成績(jī)插入考生成績(jī)表中。如此循環(huán)下去,直到游標(biāo)結(jié)束,即位所有考生評(píng)卷過(guò)程結(jié)束??忌煽?jī)表中也自動(dòng)加入了每位在線考試的考生的分?jǐn)?shù)。具體實(shí)現(xiàn)代碼如下:/*給單一考生評(píng)分存儲(chǔ)過(guò)程*/createprocpro_pf(ksnochar(5))asdeclarecursor_pfinsensitivecursorforselect題號(hào),答案fromksdawhere考生號(hào)=ksnoforreadonlyifnotexists(select*fromksksxxwhere考生號(hào)=ksnoand考試狀態(tài)='結(jié)束')beginraiserror('考生考試還未結(jié)束!',16,1)rollbacktransactionendelsebeginprint'考試已結(jié)束,繼續(xù)!'endifnotexists(select*fromkssjwhere考生號(hào)=ksno)beginprint'沒(méi)有此考生的答案!'returnendelsebeginopencursor_pfdeclarenamesysname,resultsysname,sumint,tempint,temp1int,zkzhchar(6)fetchnextfromcursor_pfintoname,resultselectsum=0selecttemp=1selecttemp1=1while(temp1<=5)在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第12頁(yè)。begin在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第12頁(yè)。ifexists(select*fromzqdawhere題號(hào)=nameand標(biāo)準(zhǔn)答案=result)beginselecttemp=(select分值fromtkwhere題號(hào)=name)selectsum=sum+tempselecttemp1=temp1+1--print'haha'--printsumfetchnextfromcursor_pfintoname,resultendelsebeginselecttemp1=temp1+1fetchnextfromcursor_pfintoname,resultend--print'temp1為:'+cast(temp1aschar)--print'name為:'+cast(nameaschar)endclosecursor_pf--關(guān)閉游標(biāo)deallocatecursor_pf--釋放游標(biāo)printsumselectzkzh=(select號(hào)fromksksxxwhere考生號(hào)=ksno)execpro_insert_cjzkzh,sum/*print'分?jǐn)?shù)為:'+cast(sumaschar)*/endexecpro_pf'S0005'/*執(zhí)行示例*//*給所有考生評(píng)分存儲(chǔ)過(guò)程*/createprocpro_all_pfasdeclarecursor_pfinsensitivecursorforselect題號(hào),答案,考生號(hào)fromksdaorderby考生號(hào)forreadonlybeginopencursor_pfdeclarenamesysname,resultsysname,sumint,tempint,temp1int,zkzhchar(6),ksnochar(5),ksno1char(5)fetchnextfromcursor_pfintoname,result,ksnowhile(fetch_status=0)beginselectsum=0selecttemp=1selecttemp1=1while(temp1<=5)begin在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第13頁(yè)。ifnotexists(select*fromksksxxwhere考生號(hào)=ksnoand考試狀態(tài)='結(jié)束')在線考試系統(tǒng)大數(shù)據(jù)庫(kù)課程設(shè)計(jì)全文共15頁(yè),當(dāng)前為第13頁(yè)。beginprint'考生考試還未結(jié)束!'continueendelsebeginprint'考試已結(jié)束,繼續(xù)!'endifexists(select*fromzqdawhere題號(hào)=nameand標(biāo)準(zhǔn)答案=result)beginselecttemp=(select分值fromtkwhere題號(hào)=name)selectsum=sum+tempselecttemp1=temp1+1--print'haha'--printsumfetchnextfromcursor_pfintoname,result,ksnoendelsebeginselecttemp1=temp1+1fetchnextfromcursor_pfintoname,result,ksnoendiftemp1=5beginselectksno1=ksnoendend--printsumselectzkzh=(select號(hào)fromksksxxwhere考生號(hào)=ksno1)execpro_insert_cjzkzh,sumendclosecursor_pf--關(guān)閉游標(biāo)deallocatecursor_pf--釋放游標(biāo)/*p

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論