畢業(yè)設計--網(wǎng)站設計與實現(xiàn)——數(shù)據(jù)庫與管理_第1頁
已閱讀1頁,還剩45頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)設計說明書</b></p><p>  題 目:專業(yè)英語教學網(wǎng)站設計與</p><p>  實現(xiàn)——數(shù)據(jù)庫與管理</p><p>  院 (部):計算機科學與技術學院</p><p>  專 業(yè): 網(wǎng)絡工程</p><p><b>  班

2、 級: </b></p><p><b>  姓 名: </b></p><p><b>  學 號: </b></p><p><b>  指導教師: </b></p><p>  完成日期: 2013年5月20日</p><

3、p><b>  目 錄</b></p><p><b>  摘 要III</b></p><p>  ABSTRACTⅣ</p><p><b>  1 緒 論1</b></p><p>  1.1 課題背景1</p><p>  1

4、.2 課題設計研發(fā)的目的、意義概述1</p><p>  1.3 課題研究現(xiàn)狀1</p><p>  1.4 本文的主要工作1</p><p>  2 相關技術分析2</p><p>  2.1 JSP技術分析2</p><p>  2.2 MySQL介紹2</p><p>  2.

5、3 JavaBean技術3</p><p>  2.4 Servlet技術3</p><p>  2.5 MVC設計模式3</p><p>  2.6 Java4</p><p>  3 需求分析及系統(tǒng)設計6</p><p>  3.1課程網(wǎng)站的前臺實現(xiàn)6</p><p>  3.2

6、課程網(wǎng)站的后臺實現(xiàn)6</p><p>  3.3課程網(wǎng)站的需求分析7</p><p>  3.4數(shù)據(jù)庫設計8</p><p><b>  3.5本章小結9</b></p><p>  4 詳細系統(tǒng)設計與實現(xiàn)10</p><p>  4.1 前臺系統(tǒng)的實施10</p>&l

7、t;p>  4.2 后臺系統(tǒng)的實施13</p><p>  4.3 各系統(tǒng)界面及關鍵代碼16</p><p>  4.4 教師模塊功能25</p><p>  4.5 管理員管理功能26</p><p>  4.6 學習論壇功能27</p><p>  4.8本章小結27</p><

8、;p><b>  5 系統(tǒng)測試29</b></p><p>  6 關鍵問題機解決方案33</p><p><b>  7 結 論36</b></p><p><b>  致 謝38</b></p><p><b>  參考文獻39</b&g

9、t;</p><p><b>  摘 要</b></p><p>  在信息化不斷完善的今天,網(wǎng)絡已經(jīng)引導我們完成了一次又一次的飛躍,現(xiàn)在它正引導我們走向另一次飛躍——網(wǎng)絡教學。</p><p>  本系統(tǒng)是基于JSP和JAVA的英語教學網(wǎng)站,主要使用以Tomcat為服務器、MySQL為數(shù)據(jù)庫、Myeclipse為環(huán)境的框架下開發(fā)。主要通過管理

10、員、教師、學生三個不同的身份實現(xiàn)網(wǎng)站用戶管理、教學公告發(fā)布、網(wǎng)站信息管理、教學內(nèi)容管理、文件上傳及管理、考試及成績發(fā)布及管理、在線答疑設計等功能,提供一個方便快捷的教學平臺供教師和學生使用。本文的主要工作包括相關技術的分析、用戶的需求分析,通過以上兩點從管理員、教師、學生三個角度進行設計完成了教師、學生、論壇、測試等功能模塊,經(jīng)測試可以完成要求的大部分功能。本文工作更側(cè)重于網(wǎng)站后臺,所以本網(wǎng)站的數(shù)據(jù)庫功能比較強大,能夠?qū)崿F(xiàn)網(wǎng)站后臺要求的

11、所有功能,但在線測試功能也存在著一些不足之處,有待于進一步完善。</p><p>  關鍵詞:教學網(wǎng)站;JSP;JAVA;MySQL數(shù)據(jù)庫</p><p>  Teaching web site design and implementation of Professional English - the database and management</p><p&g

12、t;<b>  ABSTRACT</b></p><p>  With the continuous improvement in information technology , the network has led us to complete leap again and again, and now it is leading us towards another leap - o

13、nline teaching.</p><p>  The system is a teaching site based on JSP and JAVA English , the main use for the site are Tomcat,Myeclipse and MySQL. Primarily by administrators, teachers and students to achieve

14、three different user identity management, teaching announcement, website information management, teaching content management, file upload and management, publishing and management of examinations and results, online answ

15、er design features, providing a convenient learning platform for teachers and students. The main </p><p>  Key words: Teaching website;The JSP;JAVA;The MySQL database</p><p><b>  緒 論</

16、b></p><p><b>  課題背景</b></p><p>  在信息化不斷完善的今天,網(wǎng)絡已經(jīng)引導我們完成了一次又一次的飛躍,現(xiàn)在它正引導我們走向另一次飛躍——網(wǎng)絡教學。</p><p>  課題設計研發(fā)的目的、意義概述</p><p>  在不斷信息化的今天,網(wǎng)絡已經(jīng)成為我們生活中最不可缺少的一部分,在

17、任何時間和領域假設沒有網(wǎng)絡那么我們的工作將很難繼續(xù)下去。同時網(wǎng)絡的發(fā)展也推動以一些新興產(chǎn)業(yè)的發(fā)展,新興事物應運而生,舊的東西也有了新的發(fā)展,被看作呆板的教學也有了新的突破,網(wǎng)絡教學就是其中的一個。網(wǎng)絡教學具有更好的互動性、實時性,同時更易于被現(xiàn)在的年輕人所接受,已經(jīng)成為網(wǎng)絡主要發(fā)展的一個領域,也將逐漸代替舊的教育方式。</p><p><b>  課題研究現(xiàn)狀</b></p>

18、<p>  目前網(wǎng)絡教育發(fā)展大致分為兩個方向:</p><p> ?。?)以視頻方式的在線教學</p><p> ?。?)基于Web的非實時性教學</p><p>  前者更加側(cè)重實時性,通過音頻和視頻讓老師可以“面對面”的給同學講課;后后者就是將文件存放在web服務器上供用戶訪問。</p><p>  隨著中國綜合實力的不斷增強,

19、教育已經(jīng)被一次又一次的提及,教育的重要性已經(jīng)不言而喻,而這種新興的教育方式必將被大多數(shù)年輕人所接受。同時這項課題可以最大程度的節(jié)省時間,人們可以隨時隨地的在線瀏覽學習,更加方面用戶。</p><p><b>  本文的主要工作</b></p><p>  首先從網(wǎng)上查閱網(wǎng)絡文件管理系統(tǒng)相關資料,了解同類系統(tǒng)的發(fā)展現(xiàn)狀及趨勢。分析網(wǎng)上教學系統(tǒng)的相關功能,結合本次畢業(yè)設計

20、的相關要求寫出需求分析;其次,綜合運用以前所學的相關知識(包括計算機網(wǎng)絡技術、ASP與網(wǎng)絡數(shù)據(jù)庫相關知識等),選擇SQL Server數(shù)據(jù)庫,在ASP環(huán)境下運用VBSCRIPT及JAVASCRIPT腳本語言進行本畢業(yè)設計的開發(fā);在設計中以需求分析為基礎,寫出系統(tǒng)開發(fā)計劃、實現(xiàn)流程及相關問題的實現(xiàn)方法;最后,系統(tǒng)開發(fā)完畢后,進行調(diào)試和運行。</p><p><b>  相關技術分析</b>&l

21、t;/p><p><b>  JSP技術分析</b></p><p>  JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務端的資源的應用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設計和顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發(fā)變得迅速和容易。 <

22、;/p><p>  Web服務器在訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。 </p><p>  JSP與Java Servlet一樣,是在服務器端執(zhí)行的,通常返回該客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。</p>

23、;<p><b>  MySQL介紹</b></p><p>  數(shù)據(jù)庫,顧名思義就是對數(shù)據(jù)進行組織,存儲和管理的“倉庫”。本質(zhì)上講:“數(shù)據(jù)庫是存儲在一起的相關數(shù)據(jù)的集合,這些數(shù)據(jù)是結構化的,無有害的或不必要的冗余,并為多種應用服務;數(shù)據(jù)的存儲獨立于使用它的程序;對數(shù)據(jù)庫插入新數(shù)據(jù),修改和檢索原有數(shù)據(jù)均能按一種公用的和可控制的方式進行。當某個系統(tǒng)中存在結構上完全分開的若干個數(shù)據(jù)

24、庫時,則該系統(tǒng)包含一個‘數(shù)據(jù)庫集合’?!边@也就意味著:“盡可能不重復,以最優(yōu)方式為某個特定組織的多種應用服務,其數(shù)據(jù)結構獨立于使用它的應用程序,對數(shù)據(jù)的增、刪、改和檢索由統(tǒng)一軟件進行管理和控制”是數(shù)據(jù)庫的主要目的。</p><p>  按照關系型數(shù)據(jù)庫和非關系型數(shù)據(jù)庫進行劃分,MySQL屬于小型關系型數(shù)據(jù)庫系統(tǒng)。其所具有的開源,體積小,速度快,成本低的優(yōu)勢,使得它在中小型網(wǎng)站中得到了廣泛的應用。除此之外,MySQ

25、L還具有支持標準的ansisql語句,允許用戶使用多種語言編寫的程序?qū)ζ鋽?shù)據(jù)庫進行訪問。同時它也可以在多個系統(tǒng)上運行的特點。所以,我認為這是一個非常適合網(wǎng)絡安全課程網(wǎng)站的數(shù)據(jù)庫系統(tǒng)。</p><p>  本系統(tǒng)包含了有關網(wǎng)絡安全概念的所有文本資料,課程題庫等大量數(shù)據(jù)資源。采用強大的MySQL,既可以保證性能,也可以提高安全性,對于網(wǎng)站的建設大有裨益。</p><p>  MySQL的具體任

26、務:</p><p>  結合JSP實現(xiàn)數(shù)據(jù)庫的設計搭建和管理。</p><p>  在使用JSP設計出前臺界面之后,再通過使用odbc、jdbc連接DB后,通過服務器端JSP就可以對遠程數(shù)據(jù)庫進行訪問、數(shù)據(jù)管理以及增刪查改等操作。</p><p>  JavaBean技術</p><p>  JavaBean 是一種JAVA語言寫成的可重用

27、組件。為寫成JavaBean,類必須是具體的和公共的,并且具有無參數(shù)的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內(nèi)部域暴露成員屬性。眾所周知,屬性名稱符合這種模式,其他Java 類可以通過自身機制發(fā)現(xiàn)和操作這些JavaBean 屬性。</p><p>  用戶可以使用JavaBean將功能、處理、值、數(shù)據(jù)庫訪問和其他任何可以用java代碼創(chuàng)造的對象進行打包,并且其他的開發(fā)者可以通過內(nèi)部的JS

28、P頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。   JavaBean可分為兩種:一種是有用戶界面(UI,User Interface)的JavaBean;還有一種是沒有用戶界面,主要負責處理事務(如數(shù)據(jù)運算,操縱數(shù)據(jù)庫)的JavaBean。JSP通常訪問的是后一種JavaBean。序構造器工具的多種方案中再利用。

29、這也是JavaBean組件區(qū)別于Java程序的特點。</p><p><b>  Servlet技術</b></p><p>  Servlet是一種獨立于平臺和協(xié)議的服務器端的Java應用程序,可以生成動態(tài)的Web頁面。 它擔當Web瀏覽器或其他Http客戶程序發(fā)出請求,與HTTP服務器上的數(shù)據(jù)庫或應用程序之間的中間層。Servlet是位于Web 服務器內(nèi)部的服務器

30、端的Java應用程序,與傳統(tǒng)的從命令行啟動的Java應用程序不同,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。</p><p><b>  MVC設計模式</b></p><p>  MVC是三個單詞的縮寫,分別為: 模型(Model),視圖(View)和控制Controller)。 MVC模式的目的就是實現(xiàn)Web系

31、統(tǒng)的職能分工。 Model層實現(xiàn)系統(tǒng)中的業(yè)務邏輯,通常可以用JavaBean或EJB來實現(xiàn)。 View層用于與用戶的交互,通常用JSP來實現(xiàn)。 Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請求并選擇恰當?shù)囊晥D以用于顯示,同時它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。</p><p>  MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程

32、序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。分層概念如下:</p><p>  (1)視圖是用戶看到并與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括Macromedia Flash和象XHTML,XML/XSL,WML等一些標識語言和Web services。MV

33、C一個大的好處是它能為應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。</p><p> ?。?)模型表示企業(yè)數(shù)據(jù)和業(yè)務規(guī)則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用像EJBs和ColdFusion Components這樣的構件對象來處理數(shù)據(jù)庫。被模型返回的數(shù)據(jù)是中立的,就是說模型與

34、數(shù)據(jù)格式無關,這樣一個模型能為多個視圖提供數(shù)據(jù)。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。</p><p> ?。?)控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發(fā)送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調(diào)用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數(shù)據(jù)。開發(fā)模式設計中,事件一般是指客戶端

35、Web瀏覽器提交的各種不同請求,這些請求由控制器進行處理,控制器根據(jù)事件的類型來改變模型或各個視圖,視圖也可以接受模型發(fā)出的數(shù)據(jù)更新通知,依據(jù)數(shù)據(jù)更新的結果調(diào)整視圖效果,呈現(xiàn)在用戶面前,而模型也可以通過視圖所獲得的用戶提交的數(shù)據(jù)進行具體業(yè)務邏輯的處理。</p><p><b>  2.6Java</b></p><p><b>  簡單</b>

36、</p><p>  Java的風格類似于C++,并且摒棄了C++中容易引發(fā)程序錯誤的地方,如指針和內(nèi)存管理。此外,Java提供了豐富的類庫。</p><p><b>  面向?qū)ο?lt;/b></p><p>  面向?qū)ο罂梢哉f是Java最重要的特性。Java語言的設計完全是面向?qū)ο蟮?。Java支持靜態(tài)和動態(tài)風格的代碼繼承及重要。</p>

37、;<p><b>  分布式</b></p><p>  Java包括一個支持HTTP和FTP等基于TCP/IP協(xié)議的子庫。因此,Java應用程序可憑借URL打開并訪問網(wǎng)絡上的對象,其訪問方式與訪問本地文件系統(tǒng)幾乎完全相同。</p><p><b>  健壯</b></p><p>  Java致力于檢查程序

38、在編譯和運行時的錯誤。Java自己操縱內(nèi)存減少了內(nèi)存出錯的可能性。Java提供Null指針檢測數(shù)組邊界、檢測異常出口、字節(jié)代碼校驗。</p><p><b> ?。?)安全</b></p><p>  Java的安全性可從兩個方面得到保證。一方面,在Java語言里,像指針和釋放內(nèi)存等C++功能被刪除,避免了非法內(nèi)存操作。另一方面,當Java用來創(chuàng)建瀏覽器時,語言功能和

39、瀏覽器本身提供的功能結合起來,使它更安全。</p><p><b> ?。?)結構中立</b></p><p>  為了建立Java作為網(wǎng)絡的一個整體,Java將它的程序編譯成一種結構中立的中間文件格式。只要有Java運行系統(tǒng)的機器都能執(zhí)行這種中間代碼。Java源程序被編譯成一種高層次的與機器無關的byte-code格式語言,這種語言被設計在虛擬機上運行,由機器相關的

40、運行調(diào)試器實現(xiàn)執(zhí)行。</p><p><b>  (7)可移植的 </b></p><p>  Java的可移植性一直是Java程序設計師們的精神指標也是Java之所以能夠受到程序設計師們喜愛的原因之一,最大的功臣就是JVM的技術。JAVA編譯器產(chǎn)生的目標代碼(J-Code) 是針對一種并不存在的CPU--JAVA虛擬機(JAVA Virtual Machine),

41、而不是某一實際的CPU。JAVA虛擬機能掩蓋不同CPU之間的差別使J-Code能運行于任何具有JAVA虛擬機的機器上。 </p><p><b> ?。?)高性能 </b></p><p>  Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解釋器一秒鐘內(nèi)可調(diào)用300,000個過程。翻譯目標代碼的速度與C/C++的性能沒什么區(qū)別。 (9)多線程

42、 </p><p>  Java支持多線程多線程功能使得在一個程序里可同時執(zhí)行多個小任務。線程,有時也稱小進程是一個大進程里分出來的小的獨立的進程。 </p><p><b> ?。?0)動態(tài)</b></p><p>  Java的動態(tài)特性是其面向?qū)ο笤O計方法的發(fā)展。它允許程序動態(tài)地裝入運行過程中所需要的類,這是C++語言進行面向?qū)ο蟪绦蛟O

43、計所無法實現(xiàn)的。Java編譯器不是將對實例變量和成員函數(shù)的引用編譯為數(shù)值引用,而是將符號引用信息在字節(jié)碼中保存下傳遞給解釋器,再由解釋器在完成動態(tài)連接類后,將符號引用信息轉(zhuǎn)換為數(shù)值偏移量。</p><p><b>  需求分析及系統(tǒng)設計</b></p><p>  3.1課程網(wǎng)站的前臺實現(xiàn)</p><p>  本網(wǎng)站前臺主要通過Myeclips

44、e軟件,Java語言進行設計實現(xiàn),主要通過3個身份的不同認證顯示出不同的身份功能。</p><p>  3.2課程網(wǎng)站的后臺實現(xiàn)</p><p>  網(wǎng)站管理后臺,俗稱網(wǎng)站后臺,是管理網(wǎng)站前臺的一系列操作。通過網(wǎng)站管理后臺達到有效管理網(wǎng)站信息和資源、方便瀏覽者查閱的目的。</p><p>  處于安全性和可維護性等因素的考慮,網(wǎng)站的后臺只允許通過用戶名和密碼驗證的瀏

45、覽者登陸。后臺不同與前臺,前臺服務用戶,后臺需要管理員管理。</p><p>  本課程網(wǎng)站根據(jù)功能分析,需要有管理員實體,教學資源實體,在線模擬測試實體,學生在線留言交流實體。</p><p>  其中,管理員通過輸入正確的用戶名和密碼進入,可以對教學資源進行上傳,同時也可以對學生的在線留言進行回復,刪除等操作。</p><p>  圖3.1 管理員實體屬性圖&l

46、t;/p><p>  圖3.2 教師(學生)信息屬性圖</p><p>  登錄過程分為3種情況:</p><p>  管理員登錄:管理員具有網(wǎng)站的最高權限,可以實現(xiàn)網(wǎng)站的任意非惡性操作,主要實現(xiàn)對網(wǎng)站用戶的管理以及對網(wǎng)站信息的維護。</p><p>  教師登錄:教師登錄主要實現(xiàn)對教育信息的發(fā)布或刪除,對教育資源的管理,以及一些問題的回復。同時

47、教師也具有對教育信息的公告發(fā)布的義務。</p><p>  學生登錄:學生登陸只要實現(xiàn)的功能也就是網(wǎng)絡資源的下載以及和教師或?qū)W生之間的交流。</p><p>  3.3課程網(wǎng)站的需求分析</p><p>  區(qū)別與其他的網(wǎng)絡視頻在線教育,本網(wǎng)站更加側(cè)重于高效,能夠使學生在網(wǎng)站上可以得到及時、確切的資料和學習。</p><p>  為實現(xiàn)功能完

48、善、方面高效的英語教育網(wǎng)站則必須側(cè)重于教師和學生兩個方面:</p><p>  教師更側(cè)重于節(jié)省時間,因此可以通過問題回收的方式將問題集中的發(fā)送到教師的郵箱那里,而在每周的固定時間定位教師的答疑時間,教師的教學視頻也會定期的公布在網(wǎng)站上面供學生學習和使用。</p><p>  從學生的角度是怎樣高效的學習,在線看視頻的方式可以減少不必要的麻煩,可以隨時隨地的下載觀看,而且集中答疑也同時可以

49、給學生節(jié)省不少時間。</p><p>  由于課程網(wǎng)站的設計立足于方便教師教學,方便學生學習,提高學生的自學能力,同時節(jié)約教學成本。所以,本課程網(wǎng)站的功能為:在線查看課程信息,共享課程資源,網(wǎng)上答疑,在線考試,用戶賬戶管理,信息交流等。據(jù)此,要求系統(tǒng)做到以下功能:(1)網(wǎng)站用戶管理:對網(wǎng)站的各類用戶統(tǒng)一管理,便于查看。</p><p>  具體功能:網(wǎng)絡的用戶包括兩類:教師和學生。雖然兩

50、種用戶所得到的權限不同,但都是由管理員統(tǒng)一管理其信息。(2)教學公告發(fā)布:便于學生得到教學信息,實現(xiàn)高效的學習。</p><p>  具體功能:提供類似于公告欄的功能,實現(xiàn)消息的發(fā)布使學生可以及時得到消息從而高效學習。(3)資源共享:主要實現(xiàn)上傳下載功能,用戶能在資源共享界面上傳教學相關視頻、 題庫、課件,提交作業(yè)等功能,并在網(wǎng) 上顯示,為多人共享。</p><p>  具體功能:設置

51、專門提供上傳和下載的頁面,在該頁面提供上傳文件和下載文件的服務,下載的權限是所有可以登錄到本系統(tǒng)的用戶,上傳的權限是管理員(給予老師管理員權限)。(4)學習論壇及在線答疑:給用戶提供一個良好的在線交流的平臺。</p><p>  具體功能:用戶登錄后可以使用論壇功能,學生的權限只能發(fā)表留言,不能對已有的留言進行管理(刪除等操作),同時可以對其他用戶的留言進行回復和查看,管理員則可以刪除已有的不符合論壇要求的發(fā)言

52、。(5)網(wǎng)站信息管理:對網(wǎng)站各部分信息進行管理和更新。</p><p>  具體功能:此部分側(cè)重實現(xiàn)網(wǎng)站信息的更新以及升級,只有管理員有這樣的權限。</p><p><b>  3.4數(shù)據(jù)庫設計</b></p><p><b>  數(shù)據(jù)表定義。</b></p><p>  數(shù)據(jù)表定義指定義數(shù)據(jù)庫中

53、數(shù)據(jù)表的結構,數(shù)據(jù)表的邏輯結構包括:屬性名稱、類型、表示形式、缺省值、校驗規(guī)則、是否關鍵字、可否為空等。將關系型數(shù)據(jù)庫按關系規(guī)范化要求進行設計(3NF)。</p><p>  (2)存儲設備和存儲空間組織。</p><p>  確定數(shù)據(jù)的存放地點、存儲路徑、存儲設備等。</p><p> ?。?)數(shù)據(jù)使用權限設置。</p><p>  針對用

54、戶的不同使用要求,確定數(shù)據(jù)的用戶使用權限,確保數(shù)據(jù)安全。</p><p>  數(shù)據(jù)庫命名為:network</p><p>  本網(wǎng)站使用的數(shù)據(jù)庫表如下:</p><p><b>  表3.1教師表</b></p><p><b>  表3.2學生表</b></p><p>

55、  此部分只簡要的描述了兩種表格的主要信息,還有一些個人信息和聯(lián)系方式并未在上述表格中體現(xiàn)。</p><p><b>  3.5本章小結</b></p><p>  本章對系統(tǒng)的總體設計進行了簡要的描述,通過對各個主要功能模塊的分析介紹,奠定下面設計建站的目標和方案。同時在系統(tǒng)測試和驗證時用于功能對照。達到需求分析的目的。</p><p>&l

56、t;b>  詳細系統(tǒng)設計與實現(xiàn)</b></p><p><b>  前臺系統(tǒng)的實施</b></p><p>  前臺系統(tǒng)的主要功能是向不同的用戶提供登錄入口從而獲得不同的權限信息以實現(xiàn)不同的功能,同時還具有教師(學生)注冊功能,實現(xiàn)與后臺數(shù)據(jù)的聯(lián)系。具體實施為:</p><p>  網(wǎng)站首頁為用戶提供登錄界面,對用的不同的用戶

57、分為管理員、教師、學生3種選擇,通過不同的身份登錄得到對后臺數(shù)據(jù)庫不同的管理權限從而實現(xiàn)功能上的劃分。 </p><p>  管理員:管理員登錄后會得到最高權限,對后臺數(shù)據(jù)庫可以進行任何操作。其主要的3個功能包括:賬戶管理、課程介紹、教學團隊。而每個部分有包括不同的功能。</p><p>  教師:相比較管理員對后臺的權限有所削弱,只能對后臺數(shù)據(jù)庫實現(xiàn)部分功能。主要包括課程信息的發(fā)布以及教

58、學視頻的上傳。</p><p>  學生:具有對后天數(shù)據(jù)庫最小的權限,只能對后臺數(shù)據(jù)庫進行極少的一部分操作。主要是論壇討論部分的操作以及下載學習資料的部分。</p><p>  資料列表選項卡將導向資料查看頁面,該頁面顯示已有的所有資料(包含資料的標題、內(nèi)容、教師所屬學院、系部等),并可通過點擊查看和教師姓名訪問其他頁面。教師和學生都可以通過自己的操作界面進行查看,同時教師的界面中有添加和

59、修改學習資料的功能。</p><p>  學習論壇頁面,將展示學生和教師進行留言交流互動的信息。用戶可以通過我要留言、查看回復、我要回復等超鏈接進入不同的頁面進行不同的操作,實現(xiàn)教師和學生之間的交流功能。</p><p>  資源下載頁面,將為所有用戶提供網(wǎng)站現(xiàn)有資料的下載服務。</p><p>  在線考試界面:教師可以在自己的工作界面中添加試卷信息以及試題的描述

60、,同時學生可以在自己的學習界面中查看試卷在線答題。</p><p><b>  流程圖展示如下:</b></p><p>  圖4.1 網(wǎng)站基本結構圖</p><p>  圖4.2 網(wǎng)站注冊結構圖</p><p>  圖4.3 學生功能結構圖</p><p>  圖4.4 教師列表結構圖</

61、p><p>  圖4.5 教師登陸結構圖</p><p>  圖4.6 學習論壇結構圖</p><p><b>  后臺系統(tǒng)的實施</b></p><p>  通過創(chuàng)建數(shù)據(jù)庫,并實現(xiàn)對數(shù)據(jù)庫的操作來實現(xiàn)對后臺的管理。</p><p>  首先安裝數(shù)據(jù)庫MySQL,建立用戶數(shù)據(jù)庫text,在text數(shù)據(jù)

62、庫中新建后臺管理所需要用到的表。具體如下:</p><p><b>  管理員表:</b></p><p>  此部分的用戶對整個數(shù)據(jù)庫有最高的管理權限,可以對數(shù)據(jù)庫進行所有操作,而此表則只是對管理員登錄的時候進行測試。</p><p><b>  表設計如下:</b></p><p>  圖4.7

63、 管理員表結構</p><p><b>  學生表:</b></p><p>  與管理員表的結構相似,學生表的主要功能也是實現(xiàn)在學生登錄時進行測試,但不同之處在于學生表可以進行添加、修改和刪除。</p><p><b>  表結構設計如下:</b></p><p>  圖4.8 學生表結構<

64、/p><p><b>  教師表:</b></p><p>  與學生表相似,只是數(shù)據(jù)庫的權限有所不同。</p><p>  圖4.9 教師表結構</p><p><b>  課程信息表:</b></p><p>  課程信息表主要是實現(xiàn)對課程信息的公布和提示功能,主要包括課程簡

65、介和教學團隊,管理員對該表有管理權限,教師有部分管理權限,而對于學生只有訪問權限。</p><p><b>  表結構設計如下:</b></p><p>  圖4.10 課程信息表結構</p><p><b>  部分內(nèi)容如下:</b></p><p><b>  試題表:</b&g

66、t;</p><p>  試題表主要是通過教師的添加、修改和刪除實現(xiàn)對該表的操作,同樣具有最高權限的管理員也有對該表進行操作的權利。</p><p>  圖4.11 試題表結構</p><p><b>  教學資料表:</b></p><p>  該表用于存放教學資料以及教學視頻,同時也提供學習資料和學習視頻的下載功能。

67、</p><p><b>  表結構設計如下:</b></p><p>  圖4.12 教學資料表結構</p><p><b>  試題題目表:</b></p><p>  該表主要是集中的存放各個試題以便于用戶可以更加直觀的看到,體現(xiàn)了方便、快捷的特點,這正是網(wǎng)絡教學的目的。</p>

68、<p><b>  表的格式如下:</b></p><p>  圖4.13 試題題目表結構</p><p><b>  論壇回復表:</b></p><p>  該表用于存放回復的時間、內(nèi)容、回復人等信息。</p><p><b>  表結構設計如下:</b><

69、;/p><p>  圖4.14 論壇回復表結構</p><p>  各系統(tǒng)界面及關鍵代碼</p><p><b>  網(wǎng)站首頁:</b></p><p>  圖4.15 網(wǎng)站首頁截圖</p><p><b>  資料列表:</b></p><p>  圖4

70、.16 資料列表截圖</p><p><b>  <%</b></p><p><b>  ......</b></p><p>  sqlname = "select count(*) from main,teacher,type where main.idofteacher=teacher.teache

71、rid and main.idoftype=type.typeid";</p><p>  ResultSet rt = stmt.executeQuery(sqlname);</p><p>  rt.next();</p><p>  intRowCount = rt.getInt(1);//取得整數(shù)保存與intRowCount變量中</p>

72、;<p>  intPageCount = (intRowCount + intPageSize - 1) / intPageSize;//計算出總頁數(shù)(記錄總數(shù)+每頁顯示的記錄-1)/每頁顯示的記錄)</p><p>  if (intPage > intPageCount)</p><p>  intPage = intPageCount;</p>&

73、lt;p>  sqlname = "select * from main,teacher,type where main.idofteacher=teacher.teacherid and main.idoftype=type.typeid and teacher like '%"+ teacher</p><p>  + "%' and title lik

74、e '%"</p><p><b>  + title</b></p><p>  + "%' and course like '%"</p><p><b>  + course</b></p><p>  + "%' and

75、 type like '%"</p><p>  + filetype</p><p>  + "%' and fenlei1 like '%"</p><p><b>  + fenlei1</b></p><p>  + "%' and fenl

76、ei2 like '%"</p><p><b>  + fenlei2</b></p><p>  + "%' order by main.dateandtime desc";</p><p>  rs = stmt.executeQuery(sqlname);//執(zhí)行sql,按照時間先后排序顯示

77、</p><p>  i = (intPage - 1) * intPageSize;</p><p>  for (j = 0; j < i; j++)</p><p>  rs.next();%></p><p><b>  ......</b></p><p><b>

78、  %></b></p><p><b>  管理員登錄:</b></p><p>  圖4.17 管理員登陸截圖</p><p>  <script type="text/javascript"></p><p>  function tupian(idt){</

79、p><p>  var nametu="xiaotu"+idt;</p><p>  var tp = document.getElementById(nametu);</p><p>  tp.src="${pageContext.request.contextPath}/view/images/ico5.gif";</p

80、><p>  for(var i=1;i<60;i++)</p><p><b>  {</b></p><p>  var nametu2="xiaotu"+i;</p><p>  if(i!=idt*1)</p><p><b>  {</b>&l

81、t;/p><p>  var tp2=document.getElementById('xiaotu'+i);</p><p>  if(tp2!=undefined)</p><p>  {tp2.src="${pageContext.request.contextPath}/view/images/ico6.gif";}</

82、p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  function list(idstr){</p><p>  var name1="subtree"

83、+idstr;</p><p>  var name2="img"+idstr;</p><p>  var objectobj=document.all(name1);</p><p>  var imgobj=document.all(name2);</p><p>  if(objectobj.style.displ

84、ay=="none"){</p><p>  for(i=1;i<60;i++){</p><p>  var name3="img"+i;</p><p>  var name="subtree"+i;</p><p>  var o=document.all(name);&

85、lt;/p><p>  if(o!=undefined){</p><p>  o.style.display="none";</p><p>  var image=document.all(name3);</p><p>  image.src="${pageContext.request.contextPath

86、}/view/images/ico4.gif";</p><p><b>  }</b></p><p><b>  }</b></p><p>  objectobj.style.display="";</p><p>  imgobj.src="${pag

87、eContext.request.contextPath}/view/images/ico3.gif";</p><p><b>  }</b></p><p><b>  else{</b></p><p>  objectobj.style.display="none";</p>

88、;<p>  imgobj.src="${pageContext.request.contextPath}/view/images/ico4.gif";</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  添加教學視頻頁面:

89、</b></p><p>  圖4.18 添加教學視頻截圖</p><p>  String path = request.getContextPath();</p><p>  String basePath = request.getScheme()+"://"+request.getServerName()+":&qu

90、ot;+request.getServerPort()+path+"/";</p><p>  Integer type = Integer.valueOf(request.getParameter("type"));</p><p>  Map<Integer, String> nameMap = new HashMap<Inte

91、ger, String>();</p><p>  nameMap.put(1, "教學課件");</p><p>  nameMap.put(2, "教學視頻");</p><p>  nameMap.put(3, "習題庫");</p><p>  nameMap.put(

92、4, "參考資料");</p><p>  nameMap.put(5, "學生作業(yè)");</p><p>  String name = nameMap.get(type);</p><p><b>  試題添加頁面:</b></p><p>  圖4.19 試題添加截圖<

93、/p><p><b>  代碼略。</b></p><p><b>  論壇頁面:</b></p><p>  圖4.20 論壇回復截圖</p><p><b>  <%</b></p><p>  int intPageSize;</p>

94、<p>  int intRowCount;//記錄總數(shù)</p><p>  int intPageCount;//總頁數(shù)</p><p>  int intPage;//頁面參數(shù)</p><p>  String strPage;//定義變量用來傳遞page</p><p><b>  int i, j;</b

95、></p><p>  intPageSize = 5;//定義每頁顯示5條記錄</p><p>  strPage = request.getParameter("page");//取得當前的頁碼</p><p>  if (strPage == null) {//判斷初始頁面,如果沒有顯示記錄,就置為第一頁</p><

96、;p>  intPage = 1;</p><p><b>  } else {</b></p><p>  intPage = Integer.parseInt(strPage);//將strPage轉(zhuǎn)化為整數(shù)</p><p>  if (intPage < 1)</p><p>  intPage = 1

97、;</p><p><b>  }</b></p><p>  sqlname = "select count(*) from guest";</p><p>  ResultSet rt = stmt.executeQuery(sqlname);</p><p>  rt.next();</p

98、><p>  intRowCount = rt.getInt(1);//取得整數(shù)保存與intRowCount變量中</p><p>  intPageCount = (intRowCount + intPageSize - 1) / intPageSize;//計算出總頁數(shù)(記錄總數(shù)+每頁顯示的記錄-1)/每頁顯示的記錄)</p><p>  if (intPage &

99、gt; intPageCount)</p><p>  intPage = intPageCount;</p><p>  sqlname = "select * from guest";</p><p>  rs = stmt.executeQuery(sqlname);//執(zhí)行sql,按照時間先后排序顯示</p><p&g

100、t;  i = (intPage - 1) * intPageSize;</p><p>  for (j = 0; j < i; j++)</p><p>  rs.next();%></p><p>  <%-- 設置intPage參數(shù) --%></p><p>  <%if (intRowCount ==

101、0) {%></p><p>  對不起,還沒有數(shù)據(jù)!</p><p>  <%} else {%></p><p><b>  <br></b></p><p>  <table style="BORDER-COLLAPSE: collapse" borderCo

102、lor=#808080</p><p>  align=center cellPadding=5 width=550 border=1></p><p><b>  <tr></b></p><p><b>  <td></b></p><p>  <table

103、style="BORDER-COLLAPSE: collapse" width=100% border=0></p><p>  <tr class="header"></p><p>  <td colspan=3 align=center></p><p>  留言列表&

104、;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=talk.jsp><font color=#FFFFFF>我要留言</font></p><p><b&g

105、t;  </td></b></p><p><b>  </tr></b></p><p>  <%-- 顯示每頁的數(shù)據(jù) (根據(jù)i的值判斷每頁的5條記錄) --%></p><p><b>  <%i = 0;</b></p><p>  whi

106、le (i < intPageSize && rs.next()) {</p><p>  out.print("<tr><td width=200>昵稱" + name + ":"</p><p>  + rs.getString("name") + "</td>

107、;");</p><p>  out.print("<td width=230>留言內(nèi)容" + message + ":"</p><p>  + rs.getString("message") + "</td>");</p><p><b>

108、  %></b></p><p><b>  <tr></b></p><p>  <td><img src=images/arrow.gif><a href="message.jsp?name=<%=rs.getString("name") %>">

109、查看回復</a></td></p><p>  <td><img src=images/arrow.gif><a href="writemessage.jsp?name=<%=rs.getString("name") %>">我要回復</a></td></p>&l

110、t;p><b>  </tr></b></p><p><b>  <%</b></p><p>  out.print("</td></tr><tr><td colspan=3><HR SIZE=1></td></tr>&quo

111、t;);</p><p>  i++;//通過I循環(huán)設置每頁的頁數(shù)</p><p><b>  }</b></p><p>  out.print("<tr></tr>");</p><p><b>  }%></b></p><

112、p><b>  <%</b></p><p>  int intPageSize;</p><p>  int intRowCount;//記錄總數(shù)</p><p>  int intPageCount;//總頁數(shù)</p><p>  int intPage;//頁面參數(shù)</p><p&g

113、t;  String strPage;//定義變量用來傳遞page</p><p><b>  int i, j;</b></p><p>  intPageSize = 5;//定義每頁顯示5條記錄</p><p>  strPage = request.getParameter("page");//取得當前的頁碼<

114、/p><p>  if (strPage == null) {//判斷初始頁面,如果沒有顯示記錄,就置為第一頁</p><p>  intPage = 1;</p><p><b>  } else {</b></p><p>  intPage = Integer.parseInt(strPage);//將strPage轉(zhuǎn)

115、化為整數(shù)</p><p>  if (intPage < 1)</p><p>  intPage = 1;</p><p><b>  }</b></p><p>  sqlname = "select count(*) from message where name='"+name+

116、"'";</p><p>  ResultSet rt = stmt.executeQuery(sqlname);</p><p>  rt.next();</p><p>  intRowCount = rt.getInt(1);//取得整數(shù)保存與intRowCount變量中</p><p>  intPageC

117、ount = (intRowCount + intPageSize - 1) / intPageSize;//計算出總頁數(shù)(記錄總數(shù)+每頁顯示的記錄-1)/每頁顯示的記錄)</p><p>  if (intPage > intPageCount)</p><p>  intPage = intPageCount;</p><p>  sqlname = &q

118、uot;select * from message where message.name='"+name+"'";</p><p>  rs = stmt.executeQuery(sqlname);//執(zhí)行sql,按照時間先后排序顯示</p><p>  i = (intPage - 1) * intPageSize;</p>

119、<p>  for (j = 0; j < i; j++)</p><p>  rs.next();%></p><p>  <%-- 設置intPage參數(shù) --%></p><p>  <%if (intRowCount == 0) {%></p><p>  對不起,還沒有數(shù)據(jù)!</p

120、><p>  <%} else {%></p><p><b>  <br></b></p><p>  <table style="BORDER-COLLAPSE: collapse" borderColor=#808080</p><p>  align=center c

121、ellPadding=5 width=550 border=1></p><p><b>  <tr></b></p><p><b>  <td></b></p><p>  <table style="BORDER-COLLAPSE: collapse" widt

122、h=100% border=0></p><p>  <tr class="header"></p><p>  <td colspan=3 align=center></p><p><b>  回復列表</b></p><p><b>  </td&g

123、t;</b></p><p><b>  </tr></b></p><p>  <%-- 顯示每頁的數(shù)據(jù) (根據(jù)i的值判斷每頁的5條記錄) --%></p><p><b>  <%i = 0;</b></p><p>  while (i < in

124、tPageSize && rs.next()) {</p><p>  out.print("<tr><td width=200>昵稱:"</p><p>  + rs.getString("name2") + "</td>");</p><p>  ou

125、t.print("<td width=230>回復內(nèi)容:"</p><p>  + rs.getString("message") + "</td>");</p><p>  out.print("</td></tr><tr><td colspan=3&g

126、t;<HR SIZE=1></td></tr>");</p><p>  i++;//通過I循環(huán)設置每頁的頁數(shù)</p><p><b>  }</b></p><p>  out.print("<tr></tr>");</p><p&g

127、t;<b>  }%></b></p><p><b>  資源下載頁面:</b></p><p>  圖4.21 資料下載截圖</p><p><b>  <%</b></p><p>  //String downloadname=session.getAttr

128、ibute("name").toString();</p><p>  String downloadname=request.getParameter("filename");</p><p>  // 新建一個SmartUpload對象</p><p>  SmartUpload su = new SmartUpload(

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論