版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘 要</b></p><p> 大學期間總會有很多公共選修課,以往的選課方法是隨堂報名。這種方法雖然直接,但是造成選課的盲目性,有些課堂選課時人滿為患,有些課堂無人選課。原因是傳統(tǒng)的選課方法沒有預見性,大家沒有事先協(xié)調好。使用了網(wǎng)上選課系統(tǒng)以后,可以在開課前就在網(wǎng)上選課,每個學生的課程在開課前就確定好,不用浪費體力去選課,還可以使教學資源合理平均地分配。該
2、B/S結構的系統(tǒng)在Windows XP系統(tǒng)和VS.NET平臺下開發(fā)完成,使用C#作為ASP.NET的開發(fā)語言,SQL Server 2000作為數(shù)據(jù)庫。系統(tǒng)有較高的安全性和較好的性能。其中連接數(shù)據(jù)庫的字符串可以隨時在web.config里修改,并經(jīng)過編碼加密,增加了靈活性,保護了數(shù)據(jù)庫的安全。代碼中通過使用進程中的Session、盡量使用存儲過程和盡量減少數(shù)據(jù)庫連接的打開時間等手段來提高性能。通過分析B/S結構的特點并結合我校公共選修課
3、的實際情況,提出了基于B/S結構網(wǎng)上選課系統(tǒng)的基本設計思想,簡要介紹了系統(tǒng)各功能模塊及數(shù)據(jù)庫的設計,著重討論了用 ASP.NET技術和SQL Server 2000開發(fā)網(wǎng)上選課系統(tǒng)時的數(shù)據(jù)庫訪問技術和動態(tài)網(wǎng)頁制作技術,并給出了部分實現(xiàn)</p><p> 關鍵詞:網(wǎng)上選課; 瀏覽器/服務器結構; 數(shù)據(jù)庫管理系統(tǒng); 存儲過程</p><p><b> ABSTRACT</b
4、></p><p> There are many public elective courses during university period, and always we should goto classroom to enroll. Although this method directly, but result in blindness of the course enrollment.
5、Some classrooms overcrowding during course choosing period, on the contrary some classrooms desolate. The reason of this situation is that the traditional method of course choosing lack prescience, and there are no prior
6、 coordination. With the help of public elective courses online course elect system, eve</p><p> Keywords: online course elect; B/S structure; DBMS; stored procedure</p><p><b> 目 錄<
7、/b></p><p><b> 緒 論1</b></p><p><b> 課題背景1</b></p><p> 課題研究的目的和意義1</p><p><b> 國內(nèi)外概況1</b></p><p> Browser/Ser
8、ver結構2</p><p> ASP.NET和ADO.NET2</p><p><b> 本文的工作4</b></p><p> 第一章 需求分析5</p><p> 1.1 系統(tǒng)簡介5</p><p> 1.2 系統(tǒng)運行環(huán)境5</p><p>
9、 1.2.1 硬件平臺5</p><p> 1.2.2 操作系統(tǒng)5</p><p> 1.2.3 應用軟件及開發(fā)平臺5</p><p> 1.3 系統(tǒng)的功能需求5</p><p> 1.4 系統(tǒng)的數(shù)據(jù)需求6</p><p> 第二章 系統(tǒng)設計7</p><p>
10、 2.1 系統(tǒng)的數(shù)據(jù)庫設計7</p><p> 2.1.1 數(shù)據(jù)流圖7</p><p> 2.1.2 數(shù)據(jù)字典8</p><p> 2.1.3 系統(tǒng)的主要E-R圖10</p><p> 2.1.4 模式圖(shema diagram)11</p><p> 2.1.5 表的設計12&
11、lt;/p><p> 2.1.6 數(shù)據(jù)庫模式所達到的范式分析15</p><p> 2.1.7 觸發(fā)器的設計16</p><p> 2.1.8 存儲過程的設計17</p><p> 2.2 系統(tǒng)功能設計21</p><p> 2.2.1 學生模塊22</p><p>
12、 2.2.2 管理員模塊22</p><p> 第三章 系統(tǒng)實現(xiàn)23</p><p> 3.1 網(wǎng)業(yè)設計23</p><p> 3.1.1 學生頁面設計23</p><p> 3.1.2 管理員頁面設計27</p><p> 3.2 功能模塊設計28</p><p>
13、; 3.2.1學生模塊設計29</p><p> 3.2.2管理員模塊設計30</p><p> 3.3 身份認證設計31</p><p> 3.4 連接數(shù)據(jù)庫的相關設計34</p><p> 3.4.1 連接字符串相關問題34</p><p> 3.4.2 綁定數(shù)據(jù)庫數(shù)據(jù)的相關設計36
14、</p><p> 3.5 優(yōu)化性能的相關設計37</p><p> 3.5.1 使用存儲在進程中的Session37</p><p> 3.5.2 數(shù)據(jù)庫連接打開的時間盡可能短38</p><p> 3.5.3 使用帶有參數(shù)的SQL命令38</p><p> 3.5.4 使用SQL Ser
15、ver存儲過程38</p><p><b> 總結與展望39</b></p><p><b> 致 謝41</b></p><p><b> 參考文獻42</b></p><p><b> 緒 論</b></p>&l
16、t;p><b> 課題背景</b></p><p> 在信息全球化、網(wǎng)絡化的今天,校園網(wǎng)已成為每所高校必備的信息基礎設施,也成為學校提高教學管理水平的重要手段。為了更好地實現(xiàn)管理的科學化、現(xiàn)代化,進一步提高教學質量和管理水平,各種依托于校園網(wǎng)的管理信息系統(tǒng)應運而生。選修課網(wǎng)上選課系統(tǒng)就是這些信息系統(tǒng)中不可或缺的一員。以往的選課方法是隨堂報名。這種方法雖然直接,但是存在很多弊病,如造
17、成選課的盲目性,去不同的課堂報名的學生人數(shù)天壤之別,浪費學生的時間和體力,使教學資源不能得到合理的充分利用。這些都是因為傳統(tǒng)的選課方法沒有預見性,大家沒有事先協(xié)調好。這就需要有一個選修課網(wǎng)上選課系統(tǒng)來改變這種現(xiàn)狀,在課程開始之前就安排好各個學生要上的課程,合理充分地利用好教學資源。</p><p> 課題研究的目的和意義</p><p><b> 課題研究的意義:</b
18、></p><p> (1) 給出解決傳統(tǒng)選課方式浪費時間和精力的問題的方法,討論實現(xiàn)一個網(wǎng)上選課系統(tǒng)的可行性,使在網(wǎng)上進行選課成為可能;</p><p> (2) 對一個基于B/S結構的選修課網(wǎng)上選課系統(tǒng)進行設計并具體實現(xiàn),做出一個可以完成基本選課功能及學生信息管理、教師信息管理和課程信息管理功能的MIS系統(tǒng)。</p><p><b> 國內(nèi)
19、外概況</b></p><p> 選修課網(wǎng)上選課系統(tǒng)已經(jīng)出現(xiàn)很長時間了,實現(xiàn)該系統(tǒng)的方法也多種多樣,主要有JSP+MySql+Tomcat,PHP+MySql+Apache,ASP+SQL Server+IIS和ASP.NET+SQL Server+IIS等。這些實現(xiàn)方法中前三種的開發(fā)語言都是HTML設計代碼和后臺編程代碼不分離的,造成代碼不容易讀懂和不利于后期維護。ASP.NET是微軟推出的新一代
20、開發(fā)工具,實現(xiàn)了HTML設計代碼與后臺編程代碼的分離。該系統(tǒng)中使用ASP.NET+SQL Server+IIS,主要考慮到同學們選課主要使用Windows系統(tǒng),對ASP.NET支持良好,而且ASP.NET代碼更易于維護。對于數(shù)據(jù)庫存取操作,多數(shù)系統(tǒng)直接將SQL語句寫在代碼里進行數(shù)據(jù)庫查詢,在該系統(tǒng)中,絕大部分功能都使用存儲過程來完成數(shù)據(jù)庫訪問的工作。</p><p> Browser/Server結構</
21、p><p> Browser/Server(B/S)結構是一種以Web技術為基礎的新型的MIS系統(tǒng)平臺模式。他把傳統(tǒng)的 C/S結構中的服務器部分分解為一個數(shù)據(jù)服務器與一個或多個應用服務器(web服務器),從而構成一個三層結構的客戶服務器體系[1]如圖1.1所示。</p><p> 圖1.1 三層B/S結構</p><p> 采用這種胖服務器端,瘦客戶端的運行模式,
22、主要的數(shù)據(jù)計算操作都在服務器端進行,應用程序也在服務器端安裝,客戶端不用安裝應用程序,所有操作均通過瀏覽器來完成。與傳統(tǒng)的C/S結構相比,它具備以下的優(yōu)點: </p><p> (1)簡化了客戶端,客戶端軟件僅需安裝瀏覽器,客戶端硬件配置要求較低。 </p><p> (2)使用戶的操作變得更簡單,用戶只需了解瀏覽器的使用,就可訪問不同的應用,獲取所需的信息。 </p>
23、<p> (3)特別適用于網(wǎng)上信息發(fā)布與獲取,使得傳統(tǒng)的MIS的功能有所擴展。 </p><p> 鑒于B/S結構的諸多優(yōu)點與本系統(tǒng)的實際需求,最終決定采用 B/S結構。 </p><p> ASP.NET和ADO.NET</p><p> Visual Studio.NET是Microsoft公司推出的可視化編程工具,ASP.NET作為Visua
24、l Studio.NET 的組成部分之一,已經(jīng)成為Internet中Web應用程序的新 一代開發(fā)工具,并逐漸被廣大程序員普遍采用[2]。</p><p> 在微軟的.NET戰(zhàn)略中,ASP.NET是非常重要的一環(huán),它相對于以前的ASP有了相當大的改進。相對于其他的Web應用開發(fā)模型來講,ASP.NET具有更大的優(yōu)勢,其主要特點包括:</p><p> ASP.NET與其前版ASP不同
25、,它是在服務器上運行的編譯好的公用語言運行時代碼,可以更好地提高程序運行性能。</p><p> ASP.NET與語言無關,它可以采用C#、VB.NET以及Jscript等支持.NET框架的語言來進行開發(fā),開發(fā)者可以根據(jù)自己的情況進行選擇。在這個系統(tǒng)中使用的是C#作為開發(fā)語言。C#是一門嶄新的語言,學過C++的很容易掌握它,而且它和Java也有很多相似之處。它具有開發(fā)效率高,應用范圍廣等特點,成為當前程序開發(fā)領
26、域的一大熱門。</p><p> ASP.NET支持開發(fā)Web服務,它對XML技術提供了很好的支持,使得Web應用程序的開發(fā)更具可擴展性和跨平臺性。</p><p> ASP.NET提供了很多功能強大的服務器端控件,使得程序的開發(fā)更趨于簡單化。同時,它還提供了HTML設計代碼和后臺編程代碼分離的技術,并在后臺代碼開發(fā)中提供強大的智能化支持,使得開發(fā)工具更具有條理性。</p>
27、<p> 采用ASP.NET技術開發(fā)的系統(tǒng)在性能上有了很大的改善,其主要表現(xiàn)在以下幾方面: </p><p> (1)由于ASP頁面每次打開都必須經(jīng)過先編譯后解釋的過程,所以頁面在反復打開時速度沒有任何提升,而ASP.NET頁面只需要一次編譯后不需要再重新編譯,直到該頁面被修改或 Web應用程序重新啟動。這使得在多次訪問時速度有了極大的提升。尤其在這種訪問量很大,很多人同時并發(fā)訪問的情況下,訪問
28、速度的提升更加明顯。</p><p> (2)由于ASP沒有提供任何輸出數(shù)據(jù)為內(nèi)容的元件,所以在使用ASP撰寫數(shù)據(jù)庫頁面時只能借助ADO的RecordSet對象逐筆讀取記錄,而ASP.NET 通過ADO.NET提供的DataGrid等數(shù)據(jù)庫元件可以直接和數(shù)據(jù)庫聯(lián)系。在這個選課系統(tǒng)中就是用DataGrid綁定查詢結果來展示課程信息,并在DataGrid的列里綁定按鈕進行相應的刪除和編輯等操作。</p>
29、<p> (3)ASP.NET支持應用程序的實時更新。管理員不必關掉網(wǎng)絡服務器或者甚至不用停止應用程序的運行就可以更新應用文件。應用程序文件永遠不會被加鎖,因此甚至在程序運行時文件就可以被覆蓋。當文件更新后,系統(tǒng)會溫和地轉換到新的版本。 </p><p> (4)ASP.NET采取”code—behind”方式編寫代碼,使得代碼更易于編寫,結構更清晰,降低了系統(tǒng)的開發(fā)與維護的復雜度和費用[3]。
30、</p><p> ADO.NET用來訪問數(shù)據(jù)庫。與數(shù)據(jù)庫相連,ADO.NET提供了如下3種方式:通過ODBC相連;通過OLEDB相連;直接與SQL Server相連。3種方式由于應用層次的差異,使得效率由低到高,獨立性由高到低。在這個系統(tǒng)中,使用SQL Server作為數(shù)據(jù)庫,保證了系統(tǒng)的高效 [4]。</p><p> 傳統(tǒng)的應用程序是通過先建立到數(shù)據(jù)庫的連接,在程序的整個運行過程
31、中維護連接的方式來設計的。ASP.NET采取了斷開連接方式的數(shù)據(jù)結構。當瀏覽器向Web服務器請求網(wǎng)頁時,服務器處理這個請求,并將所請求的網(wǎng)頁發(fā)送給瀏覽器,然后連接就被斷開,直到瀏覽器發(fā)出下一個請求。</p><p> ADO.NET的另一個創(chuàng)新是引人了數(shù)據(jù)集(Dataset)。一個數(shù)據(jù)集是內(nèi)存中提供數(shù)據(jù)關系圖的高速緩沖區(qū)。數(shù)據(jù)集對數(shù)據(jù)源一無所知,它們可以由程序或通過從數(shù)據(jù)倉庫中調入數(shù)據(jù)而被生成、填充。不論數(shù)據(jù)從
32、何處獲取,數(shù)據(jù)集都是通過使用同樣的程序模板而被操作的,并且它使用相同的潛在的數(shù)據(jù)緩沖區(qū)。 </p><p><b> 本文的工作</b></p><p> 本文以 Visual Studio.NET為開發(fā)工具,使用ASP.NET(C#)為開發(fā)語言[5],以SQL Server 2000為后臺數(shù)據(jù)庫,在需求分析的基礎上,提出了系統(tǒng)的設計,并最終實現(xiàn)了選修課網(wǎng)上選
33、課系統(tǒng).。系統(tǒng)的主要功能有: 課程信息的管理,教師信息的管理,學生信息的管理和學生網(wǎng)上選課的管理。</p><p> 第1章介紹了當前選課系統(tǒng)的發(fā)展現(xiàn)狀,開發(fā)工具和一些背景知識。</p><p> 第2章對該系統(tǒng)進行了需求分析。</p><p> 第3至4章介紹了系統(tǒng)設計與系統(tǒng)的具體實現(xiàn)。</p><p><b> 第一章
34、需求分析</b></p><p><b> 1.1 系統(tǒng)簡介</b></p><p> 這是一個在Visual Studio.NET集成環(huán)境中使用C#開發(fā)出來的系統(tǒng),可以在任何安裝有IIS(Internet Information Services)和Microsoft.net framework的windows系統(tǒng)下安裝服務器端,數(shù)據(jù)庫可以放在本地
35、,也可以放在網(wǎng)絡上的任意位置。但是服務器和數(shù)據(jù)庫連接的網(wǎng)絡帶寬要足夠大,從而保證數(shù)據(jù)存取的快速有效。在任何裝有瀏覽器并可以上網(wǎng)的電腦上都可以訪問該系統(tǒng)。</p><p> 1.2 系統(tǒng)運行環(huán)境</p><p> 1.2.1 硬件平臺</p><p> Intel或AMD平臺,CPU 1G以上,內(nèi)存128M以上,硬盤10G以上。</p><
36、;p> 1.2.2 操作系統(tǒng)</p><p> 服務器在Windows操作系統(tǒng)中,數(shù)據(jù)庫在服務器可以訪問的網(wǎng)絡中,瀏覽器可以在Windows或Unix,Linux系統(tǒng)下。</p><p> 1.2.3 應用軟件及開發(fā)平臺</p><p> 服務器所在的電腦上應安裝Windows操作系統(tǒng),要安裝IIS(Internet Information Ser
37、vices)和Microsoft.net framework。開發(fā)系統(tǒng)的電腦中要安裝Visual Studio.NET開發(fā)環(huán)境和IIS及SQL Server2000,以便于調試。開發(fā)平臺為Windows操作系統(tǒng)下的VS.NET平臺,使用C#作為開發(fā)語言。數(shù)據(jù)庫語言為T-SQL[6],可以編寫存儲過程(Stored procedure)和觸發(fā)器(Trigger)。</p><p> 1.3 系統(tǒng)的功能需求<
38、;/p><p> 系統(tǒng)需要完成以下功能:</p><p> (1)課程信息的管理,包括課程的錄入,修改,刪除等。</p><p> (2)教師信息的管理,包括教師信息的錄入和修改,刪除等。</p><p> (3)學生信息的管理,包括學生信息的錄入,修改和刪除,學生登錄密碼初始化等。</p><p> (4)學生
39、網(wǎng)上選課的管理,包括學生通過瀏覽器進行選課,取消選課,查詢選課及修改登錄密碼等。</p><p> 這個系統(tǒng)有兩種用戶,一是學生用戶,二是網(wǎng)絡管理員,都通過瀏覽器訪問系統(tǒng)。學生用戶在這個系統(tǒng)中可以進行的操作不是很多,包括選課,取消選課,查詢選課和修改登錄密碼等。但是因為學生用戶很多,而且很可能同時選課,因此要增強系統(tǒng)的并發(fā)性,提高性能。網(wǎng)絡管理員要進行課程信息、學生信息和教師信息的錄入及維護,可以進行的操作比較
40、多,而且有比較大的風險性,因為對一些敏感操作要提醒進行確認;同時由于管理員比較少,不用太多考慮并發(fā)性。</p><p> 1.4 系統(tǒng)的數(shù)據(jù)需求</p><p> 系統(tǒng)需要數(shù)據(jù)庫支持,該系統(tǒng)使用的是SQL Server 2000作為數(shù)據(jù)庫。學生信息,教師信息和課程信息的錄入由管理員完成。因為選課系統(tǒng)的數(shù)據(jù)不是十分海量,所以選用了對系統(tǒng)要求不是很高而且比較易用的SQL Server 2
41、000,同時可以使用ADO.NET更方便地編寫程序。在SQL Server 2000中新建一個名為WYH的數(shù)據(jù)庫專門存放該系統(tǒng)所要用到的數(shù)據(jù),并新添加一個名為WYH的用戶只能訪問這個數(shù)據(jù)庫,從而減少數(shù)據(jù)庫的風險。</p><p><b> 第二章 系統(tǒng)設計</b></p><p> 2.1 系統(tǒng)的數(shù)據(jù)庫設計</p><p> 數(shù)據(jù)庫的設
42、計是一個MIS系統(tǒng)中至關重要的部分,良好的數(shù)據(jù)庫設計是一個系統(tǒng)成功設計并實現(xiàn)的先決條件。如果數(shù)據(jù)庫設計得不好,系統(tǒng)可能會不穩(wěn)定,而數(shù)據(jù)庫的修改可能會造成整個系統(tǒng)都要推倒重新編寫??梢姅?shù)據(jù)庫的設計是至關重要的。一般要求數(shù)據(jù)庫中的關系模式都達到第三范式(3NF)。而存儲過程、觸發(fā)器也是一個基于SQL Server 2000的數(shù)據(jù)庫中不可缺少的部分。</p><p> 2.1.1 數(shù)據(jù)流圖</p>&
43、lt;p> 數(shù)據(jù)流圖是一種圖形化技術,它描繪信息流和數(shù)據(jù)從輸入移動到輸出過程中所經(jīng)受的變換。在數(shù)據(jù)流圖中沒有任何具體的物理元素,它只是描繪信息在軟件中流動和被處理的情況。因為數(shù)據(jù)流圖是系統(tǒng)邏輯功能的圖形表示,即使不是專業(yè)的計算機技術人員也容易理解它,所以是分析員與用戶之間極好的通信工具。 </p><p> 本系統(tǒng)的主要數(shù)據(jù)流圖如圖2.1和圖2.2。</p><p> 圖2.
44、1 學生相關的數(shù)據(jù)流圖</p><p> 圖2.2 管理員相關的數(shù)據(jù)流圖</p><p> 2.1.2 數(shù)據(jù)字典</p><p> 為了使各數(shù)據(jù)流,數(shù)據(jù)處理過程,存儲過程能反映其中的數(shù)據(jù)層,數(shù)據(jù)項目,數(shù)據(jù)特性,所以用數(shù)據(jù)字典來對數(shù)據(jù)流圖中的各成份進行具體的定義,為系統(tǒng)的分析,設計及以后的實現(xiàn)提供有關元素一致性定義和詳細的描述。數(shù)據(jù)字典是為了描述在結構化分析過
45、程中定義的對象內(nèi)容而使用的一種半形式化的工具,是描述數(shù)據(jù)的信息的集合,是對系統(tǒng)中使用的所有數(shù)據(jù)元素的定義的集合。</p><p> 該系統(tǒng)的主要數(shù)據(jù)字典如表2.1、表2.2及表2.3所示:</p><p> 表2.1 系統(tǒng)的數(shù)據(jù)流說明</p><p> 表2.2 系統(tǒng)的數(shù)據(jù)流構成</p><p> 表2.3 數(shù)據(jù)流的主要數(shù)據(jù)項詳解&l
46、t;/p><p> 2.1.3 系統(tǒng)的主要E-R圖</p><p> 實體—關系(E-R)數(shù)據(jù)模型基于對現(xiàn)實世界的這樣一種認識:現(xiàn)實世界由一組稱為實體的基本對象以及這些對象間的聯(lián)系構成。實體是現(xiàn)實世界中可區(qū)別于其他對象的一個“事件”或一個“物體”[7]。</p><p> 該數(shù)據(jù)庫的主要E-R圖如圖2.3所示。</p><p> 圖2.
47、3 數(shù)據(jù)庫設計的主要E-R圖</p><p> 為了節(jié)省篇幅,實體與屬性的關系沒有用圖形表示,每個實體定義的屬性如下,其標識碼用下橫線畫出:[8]</p><p> 院系:{ 院系簡寫,院系名稱,院系負責人,院系辦公電話}</p><p> 學生:{ 學號,學生姓名,性別,年齡,登錄密碼}</p><p> 教師:{ 教師編號,教師姓
48、名,教師職稱,教師性別,教師年齡}</p><p> 課程:{ 課程編號,課程名稱,任課老師編號,學時,課程容量,已選人數(shù),開課周次,上課時間,上課教室,備注信息}</p><p> 因為每個課程只有一個確定的任課老師,所以把任課老師作為課程的一個屬性來存儲,也不會出現(xiàn)冗余的現(xiàn)象,而且比較簡單,查詢信息的時候也避免了大量的自然連接操作,可以提高系統(tǒng)的性能。可是這樣的話老師和課程的關系就
49、隱含在屬性中,不是那么明顯。從數(shù)據(jù)庫模式設計上來說,更好的方法是把課程和任課教師的聯(lián)系作為一個新的關系模式,而不是把教師作為課程的屬性,這樣即使一個課程有多個老師也可以表示,但是由于要多一個表,會多使用一定的存儲空間。在這里使用了比較簡單的方法。</p><p> 2.1.4 模式圖(shema diagram)</p><p> 一個含有主碼和外碼依賴的數(shù)據(jù)庫模式可以用模式圖來表示
50、,可以直觀地展示出數(shù)據(jù)庫各個表之間的外碼依賴。該數(shù)據(jù)庫的關系圖如圖2.4。[7]</p><p> 圖2.4 數(shù)據(jù)庫設計關系圖</p><p> 2.1.5 表的設計</p><p> 表的設計又是數(shù)據(jù)庫設計中最重要的部分,因為它決定了數(shù)據(jù)庫的關系模式能達到哪個范式,是否會出現(xiàn)數(shù)據(jù)冗余的現(xiàn)象,是否存在數(shù)據(jù)不一致的風險,是否能達到實體完整性、數(shù)據(jù)完整性和用戶定
51、義完整性的要求。</p><p> 在這個系統(tǒng)中,最重要的是表有4個,包括學生信息表,教師信息表,課程信息表和選課信息表。其中選課信息表是最經(jīng)常存取的表,因為學生要選課、取消選課或查詢自己的選課信息。學生信息表要包含學生的個人信息,還要包含登錄選課系統(tǒng)的密碼。教師信息表含有教師的信息。課程信息表包含了所有課程信息,而每個課程要有一個老師來上課(在本校的公選課里,每個公選課都有一個課程編號,對應一個任課老師,不同
52、時間的相同課程的課程編號也不一樣。所以可以認為每個課程編號只對應一個教師。而且通常情況下,課程編號不同的名稱相同的課程也是由同一個老師來上的),所以這個表里有一個屬性是教師編號,而教師編號是教師表的主碼。選課表保存學生的選課信息。還有一個管理員表和院系信息表,其中管理員表用來記錄管理員的基本信息及登錄密碼,院系信息表用來存儲院系信息,而學生和教師都只屬于某個特定院系,所以學生表和教師表都有一個“院系編號”的屬性,而“院系編號”是院系信息
53、表的主碼。</p><p> 各個表的具體設計如下:</p><p> (1) 院系信息表(Department):這個表用來保存全校各個院系的信息,包括院系簡寫(dno),院系名稱(dname),院系負責人(dmaster)和院系辦公室電話(dtel)。一般情況下,每個院系有一個負責人,有一個辦公電話。所以簡單地這樣設計這個表,當然實際情況中還應該有更多的屬性。這個系統(tǒng)中只是為了說明
54、學生和教師所在院系才引入這個表的。這個表的各屬性詳細信息如表2.4。</p><p> 表2.4 表Department的詳細說明</p><p> (2)學生信息表(Student):這個表用來保存所有學生的信息,包括學生學號(sno),學生姓名(sname),學生所在院系(sdept),學生性別(ssex),學生年齡(sage)和學生登錄密碼(spwd)。學生學號是主碼,唯一標識一
55、個學生。學生性別只能為m(male)或f(female),學生年齡要在10歲和40歲之間。為了實際需要,所有項均不可以為空;學生登錄密碼初始為“8888”,可由學生以后自行更改。學生所在院系(sdept)為外碼,引用表Department的dno屬性。這個表的各屬性詳細信息如表2.5。</p><p> 表2.5 表Student的詳細說明</p><p> (3)教師信息表(Teac
56、her);這個表用來保存全校教師的信息,包括教師編號(tno),教師姓名(tname),教師所在院系(tdept),教師職稱(ttitle),教師性別(tsex)和教師年齡(tage)。教師編號是主碼,唯一標識一個教師。教師職稱為“教授”、“副教授”、“講師”等有實際意義的字符串,教師性別只能為m(male)或f(female),教師年齡要在20歲和80歲之間。為了實際需要,所有項均不可以為空。教師所在院系(sdept)為外碼,引用表D
57、epartment的dno屬性。這個表的各屬性詳細信息如表2.6。</p><p> 表2.6 表Teacher的詳細說明</p><p> (4)課程信息表(Course):這個表保存著所有公共選修課的信息,包括課程編號(cno),課程名稱(cname),任課老師編號(ctno),課程學時(cperiod),課堂容量(ccapacity),課程的已報名人數(shù)(cnumber),課程的開
58、課周次(cweeks),課程的開課時間(ctime),課程所在教室(croom),課程信息備注(cremark)。課程編號是主碼,唯一標識一個課程,同一個名稱的課可以有不同的課程編號,認為是不同的課。課程學時為課程所對應的課堂節(jié)數(shù),而16個學時對應一個課程學分。因為一般來說選修課只有1學分,1.5學分,2學分這三種,所以學時只能在16和32之間,學分只能在1和2之間。而控制課程學時只能出現(xiàn)16,24,32這三種則需要在程序中進行限制(使
59、用Dropdownlist控件而不是使用文本框TextBox,限制可以輸入的內(nèi)容)。輸入課程信息時只用給出課程學時即可,學分在查詢時自行算出。如果把學分當成這個表的一個屬性,則學時決定學分,存在傳遞依賴,不符合第三范式。關于范式的具體論述見2.1.6節(jié)。</p><p> 表2.7 表Course的詳細說明</p><p> (5)選課信息表(SC):這個表存放所有的學生的選課信息,是
60、這個系統(tǒng)中最常訪問的表。該表包括學生學號(sno),課程編號(cno)和分數(shù)(mark)。其中學生學號和課程編號構成主碼,也都是外碼,分別引用了Student表的sno和Course表的cno。分數(shù)(mark)則標識該選課的得分,默認為-1。在學期結束的時候,會有相應的分數(shù),最低為0,最高為100。通過分數(shù)可以判定課程是該學期選的還是以前就選了并且通過的。一般情況下,如果公選課沒有通過,則將該選課刪除,而不是記不及格。所有分數(shù)為-1的課
61、程為該學期所選,并通過相應手段控制一個學期最多選2門。這個表的各屬性詳細信息如表2.8。</p><p> 表2.8 表SC的詳細說明</p><p> (6)管理員信息表(Admin):存放管理員信息,包括管理員編號(ano),管理員名稱(aname),管理員電話(dtel),管理員密碼(apwd)。其中管理員編號為主碼,唯一標識一個管理員,管理員密碼用來管理員登錄時的身份驗證。這個
62、表的各屬性詳細信息如表2.9。</p><p> 表2.9 表Admin的詳細說明</p><p> 2.1.6 數(shù)據(jù)庫模式所達到的范式分析</p><p> 一般而言,關系數(shù)據(jù)庫設計的目標是生成一組關系模式,使之既不必存儲不必要的重復信息,又可以方便地獲取信息。所以要設計滿足適當范式的模式。如果達到了第三范式(3NF),就可以比較好地實現(xiàn)無冗余并不會出現(xiàn)更
63、新或刪除錯誤,不容易出現(xiàn)數(shù)據(jù)不一致的情況。下面討論一下本系統(tǒng)所設計的數(shù)據(jù)庫達到了哪個范式。</p><p> 先分析比較簡單的Admin表和Department表,顯然Admin表里管理員編號(ano)是主碼,直接決定了其他三個屬性管理員姓名(aname)、管理員電話(atel)和管理員密碼(apwd),沒有部分函數(shù)依賴和傳遞函數(shù)依賴,符合第三范式;Department表和Admin表差不多,院系簡寫(dno)
64、直接決定了其他三個屬性院系名稱(dname)、院系負責人(dmaster)和院系電話(dtel),符合第三范式。</p><p> 表Student、表Teacher和表Course相對于先前分析的兩個表來說,都多了一個外碼。Student和Teacher的所在院系都為Department的主碼,Course的任課老師為Teacher的主碼。但是這三個表同樣都是主碼直接決定其他屬性,不存在部分函數(shù)依賴和傳遞函數(shù)
65、依賴,同樣符合第三范式。表SC為選課信息表,它由學生學號sno和課程編號cno共同組成主碼,而這兩個又都是外碼,主碼能直接確定其他兩個屬性,不存在部分函數(shù)依賴和傳遞函數(shù)依賴,符合第三范式。</p><p> 如果把學分設計成Course表的一個屬性,則學時決定學分,存在傳遞函數(shù)依賴,不符合第三范式。故不把學分設計成Course表的屬性,而是在查詢數(shù)據(jù)庫時通過學時把學分計算出來展示給用戶。這樣Course表中就不
66、存?zhèn)鬟f函數(shù)依賴,符合第三范式。</p><p> 綜上,該數(shù)據(jù)庫模式符合第三范式(3NF)。</p><p> 2.1.7 觸發(fā)器的設計</p><p> 觸發(fā)器是一系列SQL語句的集合,當對數(shù)據(jù)庫作修改時,它自動被執(zhí)行。數(shù)據(jù)庫就像存儲普通數(shù)據(jù)一樣存儲觸發(fā)器,所以它們被永久保存,也可以被所有的數(shù)據(jù)庫操作訪問。一旦把一個觸發(fā)器輸入數(shù)據(jù)庫,只要指定的事情發(fā)生,相
67、應的條件被滿足,數(shù)據(jù)庫系統(tǒng)就有責任去執(zhí)行它。</p><p> 觸發(fā)器可以幫助用戶做許多很有用的事情,使用戶要進行的操作更加簡化,同時還可以避免某些數(shù)據(jù)不一致的情況。</p><p> 在這個系統(tǒng)所用的數(shù)據(jù)庫中,就是為了簡化操作、避免數(shù)據(jù)不一致而使用了觸發(fā)器。</p><p> 在SC表中如果要插入一行的話,就表示某個學生選取了一門選課。那么這個時候對應的課程
68、的已選人數(shù)(cnumber)會加一,留給其他學生的位置變少。這時考慮可以使用觸發(fā)器實現(xiàn)這個功能:在SC表中建立一個觸發(fā)器,每當插入一行的時候就觸發(fā),這個觸發(fā)器的作用就是把SC表中增加的這行里對應的課程編號的已選人數(shù)(cnumber)在Course表中加一,這樣簡化了操作,只要在SC中插入一行即可,不用同時考慮Course表的相關動作。</p><p> 下面是這個觸發(fā)器的代碼:</p><p
69、> Create Trigger AddSCTrigger</p><p><b> On SC</b></p><p> After Insert</p><p><b> As</b></p><p> Set nocount on</p><p> D
70、eclare @cno char(7)</p><p> Select @cno=cno</p><p> From inserted</p><p> Update Course</p><p> Set cnumber=cnumber+1 </p><p> where cno=@cno</p>
71、;<p> 這個觸發(fā)器在從SC表中插入一行時被激發(fā)。它首先定義變量@cno,它的數(shù)據(jù)類型和長度必須與Course表的cno(課程編號)一致。然后它通過“Select @cno=cno From inserted”讀入插入行的課程編號(cno)并存入已經(jīng)定義好的變量@cno中備用。最后,它通過這個課程編號(@cno)找到Course表中的相應行,對它的已選人數(shù)(cnumber)進行加一操作。</p><
72、;p> 這個觸發(fā)器邏輯清楚,功能簡單但是實用,在SC表中插入新行的時候,不用再考慮Course表的相應操作,使用簡單,同時避免了潛在的數(shù)據(jù)不一致的情況,增加了系統(tǒng)的可靠性。</p><p> 在從SC表中刪除某一行的時候也會遇到類似問題,因此定義一個類似的觸發(fā)器DelSCTrigger來完成在Course表中對應課程的已選人數(shù)(cnumber)減一的做操,因為與上面的觸發(fā)器類似,在此不再贅述。</
73、p><p> 在數(shù)據(jù)庫中,觸發(fā)器有著很大的作用。這個系統(tǒng)中的數(shù)據(jù)庫設計比較簡單,只在這兩個個地方使用了觸發(fā)器。在復雜的數(shù)據(jù)庫模式中,觸發(fā)器的作用更加強大??上б恍?shù)據(jù)庫管理系統(tǒng)不支持觸發(fā)器,使得這個工具不能隨時隨地發(fā)揮作用。MS SQL Server 2000對觸發(fā)器及存儲過程的支持非常好,這也是選用它作為數(shù)據(jù)庫的一個重要原因。</p><p> 2.1.8 存儲過程的設計</p&
74、gt;<p> 在大型數(shù)據(jù)庫系統(tǒng)中,存儲過程和觸發(fā)器具有很重要的作用。無論是存儲過程還是觸發(fā)器,都是SQL 語句和流程控制語句的集合。就本質而言,觸發(fā)器也是一種存儲過程。存儲過程在運算時生成執(zhí)行方式,所以,以后對其再運行時其執(zhí)行速度很快。SQL Server 2000 不僅提供了用戶自定義存儲過程的功能,而且也提供了許多可作為工具使用的系統(tǒng)存儲過程。</p><p> 存儲過程(Stored P
75、rocedure)是一組為了完成特定功能的SQL 語句集,完成某一個特定的功能,經(jīng)編譯后存儲在數(shù)據(jù)庫中。它就像是編程語言中的函數(shù),事先定義好函數(shù)以后,在需要使用的時候只要調用一下就能完成需要的工作。用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。</p><p> 存儲過程有許多優(yōu)點:</p><p> ?。?) 存儲過程允許標準組件式編程存儲過程在被創(chuàng)建以后可以
76、在程序中被多次調用,而不必重新編寫該存儲過程的SQL語句。而且數(shù)據(jù)庫專業(yè)人員可隨時對存儲過程進行修改,但對應用程序源代碼毫無影響(因為應用程序源代碼只包含存儲過程的調用語句),從而極大地提高了程序的可移植性。</p><p> ?。?)存儲過程能夠實現(xiàn)較快的執(zhí)行速度。如果某一操作包含大量的Transaction-SQL代碼或分別被多次執(zhí)行,那么存儲過程要比批處理的執(zhí)行速度快很多。因為存儲過程是預編譯的,在首次運行
77、一個存儲過程時,查詢優(yōu)化器對其進行分析、優(yōu)化,并給出最終被存在系統(tǒng)表中的執(zhí)行計劃。而批處理的Transaction-SQL 語句在每次運行時都要進行編譯和優(yōu)化,因此速度相對要慢一些。</p><p> ?。?) 存儲過程能夠減少網(wǎng)絡流量。對于同一個針對數(shù)據(jù)庫對象的操作(如查詢、修改),如果這一操作所涉及到的Transaction-SQL 語句被組織成一存儲過程,那么當在客戶計算機上調用該存儲過程時,網(wǎng)絡中傳送的只
78、是該調用語句,否則將是多條SQL 語句,可見存儲過程可以有效提高網(wǎng)絡性能。</p><p> ?。?) 存儲過程可被作為一種安全機制來充分利用系統(tǒng)管理員通過對執(zhí)行某一存儲過程的權限進行限制,從而能夠實現(xiàn)對相應的數(shù)據(jù)訪問權限的限制,避免非授權用戶對數(shù)據(jù)的訪問,保證數(shù)據(jù)的安全。</p><p> 由于存儲過程有以上諸多優(yōu)點,所以在這個系統(tǒng)中,幾乎所有的功能都是用存儲過程來實現(xiàn),在程序中直接調
79、用存儲過程并通過存儲過程的返回值來確定執(zhí)行后的狀態(tài)。</p><p> 大量使用存儲過程是這個系統(tǒng)的一大特點。數(shù)據(jù)庫設計中一共編寫了16個存儲過程,分別如下。</p><p> AddStudent:增加一個學生信息;</p><p> AddTeacher:增加一個教師信息;</p><p> AddCourse:增加課程信息;&l
80、t;/p><p> AddSC:增加學生選課信息;</p><p> DeleteStudent:刪除一個學生信息;</p><p> DeleteTeacher:刪除一個教師信息;</p><p> DeleteCourse:刪除課程信息;</p><p> DeleteSC:刪除學生選課信息(取消選課);&l
81、t;/p><p> EditStudent:編輯修改學生信息;</p><p> EditTeacher:編輯修改教師信息;</p><p> EditCourse:編輯修改課程信息;</p><p> StudentLogIn:學生登錄時驗證學生身份;</p><p> AdminLogIn:管理員登錄時驗證管
82、理員身份;</p><p> ChangeStudentPwd:學生登錄后修改登錄密碼;</p><p> ChangeAdminPwd:管理員登錄后修改密碼;</p><p> InitStudentPwd:管理員登陸后對特定學生的密碼進行初始化,用于學生忘記個人登錄密碼的情況。</p><p> 以上的16個存儲過程幾乎完成了該系
83、統(tǒng)中所有的功能。而且?guī)缀趺總€存儲過程都會驗證作為參數(shù)輸入的學號或教師編號或課程編號是否存在,并以特定的返回值來標識不存在的情況。所以這些存儲過程同樣可以用來判斷學號等是否存在。</p><p> 對于院系信息的輸入和管理員信息的添加,因為系統(tǒng)要完成的功能中不包括對院系信息的管理,所以默認院系信息在數(shù)據(jù)庫中已經(jīng)存在。而管理員的信息應該由DBA在查詢分析器中用SQL語句輸入。</p><p>
84、; 下面以增加選課信息來說明一下存儲過程的設計思想和運行邏輯,如圖2.5:</p><p> 圖2.5 增加選課存儲過程流程圖</p><p> 要增加學生選課信息,首先要先驗證學生學號是否存在,再驗證課程編號是否存在,再驗證該學生是否選修了這門課,接著驗證該學生是否已經(jīng)選了兩門課(按規(guī)定一個學期最多只能選兩門課),最后驗證該課程是否人數(shù)已滿。如果都符合則把該課程作為該學生的選修課寫
85、入SC表,有一個不符合則通過返回值返回出錯的地方。這個存儲過程條理清楚,邏輯明了。盡管學號不存在和課程編號不存在的可能性非常?。ㄖ挥袑W生已經(jīng)登錄,然后管理員刪除了該學生信息才可能出現(xiàn)學號不存在的情況),可是為了增強程序的健壯性,以防萬一,還是把它寫了進去。</p><p> 這里還涉及到一個加鎖的問題。這是一個并發(fā)系統(tǒng),很有可能很多同學同一時間一起選課。為了防止讀臟數(shù)據(jù)的情況,在一個學生選某門課的時候,其他的不
86、能讀該課程的已選人數(shù)。只有該同學選課完畢,才釋放該課程,其他同學可以查看和選課。否則可能會出現(xiàn)某門課只有一個名額了,而兩個同學同時讀到該課程還可以選擇,同時選擇則會出現(xiàn)數(shù)據(jù)不一致的情況。存儲過程中的時延是為了測試加鎖的效果。測試完畢后就將延時語句注釋掉。</p><p> 2.2 系統(tǒng)功能設計</p><p> 系統(tǒng)共有兩個大的模塊,分別為學生使用的模塊和管理員使用的模塊。學生登錄后
87、可以進行選課、取消選課、查詢已選課程和修改個人登錄密碼等操作。管理員登錄后可以進行學生信息管理、教師信息管理、課程信息管理和密碼管理等操作。對于管理員來說,每個管理員在同一時間只能登錄一次,學生登錄則不受此限制。系統(tǒng)的功能模塊圖如圖2.6。</p><p> 圖2.6 系統(tǒng)功能模塊圖</p><p> 2.2.1 學生模塊</p><p> 學生模塊是學生登
88、錄后使用的模塊,有4個功能,分別是選課操作,取消選課,查選選課信息和修改個人登錄密碼。選課操作是這個系統(tǒng)最經(jīng)常進行的操作,是系統(tǒng)的瓶頸,最能體現(xiàn)對系統(tǒng)性能的要求,提高該部分的性能可以大大提高整個系統(tǒng)的性能。取消選課是將已經(jīng)選上的課程取消,有些同學選錯了課程可以用這個取消選課的功能來更正。當然這也會留下安全隱患,如有的同學在機房或網(wǎng)吧上網(wǎng),離開電腦的時候忘了注銷登錄,則會給其他人留下可乘之機,如被其他人惡意取消選課(也許是那個人想選這個課
89、,而這個課的人數(shù)已滿),但是為了系統(tǒng)功能的完整還是把這個功能做了出來,希望使用該選課系統(tǒng)的同學能夠注意離開的時候注銷。修改密碼可以修改用來登錄的密碼,初始密碼都是“8888”,同學們上網(wǎng)以后要盡快修改密碼,以防有人用自己的帳號登錄后進行惡意操作。修改密碼的時候需要輸入原來的密碼以確認身份,還要兩次輸入新密碼,以防按鍵錯誤輸錯想要的密碼。如果忘記了密碼,可以憑學號和姓名讓管理員將自己的密碼恢復到初始設置。</p><p
90、> 2.2.2 管理員模塊</p><p> 管理員模塊為管理員所使用,包含學生信息管理、教師信息管理、課程信息管理和密碼管理四個子模塊,前三個字模塊分別可以進行學生信息、教師信息和課程信息的增刪改查,密碼管理模塊可以修改管理員自己的登錄密碼,也可以根據(jù)學生提供的學號和姓名來進行學生密碼初始化,以應對學生忘記密碼的情況。管理員在同一時間只能登錄一次,離開時要注銷登錄才可以在下次正常登錄。如果忘了注銷登
91、錄而直接關閉了窗口,則要等20分鐘后Session過了有效期才可以再次登錄。不過管理員都是經(jīng)過培訓的,應該會知道各個要注意的地方。</p><p><b> 第三章 系統(tǒng)實現(xiàn) </b></p><p> 整個系統(tǒng)使用ASP.NET(C#)作為編程語言,在一些必要的時候使用了少量Jscript來完成ASP.NET無法完成的功能。下面具體講述一下整個系統(tǒng)的實現(xiàn)細節(jié)。&
92、lt;/p><p><b> 3.1 網(wǎng)業(yè)設計</b></p><p> 這個系統(tǒng)的所有網(wǎng)頁均在Visual Studio.NET集成環(huán)境中設計,沒有使用DreamWaver等界面設計軟件,主要考慮到該系統(tǒng)最重視的應該是性能,而不是外表,畢竟不同于商用系統(tǒng)要靠外表吸引用戶,選課系統(tǒng)是固定用戶一定會使用的,而且并發(fā)量很大,要首先考慮性能。以后要對如何把網(wǎng)頁設計得更漂亮
93、進行進一步學習,畢竟商用網(wǎng)站還是更常見一點。</p><p> 該系統(tǒng)里網(wǎng)頁的風格是簡潔明朗,畢竟是個選課系統(tǒng),只要能達到選課的目的,一眼能看出來該怎么選課就可以,沒有太多華麗的裝飾。太多的圖片會使網(wǎng)頁的打開速度過慢,影響性能。</p><p> 3.1.1 學生頁面設計</p><p> 學生登錄后能使用的功能只有4個,分別是選課、取消選課、查詢選課信息和
94、修改個人密碼,功能頁面不多,將連接到這4個功能頁面的超級鏈接放在登陸后的主頁面上一目了然,進入相應頁面也很容易。學生登陸后的主頁面如圖3.1所示</p><p> 圖3.1 學生用戶的主界面</p><p> 其上有提示信息,還在靠上的位置顯示當前的學生用戶的學號和姓名信息,給人帶來親切感。選課頁面如圖3.2所示:</p><p> 圖3.2 學生用戶的選課界
95、面</p><p> 其中課程信息從數(shù)據(jù)庫查詢出來后綁定在一個DataGrid上顯示出來。具體如何綁定在3.4節(jié)討論。同時這個DataGrid上綁定一列按鈕列,通過點擊按鈕來對相應行進行選課操作,而選課操作是通過傳遞參數(shù)給存儲過程并返回特定的值來完成的,通過返回值可以看出選課成功與否并再把選課結果通過彈出框的形式返回給用戶。</p><p> 按鈕列的綁定過程如下:在DataGrid上
96、點右鍵,選擇“屬性生成器”進入屬性編輯頁面,然后點左邊的“列”按鈕,在“列列表”的“可用列”里選中“按鈕列”,點擊向右的箭頭添加到“選定的列”,選定新添加的項,填寫各項屬性[9],如圖3.3。其中“頁眉文本”是要顯示在頁眉中的文字,“文本”是顯示在綁定列中的按鈕文字,“命令名”則在對該按鈕添加點擊事件時來標識這個按鈕。然后點擊“確定”回到VS.NET設計頁面,點DataGrid,在右下腳的屬性欄點擊閃電圖標,調出各個事件屬性,然后雙擊I
97、temCommand事件編輯即可,如圖3.4。</p><p> 圖3.3 DataGrid屬性生成器</p><p> 圖3.4 DataGrid屬性</p><p> 雙擊ItemCommand后會定位到函數(shù)DataGrid1_ItemCommand中,在其代碼中輸入if(e.CommandName=="SelectCourse")
98、{……}即可,大括號里編寫點擊按鈕要進行的相應操作即可,“SelectCourse”即為當時定義的命令名,如果有兩列以上的按鈕列,可以通過“命令名”來識別點擊了哪個按鈕列的按鈕。如何具體將各參數(shù)</p><p> 傳回用存儲過程處理留待3.2節(jié)討論。</p><p> 3.1.2 管理員頁面設計</p><p> 因為管理員所要進行的操作較多,用一個樹型導航
99、欄來導航會使操作輕松并且條理清楚。管理員頁面里的DataGrid綁定按鈕列和在學生頁面中的一樣,在此不再贅述。不同的是有些DataGrid需要綁定兩個按鈕列,分別是編輯相應行和刪除相應行的信息,這時需要給不同的列定義不同的“命令名”,在ItemCommand通過不同的命令名來識別不同按鈕列的點擊事件;同時,由于刪除按鈕是很危險的,容易誤點,所以要加入一個要求用戶確認刪除的彈出對話框。只要在相應列的“文本”里輸入如下內(nèi)容:</p&g
100、t;<p> <div id="de" onclick="JavaScript:return confirm('確定刪除該學生嗎?')">刪除</div> </p><p> 刪除的時候彈出提示框。這是一個JavaScript,在這里和ASP.NET結合很好的解決了問題。從這點可以看出,ASP.NET還是無法完成Ja
101、vaScript的所有功能。管理員頁面如圖3.5:</p><p> 圖3.5 管理員界面</p><p> 管理員頁面的主要特點是使用了導航欄,這個樹性導航欄是用了微軟的TreeView控件。這個控件在該系統(tǒng)開發(fā)使用的VS2003中沒有附帶,需要到微軟的網(wǎng)站去下載,然后安裝后就可以了。具體安裝過程可以到網(wǎng)上查找。安裝好以后,新建一個Frameset,分為左右兩邊,左邊名稱為“Cont
102、ent”,右邊名稱為“Main”,其定義為:</p><p> <frameset cols="170,78%"></p><p> <frame name="contents" src="AdminMainxxx.aspx"></p><p> <frame name=
103、"main" src="AdminEditCourse.aspx"></p><p> 然后把TreeView控件拖到一個空白頁面AdminMainxxx.aspx中,在屬性的“Nodes”中加入各個要導航的名稱和要導航到的頁面。導航的名稱為樹形導航欄顯示的名稱,要導航的頁面鏈接(NavigateUrl)是要在右邊顯示的相應頁面,Target是要顯示這個頁面的位置,
104、寫為“main”,因為這個frameset的右半邊的名字就是“main”。如圖3.6所示。編輯完treeview的Nodes屬性后,這個有frameset和樹型導航欄的頁面就做好了。確實感覺到VS.NET功能強大。</p><p> 圖3.6 TreeView的Nodes屬性</p><p> 3.2 功能模塊設計</p><p> 系統(tǒng)中,各個功能模塊都是
105、用存儲過程來實現(xiàn)的,在程序中直接調用存儲過程并通過存儲過程的返回值來確定執(zhí)行后的狀態(tài)。使用存儲過程是這個系統(tǒng)的一大特點。</p><p> 3.2.1學生模塊設計</p><p> 學生模塊包括 選課操作,取消選課,查詢選課,修改密碼等。下面重點介紹下選課操作功能的具體實現(xiàn)。選課操作主要還是調用增加選課信息的存儲過程AddSC,根據(jù)返回的不同信息來判斷不同情況。AddSC存儲過程的詳細
106、流程見圖2.5。調用其存儲過程如下:</p><p> 建立好數(shù)據(jù)庫連接,調用增加學生選課信息存儲過程(AddSC)</p><p> Execute @returnValue = AddSC @sno,@cno</p><p> 增加一個存儲過程的返回信息@returnValue,</p><p> mySqlCommand.Par
107、ameters.Add("@returnValue",SqlDbType.Int);</p><p><b> 設置為輸出參數(shù)</b></p><p> mySqlCommand.Parameters["@returnValue"].Direction = </p><p> ParameterDi
108、rection.Output;</p><p> 再聲明兩個變量@sno,@cno,其數(shù)據(jù)長度應對應選課表SC中sno,cno</p><p> mySqlCommand.Parameters.Add("@sno",SqlDbType.NChar,8);</p><p> mySqlCommand.Parameters.Add("
109、@cno",SqlDbType.NChar,7);</p><p> 根據(jù)這個返回值看出執(zhí)行結果:</p><p> switch((int)mySqlCommand.Parameters["@returnValue"].Value)</p><p><b> {</b></p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 動態(tài)網(wǎng)頁制作——畢業(yè)論文
- 網(wǎng)上選課系統(tǒng)---畢業(yè)論文
- 網(wǎng)上選課系統(tǒng)畢業(yè)論文
- 網(wǎng)上選課系統(tǒng)畢業(yè)論文
- 網(wǎng)上選課系統(tǒng)畢業(yè)論文
- 網(wǎng)上選課系統(tǒng)畢業(yè)論文
- 畢業(yè)論文——網(wǎng)上選課系統(tǒng)
- 畢業(yè)論文——網(wǎng)上選課管理系統(tǒng)
- 基于jsp技術的網(wǎng)上選課系統(tǒng)畢業(yè)論文
- jsp網(wǎng)上選課系統(tǒng)畢業(yè)論文
- 學生網(wǎng)上選課系統(tǒng) 畢業(yè)論文
- 畢業(yè)論文——動態(tài)口令認證的網(wǎng)上選課系統(tǒng)的設計與實現(xiàn)
- 網(wǎng)上選課系統(tǒng)畢業(yè)論文(含外文翻譯)
- 畢業(yè)論文——網(wǎng)上選課系統(tǒng)的設計與實現(xiàn)
- 畢業(yè)論文——動態(tài)口令認證的網(wǎng)上選課系統(tǒng)的設計與實現(xiàn)
- 網(wǎng)上選課系統(tǒng)的設計與實現(xiàn)——畢業(yè)論文
- 動態(tài)網(wǎng)頁設計畢業(yè)論文
- 動態(tài)網(wǎng)頁設計畢業(yè)論文
- 選課畢業(yè)論文---學生網(wǎng)上選課系統(tǒng)的設計與實現(xiàn)
- 網(wǎng)上選課系統(tǒng)畢業(yè)設計論文
評論
0/150
提交評論