![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/21/70e72ba8-7731-4633-accd-d63c2eda3147/70e72ba8-7731-4633-accd-d63c2eda3147pic.jpg)
![在線考試系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/21/70e72ba8-7731-4633-accd-d63c2eda3147/70e72ba8-7731-4633-accd-d63c2eda31471.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 開</b></p><p><b> 發(fā)</b></p><p><b> 報(bào)</b></p><p><b> 告</b></p><p> 設(shè)計(jì)題目:在線考試系統(tǒng)數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)</p><p
2、> 年 級(jí):*************</p><p> 學(xué) 號(hào):********</p><p> 姓 名:*****</p><p><b> 目錄</b></p><p> 摘要 ---------------------------------------------
3、------------------------1</p><p> 第一章:需求分析--------------------------------------------------------------3</p><p> 第二章:概念結(jié)構(gòu)設(shè)計(jì) ----------------------------------------------------3</p>
4、<p> 第三章:物理結(jié)構(gòu)設(shè)計(jì)和邏輯結(jié)構(gòu)設(shè)計(jì) --------------------------------6</p><p> 第一條:物理結(jié)構(gòu)設(shè)計(jì) ----------------------------------------------------6</p><p> 第二條:邏輯結(jié)構(gòu)設(shè)計(jì) --------------------------------
5、--------------------7</p><p> 結(jié)束語 -----------------------------------------------------------------------14</p><p> 第一章:系統(tǒng)功能需求分析</p><p> 隨著標(biāo)準(zhǔn)化考試的日益普及,在各種考試中越來越多地采用了計(jì)算機(jī)考試的方式。相對(duì)
6、于傳統(tǒng)的卷面考試而言,由于傳統(tǒng)的卷面考試從出題印刷到下發(fā)試卷等環(huán)節(jié)需要較長的時(shí)間,接觸的人員相對(duì)較多,因而在保密方面具有一定的困難。而計(jì)算機(jī)考試系統(tǒng)采用試題庫方式提供試題來源,考前無任何成套試卷,考試時(shí)考卷由計(jì)算機(jī)現(xiàn)場(chǎng)隨機(jī)生成,各考生試卷不完全相同,從而避免了互相參看等作弊現(xiàn)象或不公平成績的出現(xiàn)。同時(shí)也可考后即可獲得成績,省去了人力評(píng)卷的麻煩和弊端。</p><p> 據(jù)此,我實(shí)現(xiàn)了在線考試系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)。系
7、統(tǒng)主要實(shí)現(xiàn)了一下幾個(gè)方面的功能:</p><p> 對(duì)考生而言,分為五個(gè)考試狀態(tài):待考、就緒、考試中、結(jié)束、缺考。考生用準(zhǔn)考證號(hào)登錄考試網(wǎng)站,然后驗(yàn)證考生信息是否一致,如果一致就會(huì)停留在考生須知界面,處于就緒狀態(tài)。所有考生等待服務(wù)器發(fā)送統(tǒng)一命令分發(fā)試卷并同時(shí)進(jìn)入考試中狀態(tài)。在開考后20分鐘后考生仍未到場(chǎng),考生狀態(tài)會(huì)自動(dòng)設(shè)置為“缺考”,不能參加此次考試。考試過程中可自由答題(可隨時(shí)定位到每一題)。如果有考生信息不
8、一致的情況,可上報(bào)管理員,經(jīng)審核后進(jìn)行修改。考生考完試點(diǎn)擊“交卷”,經(jīng)確認(rèn)后交卷??己蠹纯刹榭纯荚嚪?jǐn)?shù)。在到達(dá)考試時(shí)間后,服務(wù)器會(huì)自動(dòng)給未交卷的考生結(jié)束考試,并可同時(shí)給所有考生評(píng)卷得出分?jǐn)?shù)。</p><p> 對(duì)管理員而言,可以更改數(shù)據(jù)庫的所有內(nèi)容,可添加、查詢、修改、刪除考生的信息,設(shè)置考試的相關(guān)內(nèi)容??捎羞x擇地錄入試題,為題目分類并自動(dòng)在正確答案表里插入相應(yīng)的標(biāo)準(zhǔn)答案。開考前服務(wù)器可自動(dòng)為每考生隨機(jī)生成試卷
9、??忌?hào)由管理員統(tǒng)一設(shè)置。服務(wù)器會(huì)根據(jù)考試時(shí)間來自動(dòng)設(shè)置考生的考試狀態(tài)。到達(dá)考試時(shí)間后,服務(wù)器可同時(shí)讓所有在線考生進(jìn)入答題階段。在考試過程中,自動(dòng)為考生保存考試答案。也可以查看所有考生的在線考試情況。同時(shí)也可為出現(xiàn)異常的考生延時(shí)等詳細(xì)功能??荚嚾拷Y(jié)束后,服務(wù)器會(huì)備份所有考生信息和答題情況,并給所有考生評(píng)卷并生成所有考試成績表,以便考生查分。</p><p> 第二章 :概念結(jié)構(gòu)設(shè)計(jì)</p>&l
10、t;p> 針對(duì)以上的功能分析,對(duì)數(shù)據(jù)庫的設(shè)計(jì)做了以下分析??紤]到在線考試的特殊要求,數(shù)據(jù)庫的設(shè)計(jì)應(yīng)該包含以下信息:</p><p> 考生的基本信息用來在考生登陸時(shí)進(jìn)行核對(duì)驗(yàn)證,防止考生信息錄錯(cuò)的情況。</p><p> 考生考試的基本信息用來控制考試時(shí)間和考生的考試狀態(tài),統(tǒng)計(jì)在線考生和缺考情況,同時(shí)也方便服務(wù)器統(tǒng)一發(fā)送命令,給所有考生同時(shí)開始考試和結(jié)束考試。從而體現(xiàn)公平一致的
11、原則。</p><p> 題庫應(yīng)包含所有的考試類型、題目內(nèi)容和每題的分值,以便以后的隨機(jī)抽題和為考生評(píng)分。并且數(shù)據(jù)庫里也存儲(chǔ)有每題對(duì)應(yīng)的正確答案,考生的考試答案,這樣可以方便評(píng)分。還對(duì)考生答案做了備份,方便以后的查閱和總結(jié)考試情況,以進(jìn)一步更新考試,提高考試質(zhì)量。</p><p> 還應(yīng)把給每位考生隨機(jī)生成的試題保存起來,方便查閱核對(duì),并可由服務(wù)器統(tǒng)一給對(duì)應(yīng)考生發(fā)送試卷。</p&
12、gt;<p> 最后把評(píng)卷的結(jié)果和考生成績統(tǒng)計(jì)出來做備份,考生可在考試結(jié)束后直接查看考試結(jié)果。如果發(fā)現(xiàn)有疑問地方也可隨時(shí)查看和核對(duì)。</p><p> 由此分析一共設(shè)計(jì)了七張表用來存儲(chǔ)所有的考生信息和考試信息:考生信息表(包含屬性:姓名、性別、準(zhǔn)考證號(hào)、身份證號(hào)、所在學(xué)校)、考生考試信息表(包含屬性:考生號(hào)、準(zhǔn)考證號(hào)、考試時(shí)間、考試狀態(tài))、題庫表(包含屬性:題號(hào)、題目、題目類型、分值)、正確答案
13、表(包含屬性:題號(hào)、標(biāo)準(zhǔn)答案)、考生試卷表(包含屬性:題號(hào)、考生號(hào))、考生答案表(包含屬性:題號(hào)、答案、考生號(hào))和考生成績表(包含屬性:準(zhǔn)考證號(hào)、成績)。</p><p> 并為每個(gè)表設(shè)置了能唯一確定每位考生的屬性。其中考生信息表里設(shè)置屬性(準(zhǔn)考證號(hào))為主關(guān)鍵字,并在考生考試信息表和考生成績表里設(shè)置屬性(準(zhǔn)考證號(hào))為考生信息表中屬性(準(zhǔn)考證號(hào))的外部關(guān)鍵字。這樣就可一一關(guān)聯(lián)和對(duì)應(yīng)每一位考生的信息。在考生考試信息
14、表里為每位考生生成一屬性(考生號(hào))并設(shè)置其為此表的主關(guān)鍵字。以唯一確定每一位考生的考試時(shí)間和考試狀態(tài)。在題庫中設(shè)置屬性(題號(hào))為主關(guān)鍵字,這樣就可以唯一確定每一題,防止題目的重復(fù),也方便隨機(jī)為考生抽題。并在考生試卷表、正確答案表和考生答案表里設(shè)置屬性(題號(hào))為外部關(guān)鍵字,這樣就和題庫中的題號(hào)一一對(duì)應(yīng)起來,可減少這些表中的屬性。從而實(shí)現(xiàn)整個(gè)數(shù)據(jù)庫設(shè)計(jì)的完整性和一致性。在考生答案表和考生試卷表中同時(shí)設(shè)置屬性(題號(hào)和考生號(hào))為外部關(guān)鍵字,這樣
15、就把考生和題目聯(lián)系起來。通過關(guān)聯(lián)唯一確定每位考生的試卷和答案,也方便了以后的分發(fā)試卷和為每位考生評(píng)卷。</p><p> 表間對(duì)應(yīng)的局部和整體E-R圖如下:</p><p> (1)考生信息和考生考試信息之間的聯(lián)系:</p><p> ?。?)題庫和考生試卷之間的聯(lián)系</p><p> (3)考生試卷和考生試卷之間的聯(lián)系</p&g
16、t;<p> ?。?)題庫和正確答案之間的聯(lián)系</p><p><b> (</b></p><p> 5)考生信息和考生成績之間的聯(lián)系</p><p> ?。?)在線考試系統(tǒng)模型整體E-R圖:</p><p> 第三章邏輯結(jié)構(gòu)設(shè)計(jì)和物理結(jié)構(gòu)設(shè)計(jì)</p><p> 第一條:邏
17、輯結(jié)構(gòu)設(shè)計(jì)</p><p> (1)下面是將各個(gè)實(shí)體和聯(lián)系轉(zhuǎn)化為相應(yīng)的二維表即關(guān)系模式,指定各個(gè)關(guān)系的主關(guān)鍵字和外部關(guān)鍵字,并對(duì)各個(gè)關(guān)系的約束加以限定:</p><p><b> 考生信息表</b></p><p><b> 考生考試信息表</b></p><p><b> 題庫表
18、</b></p><p> 備注:其中題目類型中:1-判斷題 2-填空題 3-選擇題</p><p><b> 正確答案表</b></p><p><b> 考生試卷表</b></p><p><b> 考生答案表</b></p>&l
19、t;p><b> 考生成績表</b></p><p> (2)所有表之間的關(guān)系圖:</p><p> 第二節(jié):物理結(jié)構(gòu)設(shè)計(jì)</p><p> 關(guān)系型數(shù)據(jù)庫的實(shí)現(xiàn):不同的數(shù)據(jù)庫產(chǎn)品所提供的物理環(huán)境,存取方法和存貯結(jié)構(gòu)有很大的區(qū)別。能供設(shè)計(jì)人員使用的設(shè)計(jì)變量,參數(shù)范圍也很不相同,因此沒有通用的物理設(shè)計(jì)方法可遵循,只能給出一般的設(shè)計(jì)內(nèi)容
20、和原則Microsoft SQL Server2000 就是關(guān)系數(shù)據(jù)庫開發(fā)工具,數(shù)據(jù)庫能匯集各種信息以供查詢、存儲(chǔ)和檢索。自定義窗體收集信息。數(shù)據(jù)表示圖提供了一種類似于 Excel 的電子表格,可以使數(shù)據(jù)庫一目了然,還提供了排序功能。Microsoft SQL Server2000也提供了數(shù)據(jù)存儲(chǔ)庫,可以使用桌面數(shù)據(jù)庫文件把數(shù)據(jù)庫文件置于網(wǎng)絡(luò)文件服務(wù)器,與其他網(wǎng)絡(luò)用戶共享數(shù)據(jù)庫。如上所述, Microsoft SQL Server200
21、0 作為關(guān)系數(shù)據(jù)庫開發(fā)具備了許多優(yōu)點(diǎn),可以在一個(gè)數(shù)據(jù)包中同時(shí)擁有桌面數(shù)據(jù)庫的便利和關(guān)系數(shù)據(jù)庫的強(qiáng)大功能。為此,首先要充分了解所用DBMS的內(nèi)部特征,特別是系統(tǒng)提供的存取方法和存取結(jié)構(gòu)。下面是具體的運(yùn)行設(shè)計(jì) </p><p> ?。ㄋ模榱烁纳坪蛢?yōu)化數(shù)據(jù)庫的性能和查詢效果,為每個(gè)表創(chuàng)建了索引,具體代碼如下:</p><p> /*考生信息表索引*/</p><p>
22、; create unique index index_ksxx on ksxx(姓名,準(zhǔn)考證號(hào))</p><p> /*考生考試信息表索引*/</p><p> create unique index index_ksksxx on ksksxx(考生號(hào))</p><p> create unique index index_ksksxx1 on ksks
23、xx(準(zhǔn)考證號(hào))</p><p><b> /*題庫表索引*/</b></p><p> create unique index index_tk on tk(題號(hào))</p><p> /*正確答案表索引*/</p><p> create unique index index_zqda on zqda(題號(hào))&
24、lt;/p><p> /*考生答案表索引*/</p><p> create unique index index_ksda on ksda(題號(hào),考生號(hào))</p><p> /*考生試卷表索引*/</p><p> create unique index index_kssj on kssj(考生號(hào),題號(hào))</p><
25、;p><b> /*成績表索引*/</b></p><p> create unique index index_kscj on kscj(準(zhǔn)考證號(hào))</p><p> ?。ㄎ澹榱藢?shí)現(xiàn)表間數(shù)據(jù)的一致性和完整性,創(chuàng)建了觸發(fā)器,具體代碼如下:</p><p> /*考生信息表觸發(fā)器*/</p><p> cr
26、eate trigger trigger_ksxx1</p><p><b> on ksxx</b></p><p> for insert,update,delete</p><p><b> as</b></p><p> if (SELECT LEN(準(zhǔn)考證號(hào)) FROM inse
27、rted)<6 or (SELECT LEN(準(zhǔn)考證號(hào)) FROM inserted)>6</p><p><b> begin</b></p><p> raiserror('準(zhǔn)考證號(hào)長度不對(duì)!',10,1)</p><p> rollback transaction</p><p>
28、<b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> print '添加成功!'</p><p><b> end</b></p>&l
29、t;p> if exists(select * from inserted where 身份證號(hào) in(select 身份證號(hào) from ksxx))</p><p><b> begin </b></p><p> print '身份證號(hào)已經(jīng)存在!'</p><p><b> return</b&
30、gt;</p><p><b> end</b></p><p> /*考生考試信息表觸發(fā)器*/</p><p> create trigger trigger_ksksxx</p><p><b> on ksksxx</b></p><p> for inser
31、t,update,delete</p><p><b> as</b></p><p> if exists(select * from inserted where 準(zhǔn)考證號(hào) in(select 準(zhǔn)考證號(hào) from ksksxx))</p><p><b> begin</b></p><p&g
32、t; raiserror('準(zhǔn)考證號(hào)重復(fù)!',16,1)</p><p> rollback transaction</p><p><b> end</b></p><p> if not exists(select * from inserted where 考試時(shí)間 like '%-%-%'+
33、9; '+'%:%-%:%')</p><p><b> begin</b></p><p> raiserror('時(shí)間格式不對(duì)!',16,1)</p><p> rollback transaction</p><p><b> end</b>&l
34、t;/p><p> if not exists(select * from inserted where 考試狀態(tài) in('待考','就緒','考試中','結(jié)束','缺考'))</p><p><b> begin</b></p><p> raiserror(&
35、#39;狀態(tài)錯(cuò)誤!',16,1)</p><p> rollback transaction</p><p><b> end</b></p><p> /*題庫表觸發(fā)器*/</p><p> create trigger trigger_tk</p><p><b>
36、 on tk</b></p><p> for insert,update,delete</p><p><b> as</b></p><p> if exists(select * from inserted where 題目 in(select 題目 from tk))</p><p><b
37、> begin</b></p><p> raiserror('題目重復(fù)!',16,1)</p><p> rollback transaction</p><p><b> end</b></p><p> if exists(select * from inserted w
38、here 題目 like '%?'and 題目類型=2)</p><p><b> begin</b></p><p> raiserror('題目類型錯(cuò)誤!',16,1)</p><p> rollback transaction</p><p><b> end<
39、;/b></p><p> /*正確答案表觸發(fā)器*/</p><p> create trigger trigger_zqda</p><p><b> on zqda</b></p><p> for insert,update,delete</p><p><b>
40、as</b></p><p> if exists(select * from inserted where 題號(hào) in(select 題號(hào) from zqda))</p><p><b> begin</b></p><p> raiserror('題號(hào)重復(fù)!',16,1)</p><p&
41、gt; rollback transaction</p><p><b> end</b></p><p> /*考生答案觸發(fā)器*/</p><p> create trigger trigger_ksda</p><p><b> on ksda</b></p><p
42、> for insert,update,delete</p><p><b> as</b></p><p> if not exists(select * from inserted where 題號(hào)>0 and 題號(hào)<(select count(題號(hào)) from tk))</p><p><b> beg
43、in</b></p><p> raiserror('題號(hào)不在范圍之內(nèi)!',16,1)</p><p> rollback transaction</p><p><b> end</b></p><p> if not exists(select * from inserted wh
44、ere 考生號(hào) in(select 考生號(hào) from ksksxx where 考試狀態(tài)='考試中'))</p><p><b> begin</b></p><p> raiserror('考生號(hào)有誤!',16,1)</p><p> rollback transaction</p><
45、;p><b> end</b></p><p> /*考生試卷觸發(fā)器*/</p><p> create trigger trigger_kssj</p><p><b> on kssj</b></p><p> for insert,update,delete</p>
46、<p><b> as</b></p><p> if exists(select * from inserted where 考生號(hào) in(select 考生號(hào) from kssj))</p><p><b> begin</b></p><p> raiserror('考生試卷已生成!
47、39;,16,1)</p><p> rollback transaction</p><p><b> end</b></p><p> /*考生成績表觸發(fā)器*/</p><p> create trigger trigger_kscj</p><p><b> on ksc
48、j</b></p><p> for insert,update,delete</p><p><b> as</b></p><p> if exists(select * from inserted where 準(zhǔn)考證號(hào) in(select 準(zhǔn)考證號(hào) from ksksxx where 考試狀態(tài)='結(jié)束')
49、)</p><p><b> begin</b></p><p> raiserror('準(zhǔn)考證號(hào)錯(cuò)誤!',16,1)</p><p> rollback transaction</p><p><b> end</b></p><p> (六)對(duì)在
50、線考試系統(tǒng)功能的描述,針對(duì)各功能,創(chuàng)建了不同的存儲(chǔ)過程來實(shí)現(xiàn),這樣不但可以反復(fù)調(diào)用這些程序,大大減少了客戶端的處理事務(wù),同時(shí)也充分發(fā)揮服務(wù)器的功能,盡量減少網(wǎng)絡(luò)上的堵塞。</p><p> 根據(jù)查詢功能的需要,我創(chuàng)建了相應(yīng)的視圖,基于視圖創(chuàng)建了相應(yīng)的查詢存儲(chǔ)過程,這些存儲(chǔ)過程還包括對(duì)各表內(nèi)容信息的添加、刪除和更新。并且在存儲(chǔ)過程中也相應(yīng)地加入了對(duì)數(shù)據(jù)完整性和一致性的約束條件。同時(shí)還創(chuàng)建了為指定考生或所有考生隨機(jī)
51、生成試卷和對(duì)指定考生或所有考生評(píng)卷功能的存儲(chǔ)過程。</p><p> (1)為所有考生隨機(jī)生成試卷的存儲(chǔ)過程的功能實(shí)現(xiàn)可簡略為:我先創(chuàng)建了一個(gè)游標(biāo),用來暫時(shí)保存在線考試的考生的考生號(hào),然后采用雙重while循環(huán),外層循環(huán)用來控制游標(biāo),一條一條地讀取考生號(hào),內(nèi)層循環(huán)用來為游標(biāo)所定位的考生隨機(jī)生成試題(我這里為了演示,只隨機(jī)生成了5到題)。當(dāng)游標(biāo)結(jié)束時(shí),也就為所有的考生生成了試卷。所謂隨機(jī)就是用rand()函數(shù)在所
52、有題號(hào)(例如1-100)之間隨機(jī)生成一個(gè)隨機(jī)數(shù),由這個(gè)隨機(jī)數(shù)唯一對(duì)應(yīng)題庫中的一道題目。具體代碼如下:</p><p> /*給單一考生生成試卷*/</p><p> create proc pro_kssj_sj</p><p> (@ksh char(5)=null)</p><p><b> as</b>&l
53、t;/p><p> if not exists(select * from ksksxx where 考生號(hào)=@ksh)</p><p><b> begin</b></p><p> print '非法考生號(hào)!'</p><p><b> return</b></p>
54、;<p><b> end</b></p><p> if (select count(*) from kssj where 考生號(hào)=@ksh)<5</p><p><b> begin</b></p><p> while (select count(*) from kssj where 考生
55、號(hào)=@ksh)<5</p><p><b> begin</b></p><p> insert into kssj values(1+cast(rand()*10 as int),@ksh)</p><p><b> end</b></p><p><b> return&
56、lt;/b></p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> print '題目已生成!'</p><p><b&g
57、t; end</b></p><p> exec pro_kssj_sj 'S0001' /*執(zhí)行示例*/</p><p> /*給所有考生生成試卷*/</p><p> create proc pro_all_kssj</p><p><b> as</b></p
58、><p> if not exists(select * from ksksxx)</p><p><b> begin</b></p><p> print '暫無考試考生!'</p><p><b> return</b></p><p><b&
59、gt; end</b></p><p><b> else</b></p><p><b> begin</b></p><p> declare cursor_all_kssj insensitive cursor</p><p> for select 考生號(hào) from k
60、sksxx</p><p> for read only</p><p> declare @ksno char(5)</p><p> open cursor_all_kssj</p><p> fetch next from cursor_all_kssj into @ksno</p><p> whil
61、e(@@fetch_status=0)</p><p><b> begin</b></p><p> while (select count(*) from kssj where 考生號(hào)=@ksno)<5</p><p><b> begin</b></p><p> insert
62、into kssj values(1+cast(rand()*10 as int),@ksno) </p><p><b> end</b></p><p> fetch next from cursor_all_kssj into @ksno</p><p><b> end</b></p><
63、p> close cursor_all_kssj --關(guān)閉游標(biāo)</p><p> deallocate cursor_all_kssj --釋放游標(biāo)</p><p> print '試卷已生成!'</p><p><b> end</b></p&g
64、t;<p> exec pro_all_kssj /*執(zhí)行示例*/</p><p> (2)為所有考生評(píng)卷功能的存儲(chǔ)過程具體實(shí)現(xiàn)過程如下:創(chuàng)建一游標(biāo)讀取考生答案表里的所有信息,同樣采用的是雙重while循環(huán)來實(shí)現(xiàn)此功能。外層循環(huán)用來控制游標(biāo),并定義兩個(gè)臨時(shí)變量@temp和@sum,然后用內(nèi)層循環(huán)來把考生答案和正確答案進(jìn)行比較,如果結(jié)果一致,用變量@temp從題庫表
65、中讀取此題的分值,用變量@sum來累加分值,由于每位考生只有5道題,故內(nèi)層循環(huán)只循環(huán)5次,最后變量@sum中數(shù)值即位此考生的最后成績,并通過存儲(chǔ)過程pro_insert_cj(向考生成績表中插入成績)把考生成績插入考生成績表中。如此循環(huán)下去,直到游標(biāo)結(jié)束,即位所有考生評(píng)卷過程結(jié)束??忌煽儽碇幸沧詣?dòng)加入了每位在線考試的考生的分?jǐn)?shù)。具體實(shí)現(xiàn)代碼如下:</p><p> /*給單一考生評(píng)分存儲(chǔ)過程*/</p&
66、gt;<p> create proc pro_pf</p><p> (@ksno char(5))</p><p><b> as</b></p><p> declare cursor_pf insensitive cursor</p><p> for select 題號(hào),答案 from
67、ksda where 考生號(hào)=@ksno</p><p> for read only</p><p> if not exists(select * from ksksxx where 考生號(hào)=@ksno and 考試狀態(tài)='結(jié)束')</p><p><b> begin</b></p><p>
68、 raiserror('考生考試還未結(jié)束!',16,1)</p><p> rollback transaction</p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b>&l
69、t;/p><p> print '考試已結(jié)束,繼續(xù)!'</p><p><b> end</b></p><p> if not exists(select * from kssj where 考生號(hào)=@ksno)</p><p><b> begin</b></p>
70、<p> print '沒有此考生的答案!'</p><p><b> return</b></p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b
71、></p><p> open cursor_pf</p><p> declare @name sysname,@result sysname,@sum int,@temp int,@temp1 int,@zkzh char(6)</p><p> fetch next from cursor_pf into @name,@result</p&g
72、t;<p> select @sum=0</p><p> select @temp=1</p><p> select @temp1=1</p><p> while(@temp1<=5)</p><p><b> begin</b></p><p> if ex
73、ists(select * from zqda where 題號(hào)=@name and 標(biāo)準(zhǔn)答案=@result)</p><p><b> begin</b></p><p> select @temp=(select 分值 from tk where 題號(hào)=@name)</p><p> select @sum=@sum+@temp&l
74、t;/p><p> select @temp1=@temp1+1</p><p> --print 'haha'</p><p> --print @sum</p><p> fetch next from cursor_pf into @name,@result</p><p><b>
75、 end</b></p><p><b> else</b></p><p><b> begin</b></p><p> select @temp1=@temp1+1</p><p> fetch next from cursor_pf into @name,@result
76、</p><p><b> end</b></p><p> --print '@temp1為:'+cast(@temp1 as char)</p><p> --print '@name為:'+cast(@name as char)</p><p><b> end&l
77、t;/b></p><p> close cursor_pf --關(guān)閉游標(biāo)</p><p> deallocate cursor_pf --釋放游標(biāo)</p><p> print @sum</p><p> select @zkzh=(select 準(zhǔn)考證號(hào) from
78、 ksksxx where 考生號(hào)=@ksno)</p><p> exec pro_insert_cj @zkzh,@sum</p><p> /*print '分?jǐn)?shù)為:'+cast(@sum as char)*/</p><p><b> end</b></p><p> exec pro_p
79、f 'S0005' /*執(zhí)行示例*/</p><p> /*給所有考生評(píng)分存儲(chǔ)過程*/</p><p> create proc pro_all_pf</p><p><b> as</b></p><p> declare cursor_pf insensi
80、tive cursor</p><p> for select 題號(hào),答案,考生號(hào) from ksda order by 考生號(hào)</p><p> for read only</p><p><b> begin</b></p><p> open cursor_pf</p><p>
81、declare @name sysname,@result sysname,@sum int,@temp int,@temp1 int,@zkzh char(6),@ksno char(5),@ksno1 char(5)</p><p> fetch next from cursor_pf into @name,@result,@ksno</p><p> while(@@fetch_
82、status=0)</p><p><b> begin</b></p><p> select @sum=0</p><p> select @temp=1</p><p> select @temp1=1</p><p> while(@temp1<=5)</p>
83、<p><b> begin</b></p><p> if not exists(select * from ksksxx where 考生號(hào)=@ksno and 考試狀態(tài)='結(jié)束')</p><p><b> begin</b></p><p> print '考生考試還未結(jié)
84、束!'</p><p><b> continue</b></p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> pr
85、int '考試已結(jié)束,繼續(xù)!'</p><p><b> end</b></p><p> if exists(select * from zqda where 題號(hào)=@name and 標(biāo)準(zhǔn)答案=@result)</p><p><b> begin</b></p><p>
86、 select @temp=(select 分值 from tk where 題號(hào)=@name)</p><p> select @sum=@sum+@temp</p><p> select @temp1=@temp1+1</p><p> --print 'haha'</p><p> --print @sum&
87、lt;/p><p> fetch next from cursor_pf into @name,@result,@ksno</p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p>
88、<p> select @temp1=@temp1+1</p><p> fetch next from cursor_pf into @name,@result,@ksno</p><p><b> end</b></p><p> if @temp1=5</p><p><b> b
89、egin</b></p><p> select @ksno1=@ksno</p><p><b> end</b></p><p><b> end</b></p><p> --print @sum</p><p> select @zkzh=(se
90、lect 準(zhǔn)考證號(hào) from ksksxx where 考生號(hào)=@ksno1)</p><p> exec pro_insert_cj @zkzh,@sum</p><p><b> end</b></p><p> close cursor_pf --關(guān)閉游標(biāo)</p><p>
91、 deallocate cursor_pf --釋放游標(biāo)</p><p> /*print '分?jǐn)?shù)為:'+cast(@sum as char)*/</p><p> print '--評(píng)分成功!'</p><p><b> end</b></p><p>
92、 exec pro_all_pf /*執(zhí)行示例*/</p><p><b> 系統(tǒng)的實(shí)現(xiàn):</b></p><p> 設(shè)置數(shù)據(jù)庫,選擇“開始設(shè)置|控制面板,菜單,打開”管理工具文件夾,雙擊“數(shù)據(jù)源”項(xiàng)目,在彈出的對(duì)話框中選擇“文件DSN”標(biāo)簽頁,然后單擊“添加”按鈕,選擇“SQL SERVER”項(xiàng)目。單擊“完成”
93、按鈕,在名稱文本框中填寫“Hotel_MIS”,服務(wù)器中選擇“(local)”, 單擊“下一步”按鈕,選擇登錄ID,這里使用認(rèn)的選擇,也可發(fā)自己設(shè)置其他的登錄方式。單擊“下一步”按鈕,出現(xiàn)選擇認(rèn)數(shù)據(jù)庫對(duì)話框,選中“更改認(rèn)數(shù)據(jù)庫為:”選項(xiàng),然后選擇“student”,單擊下一步,單擊完成按鈕,完成數(shù)據(jù)源設(shè)置。單擊“測(cè)試數(shù)據(jù)源”進(jìn)行數(shù)據(jù)源測(cè)試,出現(xiàn)測(cè)試成功,單擊“確定”,退出數(shù)據(jù)源設(shè)置。</p><p> 在系統(tǒng)文
94、件中選擇SQL文件,復(fù)制此文件,然后按開始菜單選擇Microsoft SQL Server2000/查詢分析器/把此文件復(fù)制到此文件中,單擊保存就可以生成數(shù)據(jù)庫了。然后運(yùn)行這個(gè)程序會(huì)出現(xiàn)登陸窗口。輸入用戶名和密碼后,就可以進(jìn)入系統(tǒng)了。 </p><p><b> 結(jié)束語</b></p><p> 經(jīng)過了自己動(dòng)手進(jìn)行課程設(shè)計(jì),對(duì)本學(xué)科的知識(shí) 有了更深的了解 這4天的
95、下午,每天都在上網(wǎng)查資料,找到合適的以后經(jīng)過自己的理解和修改完成了《遼寧工程技術(shù)大學(xué)學(xué)籍管理系統(tǒng)課程設(shè)計(jì)》對(duì)我來說也是一個(gè)很大的挑戰(zhàn),是對(duì)自己的一次鍛煉 在課程設(shè)計(jì)的 過程中 遇到了很多以前沒遇到過的問題 在解決問題中也得到了進(jìn)步,我相信這次課程設(shè)計(jì)對(duì)我以后對(duì)本專業(yè)的學(xué)習(xí)會(huì)起到很大的作用的,也很感謝老師在這次設(shè)計(jì)中對(duì)我的幫助,這次課程設(shè)計(jì)使我明白了很多知識(shí) ,受益匪淺。</p><p> 最后,在這次課程設(shè)計(jì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設(shè)計(jì)-在線考試系統(tǒng)
- 在線考試系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--網(wǎng)上考試系統(tǒng)
- 石大遠(yuǎn)程在線考試——數(shù)據(jù)庫課程設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--bbs系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--在線網(wǎng)上訂餐系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)---數(shù)據(jù)庫
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告--ktv在線點(diǎn)歌系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--快餐訂餐系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--數(shù)據(jù)庫系統(tǒng)原理
- 數(shù)據(jù)庫課程設(shè)計(jì)--數(shù)據(jù)庫設(shè)計(jì)—公司管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)快餐訂餐系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--在線圖書銷售管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--數(shù)據(jù)庫原理及應(yīng)用課程設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)---機(jī)房管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--購物系統(tǒng)
- 在線論壇系統(tǒng)數(shù)據(jù)庫原理課程設(shè)計(jì)c#
- 數(shù)據(jù)庫課程設(shè)計(jì)--工資管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--簡單的學(xué)生考試系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論