




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-. z.數(shù)據(jù)庫(kù)原理與應(yīng)用課程設(shè)計(jì)說(shuō) 明 書題 目: 運(yùn)動(dòng)會(huì)成績(jī)管理系統(tǒng) 學(xué) 院: 班 級(jí): 完成人:組號(hào):* *:* 成績(jī):* *:* 成績(jī):指導(dǎo)教師:山 東 科 技 大 學(xué)2014年6月27日課 程 設(shè) 計(jì) 任 務(wù) 書一、課程設(shè)計(jì)題目:運(yùn)動(dòng)會(huì)成績(jī)管理系統(tǒng)二、課程設(shè)計(jì)應(yīng)解決的主要問(wèn)題:(按實(shí)現(xiàn)的系統(tǒng)功能)(1)運(yùn)動(dòng)項(xiàng)目、運(yùn)動(dòng)員、運(yùn)動(dòng)成績(jī)以及班級(jí)名次的記錄存儲(chǔ)(2)添加修改和刪除項(xiàng)目表、運(yùn)動(dòng)員表和成績(jī)表信息 (3)自動(dòng)生成班級(jí)名次表(觸發(fā)器)(4)運(yùn)動(dòng)員表有改動(dòng)時(shí),自動(dòng)更新班級(jí)名次表(觸發(fā)器)(5)成績(jī)表有改動(dòng)時(shí)自動(dòng)對(duì)成績(jī)表中記錄按項(xiàng)目排名次(觸發(fā)器) (6)成績(jī)表自動(dòng)排名自動(dòng)更新班級(jí)名次表中
2、班級(jí)總分(存儲(chǔ)過(guò)程)(7)更新班級(jí)總分之后自動(dòng)對(duì)班級(jí)排名(學(xué)院名次,學(xué)校名次)(存儲(chǔ)過(guò)程)(8)對(duì)成績(jī)表進(jìn)行初次排名功能(9)通過(guò)項(xiàng)目號(hào)獲得相應(yīng)項(xiàng)目的排名表(表值函數(shù))(10)通過(guò)*或或運(yùn)動(dòng)號(hào)獲得*學(xué)生運(yùn)動(dòng)成績(jī)表(表值函數(shù)) (11)通過(guò)班級(jí)名稱獲得*班所有運(yùn)動(dòng)員運(yùn)動(dòng)成績(jī)表(表值函數(shù)) (12)通過(guò)學(xué)院名稱獲得學(xué)院所有運(yùn)動(dòng)員運(yùn)動(dòng)成績(jī)表(表值函數(shù)) (13)獲得全校所有運(yùn)動(dòng)員的運(yùn)動(dòng)成績(jī)表(表值函數(shù)) (14)獲得全校所有班級(jí)總分?jǐn)?shù)以及在學(xué)院排名和早全校排名(表值函數(shù))任務(wù)發(fā)出日期:2014-4-25 課程設(shè)計(jì)完成日期:2014-6-27 小組分工說(shuō)明小組編號(hào)題 目:運(yùn)動(dòng)會(huì)成績(jī)管理系統(tǒng)小組分工情況
3、:*:參與數(shù)據(jù)庫(kù)的討論和設(shè)計(jì);搜集整理數(shù)據(jù)、錄入數(shù)據(jù);設(shè)計(jì)了具體的邏輯結(jié)構(gòu),繪制E-R圖;創(chuàng)建數(shù)據(jù)庫(kù)以及項(xiàng)目表、運(yùn)動(dòng)員表、成績(jī)表和班級(jí)名次表;實(shí)現(xiàn)了表之間的關(guān)聯(lián),創(chuàng)建必要的默認(rèn)值、規(guī)則;創(chuàng)建了相應(yīng)的索引;創(chuàng)建了班級(jí)名次表的視圖。*:參與數(shù)據(jù)庫(kù)的討論和設(shè)計(jì);創(chuàng)建*項(xiàng)目名次表值函數(shù);創(chuàng)建觸發(fā)器實(shí)現(xiàn)成績(jī)表的按項(xiàng)目自動(dòng)排名功能;創(chuàng)建存儲(chǔ)過(guò)程實(shí)現(xiàn)班級(jí)名次表的班級(jí)總成績(jī)的更新功能;創(chuàng)建存儲(chǔ)過(guò)程實(shí)現(xiàn)班級(jí)名次表的排名功能;創(chuàng)建觸發(fā)器實(shí)現(xiàn)運(yùn)動(dòng)員表改動(dòng)時(shí)自動(dòng)更新班級(jí)名次表的功能;創(chuàng)建多個(gè)表值函數(shù)用于實(shí)現(xiàn)不同的查詢功能:項(xiàng)目查詢函數(shù),個(gè)人成績(jī)查詢函數(shù),班級(jí)成績(jī)查詢函數(shù),學(xué)院成績(jī)查詢函數(shù),全校成績(jī)查詢函數(shù),全校班級(jí)名
4、次查詢函數(shù)。整個(gè)數(shù)據(jù)庫(kù)部分的設(shè)計(jì)共創(chuàng)建了三個(gè)觸發(fā)器,四個(gè)存儲(chǔ)過(guò)程以及七個(gè)表值函數(shù)。另外還設(shè)計(jì)了本運(yùn)動(dòng)會(huì)成績(jī)管理系統(tǒng)的界面部分,以及文檔編輯工作。組長(zhǎng)簽字: 年 月 日指導(dǎo)教師對(duì)課程設(shè)計(jì)的評(píng)價(jià)成績(jī):指導(dǎo)教師簽字: 年 月 日 目 錄TOC o 1-2 h u HYPERLINK l _Toc6988 1 需求分析 PAGEREF _Toc6988 1 HYPERLINK l _Toc32232 11 數(shù)據(jù)事實(shí) PAGEREF _Toc32232 1 HYPERLINK l _Toc31341 12 主要用戶視圖 PAGEREF _Toc31341 2 HYPERLINK l _Toc28677
5、2 概念結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc28677 2 HYPERLINK l _Toc1335 21 局部ER圖 PAGEREF _Toc1335 3 HYPERLINK l _Toc32096 22 全局ER圖 PAGEREF _Toc32096 3 HYPERLINK l _Toc24727 3 邏輯結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc24727 4 HYPERLINK l _Toc151214 物理結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc15121 4 HYPERLINK l _Toc10676 5 主要功能詳細(xì)設(shè)計(jì) PAGEREF _Toc10676 5 HYPERLINK l _Toc1
6、096 51 創(chuàng)建數(shù)據(jù)庫(kù) PAGEREF _Toc1096 5 HYPERLINK l _Toc24321 52 創(chuàng)建數(shù)據(jù)表 PAGEREF _Toc24321 5 HYPERLINK l _Toc13738 53 添加數(shù)據(jù)(僅以一條為例) PAGEREF _Toc13738 6 HYPERLINK l _Toc19104 54 數(shù)據(jù)庫(kù)完整性 PAGEREF _Toc19104 7 HYPERLINK l _Toc6296 55 成績(jī)表按成績(jī)自動(dòng)排名(觸發(fā)器,函數(shù),存儲(chǔ)過(guò)程) PAGEREF _Toc6296 7 HYPERLINK l _Toc16661 56 更新 clscore 表(觸發(fā)
7、器) PAGEREF _Toc16661 12 HYPERLINK l _Toc9634 57 成績(jī)表按照項(xiàng)目初始名次 PAGEREF _Toc9634 13 HYPERLINK l _Toc24157 58 查詢*個(gè)項(xiàng)目的全部成績(jī)和排名(表值函數(shù)) PAGEREF _Toc24157 14 HYPERLINK l _Toc16316 59 查詢*個(gè)班的運(yùn)動(dòng)員成績(jī)(表值函數(shù)) PAGEREF _Toc16316 14 HYPERLINK l _Toc31964 510 查詢*個(gè)學(xué)生的所有成績(jī)(表值函數(shù)) PAGEREF _Toc31964 15 HYPERLINK l _Toc21999 51
8、1 查詢*個(gè)學(xué)生的*個(gè)項(xiàng)目成績(jī)(表值函數(shù)) PAGEREF _Toc21999 16 HYPERLINK l _Toc15569 512 查詢*個(gè)學(xué)院的運(yùn)動(dòng)員成績(jī)(表值函數(shù)) PAGEREF _Toc15569 16 HYPERLINK l _Toc1933 513 查詢?nèi)_\(yùn)動(dòng)員成績(jī)(表值函數(shù)) PAGEREF _Toc1933 17 HYPERLINK l _Toc26655 514 通過(guò)*和運(yùn)動(dòng)號(hào)查詢成績(jī)和名次(存儲(chǔ)過(guò)程) PAGEREF _Toc26655 17 HYPERLINK l _Toc1862 515 創(chuàng)建班級(jí)成績(jī)和名次視圖 PAGEREF _Toc1862 18 HYPER
9、LINK l _Toc7601 516 創(chuàng)建索引 PAGEREF _Toc7601 18 HYPERLINK l _Toc7041 6 界面設(shè)計(jì)主要過(guò)程 PAGEREF _Toc7041 18 HYPERLINK l _Toc18636 6.1 界面總體設(shè)計(jì) PAGEREF _Toc18636 19 HYPERLINK l _Toc20203 6.2 登錄界面設(shè)計(jì) PAGEREF _Toc20203 19 HYPERLINK l _Toc19455 6.3 成績(jī)管理員界面設(shè)計(jì) PAGEREF _Toc19455 20 HYPERLINK l _Toc14878 6.4 運(yùn)動(dòng)員查詢界面設(shè)計(jì) PA
10、GEREF _Toc14878 26-. z.1 需求分析本系統(tǒng)是用于管理運(yùn)動(dòng)會(huì)成績(jī)的系統(tǒng),要實(shí)現(xiàn)的功能就是運(yùn)動(dòng)會(huì)成績(jī)的增加,修改和刪除,同時(shí)還應(yīng)該具有運(yùn)動(dòng)員和運(yùn)動(dòng)項(xiàng)目的增加修改和刪除功能。本系統(tǒng)面向用戶有兩種:成績(jī)管理員、學(xué)生運(yùn)動(dòng)員。管理員功能介紹管理員正確登陸后,可以增加、刪除、修改、查詢運(yùn)動(dòng)員信息,比賽項(xiàng)目以及比賽成績(jī)。學(xué)生運(yùn)動(dòng)員主要功能介紹學(xué)生登錄后,可以查詢(比賽成績(jī)、運(yùn)動(dòng)動(dòng)員信息、運(yùn)動(dòng)項(xiàng)目)。11 數(shù)據(jù)事實(shí)數(shù)據(jù)實(shí)例12 主要用戶視圖用戶需求成績(jī)管理員登錄(正確輸入用戶名及密碼登錄)增加、刪除、修改、查詢運(yùn)動(dòng)員信息,比賽項(xiàng)目以及比賽成績(jī)學(xué)生登錄(默認(rèn)用戶名)查詢(比賽成績(jī)、運(yùn)動(dòng)動(dòng)員信
11、息、運(yùn)動(dòng)項(xiàng)目)2 概念結(jié)構(gòu)設(shè)計(jì)學(xué)生登錄管理員登入學(xué)生登錄查詢查詢查詢查詢查詢與修改查詢與修改查詢與修改基本信息查詢成績(jī)查詢基本信息查詢成績(jī)查詢基本信息查詢成績(jī)查詢信息錄入比賽成績(jī)錄入添加比賽項(xiàng)目添加學(xué)生信息成績(jī)表項(xiàng)目表運(yùn)動(dòng)員表全校名次查詢?nèi)3煽?jī)查詢學(xué)院成績(jī)查詢班級(jí)成績(jī)查詢項(xiàng)目成績(jī)查詢個(gè)人成績(jī)查詢圖2.1系統(tǒng)邊界21 局部ER圖運(yùn)動(dòng)號(hào)性別項(xiàng)目二*學(xué)院學(xué)生表*項(xiàng)目一班級(jí)項(xiàng)目表項(xiàng)目號(hào)項(xiàng)目名稱圖1 項(xiàng)目表圖2學(xué)生表成績(jī)表*項(xiàng)目號(hào)成績(jī)名次班級(jí)名次表班級(jí)名班級(jí)得分在學(xué)院排名在校排名圖3 成績(jī)表圖4班級(jí)名次表mn22 全局ER圖學(xué)生表項(xiàng)目表成績(jī)表班級(jí)名次表選擇排名3 邏輯結(jié)構(gòu)設(shè)計(jì)關(guān)系模式如下:運(yùn)動(dòng)員(*、
12、性別、學(xué)院、班級(jí)、運(yùn)動(dòng)號(hào)、項(xiàng)目一、項(xiàng)目二)運(yùn)動(dòng)項(xiàng)目(項(xiàng)目號(hào)、項(xiàng)目名稱)成績(jī)(*、項(xiàng)目號(hào)、成績(jī)、名次)班級(jí)排名(學(xué)院、班級(jí)、總成績(jī)、在學(xué)院名次、在校名次)4 物理結(jié)構(gòu)設(shè)計(jì) 學(xué)生表列名數(shù)據(jù)類型允許空說(shuō)明SNO Int否學(xué)生編號(hào)SNameVarchar(50)否SDeptVarchar(50)是系別SClassNOVarchar(50)是班級(jí)SportsNO Int否運(yùn)動(dòng)編號(hào)項(xiàng)目表列名數(shù)據(jù)類型允許空說(shuō)明SportsNOInt否項(xiàng)目編號(hào)SportsNameVarchar(50)否項(xiàng)目名稱項(xiàng)目成績(jī)表列名數(shù)據(jù)類型允許空說(shuō)明SNOInt否學(xué)生編號(hào)SportsNOInt否項(xiàng)目編號(hào)ScoreVarchar(50
13、)否成績(jī)Srankint否名次班級(jí)名次表列名數(shù)據(jù)類型允許空說(shuō)明sdeptnameVarchar(20)是學(xué)院sclassnameVarchar(20)否班級(jí)sclscoreint是總分sclrankindeptint是 學(xué)院名次sclrankinschint是 學(xué)校名次5 主要功能詳細(xì)設(shè)計(jì)51 創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASEsportsON (NAME=運(yùn)動(dòng)會(huì)數(shù)據(jù),FILENAME=D:SQLsports.MDF,SIZE= 10MB,MA*SIZE= 100MB)LOGON (NAME=運(yùn)動(dòng)會(huì)數(shù)據(jù)日志,FILENAME=D:SQLsports_Log.LDF,SIZE= 5MB,MA
14、*SIZE= 25MB)52 創(chuàng)建數(shù)據(jù)表1、 創(chuàng)建項(xiàng)目表usesportscreatetablesp(sportnointNOTNULLPRIMARYKEY,sportnamevarchar(30)notnull)2、 創(chuàng)建學(xué)生表createtablestu(snointNOTNULLPRIMARYKEY,snamevarchar(10)notnull,sdeptvarchar(20),sclassnamevarchar(20),sse*varchar(2),spnointnotnullunique,sportno1intforeignkeyreferencessp(sportno)notnu
15、ll,sportno2intforeignkeyreferencessp(sportno)3、 創(chuàng)建成績(jī)表全體運(yùn)動(dòng)員的各個(gè)項(xiàng)目的成績(jī)表createtablesc(snointFOREIGNKEYreferencesstu(sno),sportnointFOREIGNKEYreferencessp(sportno),scorevarchar(10),srankintprimarykey (sno,sportno)4、 創(chuàng)建名次表記錄全校所有班級(jí)的得分以及在學(xué)院的名次和在全校的名次createtableclscore(sdeptnamevarchar(20),-學(xué)院名sclassnamevarch
16、ar(20)primarykey,-班級(jí)名稱sclscoreint,-班級(jí)成績(jī)sclrankindeptint,-班級(jí)在學(xué)院中的名次sclrankinschint-班級(jí)在學(xué)校中的名次)53 添加數(shù)據(jù)(僅以一條為例)1、 添加運(yùn)動(dòng)項(xiàng)目表記錄usesportsinsertintospvalues(1,男子一百),(2,男子二百)2、 添加學(xué)生表記錄usesportsinsertintostuvalues(10103,浩,數(shù)學(xué),數(shù)學(xué)一班,男,10001,1,3),(10105,錢浩,數(shù)學(xué),數(shù)學(xué)一班,男,10002,2,4)3、 添加比賽成績(jī)表記錄usesportsinsertintosc(sno,s
17、portno,score)values(10103,1,12.2)54 數(shù)據(jù)庫(kù)完整性1、 綁定列上默認(rèn)值usesportsgocreatedefaultsse*as男g(shù)oe*ecsp_bindefaultsse*,stu.sse*go2、 綁定規(guī)則createrulerule_sportnoasc1between 1 and 12gocreaterulerule_snoasc1between 10101 and 40340goe*ecsp_bindrulerule_sportno,sp.sportnogoe*ecsp_bindrulerule_sno,stu.snogo55 成績(jī)表按成績(jī)自動(dòng)排
18、名(觸發(fā)器,函數(shù),存儲(chǔ)過(guò)程)功能簡(jiǎn)介:當(dāng)sc 表有成績(jī)插入刪除或者修改時(shí)就觸發(fā),實(shí)現(xiàn)對(duì)sc表中單項(xiàng)目名次nrank屬性的及時(shí)更新,更新完之后,調(diào)用存儲(chǔ)過(guò)程,實(shí)現(xiàn)對(duì)clscore表中班級(jí)成績(jī)和班級(jí)排名的更新。551 更新項(xiàng)目名次觸發(fā)器-觸發(fā)器及時(shí)更新 sc 表-當(dāng)有成績(jī)插入刪除或者修改sc 表時(shí)就觸發(fā)-實(shí)現(xiàn)對(duì)sc表中單項(xiàng)目名次nrank屬性的及時(shí)更新usesportsgo插入更新與刪除操作sc 表ife*ists(select*fromsysobjectswherename=trSCandtype=TR)droptriggertrSCgocreatetriggertrSConscafterins
19、ert,update,deleteasdeclaresportno0int,sno0int,sportno1int,sportno2intselectsno0=sno,sportno0=sportnofrominsertedselectsportno1=sportno1,sportno2=sportno2fromstuwheresno=sno0ifsportno0notin(sportno1,sportno2)-if sportno0!=sportno1 and sportno0!=sportno2beginprint操作有誤,此記錄與運(yùn)動(dòng)員表不一致,請(qǐng)先修改運(yùn)動(dòng)員表!rollbackende
20、lsebegin-更新名次-聲明變量declaresnoint,sportnoint,rankintdeclareiu_scSportno_cursorCURSORforselectsportnofromspopeniu_scSportno_cursorfetchne*tfromiu_scSportno_cursorintosportnowhilefetch_status= 0beginsetrank= 1-聲明游標(biāo)declareiu_sc_cursorCURSORforselectsnofromscRankFun(sportno)-打開游標(biāo)openiu_sc_cursor-提取第一行fetc
21、hne*tfromiu_sc_cursorintosnowhileFETCH_STATUS= 0beginupdatescsetsrank=rankwheresno=snoandsportno=sportnosetrank=rank+ 1fetchne*tfromiu_sc_cursorintosnoendcloseiu_sc_cursordeallocateiu_sc_cursorfetchne*tfromiu_scSportno_cursorintosportnoendcloseiu_scSportno_cursordeallocateiu_scSportno_cursorend執(zhí)行存儲(chǔ)過(guò)
22、程updateClscore,更新clscore 表e*ecupdateClscoregoGo測(cè)試代碼及截圖如下:552 計(jì)算班級(jí)總成績(jī)存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程:當(dāng)sc 表名次有變動(dòng)時(shí),及時(shí)更新clscore表中的班級(jí)總成績(jī)當(dāng)sc 表有更新時(shí),及時(shí)更新clscore表中每個(gè)班的總分?jǐn)?shù)usesportsgoife*ists(select*fromsysobjectswherename=updateClscoreandtype=P)dropprocedureupdateClscoregocreateprocedureupdateClscoreasbegindeclareclassnamevarchar(2
23、0),srankint,srankTotalintdeclarecursor_classcursorforselectsclassnamefromstugroupbysclassnameopencursor_classfetchne*tfromcursor_classintoclassnamewhileFETCH_STATUS= 0beginsetsrankTotal= 0declarecursor_srankcursorforselectsrankfromscwheresnoin(selectsnofromstuwheresclassname=classname)opencursor_sra
24、nkfetchne*tfromcursor_srankintosrankwhileFETCH_STATUS= 0beginifsrank 8setsrankTotal=srankTotal+(8-srank)elsesetsrankTotal=srankTotal+0fetchne*tfromcursor_srankintosrankendupdateclscoresetsclscore=srankTotalwheresclassname=classnameclosecursor_srankdeallocatecursor_srankfetchne*tfromcursor_classintoc
25、lassnameendclosecursor_classdeallocatecursor_class執(zhí)行存儲(chǔ)過(guò)程,更新clscore表,進(jìn)行班級(jí)排名e*ecupdateClscore_rankendGo測(cè)試代碼及截圖如下:553 班級(jí)排名存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程:更新clscore表,對(duì)clscore表中的班級(jí)總成績(jī)分別按學(xué)院和學(xué)校排名次存儲(chǔ)過(guò)程,更新clscore表,進(jìn)行班級(jí)排名usesportsife*ists(select*fromsysobjectswherename=updateClscore_rankandtype=p)dropprocupdateClscore_rankgocreatep
26、rocupdateClscore_rankasbegindeclaredeptvarchar(20),classvarchar(20),rankint在學(xué)院排名次declarecursor_deptcursorforselectsdeptnamefromclscoregroupbysdeptnameopencursor_deptfetchne*tfromcursor_deptintodeptwhileFETCH_STATUS= 0beginsetrank= 1declarecursor_classcursorforselectsclassnamefromclscorewheresdeptnam
27、e=deptorderbysclscoredescopencursor_classfetchne*tfromcursor_classintoclasswhileFETCH_STATUS= 0beginupdateclscoresetsclrankindept=rankwheresclassname=classsetrank=rank+ 1fetchne*tfromcursor_classintoclassendclosecursor_classdeallocatecursor_classfetchne*tfromcursor_deptintodeptendclosecursor_deptdea
28、llocatecursor_dept在學(xué)校排名次declarecursor_classcursorforselectsclassnamefromclscoreorderbysclscoreopencursor_classfetchne*tfromcursor_classintoclasssetrank= 1whileFETCH_STATUS= 0beginupdateclscoresetsclrankinsch=rankwheresclassname=classsetrank=rank+ 1fetchne*tfromcursor_classintoclassendclosecursor_cla
29、ssdeallocatecursor_classendGo554 項(xiàng)目排名表值函數(shù)*項(xiàng)目排名函數(shù) 表值函數(shù)-輸入:*個(gè)項(xiàng)目的編號(hào)-輸出:此項(xiàng)目的排序后的運(yùn)動(dòng)員*順序表usesportsgoife*ists(select*fromsysobjectswherename=scRankFunandtype=TF)dropfunctionscRankFungocreatefunctionscRankFun(sportnoint)returnssttable(snoint,sportnoint)asbeginifsportnoin(3,4,8,10)begininsertstselectsno,spor
30、tnofromscwheresportno=sportnoorderbyscoredescendelsebegininsertstselectsno,sportnofromscwheresportno=sportnoorderbyscoreendreturnendGo56 更新 clscore 表(觸發(fā)器)觸發(fā)條件:當(dāng)運(yùn)動(dòng)員表stu 有變動(dòng)時(shí),觸發(fā)功能:根據(jù)運(yùn)動(dòng)員表stu中的信息,更新 clscore 表中的學(xué)院名和班級(jí)名usesportsgoife*ists(select*fromsysobjectswherename=trClscoreSTUandtype=TR)droptriggertr
31、ClscoreSTUgo當(dāng)stu 表有變動(dòng)時(shí),及時(shí)更新createtriggertrClscoreSTUonstuafterinsert,update,deleteasbegindeclaresdeptnamevarchar(20),sclassnamevarchar(20)declarestuSclassname_cursorcursorforselectsdept,sclassnamefromstuopenstuSclassname_cursorfetchne*tfromstuSclassname_cursorintosdeptname,sclassnamewhilefetch_statu
32、s= 0beginifnote*ists(select*fromclscorewheresclassname=sclassname)insertintoclscore(sdeptname,sclassname)values(sdeptname,sclassname)fetchne*tfromstuSclassname_cursorintosdeptname,sclassnameendclosestuSclassname_cursordeallocatestuSclassname_cursorendgogo57 成績(jī)表按照項(xiàng)目初始名次usesports-聲明變量godeclaresnoint,s
33、portnoint,countspintsetsportno= 1selectcountsp=COUNT(*)fromspwhilesportno=countsp-所有項(xiàng)目均要排名begindeclarerankintsetrank= 1-聲明游標(biāo)declaresc_cursorCURSORforselectsnofromscRankFun(sportno)-打開游標(biāo)opensc_cursor-提取第一行fetchne*tfromsc_cursorintosnowhileFETCH_STATUS= 0beginusesportsupdatescsetsrank=rankwheresno=sno
34、setrank=rank+ 1fetchne*tfromsc_cursorintosnoendclosesc_cursordeallocatesc_cursorsetsportno=sportno+ 1endGo58 查詢*個(gè)項(xiàng)目的全部成績(jī)和排名(表值函數(shù))輸入:項(xiàng)目號(hào)輸出:此項(xiàng)目的所有運(yùn)動(dòng)員的*,成績(jī),名次,班級(jí),學(xué)院 表值函數(shù)實(shí)現(xiàn)下面的查詢功能-查詢*個(gè)項(xiàng)目的全部成績(jī)和排名usesportsife*ists(select*fromsysobjectswherename=spFunandtype=TF)dropfunctionspFungocreatefunctionspFun(sportn
35、oint)returnssttable(*int,varchar(20),成績(jī)varchar(20),名次int,班級(jí)varchar(20),學(xué)院varchar(20)asbegininsertintostselectstu.sno,stu.sname,sc.score,sc.srank,stu.sclassname,stu.sdeptfromsturightjoinscon(stu.sno=sc.sno)wheresc.sportno=sportnoorderbysrankreturnendgo測(cè)試程序select*fromspFun(1)59 查詢*個(gè)班的運(yùn)動(dòng)員成績(jī)(表值函數(shù))輸入:班級(jí)名
36、輸出:此班級(jí)的所有運(yùn)動(dòng)員的*,項(xiàng)目,成績(jī),名次 -查詢*個(gè)班的運(yùn)動(dòng)員成績(jī)usesportsife*ists(select*fromsysobjectswherename=classFunandtype=TF)dropfunctionclassFungocreatefunctionclassFun(sclassnamevarchar(20)returnssttable(*int,varchar(20),項(xiàng)目varchar(20),成績(jī)varchar(20),名次int)asbegininsertintostselectstu.sno,stu.sname,a.sportname,a.score,a
37、.srankfromsturightjoin(selectsno,sportname,score,srankfromscleftjoinspon(sc.sportno=sp.sportno)aon(stu.sno=a.sno)wherestu.sclassname=sclassnamereturnendgo測(cè)試程序select*fromclassFun(數(shù)學(xué)二班)510 查詢*個(gè)學(xué)生的所有成績(jī)(表值函數(shù))輸入:類型和*或運(yùn)動(dòng)號(hào)或輸出:此運(yùn)動(dòng)員的*,項(xiàng)目,成績(jī),名次 -查詢*個(gè)學(xué)生的所有成績(jī)usesportsife*ists(select*fromsysobjectswherename=stuF
38、unandtype=TF)dropfunctionstuFungocreatefunctionstuFun(kindint,namevarchar(20)returnssttable(*int,varchar(20),項(xiàng)目varchar(20),成績(jī)varchar(20),名次int)asbegindeclaresnointifkind=1 setsno=cast(nameasint)elseifkind=2 selectsno=snofromstuwheresname=nameelseselectsno=snofromstuwherespno=nameinsertintostselecta.
39、sno,stu.sname,a.sportname,a.score,a.srankfrom (selectsno,score,srank,sportnamefromscleftjoinspon(sc.sportno=sp.sportno)arightjoinstuon(a.sno=stu.sno)wherestu.sno=snoreturnendgo測(cè)試程序select*fromstuFun(1,10103)511 查詢*個(gè)學(xué)生的*個(gè)項(xiàng)目成績(jī)(表值函數(shù))輸入:*,運(yùn)動(dòng)號(hào)輸出:此運(yùn)動(dòng)員的*,項(xiàng)目,成績(jī),名次 -查詢*個(gè)學(xué)生的*個(gè)項(xiàng)目成績(jī)usesportsife*ists(select*froms
40、ysobjectswherename=stuspFunandtype=TF)dropfunctionstuspFungocreatefunctionstuspFun(snoint,sportnoint)returnssttable(*int,varchar(20),項(xiàng)目varchar(20),成績(jī)varchar(20),名次int)asbegininsertintostselecta.sno,stu.sname,a.sportname,a.score,a.srankfrom (selectsno,score,srank,sportname,sc.sportnofromscleftjoinspo
41、n(sc.sportno=sp.sportno)arightjoinstuon(a.sno=stu.sno)wherestu.sno=snoanda.sportno=sportnoreturnendgo測(cè)試程序select*fromstuspFun(10103,1)512 查詢*個(gè)學(xué)院的運(yùn)動(dòng)員成績(jī)(表值函數(shù))輸入:學(xué)院名輸出:此學(xué)院所有運(yùn)動(dòng)員的*,項(xiàng)目,成績(jī),名次,班級(jí)-查詢*個(gè)學(xué)院的運(yùn)動(dòng)員成績(jī)usesportsife*ists(select*fromsysobjectswherename=sdeptFunandtype=TF)dropfunctionsdeptFungocreatefunct
42、ionsdeptFun(sdeptnamevarchar(20)returnssttable(*int,varchar(20),項(xiàng)目varchar(20),成績(jī)varchar(20),名次int,班級(jí)varchar(20)asbegininsertintostselecta.sno,stu.sname,a.sportname,a.score,a.srank,stu.sclassnamefromsturightjoin(selectsno,sportname,score,srankfromscleftjoinspon(sc.sportno=sp.sportno)aon(stu.sno=a.sno
43、)wherestu.sdept=sdeptnameorderbya.snoreturnendgo測(cè)試程序select*fromsdeptFun(計(jì)算機(jī))513 查詢?nèi)_\(yùn)動(dòng)員成績(jī)(表值函數(shù))輸入:無(wú)輸入輸出:學(xué)校全體運(yùn)動(dòng)員的*,項(xiàng)目,成績(jī),名次,班級(jí),學(xué)院 -查詢?nèi)_\(yùn)動(dòng)員成績(jī)usesportsife*ists(select*fromsysobjectswherename=schFunandtype=TF)dropfunctionschFungocreatefunctionschFun()returnssttable(*int,varchar(20),項(xiàng)目varchar(20),成績(jī)varch
44、ar(20),名次int,班級(jí)varchar(20),學(xué)院varchar(20)asbegininsertintostselecta.sno,stu.sname,a.sportname,a.score,a.srank,stu.sclassname,stu.sdeptfromsturightjoin(selectsno,sportname,score,srankfromscleftjoinspon(sc.sportno=sp.sportno)aon(stu.sno=a.sno)orderbya.snoreturnendgo測(cè)試程序select*fromschFun()514 通過(guò)*和運(yùn)動(dòng)號(hào)查詢成
45、績(jī)和名次(存儲(chǔ)過(guò)程)輸入:*,運(yùn)動(dòng)號(hào)輸出:,成績(jī),名次usesportsgoife*ists(select*fromsysobjectswherename=stuScoreandtype=P)dropprocedurestuScoregocreateprocedurestuScore(snoint,sportnoint,snamevarchar(10)output,stuScorevarchar(10)output,stuRankintoutput)asselectsname=snamefromstuwheresno=snoselectstuScore=score,stuRank=srankf
46、romscwheresno=snoandsportno=sportnogoGo515 創(chuàng)建班級(jí)成績(jī)和名次視圖usesportsife*ists(select*fromsysobjectswherename=view_clscoreandtype=v)dropviewview_clscoregocreateviewview_clscoreasselectsdeptnameas學(xué)院,sclassnameas班級(jí),sclscoreas總分,sclrankindeptas學(xué)院名次,sclrankinschas學(xué)校名次fromclscoreGo測(cè)試程序select*fromview_clscore516
47、 創(chuàng)建索引usesportsife*ists(select*fromsysinde*eswherename=ID*_sc)dropinde*sc.ID*_scgocreateinde*ID*_sconsc(sportno,srank)Go6 界面設(shè)計(jì)主要過(guò)程為了使用戶的使用更加方便,同時(shí)也為了增加對(duì)數(shù)據(jù)庫(kù)的保護(hù),盡量減少用戶可以直接更改數(shù)據(jù)庫(kù)的機(jī)會(huì),所以加入了運(yùn)動(dòng)會(huì)成績(jī)管理系統(tǒng)的界面部分。6.1 界面總體設(shè)計(jì)界面所面向用戶:由于本系統(tǒng)所面對(duì)的不同用戶有成績(jī)管理員和學(xué)生,所以應(yīng)該開發(fā)出面向著兩種用戶的使用界面。針對(duì)不同的用戶,他們所需要的操作也是不同的,所以下面需要根據(jù)不同的用戶身份登錄,設(shè)計(jì)不
48、同的界面,實(shí)現(xiàn)不同的功能。成績(jī)管理員具有最高的管理權(quán)限,是成績(jī)信息的管理者。管理員具有所有運(yùn)動(dòng)項(xiàng)目的管理,所有學(xué)生運(yùn)動(dòng)員的管理,同時(shí)也應(yīng)該具有對(duì)所有運(yùn)動(dòng)成績(jī)記錄的管理。學(xué)生運(yùn)動(dòng)員的主要功能就是查詢功能,可以查詢*個(gè)運(yùn)動(dòng)員,班,項(xiàng)目,學(xué)院或者整個(gè)學(xué)校的比賽成績(jī)信息和名次情況。6.2 登錄界面設(shè)計(jì)登錄界面應(yīng)該是面向上述兩種不同用戶開發(fā)的,所以應(yīng)該有區(qū)分他們的身份的按鈕,以及用戶的登錄信息輸入框,依此來(lái)核對(duì)用戶的登錄信息是否正確,判斷是否讓用戶進(jìn)入系統(tǒng)。核對(duì)登錄信息的主要代碼如下: private void button1_Click(object sender, EventArgs e) stri
49、ng name = te*tBo*1.Te*t; string poss = te*tBo*2.Te*t; if (name = luozaicc & poss = 123456 & this.radioButton1.Checked = true) FirstForm firstForm = new FirstForm(1); firstForm.ShowDialog(); else if(this.radioButton2.Checked = true) FirstForm firstForm = new FirstForm(0); firstForm.ShowDialog(); else
50、 MessageBo*.Show(登錄信息不正確,請(qǐng)重新輸入!); 界面如下:6.3 成績(jī)管理員界面設(shè)計(jì)成績(jī)管理員主界面包含三個(gè) boBo* 分別對(duì)應(yīng)信息錄入,成績(jī)查詢與修改和基本信息查詢。管理員選擇每一個(gè)boBo* 中不同的選項(xiàng),管理不同的表。(1)下面主要介紹一下成績(jī)查詢及修改的相關(guān)設(shè)計(jì)和代碼。private void boBo*2_SelectedInde*Changed(object sender, EventArgs e) string str = this.boBo*2.Te*t; if (str.Equals(個(gè)人成績(jī)查詢)/ 1 StuForm stuform = new St
51、uForm(root); stuform.ShowDialog(); if (str.Equals(項(xiàng)目成績(jī)查詢)/ 2 SpForm spform = new SpForm(root); spform.ShowDialog(); if (str.Equals(班級(jí)成績(jī)查詢)/ 3 ClaForm claForm = new ClaForm(root); claForm.ShowDialog(); if (str.Equals(學(xué)院成績(jī)查詢)/ 4 DeptForm deptForm = new DeptForm(root); deptForm.ShowDialog(); if (str.Eq
52、uals(全校成績(jī)查詢)/ 5 SchForm schForm = new SchForm(root); schForm.ShowDialog(); if (str.Equals(全校班級(jí)排名)/ 6 ClaRankForm claRankForm = new ClaRankForm(root); claRankForm.ShowDialog(); 1、假設(shè)此時(shí)管理員選擇了項(xiàng)目成績(jī)查詢,則會(huì)出現(xiàn)項(xiàng)目表的查詢界面如下:(6-1) (6-2)管理員可以輸入查詢的項(xiàng)目號(hào),查詢每一個(gè)項(xiàng)目的信息,并且可以通過(guò)直接修改成績(jī)實(shí)現(xiàn)名次的更新,比較圖(6-1)和(6-2)中選定的行,可以看到成績(jī)變動(dòng)后名次的自動(dòng)更新。相關(guān)代碼如下:privatevoid button2_Click(object sender, EventArgs e) DataTable dt0 = dt;if (dt = null) return;string sno, score
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件開發(fā)流程面臨的挑戰(zhàn)試題及答案
- 企業(yè)文化與風(fēng)險(xiǎn)管理考題及答案
- 制定職業(yè)晉升的長(zhǎng)期規(guī)劃計(jì)劃
- 2024年甘肅隴南事業(yè)單位招聘筆試真題
- VB最佳編程習(xí)慣與技巧試題及答案
- 2024年?yáng)|莞市市場(chǎng)監(jiān)督管理局招聘筆試真題
- 移動(dòng)設(shè)備安全性測(cè)試試題及答案
- 軟件工程項(xiàng)目管理中的挑戰(zhàn)試題及答案
- 未來(lái)市場(chǎng)競(jìng)爭(zhēng)中的風(fēng)險(xiǎn)識(shí)別試題及答案
- 自然語(yǔ)言處理技術(shù)試題及答案
- 人工智能標(biāo)準(zhǔn)化白皮書
- 2021譯林版高中英語(yǔ)選擇性必修一課文翻譯
- 0720小罐茶品牌介紹
- 二級(jí)、三級(jí)電箱接線圖
- 2022年食品衛(wèi)生通則第三版(中文版)
- 頸椎功能障礙指數(shù),Neck Disabilitv Index,NDI
- 名著導(dǎo)讀《紅樓夢(mèng)》PPT課件(完整版)
- 吉林省辦學(xué)基本標(biāo)準(zhǔn)手冊(cè)
- 4車道高速公路30米預(yù)應(yīng)力混凝土簡(jiǎn)支T梁橋上部結(jié)構(gòu)設(shè)計(jì)_論文
- 2020年廣東省中考物理試卷分析
- 脫氨蒸氨工段操作規(guī)程
評(píng)論
0/150
提交評(píng)論