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

下載本文檔

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

文檔簡介

1、標(biāo)準(zhǔn)文案開 發(fā) 報 告設(shè)計題目:年 級:學(xué) 號:姓 名:在線考試系統(tǒng)數(shù)據(jù)庫的設(shè)計與實現(xiàn)*目錄摘要 1大全第一章:需求分析3第二章:概念結(jié)構(gòu)設(shè)計 3第三章:物理結(jié)構(gòu)設(shè)計和邏輯結(jié)構(gòu)設(shè)計 6第一條:物理結(jié)構(gòu)設(shè)計 6第二條:邏輯結(jié)構(gòu)設(shè)計 7結(jié)束語 14第一章:系統(tǒng)功能需求分析隨著標(biāo)準(zhǔn)化考試的日益普及,在各種考試中越來越多地采用了計算機(jī)考試的 方式。相對于傳統(tǒng)的卷面考試而言,由于傳統(tǒng)的卷面考試從出題印刷到下發(fā)試卷 等環(huán)節(jié)需要較長的時間,接觸的人員相對較多, 因而在方面具有一定的困難。而 計算機(jī)考試系統(tǒng)采用試題庫方式提供試題來源, 考前無任何成套試卷,考試時考 卷由計算機(jī)現(xiàn)場隨機(jī)生成,各考生試卷不完全相同

2、,從而避免了互相參看等作弊 現(xiàn)象或不公平成績的出現(xiàn)。同時也可考后即可獲得成績,省去了人力評卷的麻煩 和弊端。據(jù)此,我實現(xiàn)了在線考試系統(tǒng)的數(shù)據(jù)庫設(shè)計。系統(tǒng)主要實現(xiàn)了一下幾個方面的功 能:對考生而言,分為五個考試狀態(tài):待考、就緒、考試中、結(jié)束、缺考??忌?用號登錄考試,然后驗證考生信息是否一致,如果一致就會停留在考生須知界面, 處于就緒狀態(tài)。所有考生等待服務(wù)器發(fā)送統(tǒng)一命令分發(fā)試卷并同時進(jìn)入考試中狀 態(tài)。在開考后20分鐘后考生仍未到場,考生狀態(tài)會自動設(shè)置為“缺考”,不能參 加此次考試??荚囘^程中可自由答題(可隨時定位到每一題) 。如果有考生信息 不一致的情況,可上報管理員,經(jīng)審核后進(jìn)行修改??忌纪?/p>

3、試點擊“交卷”,經(jīng)確認(rèn)后交卷。考后即可查看考試分?jǐn)?shù)。 在到達(dá)考試時間后,服務(wù)器會自動給未 交卷的考生結(jié)束考試,并可同時給所有考生評卷得出分?jǐn)?shù)。對管理員而言,可以更改數(shù)據(jù)庫的所有容,可添加、查詢、修改、刪除考生 的信息,設(shè)置考試的相關(guān)容。可有選擇地錄入試題,為題目分類并自動在正確答 案表里插入相應(yīng)的標(biāo)準(zhǔn)答案。開考前服務(wù)器可自動為每考生隨機(jī)生成試卷。 考生 號由管理員統(tǒng)一設(shè)置。服務(wù)器會根據(jù)考試時間來自動設(shè)置考生的考試狀態(tài)。 到達(dá) 考試時間后,服務(wù)器可同時讓所有在線考生進(jìn)入答題階段。在考試過程中,自動為考生保存考試答案。也可以查看所有考生的在線考試情況。 同時也可為出現(xiàn)異 常的考生延時等詳細(xì)功能。考

4、試全部結(jié)束后,服務(wù)器會備份所有考生信息和答題 情況,并給所有考生評卷并生成所有考試成績表,以便考生查分。第二章:概念結(jié)構(gòu)設(shè)計針對以上的功能分析,對數(shù)據(jù)庫的設(shè)計做了以下分析??紤]到在線考試的特 殊要求,數(shù)據(jù)庫的設(shè)計應(yīng)該包含以下信息:考生的基本信息用來在考生登陸時進(jìn)行核對驗證,防止考生信息錄錯的情 況??忌荚嚨幕拘畔⒂脕砜刂瓶荚嚂r間和考生的考試狀態(tài),統(tǒng)計在線考生和缺考情況,同時也方便服務(wù)器統(tǒng)一發(fā)送命令,給所有考生同時開始考試和結(jié)束考 試。從而體現(xiàn)公平一致的原則。題庫應(yīng)包含所有的考試類型、題目容和每題的分值,以便以后的隨機(jī)抽題和 為考生評分。并且數(shù)據(jù)庫里也存儲有每題對應(yīng)的正確答案,考生的考試答案

5、,這樣可以方便評分。還對考生答案做了備份, 方便以后的查閱和總結(jié)考試情況, 以 進(jìn)一步更新考試,提高考試質(zhì)量。還應(yīng)把給每位考生隨機(jī)生成的試題保存起來,方便查閱核對,并可由服務(wù)器 統(tǒng)一給對應(yīng)考生發(fā)送試卷。最后把評卷的結(jié)果和考生成績統(tǒng)計出來做備份,考生可在考試結(jié)束后直接查 看考試結(jié)果。如果發(fā)現(xiàn)有疑問地方也可隨時查看和核對。由此分析一共設(shè)計了七表用來存儲所有的考生信息和考試信息:考生信息表(包含屬性:、性別、號、號、所在學(xué)校)、考生考試信息表(包含屬性:考生號、 號、考試時間、考試狀態(tài))、題庫表(包含屬性:題號、題目、題目類型、分值)、 正確答案表(包含屬性:題號、標(biāo)準(zhǔn)答案)、考生試卷表(包含屬性:

6、題號、考 生號)、考生答案表(包含屬性:題號、答案、考生號)和考生成績表(包含屬 性:號、成績)。并為每個表設(shè)置了能唯一確定每位考生的屬性。 其中考生信息表里設(shè)置屬性 (號)為主關(guān)鍵字,并在考生考試信息表和考生成績表里設(shè)置屬性(號)為考生 信息表中屬性(號)的外部關(guān)鍵字。這樣就可一一關(guān)聯(lián)和對應(yīng)每一位考生的信息。 在考生考試信息表里為每位考生生成一屬性(考生號)并設(shè)置其為此表的主關(guān)鍵 字。以唯一確定每一位考生的考試時間和考試狀態(tài)。在題庫中設(shè)置屬性(題號) 為主關(guān)鍵字,這樣就可以唯一確定每一題, 防止題目的重復(fù),也方便隨機(jī)為考生 抽題。并在考生試卷表、正確答案表和考生答案表里設(shè)置屬性(題號)為外部

7、關(guān) 鍵字,這樣就和題庫中的題號一一對應(yīng)起來, 可減少這些表中的屬性。從而實現(xiàn) 整個數(shù)據(jù)庫設(shè)計的完整性和一致性。在考生答案表和考生試卷表中同時設(shè)置屬性(題號和考生號)為外部關(guān)鍵字,這樣就把考生和題目聯(lián)系起來。 通過關(guān)聯(lián)唯一 確定每位考生的試卷和答案,也方便了以后的分發(fā)試卷和為每位考生評卷。表問對應(yīng)的局部和整體E-R圖如下:(1)考生信息和考生考試信息之間的聯(lián)系:姓名考試狀態(tài)(2)題庫和考生試卷之間的聯(lián)系(3)考生試卷和考生試卷之間的聯(lián)系(4)題庫和正確答案之間的聯(lián)系題目題目類型分值題號答案題號 標(biāo)準(zhǔn)答案姓名性別準(zhǔn)考證號 身份證號 所在學(xué)校準(zhǔn)考證號 成績5)考生信息和考生成績之間的聯(lián)系(6)在線考

8、試系統(tǒng)模型整體 E-R圖:第一條:邏輯結(jié)構(gòu)設(shè)計下面是將各個實體和聯(lián)系轉(zhuǎn)化為相應(yīng)的二維表即關(guān)系模式,指定各個關(guān)系的 主關(guān)鍵字和外部關(guān)鍵字,并對各個關(guān)系的約束加以限定:考生信息表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的 表取值說明varchar(8)不允許為空性別char只允許取“男”或 “女”號char(6)Yes數(shù)字字符號char(18)數(shù)字字符所在學(xué)校varchar(16)考生考試信息表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說明考生號char(5)Yes號char(6)Yes考生信息數(shù)字字符考試時間P char(22)不允許為空考試狀態(tài)varchar(6)不允許為空題庫表字段名數(shù)據(jù)類型主

9、關(guān)鍵字外部關(guān)鍵字參照的表取值說明題號intYes二 0題目varchar(100 )不允許為空題目類型int1或2或3分值int分值 in (1,10)備注:其中題目類型中:1-判斷題 2-填空題 3-選擇題 正確答案表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說明題號intYes題庫廿0標(biāo)準(zhǔn)答案varchar(20)Not null考生試卷表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說明題號intYes題庫廿0考生號char(5)Yes考試考試信 息Not null考生答案表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說明題號intYes:題庫0答案Varchar(20)可為空考生號Ch

10、ar(5)Yes考生考試信 息Not null考生成績表字段名數(shù)據(jù)類型主關(guān)鍵字外部關(guān)鍵字參照的表取值說明號Char(6)Yes考生信息數(shù)字字符成績int成績in(0,100)缺省 為0(2)所有表之間的關(guān)系圖: 第二節(jié):物理結(jié)構(gòu)設(shè)計關(guān)系型數(shù)據(jù)庫的實現(xiàn):不同的數(shù)據(jù)庫產(chǎn)品所提供的物理環(huán)境,存取方法和存貯結(jié)構(gòu)有很大的區(qū)別。能供設(shè)計人員使用的設(shè)計變量,參數(shù)圍也很不相同,因此沒有通用的物理設(shè)計方法可遵循,只能給出一般的設(shè)計容和原則Microsoft SQLServer2000就是關(guān)系數(shù)據(jù)庫開發(fā)工具,數(shù)據(jù)庫能匯集各種信息以供查詢、存儲和檢索。自定義窗體收集信息。數(shù)據(jù)表示圖提供了一種類似于Excel的電子表

11、格,可以使數(shù)據(jù)庫一目了然,還提供了排序功能。Microsoft SQL Server2000也提供了 數(shù)據(jù)存儲庫,可以使用桌面數(shù)據(jù)庫文件把數(shù)據(jù)庫文件置于網(wǎng)絡(luò)文件服務(wù)器,與其他網(wǎng)絡(luò)用戶共享數(shù)據(jù)庫。如上所述,Microsoft SQL Server2000作為關(guān)系數(shù)據(jù)庫開發(fā)具備了許多優(yōu)點,可以在一個數(shù)據(jù)包中同時擁有桌面數(shù)據(jù)庫的便利和關(guān)系數(shù) 據(jù)庫的強(qiáng)大功能。為此,首先要充分了解所用DBMS的部特征,特別是系統(tǒng)提供的存取方法和存取結(jié)構(gòu)。下面是具體的運(yùn)行設(shè)計(四)為了改善和優(yōu)化數(shù)據(jù)庫的性能和查詢效果,為每個表創(chuàng)建了索引, 具體代 碼如下:/*考生信息表索引*/create unique index in

12、dex_ksxx on ksxx(號)/*考生考試信息表索引*/create unique index index_ksksxx on ksksxx( 生號)create unique index index_ksksxx1 on ksksxx()/*題庫表索引*/create unique index index_tk on tk(S 號)/*正確答案表索引*/create unique index index_zqda on zqdO(l號)/*考生答案表索引*/create unique index index_ksda on ksd題號,考生號)/*考生試卷表索引*/create un

13、ique index index_kssj on kss得生號,題號)/*成績表索引*/create unique index index_kscj on kscj#)(五)為了實現(xiàn)表問數(shù)據(jù)的一切生和完整性,創(chuàng)建了觸發(fā)器,具體代碼如下:/*考生信息表觸發(fā)器*/create trigger trigger_ksxx1 on ksxxfor insert,update,deleteasif (SELECT LEN(號)FROM inserted)6 or (SELECT LEN(號)FROM inserted)6 beginraiserror('號長度不對!,10,1)rollback t

14、ransaction endelse begin print '添加成功!' endif exists(select * from inserted where 號 in(select 號 from ksxx)beginprint '號已經(jīng)存在!'returnend/*考生考試信息表觸發(fā)器*/create trigger trigger_ksksxxon ksksxxfor insert,update,deleteasif exists(select * from inserted where 號 in(select 號 from ksksxx)beginrai

15、serror('號重復(fù)!,16,1)rollback transactionendif not exists(select * from inserted where 考試時間 like '%-%-%'+' '+'%:%-%:%') beginraiserror('時間格式不對!,16,1)rollback transactionendif not exists(select * from inserted where 考試狀態(tài) in('待考','就緒','考試中','結(jié)束&

16、#39;, 缺考')beginraiserror('狀態(tài)錯誤!',16,1)rollback transactionend/*題庫表觸發(fā)器*/create trigger trigger_tkon tkfor insert,update,deleteasif exists(select * from inserted where 題目 in(select 題目 from tk)beginraiserror(題目重復(fù)!',16,1)rollback transactionendif exists(select * from inserted where 題目 li

17、ke '%?'and 題目類型=2)beginraiserror(題目類型錯誤!',16,1)rollback transactionend/*正確答案表觸發(fā)器*/create trigger trigger_zqdaon zqdafor insert,update,deleteasif exists(select * from inserted where 題號 in(select 題號 from zqda)beginraiserror(題號重復(fù)!,16,1)rollback transactionend/*考生答案觸發(fā)器*/create trigger trigge

18、r_ksdaon ksdafor insert,update,deleteasif not exists(select * from inserted where 題號 >0 and 題號 <(select count題號)from tk)beginraiserror(題號不在圍之!,16,1)rollback transactionendif not exists(select * from inserted where 考生號 in(select 考生號 from ksksxx where考試狀態(tài)='考試中')beginraiserror('考生號有誤!

19、,16,1)rollback transaction end/*考生試卷觸發(fā)器*/create trigger trigger_kssjon kssjfor insert,update,deleteasif exists(select * from inserted where 考生號 in(select 考生號 from kssj)beginraiserror('考生試卷已生成!,16,1)rollback transactionend/*考生成績表觸發(fā)器*/create trigger trigger_kscjon kscjfor insert,update,deleteasif

20、exists(select * from inserted where 號 in(select 號 from ksksxx where 考試狀態(tài)=' 結(jié)束')beginraiserror('號錯誤!,16,1)rollback transactionend(六)對在線考試系統(tǒng)功能的描述,針對各功能,創(chuàng)建了不同的存儲過程來實現(xiàn), 這樣不但可以反復(fù)調(diào)用這些程序,大大減少了客戶端的處理事務(wù),同時也充分發(fā)揮服務(wù)器的功能,盡量減少網(wǎng)絡(luò)上的堵塞。根據(jù)查詢功能的需要,我創(chuàng)建了相應(yīng)的視圖,基于視圖創(chuàng)建了相應(yīng)的查詢 存儲過程,這些存儲過程還包括對各表容信息的添加、刪除和更新。并且在存儲過

21、程中也相應(yīng)地加入了對數(shù)據(jù)完整性和一致性的約束條件。同時還創(chuàng)建了為指定考生或所有考生隨機(jī)生成試卷和對指定考生或所有考生評卷功能的存儲過程。(1)為所有考生隨機(jī)生成試卷的存儲過程的功能實現(xiàn)可簡略為:我先創(chuàng)建了 一個游標(biāo),用來暫時保存在線考試的考生的考生號,然后采用雙重while循環(huán),外層循環(huán)用來控制游標(biāo),一條一條地讀取考生號,層循環(huán)用來為游標(biāo)所定位的考 生隨機(jī)生成試題(我這里為了演示,只隨機(jī)生成了5到題)。當(dāng)游標(biāo)結(jié)束時,也就為所有的考生生成了試卷。所謂隨機(jī)就是用rand()函數(shù)在所有題號(例如1-100) 之間隨機(jī)生成一個隨機(jī)數(shù),由這個隨機(jī)數(shù)唯一對應(yīng)題庫中的一道題目。具體代碼如下:/*給單一考生生

22、成試卷*/create proc pro_kssj_sj(ksh char(5)=null) asif not exists(select * from ksksxx where 考生號=ksh)beginprint '非法考生號! returnendif (select count(*) from kssj where 考生號=ksh)<5 beginwhile (select count(*) from kssj where 考生號=ksh)<5 begininsert into kssj values(1+cast(rand()*10 as int),ksh) end

23、return end else begin print題目已生成!' endexec pro_kssj_sj 'S0001'/* 執(zhí)行示例*/*給所有考生生成試卷*/create proc pro_all_kssjasif not exists(select * from ksksxx)beginprint '暫無考試考生!,returnend else begin declare cursor_all_kssj insensitive cursor for select 考生號 from ksksxxfor read onlydeclare ksno char

24、(5) open cursor_all_kssj fetch next from cursor_all_kssj into ksno while(fetch_status=0)beginwhile (select count(*) from kssj where 考生號=ksno)<5 begininsert into kssj values(1+cast(rand()*10 as int),ksno)endfetch next from cursor_all_kssj into ksno endclose cursor_all_kssj-關(guān)閉游標(biāo)deallocate cursor_al

25、l_kssj-釋放游標(biāo)print '試卷已生成! endexec pro_all_kssj/* 執(zhí)行示例*/(2)為所后考.評卷功能的存儲過程具體實現(xiàn)過程如下:創(chuàng)建一游標(biāo)讀取考 生答案表里的所有信息,同樣采用的是雙重 while循環(huán)來實現(xiàn)此功能。外層循環(huán) 用來控制游標(biāo),并定義兩個臨時變量temp和sum,然后用層循環(huán)來把考生答案和正確答案進(jìn)行比較,如果結(jié)果一致,用變量temp從題庫表中讀取此題的分值, 用變量sum來累加分值,由于每位考生只有5道題,故層循環(huán)只循環(huán)5次,最后 變量sum中數(shù)值即位此考生的最后成績,并通過存儲過程pro_insert_cj (向考生成績表中插入成績)把考生

26、成績插入考生成績表中。如此循環(huán)下去,看到游標(biāo)結(jié)束,即位所有考生評卷過程結(jié)束??忌煽儽碇幸沧詣蛹尤肓嗣课辉诰€考試的考 生的分?jǐn)?shù)。具體實現(xiàn)代碼如下:/*給單一考生評分存儲過程*/create proc pro_pf(ksno char(5) asdeclare cursor_pf insensitive cursorfor select 題號,答案 from ksda where 考生號=ksnofor read onlyif not exists(select * from ksksxx where 考生號=ksno and 考試狀態(tài)='結(jié)束') beginraiserror(

27、'考生考試還未結(jié)束!,16,1)rollback transactionend elsebeginprint '考試已結(jié)束,繼續(xù)!' endif not exists(select * from kssj where 考生號=ksno) beginprint '沒有此考生的答案!' returnend else begin open cursor_pfdeclare name sysname,result sysname,sum int,temp int,temp1 int,zkzh char(6) fetch next from cursor_pf i

28、nto name,result select sum=0select temp=1select temp1=1while(temp1<=5) beginif exists(select * from zqda where 題號=name and 標(biāo)準(zhǔn)答案=result) beginselect temp=(select 分值 from tk where 題號-name) select sum=sum+tempselect temp1=temp1+1-print 'haha'-print sumfetch next from cursor_pf into name,resu

29、lt end else beginselect temp1=temp1+1fetch next from cursor_pf into name,result end-print 'tempi 為:'+cast(temp1 as char)-print 'name 為:'+cast(name as char) endclose cursor_pf-關(guān)閉游標(biāo)deallocate cursor_pf-釋放游標(biāo)print sumselect zkzh=(select 號 from ksksxx where 考生號=ksno) exec pro_insert_cj zk

30、zh,sum/*print '分?jǐn)?shù)為:'+cast(sum as char)*/ endexec pro_pf 'S0005'/* 執(zhí)行示例*/*給所有Z生評分存儲過程*/create proc pro_all_pf asdeclare cursor_pf insensitive cursorfor select題號,答案考生號from ksda order by考生號 for read only begin open cursor_pfdeclare name sysname,result sysname,sum int,temp int,temp1 int,

31、zkzh char(6),ksno char(5),ksno1 char(5)fetch next from cursor_pf into name,result,ksno while(fetch_status=0) begin select sum=0 select temp=1 select temp1=1while(temp1<=5) beginif not exists(select * from ksksxx where 考生號=ksno and 考試狀態(tài)='結(jié)束') beginprint '考生考試還未結(jié)束! continueend else begin print '考試已結(jié)束,繼續(xù)!' endif exists(select * from zqda where 題號=name and 標(biāo)準(zhǔn)答案=result) beginselect temp=(select 分值 from tk where 題號-name) select sum=sum+tempselect temp1=temp1+1-print 'haha'-print sumfetch next from cursor_pf into name,result

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論