




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄目錄ⅣⅢ一款基于協(xié)同算法的網(wǎng)上求職招聘系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)摘要近幾年來(lái)的時(shí)代最熱點(diǎn)無(wú)疑是互聯(lián)網(wǎng)時(shí)代的到來(lái),互聯(lián)網(wǎng)化的浪潮席卷了現(xiàn)代社會(huì)的各個(gè)領(lǐng)域。隨著互聯(lián)網(wǎng)信息技術(shù)的發(fā)展,“信息過(guò)載”的現(xiàn)象已經(jīng)成為無(wú)法避免的焦點(diǎn)問(wèn)題?!靶畔⑦^(guò)載”的挑戰(zhàn)是人人無(wú)法回避的,無(wú)論是對(duì)于信息的發(fā)布者,還是對(duì)于信息的接收者,都必須去面對(duì)這個(gè)問(wèn)題。對(duì)于信息的接受者尤甚,如何快速地獲得自身需要的,有價(jià)值的信息值得關(guān)注。由于以上原因,個(gè)性信息推薦成為了計(jì)算機(jī)領(lǐng)域的一個(gè)研究熱點(diǎn)。本文采用Java語(yǔ)言結(jié)合MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)了一款基于協(xié)同算法的網(wǎng)上求職招聘系統(tǒng),運(yùn)用協(xié)同過(guò)濾算法實(shí)現(xiàn)招聘信息的推薦,為用戶提供多樣選擇。系統(tǒng)分為前臺(tái)和后臺(tái)兩個(gè)模塊。前臺(tái)主要包括登錄注冊(cè)、首頁(yè)、公司列表、職位列表、資訊信息等功能模塊;后臺(tái)主要包括用戶管理、資訊管理、審核管理、系統(tǒng)管理等功能。通過(guò)搭建測(cè)試環(huán)境,對(duì)系統(tǒng)各個(gè)功能模塊進(jìn)行測(cè)試,得出測(cè)試結(jié)果良好,滿足用戶使用需求。關(guān)鍵詞:網(wǎng)上求職招聘系統(tǒng);協(xié)同過(guò)濾算法;Java;MySQL數(shù)據(jù)庫(kù)目s錄第1章 引言 引言選題背景隨著網(wǎng)絡(luò)資源的不斷增加和招聘網(wǎng)站的快速發(fā)展,傳統(tǒng)的信息檢索的服務(wù)方式已經(jīng)很難滿足用戶的需求。在“大數(shù)據(jù)”時(shí)代,面對(duì)海量的信息數(shù)據(jù),對(duì)信息進(jìn)行篩選和過(guò)濾,并將用戶最感興趣的內(nèi)容展現(xiàn)給用戶,顯得尤為重要。所以,個(gè)性化推薦服務(wù)受到了廣泛的關(guān)注,它可以挖掘用戶信息、用戶瀏覽信息、用戶的操作日志以及數(shù)據(jù)間隱藏的關(guān)聯(lián)性,將獲得的用戶可能感興趣的招聘信息推薦給用戶。雖然搜索引擎的出現(xiàn),在一定程度上解決了信息篩選問(wèn)題,但是搜索引擎是在用戶主動(dòng)提供搜索關(guān)鍵字的基礎(chǔ)上進(jìn)行信息篩選。而推薦系統(tǒng)可以在龐大的數(shù)據(jù)信息中,挖掘出對(duì)用戶有價(jià)值的信息,無(wú)需用戶主動(dòng)描述自己的需求,使信息提供商更好、更有針對(duì)性地向用戶提供所需信息,具有重大意義。本系統(tǒng)通過(guò)協(xié)同過(guò)濾算法,在用戶登陸網(wǎng)站,瀏覽、點(diǎn)評(píng)招聘信息的數(shù)據(jù)記錄基礎(chǔ)上,分析包括招聘信息各項(xiàng)屬性各部分間的內(nèi)在聯(lián)系,探索影響用戶選擇招聘的因素,為用戶推薦感興趣的招聘。研究目標(biāo)和意義隨著信息技術(shù)的飛速發(fā)展和Internet的廣泛應(yīng)用,使在線信息迅速增長(zhǎng),我們稱之為信息爆炸。如今,以超文本編寫的靜態(tài)網(wǎng)頁(yè)以及動(dòng)態(tài)和數(shù)據(jù)庫(kù)技術(shù)結(jié)合了許多人類的創(chuàng)造力和辛勤工作,并包含許多有用且豐富的信息。但是,由于因特網(wǎng)上的大多數(shù)信息數(shù)據(jù)是混亂的并且不能直接使用,因此如何從這些數(shù)據(jù)中尋找潛在的有價(jià)值的信息并為人類信息處理提供可靠和有用的信息已成為許多學(xué)者研究的重點(diǎn)。數(shù)據(jù)挖掘主要基于機(jī)器學(xué)習(xí),統(tǒng)計(jì)技術(shù),人工智能,以自動(dòng)分析原始企業(yè)數(shù)據(jù),進(jìn)行比較歸納推理,然后挖掘潛在規(guī)則,來(lái)預(yù)測(cè)客戶行為,以幫助企業(yè)決策者做出正確的決策。數(shù)據(jù)挖掘不是一項(xiàng)新技術(shù),它的出現(xiàn)和發(fā)展有其自身的必然性。隨著信息數(shù)據(jù)的激增,特別是數(shù)據(jù)倉(cāng)庫(kù)的出現(xiàn),原始的數(shù)據(jù)庫(kù)工具已經(jīng)不能滿足用戶的需求,用戶不僅需要通用的查詢和報(bào)告工具,還需要更多的可以幫助提取高質(zhì)量信息的技術(shù),數(shù)據(jù)挖掘的出現(xiàn)和發(fā)展正順應(yīng)趨勢(shì),它也是數(shù)據(jù)庫(kù)和信息決策領(lǐng)域中最先進(jìn)的研究方向之一。主要研究?jī)?nèi)容本文主要?jiǎng)澐譃槲鍌€(gè)章節(jié)。第一章是引言,介紹了系統(tǒng)的開(kāi)發(fā)背景,研究現(xiàn)狀等內(nèi)容;第二章是技術(shù)介紹部分,介紹了軟件開(kāi)發(fā)所使用到的相關(guān)技術(shù);第三章是算法設(shè)計(jì),對(duì)基于用戶的協(xié)同過(guò)濾算法進(jìn)行分析;第四章是系統(tǒng)設(shè)計(jì)部分,介紹了系統(tǒng)功能設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)等;第五章是系統(tǒng)實(shí)現(xiàn),介紹了主要功能模塊的實(shí)現(xiàn)過(guò)程;第六章是測(cè)試部分,對(duì)軟件系統(tǒng)的功能進(jìn)行單元測(cè)試。最后為結(jié)論,對(duì)全文進(jìn)行了總結(jié)。第2章相關(guān)技術(shù)介紹相關(guān)技術(shù)介紹推薦系統(tǒng)概述圖2-1推薦系統(tǒng)原理圖推薦系統(tǒng)的組成要素有三個(gè)方面:進(jìn)行推薦的對(duì)象(項(xiàng)目)、推薦目標(biāo)用戶和相應(yīng)的推薦方法。用戶在系統(tǒng)中與推薦對(duì)象所進(jìn)行的交互可以在系統(tǒng)中產(chǎn)生用戶行為數(shù)據(jù)或是用戶傾向性。推薦算法將收集這些行為數(shù)據(jù)和傾向性進(jìn)行分析,在推薦算法的分析基礎(chǔ)上推薦系統(tǒng)將待的推薦對(duì)象推送給用戶。通常輸入分為三種:是用戶數(shù)據(jù),推薦對(duì)象數(shù)據(jù),用戶行為/用戶傾向性。用戶數(shù)據(jù)即個(gè)人信息包括如性別,職業(yè)等,推薦對(duì)象數(shù)據(jù)常包含對(duì)象所在分類,對(duì)象標(biāo)簽等等屬性,用戶行為/用戶傾向性有顯性和隱性兩種類型。表2-1用戶行為/用戶傾向性類型顯性記錄點(diǎn)贊,評(píng)論,評(píng)分,分享等隱性記錄瀏覽時(shí)長(zhǎng),瀏覽記錄,重復(fù)瀏覽等推薦系統(tǒng)獲得以上數(shù)據(jù)后,系統(tǒng)根據(jù)不同的推薦方法進(jìn)行分析,生成針對(duì)目標(biāo)用戶的推薦規(guī)則,從而選出適合的推薦對(duì)象形成推薦集合向用戶推送。由此可見(jiàn),在完整的個(gè)性化推薦系統(tǒng)來(lái)中,如何去收集或記錄用戶的個(gè)人偏好信息,如何根據(jù)這些信息建立用戶興趣模型,如何使用建立推薦對(duì)象和用戶興趣模型之間的關(guān)系等幾個(gè)問(wèn)題是關(guān)鍵所在。協(xié)同過(guò)濾推薦協(xié)同過(guò)濾推薦算法分為基于記憶的推薦算法和基于模型的推薦算法。協(xié)同過(guò)濾的核心思想是相似的偏好必然是存在于用戶之間的。因此,當(dāng)需要對(duì)一個(gè)新用戶進(jìn)行推薦的時(shí)候,可以在偏好方面搜索與目標(biāo)用戶相似度較高的其他用戶,因?yàn)閮烧咂幂^為相似,可以認(rèn)為老用戶感興趣的對(duì)象新用戶理應(yīng)也感興趣。所以可以將老用戶較感興趣的對(duì)象作為給新用戶的推薦集合。兩種推薦算法中,基于記憶(memory-based)的推薦算法可以通過(guò)采用用戶—項(xiàng)目評(píng)分?jǐn)?shù)據(jù)為“新用戶”計(jì)算該用戶尚未評(píng)分過(guò)的項(xiàng)目的評(píng)分,進(jìn)而根據(jù)評(píng)分高低位為該用戶生成推薦集合?;谀P停╩odelbased)的推薦算法根據(jù)用戶興趣模型進(jìn)行推薦,這個(gè)興趣模型通過(guò)采集新用戶的分享,點(diǎn)擊等數(shù)據(jù)來(lái)進(jìn)行構(gòu)建。Java簡(jiǎn)介Java是一種高級(jí)解釋性、交互性和面向?qū)ο蟮哪_本語(yǔ)言。在類中對(duì)數(shù)據(jù)進(jìn)行封裝,利用這種方便性,使開(kāi)發(fā)程序更加簡(jiǎn)潔性和便于維護(hù)性。Java具有很多有關(guān)對(duì)象的特性,比如類的封裝性和繼承性,使用這些特性,只需編譯一次程序代碼,然后通過(guò)上述特性反復(fù)利用。程序員只需把主要精力用在類和接口的設(shè)計(jì)和應(yīng)用上。MyEclipse簡(jiǎn)介MyEclipse是目前階段使用廣泛的開(kāi)發(fā)者工具,MyEclipse功能強(qiáng)大讓人不可思議,特別是對(duì)開(kāi)源產(chǎn)品的支持十分廣泛,究其本質(zhì),MyEclipse采用java平臺(tái)進(jìn)行開(kāi)發(fā),是一個(gè)J2EE的Eclipse插件集。MyEclipse是對(duì)于EclipseIDE插件的一種新領(lǐng)域拓展,在數(shù)據(jù)庫(kù)和J2EE二者相互結(jié)合的開(kāi)發(fā)環(huán)境下,MyEclipse能夠更加輕松的積壓應(yīng)用程序服務(wù)器來(lái)實(shí)現(xiàn)整合,從而更好的提高研發(fā)人員的工作效率。數(shù)據(jù)庫(kù)簡(jiǎn)介在所有的信息管理系統(tǒng)之中,數(shù)據(jù)庫(kù)作為非常重要的一環(huán),常常被作為整個(gè)系統(tǒng)的核心進(jìn)行設(shè)計(jì),因?yàn)閿?shù)據(jù)庫(kù)關(guān)系管理系統(tǒng)的信息調(diào)用以及功能的實(shí)現(xiàn)。本系統(tǒng)采用MySQL數(shù)據(jù)庫(kù)技術(shù),MySQL屬于小型的數(shù)據(jù)庫(kù)它被用在很多領(lǐng)域有著高效的數(shù)據(jù)管理能力,但是其開(kāi)源的特性,讓越來(lái)越多的用戶開(kāi)始使用,而且搭建成本非常低,運(yùn)行速度非???,質(zhì)量?jī)?yōu)秀,是許多中小性網(wǎng)站選擇的數(shù)據(jù)庫(kù)搭建技術(shù)。第3章基于用戶的協(xié)同過(guò)濾推薦算法設(shè)計(jì)基于用戶的協(xié)同過(guò)濾推薦算法設(shè)計(jì)算法簡(jiǎn)介基于用戶的協(xié)同過(guò)濾算法是個(gè)性化推薦中使用最廣泛的方法。該算法首先使用統(tǒng)計(jì)技術(shù)來(lái)查找與目標(biāo)用戶具有相同偏好的鄰居,然后根據(jù)目標(biāo)用戶的鄰居的偏好來(lái)生成推薦給目標(biāo)用戶的建議。它的基本原理是使用用戶可能會(huì)感興趣的彼此之間的用戶訪問(wèn)行為相似性資源推薦給當(dāng)前用戶,通過(guò)其歷史記錄和特定的相似性函數(shù)訪問(wèn)系統(tǒng),計(jì)算其訪問(wèn)行為(單擊產(chǎn)品集合,訪問(wèn)一組網(wǎng)頁(yè)等),將最相似的N個(gè)用戶作為一組最接近的鄰居,使用用戶訪問(wèn)資源的統(tǒng)計(jì)信息來(lái)訪問(wèn)鄰居訪問(wèn)目標(biāo),以生成推薦候選,然后計(jì)算出每種資源給用戶推薦候選的推薦集中度,根據(jù)用戶設(shè)置,選擇一個(gè)K作為熱門資源的推薦。算法步驟建立用戶模型協(xié)同過(guò)濾算法的輸入數(shù)據(jù)通常表示為一個(gè)m*n的用戶一評(píng)價(jià)矩陣R,m是用戶數(shù),n是項(xiàng)目數(shù),其中Rij表示第i個(gè)用戶對(duì)第j個(gè)項(xiàng)目的評(píng)分值;圖3-1評(píng)分矩陣這里的評(píng)分值可以是用戶的瀏覽次數(shù),點(diǎn)擊次數(shù)等隱式的評(píng)分,還可以采用顯示評(píng)分,如用戶對(duì)招聘的直接評(píng)分,本算法的實(shí)現(xiàn)是采用用戶對(duì)所點(diǎn)擊招聘的直接評(píng)分作為評(píng)分矩陣中評(píng)分值的。尋找最近鄰居尋找最近鄰居:在這一階段,主要完成對(duì)目標(biāo)用戶最近鄰居的查找。通過(guò)計(jì)算目標(biāo)用戶與其他用戶之間的相似度,算出與目標(biāo)用戶最相似的“最近鄰居”集。即:對(duì)目標(biāo)用戶i產(chǎn)生一個(gè)以相似度sim(i,j)遞減排列的“鄰居”集合。該過(guò)程分兩步完成:首先計(jì)算用戶之問(wèn)的相似度,可采用皮爾森相關(guān)系數(shù)、余弦相似性和修正的余弦相似性等度量方法。其次是根據(jù)如下方法選擇“最近鄰居”:(1)選擇相似度大于設(shè)定閾值的用戶;(2)選擇相似度最大的前k個(gè)用戶;(3)選擇相似度大于預(yù)定閾值的k個(gè)用戶。尋找最近鄰居通常有三種方法:(1)余弦相似性(Cosine)每一個(gè)用戶的評(píng)分都可以看作為維項(xiàng)目空間上的向量,如果用戶對(duì)項(xiàng)目沒(méi)有進(jìn)行評(píng)分,則將用戶對(duì)該項(xiàng)目的評(píng)分設(shè)為0。用戶間的相似性通過(guò)向量間的余弦?jiàn)A角度量。設(shè)用戶和用戶在維項(xiàng)目空間上的評(píng)分分別表示為向量和向量,則用戶和用戶之間的相似性為:(式3-1)其中,分子為兩個(gè)用戶評(píng)分向量的內(nèi)積,分母為兩個(gè)用戶向量模的乘積。(2)相關(guān)相似性(Correlation)設(shè)用戶和用戶共同評(píng)分過(guò)的項(xiàng)目集合用表示,,則用戶和用戶之間的相似性通過(guò)Pearson相關(guān)系數(shù)度量:(式3-2)其中,表示用戶對(duì)項(xiàng)目的評(píng)分,、分別表示用戶和用戶對(duì)所打分項(xiàng)目的平均評(píng)分。(3)修正的余弦相似性(AdjustedCosine)在余弦相似性度量方法中,沒(méi)有考慮不同用戶的評(píng)分尺度問(wèn)題,修正的余弦相似性度量方法通過(guò)減去用戶對(duì)項(xiàng)目的平均評(píng)分改善這一缺陷。設(shè)用戶和用戶共同評(píng)分過(guò)的項(xiàng)目集合用表示,,和分別表示用戶和用戶評(píng)分過(guò)的項(xiàng)目集合,則用戶和用戶之間的相似性為:(式3-3)其中,表示用戶對(duì)項(xiàng)目d的評(píng)分,、分別表示用戶和用戶對(duì)項(xiàng)目的平均評(píng)分。本系統(tǒng)選擇相似度最高的十個(gè)用戶作為最近鄰居。本文在原型系統(tǒng)中采用的是余弦相似性計(jì)算的用戶相似性,選出十個(gè)最近鄰居。產(chǎn)生推薦項(xiàng)目計(jì)算方法如下:(式3-4)其中表示用戶與用戶之間的相似性,表示最近鄰居用戶對(duì)項(xiàng)目的評(píng)分,和分別表示用戶和用戶的平均評(píng)分,公式(4)的實(shí)質(zhì)是在用戶的最近鄰居集NESi中查找用戶,并將目標(biāo)用戶與查找到的用戶的相似度的值作為權(quán)值,然后將鄰居用戶對(duì)該項(xiàng)目的評(píng)分與此鄰居用戶的所有評(píng)分的差值進(jìn)行加權(quán)平均。通過(guò)上述方法預(yù)測(cè)出目標(biāo)用戶對(duì)未評(píng)價(jià)項(xiàng)目的評(píng)分,然后選擇預(yù)測(cè)評(píng)分最高的TOP-N項(xiàng)推薦給目標(biāo)用戶。算法的實(shí)現(xiàn)首先,在原型系統(tǒng)中根據(jù)用戶對(duì)項(xiàng)目的顯示評(píng)分,來(lái)構(gòu)建用戶評(píng)分矩陣。如下表所示,縱向表示項(xiàng)目ID,橫向表示用戶ID,單元格里的值表示該值所在行的用戶對(duì)該值所在列的項(xiàng)目的評(píng)分。單元格里沒(méi)有值的表示沒(méi)有評(píng)過(guò)分。表3-1評(píng)分表12345678911111222445353344434425256235473358253933由于數(shù)據(jù)量的問(wèn)題,上表只是象征意義的表示,并非數(shù)據(jù)庫(kù)中的真實(shí)數(shù)據(jù)。采用余弦相似性,所以要首先得到每個(gè)用戶的向量。而用戶1的向量為(0,0,1,1,1,1,2,2,0),用戶2的向量為(4,4,5,3,0,5,0,0,3),利用這兩個(gè)向量的值,進(jìn)而計(jì)算用戶1和用戶2之間的相似性。如果,是找用戶1的最近鄰居,則計(jì)算1和所有其他用戶的相似度,最高的十個(gè)最為最近鄰居。若找用戶2的最近鄰居,也同理。但是,對(duì)于任何兩個(gè)用戶得到的最近鄰居一般都是不同的,若是相同,也只能是極端情況。所以,根據(jù)此算法對(duì)不同的用戶,推薦出來(lái)的招聘是不同的。協(xié)同過(guò)濾推薦是根據(jù)用戶過(guò)去的行為而推薦的,對(duì)于,每一個(gè)用戶,一般,他們過(guò)去的點(diǎn)擊行為,瀏覽行為是不同的。因此,產(chǎn)生的推薦是個(gè)性化推薦。算法的代碼:產(chǎn)生最近鄰居的代碼如下:用nearestNeighbor數(shù)組來(lái)存儲(chǔ)最近鄰居的用戶ID,用similarityvalue數(shù)組來(lái)存儲(chǔ)響應(yīng)的相似度的值,并將參數(shù)設(shè)為引用類型,在調(diào)用這個(gè)方法后,就能得到用戶ID為userid這個(gè)用戶的最近鄰居及相似度的值。publicvoidnearest(intuserid,refint[]nearestNeighbor,refdouble[]similarityvalue){ClassDBnumber=newClassDB();stringsql="selectcount(*)fromgoods";//SqlDataReaderdr=number.GetDataReader(sql);intlength=Convert.ToInt16(number.ExecuteScalarSQL(sql));//計(jì)算向量的維數(shù)double[]targetuser=newdouble[length];//目標(biāo)用戶向量的數(shù)組double[]otheruser=newdouble[length];//存儲(chǔ)其他用戶向量的數(shù)組doubleTargetVecterNorm=0;//int[]nearestNeighbor={0,0,0,0,0,0,0,0,0,0};//求出目標(biāo)用戶的向量數(shù)組并求出向量的模for(intm=1;m<(length+1);m++)//得到目標(biāo)用戶的向量{stringsql1="selecttop1consumertofromtradewhereconsumerid="+userid+"andgoodsid="+m+"orderbyiddesc";SqlDataReaderdr1=number.GetDataReader(sql1);if(dr1.Read()){targetuser[m-1]=Convert.ToDouble(number.ExecuteScalarSQL(sql1));//dr1.Close();}else{targetuser[m-1]=0;}TargetVecterNorm+=targetuser[m-1]*targetuser[m-1];}TargetVecterNorm=System.Math.Sqrt(TargetVecterNorm);if(TargetVecterNorm>0)//判斷目標(biāo)用戶是否有評(píng)分,如果有評(píng)分就得到數(shù)據(jù)庫(kù)中的用戶數(shù),求最近鄰居,及相似值,如果沒(méi)有評(píng)分,則鄰居集和相似值都設(shè)為零{stringsql2="selectcount(*)fromconsumer";////SqlDataReaderdr2=number.GetDataReader(sql2);intconsumer_count=Convert.ToInt16(number.ExecuteScalarSQL(sql2));for(inti=1;i<(consumer_count+1);i++)//對(duì)每一個(gè)用戶循環(huán){if(i==userid)//如果用戶是目標(biāo)用戶,則什么都不做。{}else//否則,求出用戶i的向量數(shù)組{for(intj=1;j<=length;j++){stringsql3="selecttop1consumertofromtradewhereconsumerid="+i+"andgoodsid="+j+"orderbyiddesc";SqlDataReaderdr3=number.GetDataReader(sql3);if(dr3.Read()){otheruser[j-1]=Convert.ToDouble(number.ExecuteScalarSQL(sql3));//dr3.Close();}else{otheruser[j-1]=0;}}//計(jì)算相似性doublesimilarity=0;doublemolecular=0;doubleOtherVecterNorm=0;for(intk=0;k<length;k++)//對(duì)每一維進(jìn)行計(jì)算{molecular+=targetuser[k]*otheruser[k];OtherVecterNorm+=otheruser[k]*otheruser[k];}OtherVecterNorm=System.Math.Sqrt(OtherVecterNorm);//求出用戶i的模if(molecular==0)//如果分子為零,則相似性直接就為零。similarity=0;elsesimilarity=molecular/(TargetVecterNorm*OtherVecterNorm);if(similarity<=similarityvalue[9])//如果相似性小于等于最小的,什么都不做{}else//否則,將相似值付給數(shù)組的第十個(gè)值,并整理相似值的順序。計(jì)算出相似度之后,根據(jù)大小對(duì)其排序,使其永遠(yuǎn)保持從大到小,最后得出目標(biāo)用戶的最近鄰居。產(chǎn)生推薦項(xiàng)目的代碼如下://將鄰居用戶的參數(shù)傳過(guò)來(lái),計(jì)算預(yù)測(cè)評(píng)分,返回評(píng)分最高的評(píng)分的項(xiàng)目的IDpublicvoidprediction(intuserid,int[]nearestNeighbor,double[]similarityvalue,refint[]goodsid){double[]prediction=newdouble[8];doubleprediction_i;ClassDBnumber1=newClassDB();stringsql11="selectcount(*)fromgoods";//SqlDataReaderdr=number.GetDataReader(sql);intlength=Convert.ToInt16(number1.ExecuteScalarSQL(sql11));//int[]goodid=newint[8];//goodid={0,0,0,0,0,0,0,0};doubletargetAverage=0;//目標(biāo)用戶的平均評(píng)分if(DR1.Read())//如果是目標(biāo)用戶評(píng)過(guò)分的項(xiàng)目,則什么都不做,如果沒(méi)評(píng)過(guò),則計(jì)算項(xiàng)目預(yù)測(cè)評(píng)分值{//DR1.Close();}else{for(intj=0;j<=9;j++)//對(duì)鄰居用戶循環(huán){if(nearestNeighbor[j]==0){}else{doubleneighbor_j_Average=0;//用戶j的平均評(píng)分這樣得到預(yù)測(cè)評(píng)分,然后把預(yù)測(cè)評(píng)分值最大的幾個(gè)項(xiàng)目推薦給目標(biāo)用戶。上面的代碼寫的不是很優(yōu)化,產(chǎn)生推薦時(shí),耗時(shí)過(guò)長(zhǎng),主要是由于頻繁操作數(shù)據(jù)庫(kù)造成的。在這個(gè)算法的代碼上,還有很多可以改進(jìn)的地方,可以運(yùn)行更快,不過(guò),由于本次試驗(yàn)的時(shí)間問(wèn)題,在這個(gè)問(wèn)題上,還沒(méi)能有時(shí)間改進(jìn)。第4章系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)系統(tǒng)主要功能模塊系統(tǒng)分為前臺(tái)和后臺(tái)兩個(gè)模塊。前臺(tái)主要包括登錄注冊(cè)、首頁(yè)、公司列表、職位列表、資訊信息等功能模塊;后臺(tái)主要包括用戶管理、資訊管理、審核管理、系統(tǒng)管理等功能。系統(tǒng)功能結(jié)構(gòu)圖如圖4-1所示。圖4-1系統(tǒng)功能模塊圖數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)E-R圖關(guān)系型數(shù)據(jù)庫(kù)是目前應(yīng)用最廣泛的數(shù)據(jù)庫(kù)。既然是面向?qū)ο笙到y(tǒng)設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì)當(dāng)然也要是面向?qū)ο蟮摹,F(xiàn)在要考慮如何對(duì)類進(jìn)行持久化操作,即如何將對(duì)象類映射到關(guān)系數(shù)據(jù)庫(kù)的二維表。目前可以采用數(shù)據(jù)庫(kù)建模工具來(lái)實(shí)現(xiàn),像PowerDesigner、Rose等。數(shù)據(jù)庫(kù)的概念設(shè)計(jì)整體屬性E-R圖如下圖4-2所示:圖4-2整體屬性E-R圖然后根據(jù)具體的功能需求,對(duì)本系統(tǒng)的E-R圖進(jìn)行細(xì)化從而得到幾種實(shí)體—關(guān)系模型,以下為部分實(shí)體—關(guān)系模型。圖4-3管理員實(shí)體圖圖4-4資訊信息實(shí)體圖圖4-5招聘信息實(shí)體圖圖4-6留言信息實(shí)體圖數(shù)據(jù)表字段設(shè)計(jì)本系統(tǒng)采用的是MySQL數(shù)據(jù)庫(kù)管理數(shù)據(jù),系統(tǒng)中使用到的主要數(shù)據(jù)表有t_admin表、t_apply表、t_blog表、t_gz表等。具體展示部分如下所示。表4-1t_admin表表4-2t_apply表表4-3t_blog表表4-4t_gz表系統(tǒng)架構(gòu)類圖基于信息系統(tǒng)的原則,系統(tǒng)架構(gòu)模型可分為三層:用戶界面層,業(yè)務(wù)層,數(shù)據(jù)訪問(wèn)層,如圖4-6所示。1、數(shù)據(jù)訪問(wèn)層:主要是對(duì)原始數(shù)據(jù)(數(shù)據(jù)庫(kù)或者文本文件等存放數(shù)據(jù)的形式)的操作層,而不是指原始數(shù)據(jù),也就是說(shuō),是對(duì)數(shù)據(jù)的操作,而不是數(shù)據(jù)庫(kù),具體為業(yè)務(wù)邏輯層或者表現(xiàn)層提供數(shù)據(jù)服務(wù)。2、業(yè)務(wù)邏輯層:主要是針對(duì)具體的問(wèn)題的操作,也可以理解成對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理,如果說(shuō)數(shù)據(jù)層是積木,那邏輯層就是對(duì)這些積木的搭建。3、表示層:主要表示W(wǎng)EB方式,也可以表示成WINFORM方式,如果邏輯層相當(dāng)強(qiáng)大和完善,無(wú)論表現(xiàn)層如何定義和更改,邏輯層都完善地提供服務(wù)。然后得到如圖4-7所示的包圖:圖4-6系統(tǒng)體系架構(gòu)圖圖4-7網(wǎng)站模塊包圖展開(kāi)包圖,得到類圖,它是靜態(tài)結(jié)構(gòu)圖的架構(gòu),使各個(gè)種類之間的關(guān)系,表達(dá)了靜態(tài)聯(lián)系。系統(tǒng)類圖如下圖4-8所示。圖4-8系統(tǒng)類圖系統(tǒng)交互圖系統(tǒng)架構(gòu)類的工作流程:1、在用戶輸入請(qǐng)求后,用戶界面對(duì)象接收到,并發(fā)送一個(gè)請(qǐng)求到服務(wù)代理對(duì)象。2、業(yè)務(wù)代理對(duì)象接收到請(qǐng)求之后,并向受權(quán)限管理對(duì)象發(fā)送的驗(yàn)證權(quán)限請(qǐng)求。3、權(quán)限管理對(duì)象把得到的驗(yàn)證權(quán)限的結(jié)果發(fā)給業(yè)務(wù)代理對(duì)象后。4、根據(jù)業(yè)務(wù)代理對(duì)象的驗(yàn)證結(jié)果進(jìn)行以下處理:對(duì)權(quán)限的要求不符合的則返回消息;符合許可的請(qǐng)求時(shí),該請(qǐng)求被轉(zhuǎn)發(fā)到業(yè)務(wù)對(duì)象。5、業(yè)務(wù)對(duì)象進(jìn)行業(yè)務(wù)處理。對(duì)于持久性的數(shù)據(jù)服務(wù)操作,操作時(shí)通過(guò)訪問(wèn)數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,任何例外情況的處理都給異常處理對(duì)象進(jìn)行處理。最后,把結(jié)果信息返回給業(yè)務(wù)代理對(duì)象。6、業(yè)務(wù)代理對(duì)象將處理信息返回給用戶界面。系統(tǒng)架構(gòu)類的交互圖如圖4-9所示:圖4-9系統(tǒng)架構(gòu)類的交互圖第5章系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn)系統(tǒng)配置連接數(shù)據(jù)庫(kù)的配置文件,該配置是針對(duì)dataSource的連接數(shù)據(jù)庫(kù)的配置:
<!--
數(shù)據(jù)庫(kù)鏈接URL、用戶名、密碼
-->
<jdbcConnection
driverClass="com.MySQL.jdbc.Driver"
connectionURL="jdbc:MySQL://localhost:3306/shop"
userId="root"
password="12345">
<!--<jdbcConnection
driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@localhost:1521:orcl"
userId="msa"
password="msa">-->
</jdbcConnection>
<javaTypeResolver>
<property
name="forceBigDecimals"
value="false"
/>
</javaTypeResolver>
<!--
生成模型的包名和位置
-->
<javaModelGenerator
targetPackage="andy.model"
targetProject="D:\generator\src">
<property
name="enableSubPackages"
value="true"
/>
<property
name="trimStrings"
value="true"
/>
</javaModelGenerator>
<!--
生成的映射文件包名和位置
-->
<sqlMapGenerator
targetPackage="andy.mapping"
targetProject="D:\generator\src">
<property
name="enableSubPackages"
value="true"
/>
</sqlMapGenerator>
<!--
生成DAO的包名和位置
-->
<javaClientGenerator
type="XMLMAPPER"
targetPackage="andy.dao"
targetProject="D:\generator\src">
<property
name="enableSubPackages"
value="true"
/>
</javaClientGenerator>
登錄設(shè)計(jì)實(shí)現(xiàn)用戶進(jìn)入系統(tǒng)登錄界面,輸入用戶名、密碼、驗(yàn)證碼等信息驗(yàn)證身份,點(diǎn)擊登錄按鈕實(shí)現(xiàn)登錄系統(tǒng)的功能。系統(tǒng)登錄界面如圖5-1所示。圖5-1系統(tǒng)登錄界面登錄模塊是系統(tǒng)最基本的模塊,系統(tǒng)登錄模塊可以根據(jù)用戶輸入的賬號(hào)、密碼等信息進(jìn)行身份驗(yàn)證,任何用戶想要使用該系統(tǒng),都需要先進(jìn)行登錄,登錄驗(yàn)證通過(guò)之后,才可以進(jìn)行相關(guān)權(quán)限的操作。登錄流程設(shè)計(jì)如下圖5-2所示。圖5-2系統(tǒng)登錄流程圖5.3前臺(tái)功能設(shè)計(jì)實(shí)現(xiàn)前臺(tái)包括登錄注冊(cè)、首頁(yè)、公司列表、職位列表、資訊信息等功能模塊。(1)首頁(yè)實(shí)現(xiàn)首頁(yè)實(shí)現(xiàn)界面如圖5-3所示。圖5-3首頁(yè)模塊界面(2)注冊(cè)模塊實(shí)現(xiàn)注冊(cè)模塊主要實(shí)現(xiàn)了用戶注冊(cè)的功能,在注冊(cè)交流界面,需要輸入賬戶、密碼等信息完成注冊(cè)。注冊(cè)模塊界面如圖5-4所示。圖5-4注冊(cè)模塊實(shí)現(xiàn)界面(3)職位搜索模塊實(shí)現(xiàn)在職位搜索模塊,用戶可以查看招聘列表,搜索招聘信息,選擇招聘查看詳情,進(jìn)行職位申請(qǐng)等操作。職位搜索模塊實(shí)現(xiàn)界面如圖5-5所示。圖5-5職位搜索模塊實(shí)現(xiàn)界面(4)推薦招聘模塊實(shí)現(xiàn)推薦招聘模塊主要采用了協(xié)同過(guò)濾算法實(shí)現(xiàn)招聘信息的推薦。推薦招聘模塊實(shí)現(xiàn)界面如圖5-5所示。圖5-5推薦招聘模塊實(shí)現(xiàn)界面5.4后臺(tái)功能設(shè)計(jì)實(shí)現(xiàn)管理員主要實(shí)現(xiàn)了用戶管理、資訊管理、審核管理、系統(tǒng)管理等功能。(1)公司信息審核模塊的實(shí)現(xiàn)在公司信息審核模塊,管理員可以對(duì)公司進(jìn)行審核操作。公司信息審核模塊實(shí)現(xiàn)界面如圖5-6所示。圖5-6公司信息審核模塊實(shí)現(xiàn)界面(2)職位信息審核模塊的實(shí)現(xiàn)在職位信息審核模塊,管理員可以對(duì)職位信息進(jìn)行審核操作。職位信息審核實(shí)現(xiàn)界面如圖5-7所示。圖5-7職位信息審核實(shí)現(xiàn)界面(3)資訊管理功能模塊的實(shí)現(xiàn)在資訊管理功能模塊,管理員可以對(duì)資訊信息進(jìn)行增刪改查等操作。資訊管理模塊實(shí)現(xiàn)界面如圖5-8所示。a圖5-8資訊管理模塊實(shí)現(xiàn)界面第6章系統(tǒng)測(cè)試系統(tǒng)測(cè)試測(cè)試目的系統(tǒng)測(cè)試檢驗(yàn)軟件程序是否符合標(biāo)準(zhǔn)的最后一道工序,如果測(cè)試的目的是為了盡可能多地找出錯(cuò)誤,那么測(cè)試就應(yīng)該直接針對(duì)軟件比較復(fù)雜的部分或是以前出錯(cuò)比較多的位置。測(cè)試的目的就是為了發(fā)現(xiàn)錯(cuò)誤而找出相對(duì)應(yīng)的解決方法的過(guò)程。該觀點(diǎn)可以是一個(gè)提醒的測(cè)試,以發(fā)現(xiàn)錯(cuò)誤為中心,不表現(xiàn)出對(duì)軟件的正確性。但它可能會(huì)誤導(dǎo)了解,這種觀點(diǎn)可能會(huì)產(chǎn)生誤導(dǎo)。結(jié)果發(fā)現(xiàn),該軟件測(cè)試的唯一的目標(biāo)就是要找出錯(cuò)誤,這是沒(méi)有價(jià)值的測(cè)試。。測(cè)試用例以下是對(duì)《基于協(xié)同算法的網(wǎng)上求職招聘系統(tǒng)》的部分功能的測(cè)試。具體測(cè)試用例如下。表5-1用戶登錄測(cè)試表功能名稱用戶登錄測(cè)試序號(hào)01測(cè)試時(shí)間2021年04月25日測(cè)試人員開(kāi)發(fā)者測(cè)試目的測(cè)試系統(tǒng)登錄功能是否正常、穩(wěn)定測(cè)試步驟(1)用戶要登錄本系統(tǒng)并在登錄界面輸入用戶名“ww”,密碼“123”點(diǎn)擊登錄按鈕(2)用戶要登錄本系統(tǒng)并在登錄界面輸入用戶名“xm”,密碼“123”點(diǎn)擊登錄按鈕預(yù)測(cè)結(jié)果(1)通過(guò)后臺(tái)服務(wù)器與數(shù)據(jù)庫(kù)的信息匹配正確后,提示“登錄成功”,并進(jìn)入主界面,用戶ww可以正常登錄系統(tǒng)。(2)經(jīng)過(guò)客戶端代碼對(duì)輸入的數(shù)據(jù)進(jìn)行格式規(guī)范校驗(yàn)后,提示“用戶名或密碼不對(duì),請(qǐng)重新輸入”。實(shí)際結(jié)果(1)通過(guò)后臺(tái)服務(wù)器與數(shù)據(jù)庫(kù)信息匹配正確后,提示“登錄成功”,并進(jìn)入主界面,用戶ww可以正常登錄系統(tǒng)。(2)經(jīng)過(guò)客戶端代碼對(duì)輸入的數(shù)據(jù)進(jìn)行格式規(guī)范校驗(yàn)后,提示“用戶名或密碼不對(duì),請(qǐng)重新輸入”表5-2用戶注冊(cè)測(cè)試表功能名稱用戶注冊(cè)測(cè)試序號(hào)02測(cè)試時(shí)間2021年04月25日測(cè)試人員開(kāi)發(fā)者測(cè)試目的測(cè)試系統(tǒng)用戶注冊(cè)功能是否正常、穩(wěn)定測(cè)試步驟(1)輸入“用戶名”、“密碼”,“電話”等信息,并點(diǎn)擊注冊(cè)按鈕。(2)直接點(diǎn)擊注冊(cè)按鈕。預(yù)測(cè)結(jié)果(1)系統(tǒng)將注冊(cè)信息驗(yàn)證后錄入數(shù)據(jù)庫(kù),并提示“注冊(cè)成功”,跳轉(zhuǎn)到登錄界面。(2)注冊(cè)失敗,提示“請(qǐng)輸入用戶名”實(shí)際結(jié)果(1)系統(tǒng)將注冊(cè)信息驗(yàn)證后錄入數(shù)據(jù)庫(kù),并提示“注冊(cè)成功”,跳轉(zhuǎn)到登錄界面。(2)注冊(cè)失敗,提示“請(qǐng)輸入用戶名”。表5-3招聘列表測(cè)試表功能名稱招聘列表測(cè)試序號(hào)03測(cè)試時(shí)間2021年04月25日測(cè)試人員開(kāi)發(fā)者測(cè)試目的測(cè)試招聘列表功能是否正常、穩(wěn)定測(cè)試步驟在招聘列表界面,用戶點(diǎn)擊查看招聘詳情,進(jìn)行職位申請(qǐng)等操作。預(yù)測(cè)結(jié)果操作成功。實(shí)際結(jié)果操作成功。測(cè)試結(jié)果經(jīng)過(guò)對(duì)上述測(cè)試結(jié)果分析,本系統(tǒng)符合網(wǎng)上求職招聘系統(tǒng)的用戶需求。所有基本功能點(diǎn)實(shí)現(xiàn),操作簡(jiǎn)單,操作流程符合業(yè)務(wù)需求,系統(tǒng)運(yùn)行性能良好,滿足用戶使用需求。致謝翻譯文稿
結(jié)論本文主要闡述了如何利用Java語(yǔ)言開(kāi)發(fā)一個(gè)性能優(yōu)化、可擴(kuò)展性強(qiáng)和安全可靠的網(wǎng)上求職招聘系統(tǒng)。系統(tǒng)分為前臺(tái)和后臺(tái)兩個(gè)模塊。前臺(tái)主要包括登錄注冊(cè)、首頁(yè)、公司列表、職位列表、資訊信息等功能模塊;后臺(tái)主要包括用戶管理、資訊管理、審核管理、系統(tǒng)管理等功能。然后根據(jù)這些功能進(jìn)行分析設(shè)計(jì),對(duì)所有到的開(kāi)發(fā)工具及技術(shù)進(jìn)行簡(jiǎn)要的介紹。接著進(jìn)行需求分析的描述。接著是概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。描述這個(gè)系統(tǒng)的部分功能的實(shí)現(xiàn)方案及過(guò)程。由于本人所學(xué)有限,該系統(tǒng)還有許多地方需要改進(jìn),后期可以進(jìn)一步加強(qiáng)和完善。本系統(tǒng)具有以下優(yōu)點(diǎn):1、該系統(tǒng)可以運(yùn)行在多個(gè)操作系統(tǒng)平臺(tái),數(shù)據(jù)庫(kù)采用MySQL,開(kāi)發(fā)語(yǔ)言選擇Java,可移植性好。2、系統(tǒng)將用戶權(quán)限進(jìn)行劃分,不同的用戶具有不同的操作權(quán)限。這不僅方便了用戶,也保證了系統(tǒng)的安全性。3、該系統(tǒng)界面簡(jiǎn)單,操作方便,容易使用。但也存在以下問(wèn)題需要改進(jìn):1、運(yùn)行時(shí)間常會(huì)出現(xiàn)響應(yīng)延遲現(xiàn)象,窗口不能被刷新,可
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)內(nèi)銷型苦丁茶數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 廣東省汕尾市陸豐市碣石鎮(zhèn)2024-2025學(xué)年三年級(jí)上學(xué)期期中測(cè)試語(yǔ)文試卷(含答案)
- 幼教面試試題試題及答案
- 英美概況考試試題及答案
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職教育學(xué)題庫(kù)檢測(cè)試卷B卷附答案
- 采購(gòu)與供應(yīng)商分包合同(2篇)
- 詞牌名的文化內(nèi)涵與寫作技巧:小學(xué)高年級(jí)語(yǔ)文古詩(shī)教學(xué)教案
- 化學(xué)反應(yīng)與能量化學(xué)科學(xué)教案
- 學(xué)前教育中的寓言故事啟示讀后感
- 房地產(chǎn)行業(yè)智慧社區(qū)與智能家居開(kāi)發(fā)方案
- 雙方責(zé)任及工程分工界面
- 2017醫(yī)學(xué)倫理知情同意書
- 學(xué)習(xí)適應(yīng)性測(cè)驗(yàn)(AAT)
- 部編版小學(xué)六年級(jí)語(yǔ)文下冊(cè)全冊(cè)教案(詳案)
- 小兒導(dǎo)尿術(shù)講稿
- 四年級(jí)下學(xué)期家長(zhǎng)會(huì)班主任發(fā)言稿課件
- 測(cè)量?jī)x器自檢記錄表(全站儀)
- 鐵板神數(shù)計(jì)算取數(shù)方法
- berg平衡評(píng)定量表
- 中央空調(diào)維保方案
- 我是家里的小主人
評(píng)論
0/150
提交評(píng)論