數(shù)據(jù)庫(kù)系統(tǒng)課程設(shè)計(jì)報(bào)告
?
題目 ??高校成績(jī)管理數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)?
提交日期 ??????????2021年7月? ??????????
目錄
1、需求分析
1.1 數(shù)據(jù)需求描述
1.2 系統(tǒng)功能需求
1.3 其他性能需求
2、概念結(jié)構(gòu)設(shè)計(jì)
2.1 局部E-R圖
2.2 全局E-R圖
2.3 優(yōu)化E-R圖
3、邏輯結(jié)構(gòu)設(shè)計(jì)
3.1 關(guān)系模式設(shè)計(jì)
3.2 數(shù)據(jù)類型定義
3.3 關(guān)系模式的優(yōu)化
4、物理結(jié)構(gòu)設(shè)計(jì)
4.1 聚簇設(shè)計(jì)
4.2 索引設(shè)計(jì)
4.3 分區(qū)設(shè)計(jì)
5、數(shù)據(jù)庫(kù)實(shí)施
5.1 基本表建立
5.2 視圖的建立
5.3 索引的建立
5.4 觸發(fā)器建立
5.5 建存儲(chǔ)過(guò)程
6、應(yīng)用系統(tǒng)開發(fā)與試運(yùn)行
6.1 開發(fā)平臺(tái)和開發(fā)環(huán)境介紹。
6.2 前臺(tái)界面與后臺(tái)數(shù)據(jù)庫(kù)連接說(shuō)明,代碼實(shí)現(xiàn)。
6.3 系統(tǒng)各功能設(shè)計(jì)和運(yùn)行界面截圖。
7、實(shí)驗(yàn)總結(jié)
7.1 遇到的問題和解決的辦法
7.2 系統(tǒng)設(shè)計(jì)的不足
7.3 進(jìn)一步改進(jìn)思路和體會(huì)
高校成績(jī)管理數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
1、需求分析
高校成績(jī)管理數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)用于記錄了高校學(xué)生成績(jī)的系統(tǒng),它的出現(xiàn)使得查詢、更新、插入簡(jiǎn)單化,高效化,成本也隨之大大減少。使用計(jì)算機(jī)對(duì)成績(jī)信息的管理,具有手工管理所無(wú)法比擬的優(yōu)點(diǎn):信息存儲(chǔ)及時(shí),檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)生成績(jī)管理的效率,也是高校成績(jī)正規(guī)化管理的重要途徑。根據(jù)實(shí)際工作需要,提出了以下數(shù)據(jù)和業(yè)務(wù)處理需求:
用戶處理需求:
1、學(xué)校設(shè)置了各專業(yè),在專業(yè)下開設(shè)班級(jí),每個(gè)班級(jí)包含若干學(xué)生,學(xué)生信息至少需要包含學(xué)號(hào)、姓名、性別、年齡、生源所在地、已修學(xué)分總數(shù)等數(shù)據(jù)項(xiàng);另外,需要有地區(qū)信息,用于統(tǒng)計(jì)某一地區(qū)的學(xué)生數(shù);
2、課程信息表至少需包含課程編號(hào)、課程名稱、任課教師、開課學(xué)期、學(xué)時(shí)、考試或考查、學(xué)分等數(shù)據(jù)項(xiàng),課程根據(jù)班級(jí)開設(shè)。
3、教師信息至少需要包含教師編號(hào)、姓名、性別、年齡、職稱、聯(lián)系電話等數(shù)據(jù)項(xiàng);
4、學(xué)生成績(jī)至少需要學(xué)號(hào),學(xué)期,課程名稱,成績(jī),任課老師等數(shù)據(jù)項(xiàng);
5、需要實(shí)現(xiàn)以下業(yè)務(wù)處理和查詢功能
學(xué)生成績(jī)按每學(xué)年成績(jī)統(tǒng)計(jì)
學(xué)生成績(jī)名次排定
每門課程平均成績(jī)統(tǒng)計(jì)
學(xué)生所學(xué)課程及學(xué)分統(tǒng)計(jì)
對(duì)每個(gè)學(xué)生輸入成績(jī)的時(shí)候,自動(dòng)生成學(xué)生的已修學(xué)分總數(shù)
學(xué)生成績(jī)查詢
教師任課查詢
班級(jí)課程開設(shè)查詢
補(bǔ)充說(shuō)明:
-
- 假設(shè)學(xué)籍管理制度是采用學(xué)年制,且暫不考慮選修課情況。
- 同一專業(yè)可能有多個(gè)班,所以同一門課可能需要多個(gè)教師上課,一個(gè)教師在一學(xué)期可能上多門課程。
- 考試和考查課均采用百分制記分。
硬件環(huán)境:
處理器 ?Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz ??1.80 GHz
機(jī)帶 ???RAM???8.00 ?GB (7.82 GB 可用)
系統(tǒng)類型 64 位操作系統(tǒng), 基于 x64 的處理器
軟件環(huán)境:
電腦系統(tǒng):Windows?10???
SQL版本:Microsoft SQL Server 2014?
VS版本: Microsoft Visual Studio 2013
1.1 數(shù)據(jù)需求描述?
該系統(tǒng)的頂層數(shù)據(jù)流圖如圖1所示,系統(tǒng)有三個(gè)身份:教師,管理員和學(xué)生。根據(jù)用戶需求,設(shè)計(jì)數(shù)據(jù)流圖。
?圖1 頂層數(shù)據(jù)流圖
下圖2為詳細(xì)的數(shù)據(jù)流圖,根據(jù)用戶需求設(shè)計(jì)。
圖2 詳細(xì)數(shù)據(jù)流圖
數(shù)據(jù)字典應(yīng)具有下述特點(diǎn):
1.通過(guò)名字能方便地查詢數(shù)據(jù)的定義
2.沒有數(shù)據(jù)冗余
3.容易更新和更改
4.定義的書寫方式加單方便,而且嚴(yán)格
卡片形式書寫數(shù)據(jù)字典是一種傳統(tǒng)的方式,更新和修改方便,能夠單獨(dú)處理每個(gè)數(shù)據(jù)項(xiàng)的信息。
本實(shí)驗(yàn)的數(shù)據(jù)卡片如下:
圖3 數(shù)據(jù)卡片設(shè)計(jì)
1.2 系統(tǒng)功能需求?
系統(tǒng)分為管理員功能需求.教師功能需求和學(xué)生功能需求
1.2.1.管理員功能需求
(1).添加教師信息
(2).查詢教師信息
(3).修改教師信息
(4).刪除教師信息
(5).添加學(xué)生信息
(6).查詢學(xué)生信息
(7).修改學(xué)生信息
(8).刪除學(xué)生信息
(9).統(tǒng)計(jì)生源地信息
(10).修改密碼
(11).注冊(cè)新用戶
(12).查詢成績(jī)信息
(13).添加課程信息
(14).查詢課程信息
(15).修改課程信息
(16).刪除課程信息
(17).查詢專業(yè)信息
(18).查詢班級(jí)信息
1.2.2.教師功能需求
(1).查看個(gè)人基本信息
(2).查看每門課程平均成績(jī)統(tǒng)計(jì)
(3).查詢教師課表
(4).查看個(gè)人任課情況
(5).查看學(xué)生成績(jī)和排名情況
(6).修改密碼
(7).查詢授課學(xué)生信息
(8).錄入學(xué)生成績(jī), 自動(dòng)生成該學(xué)生已修總學(xué)分
1.2.3.學(xué)生功能需求
(1).查看個(gè)人信息
(2).查看個(gè)人的課表
(3).查詢個(gè)人考試成績(jī)
(4).查看不同班級(jí)的開課情況
(5).查看不同教師的任課情況
(6).查看已修各科學(xué)分和總學(xué)分
(7).修改密碼
整個(gè)系統(tǒng)的功能圖如圖4。
圖4系統(tǒng)功能圖
1.3 其他性能需求
(1)用戶輸入出錯(cuò)時(shí),違背了數(shù)據(jù)庫(kù)的完整性約束或用戶定義的約束時(shí),有錯(cuò)誤提示,且不予通過(guò)。
(2)安全性高,對(duì)應(yīng)查詢和修改權(quán)限受到嚴(yán)謹(jǐn)?shù)南拗啤?/p>
(3)可以由多個(gè)用戶同時(shí)登錄修改查詢等。
(4)存儲(chǔ)數(shù)據(jù)量盡可能大。
2、概念結(jié)構(gòu)設(shè)計(jì)
2.1?局部E-R圖
學(xué)生實(shí)體對(duì)應(yīng)的E-R圖如圖,可知屬性有學(xué)號(hào),姓名,性別,年齡,生源地,已修學(xué)分。
?圖5 學(xué)生E-R圖
課程實(shí)體的E-R圖如圖6,可知屬性有課程編號(hào),課程名稱,教師編號(hào),開課學(xué)期,課程學(xué)時(shí),考核方式,課程學(xué)分
圖 6課程E-R圖
教師實(shí)體的E-R圖如圖7,可知屬性有教師編號(hào),教師姓名,教師性別,教師年齡,教師職稱,教師聯(lián)系電話。
圖7 教師E-R圖
班級(jí)專業(yè)實(shí)體的E-R圖如圖8,可知班級(jí)實(shí)體屬性有課程編號(hào),班級(jí)名稱。專業(yè)實(shí)體屬性有專業(yè)編號(hào)和專業(yè)名稱。
?圖8班級(jí),專業(yè)實(shí)體E-R圖
2.2 全局E-R圖
下圖合并成全局的E-R圖。
實(shí)體間關(guān)系的分析:
教師和班級(jí)任教的關(guān)系為n:m,一個(gè)班級(jí)可以多個(gè)教師任教,一個(gè)教師也可以任教多個(gè)班級(jí)。
教師和課程的關(guān)系為n:m,一個(gè)教師可以任教多門課程,一門課程可以由多個(gè)教師任教。
專業(yè)和班級(jí)的關(guān)系為1:n,一個(gè)專業(yè)可以有多個(gè)班級(jí),一個(gè)班級(jí)只能對(duì)應(yīng)一個(gè)專業(yè)。
班級(jí)和課程的關(guān)系為n:m,一個(gè)班級(jí)可以開設(shè)多門課程,一個(gè)課程也可以在多個(gè)班級(jí)開設(shè)。
學(xué)生和班級(jí)的關(guān)系為1:n,一個(gè)學(xué)生只屬于一個(gè)班級(jí),二一個(gè)班級(jí)有多個(gè)學(xué)生。
學(xué)生和課程的關(guān)系為n:m,一個(gè)學(xué)生可以選多個(gè)課程,一個(gè)課程也可以被多個(gè)學(xué)生選擇。
整體合并的E-R圖如圖9所示:
圖 9整體E-R圖
2.3 優(yōu)化E-R圖
以上的全局E-R已經(jīng)最優(yōu),不需要再進(jìn)行優(yōu)化。
圖10 優(yōu)化后的E-R圖
3、邏輯結(jié)構(gòu)設(shè)計(jì)
3.1 關(guān)系模式設(shè)計(jì)
將E-R圖轉(zhuǎn)換為關(guān)系模式,定義實(shí)體型、屬性及其聯(lián)系,根據(jù)優(yōu)化后的E-R設(shè)計(jì)關(guān)系模式,關(guān)系模式如下:
教師Xun_Teachers18( xn_Tno18教師編號(hào) ,xn_Tname18教師姓名, xn_Tsex18教師性別, xn_Tage18教師年齡, xn_Tpos18 教師職稱, xn_Ttell18聯(lián)系電話)
專業(yè)Xun_Major18( xn_Mno18專業(yè)編號(hào), xn_Mname18專業(yè)名稱)
班級(jí)Xun_Class18( xn_CLno18?班級(jí)編號(hào), xn_CLname18 班級(jí)名稱, ?xn_Mno18專業(yè)編號(hào))
學(xué)生Xun_Students18(?xn_Sno18?學(xué)號(hào), xn_Sname18姓名, xn_Ssex18 性別, xn_Sage18年齡, xn_Sregion18地區(qū), xn_Scredit18已修學(xué)分, xn_CLno18班級(jí)編號(hào))
課程Xun_Course18( xn_Cno18?課程編號(hào), xn_Cname18課程名稱, xn_Chour18課程學(xué)時(shí), xn_Tname18 教師姓名, xn_Csemester18課程學(xué)期, xn_Cinspect18考核方式,xn_Ccredit18學(xué)分)
班級(jí)開設(shè)課程 Xun_CourseClass18( ?xn_Cno18課程編號(hào), ?xn_CLno18班級(jí)編號(hào))
教師授課班級(jí)Xun_TeachingClass18( xn_Tno18教師編號(hào), xn_CLno18班級(jí)編號(hào))
教師授課課程 Xun_TeachingCourse18( xn_Tno18教師編號(hào), xn_Cno18課程編號(hào))
成績(jī)報(bào)告 Xun_Reports18(?xn_Sno18學(xué)號(hào),xn_Cno18課程編號(hào),xn_Csemesters18學(xué)期,xn_Score18成績(jī), xn_Tno18教師編號(hào))
學(xué)生賬戶密碼表Xun_studentMima18(xn_Sno18, xn_Smima18 )
教師賬戶密碼表Xun_teacherMima18(xn_Tno18, xn_Tmima18)
管理員賬戶密碼表Xun_admMima18(xn_Ano18, xn_Amima18)
3.2 數(shù)據(jù)類型定義
表1教師Xun_Teachers18表
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
xn_Tno18教師編號(hào) |
char |
10 |
主鍵 |
xn_Tname18教師姓名 |
char |
10 |
|
xn_Tsex18 教師性別 |
char |
5 |
|
xn_Tage18 教師年齡 |
int |
||
xn_Tpos18職稱 |
char |
10 |
|
xn_Ttell18聯(lián)系電話 |
char |
20 |
表2專業(yè)Xun_Major18表
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
xn_Mno18專業(yè)編號(hào) |
char |
10 |
主鍵 |
xn_Mname18專業(yè)名稱 |
char |
10 |
表3班級(jí)Xun_Class18表
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
xn_CLno18班級(jí)編號(hào) |
char |
10 |
主鍵 |
xn_CLname18班級(jí)名稱 |
char |
10 |
|
xn_Mno18專業(yè)編號(hào) |
char |
10 |
外鍵(Xun_Major18) |
表4學(xué)生表Xun_Students18表
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
xn_Sno18學(xué)號(hào) |
char |
12 |
主鍵 |
xn_Sname18姓名 |
char |
10 |
|
xn_Ssex18性別 |
char |
5 |
|
xn_Sage18年齡 |
int |
||
xn_Sregion18生源所在地 |
char |
20 |
|
xn_Scredit18已修學(xué)分 |
float |
||
xn_CLno18班級(jí)編號(hào) |
char |
10 |
外鍵(Xun_Class18) |
表5課程Xun_Course18表
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
xn_Cno18課程編號(hào) |
char |
10 |
主鍵 |
xn_Cname18課程名稱 |
char |
10 |
|
xn_Tname18教師姓名 |
char |
10 |
|
xn_Csemester18課程學(xué)期 |
char |
20 |
|
xn_Chour18課程學(xué)時(shí) |
int |
>0 |
|
xn_Cinspect18考核方式 |
char |
5 |
|
xn_Ccredit18學(xué)分 |
float |
>0 |
表6開設(shè) Xun_CourseClass18表
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
|
xn_CLno18班級(jí)編號(hào) |
char |
10 |
主鍵 |
外鍵(Xun_Class18) |
xn_Cno18課程編號(hào) |
char |
10 |
外鍵(Xun_Course18) |
表7上課 Xun_TeachingClass18表
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
|
xn_Tno18教師編號(hào) |
char |
10 |
主鍵 |
外鍵(Xun_Teachers18) |
xn_CLno18班級(jí)編號(hào) |
char |
10 |
外鍵(Xun_Class18) |
表8授課 Xun_TeachingCourse18表
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
|
xn_Tno18教師編號(hào) |
char |
10 |
主鍵 |
外鍵(Xun_Teachers18,) |
xn_Cno18課程編號(hào) |
char |
10 |
外鍵(Xun_Course18) |
表9成績(jī)報(bào)告表Xun_Reports18表
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
|
xn_Sno18學(xué)號(hào) |
char |
12 |
主鍵 |
外鍵(Xun_Students18) |
xn_Cno18課程編號(hào) |
char |
10 |
外鍵(Xun_Course18) |
|
xn_Csemesters18學(xué)期 |
char |
10 |
||
xn_Score18成績(jī) |
int |
|||
xn_Tno18教師編號(hào) |
char |
10 |
(10)
表10學(xué)生賬戶密碼表Xun_studentMima18
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
xn_Sno18賬號(hào) |
char |
10 |
主鍵 |
xn_Smima18密碼 |
char |
5 |
(11)
表11教師賬戶密碼表Xun_teacherMima18
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
xn_Tno18 賬號(hào) |
char |
10 |
主鍵 |
xn_Tmima18密碼 |
char |
5 |
(12)
表12管理員賬戶密碼表Xun_admMima18
數(shù)據(jù)項(xiàng)名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
完整性約束 |
xn_Ano18 ?賬號(hào) |
char |
10 |
主鍵 |
xn_Amima18密碼 |
char |
5 |
3.3 關(guān)系模式的優(yōu)化
1.規(guī)范化處理:
所有關(guān)系模式均已做規(guī)范化處理,僅為函數(shù)依賴,已化為3NF和BCNF的標(biāo)準(zhǔn)。以上的關(guān)系模式已接近最優(yōu),滿足該數(shù)據(jù)庫(kù)的需求,不違背數(shù)據(jù)庫(kù)的性能,又不存在過(guò)多的冗余信息。
2.模式的評(píng)價(jià)與修正:
已經(jīng)滿足用戶的功能需求,連接運(yùn)算已盡可能地減少,新的關(guān)系模式也適當(dāng)?shù)脑黾?。查詢效率高,有一定的冗余信息利用用戶的查詢?/p>
最終的數(shù)據(jù)庫(kù)模式已確定。
4、物理結(jié)構(gòu)設(shè)計(jì)
4.1 聚簇設(shè)計(jì)
聚簇設(shè)計(jì)的主要目的是為了提高查詢效率,聚簇設(shè)計(jì)的主要規(guī)則如下:
①.當(dāng)對(duì)一個(gè)關(guān)系的某些屬性列的訪問是該關(guān)系的主要應(yīng)用,而對(duì)其他屬性的訪問很少或是次要應(yīng)用時(shí),可以考慮對(duì)該關(guān)系在這些屬性列上建立聚簇。
②.如果一個(gè)關(guān)系在某些屬性列上的值重復(fù)率很高,則可以考慮對(duì)該關(guān)系在這些組屬性列上建立聚簇。
③.如果一個(gè)關(guān)系一旦裝入數(shù)據(jù),某些屬性列的值很少修改,也很少增加或刪除元組,則可以考慮對(duì)該關(guān)系在這些組屬性列上建立聚簇。
本實(shí)驗(yàn)中建立聚簇的表和對(duì)應(yīng)屬性如下表13.
表13 聚簇設(shè)計(jì)
聚簇名 |
表格 |
屬性/列 |
xn_Tea_Tno18 |
Xun_Teachers18 |
xn_Tno18 |
xn_Cour_Cno18 |
Xun_Course18 |
xn_Cno18 |
xn_Mno_CLno18 |
Xun_Class18 |
xn_CLno18,xn_Mno18 |
xn_CLno_Sno18 |
Xun_Students18 |
xn_Sno18,xn_CLno18 |
建立者四個(gè)聚簇的主要是因?yàn)檫@幾張對(duì)應(yīng)的表都是實(shí)體表,且聚簇中的屬性都是對(duì)應(yīng)的主鍵或是外鍵,被訪問的概率很高,所有需要建立聚簇。其他表或者這些表上的其他屬性被訪問的概率就相對(duì)較低,不太需要建立聚簇。
4.2 索引設(shè)計(jì)
????對(duì)關(guān)系選擇有效的索引對(duì)提高數(shù)據(jù)庫(kù)訪問效率有很大的幫助,數(shù)據(jù)庫(kù)中建立索引的一般規(guī)則如下:
①在主鍵屬性列和外鍵屬性列上通常都可以分別建立索引,有助于唯一性檢查和完整性檢查,還可以加快連接查詢的速度。
②以查詢?yōu)橹鞯年P(guān)系可建立盡可能多的索引。
③對(duì)于等值連接,但是滿足條件的元組較少的查詢可以考慮建立索引。
④如果查詢可以從索引直接得到結(jié)果而不必訪問關(guān)系,則對(duì)此種查詢可以建立索引。
本實(shí)驗(yàn)建立的索引對(duì)應(yīng)的表和列如下表14所示:
表14 索引設(shè)計(jì)
索引名 |
表格 |
屬性/列 |
xn_Tea_Tno18 |
Xun_Teachers18 |
xn_Tno18 |
xn_Cour_Cno18 |
Xun_Course18 |
xn_Cno18 |
xn_Mno_CLno18 |
Xun_Class18 |
xn_CLno18,xn_Mno18 |
xn_CLno_Sno18 |
Xun_Students18 |
xn_Sno18,xn_CLno18 |
xn_Cno_Sno18 |
Xun_Reports18 |
xn_Sno18,xn_Cno18 |
xn_Majo_Mno18 |
Xun_Major18 |
xn_Mno18 |
4.3 分區(qū)設(shè)計(jì)
若數(shù)據(jù)庫(kù)中的數(shù)據(jù)量增大,往往需要用到多個(gè)磁盤驅(qū)動(dòng)器或磁盤陣列。目的是為了提高系統(tǒng)性能。磁盤分區(qū)設(shè)計(jì)的一般原則:
①減少訪問沖突,提高I/O并發(fā)性。多個(gè)事物并發(fā)訪問同一磁盤時(shí),會(huì)產(chǎn)生磁盤訪問沖突而導(dǎo)致效率低下,如果事務(wù)訪問數(shù)據(jù)均能分布于不同磁盤上,則I/O可并發(fā)執(zhí)行,從而提高數(shù)據(jù)庫(kù)訪問速度。
②分散熱點(diǎn)數(shù)據(jù),均衡I/O負(fù)擔(dān)。在數(shù)據(jù)庫(kù)中數(shù)據(jù)訪問的頻率是不均勻的,那些經(jīng)常被訪問的數(shù)據(jù)成為熱點(diǎn)數(shù)據(jù),此類數(shù)據(jù)宜分散存在于不同的磁盤上,以均衡各個(gè)磁盤的負(fù)荷,充分發(fā)揮多磁盤的并行操作的優(yōu)勢(shì)。
③保證關(guān)鍵數(shù)據(jù)快速訪問,緩解系統(tǒng)瓶頸。在數(shù)據(jù)庫(kù)中有些數(shù)據(jù)如數(shù)據(jù)字典等的訪問頻率很高,為保證對(duì)它的訪問不直接影響整個(gè)系統(tǒng)的效率,可以將其存放在某一固定磁盤上,以保證其快速訪問。
因?yàn)樵摳咝3煽?jī)管理系統(tǒng)由于數(shù)據(jù)量較小,所以不進(jìn)行分區(qū)設(shè)計(jì)。
5、數(shù)據(jù)庫(kù)實(shí)施
5.1 基本表建立
(1)Xun_Major18表
?圖11?Xun_Major18表的建立
(2)
?圖12?Xun_Teachers18表
(3)Xun_Class18表
圖13創(chuàng)建Xun_Class18表
(4)Xun_Course18表?
圖14?創(chuàng)建基本表Xun_Course18
?(5)Xun_Students18表
?圖15?創(chuàng)建基本表Xun_Students18
(6)TeachingCourse18表
圖16?創(chuàng)建基本表TeachingCourse18?
(7)Xun_TeachingClass18表的建立
?圖17?創(chuàng)建基本表Xun_TeachingClass18
(8)Xun_CourseClass18表的建立
?圖18?創(chuàng)建基本表Xun_CourseClass18
(9)Xun_Reports表的建立
圖19?創(chuàng)建基本表Xun_Reports
(10)學(xué)生,教師,管理員賬號(hào)表的建立。分別為:Xun_studentMima18,Xun_teacherMima18,Xun_admMima18。?
圖19?創(chuàng)建基本表Xun_studentMima18,Xun_teacherMima18,Xun_admMima18
5.2 視圖的建立
(1)Xun_StudentsScore視圖的建立,該視圖由基本表 Xun_Reports18, Xun_Class18,Xun_Students18,Xun_Course18,Xun_Teachers18等值連接而成,用于反映學(xué)生所修課程的成績(jī)。建立過(guò)程如下圖20.
圖20?創(chuàng)建視圖Xun_StudentsScore
(2)Xun_EachCourseAvgS18視圖的建立,由基本表Xun_Reports18,
Xun_Course18等值連接而成,反映各門課程的平均分。
?圖21 創(chuàng)建視圖Xun_EachCourseAvgS18
(3)Xun_StudenCredit視圖的建立,由基本表Xun_Students18,Xun_Reports18,
Xun_Course18導(dǎo)出,反映學(xué)生各科學(xué)分。
?圖22?創(chuàng)建視圖Xun_StudenCredit
(4)Xun_TeacherCourse視圖的建立,由基本表Xun_Teachers18,
???Xun_TeachingCourse18,Xun_Course18等值連接導(dǎo)出,用于反映教師和其教授課程的關(guān)系。
?圖23?創(chuàng)建視圖Xun_TeacherCourse
?(5)Xun_ClassExcel視圖的建立,由基本表Xun_Class18,Xun_CourseClass18,
???Xun_Course18等值連接導(dǎo)出,用于反映對(duì)應(yīng)班級(jí)的課表信息。
圖24?創(chuàng)建視圖Xun_ClassExcel
(6)Xun_StudentRegion18視圖的建立,從基本表Xun_Students18表中導(dǎo)出,用于反映生源地對(duì)應(yīng)學(xué)生人數(shù)的關(guān)系。
?圖25?創(chuàng)建視圖Xun_StudentRegion18
(7)Xun_TeachingStu18視圖的建立,從基本表Xun_Reports18,Xun_Class18,
???Xun_Students18,Xun_Course18,Xun_Teachers18 中等值連接導(dǎo)出,用于反映教師和教授學(xué)生的關(guān)系。
?圖26創(chuàng)建視圖Xun_TeachingStu18
(8)Xun_TeachingClassN18視圖的建立,由基本表Xun_Class18,
Xun_TeachingClass18,Xun_Teachers18等值連接后導(dǎo)出,反映教師和對(duì)應(yīng)教授班級(jí)的關(guān)系。
圖27?創(chuàng)建視圖Xun_TeachingClassN18
5.3 索引的建立
(1)xn_Cno_Sno18索引的建立
圖28?創(chuàng)建索引xn_Cno_Sno18
(2)xn_CLno_Sno18索引的建立
圖29創(chuàng)建索引xn_CLno_Sno18
(3)xn_Majo_Mno18索引的建立
?圖30?創(chuàng)建索引xn_Majo_Mno18
(4)xn_Mno_CLno18 索引的建立
圖31?創(chuàng)建索引xn_Mno_CLno18
(5)xn_Cour_Cno18 索引的建立
圖32?創(chuàng)建索引xn_Cour_Cno18
(6)xn_Tea_Tno18索引的建立?
圖33?創(chuàng)建索引xn_Tea_Tno18
5.4 觸發(fā)器建立?
本實(shí)驗(yàn)一共建立了6個(gè)觸發(fā)器,介紹如下:
①Xun_Reports18表增加學(xué)生選課記錄且成績(jī)大于60則更新學(xué)生信息表上Xun_Students18該學(xué)生總學(xué)分。觸發(fā)器 為Xun_TotalCredit。
②Xun_Teachers18表刪除教師信息時(shí),刪除教師授課表Xun_TeachingCourse18,教師教授班級(jí)表Xun_TeachingClass18,教師賬戶密碼表Xun_teacherMima18對(duì)應(yīng)的教師信息。觸發(fā)器為Xun_DeleteTeachers18。
③Xun_Teachers18表更新教師信息時(shí),同步更新教師授課表Xun_TeachingCourse18,教師教授班級(jí)表Xun_TeachingClass18中的教師信息。觸發(fā)器為Xun_UpdateTeachers。
④Xun_Students18表刪除學(xué)生信息時(shí),刪除學(xué)生選課表Xun_Reports18和學(xué)生賬戶密碼表中的該學(xué)生信息。觸發(fā)器為Xun_delteStu18。
⑤Xun_Students18表添加學(xué)生信息時(shí),同時(shí)在學(xué)生賬戶密碼表Xun_studentMima18表中增加該學(xué)生的賬戶信息,默認(rèn)登錄密碼為12345,若有需要也可登錄后自行修改。觸發(fā)器為Xun_AddStu18。
⑥Xun_Teachers18添加教師信息時(shí),同時(shí)在教師賬戶密碼表Xun_teacherMima18表中增加該教師的賬戶信息,默認(rèn)登錄密碼為12345,若有需要也可登錄后自行修改。觸發(fā)器為Xun_AddTea18。
下面為幾個(gè)觸發(fā)器的建立截圖
(1)Xun_TotalCredit的建立
圖34?創(chuàng)建觸發(fā)器Xun_TotalCredit
?(2)Xun_UpdateTeachers的建立
圖35?創(chuàng)建觸發(fā)器Xun_UpdateTeachers
?(3)Xun_DeleteTeachers18的建立
圖36?創(chuàng)建觸發(fā)器Xun_DeleteTeachers18
?(4)Xun_delteStu18的建立
圖37?創(chuàng)建觸發(fā)器Xun_delteStu18
(5)Xun_AddStu18的建立
圖38?創(chuàng)建觸發(fā)器Xun_AddStu18
?(6)Xun_AddTea18的建立
?圖39?創(chuàng)建觸發(fā)器Xun_AddTea18
5.5 建存儲(chǔ)過(guò)程
一共建立了兩個(gè)存儲(chǔ)過(guò)程。
(1)學(xué)生表Xun_Students18插入信息的存儲(chǔ)過(guò)程Xun_insertStudents18.
圖40?創(chuàng)建存儲(chǔ)過(guò)程Xun_insertStudents18
(2)輸入成績(jī),Xun_Students18表自動(dòng)生成其總學(xué)分的存儲(chǔ)過(guò)程
Xun_ScreditAu18。
圖41?創(chuàng)建存儲(chǔ)過(guò)程Xun_ScreditAu18
6、應(yīng)用系統(tǒng)開發(fā)與試運(yùn)行
6.1 開發(fā)平臺(tái)和開發(fā)環(huán)境介紹
開發(fā)平臺(tái):Microsoft Visual Studio 2013
開發(fā)環(huán)境:微軟在Builder 2013開發(fā)者大會(huì)上發(fā)布了Visual Studio 2013預(yù)覽版,并且發(fā)布其程序組件庫(kù).NET 4.5.1的預(yù)覽版,該軟件已于北京時(shí)間2013年11月13日23:00時(shí)正式發(fā)布。Visual Studio 2013 預(yù)覽版以 Visual Studio 2012 和后續(xù)的Microsoft Visual Studio 更新中的進(jìn)展為基礎(chǔ)構(gòu)建而成,為開發(fā)團(tuán)隊(duì)提供需要的解決方案,使其接納這種轉(zhuǎn)變并開發(fā)和交付利用下一波Windows 平臺(tái)創(chuàng)新 (Windows 8.1) 的新式應(yīng)用程序,同時(shí)在所有 Microsoft 平臺(tái)上支持多種設(shè)備和服務(wù)。
6.2 前臺(tái)界面與后臺(tái)數(shù)據(jù)庫(kù)連接說(shuō)明,代碼實(shí)現(xiàn)。
本實(shí)驗(yàn)對(duì)應(yīng)數(shù)據(jù)庫(kù)系統(tǒng)的服務(wù)器名稱為L(zhǎng)APTOP-1J0M5AIG\\SQL2014,數(shù)據(jù)庫(kù)名稱為XunMIS18,身份驗(yàn)證使用Windows驗(yàn)證登錄,如下圖所示。
圖42?SQL服務(wù)器身份驗(yàn)證登錄
Visual Studio 2013連接數(shù)據(jù)庫(kù)的代碼為:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace xnStudent
{
class sqlConnet
{
public SqlConnection conn = null;
public sqlConnet()
{
if (conn == null)
{
conn = new SqlConnection("Data Source = LAPTOP-1J0M5AIG\\SQL2014; database = XunMIS18 ; " +
"Integrated Security = True");
if (conn.State == ConnectionState.Closed) conn.Open();
}
}
public void closeConnect()
{
if (conn.State == ConnectionState.Closed) conn.Close();
}
public DataSet Getds(string sql)
{
if (conn.State == ConnectionState.Closed) conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(ds);
conn.Close();
return ds;
}
public int OperateData(string sql)
{
if (conn.State == ConnectionState.Closed) conn.Open();
SqlCommand sqlcom = new SqlCommand();
sqlcom.CommandText = sql;
sqlcom.CommandType = CommandType.Text;
sqlcom.Connection = conn;
int x = sqlcom.ExecuteNonQuery();
conn.Close();
return x;
}
public DataSet BindDataGridView(DataGridView dgv, string sql)
{
if (conn.State == ConnectionState.Closed) conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
dgv.DataSource = ds.Tables[0];
return ds;
}
}
}
6.3 系統(tǒng)各功能設(shè)計(jì)和運(yùn)行界面截圖。
高校成績(jī)管理登錄界面如下圖所示,按照需求分析,高校成績(jī)管理系統(tǒng)有三個(gè)身份:管理員,教師和學(xué)生。
根據(jù)他們的功能的需求設(shè)計(jì)界面功能。這里需要輸入正確的賬號(hào)和密碼,才能登錄成功,進(jìn)入對(duì)應(yīng)身份的界面,否則顯示登錄失敗,需要重新輸入。
圖43系統(tǒng)登錄界面
???1.管理員界面:
管理員可以修改自己的密碼,
圖44?管理員登錄界面設(shè)計(jì)
下圖45為管理員修改自己的密碼的界面,需要輸入正確原密碼,才能修改密碼,否則不予修改。
圖45?管理員修改密碼界面
下圖46為管理員信息管理界面,可以對(duì)學(xué)生,教師和課程信息進(jìn)行增刪改。
圖46?管理員信息修改界面
下圖47為管理員修改學(xué)生信息的界面。修改時(shí)表格中第一列數(shù)據(jù)(學(xué)號(hào)屬性)不可修改,其他的屬性均可修改,直接點(diǎn)擊單元格修改再保存即可。刪除時(shí),選中需要?jiǎng)h除的行,點(diǎn)擊刪除,按確定即可刪除成功,同時(shí)選課信表,學(xué)生賬戶密碼表中也刪除該學(xué)生的選課記錄。插入新數(shù)據(jù)時(shí),在左方輸入插入新的學(xué)生的信息,性別只可選男女,班級(jí)需要從存在的班級(jí)中選,點(diǎn)擊插入即增加成功,學(xué)生賬戶密碼表中自動(dòng)生成該學(xué)生的賬戶,默認(rèn)密碼12345。
圖47?管理員修改學(xué)生信息界面
下圖48為管理員修改教師信息的界面。修改時(shí)表格中第一列數(shù)據(jù)(教師編號(hào)屬性)不可修改,其他的屬性均可修改,直接點(diǎn)擊單元格修改再保存即可。刪除時(shí),選中需要?jiǎng)h除的行,點(diǎn)擊刪除,按確定即可刪除成功,同時(shí)教師賬戶密碼表也同時(shí)刪除該教師的賬戶信息。插入新數(shù)據(jù)時(shí),在左方輸入插入新的教師的信息,點(diǎn)擊插入即增加成功,教師賬戶密碼表中自動(dòng)生成該教師的賬戶,默認(rèn)密碼12345。
圖48?管理員修改教師信息界面
下圖49為管理員修改課程信息的界面。修改時(shí)表格中第一列數(shù)據(jù)(班級(jí)編號(hào)屬性)不可修改,其他信息均可修改。刪除和插入操作類似上面的。?????????????????
圖49?管理員修改課程信息界面
教務(wù)管理有兩個(gè)模塊,密碼重置和注冊(cè)新用戶。
圖50?管理員教務(wù)管理界面
下圖51為管理員重置密碼的界面,可以重置學(xué)生和教師的賬戶密碼,輸入正確的編號(hào)和原密碼才可以修改,否咋報(bào)錯(cuò),系統(tǒng)會(huì)自動(dòng)匹配學(xué)生和教師的賬戶信息。
圖51?管理員密碼重置界面
管理員在點(diǎn)擊注冊(cè)學(xué)生新用戶時(shí),跳轉(zhuǎn)到修改學(xué)生信息界面插入新的學(xué)生信息,在注冊(cè)教師新用戶時(shí),跳轉(zhuǎn)到修改教師界面插入新的教師信息。
?
圖52?管理員注冊(cè)新用戶界面
管理員的信息查詢界面如下,具體可查詢學(xué)生,教師,班級(jí),專業(yè)和課程的信息。
圖53管理員查詢學(xué)生信息界面
下圖54為管理員查詢學(xué)生基本信息的界面,可以查看學(xué)生所有的基本信息,但查詢時(shí)均不可以修改:
圖54?管理員查詢學(xué)生基本信息
下圖55為管理員查詢學(xué)生成績(jī)的界面,可以查詢所有同學(xué)的全部科目的成績(jī),也可以查詢指定學(xué)生的成績(jī)信息。
圖55?管理員查詢學(xué)生成績(jī)
下圖56為管理員查詢學(xué)生生源地信息的界面,可以統(tǒng)計(jì)所有生源地學(xué)生的人數(shù),也可以查看指定生源地的學(xué)生數(shù),也可以查詢指定學(xué)生的成績(jī)信息。
圖56?管理員生源統(tǒng)計(jì)
下圖57為管理員查詢教師基本信息的界面,可以查看教師所有的基本信息,也可以通過(guò)教師編號(hào)篩選記錄:
圖57?管理員查詢教師基本信息
下圖58為管理員查詢班級(jí)基本信息的界面,可以查看班級(jí)所有的基本信息,也可以通過(guò)班級(jí)編號(hào)篩選記錄:
圖58管理員查詢班級(jí)基本信息?
下圖59為管理員查詢專業(yè)基本信息的界面,可以查看專業(yè)所有的基本信息,也可以通過(guò)專業(yè)編號(hào)篩選記錄:
圖59管理員查詢專業(yè)基本信息
下圖60為管理員查詢課程基本信息的界面,可以查看課程所有的基本信息,也可以通過(guò)課程編號(hào)篩選記錄:
圖60管理員查詢課程基本信息
???2。教師界面
教師登錄成功時(shí),界面如下圖61所示,主要分為信息查詢和學(xué)生成績(jī)錄入:
圖61 教師登錄成界面
教師可以修改自己賬戶的密碼,教師‘文件’快捷鍵有以下;兩個(gè)功能,如下圖62.
圖62?教師界面‘文件’
修改密碼時(shí),需要輸入該教師賬戶正確的原密碼,否則不予修改。
圖63?教師修改密碼界面
下圖為展示教師信息查詢的所有功能。
圖64?教師信息查詢界面
教師有權(quán)查詢?cè)摻處熃淌诘膶W(xué)生基本信息,下圖65為教師查詢授課學(xué)生信息的界面,可以通過(guò)輸入學(xué)生的學(xué)號(hào)來(lái)篩選學(xué)生信息。
圖65教師查詢?nèi)谓虒W(xué)生基本信息
下圖66,67為教師個(gè)人授課信息查詢界面,可以查詢?cè)摻處煹纳险n班級(jí)和授課課程。
圖66?教師查詢?nèi)谓贪嗉?jí)
圖67?教師查詢?nèi)谓陶n程
下圖68為教師課程查詢界面,可以插敘所有教師教授課程,也可以通過(guò)教師編號(hào)篩選教師授課信息。
圖68?教師查詢所有教師課表
下圖69為教師查詢個(gè)人基本信息的界面,可以查看個(gè)人的基本信息。
圖69?教師查詢個(gè)人基本信息
下圖70為教師查詢課程平均分的界面,可以查詢所有課程的平均分,也可以通過(guò)輸入課程名稱篩選,
圖70教師查詢所以課程平均分
圖71?教師查詢指定課程平均分
下圖72為教師查詢成績(jī)界面,可以查看所有選課學(xué)生的成績(jī)信息,按照課程和開設(shè)學(xué)期查看對(duì)應(yīng)排名信息。
圖72?教師查詢?nèi)谓虒W(xué)生成績(jī)
下圖73為教師查詢學(xué)生成績(jī)排名信息的界面,按課程開設(shè)學(xué)期查詢排名信息,排名降序排。
?圖73?教師查詢學(xué)生成績(jī)排名
?下圖74為教師錄入學(xué)生成績(jī)的界面,可以按照課程編號(hào)和上課學(xué)期篩選選課信息,篩選之后,直接在單元格上修改成績(jī)信息,按保存后修改,進(jìn)行成績(jī)的錄入。且只能修改該教師授課學(xué)生的成績(jī),系統(tǒng)會(huì)先自動(dòng)篩選該教師授課信息。
圖74?教師錄入學(xué)生成績(jī)
3.學(xué)生界面
下圖75為學(xué)生登錄界面,根據(jù)功能需求可知,學(xué)生的主要需求是查詢信息:
圖75?學(xué)生登錄成功界面
學(xué)生課修改自己的賬戶的密碼,需要正確輸入原密碼之后才可修改:
圖76?學(xué)生修改密碼界面
若原密碼輸入錯(cuò)誤,則不允許修改密碼,如下圖77所示。
圖77?密碼錯(cuò)誤,不予修改提示
下圖78為學(xué)生主要客源查詢的信息,為班級(jí)課程查詢,教授授課查詢,個(gè)人成績(jī)查詢,個(gè)人已修學(xué)分查詢,個(gè)人課表查詢。
圖78?學(xué)生信息查詢界面
下圖79為學(xué)查詢班級(jí)課表的界面,客源查詢所有班級(jí)的課表,也可以通過(guò)班級(jí)編號(hào)篩選。
圖79?學(xué)生查詢班級(jí)課程界面
下圖80為學(xué)查詢教師授課信息的界面,客源查詢所有教師的任課情況,也可以通過(guò)教師編號(hào)篩選授課信息。
圖80?學(xué)生查詢教師課程界面
下圖81為學(xué)生查詢個(gè)人成績(jī)信息的界面,客源查看該學(xué)生所有的成績(jī)信息,也可以通過(guò)課程開設(shè)學(xué)期進(jìn)行篩選。?
圖81 學(xué)生查詢個(gè)人成績(jī)信息界面
下圖82為學(xué)生查詢已修學(xué)分的界面,可以查看該學(xué)生各科的學(xué)分,也可以查看總已修學(xué)分。
圖82學(xué)生查詢學(xué)分界面
下圖83為學(xué)生個(gè)人課表查詢界面,查詢學(xué)生所有的課程信息:
圖83?學(xué)生查詢個(gè)人課表界面
7、實(shí)驗(yàn)總結(jié)
7.1 遇到的問題和解決的辦法
問題1:如何記錄登陸用戶的賬號(hào)信息,保證在進(jìn)行數(shù)據(jù)修改時(shí)沒有權(quán)利的用戶無(wú)法修改與自己無(wú)關(guān)的信息?
解決辦法:在各界面的構(gòu)造函數(shù)中,傳入該用戶的賬號(hào)信息,例如:
private void 信息錄入ToolStripMenuItem_Click(object sender, EventArgs e)
????????{
????????????
????????????學(xué)生成績(jī)錄入aaa新版 fmain = new 學(xué)生成績(jī)錄入aaa新版(Tno);
????????????fmain.Show();
????????}
通過(guò)傳入該教師的教師編號(hào),控制該教師只能錄入選了他教的課程的學(xué)生成績(jī),而不能提交其他教師教授的選課學(xué)生的成績(jī)。
問題2:原先的Xun_Reoprts表中存儲(chǔ)的教師信息時(shí)教師姓名,但是依照數(shù)據(jù)庫(kù)的來(lái)書,應(yīng)該存儲(chǔ)的屬性為教師編號(hào),教師編號(hào)才是教師屬性中唯一的主鍵,但是存儲(chǔ)教師教師姓名可以減少數(shù)據(jù)的連接,加快查詢速度。存在一定矛盾。
解決方法:在Xun_Reports表存儲(chǔ)教師編號(hào)信息,將教師編號(hào)與教師姓名等值連接后生成一個(gè)視圖,方便查詢,數(shù)據(jù)庫(kù)也不會(huì)出錯(cuò)。
問題3:觸發(fā)器和存儲(chǔ)過(guò)程的建立,只知道可以起提示作用,還可以引起系統(tǒng)內(nèi)部自動(dòng)進(jìn)行調(diào)整,但具體不知道怎么建立。
解決方案:查詢書本和網(wǎng)絡(luò)資料,可知觸發(fā)器的概念如下:
觸發(fā)器(trigger)是個(gè)特殊的存儲(chǔ)過(guò)程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動(dòng),而是由事件來(lái)觸發(fā),比如當(dāng)對(duì)一個(gè)表進(jìn)行操作(?insert,delete,update)時(shí)就會(huì)激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。?觸發(fā)器可以從?DBA_TRIGGERS ,USER_TRIGGERS 數(shù)據(jù)字典中查到。
分析該數(shù)據(jù)庫(kù)系統(tǒng)的用戶需求,可知需要在錄入成績(jī)的時(shí)候自動(dòng)加學(xué)分,刪除用戶時(shí)需要?jiǎng)h除所有的用戶信息,否則數(shù)據(jù)庫(kù)會(huì)出錯(cuò),還有增加用戶信息時(shí)需要注冊(cè)用戶新賬號(hào)和密碼,使得該用戶可以正常登錄系統(tǒng),通過(guò)這些分析,成功建立了觸發(fā)器,用于維護(hù)數(shù)據(jù)庫(kù)。
存儲(chǔ)過(guò)程的概念如下:
存儲(chǔ)過(guò)程(Stored Procedure)是一組為了完成特定功能的SQL語(yǔ)句集,是利用SQL Server 所提供的Transact-SQL 語(yǔ)言所編寫的程序。經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中。存儲(chǔ)過(guò)程是數(shù)據(jù)庫(kù)中的一個(gè)重要對(duì)象,用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它。存儲(chǔ)過(guò)程是由流控制和SQL 語(yǔ)句書寫的過(guò)程,這個(gè)過(guò)程經(jīng)編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中,存儲(chǔ)過(guò)程可由應(yīng)用程序通過(guò)一個(gè)調(diào)用來(lái)執(zhí)行,而且允許用戶聲明變量。
根據(jù)其概念,本實(shí)驗(yàn)中設(shè)計(jì)了兩個(gè)存儲(chǔ)過(guò)程。
問題4:數(shù)據(jù)插入的錯(cuò)誤,因?yàn)閿?shù)據(jù)庫(kù)初步設(shè)計(jì)時(shí)候結(jié)果不夠完善,導(dǎo)致數(shù)據(jù)插入不進(jìn)去。
解決方案:主要錯(cuò)在數(shù)據(jù)的類型、大小以及各個(gè)約束關(guān)系上,導(dǎo)致一些插入無(wú)法進(jìn)行。而刪除、重建基本表,會(huì)發(fā)現(xiàn)完整性約束導(dǎo)致基本表不能刪除,所以我利用基本表的修改ALTER來(lái)進(jìn)行改動(dòng)。
問題5:不熟悉C#語(yǔ)言
解決方案:從來(lái)沒有接觸過(guò)C#語(yǔ)言,在編寫的時(shí)候有點(diǎn)困難,參考書本上的d代碼寫了許多無(wú)用的代碼,后來(lái)一步步分析,調(diào)試才慢慢理解界面設(shè)計(jì)的原理,C#語(yǔ)言類似JAVA和C++的結(jié)合,寫起來(lái)上手很快,界面設(shè)計(jì)比JAVA便捷很多。
問題6:許多表存儲(chǔ)的都是編號(hào)信息,但是考慮界面的需求,我們需要顯示姓名和實(shí)名的信息,所以導(dǎo)致很難設(shè)計(jì)表格。
解決方案:通過(guò)等值連接建立足夠多的視圖來(lái)供用戶查詢,重復(fù)考慮數(shù)據(jù)庫(kù)內(nèi)部存儲(chǔ)和界面顯示的一致性。
問題7:嵌入式開發(fā)中SQL語(yǔ)句問題
解決方案:平時(shí)在數(shù)據(jù)庫(kù)中編寫SQL語(yǔ)句對(duì)于規(guī)范性的要求都比較熟悉,也比較好寫,不會(huì)存在換行問題,但是寫在C#語(yǔ)句時(shí),要注意換行的問題。SQL語(yǔ)句必須一行寫完,一些引號(hào)問題也要主要,不然會(huì)捕捉到錯(cuò)誤,查詢一直是失敗的。
一旦查詢失敗,系統(tǒng)也只會(huì)跳出提示框,尤其是SQL語(yǔ)句中的錯(cuò)誤特別難發(fā)現(xiàn),需要臺(tái)式很久,才能找到錯(cuò)誤的關(guān)鍵。通過(guò)增加斷點(diǎn)的方式逐步查看語(yǔ)句一步一步運(yùn)行的問題,查看變量屬性等來(lái)解決問題所在。
問題8:下拉框選擇問題
解決方案:參考書上的代碼,為了考慮人性化需求,下拉框內(nèi)顯示的都是實(shí)體的具體名稱,但是在系統(tǒng)內(nèi)部選擇的是它的編號(hào),所以在提取下拉框的內(nèi)容時(shí)需要使用SelectedValue來(lái)提取它的內(nèi)容。但是對(duì)于是預(yù)設(shè)好的下拉框,應(yīng)該使用SelectedItem來(lái)提取文本內(nèi)容,設(shè)計(jì)預(yù)設(shè)值也是考慮了用戶的需求問題。
7.2 系統(tǒng)設(shè)計(jì)的不足
1.觸發(fā)器還不夠多
本實(shí)驗(yàn)中一共建立了6個(gè)觸發(fā)器,在維護(hù)系統(tǒng)的完整性上起到了一定的作用,基本的觸發(fā)器都已經(jīng)建立。但在編寫報(bào)告時(shí)發(fā)現(xiàn)還是少了一些觸發(fā)器,比如刪除課程信息表中的課程信息時(shí)應(yīng)該也刪除選課表上的課程信息。這點(diǎn)設(shè)計(jì)的不足。
2.設(shè)計(jì)學(xué)生信息時(shí)應(yīng)該存儲(chǔ)學(xué)生的生日信息
在聽老師分析數(shù)據(jù)庫(kù)的時(shí)候,老師強(qiáng)調(diào)了應(yīng)該存儲(chǔ)一開始在設(shè)計(jì)時(shí)應(yīng)該在存年齡信息的時(shí)候應(yīng)該存儲(chǔ)生日日期,因?yàn)槟挲g會(huì)隨著世界變化,但是生日信息不會(huì),所以應(yīng)該存生日信息,數(shù)據(jù)庫(kù)系統(tǒng)才能穩(wěn)定。但是在模式分析的時(shí)候沒有考慮到這個(gè)問題,所以在這一點(diǎn)上設(shè)計(jì)的不足。
3.界面設(shè)計(jì)的還不是特別簡(jiǎn)便清晰:
因?yàn)樵诜治鰯?shù)據(jù)結(jié)構(gòu)的時(shí)候沒有充分考慮用戶需求,導(dǎo)致教師界面功能設(shè)計(jì)的有一點(diǎn)雜亂,教師界面一些功能是后期修改時(shí)才加上去的,有些功能可以有冗余,不知道怎么刪除比較好。
4.并發(fā)操作:
在這次的構(gòu)建系統(tǒng)中,沒有思考到并發(fā)操作這一問題。高校學(xué)生管理系統(tǒng)是一個(gè)多用戶會(huì)同時(shí)在線的系統(tǒng),如何保證在并發(fā)操作時(shí),實(shí)現(xiàn)數(shù)據(jù)的安全性、正確性是十分重要的。并發(fā)操作不可缺少。
7.3 進(jìn)一步改進(jìn)思路和體會(huì)
改進(jìn)思路:
1.增強(qiáng)系統(tǒng)的安全性,對(duì)于數(shù)據(jù)庫(kù)的實(shí)現(xiàn)功能也可以增加些,還有控制權(quán)限應(yīng)該要做得更好,做到對(duì)用戶隱私的保護(hù)。
2.使用戶可以同時(shí)登陸時(shí)數(shù)據(jù)系統(tǒng)的并發(fā)性要好,書本上對(duì)這一方面的知識(shí)有做詳細(xì)的介紹,可以根據(jù)書本和網(wǎng)絡(luò)的知識(shí)設(shè)計(jì)。
3.本實(shí)驗(yàn)沒有設(shè)計(jì)分區(qū),因?yàn)榉謪^(qū)設(shè)計(jì)適合數(shù)據(jù)量達(dá)到額數(shù)據(jù)庫(kù),因?yàn)椴迦霐?shù)據(jù)時(shí)不方便插很多,為了方便測(cè)試所以數(shù)據(jù)量比較少。但是如果要考慮到實(shí)際的需求,還是要設(shè)計(jì)分區(qū)。
4.雖然做不到現(xiàn)在正方教務(wù)系統(tǒng)那么完善,但是也應(yīng)該再增加一些信息查詢,比如正方會(huì)自動(dòng)檢測(cè)課表沖突問題,可根據(jù)模塊篩選可選課程,根據(jù)上課教室安排各個(gè)班的課表和老師的課表,所以我的數(shù)據(jù)庫(kù)仍然要做許多的優(yōu)化,更接近高校成績(jī)管理系統(tǒng)。
數(shù)據(jù)庫(kù)建立源代碼(若有C# 代碼需求可私信發(fā)郵箱號(hào)哈??):文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-477947.html
create table Xun_Teachers18(
xn_Tno18 char(10) PRIMARY KEY NOT NULL,
xn_Tname18 char(10) NOT NULL,
xn_Tsex18 char(5),
xn_Tage18 int,
xn_Ttell18 char(20),
xn_Tpos18 char(10)
)
create table Xun_Course18(
xn_Cno18 char(10) PRIMARY KEY NOT NULL,
xn_Cname18 char(10) NOT NULL,
xn_Csemester18 char (20),
xn_Chour18 int check (xn_Chour18>0) ,
xn_Cinspect18 char(5),
xn_Ccredit18 float check (xn_Ccredit18>0),
xn_Tname18 char(10)
)
create table Xun_Major18(
xn_Mno18 char(10) PRIMARY KEY NOT NULL,
xn_Mname18 char(10) NOT NULL
)
create table Xun_Class18(
xn_CLno18 char(10) PRIMARY KEY NOT NULL,
xn_CLname18 char(10) NOT NULL,
xn_Mno18 char(10)
CONSTRAINT cm FOREIGN KEY(xn_Mno18 )
REFERENCES Xun_Major18
)
CREATE TABLE Xun_Students18
(
xn_Sno18 char(12) PRIMARY KEY NOT NULL,
xn_Sname18 char(10) NOT NULL,
xn_Ssex18 char(5),
xn_Sage18 int,
xn_Sregion18 char(20),
xn_Scredit18 float ,
xn_CLno18 char(10),
CONSTRAINT scl FOREIGN KEY(xn_CLno18)
REFERENCES Xun_Class18
)
create table Xun_TeachingCourse18(
xn_Tno18 char(10) NOT NULL,
xn_Cno18 char(10) NOT NULL,
PRIMARY KEY(xn_Tno18,xn_Cno18),
CONSTRAINT tc_1 FOREIGN KEY(xn_Tno18)
REFERENCES Xun_Teachers18,
CONSTRAINT tc_2 FOREIGN KEY(xn_Cno18)
REFERENCES Xun_Course18
)
create table Xun_TeachingClass18(
xn_Tno18 char(10) NOT NULL,
xn_CLno18 char(10) NOT NULL,
PRIMARY KEY(xn_Tno18,xn_CLno18),
CONSTRAINT tcl_1 FOREIGN KEY(xn_Tno18)
REFERENCES Xun_Teachers18,
CONSTRAINT tcl_2 FOREIGN KEY(xn_CLno18)
REFERENCES Xun_Class18
)
create table Xun_CourseClass18(
xn_CLno18 char(10) NOT NULL,
xn_Cno18 char(10) NOT NULL,
PRIMARY KEY( xn_Cno18 ,xn_CLno18),
CONSTRAINT ccl_1 FOREIGN KEY(xn_CLno18)
REFERENCES Xun_Class18,
CONSTRAINT ccl_2 FOREIGN KEY(xn_Cno18)
REFERENCES Xun_Course18
)
create table Xun_Reports18(
xn_Sno18 char(12) not null,
xn_Cno18 char(10) not null,
xn_Tname18 char(10) not null,
xn_Csemesters18 char(10),
xn_Score18 int,
PRIMARY KEY( xn_Cno18 ,xn_Sno18),
CONSTRAINT r1 FOREIGN KEY(xn_Cno18)
REFERENCES Xun_Course18,
CONSTRAINT r2 FOREIGN KEY(xn_Sno18)
REFERENCES Xun_Students18
)
用戶密碼表:
create table Xun_studentMima18
(
xn_Sno18 char(10) PRIMARY KEY NOT NULL,
xn_Smima18 char(5) NOT NULL,
)
create table Xun_teacherMima18
(
xn_Tno18 char(10) PRIMARY KEY NOT NULL,
xn_Tmima18 char(5) NOT NULL,
)
create table Xun_admMima18
(
xn_Ano18 char(10) PRIMARY KEY NOT NULL,
xn_Amima18 char(5) NOT NULL,
)
專業(yè)表數(shù)據(jù):
insert into Xun_Major18
values('M01','計(jì)智')
insert into Xun_Major18
values('M02','計(jì)科')
insert into Xun_Major18
values('M03','網(wǎng)工')
insert into Xun_Major18
values('M04','軟工')
教師表數(shù)據(jù):
insert into Xun_Teachers18
values('T01','程珍','女','30','12353452453','講師')
insert into Xun_Teachers18
values('T02','潘翔','男','35','13553452453','講師')
insert into Xun_Teachers18
values('T03','陳建麗','女','35','17353452453','教授')
insert into Xun_Teachers18
values('T04','黃亮','男','30','15453452453','講師')
insert into Xun_Teachers18
values('T05','王涌','男','40','17853452453','教授')
insert into Xun_Teachers18
values('T06','趙冬冬','男','30','12753452453','講師')
insert into Xun_Teachers18
values('T07','胡海根','男','35','15473452453','講師')
insert into Xun_Teachers18
values('T08','周文','女','30','19353452453','講師')
班級(jí)表:
insert into Xun_Class18
values('CL01','計(jì)智1901','M01')
insert into Xun_Class18
values('CL02','計(jì)智1902','M01')
insert into Xun_Class18
values('CL03','計(jì)科1901','M02')
insert into Xun_Class18
values('CL04','計(jì)科1902','M02')
insert into Xun_Class18
values('CL05','網(wǎng)工1901','M03')
insert into Xun_Class18
values('CL06','網(wǎng)工1902','M03')
insert into Xun_Class18
values('CL07','軟工1901','M04')
insert into Xun_Class18
values('CL08','軟工1902','M04')
課程表:
insert into Xun_Course18
values('C01','復(fù)變函數(shù)','大二上','48','考試','3','程珍')
insert into Xun_Course18
values('C02','復(fù)變函數(shù)','大二上','48','考試','3','潘翔')
insert into Xun_Course18
values('C03','離散數(shù)學(xué)','大一下','48','考試','3','陳建麗')
insert into Xun_Course18
values('C04','離散數(shù)學(xué)','大一下','48','考試','3','黃亮')
insert into Xun_Course18
values('C05','機(jī)器學(xué)習(xí)','大二下','48','考核','3','王涌')
insert into Xun_Course18
values('C06','機(jī)器學(xué)習(xí)','大二下','48','考核','3','趙冬冬')
insert into Xun_Course18
values('C07','計(jì)組','大二下','32','考試','2','胡海根')
insert into Xun_Course18
values('C08','計(jì)組','大二下','32','考試','2','周文')
insert into Xun_Course18
values('C09','算法設(shè)計(jì)','大二下','48','考試','3','黃亮')
學(xué)生:
insert into Xun_Students18
values('S01','樂樂','女','20','浙江省','56','CL01')
insert into Xun_Students18
values('S02','琪琪','女','20','浙江省','46','CL01')
insert into Xun_Students18
values('S03','小貝','男','20','浙江省','50','CL02')
insert into Xun_Students18
values('S04','玲玲','女','20','江蘇省','30','CL02')
insert into Xun_Students18
values('S05','可可','女','19','江蘇省','46','CL03')
insert into Xun_Students18
values('S06','小宇','男','20','浙江省','36','CL03')
insert into Xun_Students18
values('S07','小潔','女','20','浙江省','50','CL04')
insert into Xun_Students18
values('S08','小星','女','20','湖南省','53','CL04')
insert into Xun_Students18
values('S09','張亞','女','20','河南省','60','CL05')
insert into Xun_Students18
values('S10','張三','男','19','浙江省','30','CL05')
insert into Xun_Students18
values('S11','張寧','女','20','浙江省','42','CL06')
insert into Xun_Students18
values('S12','張瑩','女','20','湖南省','32','CL06')
insert into Xun_Students18
values('S13','王昊棟','男','20','浙江省','22','CL07')
insert into Xun_Students18
values('S14','陳沁如','女','20','浙江省','52','CL07')
insert into Xun_Students18
values('S15','徐妮','女','20','浙江省','54','CL08')
insert into Xun_Students18
values('S16','徐敏','女','20','浙江省','46','CL08')
teaching_course表:
insert into Xun_TeachingCourse18
values('T01','C01')
insert into Xun_TeachingCourse18
values('T02','C02')
insert into Xun_TeachingCourse18
values('T03','C03')
insert into Xun_TeachingCourse18
values('T04','C04')
insert into Xun_TeachingCourse18
values('T05','C05')
insert into Xun_TeachingCourse18
values('T06','C06')
insert into Xun_TeachingCourse18
values('T07','C07')
insert into Xun_TeachingCourse18
values('T08','C08')
insert into Xun_TeachingCourse18
values('T04','C09')
Teaching class表:
insert into Xun_TeachingClass18
values('T01','CL01')
insert into Xun_TeachingClass18
values('T02','CL02')
insert into Xun_TeachingClass18
values('T03','CL03')
insert into Xun_TeachingClass18
values('T04','CL04')
insert into Xun_TeachingClass18
values('T05','CL05')
insert into Xun_TeachingClass18
values('T06','CL06')
insert into Xun_TeachingClass18
values('T07','CL07')
insert into Xun_TeachingClass18
values('T08','CL08')
course_class表:
insert into Xun_CourseClass18
values('CL01','C01')
insert into Xun_CourseClass18
values('CL02','C02')
insert into Xun_CourseClass18
values('CL03','C03')
insert into Xun_CourseClass18
values('CL04','C04')
insert into Xun_CourseClass18
values('CL05','C05')
insert into Xun_CourseClass18
values('CL06','C06')
insert into Xun_CourseClass18
values('CL07','C07')
insert into Xun_CourseClass18
values('CL08','C08')
insert into Xun_CourseClass18
values('CL04','C09')
reports表:
insert into Xun_Reports18
values('S01','C01','T01','大二上','80')
insert into Xun_Reports18
values('S02','C01','T01','大二上','90')
insert into Xun_Reports18
values('S01','C01','T01','大二上','80')
insert into Xun_Reports18
values('S01','C01','T01','大二上','80')
insert into Xun_Reports18
values('S01','C01','T01','大二上','80')
insert into Xun_Reports18
values('S01','C01','T01','大二上','80')
insert into Xun_Reports18
values('S01','C01','T01','大二上','80')
insert into Xun_Reports18
values('S01','C01','T01','大二上','80')
report:
insert into Xun_Reports18
values('S01','C01','T01','大二上','80')
insert into Xun_Reports18
values('S02','C01','T01','大二上','90')
insert into Xun_Reports18
values('S03','C02','T02','大二上','70')
insert into Xun_Reports18
values('S04','C02','T02','大二上','95')
insert into Xun_Reports18
values('S05','C03','T03','大一下','70')
insert into Xun_Reports18
values('S06','C03','T03','大一下','87')
insert into Xun_Reports18
values('S07','C04','T04','大一下','65')
insert into Xun_Reports18
values('S07','C09','T04','大二下','98')
insert into Xun_Reports18
values('S08','C04','T04','大一下','74')
insert into Xun_Reports18
values('S08','C09','T04','大二下','67')
insert into Xun_Reports18
values('S09','C05','T05','大二下','88')
insert into Xun_Reports18
values('S10','C05','T05','大二下','83')
insert into Xun_Reports18
values('S11','C06','T06','大二下','80')
insert into Xun_Reports18
values('S12','C06','T06','大二下','94')
insert into Xun_Reports18
values('S13','C07','T07','大二下','87')
insert into Xun_Reports18
values('S14','C07','T07','大二下','77')
insert into Xun_Reports18
values('S15','C08','T08','大二下','91')
insert into Xun_Reports18
values('S16','C08','T08','大二下','90')
1.視圖學(xué)生成績(jī):
create view Xun_StudentsScore
as
select Xun_Reports18.xn_Sno18,
xn_Sname18,xn_Cname18,
Xun_Teachers18.xn_Tname18,
Xun_Reports18.xn_Csemesters18,
Xun_Reports18.xn_Score18,
xn_CLname18
from Xun_Reports18,Xun_Class18,Xun_Students18,Xun_Course18,Xun_Teachers18
where Xun_Reports18.xn_Sno18=Xun_Students18.xn_Sno18
and Xun_Reports18.xn_Cno18=Xun_Course18.xn_Cno18
and Xun_Class18.xn_CLno18=Xun_Students18.xn_CLno18
and Xun_Reports18.xn_Tname18=xn_Tno18
2.視圖每門課平均成績(jī):
create view Xun_EachCourseAvgS
as
select AVG(Xun_Reports18.xn_Score18) avg_Score,xn_Cname18
from Xun_Reports18,Xun_Course18
where Xun_Course18.xn_Cno18=Xun_Reports18.xn_Cno18
group by Xun_Course18.xn_Cname18
3.學(xué)生各門課學(xué)分視圖:
create view Xun_StudenCredit
as
select Xun_Students18.xn_Sno18,xn_Sname18,xn_Cname18,xn_Ccredit18
from Xun_Students18,Xun_Reports18,Xun_Course18
where Xun_Students18.xn_Sno18=Xun_Reports18.xn_Sno18
and Xun_Reports18.xn_Cno18=Xun_Course18.xn_Cno18
4.教師課表視圖:
create view Xun_TeacherCourse
as
select Xun_Teachers18.xn_Tno18,Xun_Teachers18.xn_Tname18,Xun_Course18.xn_Cno18,xn_Cname18,
xn_Chour18,xn_Ccredit18,xn_Csemester18
from Xun_Teachers18,Xun_TeachingCourse18,Xun_Course18
where Xun_Teachers18.xn_Tno18=Xun_TeachingCourse18.xn_Tno18
and Xun_TeachingCourse18.xn_Cno18=Xun_Course18.xn_Cno18
5.班級(jí)表視圖:
create view Xun_ClassExcel
as
select Xun_Class18.xn_CLno18,xn_CLname18,
Xun_Course18.xn_Cno18,xn_Cname18,
xn_Ccredit18,xn_Chour18,xn_Csemester18
from Xun_Class18,Xun_CourseClass18,Xun_Course18
where Xun_Class18.xn_CLno18=Xun_CourseClass18.xn_CLno18
and Xun_Course18.xn_Cno18=Xun_CourseClass18.xn_Cno18
6.地區(qū)學(xué)生視圖:
create view Xun_StudentRegion
as
select xn_Sregion18,count(xn_Sno18) 地區(qū)學(xué)生總數(shù)
from Xun_Students18
group by xn_Sregion18
7.視圖老師教學(xué)生:
create view Xun_TeachingStu18
as
select Xun_StudentsScore.xn_Sno18,xn_Sname18,xn_Tno18, Xun_StudentsScore.xn_Tname18,xn_Cname18,xn_Csemesters18,xn_CLname18,xn_Score18
from Xun_StudentsScore ,Xun_Teachers18
where Xun_StudentsScore.xn_Tname18=Xun_Teachers18.xn_Tname18
8.視圖老師教班級(jí)
create view Xun_TeachingClassN18
as
select Xun_Teachers18.xn_Tno18,xn_Tname18, Xun_Class18.xn_CLno18,xn_CLname18,xn_Mno18
from Xun_Class18,Xun_TeachingClass18,Xun_Teachers18
where Xun_TeachingClass18.xn_Tno18=Xun_Teachers18.xn_Tno18
and Xun_TeachingClass18.xn_CLno18=Xun_Class18.xn_CLno18
索引建立:
create unique index xn_Tea_Tno18 on Xun_Teachers18(xn_Tno18)
create unique index xn_Cour_Cno18 on Xun_Course18(xn_Cno18)
create unique index xn_Mno_CLno18 on Xun_Class18(xn_CLno18,xn_Mno18)
create unique index xn_Majo_Mno18 on Xun_Major18(xn_Mno18)
create unique index xn_CLno_Sno18 on Xun_Students18(xn_Sno18,xn_CLno18)
create unique index xn_Cno_Sno18 on Xun_Reports18(xn_Sno18,xn_Cno18)
觸發(fā)器:
1.更新總學(xué)分:
create trigger Xun_TotalCredit on Xun_Reports18
for insert
as
update Xun_Students18
set xn_Scredit18=(
select sum(xn_Ccredit18)
from Xun_Course18
where xn_Cno18 in(
select xn_Cno18 from Xun_Reports18
where xn_Score18>=60
and Xun_Reports18.xn_Sno18 in(
select xn_Sno18 from inserted
) ) )
where Xun_Students18.xn_Sno18 in(
select xn_Sno18
from inserted)
2.刪除教師信息:
create trigger Xun_DeleteTeachers18
on Xun_Teachers18
for delete
as
delete xn_Tno18
where Xun_TeachingCourse18.xn_Tno18=(select xn_Tno18 from deleted)
and Xun_TeachingClass18.xn_Tno18=(select xn_Tno18 from deleted )
and Xun_teacherMima18.xn_Tno18=(select xn_Tno18 from deleted )
3.更新教師信息:
create trigger Xun_UpdateTeachers
on Xun_Teachers18
for update
as
if update(xn_Tno18)
begin
update Xun_TeachingCourse18
set xn_Tno18=i.xn_Tno18
from deleted d,inserted i ,Xun_TeachingCourse18 t
where t.xn_Tno18=d.xn_Tno18
end
begin
update Xun_TeachingClass18
set xn_Tno18=i.xn_Tno18
from deleted d,inserted i,Xun_TeachingClass18 c
where c.xn_Tno18=d.xn_Tno18
end
4.刪除學(xué)生的觸發(fā)器:
create trigger Xun_delteStu18
on Xun_Students18
for delete
as
begin
delete from Xun_Reports18
where Xun_Reports18.xn_Sno18 in (select xn_Sno18 from deleted)
delete from Xun_studentMima18
where Xun_studentMima18.xn_Sno18 in(select xn_Sno18 from deleted)
end
5.添加新學(xué)生注冊(cè)賬號(hào)密碼的觸發(fā)器
create trigger Xun_AddStu18
on Xun_Students18
for insert
as
declare @sno char (10)
begin
select @sno= xn_Sno18 from inserted
insert into Xun_studentMima18
values (@sno,'12345')
end
6.添加新老師注冊(cè)賬號(hào)密碼的觸發(fā)器
create trigger Xun_AddTea18
on Xun_Teachers18
for insert
as
declare @tno char(10)
begin
select @tno=xn_Tno18 from inserted
insert into Xun_teacherMima18
values(@tno,'12345')
end
存儲(chǔ)過(guò)程1:
create procedure Xun_insertStudents18
@sno char(20),
@sname char (12),
@ssex char(5),
@sage int,
@sregion char (10),
@scredit float,
@sclass char(10)
as
insert Xun_Students18(xn_Sno18,xn_Sname18,xn_Ssex18,xn_Sage18,xn_Sregion18,xn_Scredit18,xn_CLno18)
values(@sno,@sname ,@ssex,@sage,@sregion,@scredit,@sclass)
select *
from Xun_Students18
go
存儲(chǔ)過(guò)程2:
create procedure Xun_ScreditAu18
@sno char(12),
@cno char(10),
@cname char(18),
@tname char(10),
@cmester char(10),
@score int,
@credit float
as
begin
insert into Xun_learning18
values(@sno,@cno,@score)
update Xun_Students18
set Xun_Students18.xn_Scredit18+=@credit
where Xun_Students18.xn_Sno18=@sno
end
窗體中用到的對(duì)應(yīng)表和視圖:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-477947.html
管理員查詢生源地:
Xun_StudentRegion18:Xun_Students18
管理員查成績(jī):
Xun_StudentsScore: Xun_Reports18,
Xun_Class18,
Xun_Students18,
Xun_Course18,
Xun_Teachers18
管理員修改自己的密碼;
Xun_teacherMima18
重置其他的密碼:
Xun_studentMima18
Xun_teacherMima18
其他基本信息都從基本信息中導(dǎo)出
學(xué)生查成績(jī):
Xun_StudentsScore: Xun_Reports18,
Xun_Class18,
Xun_Students18,
Xun_Course18,
Xun_Teachers18
學(xué)生查學(xué)分:
Xun_StudenCredit:Xun_Students18,
Xun_Reports18,
Xun_Course18
學(xué)生查課表:
Xun_Reports18
學(xué)生查班級(jí)課程:
Xun_ClassExcel :Xun_Class18
Xun_CourseClass18,
Xun_Course18
學(xué)生查教師課表:
Xun_TeacherCourse:Xun_Teachers18,
Xun_TeachingCourse18,
Xun_Course18
教師查學(xué)生:
Xun_TeachingStu18:Xun_Reports18,
Xun_Class18,
Xun_Students18,
Xun_Course18,
Xun_Teachers18
只能查看自己教的學(xué)生
教師個(gè)人授課信息查詢:
上課班級(jí):Xun_TeachingClassN18:
Xun_Class18,
Xun_TeachingClass18,
Xun_Teachers18
教授課程:Xun_TeacherCourse:
Xun_Teachers18,
Xun_TeachingCourse18,
Xun_Course18
教師查詢所有教師課程:
Xun_TeacherCourse: Xun_Teachers18,
Xun_TeachingCourse18,
Xun_Course18
個(gè)人基本信息:
Xun_Teachers18
教師查課程平均分:
Xun_EachCourseAvgS18:
Xun_Reports18,
Xun_Course18
所有課程,可以選擇
教師查學(xué)生排名:
按課程查排名:Xun_Reports18
按學(xué)期查排名:Xun_Reports18
插入,修改學(xué)生成績(jī):Xun_Reports18
排名查詢:
SELECT
a.xn_Sno18,a.xn_Cno18, a.xn_Score18 AS Score,
COUNT( DISTINCT b.xn_Score18) AS Rank
FROM Xun_Reports18 a,Xun_Reports18 b
WHERE b.xn_Score18 >= a.xn_Score18
and a.xn_Csemesters18='選定學(xué)期'
and b.xn_Csemesters18='選定學(xué)期'
GROUP BY
a.xn_Sno18,a.xn_Score18,a.xn_Cno18
ORDER BY
a.xn_Score18 DESC
到了這里,關(guān)于高校成績(jī)管理數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!