freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

map拼車網(wǎng)中信息撮合系統(tǒng)的設(shè)計與實(shí)現(xiàn)畢業(yè)論文-資料下載頁

2025-06-28 07:46本頁面
  

【正文】 ,varchar類型,長度50,乘客id(外鍵);216。 mp_confirm_status,varchar類型,長度20,乘客確定狀態(tài):1表示乘客申請、2表示車主邀請、3表示車主同意、4表示用戶確定、5表示車主確定;216。 mp_mr_id,integer,長度10,所屬撮合記錄id(外鍵)。3. 撮合評分表(match_mark):216。 mm_id,integer類型,長度10,撮合評價id(主鍵);216。 mm_mr_id,integer類型,長度10,撮合記錄id(外鍵);216。 mm_from_ui_id,varchar類型,長度50,評分用戶id(外鍵);216。 mm_to_ui_id,varchar類型,長度50,被評分用戶id(外鍵);216。 mm_mark,integer類型,長度2,評分;216。 mm_remark,varchar類型,長度200,評價。 數(shù)據(jù)庫的整體設(shè)計系統(tǒng)數(shù)據(jù)庫本著高類聚低耦合的基本思路創(chuàng)建,符合第三范式,有很好的擴(kuò)展性和效率。各表之間的主外鍵關(guān)系如圖33所示:圖33 數(shù)據(jù)庫整體設(shè)計圖下面將介紹各表的用途:216。 user_authentication:用戶權(quán)限管理表,這里管理用戶的權(quán)限,提供了我們系統(tǒng)所支持的兩種登陸方式的數(shù)據(jù)庫支持。216。 user_information:用戶信息表,主要用戶記錄用戶的個人信息,如姓名、聯(lián)系電話、積分等。216。 message:消息表,用于記錄用戶的消息,用戶的已讀、未讀消息將從這里取得。216。 point:地標(biāo)表,主要用于記錄地點(diǎn)信息。216。 sharing_type:拼車類型表,主要用于記錄拼車的類型。216。 route_information:線路信息表,主要用于記錄用戶發(fā)布線路的信息。216。 route_request:線路要求表,主要用于記錄線路要求的。216。 match_record:撮合記錄表,用于記錄線路的撮合記錄。216。 match_passenger:撮合乘客記表,用于記錄某一乘客針對某一撮合記錄的乘客撮合記錄;216。 match_mark:撮合評分表,主要用于記錄撮合后成功的評價記錄。 通過Hibernate實(shí)現(xiàn)數(shù)據(jù)庫的封裝我們的系統(tǒng)用Hibernate實(shí)現(xiàn)簡單的封裝。首先,將數(shù)據(jù)庫中的每一張表對應(yīng)成相應(yīng)的實(shí)體類,在相關(guān)的配置文件中配置各表之間的主外鍵等關(guān)系。然后,根據(jù)需要實(shí)現(xiàn)具體的數(shù)據(jù)庫訪問層(DAO),設(shè)置一個BaseDAO類,主要包含了一個HibernateTemplate類型的參數(shù),及相應(yīng)的get/set方法。其他的DAO類都是在繼承了BaseDAO的基礎(chǔ)上實(shí)現(xiàn)了自己的方法。在本撮合系統(tǒng)中相關(guān)的DAO主要是實(shí)現(xiàn)一些save、update、find等方法。一下就以userInformationDAO、BaseDAO和MatchMarkDAO為例圖解如圖34。圖34 數(shù)據(jù)庫訪問層 信息撮合系統(tǒng)的整體設(shè)計 線路撮合的設(shè)計線路撮合部分主要設(shè)計線路撮合信息的生成及其狀態(tài)的改變。其線路狀態(tài)轉(zhuǎn)換如圖35所示。下面就該圖進(jìn)行一些具體的說明:216。 狀態(tài)0表示乘客線路的撮合信息不存在;216。 狀態(tài)1表示乘客申請加入某一車主發(fā)布的線路,這時由于他們的線路撮合記錄不存在,所以需要向數(shù)據(jù)庫中添加一條乘客線路撮合信息,將其狀態(tài)設(shè)為乘客已申請;216。 狀態(tài)2表示車主邀請了某乘客加入其發(fā)布的線路,這是由于他們的線路撮合記錄不存在,所以需要向數(shù)據(jù)庫中添加一條線路撮合信息,將其狀態(tài)設(shè)為車主已邀請;216。 狀態(tài)3表示車主就乘客的申請信息處理,當(dāng)同意時,將對應(yīng)的線路撮合記錄中的狀態(tài)設(shè)置為車主已同意;216。 狀態(tài)4表示乘客就車主的邀請信息或是車主對乘客申請的同意信息處理,當(dāng)同意時,將對應(yīng)的線路撮合記錄中的狀態(tài)設(shè)置為乘客已同意‘216。 狀態(tài)5表示車主就乘客的同意信息處理,如果確定讓其加入,則將對應(yīng)的線路撮合記錄的狀態(tài)設(shè)置為撮合成功。圖35 線路撮合記錄狀態(tài)轉(zhuǎn)換圖 線路撮合的后臺設(shè)計本系統(tǒng)的線路撮合后臺主要通過一個SingletonControl來管理實(shí)現(xiàn)。當(dāng)用戶提交線路撮合信息的相關(guān)記錄時,在后臺獲取一個SingletonControl的實(shí)例,然后調(diào)用實(shí)例的addInfo方法,在列表中查找,如果找到Info對象,則直接改變對應(yīng)的狀態(tài);如果沒有找到,在數(shù)據(jù)庫中查找,沒有找到就想數(shù)據(jù)庫中添加一條狀態(tài)為0的記錄,將該撮合信息實(shí)例化為一個Info對象設(shè)為主題,同時向主題中添加觀察者(這里我們把車主和乘客都加入其中),在改變Info對應(yīng)的狀態(tài)。線路撮合后臺設(shè)計模式相關(guān)類圖如圖36所示。圖36 線路撮合后臺設(shè)計模式相關(guān)類圖 評價模塊的設(shè)計評價模塊主要有兩個部分需要設(shè)計,一個是待評價消息的生成,另一個是評價記錄的提交。下面就兩個部分分開進(jìn)行分析設(shè)計。 待評價消息的生成當(dāng)車主發(fā)布的一條路線被成功撮合時,車主將會終止乘客的添加,以表示該撮合已經(jīng)成功,不接受以后的拼車者。當(dāng)車主點(diǎn)擊了撮合結(jié)束的按鈕,客戶端將向服務(wù)器發(fā)送一個撮合成功的信號。系統(tǒng)將根據(jù)提交的數(shù)據(jù)確定車主的發(fā)布線路,同時將其狀態(tài)修改為已結(jié)束。這是系統(tǒng)將通過DAO提供的方法,獲取所有該線路上拼車成功的乘客記錄,遍歷這些記錄,每次遍歷將同時在遍歷這些記錄一次,將不是自己的記錄的相關(guān)信息添加到消息的content中,將消息添加到數(shù)據(jù)庫。說得通俗一點(diǎn),就是想給個拼車成功者發(fā)送消息,這些消息將包括其他拼車成功者的信息。 評價記錄的提交如果有待評價的記錄,將會在站內(nèi)信中收到。當(dāng)用戶根據(jù)該記錄的提示,填寫評論,及點(diǎn)擊星狀條,將會把數(shù)據(jù)發(fā)送到服務(wù)器,服務(wù)器將調(diào)用相關(guān)的DAO方法,添加一條評價記錄,然后在重新計算平均分以及用戶積分,記錄入數(shù)據(jù)庫。 新消息提示的設(shè)計新消息的提示在系統(tǒng)中采用的是客戶端拉模式,具體就是在腳本中添加一個函數(shù),這個函數(shù)將在頁面加載結(jié)束時執(zhí)行,函數(shù)中包含了一個查詢請求,將向服務(wù)器要求查詢當(dāng)前用戶新消息的數(shù)量。如果不為0則改變站內(nèi)信的顏色,同時顯示消息的數(shù)量。在函數(shù)的結(jié)尾將每隔3分鐘循環(huán)調(diào)用該函數(shù), 消息獲取的設(shè)計 消息的后臺獲取的設(shè)計消息的后臺獲取,是通過一個CreateXML類來實(shí)現(xiàn)的。當(dāng)有新消息時,用戶點(diǎn)擊站內(nèi)信,將向服務(wù)器提將一個請求,服務(wù)器實(shí)例化一個CreateXML,通過用戶的ID查找所有用戶未讀的消息。用W3C的標(biāo)準(zhǔn)生成消息的XML文件,將該文件發(fā)送給客戶端。 消息的前臺解析的設(shè)計對于后臺發(fā)送來得XML,客戶端將要對其進(jìn)行解析。解析也是用的W3C的標(biāo)準(zhǔn)進(jìn)行,通過getElementByTagName獲取到所有的消息,遍歷這些消息,取得消息的類型,按照類型對消息進(jìn)行解析,并同時生成HTML DOM對象,重構(gòu)HTML DOM樹。本章小結(jié)本章就信息撮合系統(tǒng)的分析與設(shè)計入手,具體對本系統(tǒng)的需求做了一個簡要的分析,并對系統(tǒng)開發(fā)中可能存在的技術(shù)難點(diǎn)進(jìn)行調(diào)研,在分析的技術(shù)上對數(shù)據(jù)庫進(jìn)行設(shè)計和封裝,最后給出本系統(tǒng)的整體設(shè)計的簡要介紹。下一章,將更近一步的闡述系統(tǒng)的開發(fā)過程,將會對本章中所提到的設(shè)計進(jìn)行實(shí)現(xiàn),并對實(shí)現(xiàn)過程中的關(guān)鍵技術(shù)做一些簡要的講解。 第四章 信息撮合系統(tǒng)的實(shí)現(xiàn)方法及關(guān)鍵技術(shù)本章將對上一章分析的幾個模塊,根據(jù)設(shè)計進(jìn)行具體的實(shí)現(xiàn),主要就根據(jù)具體實(shí)現(xiàn)過程中的流程進(jìn)行介紹,在一些關(guān)鍵的技術(shù)上,在本章將以偽代碼的形式進(jìn)行說明。 線路撮合的后臺實(shí)現(xiàn)前臺提交的數(shù)據(jù),將會提交到服務(wù)器的UpdateStatusAction類的execute方法處理。具體過程如圖41所示圖41 UpdateStatusAction的execute執(zhí)行流程下面就圖411中的流程做簡要的闡述:216。 獲取對象out,主要是在最后向客戶端發(fā)送信息。216。 獲取form中的信息,將form轉(zhuǎn)換為StatusFrom類型的對象,通過對應(yīng)得get方法獲取用戶提交來得數(shù)據(jù)。216。 獲取SingletonControl對象instance,這里采用了單例模式。216。 調(diào)用addInfo,這里主要是判斷信息是否存在,不存在則向列表中添加信息。將在接下來展開介紹。216。 調(diào)用updateStatus,這里更新信息的狀態(tài),出發(fā)了改變,主題將會通知觀察者有信息改變。對數(shù)據(jù)的更新操作放在了觀察著的update函數(shù)中進(jìn)行,這個過程比較復(fù)雜,在接下來的內(nèi)容中將具體描述。216。 狀態(tài)為已成功,這表明不會再對信息處理了,將信息從列表中刪除。216。 向out中寫信息,以表示操作是否成功。值得注意的是以上操作因為涉及到讀寫操作,所以都在try/catch中進(jìn)行。在execute的執(zhí)行過程中,有兩個函數(shù)的實(shí)現(xiàn)相對復(fù)雜一些。以下將就這兩個部分作簡要的闡述:1. 添加info添加主題進(jìn)入ArrayList的基本流程是,遍歷Arraylist看是不是主題已經(jīng)在列表中,如果不是系統(tǒng)將在數(shù)據(jù)庫中查找是不是有對應(yīng)的乘客撮合記錄,如果沒有找到乘客的撮合記錄將添加一條默認(rèn)記錄(狀態(tài)為0的記錄)進(jìn)數(shù)據(jù)庫,并用默認(rèn)記錄來實(shí)例化主題、觀察者等信息;如果找到了對應(yīng)的乘客撮合記錄,則用該記錄實(shí)例化主題、觀察者等信息。這個流程如圖42所示。圖42 添加Info流程2. 更新狀態(tài)這里將會查找是不是該主題信息已經(jīng)存在于ArrayList中,如果找到,這設(shè)置主題改變標(biāo)志為true,按照輸入的狀態(tài)設(shè)置對狀態(tài)進(jìn)行改變。更新狀態(tài)的流程圖如圖43所示。圖43 更新狀態(tài)流程設(shè)置狀態(tài)改變后,主題Info,將通知注冊過的觀察者有信息改變。觀察者將根據(jù)改變調(diào)用update方法。本系統(tǒng)中主題就是乘客撮合記錄信息,觀察者有兩類OwnerObserver和CustomerObserver。如果改編后的狀態(tài)為3或是5則需要CustomerObserver處理,更新數(shù)據(jù)庫中對應(yīng)的乘客撮合記錄信息;如果改變后的狀態(tài)為1或是4則需要OwnerObserver處理,更新數(shù)據(jù)庫中對應(yīng)的乘客撮合記錄信息。 評價模塊的實(shí)現(xiàn) 評價記錄的生成評價記錄的生成將向某一線路上面所有的撮合成功用戶發(fā)送一條待評價的記錄信息。通過DAO獲取到所有的有關(guān)用戶記錄和線路信息,遍歷所有用戶記錄,將線路信息加入到content中,在將其余用戶的id添加到content中,完成message的填充,將其添加到數(shù)據(jù)庫中。其流程圖如圖44所示。圖44 評價記錄的生成過程關(guān)鍵代碼如下所示:for (UserInformation user : users) { String mContent = null。 boolean flag = true。 for (UserInformation temp : users) { if ((temp)) { continue。 } if (flag) { flag = false。 mContent += ()。 continue。 } mContent += amp。 + ()。 } 根據(jù)線路信息和其他用戶的編號構(gòu)造message 利用messageDAO的saveMessage保存message} 評價記錄的提交在用戶點(diǎn)擊星狀評價條時,JS部分有一個方法clickAction會對提交的字符串進(jìn)行處理,并提取到評價記錄,在調(diào)用JS中的sndReq方法提交評價記錄到后臺。后臺將會通過MarkForm的get方法來獲得form中的數(shù)據(jù),設(shè)置消息為已讀,重新計算平均評分及用戶積分。將是否成功的消息用過out寫入到客戶端。后臺的處理如圖45所示。圖45 評價記錄提交后的處理 新消息提示的實(shí)現(xiàn)系統(tǒng)會提供一個hasNotify的js方法,在頁面加載的時候調(diào)用,方法將首先獲得XMLHttpObject對象,設(shè)置提交后的狀態(tài)改變函數(shù)(這個函數(shù)將處理成功返回時的信息,將消息的條數(shù)顯示在短消息上),然后打開一個服務(wù)器連接,設(shè)置發(fā)送時的報文頭,向服務(wù)器發(fā)送消息。服務(wù)器收到消息,將根據(jù)用戶編號查詢數(shù)據(jù)庫的UserInformation表,將未讀消息的數(shù)量通過out發(fā)送給客戶端。新消息提示的前臺實(shí)現(xiàn)流程如圖46所示。圖46 新消息提示的前臺實(shí)現(xiàn)流程 消息獲取的實(shí)現(xiàn)本小節(jié)主要介紹系統(tǒng)中消息獲取的實(shí)現(xiàn),這一部分可以分為兩個方面來探討實(shí)現(xiàn)。一方面是消息的后臺獲取,一方面是消息的前臺解析。消息的獲取主要遵循這一流程:用戶點(diǎn)擊站內(nèi)信標(biāo)簽、客戶端向服務(wù)器發(fā)送消息查詢信息、服務(wù)器查詢到消息信息,返回XML,將XML發(fā)送給客戶端,客戶端解析XML,重構(gòu)HTML DOM樹。具體流程圖見圖47圖47 消息獲取的前后臺交互 消息的后臺獲取的實(shí)現(xiàn)消息的后臺獲取大體通過:獲取對象out、利用DAO獲取未讀消息列表、將該消息列表作為參數(shù)實(shí)例化CreateXML、條用sendXML創(chuàng)建XML并給客戶端發(fā)送該XML。具體的流程圖見圖48。圖48 后臺消息獲取流程圖因為在消息的后臺發(fā)送過程中,CreateXML中的方法sendXML比較關(guān)鍵,所以一下就主要闡述這一方法的實(shí)現(xiàn)。()獲得DocumentBuilderFactory對象,調(diào)用該方法的newDocumentBuilder方法獲取DocumentBuilder對象,在利用剛獲得的對象的newDocument方法獲取Document對象。在后臺我們將讀取消息列表中的每一條消息,將其按照一定得格式生成一條消息節(jié)點(diǎn),然后將這些消息節(jié)點(diǎn)形成一棵消息DOM樹,將該樹插入到生成的Document對象中。利用TansformerFactory的newTransformerFactory方法獲取一個TansformerFactory類的對象,利用該對象的newTransformer方法獲取到Transformer對象。在利用該Transformer對象的transform方法將XML通過out對象輸出到客戶端。具體的流程圖如圖49所示。圖49 CreateXML中sendXML函數(shù)流程圖
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1