基于python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)(完整資料)_第1頁(yè)
基于python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)(完整資料)_第2頁(yè)
基于python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)(完整資料)_第3頁(yè)
基于python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)(完整資料)_第4頁(yè)
基于python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)(完整資料)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)

基于python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)基于python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)【摘要】近年來(lái),隨著網(wǎng)絡(luò)應(yīng)用的逐漸擴(kuò)展和深入,如何高效的獲取網(wǎng)上數(shù)據(jù)成為了無(wú)數(shù)公司和個(gè)人的追求,在大數(shù)據(jù)時(shí)代,誰(shuí)掌握了更多的數(shù)據(jù),誰(shuí)就可以獲得更高的利益,而網(wǎng)絡(luò)爬蟲是其中最為常用的一種從網(wǎng)上爬取數(shù)據(jù)的手段。網(wǎng)絡(luò)爬蟲,即WebSpider,是一個(gè)很形象的名字。如果把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來(lái)爬去的蜘蛛。網(wǎng)絡(luò)蜘蛛是通過(guò)網(wǎng)頁(yè)的鏈接地址來(lái)尋找網(wǎng)頁(yè)的。從網(wǎng)站某一個(gè)頁(yè)面(通常是首頁(yè))開始,讀取網(wǎng)頁(yè)的內(nèi)容,找到在網(wǎng)頁(yè)中的其它鏈接地址,然后通過(guò)這些鏈接地址尋找下一個(gè)網(wǎng)頁(yè),這樣一直循環(huán)下去,直到把這個(gè)網(wǎng)站所有的網(wǎng)頁(yè)都抓取完為止.如果把整個(gè)互聯(lián)網(wǎng)當(dāng)成一個(gè)網(wǎng)站,那么網(wǎng)絡(luò)蜘蛛就可以用這個(gè)原理把互聯(lián)網(wǎng)上所有的網(wǎng)頁(yè)都抓取下來(lái).那么,既然網(wǎng)絡(luò)爬蟲有著如此先進(jìn)快捷的特點(diǎn),我們?cè)撊绾螌?shí)現(xiàn)它呢?在眾多面向?qū)ο蟮恼Z(yǔ)言中,首選python,因?yàn)閜ython是一種“解釋型的、面向?qū)ο蟮摹в袆?dòng)態(tài)語(yǔ)義的”高級(jí)程序,可以使人在編程時(shí)保持自己的風(fēng)格,并且編寫的程序清晰易懂,有著很廣闊的應(yīng)用前景.關(guān)鍵詞python爬蟲數(shù)據(jù)1前言1.1本編程設(shè)計(jì)的目的和意義隨著網(wǎng)絡(luò)的迅速發(fā)展,萬(wàn)維網(wǎng)成為大量信息的載體,如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn)。搜索引擎(例如傳統(tǒng)的通用搜索引擎AltaVista,Yahoo!和Google等)作為一個(gè)輔助人們檢索信息的工具成為用戶訪問萬(wàn)維網(wǎng)的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性,如:(1)不同領(lǐng)域、不同背景的用戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結(jié)果包含大量用戶不關(guān)心的網(wǎng)頁(yè)。(2)通用搜索引擎的目標(biāo)是盡可能大的網(wǎng)絡(luò)覆蓋率,有限的搜索引擎服務(wù)器資源與無(wú)限的網(wǎng)絡(luò)數(shù)據(jù)資源之間的矛盾將進(jìn)一步加深。(3)萬(wàn)維網(wǎng)數(shù)據(jù)形式的豐富和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,圖片、數(shù)據(jù)庫(kù)、音頻/視頻多媒體等不同數(shù)據(jù)大量出現(xiàn),通用搜索引擎往往對(duì)這些信息含量密集且具有一定結(jié)構(gòu)的數(shù)據(jù)無(wú)能為力,不能很好地發(fā)現(xiàn)和獲取。(4)通用搜索引擎大多提供基于關(guān)鍵字的檢索,難以支持根據(jù)語(yǔ)義信息提出的查詢。為了解決上述問題,定向抓取相關(guān)網(wǎng)頁(yè)資源的聚焦爬蟲應(yīng)運(yùn)而生。聚焦爬蟲是一個(gè)自動(dòng)下載網(wǎng)頁(yè)的程序,它根據(jù)既定的抓取目標(biāo),有選擇的訪問萬(wàn)維網(wǎng)上的網(wǎng)頁(yè)與相關(guān)的鏈接,獲取所需要的信息。與通用爬蟲(generalpurposewebcrawler)不同,聚焦爬蟲并不追求大的覆蓋,而將目標(biāo)定為抓取與某一特定主題內(nèi)容相關(guān)的網(wǎng)頁(yè),為面向主題的用戶查詢準(zhǔn)備數(shù)據(jù)資源。1。2編程設(shè)計(jì)目及思路1。2。1編程設(shè)計(jì)目的學(xué)習(xí)了解并熟練掌握python的語(yǔ)法規(guī)則和基本使用,對(duì)網(wǎng)絡(luò)爬蟲的基礎(chǔ)知識(shí)進(jìn)行了一定程度的理解,提高對(duì)網(wǎng)頁(yè)源代碼的認(rèn)知水平,學(xué)習(xí)用正則表達(dá)式來(lái)完成匹配查找的工作,了解數(shù)據(jù)庫(kù)的用途,學(xué)習(xí)mongodb數(shù)據(jù)庫(kù)的安裝和使用,及配合python的工作。1。2。2設(shè)計(jì)思路以世紀(jì)佳緣網(wǎng)為例,思考自己所需要的數(shù)據(jù)資源,并以此為基礎(chǔ)設(shè)計(jì)自己的爬蟲程序。應(yīng)用python偽裝成瀏覽器自動(dòng)登陸世紀(jì)佳緣網(wǎng),加入變量打開多個(gè)網(wǎng)頁(yè).通過(guò)python的urllib2函數(shù)進(jìn)行世紀(jì)佳緣網(wǎng)源代碼的獲取。用正則表達(dá)式分析源代碼,找到所需信息導(dǎo)入excel。連接數(shù)據(jù)庫(kù),將爬下的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。1.3本編程設(shè)計(jì)應(yīng)達(dá)到的要求1、對(duì)特定的網(wǎng)站爬取特定的數(shù)據(jù);2、實(shí)現(xiàn)代碼和得到結(jié)果;3、能夠和數(shù)據(jù)庫(kù)進(jìn)行連接,將爬下的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。4、將爬下的數(shù)據(jù)儲(chǔ)存在excel中方便編輯.2編程設(shè)計(jì)方案2.1爬取方案2.1.1所需爬取的數(shù)據(jù)以世紀(jì)佳緣網(wǎng)為例,所需要爬取的數(shù)據(jù)為注冊(cè)世紀(jì)佳緣網(wǎng)的人的用戶名、真實(shí)姓名、性別、年齡、學(xué)歷、月收入這些直觀信息。2.1。2用python獲取世紀(jì)佳緣網(wǎng)的源代碼爬蟲最主要的處理對(duì)象就是URL,它根據(jù)URL地址取得所需要的文件內(nèi)容,然后對(duì)它進(jìn)行進(jìn)一步的處理.因此,準(zhǔn)確地理解URL對(duì)理解網(wǎng)絡(luò)爬蟲至關(guān)重要。URL是URI的一個(gè)子集。它是UniformResourceLocator的縮寫,譯為“統(tǒng)一資源定位符".通俗地說(shuō),URL是Internet上描述信息資源的字符串,主要用在各種WWW客戶程序和服務(wù)器程序上。采用URL可以用一種統(tǒng)一的格式來(lái)描述各種信息資源,包括文件、服務(wù)器的地址和目錄等。URL的格式由三部分組成:

①第一部分是協(xié)議(或稱為服務(wù)方式).②第二部分是存有該資源的主機(jī)IP地址(有時(shí)也包括端口號(hào))。③第三部分是主機(jī)資源的具體地址,如目錄和文件名等。第一部分和第二部分用“://”符號(hào)隔開,第二部分和第三部分用“/”符號(hào)隔開。第一部分和第二部分是不可缺少的,第三部分有時(shí)可以省略。例如:http://www.rol。cn.net/talk/talk1。htm

其計(jì)算機(jī)域名為www。rol.c;超級(jí)文本文件(文件類型為.html)是在目錄/talk下的talk1.htm.這是瑞得聊天室的地址,可由此進(jìn)入瑞得聊天室的第1室。Python獲取網(wǎng)頁(yè)源代碼可用urllib或urllib2函數(shù)進(jìn)行,極其方便快捷,代碼如下:import

urllib2

response

=

urllib2。urlopen('http://www.baidu.com/')

html

response.read()

print

html

2.1.3應(yīng)用python偽裝成瀏覽器自動(dòng)登陸世紀(jì)佳緣網(wǎng),加入變量打開多個(gè)網(wǎng)頁(yè).有了源代碼就可以進(jìn)行數(shù)據(jù)的爬取了,但是因?yàn)槭兰o(jì)佳緣網(wǎng)近日進(jìn)行了改版,簡(jiǎn)單的爬蟲程序已經(jīng)無(wú)法在對(duì)其進(jìn)行全網(wǎng)頁(yè)的爬取工作了,所以,在獲取數(shù)據(jù)之前,需要對(duì)爬蟲進(jìn)行一下偽裝,使其成為一個(gè)瀏覽器,以實(shí)現(xiàn)全網(wǎng)頁(yè)的爬取工作。應(yīng)用opener和header的基礎(chǔ)知識(shí)即可實(shí)現(xiàn)偽裝成瀏覽器這一步驟.在偽裝的同時(shí),需要加入變量來(lái)打開多個(gè)網(wǎng)頁(yè),是的爬取工作可以順利進(jìn)行.代碼如下:r=0w=3013while3012〈w<9999:w=w+1k=str(w)login_page="http://login.jiayuan.com/dologin.php?pre_url=http://usercp.jiayuan.com/”cj=cookielib。CookieJar()opener=urllib2。build_opener(urllib2.HTTPCookieProcessor(cj))opener.addheaders=[('User-agent’,'Mozilla/4。0(compatible;MSIE6.0;WindowsNT5.1)')]dat(yī)a=urllib.urlencode({”name”:"834054996@qq。com",”password":"benben12"})opener。open(login_page,data)op=opener。open("http://www.jiayuan.com/10796”+k)html=op.read()2.14用正則表達(dá)式分析網(wǎng)頁(yè)源代碼正則表達(dá)式是用于處理字符串的強(qiáng)大工具,它并不是Python的一部分。其他編程語(yǔ)言中也有正則表達(dá)式的概念,區(qū)別只在于不同的編程語(yǔ)言實(shí)現(xiàn)支持的語(yǔ)法數(shù)量不同。它擁有自己獨(dú)特的語(yǔ)法以及一個(gè)獨(dú)立的處理引擎,在提供了正則表達(dá)式的語(yǔ)言里,正則表達(dá)式的語(yǔ)法都是一樣的。下圖為使用正則表達(dá)式進(jìn)行匹配的流程:正則表達(dá)式的大致匹配過(guò)程是:1。依次拿出表達(dá)式和文本中的字符比較,2。如果每一個(gè)字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。3。如果表達(dá)式中有量詞或邊界,這個(gè)過(guò)程會(huì)稍微有一些不同。Python是通過(guò)re模塊實(shí)現(xiàn)對(duì)正則表達(dá)式的調(diào)用的。程序代碼如下:find_re=re。compile(r"absolute.+?span>(.*?)</。+?&gt;&gt;〈/a>(。*?)</h2>.+?〈/b>(.*?)〈/s。+?</b>(。*?)〈/s。+?〈/b>(.*?)</sp.+?</b>(.*?)〈/sp.+?</b〉”,re.DOTALL)2.2存儲(chǔ)方案2.2。1儲(chǔ)存在excel表格中Excel表格具有方便篩選、查找和編輯的特點(diǎn),所以將網(wǎng)絡(luò)爬蟲爬取的數(shù)據(jù)儲(chǔ)存在excel表格中是首選。使用python建立excel表格是十分容易,代碼如下:filename=xlwt。Workbook()sheet=filename。add_sheet(’name')建立完成后可將數(shù)據(jù)寫入excel表格:forainx:sheet.write(r,0,a[0].decode("utf-8"))sheet.write(r,1,a[1].decode("utf-8”))sheet。write(r,2,a[2]。decode("utf-8"))sheet.write(r,3,a[3].decode(”utf—8"))sheet.write(r,4,a[4].decode("utf-8"))sheet。write(r,5,a[5].decode("utf-8"))r=r+1printr+3012filename.save(’test3.xls’)2.2.2儲(chǔ)存在數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)指的是以一定方式儲(chǔ)存在一起、能為多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合.將數(shù)據(jù)儲(chǔ)存在數(shù)據(jù)庫(kù)中也具有直觀簡(jiǎn)潔的特點(diǎn)。Python調(diào)用數(shù)據(jù)庫(kù)是用pymongo模塊,創(chuàng)建與導(dǎo)入代碼如下:db=pymongo。Connection()。testforainx:values=dict(img=a[0].decode("utf-8"),infor=a[1]。decode("utf—8"),age=a[2].decode(”utf—8"),adress=a[3].decode("utf-8"),marry=a[4]。decode(”utf—8”))db。user.insert({'values’:values})content=db.user.find()forainx:print’img:'+a[0]。decode(”utf—8")print'infor:'+a[1].decode("utf—8”)print'age:'+a[2].decode(”utf—8”)print'adress:’+a[3]。decode("utf-8")print'marry:’+a[4].decode("utf—8")總結(jié)本程序利用了python語(yǔ)言編寫網(wǎng)絡(luò)爬蟲程序,實(shí)現(xiàn)了從世紀(jì)佳緣網(wǎng)上爬取用戶數(shù)據(jù)資料,使用urllib函數(shù)以及re模塊、pymongo模塊進(jìn)行源代碼的獲取、編輯和數(shù)據(jù)的導(dǎo)出,并針對(duì)網(wǎng)頁(yè)代碼中無(wú)性別顯示的問題,采取爬取注冊(cè)用戶信息同時(shí)爬取注冊(cè)用戶照片地址的方式解決,瀏覽所爬取信息時(shí),只需將照片地址輸入瀏覽器地址欄,即可得到所查看用戶上傳的自拍照,得到形象信息??偟膩?lái)說(shuō)程序設(shè)計(jì)簡(jiǎn)便、實(shí)用性強(qiáng)、便于讀取和再利用.4、附錄4.1將爬取數(shù)據(jù)儲(chǔ)存在excel表格4.1.1源代碼#coding=gbkimportreimportxlwtimportcookielibimporturllib,urllib2#filename=xlwt。Workbook()sheet=filename.a(chǎn)dd_sheet('name')find_re=re。compile(r”absolute。+?span>(.*?)</.+?&gt;>;</a〉(.*?)〈/h2>.+?〈/b>(.*?)</s.+?〈/b>(.*?)〈/s。+?</b>(。*?)〈/sp。+?〈/b>(。*?)</sp。+?</b>”,re.DOTALL)r=0w=3013while3012<w〈9999:w=w+1k=str(w)login_page=”http://login.jiayua/dologin。php?pre_url=http://usercp。jiayuan。com/”cj=cookielib。CookieJar()opener=urllib2。build_opener(urllib2。HTTPCookieProcessor(cj))opener.addheaders=[(’User-agent','Mozilla/4.0(compat(yī)ible;MSIE6.0;WindowsNT5。1)')]data=urllib。urlencode({"name":"834054996@",”password”:”benben12"})opener.open(login_page,data)op=opener.open(”http://www。jiayuan。com/10796”+k)html=op.read()x=find_re.findall(html)forainx:sheet.write(r,0,a[0].decode("utf-8"))shee(cuò)t。write(r,1,a[1].decode("utf-8"))sheet。write(r,2,a[2]。decode("utf-8”))sheet。write(r,3,a[3]。decode("utf—8”))sheet.write(r,4,a[4].decode("utf-8”))sheet.write(r,5,a[5].decode(”utf-8”))r=r+1printr+3012filename.save('test3.xls')4。1。2爬取數(shù)據(jù)匯總截圖4.2將爬取數(shù)據(jù)寫入數(shù)據(jù)庫(kù)4。2.1源代碼#coding=gbkimporturllibimportreimportpymongodb=pymongo。Connection().testfind_re=pile(r"absolute.+?span〉(.*?)</。+?&gt;&gt;〈/a>(.*?)〈/h2>.+?〈/b〉(。*?)〈/s.+?</b〉(。*?)</s.+?</b〉(.*?)</sp.+?〈/b>”,re。DOTALL)w=11while10<w<20:w=w+1k=str(w)page=urllib.urlopen(”http://www。jiayua/1079608”+k+"?fxly=search_v2_index")html=page。read()x=find_re。findall(html)forainx:values=dict(img=a[0].decode(”utf-8"),infor=a[1].decode("utf-8”),age=a[2].decode(”utf-8"),adress=a[3].decode(”utf-8”),marry=a[4].decode(”utf—8"))db.user.insert({’values’:values})content=db.user。find()forainx:print'img:'+a[0].decode("utf—8")print’infor:'+a[1]。decode("utf—8")print’age:’+a[2].decode(”utf-8”)print'adress:'+a[3].decode("utf-8")print'marry:’+a[4].decode(”utf-8")4.2。2爬取數(shù)據(jù)匯總截圖參考文獻(xiàn)Guidovanrossum《Python手冊(cè)》MagnusLieHetlar《python基礎(chǔ)教程》羅剛,王振東《自己動(dòng)手寫網(wǎng)絡(luò)爬蟲》畢業(yè)設(shè)計(jì)(論文)基于jsp(java)網(wǎng)絡(luò)教學(xué)平臺(tái)系統(tǒng)的設(shè)計(jì)和開發(fā)摘要遠(yuǎn)程教育作為現(xiàn)代教育技術(shù)的形式,給教育思想與技術(shù)帶來(lái)了革命性的變革,己經(jīng)成為現(xiàn)代教育的必然要求.遠(yuǎn)程教育要得以順利、高效的實(shí)施,必然離不開高效的管理與支撐平臺(tái)環(huán)境。構(gòu)建基于Java技術(shù)的網(wǎng)絡(luò)教學(xué)管理系統(tǒng)是進(jìn)行遠(yuǎn)程教學(xué)的迫切需要.本文首先介紹了遠(yuǎn)程教育的發(fā)展?fàn)顩r,面向?qū)ο蟮南到y(tǒng)開發(fā)平臺(tái)以及對(duì)Web應(yīng)用系統(tǒng)的支持,對(duì)象建模語(yǔ)言UML的基本知識(shí)。然后主要介紹了以UML為建模語(yǔ)言,開發(fā)基于JSP/Servlet的網(wǎng)絡(luò)教學(xué)管理系統(tǒng)的過(guò)程使用用例圖,順序圖和活動(dòng)圖來(lái)尋找用戶需求,明確用例中對(duì)象之間的關(guān)系,從而建立系統(tǒng)的用例模型;分析類,確定了系統(tǒng)中的對(duì)象抽象成類:這樣完成了系統(tǒng)分析。在系統(tǒng)設(shè)計(jì)過(guò)程中,首先設(shè)計(jì)系統(tǒng)構(gòu)架,劃分功能模塊,并給出功能設(shè)計(jì)。在功能設(shè)計(jì)中,構(gòu)建設(shè)計(jì)類,運(yùn)用設(shè)計(jì)類順序圖,類圖來(lái)實(shí)現(xiàn)了系統(tǒng)的設(shè)計(jì)模型.數(shù)據(jù)庫(kù)設(shè)計(jì)給出數(shù)據(jù)庫(kù)模型和數(shù)據(jù)庫(kù)中各個(gè)表的字段結(jié)構(gòu)。最后一章對(duì)系統(tǒng)關(guān)鍵實(shí)現(xiàn)做了探討,分別實(shí)現(xiàn)了用戶身份鑒別,會(huì)話跟蹤,數(shù)據(jù)庫(kù)連接池和數(shù)據(jù)優(yōu)化并對(duì)系統(tǒng)安全作出說(shuō)明。本文對(duì)如何運(yùn)用面向?qū)ο蟮姆椒▉?lái)快速高效的開發(fā)一個(gè)復(fù)用性良好的安全的網(wǎng)絡(luò)應(yīng)用程序提供了一個(gè)良好的思路。關(guān)鍵詞:遠(yuǎn)程教育,教學(xué)管理,UML,網(wǎng)絡(luò)教學(xué)AbstractAsarepresentationofcontemporaryeducation,remoteeducation,whichhasbroughtthetraditionaleducationrevolutionaryideasandtechnologiesandoptimizedtheeducationalresources,hasbeenthetrendofthecontemporaryeducation。Remoteeducationcan'trunwellwithoutanefficientmanagementplatform.ToarchitectateachingmanagementsystemthroughinternetbasedonJSP/Servletbecomesveryimportant。Thepaperfirstintroducesthedevelopmentofremoteeducation,theobject—orienteddevelopmentplatformJSPandthebriefknowledgeofUML。ThenadetailedintroductionisgivenonthedevelopmentprocessofateachingmanagementsystemthroughinternetbasedonJSPwithUMLasmodelinglanguage.Constructingusecasemodelthroughusingusecasediagram,sequencediagramandactivitydiagramtomakeclearuser'srequirementandtherelationbetweenobjectsinusecase.Throughanalysingclassestoconfirmtheobjectsinsystemandabstractthemtoclasses.Sotheanalysisofsystemiscompleted.Amongthedesignprocessofsystem,designingthesystemarchitecture,partitioningthesystemtoseveralsubsystemandfunctionmodelsaccordingtousecasesandgivingthefunctiondesignofonesubsystem。Thefunctiondesignincludestheclassesdesignandthefollowingsequencediagramandclassdiagram。Databasedesigninvolvesadatabaselogicmodelandthestructureofalllabels.Intheend,Iimplementsomekeytechnologiesofsystemsuchasuser’sidentity,sessiontrack,databasepool,dataprocessoptimizingandsystemsecurity。Toensuresecurity,areliableandpracticalsecuritypolicy,inwhichcontainerbaseddeclarativesecurityisdominantandprogrammaticsecurityiscomplementary,isgivenrespectivelytothewebtier,EJItieranddatatierofthesystemaccordingtothesystemframework.Thisarticlealsosuppliesagoodideaonhowtodevelopereusableandsafewebapplicationquicklywithobject—orientedmethodology.Keywords:remoteeducation,leachingmanagement,JSP,UML目錄TOC\o"1—3"\h\zHYPERLINK\l”_Toc139269570”1引言11.1網(wǎng)絡(luò)教學(xué)系統(tǒng)的技術(shù)1_Toc139269574"2。1web系統(tǒng)應(yīng)用研究2HYPERLINK\l”_Toc139269575”2.1。1N層體系結(jié)構(gòu)2_Toc139269577”2.2JSP/Servlet對(duì)web應(yīng)用系統(tǒng)的支持3HYPERLINK\l”_Toc139269578"3系統(tǒng)分析4_Toc139269580”3.2用例建模53.2。2用例圖6HYPERLINK\l”_Toc139269583"3。2。3順序圖7_Toc139269585”3.3分析類103。3.1邊界類10HYPERLINK\l”_Toc139269587”3.3。2實(shí)體類10_Toc139269591"4。2系統(tǒng)功能設(shè)計(jì)13HYPERLINK\l”_Toc139269592"4.2.1功能模塊劃分13HYPERLINK\l”_Toc139269593”4。2。2功能實(shí)現(xiàn)設(shè)計(jì)15HYPERLINK\l”_Toc139269594"4。2.3用例設(shè)計(jì)18HYPERLINK\l”_Toc139269595"4.3數(shù)據(jù)庫(kù)設(shè)計(jì)194.3.2系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)20_Toc139269599”5.1用戶身份鑒別22HYPERLINK\l”_Toc139269600”5.2對(duì)會(huì)話的跟蹤和處理235。5系統(tǒng)安全實(shí)現(xiàn)27HYPERLINK\l”_Toc139269604"5.5。1網(wǎng)絡(luò)層安全27HYPERLINK\l”_Toc139269605”5.5。2數(shù)據(jù)層安全28HYPERLINK\l”_Toc139269606"6結(jié)束語(yǔ)28參考文獻(xiàn)291引言1。1網(wǎng)絡(luò)教學(xué)系統(tǒng)的技術(shù)基于Internet的網(wǎng)絡(luò)教學(xué)系統(tǒng)是現(xiàn)代遠(yuǎn)程教育的方向,支持網(wǎng)上教學(xué)的教學(xué)管理系統(tǒng)在其中扮演著重要角色。網(wǎng)絡(luò)教學(xué)的目標(biāo)是培養(yǎng)合格的人才,完成既定的教學(xué)任務(wù)和實(shí)現(xiàn)國(guó)家規(guī)定的教學(xué)目標(biāo)。教學(xué)管理居于一個(gè)至關(guān)里要的地位,它起著調(diào)配教學(xué)資源、組織教學(xué)活動(dòng)、總結(jié)教學(xué)數(shù)據(jù)等重要作用。教學(xué)管理系統(tǒng)使得教學(xué)能夠順利實(shí)施,也可實(shí)現(xiàn)整個(gè)教學(xué)管理過(guò)程的現(xiàn)代化和管理的規(guī)范化,另外還能及時(shí)、準(zhǔn)確地反映教學(xué)現(xiàn)狀,分析教學(xué)效果。建立一個(gè)通過(guò)Internet實(shí)現(xiàn)教學(xué)信息發(fā)布和師生交流、網(wǎng)上選課。并能實(shí)現(xiàn)教師授課和課酬管理的基于網(wǎng)絡(luò)的教學(xué)管理系統(tǒng),是十分必要的,也是切實(shí)可行的。我們的思路正是構(gòu)建一種如圖1-1所示的基于Web的開放式網(wǎng)絡(luò)教學(xué)管理系統(tǒng).圖1-1系統(tǒng)實(shí)例圖基于上述的分析,為了實(shí)現(xiàn)這樣一個(gè)開放式的網(wǎng)絡(luò)教學(xué)管理系統(tǒng),我們采用了這樣的一個(gè)技術(shù)體系:本系統(tǒng)是依照J(rèn)2EE(Java2’EnterpriseEdition)標(biāo)準(zhǔn),綜合采用JSPIServlet,,JDBC等Java相關(guān)技術(shù)開發(fā)的大型網(wǎng)絡(luò)應(yīng)用軟件。系統(tǒng)的開發(fā)建立在Web服務(wù)器(WebServer)、應(yīng)用服務(wù)器(ApplicationServer)和數(shù)據(jù)庫(kù)服務(wù)器的多層架構(gòu)之上.這種多層結(jié)構(gòu)可將數(shù)據(jù)處理的業(yè)務(wù)邏輯、用戶界面、內(nèi)容顯示等部分分開,從而使系統(tǒng)的業(yè)務(wù)邏輯集中于Application層次:利用JavaBean服務(wù)器組件的可重用性和跨平臺(tái)性,可以快速開發(fā)和二次開發(fā)出復(fù)雜的大型平臺(tái)應(yīng)用程序,以適應(yīng)多種用戶的不同需求。因此,該平臺(tái)具有極佳的可靠性、可管理性和可擴(kuò)展性。1.2本系統(tǒng)的特點(diǎn)和意義本系統(tǒng)具有通用性,可適用于各類學(xué)校、成人教育,職業(yè)培訓(xùn)和技術(shù)培訓(xùn)等機(jī)構(gòu)在遠(yuǎn)程教育平臺(tái)上進(jìn)行教學(xué)管理,是對(duì)傳統(tǒng)教育管理模式的改革和創(chuàng)新,其推廣使用對(duì)于教學(xué)管理的改革,實(shí)現(xiàn)開放式教育管理,擴(kuò)大受教育面。有限的師資發(fā)揮更大的作用等方面具有重要的意義。本系統(tǒng)具有以下主要特點(diǎn):(1)通用性強(qiáng)。能適用于各種機(jī)構(gòu)的網(wǎng)絡(luò)教學(xué)管理。(2)實(shí)現(xiàn)時(shí)間和空間的分布性。在教學(xué)管理方面,節(jié)約大量的人力物力,提高了效率。(3)資源庫(kù)的標(biāo)準(zhǔn)化,使得在Intemet上可以比較容易的和使用其他平臺(tái)的機(jī)構(gòu)之間共享資源,從而做到互通有無(wú),真正實(shí)現(xiàn)系統(tǒng)的開放性??偟膩?lái)說(shuō),筆者經(jīng)歷了本課題的系統(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn)的開發(fā)周期,構(gòu)建起一個(gè)開放性的網(wǎng)絡(luò)教學(xué)管理系統(tǒng),基本上完成了課題研究的目標(biāo)。在課題研發(fā)期間,獨(dú)立完成了本系統(tǒng)的業(yè)務(wù)需求分析,建立了用例模型,并對(duì)對(duì)象模型進(jìn)行了詳細(xì)設(shè)計(jì)以及對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì).在下面幾章中,將會(huì)詳細(xì)介紹本課題的設(shè)計(jì)與分析過(guò)程,以及系統(tǒng)關(guān)鍵技術(shù)的實(shí)現(xiàn)。2系統(tǒng)核心技術(shù)特點(diǎn)2.1web系統(tǒng)應(yīng)用研究2.1。1N層體系結(jié)構(gòu)90年代初,傳統(tǒng)的企業(yè)信息系統(tǒng)(EIS)供應(yīng)商為滿足用戶要求從二層的C/S應(yīng)用模型轉(zhuǎn)向更為靈活的三層或N層(n—tier)應(yīng)用模型.N層(n-tier)結(jié)構(gòu)可以取得更好的整體平衡,它將表示邏輯與業(yè)務(wù)邏輯從底層數(shù)據(jù)中分離開來(lái)。不斷增長(zhǎng)的Intranet企業(yè)應(yīng)用也積極倡導(dǎo)輕量級(jí),便于部署的客戶端。需要注意的是,N層中的每一層并不意味著就是軟件中單獨(dú)的一個(gè)部分,雖然也可能是這樣的層,首先與軟件中分離方法有關(guān)。軟件內(nèi)的不同的層在邏輯上也有區(qū)別,但可以共存于一臺(tái)機(jī)器上,或者跨越多臺(tái)機(jī)器進(jìn)行分布。下面是使用N層結(jié)構(gòu)的特點(diǎn):(1)加快開發(fā)過(guò)程,降低開發(fā)成本:通過(guò)重用現(xiàn)有、預(yù)先測(cè)試過(guò)的業(yè)務(wù)組件和數(shù)據(jù)訪問組件,可以更快的開發(fā)新的應(yīng)用程序。(2)隔離了由于改變帶來(lái)的影響:只要接口保持不變,一個(gè)層上的改變不會(huì)影響其它層上的組件。(3)更容易管理改變:例如,一個(gè)業(yè)務(wù)組件駐留在業(yè)務(wù)層(該業(yè)務(wù)組件位于一個(gè)或多個(gè)專用服務(wù)器上),那么我們可以很容易地用它的新版本替換舊版本,而不用替換不同城市甚至全球范圍內(nèi)的上百或上千的客戶端應(yīng)用程序了。2.1。2基于組件開發(fā)組件提供了比單純的類更祖粒度的問題封裝方法。接口封裝了組件提供的服務(wù),隱藏了實(shí)現(xiàn)細(xì)節(jié)的可見性。因此組件間耦合更為松散。由于組件表示一個(gè)或多個(gè)較細(xì)粒度類的邏輯集合,且被定義在較高級(jí)別,具有較粗粒度級(jí),所以一個(gè)組件可以直接封裝一個(gè)己經(jīng)劃分的問題,該問題更直接地產(chǎn)生于分析和設(shè)計(jì)模型.組件通過(guò)組件模型定義實(shí)現(xiàn)互換性和兼容性。組件模型的接口定義了其它代碼和組件之間的關(guān)系。其它代碼實(shí)體可以是容器、應(yīng)用程序代碼、其它組件、其它組件模型以及一些專門服務(wù)提供商。近年來(lái),人們開發(fā)了各種不同的組件模型,例如,Microsoft的ActiveX、后來(lái)的COM,SunMicrosystems的applet和JavaBean。組件為企業(yè)開發(fā)提供了許多方便.建立在面向?qū)ο筌浖烷_發(fā)概念之上的組件提供了一個(gè)更高級(jí)的開發(fā)模型,并且能加速企業(yè)應(yīng)用程序的建立.而且,系統(tǒng)質(zhì)量也會(huì)被加強(qiáng),因?yàn)檫@會(huì)促使商業(yè)組件的生產(chǎn)商集中于提高組件的質(zhì)量并提供有很好文檔的接口,這樣就不要求內(nèi)部人員具有很好的特定底層實(shí)現(xiàn)技術(shù)的知識(shí)和與實(shí)現(xiàn)服務(wù)相關(guān)的知識(shí)。2。2JSP/Servlet對(duì)web應(yīng)用系統(tǒng)的支持JSP對(duì)web應(yīng)用系統(tǒng)提供了以下功能的支持:用戶交互:基于Web的Java小應(yīng)用程序(Applet)和桌面應(yīng)用客戶程序能夠使用基于Java的GUI技術(shù)創(chuàng)建,并能駐留在獨(dú)立的J2SE環(huán)境或J2EE環(huán)境中。傳統(tǒng)的非面向Java的Web瀏覽應(yīng)用程序能夠與基于J2EE的Web服務(wù)器一起使用。除此以外,非基于Java的客戶程序也可以使用分布式通信技術(shù),如CORBA,DCOM及TCP/IP與服務(wù)器組件進(jìn)行通信.數(shù)據(jù)使能:Java數(shù)據(jù)庫(kù)連接(JDBC)方法用于與數(shù)據(jù)庫(kù)通信。J2EE,Web,EJB應(yīng)用程序,以及應(yīng)用程序客戶程序都使用JDBCAPI.運(yùn)行于J2EE環(huán)境之外獨(dú)立的Java企業(yè)應(yīng)用程序都可以使用JDBCAPI。系統(tǒng)保證:各種系統(tǒng)保證屬性,如可靠性、可用性、可維護(hù)性、保護(hù)性和安全性是系統(tǒng)重要的特性,基于Java的企業(yè)環(huán)境封裝了許多具有不同API的安全服務(wù),CORBA也在CORBA安全服務(wù)規(guī)范中定義了安全服務(wù),對(duì)于在應(yīng)用環(huán)境中的安全互操作特別有用。Web使能:雖然HTML己經(jīng)是最典型的創(chuàng)建Web頁(yè)面的格式,但XML卻是用于描述Web頁(yè)面內(nèi)所需要的數(shù)據(jù)和控制更靈活的、更可擴(kuò)展的機(jī)制。JavaServIet和JavaServerPages是接收基于Web的請(qǐng)求和產(chǎn)生基于HTML或基于XML響應(yīng)的標(biāo)準(zhǔn)J2EE機(jī)制。Web使能應(yīng)用程序也可利用各種全局服務(wù)用于分布通信、通信服務(wù)以及保證服務(wù).應(yīng)用程序使能:XML也能用于使系統(tǒng)應(yīng)用能與外部系統(tǒng)的其它應(yīng)用程序通信.各種各樣的應(yīng)用集成技術(shù)也是應(yīng)用程序使能的一部分。通過(guò)上述機(jī)制,我們會(huì)得到如下應(yīng)用需求原則:(1)將應(yīng)用程序劃分為多層(tier),以構(gòu)建可伸縮的大型企業(yè)級(jí)應(yīng)用。(2)將系統(tǒng)分解為相對(duì)的粗粒度組件,以便于快速開發(fā).因此,可以用“層(tier)+組件十服務(wù)"來(lái)描述JSP/Servlet對(duì)web應(yīng)用系統(tǒng)的支持。3系統(tǒng)分析系統(tǒng)分析是軟件工程的重要階段,是所有開發(fā)的依據(jù)。在系統(tǒng)分析階段,通過(guò)對(duì)系統(tǒng)的綜合研究,對(duì)問題域進(jìn)行抽象,準(zhǔn)確的理解系統(tǒng)需求和系統(tǒng)內(nèi)部運(yùn)行機(jī)制,有助于準(zhǔn)確的掌握系統(tǒng)的需求,從而正確的定義問題域,確定軟件開發(fā)的具體內(nèi)容。對(duì)系統(tǒng)的分析過(guò)程采用面向?qū)ο蠓治觯∣OA),應(yīng)用可視化面向?qū)ο蠼<夹g(shù)UML(統(tǒng)一建模語(yǔ)言,UnifiedModelingLanguage)建立系統(tǒng)模型。3.1用例分析用例是從用戶和業(yè)務(wù)的角度來(lái)描述系統(tǒng)提供需要執(zhí)行的功能。下面列出了本系統(tǒng)主要的用例:(1)教師信息查詢學(xué)生和管理員為了解教師情況而查看教師信息。(2)教師信息錄入與維護(hù)由教師本人錄入自己的基本信息,包括教育背景、研究方向、科研成果以及發(fā)表論文,專著和獲獎(jiǎng)等方面的情況。并由教師本人對(duì)信息進(jìn)行修改和維護(hù)。(3)學(xué)生信息查看教師和管理員查看學(xué)生信息,了解基本情況。(4)發(fā)布教學(xué)公告管理員在網(wǎng)站的主頁(yè)上發(fā)布教學(xué)公告信息。包括課程名稱、開課時(shí)間、起止日期、主講教師等.通過(guò)設(shè)置鏈接還能查看課程的詳細(xì)介紹。(5)教學(xué)公告維護(hù)管理員不定期的更新教學(xué)公告并對(duì)此進(jìn)行維護(hù)。(6)課程資源瀏覽學(xué)生可以查詢課程內(nèi)容,了解課程的章節(jié)目錄等信息。(7)課程資源管理任課教師錄入新的課程資源信息或者修改、刪除舊的課程資源。(8)學(xué)生選課,加入到某個(gè)選課班學(xué)生在查看了系統(tǒng)發(fā)布的教學(xué)公告之后,根據(jù)自己的實(shí)際情況和興趣選取要求學(xué)習(xí)的課程。學(xué)生在選定課程之后,未繳納相應(yīng)的費(fèi)用之前,可以對(duì)選課內(nèi)容進(jìn)行修改。(9)成績(jī)查詢學(xué)生通過(guò)查詢條件可隨時(shí)查看自己的考試成績(jī)。(10)成績(jī)管理教師錄入學(xué)生的考試成績(jī),評(píng)定成績(jī)等級(jí),更改或刪除學(xué)生成績(jī)。學(xué)生查詢成績(jī)。(11)作業(yè)管理教師對(duì)選課班進(jìn)入作業(yè)任務(wù)的發(fā)布,批改,統(tǒng)計(jì),查詢.學(xué)生可在線做作業(yè),提交作業(yè),查看批改結(jié)果.(12)在線答疑學(xué)生在線提問,教師在線答疑。(13)在線測(cè)試教師利用系統(tǒng)生成考卷并發(fā)布出去。學(xué)生在線答卷并由系統(tǒng)自動(dòng)評(píng)分。(12)消息提醒對(duì)教師布置作業(yè),在線答疑,在線測(cè)試進(jìn)行短消息提醒。(11)用戶登錄使用本系統(tǒng)的用戶必須登錄才能進(jìn)入本系統(tǒng)查看信息,匿名用戶不具有訪問權(quán)限。(12)用戶注銷用戶退出本系統(tǒng).3。2用例建模用例模型描述的是外部執(zhí)行者(Actor)所理解的系統(tǒng)功能.它的建立是系統(tǒng)開發(fā)者和用戶反復(fù)討論的結(jié)果,表明了開發(fā)者和用戶對(duì)需求規(guī)格達(dá)成的共識(shí).在需求分析階段,可以用用例來(lái)捕獲用戶需求,以描述對(duì)系統(tǒng)感興趣的外部角色及其對(duì)系統(tǒng)(用例)的功能要求。3.2。1標(biāo)識(shí)參與者參與者是指系統(tǒng)的分類用戶,分別代表一個(gè)唯一的角色。對(duì)本系統(tǒng)來(lái)說(shuō),存在相互聯(lián)系如下3類用戶:管理員:通過(guò)系統(tǒng)管理學(xué)生檔案,維護(hù)學(xué)生選課內(nèi)容,發(fā)布教學(xué)公告,成績(jī)管理,以及數(shù)據(jù)備份恢復(fù)工作等等。管理員是系統(tǒng)中權(quán)限最大的用戶,業(yè)務(wù)范圍幾乎涉及所有方面。教師:通過(guò)系統(tǒng)管理自己的基本信息,查看課程資源,查看選課情況.業(yè)務(wù)范圍為與自己和教學(xué)相關(guān)的信息。學(xué)生:通過(guò)系統(tǒng)查看教學(xué)公告、教師信息和課程資源信息,查看成績(jī)。業(yè)務(wù)范圍為與教學(xué)相關(guān)的信息3.2。2用例圖用例圖(UseCase)是參與者(系統(tǒng)外部用戶)所能觀察到的系統(tǒng)功能的模型圖,它描述參與者與系統(tǒng)提供的用例之間的某種聯(lián)系。用例圖就是從參與者的角度描述出系統(tǒng)中的用例和參與者,以及用例與參與者之間的關(guān)系(哪個(gè)參與者參與了哪個(gè)用便的執(zhí)行)。根據(jù)上面的用例分析,得到系統(tǒng)的用例圖如下面3張圖所示:圖3-1超級(jí)管理員用例圖圖3—2教師用例圖圖3-3學(xué)生用例圖所有用戶都包括用戶登錄和注銷這兩個(gè)用例,圖中未畫出。3.2.3順序圖為進(jìn)一步說(shuō)明系統(tǒng)需求,可以通過(guò)順序圖、協(xié)作圖和活動(dòng)圖來(lái)描述用例之間或用例內(nèi)部的動(dòng)態(tài)關(guān)系。這里我使用了順序圖和活動(dòng)圖,將陸續(xù)介紹.用例是一種真正的文本描述,主要用于解釋。順序圖用于更準(zhǔn)確地、以技術(shù)語(yǔ)表達(dá)用例。按照參與者與系統(tǒng)的交互關(guān)系來(lái)描述用例就可以做到這一點(diǎn)。順序圖(SequenceDiagram)是UML中一種重要的動(dòng)態(tài)視圖,它是以時(shí)間順序顯示對(duì)象交互的圖,它顯示了參與交互的對(duì)象和所交換消息的順序,是一種交互關(guān)系,并強(qiáng)調(diào)了交互發(fā)生的時(shí)間順序.這里我給出的例子是學(xué)生選課順序圖。圖3-4學(xué)生加入選課班順序圖3。2。4活動(dòng)圖活動(dòng)圖的主要作用是表示系統(tǒng)的業(yè)務(wù)工作流和并發(fā)處理過(guò)程.它能夠更容易顯示參與者的決定和系統(tǒng)異常所要執(zhí)行的多條路徑,而這用順序圖是難以表達(dá)的.活動(dòng)圖在概念上與流程圖相似,用它來(lái)為工作流程建模,以及用來(lái)圖解用例的動(dòng)態(tài)行為和操作的詳細(xì)設(shè)計(jì)是很有用的。一旦一個(gè)活動(dòng)完成,執(zhí)行就轉(zhuǎn)到由活動(dòng)的有效轉(zhuǎn)移所確定的下一種狀態(tài).在活動(dòng)圖中,泳道可用于在一個(gè)活動(dòng)圖中顯示多個(gè)對(duì)象,以及它們?nèi)绾卧谝黄鹜瓿烧麄€(gè)用例.根據(jù)需求分析為系統(tǒng)的核心業(yè)務(wù)繪制活動(dòng)圖,明確在業(yè)務(wù)工作流中參與者與系統(tǒng)各用例之間以及系統(tǒng)用例之間可能的交互。用例可以認(rèn)為是獲得對(duì)參與者有用的東西,而需執(zhí)行的步驟,順序圖和活動(dòng)圖對(duì)精確標(biāo)識(shí)和理解用例行為都是有用的。圖3-5學(xué)生流程活動(dòng)圖圖3-6教師流程活動(dòng)圖3.3分析類根據(jù)用例模型,我們抽象出系統(tǒng)中的對(duì)象和類。系統(tǒng)中存在三種類:邊界類、控制類和實(shí)體類,每一種類在系統(tǒng)模型中執(zhí)行一定的作用口。3。3.1邊界類在系統(tǒng)模型中,邊界類表示系統(tǒng)內(nèi)部工作方式與其周圍環(huán)境之間的各種交互作用.包括:通過(guò)圖形化用戶界面與用戶交互,與其他參與者交互(如代表其他系統(tǒng)的參與者),與設(shè)備通信等。使用邊界類的優(yōu)點(diǎn)之一是:它們可以把系統(tǒng)的其余部分與外界環(huán)境隔離和屏蔽起來(lái)(見表3。1)。表3.1系統(tǒng)邊界類邊界類名稱邊界類職責(zé)主頁(yè)面顯示最新教學(xué)公告和其他相關(guān)信息鏈接登錄頁(yè)面允許用戶輸入有效的帳號(hào)和密碼,檢驗(yàn)用戶身份注銷頁(yè)面允許用戶退出系統(tǒng)教師信息列表頁(yè)面允許學(xué)生查看教師信息,管理員可刪除信息教師信息輸入頁(yè)面允許教師輸入個(gè)人信息教師信息編輯頁(yè)面允許教師對(duì)個(gè)人信息進(jìn)行編輯、修改教師信息查詢頁(yè)面允許所有用戶查詢教師信息教師信息查詢結(jié)果頁(yè)面顯示查詢結(jié)果課程資源列表頁(yè)面允許教師和學(xué)生查看課程信息,管理員可刪除信息課程資源輸入頁(yè)面允許管理員輸入課程信息課程資源編輯頁(yè)面允許管理員對(duì)課程信息進(jìn)行編輯、修改課程資源查詢頁(yè)面允許所有用戶查詢課程資源課程資源查詢結(jié)果頁(yè)面顯示查詢結(jié)果學(xué)生信息查看頁(yè)面允許管理員和教師查看學(xué)生信息教學(xué)公告發(fā)布頁(yè)面允許管理員設(shè)置開課信息并發(fā)布開課信息列表頁(yè)面允許學(xué)生和教師查看開課的詳細(xì)信息,管理員可刪除信息開課信息編輯頁(yè)面允許管理員更改開課信息選課頁(yè)面允許學(xué)生選課選課信息查看頁(yè)面允許學(xué)生查看自己的選課內(nèi)容并對(duì)此修改成績(jī)查詢頁(yè)面允許學(xué)生查詢自己的考試成績(jī)成績(jī)查詢結(jié)果頁(yè)面顯示查詢結(jié)果成績(jī)錄入頁(yè)面允許管理員輸入學(xué)生的考試成績(jī)成績(jī)修改頁(yè)面允許管理員修改學(xué)生的成績(jī)信息發(fā)布頁(yè)面允許管理員發(fā)布教學(xué)信息3.3。2實(shí)體類實(shí)體對(duì)象表示對(duì)系統(tǒng)的重要信息.它們通常是持久的,并能在一個(gè)延續(xù)的時(shí)期內(nèi)存在。它們的主要的目的是表示和管理系統(tǒng)內(nèi)的信息。實(shí)體類通常表示為一種邏輯的數(shù)據(jù)結(jié)構(gòu)(見表3。2).表3。2系統(tǒng)實(shí)體類實(shí)體類名稱實(shí)體類屬性用戶基本信息用戶名、編號(hào)、用戶類別、登錄密碼教師基本信息姓名、編號(hào)、性別、出生年月、身份證號(hào)、學(xué)歷、職稱、原屬學(xué)校、電子郵件、從教時(shí)間、研究方向、主講課程教師業(yè)績(jī)成果名稱、獲獎(jiǎng)等級(jí)、獲獎(jiǎng)時(shí)間、著作名稱、出版社、出版時(shí)間、論文名稱課程資源信息課程名稱、課程編號(hào)、教材名稱、所屬學(xué)科、學(xué)時(shí)數(shù)、培訓(xùn)類型、課件介紹信息、視頻文件名、章節(jié)目錄選課信息選課名稱、課程編號(hào)、選課學(xué)生姓名、選課時(shí)間開課信息開課名稱、課程編號(hào)、授課時(shí)間、主講教師、信息發(fā)布時(shí)間成績(jī)單課程名稱、課程編號(hào)、學(xué)生姓名、學(xué)生編號(hào)、考試成績(jī)、成績(jī)等級(jí)3.3.3控制類控制類用于系統(tǒng)內(nèi)的模型行為,用于對(duì)某一個(gè)具體的用例相關(guān)的控制或者其他業(yè)務(wù)邏輯建模。通常將協(xié)調(diào)、排序等事物處理或者涉及多個(gè)對(duì)象的復(fù)雜事務(wù)邏輯隔離在一個(gè)或多個(gè)控制類中(見表3.3)。表3。3系統(tǒng)控制類控制類名稱控制類職責(zé)用戶登錄響應(yīng)用戶登錄請(qǐng)求,檢驗(yàn)用戶身份的合法性用戶注銷用戶退出系統(tǒng)教師信息查看對(duì)學(xué)生提出的教師信息查詢請(qǐng)求進(jìn)行處理增加教師信息對(duì)教師提出的增加個(gè)人信息請(qǐng)求進(jìn)行處理編輯教師信息對(duì)教師提出的編輯個(gè)人信息請(qǐng)求進(jìn)行處理教師信息列表對(duì)顯示教師信息列表請(qǐng)求進(jìn)行處理刪除教師信息對(duì)刪除教師信息請(qǐng)求進(jìn)行處理課程資源查看對(duì)學(xué)生提出的課程信息查詢請(qǐng)求進(jìn)行處理增加課程資源對(duì)管理員提出的增加課程信息請(qǐng)求進(jìn)行處理編輯課程資源對(duì)管理員提出的編輯課程信息請(qǐng)求進(jìn)行處理課程資源列表對(duì)顯示課程資源列表請(qǐng)求進(jìn)行處理刪除課程資源對(duì)刪除課程資源請(qǐng)求進(jìn)行處理學(xué)生信息查看對(duì)教師和管理員提出的學(xué)生信息查詢請(qǐng)求進(jìn)行處理教學(xué)公告發(fā)布對(duì)管理員提出的新增開課信息請(qǐng)求進(jìn)行處理開課信息查看對(duì)學(xué)生和教師提出的開課信息查看請(qǐng)求進(jìn)行處理編輯開課信息對(duì)管理員提出的編輯開課信息請(qǐng)求進(jìn)行處理選課對(duì)學(xué)生提出的選課請(qǐng)求進(jìn)行處理選課內(nèi)容查看對(duì)學(xué)生提出的查看自己的選課內(nèi)容請(qǐng)求進(jìn)行處理成績(jī)查詢對(duì)學(xué)生提出的成績(jī)查詢請(qǐng)求進(jìn)行處理成績(jī)錄入對(duì)管理員提出的新增成績(jī)請(qǐng)求進(jìn)行處理成績(jī)修改對(duì)管理員提出的修改成績(jī)請(qǐng)求進(jìn)行處理4系統(tǒng)設(shè)計(jì)4.1體系結(jié)構(gòu)設(shè)計(jì)一個(gè)體系就是各部分一起定義整個(gè)系統(tǒng)的藍(lán)圖:結(jié)構(gòu),接口和通信技術(shù)。使用體系結(jié)構(gòu)有這樣一些意義:(1)軟件分解成更小的塊,有助于理解、管理、開發(fā)和維護(hù)軟件;(2)軟件體系結(jié)構(gòu)可以幫助基于組件開發(fā);(3)使用被驗(yàn)證的體系結(jié)構(gòu),便于管理軟件的性能和保證質(zhì)量;(4)通過(guò)正確的體系結(jié)構(gòu)可以更好地實(shí)現(xiàn)重用性;(5)正式的體系結(jié)構(gòu)會(huì)使系統(tǒng)很脆弱,難以升級(jí)和實(shí)現(xiàn)收縮,等等。本系統(tǒng)采用MVC(Modet—View—Control)[2]的模式來(lái)設(shè)計(jì)系統(tǒng)結(jié)構(gòu)并利用JSP/Servlet的技術(shù)來(lái)實(shí)現(xiàn)。本著業(yè)務(wù)邏輯和表現(xiàn)邏輯分離,對(duì)系統(tǒng)資源進(jìn)行合理有效管理,優(yōu)化系統(tǒng)性能的指導(dǎo)思想,設(shè)計(jì)總體框架如圖4-1所示。圖4—1采用MVC設(shè)計(jì)模式的J2EE框架系統(tǒng)的各組成部分如下:(1)客戶層:在本系統(tǒng)中主要是Web瀏覽器。(2)web層:所有的用戶界面的開發(fā)和簡(jiǎn)單的業(yè)務(wù)邏輯都在這層得到實(shí)現(xiàn)。考慮到JSP能夠嵌人HTML中,開發(fā)容易和產(chǎn)生的用戶界面靈活等優(yōu)點(diǎn),故本系統(tǒng)采用JSP實(shí)現(xiàn)用戶界面,而簡(jiǎn)單的業(yè)務(wù)邏輯一般都由Servlet來(lái)開發(fā),響應(yīng)用戶的查詢等請(qǐng)求并調(diào)用業(yè)務(wù)邏輯層的JavaBean組件來(lái)實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯。(3)業(yè)務(wù)邏輯層:這一層主要由EJB組件的開發(fā)來(lái)實(shí)現(xiàn).會(huì)話Bean的主要任務(wù)是處理商務(wù)邏輯,客戶端交互,返回給它計(jì)算結(jié)果等:而實(shí)體Bean的主要任務(wù)是表達(dá)數(shù)據(jù)庫(kù)中的數(shù)據(jù),用來(lái)完成據(jù)庫(kù)的訪問。實(shí)體Bean是通過(guò)JDBC訪問數(shù)據(jù)庫(kù),完成記錄插入、查找和刪除等操作。(4)數(shù)據(jù)層:負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)管理、安全性管理和完整性管理等各種數(shù)據(jù)庫(kù)服務(wù),存放系統(tǒng)中的持久性的數(shù)據(jù)信息。系統(tǒng)采用瀏覽器服務(wù)器模型(Browser/Server).一般的,客戶通過(guò)瀏覽器發(fā)送HTTP請(qǐng)求給服務(wù)器端Web服務(wù)器,Web服務(wù)器接收該請(qǐng)求并且進(jìn)行相應(yīng)處理,然后將處理后的結(jié)果返回到客戶的瀏覽器中。在客戶端,瀏覽器中呈現(xiàn)的正是該系統(tǒng)的視圖部分。系統(tǒng)將很好地結(jié)合使用JSP與Servlet,由JSP把用戶提出的httpRequest送達(dá)Servlet,Servlet根據(jù)請(qǐng)求的類型不同分別進(jìn)行不同的處理,選擇不同的操作模塊,具體地說(shuō)比如說(shuō)對(duì)數(shù)據(jù)庫(kù)的讀寫更新查詢操作等,Servlet處理完這些比較復(fù)雜的請(qǐng)求之后,選定JSP頁(yè)面把最后的結(jié)果回應(yīng)給使用者,此時(shí)的JSP就只是起到了視圖的作用,并不做邏輯上運(yùn)算只是將控制器方面?zhèn)鬟^(guò)來(lái)的資料展示給用戶而己.系統(tǒng)中的業(yè)務(wù)層中主要是JavaBean組件,它們負(fù)責(zé)接收由servlet傳來(lái)的請(qǐng)求并對(duì)此進(jìn)行處理,比如連接數(shù)據(jù)庫(kù)執(zhí)行查詢等操作,JavaBean組件稱為系統(tǒng)的模型(Model)。4.2系統(tǒng)功能設(shè)計(jì)4。2.1功能模塊劃分網(wǎng)絡(luò)教學(xué)系統(tǒng)是一個(gè)綜合性的教學(xué)管理應(yīng)用系統(tǒng),它包含一個(gè)教育系統(tǒng)的很多方面,這些方面不是孤立的而是相互聯(lián)系的。本網(wǎng)絡(luò)教學(xué)系統(tǒng)作為網(wǎng)絡(luò)教學(xué)的一個(gè)重要支撐平臺(tái),從功能上來(lái)看,分為網(wǎng)絡(luò)課程管理系統(tǒng)、系統(tǒng)管理和信息交流管理三個(gè)子系統(tǒng)。課程管理子系統(tǒng)包括學(xué)生選課管理、課程資源管理、教學(xué)公告管理等功能。整個(gè)系統(tǒng)的功能結(jié)構(gòu)如圖4-2所示。教學(xué)平臺(tái)網(wǎng)絡(luò)教學(xué)教學(xué)平臺(tái)網(wǎng)絡(luò)教學(xué)平臺(tái)系統(tǒng)設(shè)置管理子系統(tǒng)網(wǎng)絡(luò)教學(xué)管理子系統(tǒng)信息交流子系統(tǒng)系統(tǒng)機(jī)構(gòu)設(shè)置系統(tǒng)用戶管理息角色,權(quán)限管理系統(tǒng)日志管理數(shù)據(jù)庫(kù)操作學(xué)期管理課程管理在線短消息成績(jī)查詢班級(jí)管理教學(xué)信息發(fā)布網(wǎng)絡(luò)教學(xué)教學(xué)論壇圖4-2系統(tǒng)功能結(jié)構(gòu)圖對(duì)各子系統(tǒng)功能模塊的詳細(xì)描述如下:(1)網(wǎng)絡(luò)教學(xué)管理學(xué)生選課管理:學(xué)生根據(jù)自己的實(shí)際情況選取要求學(xué)習(xí)的課程的選課班級(jí).管理員對(duì)學(xué)生選課的內(nèi)容進(jìn)行維護(hù),教師可以查看,審核自己所教課程的選課情況。課程資源管理:課程資源信息包括課程名稱、課程類別、在線備課,在線瀏覽課件。所有注冊(cè)登錄的用戶都可以瀏覽和查詢?cè)撔畔?管理員和教師執(zhí)行對(duì)課程信息的維護(hù)功能.教學(xué)公告發(fā)布:管理員發(fā)布某門課程的教學(xué)公告。教學(xué)公告的詳細(xì)信息包括課程名稱、開課時(shí)間、起止日期、主講教師等。通過(guò)設(shè)置鏈接還能查看課程的詳細(xì)介紹。管理員對(duì)教學(xué)公告進(jìn)行維護(hù)。學(xué)生成績(jī)管理:包括成績(jī)錄入、修改、成績(jī)統(tǒng)計(jì)與查詢。成績(jī)統(tǒng)計(jì)是對(duì)各門課程平均成績(jī)的計(jì)算以及各分?jǐn)?shù)段人數(shù)的統(tǒng)計(jì);成績(jī)查詢則可以檢索和查看任何一位學(xué)生的成績(jī)。學(xué)生只能查詢自己的考試成績(jī),其他功能由管理員執(zhí)行。(2)個(gè)人信息管理教師檔案管理:包括教師信息的錄入、更新、查詢、刪除等功能.這里的教師信息主要包括教師的教育背景、研究方向、科研成果以及發(fā)表論文,專著和獲獎(jiǎng)等方面的情況。只有教師本人才能對(duì)自己的信息進(jìn)行修改。管理員可執(zhí)行刪除功能.學(xué)生檔案查看:提供教師和管理員對(duì)學(xué)生信息的查看功能。(3)系統(tǒng)管理用戶登錄和用戶注銷。下面給出系統(tǒng)的詳細(xì)功能設(shè)計(jì).4.2.2功能實(shí)現(xiàn)設(shè)計(jì)(1)類設(shè)計(jì)=1\*GB3①邊界類邊界類設(shè)計(jì)為ISP頁(yè)面,主要有以下邊界類,如表4。1所示:表4.1邊界類設(shè)計(jì)功能模塊頁(yè)面課程管理學(xué)生選課管理Choosecourse。jsp(選課頁(yè)面)Viewchoosecourse。jsp(查看選課內(nèi)容頁(yè)面)ChoosecourseEdit。jsp(選課修改頁(yè)面)課程資源管理Course.jsp(課程資源列表頁(yè)面)Addcoursejsp(新增課程資源頁(yè)面)Editcourse.jsp(編輯課程資源頁(yè)面)CourseSeek。jsp(課程查詢頁(yè)面)Courseseekresult.jsp(課程查詢結(jié)果頁(yè)面)教學(xué)公告管理Addteachcourse。jsp(發(fā)布教學(xué)公告頁(yè)面)TeachcourseList。jsp(開課信息列表頁(yè)面)TeachcourseSeek。jsp(查詢頁(yè)面)TeachcourseSeekresult.jsp(查詢結(jié)果頁(yè)面)Editteachcourse。jsp(編輯開課信息頁(yè)面)成績(jī)管理Marklnput.jsp(成績(jī)錄入頁(yè)面)MarkSeekjsp(成績(jī)查詢頁(yè)面)MarkEditjsp(成績(jī)修改頁(yè)面)MarkSeekResult.jsp(查詢結(jié)果頁(yè)面)教師檔案管理個(gè)人信息管理Teacherlnfolnput.jsp(教師信息輸入頁(yè)面)TeacherlnfoEdit.jsp(教師信息修改頁(yè)面)TeacherlnfoList.jsp(教師信息列表頁(yè)面)TeacherlnfoSeek。jsp(教師信息查詢頁(yè)面)TeacherlnfoSeekResult。jsp(查詢結(jié)果頁(yè)面)學(xué)生檔案查看StulnfoListjsp(學(xué)生信息列表頁(yè)面)StulnfoSeekjSP(學(xué)生信息查詢頁(yè)面)StulnfoSeekResult.jsp(查詢結(jié)果頁(yè)面)用戶登錄注銷用戶登錄Login.jsp(登錄頁(yè)面)Main.jsp(主頁(yè)面)用戶注銷Logoutjsp(注銷頁(yè)面)=2\*GB3②實(shí)體類實(shí)體類設(shè)計(jì)為實(shí)體Bean,實(shí)體組件是存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)模型,代表了數(shù)據(jù)庫(kù)中業(yè)務(wù)數(shù)據(jù)的對(duì)象視圖,并提供了訪問和操作數(shù)據(jù)的對(duì)象封裝.實(shí)體組件具有持久性[1],支持多用戶的共享訪問。使用實(shí)體組件作為業(yè)務(wù)數(shù)據(jù)的對(duì)象視圖,客戶端可以通過(guò)實(shí)體組件提供的接口間接地實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)業(yè)務(wù)數(shù)據(jù)的訪問與操作。=3\*GB3③控制類我們使用實(shí)體組件封裝了業(yè)務(wù)數(shù)據(jù),用處理特定業(yè)務(wù)功能的會(huì)話組件來(lái)封裝與該業(yè)務(wù)操作相關(guān)的實(shí)體組件。由特定的會(huì)話組件控制和協(xié)調(diào)各實(shí)體組件之間的交互,把數(shù)據(jù)查詢、更新和新增的業(yè)務(wù)操作遷移到業(yè)務(wù)功能層來(lái)處理。從而向客戶端提供了一個(gè)簡(jiǎn)單的功能接口,減少了通過(guò)網(wǎng)絡(luò)和跨越服務(wù)層之間的遠(yuǎn)程通訊,同時(shí)也避免了把實(shí)體組件對(duì)象直接暴露給遠(yuǎn)程的客戶端,降低了兩層之間的耦合程度。因此在本子系統(tǒng)中設(shè)計(jì)了下面這些控制類如表4。3:表4.3控制類設(shè)計(jì)功能模塊控制類名稱操作課程資源管理CourseUstSevlet顯示課程資源列表CourseSeekSevlet查詢課程資源CourseAddSevlet增加課程資源CourseEditSevlet編輯課程資源CourseDeleteSevlet刪除課程資源CourseControlSevlet前端請(qǐng)求總控制器CourseBean封裝所有對(duì)課程資源的操作教學(xué)公告管理TeachCourseListSevlet顯示開課信息列表TeachCourseSeekSevlet查詢開課信息TeachCourseAddSevlet增加開課信息并提交發(fā)布TeachCourseEditSevlet編輯開課信息TeachCourseDeleteSeviet刪除開課信息TeachCourseControlSevlet前端請(qǐng)求總控制器TeachCourseBean封裝所有對(duì)開課信息的操作學(xué)生選課管理ChooseCourseServlet學(xué)生選課提交ChooseCourseViewServlet查看選課內(nèi)容ChooseCourseEditServlet修改選課內(nèi)容ChooseCourseControlServlet前端請(qǐng)求總控制器ChooseCourseBean封裝所有對(duì)選課信息的操作成績(jī)管理MarkAddServlet添加成績(jī)MarkSeekServlet查詢成績(jī)MarkEditServlet修改成績(jī)MarkDeleteServiel刪除成績(jī)MarkControlServlet前端請(qǐng)求總控制器MarkBean封裝所有對(duì)成績(jī)的操作教師信息管理TeacherEditServlet修改教師信息TeacherSeekServlet查詢教師信息TeacherDeleteSeNlet刪除教師信息TeacherListServlet顯示教師信息列表TeacherControlServlet前端請(qǐng)求總控制器TeacherBean封裝所有對(duì)教師信息的操作學(xué)生信息查看StuListServlet學(xué)生信息列表顯示StuSeekServlet學(xué)生信息查詢系統(tǒng)管理LoginServlet用戶登錄控制UserBean身份驗(yàn)證LogoutServlet用戶注銷①顯示開課信息列表入口參數(shù):無(wú)返回結(jié)果:結(jié)果集②查詢開課信息入口參數(shù):無(wú)查詢條件類型:字符串返回結(jié)果:結(jié)果集③增加開課信息入口參數(shù): 開課名稱類型:字符串 開課日期類型:日期型 主講教師類型:字符串收費(fèi)數(shù)目類型:整型返回結(jié)果:布爾型如果添加成功,返回TRUE,否則返回FALSE。④編輯開課信息入口參數(shù): 開課名稱類型:字符串 開課日期類型:日期型 主講教師類型:字符串 收費(fèi)數(shù)目類型:整型返回結(jié)果:布爾型如果修改成功,返回TRUE,否則返回FALSE。⑤刪除開課信息入口參數(shù): 課程編號(hào)類型:字符串返回結(jié)果:布爾型如果刪除成功,返回TRUE,否則返回FALSE.4.2。3用例設(shè)計(jì)設(shè)計(jì)用例是為了識(shí)別類或者子系統(tǒng),其實(shí)例去執(zhí)行用例的事件流.定義對(duì)設(shè)計(jì)對(duì)象或子系統(tǒng)及其接口的操作需求,為用例捕獲實(shí)現(xiàn)性需求。UML提供了版類(stereotype)這個(gè)擴(kuò)展機(jī)制來(lái)區(qū)分不同類型的類.UML的創(chuàng)始人Jacobson定義了三種類型的版類對(duì)象類(stereotypeobjecttypes):邊界對(duì)象(boundaryobject)、實(shí)體對(duì)象(entityobject)和控制對(duì)象(controlobject).在ROSE中,可以設(shè)置類的stereotyp。域?yàn)椤础碽oundary;+entity>〉和<〈control〉〉;這個(gè)階段我們得到系統(tǒng)的類圖和詳細(xì)的順序圖。對(duì)JSP以及JavaBean組件我們現(xiàn)在都可以用類為它們建模,方便類圖和序列圖中的表示,對(duì)于系統(tǒng)中的用例,可以根據(jù)設(shè)計(jì)類來(lái)進(jìn)一步細(xì)化其順序圖,下面顯示了發(fā)布教學(xué)公告和學(xué)生選課用例的細(xì)化順序圖。圖4—3學(xué)生選課細(xì)化順序圖在類圖中我們可以看到在用例實(shí)現(xiàn)的過(guò)程中所涉及到的類以及它們之間的關(guān)系,這些類之間的關(guān)系是這些類產(chǎn)生代碼的基礎(chǔ).同一JSP網(wǎng)頁(yè)被分解成兩個(gè)部分:客戶頁(yè)和服務(wù)器頁(yè)其中后者和前者的關(guān)系是構(gòu)建和被構(gòu)建的關(guān)系(即圖4-7中的Build的關(guān)系)。當(dāng)網(wǎng)頁(yè)中的表單中的內(nèi)容需要提交到Servlet時(shí),表單和它們的關(guān)系是提交的關(guān)系,調(diào)用Servlet的doPost()或doGet()方法。在UML的語(yǔ)法中類之間的關(guān)系主要分為以下兒種:協(xié)作、依賴、泛化、實(shí)現(xiàn)、積聚。協(xié)作關(guān)系在Java語(yǔ)法中表現(xiàn)為一個(gè)類對(duì)另一個(gè)類的引用,如圖4-4所示。圖4—4發(fā)布教學(xué)公告類圖4。3數(shù)據(jù)庫(kù)設(shè)計(jì)4.3。1數(shù)據(jù)庫(kù)設(shè)計(jì)原則(1)一致性原則對(duì)信息進(jìn)行統(tǒng)一、系統(tǒng)的分析與設(shè)計(jì),協(xié)調(diào)好各數(shù)據(jù)源,做到“數(shù)出一門”、“算法統(tǒng)一”、“度量一致"。保證系統(tǒng)數(shù)據(jù)的一致性和有效性。(2)完整性原則數(shù)據(jù)庫(kù)的完整性是指數(shù)據(jù)的正確性和相容性。要防止合法用戶使用數(shù)據(jù)庫(kù)時(shí)向數(shù)據(jù)庫(kù)加入不合語(yǔ)義的數(shù)據(jù).對(duì)輸入到數(shù)據(jù)庫(kù)中的數(shù)據(jù)要有審核和約束機(jī)制.(3)安全性原則數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù),防止非法用戶使用數(shù)據(jù)庫(kù)或合法用戶非法使用數(shù)據(jù)庫(kù)造成數(shù)據(jù)泄露、更改或破壞。要有認(rèn)證和授權(quán)機(jī)制。(4)可伸縮性原則數(shù)據(jù)庫(kù)結(jié)構(gòu)的設(shè)計(jì)應(yīng)充分考慮發(fā)展的需要、移植的孺要,具有良好的擴(kuò)展性、伸縮性和適度冗余.(5)規(guī)范化數(shù)據(jù)庫(kù)的設(shè)計(jì)應(yīng)遵循規(guī)范化理論,規(guī)范化程度過(guò)低的關(guān)系,可能會(huì)存在插入、刪除異常、修改復(fù)雜、數(shù)據(jù)冗余等問題,解決的方法就是對(duì)關(guān)系模式進(jìn)行分解或合并(A范化),轉(zhuǎn)換成高級(jí)范式。規(guī)范化一共有六個(gè)級(jí)別:1NF,2NF,3NF.BCNF,4NF,5NF。但也應(yīng)當(dāng)注意到,并不是規(guī)范化程度越高的關(guān)系就越好,在具體應(yīng)用時(shí),到底規(guī)范化進(jìn)行到什么程度需要權(quán)衡利弊。一般而言,做到第三范式(3NF)就足夠了.4。3。2系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)網(wǎng)絡(luò)教學(xué)管理系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)遵循以上原則,數(shù)據(jù)庫(kù)中的表包括用戶信息、教師基本信息、課程資源信息、選課信息、開課信息、學(xué)期信息、課件信息、作業(yè)信息等,設(shè)計(jì)各表的數(shù)據(jù)結(jié)構(gòu)如下:表5—1:教師學(xué)生信息表字段名類型說(shuō)明idint(11)自動(dòng)增加,主鍵userIDvarchar(50)用戶登錄IDpasswordvarchar(50)登錄密碼userNamevarchar(50)真實(shí)姓名deptBHvarchar(50)用戶所在部門編號(hào)(外鍵)userLeveltinyint(3)用戶類型roleBHvarchar(50)用戶所屬角色編號(hào)(外鍵)isLockedtinyint(1)用戶審核標(biāo)識(shí)表5-2:系統(tǒng)機(jī)構(gòu)表字段名類型說(shuō)明DeptBHvarchar(50)部門編號(hào)Depnamevarchar(50)部門名稱表5—3:學(xué)期信息表字段名類型說(shuō)明idint(11)自動(dòng)增加,主鍵termNamevarchar(50)學(xué)期名稱startTimedate開始時(shí)間endTimedate結(jié)束時(shí)間表5—4:課程信息表字段名類型說(shuō)明idint(11)自動(dòng)增加,主鍵courseNamevarchar(30)課程名稱isUsedtinyint(1)是否可用,0:不可用,1可用introtext課程介紹表5-5:選課班級(jí)信息表字段名類型說(shuō)明idint(11)自動(dòng)增加,主鍵classNamevarchar(30)班級(jí)名稱teachervarchar(30)任課教師courseidsmallint(6)講授課程termtinyint(3)上課學(xué)期personCounttinyint(3)班級(jí)人數(shù)periodvarchar(50)每周上課時(shí)間表5-6:選課班級(jí)—學(xué)生信息表字段名類型說(shuō)明idint(11)自動(dòng)增加,主鍵ClassidInt(11)選課班級(jí)StudidInt(11)學(xué)生ID表5—7:布置作業(yè)信息表字段名類型說(shuō)明idint(11)自動(dòng)增加,主鍵titlevarchar(200)作業(yè)標(biāo)題teachervarchar(50)布置作業(yè)教師classidsmallint(6)交作業(yè)班級(jí)subtimedate發(fā)布作業(yè)時(shí)間deadLineTimedate最后交作業(yè)時(shí)間introtext,作業(yè)內(nèi)容attachvarchar(100)作業(yè)附件表5-8:學(xué)生提交作業(yè)及教師批發(fā)信息表字段名類型說(shuō)明idint(11)自動(dòng)增加,主鍵hwidmediumint(9)需交作業(yè)IDstu_idvarchar(50)交作業(yè)學(xué)生titlevarchar(100)作業(yè)標(biāo)題introtext作業(yè)內(nèi)容subtimedate提交時(shí)間attachvarchar(100)作業(yè)附件commenttext教師評(píng)語(yǔ)scoretinyint(3)教師成績(jī)5關(guān)鍵技術(shù)及實(shí)現(xiàn)5.1用戶身份鑒別身份鑒別通常包括用戶提交的一個(gè)用戶名和口令,你可以只使用用戶名或口令對(duì)用戶進(jìn)行鑒別,也可以選擇通過(guò)IP地址來(lái)鑒別.通過(guò)IP地址來(lái)鑒別只有當(dāng)用戶擁有靜態(tài)IP時(shí)才起作用,所以并不常用.在此我采用基于表單的身份鑒別.在基于表單的鑒別中,提示用戶名和口令的Web頁(yè)面由服務(wù)器來(lái)提供,而不是依靠瀏覽器顯示對(duì)話框,這樣,在需要用戶登錄時(shí)就可以給用戶提交額外的信息和選項(xiàng)了。需要注意的是,雖然輸入口令時(shí)顯示為星號(hào),但是瀏覽器還是以純文本傳送口令本身:非加密、不進(jìn)行Base64編碼,只是純文本。如果采用GET方法將表單數(shù)據(jù)提交給服務(wù)器,用戶瀏覽器將在URL中明顯地顯示出口令,而且瀏覽器還會(huì)將它保存在最近瀏覽地頁(yè)面列表中.因此,在筆者實(shí)現(xiàn)基于表單的身份驗(yàn)證時(shí),使用的是POST方法提交表單數(shù)據(jù)給服務(wù)器。 當(dāng)用戶登錄認(rèn)證的表單請(qǐng)求后,表單采用POST方法提交到LoginServlet。LoginServlet將獲得的參數(shù)傳給Userbean(是一個(gè)JavaBean),如果通過(guò)驗(yàn)證就進(jìn)入系統(tǒng)的功能區(qū),否則就返回登錄界面。下面介紹用戶bean(Usecjava),它定義了一組屬性,包括(1)userlD,這是一個(gè)只讀屬性,標(biāo)示登錄會(huì)員的會(huì)員編號(hào),這個(gè)編號(hào)對(duì)于使用系統(tǒng)的所有用戶(包括教師、學(xué)生和管理員)來(lái)說(shuō)是唯一的:(2)userName,這是一個(gè)可讀寫屬性,標(biāo)示登錄會(huì)員的用戶名;(3)passWord,是一個(gè)可讀寫屬性,標(biāo)示登錄會(huì)員的口令;(4)userType,也是一個(gè)可讀寫屬性,標(biāo)示登錄會(huì)員的身份類型;該屬性與userName,password都是用戶通過(guò)login。jsp頁(yè)面提交到checked。jsp,然后由checked.jsp將參數(shù)賦值給這三個(gè)屬性.(5)login,這是一個(gè)boolean屬性,用來(lái)判斷當(dāng)前的訪問是否是登錄會(huì)員的訪問。(6)Userbean實(shí)現(xiàn)了如下兩個(gè)公共方法用來(lái)檢查用戶是否是會(huì)員登錄。(7)checkUser:用來(lái)檢查用戶登錄信息。它主要是通過(guò)JDBC訪問數(shù)據(jù)庫(kù),通過(guò)檢查用戶名、口令、身份類型是否正確或者匹配,如果正確則置login為true,并從數(shù)據(jù)庫(kù)中讀取相應(yīng)字段給屬性UserlD賦值。(8)isLogin:獲取login值,檢查是否是登錄會(huì)員的訪問。(9)isStudent,isTeacher,isAdm:獲取登錄會(huì)員的身份類型。Userbean在本系統(tǒng)的許多程序中都要用到,它是作為session范圍的bean定義的。5.2對(duì)會(huì)話的跟蹤和處理 HTTP(HypertextTransferProtocol)是一個(gè)基于請(qǐng)求/響應(yīng)模式的應(yīng)用層協(xié)議。

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論