版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第一章概述1.1問題的提出面對國內(nèi)經(jīng)濟形式的迅速崛起,國內(nèi)旅游業(yè)也處于飛速發(fā)展階段。在經(jīng)濟發(fā)展的促進下,大部分人也開始了自己的自駕游旅行。礙于交通不便利,且景點信息不健全等因素,自駕游的發(fā)展也受到了阻礙。針對于國內(nèi)的現(xiàn)狀,我國的自駕游并不為大多數(shù)人所接受,原因歸結于幾點:(1)游客可能沒有車或者車的油耗過高,不能接受自駕游的成本問題。(2)游客無處可自駕的狀態(tài),即游客不知哪里好玩,大家都去哪里玩的狀態(tài)。(3)大型的自駕游網(wǎng)站可能存在欺客的行為,例如某豬旅行,則存在殺熟的行為。這些極大的程度限制了游客想自駕游的期望。針對于以上原因,則誕生了我們的自駕游系統(tǒng),且集成了旅游、酒店預定、租車和線上支付等功能,且不收取手續(xù)費。解決了如上的殺熟、自駕游油耗及車、和不知去哪里玩的問題。為自駕游游客提供了方便,極大的降低了自駕游的時間成本和經(jīng)濟成本。1.2目的及意義針對于游客,自駕游服務系統(tǒng)集成了眾多的景點信息,讓全國各景點的特點一目了然,省去可游客搜集信息的煩惱,減輕了出游的壓力。與此同時,平臺提供相應的優(yōu)惠補貼,為出游的人們省去了部分的開銷。對于沒車的游客,我們提供了附近租車服務,游客針對性的搜索附近的車源,也節(jié)省了時間上的開銷。酒店在平臺上也是一應俱全,無論是大床房還是單人間,我們都有明確的分類,免去可一一查看的煩惱。而對于旅行社和旅游業(yè)的商家而言,不同于實體店鋪,它減輕資金壓力,它免去了實體店的房租,且讓租車和酒店的商家少了宣傳費,也少了經(jīng)營實體店的繁瑣過程。并且它提供了清新脫俗、友好的界面,讓用戶體驗得到提升。同時,也避免殺熟,供游客放心使用。對于商家來講,商家只需查看后臺是否有人預定酒店(或者)車即可,不用在找人宣傳。同時,網(wǎng)站會提供一些優(yōu)惠活動,使游客愛上平臺。他會促進自駕游的消費,也讓旅行社的服務得到方便。1.3國內(nèi)外研究現(xiàn)狀及應用現(xiàn)狀20世紀以后,中國旅游業(yè)迅速崛起。但我國景點少,景點擠,景點亂等情況并未得到改善。而一些山清水秀,更好玩,更值得去的景點并沒有游客去游玩,這使得旅游業(yè)發(fā)展不均,造成了有些地方人擠人,有些地方則荒無人煙的景象。我國旅游產(chǎn)業(yè)仍然基礎薄弱,管理手段滯后,信息化程度較低,企業(yè)效益較差;旅游行政管理部門的管理方式落后,缺乏信息化管理手段。面對困難和挑戰(zhàn),我國旅游業(yè)必須轉變觀念,創(chuàng)新思維,以信息化建設為突破口和新手段,整合各種資源,從而實現(xiàn)整個行業(yè)的新跨越。本文擬設計并實現(xiàn)的系統(tǒng),能夠改變旅游企業(yè)的傳統(tǒng)經(jīng)營模式,降低工作成本,加大宣傳力度,提高信息實效性;能夠滿足游客的個性化需求,提高旅游服務質(zhì)量。自駕游管理的網(wǎng)絡化,將會進一步壯大自駕游支柱產(chǎn)業(yè),提升旅游產(chǎn)業(yè)整體信息化水平,優(yōu)化產(chǎn)業(yè)結構和資源配置,完善產(chǎn)業(yè)鏈,進而帶動眾多相關產(chǎn)業(yè)發(fā)展,拉動內(nèi)需,擴大就業(yè),對經(jīng)濟發(fā)展起到積極的推動作用,從而提高整個旅游產(chǎn)業(yè)素質(zhì)。1.4本文安排第一章:即為本章,概述了自駕游的國內(nèi)外現(xiàn)狀,介紹了自駕游服務系統(tǒng)的誕生意義以及誕生的目的,也闡述可系統(tǒng)為旅行社帶來的方便;第二章:為需求分析章節(jié),主要描述了本系統(tǒng)的功能性需求和非功能性需求;第三章:為系統(tǒng)的概要設計部分,主要描述系統(tǒng)的結構和設計風格;第四章:為系統(tǒng)的詳細設計部分,主要寫了系統(tǒng)內(nèi)各個模塊的詳細設計和設計原理以及設計的意義;第五章:為編碼測試部分,主講了對系統(tǒng)內(nèi)各個模塊的測試方式方法,測試用例,還附有單元測試的源碼。第六章:為文章總結,總結了文章的書寫意義和對系統(tǒng)內(nèi)容的結論看法。第二章需求分析2.1概述這個章節(jié)擬采用軟件工程和網(wǎng)絡工程的方法,對自駕游服務系統(tǒng)實現(xiàn)線上管理,并對系統(tǒng)進行詳細的分析(數(shù)據(jù)流圖分析法)。接著再進行功能性的需求分析以及非功能性的需求分析。功能性需求分析中,采用ER圖進行數(shù)據(jù)需求的分析。系統(tǒng)的非功能性需求分析主要有以下幾方面:安全性、容錯性、維護性、可移植性、風格統(tǒng)一。2.2系統(tǒng)目標2.2.1總體目標系統(tǒng)結合自駕游的需求,采用了python的Django框架,以python為主要的開發(fā)語言、采用django內(nèi)嵌的SQLite數(shù)據(jù)庫作為后臺數(shù)據(jù)庫,結合了軟件的項目管理、數(shù)據(jù)庫的設計、系統(tǒng)的分析與設計等有關理論,完成了自駕游信息管理的系統(tǒng)分析、設計以及程序開發(fā)工作。為游客提供一個實時的信息;提高旅行社經(jīng)營管理效率,減少管理工作上的重復操作。2.2.2具體目標本系統(tǒng)前臺主要實現(xiàn)用戶注冊、用戶登錄、個人信息修改、與人聊天、查找附近的車和酒店,評論敏感信息過濾、瀏覽酒店信息、預定酒店、瀏覽、點贊、評論和發(fā)表旅游攻略和訂單查詢等功能。后臺的管理包括了酒店、車的管理、用戶信息管理、攻略的管理、個人訂單的管理以及酒店預定狀態(tài)的管理等功能。通過后臺對數(shù)據(jù)庫的控制與管理,管理員可實現(xiàn)對前臺的系統(tǒng)化管理。界面設計友好、管理方便、可用性強、可維護性高,經(jīng)過測試系統(tǒng)運行穩(wěn)定,能夠滿足系統(tǒng)工作的需要,提高工作效率。2.3功能需求系統(tǒng)需要具備五大功能:對附近的人、車和酒店進行推薦對訂單進行在線支付用戶之間進行在線聊天對攻略評價內(nèi)容進行敏感字符的過濾用戶獲取并使用優(yōu)惠券下面具體闡述以上功能的詳細信息通過百度地圖定位API,獲取用戶的精確經(jīng)緯度信息(43.452312,45.455555),以勾股定理,實現(xiàn)對用戶距離的計算,再展示附近的人和產(chǎn)品。用戶需讓管理員幫助充值余額,再用其余額進行在線抵扣以購買產(chǎn)品,余額為虛擬貨幣,不可提現(xiàn)。使用websocket技術,進行廣播式聊天,內(nèi)置各種表情,實現(xiàn)多色彩的在線聊天互動。用有向連接圖的數(shù)據(jù)結構,對敏感信息進行收集并存儲為文件,當敏感信息出現(xiàn)時,將敏感字轉換為字符*。用戶可通過主頁的輪播圖獲取相應的優(yōu)惠券,而券有類別之分,如時間,適用范圍等。用戶獲取到的可能是跑車優(yōu)惠,則所有的跑車均可使用。簡單的模塊就不一一贅述,簡要的可分為登錄、注冊、注銷、修改用戶信息、查找訂單等小的功能模塊。在此通過該用例圖(圖2-1、圖2-2),對系統(tǒng)的功能進行大體的概述,本文將詳細講解系統(tǒng)功能的詳細實現(xiàn)。圖2-1自駕游服務系統(tǒng)用例圖1圖2-2自駕游服務系統(tǒng)用例圖22.5數(shù)據(jù)需求在清楚了功能需求后,使用數(shù)據(jù)流圖來展現(xiàn)數(shù)據(jù)在系統(tǒng)中流動和處理的情況,數(shù)據(jù)流圖是一種簡單且常用的方法。圖2-3列出了在分析過程中常用的基本符號及其解釋。圖2-3數(shù)據(jù)流圖基本符號采用抽象到具體整體到局部的方式,本系統(tǒng)繪制出的三層數(shù)據(jù)流圖,如下圖2-4、圖2-5、圖2-6所示:圖2-4自駕游服務系統(tǒng)1層數(shù)據(jù)圖2-5自駕游服務系統(tǒng)2層數(shù)據(jù)流圖圖2-6自駕游服務系統(tǒng)3層數(shù)據(jù)流圖在對系統(tǒng)功能進行了需求的詳細分析之后,明確了要處理的數(shù)據(jù),分別為用戶、管理員、酒店、租車、攻略、廣告、點贊、評論等,每個數(shù)據(jù)都有相對應的屬性,數(shù)據(jù)與對應屬性如表2-1所示。表2-1數(shù)據(jù)屬性表數(shù)據(jù)屬性用戶用戶名、郵箱、密碼、余額、性別、年齡、經(jīng)緯度、頭像、是否在線管理員用戶名、密碼酒店酒店名、房間型號、價格、描述、是否被預定車車名、車型號、價格、描述、是否被預定攻略發(fā)布人、圖片、發(fā)表時間、描述廣告圖片,鏈接,標題點贊點贊人,攻略,時間評論評論人,攻略,時間粉絲被follow的人、follower車的訂單時間、是否被支付、車、預定人酒店的訂單時間、是否被支付、酒店、預定人聊天內(nèi)容發(fā)送方、接收方、時間、內(nèi)容在清楚了數(shù)據(jù)與數(shù)據(jù)之間的關系、數(shù)據(jù)與屬性之間的關系后,采用E-R圖來表示,在E-R圖中的實體為用戶、管理員、酒店、車、攻略、廣告、訂單、聊天內(nèi)容等,系統(tǒng)的E-R圖如圖2-7所示:圖2-7自駕游服務系統(tǒng)E-R圖2.6非功能性需求對于一個完備且優(yōu)秀的大電商系統(tǒng)而言,性能需求分析超級重要,性能需求都包括系統(tǒng)界面風格統(tǒng)一、安全性高可靠性強、系統(tǒng)的可操作性強、系統(tǒng)兼容性好、系統(tǒng)的可維護性高。具體要求如下:系統(tǒng)界面風格統(tǒng)一:系統(tǒng)配色美觀,按鈕位置有規(guī)律等。系統(tǒng)的安全性與可靠性:csrf的配置要和數(shù)據(jù)統(tǒng)一,以防跨站偽造數(shù)據(jù)。系統(tǒng)的可操作性:系統(tǒng)上手簡單,做到每個人都會使用。系統(tǒng)的兼容性:適用于各主流系統(tǒng)以及各主流瀏覽器。系統(tǒng)的可維護性:API接口規(guī)范統(tǒng)一以及代碼書寫規(guī)范統(tǒng)一。2.7環(huán)境需求電腦環(huán)境要求:2.1GHz以上處理器、16G內(nèi)存及以上軟件環(huán)境要求:本系統(tǒng)是在macOS平臺下開發(fā)的,采用的語言是python2.7,數(shù)據(jù)庫為Django-SQLite,服務器為Django分辨率:2560*1600語言種類:簡體中文2.8將來可能提出的需求隨著系統(tǒng)規(guī)模的增大,用戶急劇增多,將會有如下可能提出的需求:對拼團活動的產(chǎn)品上架,系統(tǒng)的速度需要大幅度提高。當用戶大并發(fā)聊天時,系統(tǒng)的處理速度。當網(wǎng)絡狀況不佳情況下,靜態(tài)網(wǎng)頁的數(shù)目應該增加。第三章系統(tǒng)概要設計3.1概述本章圍繞著Django模型和它的請求原理和收到請求時它的內(nèi)部處理過程展開深入研究。對于常規(guī)Web框架,它的請求過程無非MVC模型,而對于Django而言,MTV才是他真正的面目結構。到底MVC和MTV有什么關系,又有什么不同?為何Django不使用MVC模型?當Django收到外部的請求時,它的內(nèi)部究竟做了什么?請帶著疑問往下看。3.2系統(tǒng)遵循的原則及方法自駕游服務以B/S的結構進行設計,B/S設計結構模式的好處在于用戶不必下載客戶端,只要在瀏覽器輸入正確的網(wǎng)址即可訪問,也節(jié)省了設備的空間。此系統(tǒng)采用python的DjangoWeb框架。Django以極速架站著稱,Django還自帶管理后臺,節(jié)省了開發(fā)的時間,提升開發(fā)速率。Django框架里,雖然極速是他的的第一特性,但是響應速度一點也不遜色與大型的web框架,他的響應時間非??欤灾劣诳梢院雎皂憫獣r間。在并發(fā)上,可能是他的弱點,但是我們可以在算法上作出響應的優(yōu)化,以提升并發(fā)訪問時的效率。Django框架主要以MTV模式進行開發(fā),下面帶大家主要了解下MTV模式。顧名思義,MTV中的M為model,即為持久化層,他負責存儲數(shù)據(jù),為頁面中的數(shù)據(jù)進行渲染,“T”即為template(模版),即為顯示頁面的html代碼,每一個頁面的html均可繼承而來,不必為每頁都寫上重復而又冗余的代碼。“V”就是views,他就是服務器的控制器,負責為每個請求的URL做一些跳轉、渲染、展示等動作。至于MTV的工作和響應流程,正是我們下一節(jié)的主要內(nèi)容。3.3結構設計在MTV模式中:模型:與MVC模式中的模型解釋一樣,它也與數(shù)據(jù)之間的接口或關系具有相同的位置,并且包含與數(shù)據(jù)訪問和驗證相關的所有內(nèi)容。模板:這與MVC模式中的視圖相關,因為它是一個表示層,處理框架中的表示邏輯,基本上控制應該顯示什么以及應該如何顯示給用戶。視圖:這部分與MVC模式中的控制器相關,并處理所有業(yè)務邏輯,這些業(yè)務邏輯將被拋出到各自的模板中。它充當模型和模板之間的橋梁。Django建議視圖應該包括業(yè)務邏輯,而不是像標準MVC模式和模板中那樣單獨處理所有表示邏輯,而MVC模式不包括模板co,這是所有這些內(nèi)容中最令人困惑的部分。完全是組件。因此,與標準MVC模式相比,Django的設計也被稱為模型模板視圖+控制器,控制器經(jīng)常被忽略,因為它已經(jīng)是框架的一部分。如圖3-1所示系統(tǒng)架構圖如圖3-1所示。圖3-1系統(tǒng)總體架構圖3.4系統(tǒng)功能模塊圖系統(tǒng)主要分為5大塊功能模塊,分別是用戶信息模塊,負責用戶信息的存儲,用戶等級和權限的劃分。租車車源信息模塊主要負責車源信息的發(fā)布,刪除和對車輛信息的修改等操作。酒店信息模塊負責酒店信息的發(fā)布、刪除、修改和查看的操作,旅游攻略信息模塊主要負責對攻略信息的發(fā)表、刪除、修改和查看的操作,優(yōu)惠券信息模塊主要對優(yōu)惠券信息的增加、修改、刪除和查看的操作。圖3-2自駕游服務系統(tǒng)功能模塊圖3.5總體對象設計對于本系統(tǒng)總體看來對象有用戶、攻略、車源、酒店、評論內(nèi)容、粉絲、登錄界面、主頁界面、車源界面、酒店界面、查看攻略界面等。這幾類它們的關系圖如下圖3-3所示。圖3-3系統(tǒng)類圖3.6功能模塊設計本系統(tǒng)總共有四大模塊,分別是用戶信息模塊、租車車源信息模塊、酒店信息模塊、旅游攻略信息模塊和優(yōu)惠券信息模塊。下面將詳細介紹每個功能的內(nèi)容。用戶信息模塊用來存儲用戶的基本信息并且在需要時對信息進行對應的基本操作。對用戶信息的管理也是系統(tǒng)的基本操作。他可以提供如下功能:查看用戶的信息。這在用戶進行系統(tǒng)登錄時是必要的環(huán)節(jié)。(2)增加用戶的信息。這在用戶注冊時必不可少。(3)修改用戶的信息。用戶可以在這個基礎上進行頭像、密碼的更改。下圖3-4為用戶信息模塊的活動圖圖3-4用戶信息模塊活動圖租車車源信息模塊是對車源信息管理的模塊。他為系統(tǒng)提供了如下功能:增加車源信息。當新發(fā)布車源信息時調(diào)用。刪除車源信息。車源下架時調(diào)用。修改車源信息。車源降價時調(diào)用。查看車源信息。用戶瀏覽車源信息時調(diào)用。下圖3-5為租車車源信息模塊的活動圖圖3-5租車車源信息模塊活動圖酒店信息模塊是對酒店信息管理的模塊。他為系統(tǒng)提供了如下功能:(1)增加酒店信息。當新發(fā)布酒店信息時調(diào)用。(2)刪除酒店信息。酒店下架時調(diào)用。(3)修改酒店信息。酒店降價時調(diào)用。下圖3-6為酒店信息模塊的活動圖圖3-6酒店信息模塊活動圖查看車源信息。用戶瀏覽車源信息時調(diào)用。最后,優(yōu)惠券信息模塊對系統(tǒng)內(nèi)的所有優(yōu)惠券進行管理,包括優(yōu)惠券的發(fā)布系統(tǒng)內(nèi)優(yōu)惠券的數(shù)目的增加減少下圖3-7為優(yōu)惠券信息模塊的活動圖圖3-7優(yōu)惠券信息模塊活動圖3.7數(shù)據(jù)庫設計根據(jù)上述自駕游服務的E-R圖和系統(tǒng)的數(shù)據(jù)需求,完成了數(shù)據(jù)庫關系模式的設計,具體描述如下:用戶關系模式(賬戶名、郵箱、密碼、余額、性別、年齡、經(jīng)緯度、是否在線)管理員關系模式(賬戶名、密碼)酒店關系模式(酒店名、價格、圖片、描述、是否被預定)車輛關系模式(車名、價格、圖片、描述、是否被預定)攻略關系模式(發(fā)布人、圖片、睡覺、描述)廣告關系模式(標題、鏈接、圖片)點贊關系模式(點贊人、點贊的攻略、點贊時間)評論關系模式(評論人、評論的攻略、評論時間)粉絲關系模式(follower、followed)車訂單關系模式(是否支付、預定人、預定的車輛、時間)酒店訂單關系模式(是否支付、預定人、預定的房間、時間)聊天關系模式(發(fā)送方、接收、時間、內(nèi)容)下面給出關系數(shù)據(jù)庫的設計結果:(1)用戶基本信息表,該表存儲了用戶信息的相關數(shù)據(jù),包括賬戶名、郵箱、密碼、余額、性別、年齡等,結構如表3-1所示。表3-1用戶基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明usernamechar是否郵箱,unique=Truepasswordchar是否密碼moneyint是否余額,default=0emailchar是否郵箱sexchar是否性別ageint是否年齡longitudefloat否否經(jīng)度latitudefolate否否緯度imagechar是否頭像isactivitybool是否是否在線(2)酒店基本信息表,該表存儲了酒店的相關數(shù)據(jù),包括酒店名、價格、圖片、描述、是否被預定等,結構如表3-2所示。表3-2酒店基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明priceint是否價格namechar是否名稱issuedbool是否是否被預定descchar是否描述imagechar是否圖片(3)車輛基本信息表,該表存儲了車輛的相關數(shù)據(jù),包括車名、價格、圖片、描述、是否被預定,結構如表3-3所示。表3-3車輛基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明priceint是否價格namechar是否名稱issuedbool是否是否被預定descchar是否描述priceint是否價格(4)管理員基本信息表,該表存儲了管理員的相關數(shù)據(jù),包括用戶名、密碼,結構如表3-4所示。表3-4管理員基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明usernamechar是否用戶名passwordchar是否密碼(5)攻略基本信息表,該表存儲了攻略的相關數(shù)據(jù),包括標題、內(nèi)容、發(fā)布人、時間等,結構如表3-5所示。表3-5攻略基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明titlechar是否標題contentchar是否內(nèi)容owneruser是否發(fā)布人timedata是否時間廣告基本信息表,該表存儲了廣告的相關數(shù)據(jù),包括圖片、標題、鏈接等,結構如表3-6所示。表3-6廣告基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明imagechar是否圖片titlechar是否標題urlchar是否鏈接(7)點贊信息表,該表存儲了點贊的相關數(shù)據(jù),包括點贊人、點贊的攻略、點贊時間,結構如表3-7所示。表3-7點贊基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明likeruser是否用戶基本信息表的外鍵likedblog是否攻略基本信息表的外鍵timedata是否時間(8)評論信息表,該表存儲了評論的相關數(shù)據(jù),包括評論人、評論的攻略、評論時間,結構如表3-8所示。.表3-8評論基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明commenteruser是否用戶基本信息表的外鍵commentedblog是否攻略基本信息表的外鍵timedata是否時間contentchar是否內(nèi)容(9)粉絲信息表,該表存儲了粉絲的相關數(shù)據(jù),包括follower、followed,結構如表3-9所示。表3-9粉絲基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明followeruser是否用戶基本信息表的外鍵followeduser是否用戶基本信息表的外鍵(10)車訂單信息表,該表存儲了車訂單的相關數(shù)據(jù),包括是否支付、預定人、預定的車輛、時間,結構如表3-9所示。表3-9車訂單基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明priceint是否價格timedata是否時間ispaybool是否是否支付owneruser是否用戶基本信息表的外鍵carcar是否車基本信息表的外鍵(11)酒店訂單信息表,該表存儲了酒店訂單的相關數(shù)據(jù)包括是否支付、預定人、預定的房間、時間,結構如表3-10所示。表3-10酒店訂單基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明priceint是否價格timedata是否時間ispaybool是否是否支付owneruser是否用戶基本信息表的外鍵roomroom是否酒店基本信息表的外鍵(12)聊天信息表,該表存儲了聊天信息的相關數(shù)據(jù)包括發(fā)送方、接收、時間、內(nèi)容,結構如表3-11所示。表3-11聊天基本信息表字段名稱數(shù)據(jù)類型必填字段是否為空說明chateruser是否用戶基本信息表的外鍵timedata是否時間chateduser是否用戶基本信息表的外鍵contentchar是否聊天內(nèi)容第四章系統(tǒng)的詳細設計及實現(xiàn)4.1系統(tǒng)的復雜問題與設計針對系統(tǒng)具體內(nèi)容的實現(xiàn),出現(xiàn)了一些在實現(xiàn)上較為復雜的模塊,具體模塊如下:預定車輛模塊:租車模塊主要是展示所有車源展示給用戶,用戶可以根據(jù)價格,使用范圍和距離該車源的距離等幾個維度對車源信息進行篩選。用戶可點擊車源查看該車源的詳細信息,譬如價格、店鋪、租車聲明等。商家也會在后臺對車源信息進行發(fā)布、修改和查看刪除。用戶可以在線進行對車源的支付,支付中,如若用戶事先領取了該車可用的優(yōu)惠券,用戶即可以等價現(xiàn)金的方式使用該抵用券(或選擇不實用代金券)。如果已經(jīng)有其他用戶對該車完成了支付,那么當用戶點擊支付時,系統(tǒng)提示該車源已經(jīng)被預定的提示,如果余額不足,則提示余額不足的提醒。該模塊為復雜模塊,在支付過程中,要判斷用戶是否有可用優(yōu)惠券,(判斷券的類型,使用范圍和使用截止日期等)。再以HttpResponse的形式渲染給html。html再做展示,顯示可以用的券,并再讓用戶做進一步的選擇。同時,附近的車也需要結合用戶的經(jīng)緯度和車行的經(jīng)緯度進行勾股定理的計算,在服務器請求并發(fā)大的情況下,很難做到即使響應,而我以ajax異步請求的形式,對response的content進行await,再對距離進行計算和展示。關鍵代碼如下:try:r=room.objects.get(id=id)ifr.be_used:returnHttpResponse("using")username=SearchObject.CheakOnlineStatus(request)u=user.objects.get(username__exact=username)b=bookroom(room=r,booker=u,is_pay=True)u.money-=r.pricer.be_used=ureturnHttpResponse("ok")exceptExceptionase:returnHttpResponse("error")r.save()u.save()b.save()圖4-1車輛預定截圖圖4-1車輛預定截圖圖4-2車輛確認預定截圖領取&使用優(yōu)惠券模塊:用戶可在系統(tǒng)web界面的輪播圖中點擊獲取優(yōu)惠券(前提是用戶并未獲取過優(yōu)惠、還有剩余優(yōu)惠券且用戶處于以登錄狀態(tài)下)。商家在后臺對優(yōu)惠券信息進行發(fā)布、修改、刪除和查看。優(yōu)惠券的面值,使用范圍和使用日期為后臺管理員以及優(yōu)惠券的數(shù)量所設置,用戶領取的券可以在租車模塊中使用,當用戶租的車的類型為券可抵用范圍內(nèi),用戶可以選定該券進行抵用。該模塊也是負責模塊。券的使用,需要結合上一個頁面提交的car_type進行比對,再以car_id檢索到具體的car,car的金額還要滿足券的要求,使用券過程中,還要和當前日期進行比較,來看是否券以及過期。邏輯上的判斷和for循環(huán)對模塊有重大的意義。關鍵代碼如下defgetticketmessage(request,id):try:t=AdjectiveTicket.objects.get(id=int(id))returnHttpResponse(t.noun+"/"+str(t.rest)+"/"+t.title+"/"+t.desc+"/"+str(t.fromTime)[:19]+"/"+str(t.toTime)[:19]+"/"+str(t.money)+"/"+str(t.id))except:returnHttpResponse("error")defgetticket(request,tid):try:username=SearchObject.CheakOnlineStatus(request)u=user.objects.get(username__exact=username)except:returnHttpResponse("logout")try:t=AdjectiveTicket.objects.get(id=tid)tmp=int(t.rest)except:tmp=0returnHttpResponse("error")iftmp==0:returnHttpResponse("ticketnull")s=ticket.objects.filter(tickets=t,owner=u)ifs:returnHttpResponse("ticketexist")else:ticket(owner=u,tickets=t).save()returnHttpResponse("ok")圖4-3優(yōu)惠券截圖發(fā)送到圖4-4優(yōu)惠券領取成功截圖圖4-3優(yōu)惠券截圖評論攻略中的敏感信息過濾模塊:用戶可以對他人發(fā)布的旅行攻略進行評論,但為優(yōu)化客戶體驗,我們對所禁止的敏感信息進行收集,并對敏感的字符轉化為“*”。該模塊為具有復雜度的模塊。首先我們需要建立敏感字符集,再以代碼的方式對字符集進行轉化,將其轉化為有向連接圖,再對用戶所提交的話的每兩個字符進行比對,如果這兩個字符在連接圖中是一條路徑,那么兩個字符向右移,知道路徑不通為止,此時,最后一次右移之前的串即為敏感信息串,將其標記再進行下次的敏感字查找。當所有的查找完畢,再將標記的敏感字變?yōu)椤?”。關鍵代碼如下:classGraph(object):def__init__(self,source):f=File(source)self.graph=f.getter()defconv(self,word):res=[]print(word)foriinrange(len(word)):ifword[i]inself.graph.keys()andi<=len(word)-2:ifword[i+1]inself.graph[word[i]]:res.append(i)elifword[i]notinself.graph.keys()andword[i-1]inself.graph.keys()andword[i]inself.graph[word[i-1]]:res.append(i)foriinres:word=word[:i]+"*"+word[i+1:]returnword圖4-5敏感信息過濾后截圖圖4-6敏感信息過濾之前截圖聊天模塊:根據(jù)系統(tǒng)需求,用戶可能需要自行組團出游,于是出現(xiàn)了聊天模塊。此模塊為復雜模塊。用戶可以選擇聊天的對象,聊天中,可以發(fā)送表情和文字。若聊天的對象未上線,可以當他/她上線時查閱消息,若對方在線,如果他未在查看消息界面,則系統(tǒng)將提示某人給你發(fā)了一段話,否則會直接收到消息而沒有提示。該模塊主要以websocket庫為核心。用戶打開web頁面即開始使用websocket對象,websocket為單例模式所產(chǎn)生,即所有人通用一個websocket。主動聊天方以socket形式發(fā)送廣播,再以redis技術存入緩存,且將聊天內(nèi)容存入數(shù)據(jù)庫中。內(nèi)容為{“receive”:”receiverId”,”Content”:”聊天內(nèi)容”,time:”聊天時間”},所有用戶均需收到消息并且解析消息,拿到receiverId再和登錄賬戶的ID比對,如果消息是發(fā)給自己的,則展示,否則忽略該消息。當用戶聊天中斷后,再次登錄或打開聊天會話框時,消息不會消失,因為數(shù)據(jù)庫會再次打開并把之前的聊天內(nèi)容進行展示關鍵代碼如下:fromasgiref.syncimportasync_to_syncfromchannels.generic.websocketimportWebsocketConsumerimportjsonclassChatConsumer(WebsocketConsumer):defconnect(self):self.room_name=self.scope['url_route']['kwargs']['username']self.room_group_name='chatter_%s'%self.room_name#Joinroomgroupasync_to_sync(self.channel_layer.group_add)(self.room_group_name,self.channel_name)self.accept()print("connected")defdisconnect(self,close_code):#Leaveroomgroupasync_to_sync(self.channel_layer.group_discard)(self.room_group_name,self.channel_name)#ReceivemessagefromWebSocketdefreceive(self,text_data):text_data_json=json.loads(text_data)fro=text_data_json['from']to=text_data_json['to']message=text_data_json['message']#Sendmessagetoroomgroupasync_to_sync(self.channel_layer.group_send)(self.room_group_name,{'type':'chat_message','message':message,'from':fro,'to':to,})#Receivemessagefromroomgroupdefchat_message(self,event):message=event['message']fro=event['from']to=event['to']#SendmessagetoWebSocketself.send(text_data=json.dumps({'message':message,'from':fro,'to':to,}))圖4-7用戶發(fā)送聊天截圖圖4-8用戶發(fā)送聊天截圖4.2系統(tǒng)界面的設計與實現(xiàn)系統(tǒng)主要分為9個頁面,分別為系統(tǒng)的首頁,登錄頁,注冊頁,發(fā)布攻略頁,查看所有租車車源頁,查看酒店頁,查看攻略頁和查看訂單頁以及聊天頁。每個頁面都繼承base.html頁面。系統(tǒng)中用到的javascript和css布局均在alljs.js文件和style.css文件中。其中,購買汽車,為汽車付款等小功能都以js彈出框形式給出,用戶獲取優(yōu)惠劵也是在頁面彈出的,而并非單獨的html文件。除此之外,base.html也調(diào)用了所有頁面都會用到的JavaScript,這樣保證了其他頁面在繼承base時不需要重復調(diào)用。下面將分別說明主要功能模塊的設計:(1)查看歷史訂單模塊:購買產(chǎn)品后,用戶可能想要查閱自己曾經(jīng)購買了什么,如何購買的以及購買時間等信息。應對此場景,歷史訂單模塊滿足了如上需求。用戶可以在歷史訂單中檢索商品,可以查看商品的購買時間,消費金額和商品名稱等。此為小模塊,用戶對商品檢索功能只是關鍵字搜索,并非模糊搜索,用戶登錄后,controller自動檢索用戶所有的消費記錄,并以時間為條件排序完畢,再以HttpResponse的形式傳給js,js的函數(shù)拿到請求的data后對其整理,生成了對應的歷史訂單。關鍵代碼如下:bookings1=bookroom.objects.filter(booker=u)bookings2=bookcar.objects.filter(booker=u)bookings=""foriinbookings1:bookings+=(+","+str(i.time)[:19]+","+str(i.room.price)+",")foriinbookings2:bookings+=(+","+str(i.time)[:19]+","+str(i.car.price)+",")圖4-9查看訂單截圖圖4-10檢索訂單截圖對用戶定位的模塊:系統(tǒng)當用戶查看所有的車源的時候,JS中百度定位的API將自動reload一個獲取定位的函數(shù)(repos),這個函數(shù)將更新User(用戶表)的經(jīng)緯度字段(lo,la),再根據(jù)車商的經(jīng)緯度,以勾股定理的形式計算出二者間的直線距離,js中的過濾模塊再按照二者間的距離進行顯示。用戶注冊模塊:當注冊用戶點開注冊界面時,屏幕的焦點會在username上,onblur函數(shù)觸發(fā)時,會自動觸發(fā)isusernameexist函數(shù),判斷username是否可用(因為username為unique=True字段)。然后在進行email的判斷,同理,若email已經(jīng)注冊過,也會有alert的提示,并重新停留焦點在email上,獲取驗證碼后,會根據(jù)email,發(fā)送相應的四位數(shù)隨機驗證碼。發(fā)送驗證碼后,系統(tǒng)將存儲驗證碼為request中的session,當用戶提交驗證碼后,該session再和驗證碼的code進行比對,最終完成注冊功能。如下圖片為程序運行的截圖。圖4-11用戶注冊界面圖4-11用戶接收到驗證碼界面第五章編碼與測試5.1系統(tǒng)測試概述為確保自駕游服務可以穩(wěn)定運行,在發(fā)布之前非常有必要進行一次系統(tǒng)的測試。本論文主要對系統(tǒng)進行了黑盒測試與白盒測試。黑盒測試不考慮系統(tǒng)的內(nèi)部結構,主要通過使用系統(tǒng),來驗證是否滿足了詳細設計當中的各項功能。本次測試主要使用了UI測試、邊界值測試、兼容性測試、易用性測試等。白盒測試要考慮系統(tǒng)的內(nèi)部邏輯結構,通過編寫python腳本,調(diào)用requests模塊對系統(tǒng)的邏輯路徑進行測試。5.2測試的方法、計劃測試在軟件的生命周期中有著不可或缺的位置,一個小bug可以導致系統(tǒng)崩潰,也可以導致用戶財產(chǎn)受到損失,所以進行充分的測試是十分必要的。本次測試主要進行了黑盒測試與白盒測試,在進行黑盒測試時,主要采用了功能測試、UI測試、兼容性測試、易用性測試等方法。下面分別說明這些方法的測試重點:功能測試:判斷系統(tǒng)是否實現(xiàn)了需求分析中的功能;UI測試:判斷點擊鏈接是否會跳轉到正確的頁面;按鈕功能是否正常;兼容性測試:判斷自駕游服務在不同使用環(huán)境下是否能正常運行;易用性測試:系統(tǒng)提示清晰,使用簡單,容易上手;白盒測試:使用python腳本遍歷所有路徑,查看是否有功能測試未發(fā)現(xiàn)的bug。進行本次測試環(huán)境為macOS系統(tǒng),瀏覽器主要使用谷歌瀏覽器。本次系統(tǒng)測試,通過的條件為:執(zhí)行所有的測試用例;發(fā)現(xiàn)的bug修改完成,并且沒有引發(fā)新的bug;系統(tǒng)不存在嚴重bug;細小功能bug修復率在50%以上。5.3測試的數(shù)據(jù)、結論表5-1登錄模塊測試用例用例編號1.1.1所測模塊登錄模塊用例名稱測試是否能正常登錄測試步驟訪問自駕游服務展開左側導航欄,點擊登錄輸入正確的用戶名以及對應的密碼點擊登錄按鈕預期結果登錄成功,展開左側導航欄后顯示用戶名實際結果登錄成功,展開左側導航欄后顯示用戶名優(yōu)先級高表5-2登錄模塊測試用例用例編號1.1.2所測模塊登錄模塊用例名稱不存在的用戶名或錯誤的密碼測試步驟1.訪問自駕游服務2.展開左側導航欄,點擊登錄3.輸入不存在的用戶名或錯誤的密碼4.點擊登錄按鈕預期結果登錄失敗,重新彈出登錄框,且登錄信息清空實際結果登錄失敗,重新彈出登錄框,且登錄信息清空優(yōu)先級中表5-3登錄模塊測試用例用例編號1.1.3所測模塊登錄模塊用例名稱取消登錄測試步驟1.訪問自駕游服務點擊登錄3.點擊右下方取消按鈕,或右上角的X預期結果登錄失敗,登錄框關閉實際結果登錄失敗,登錄框關閉優(yōu)先級中表5-4登錄模塊測試用例用例編號1.1.4所測模塊登錄模塊用例名稱測試登錄頁面注冊鏈接跳轉情況測試步驟1.訪問自駕游服務2.展開左側導航欄,點擊登錄3.點擊“還沒有賬號?快去注冊!”預期結果跳轉到注冊頁面實際結果跳轉到注冊頁面優(yōu)先級中表5-5注冊模塊測試用例用例編號1.2.1所測模塊注冊模塊用例名稱密碼小于6位測試步驟1.訪問自駕游服務2.展開左側導航欄,點擊登錄3.點擊“還沒有賬號?快去注冊!”4.在用戶名后輸入1235.在密碼后輸入小于6位的密碼,例如12345預期結果無法通過點擊或Tab進行下一內(nèi)容的輸入實際結果無法通過點擊或Tab進行下一內(nèi)容的輸入優(yōu)先級高表5-6注冊模塊測試用例用例編號1.2.2所測模塊注冊模塊用例名稱密碼與確認密碼不一致測試步驟進入注冊頁面輸入密碼123456輸入確認密碼654321預期結果注冊框上方黃色部分提示:兩次密碼輸入不同!實際結果注冊框上方黃色部分提示:兩次密碼輸入不同!優(yōu)先級高表5-7注冊模塊測試用例用例編號1.2.3所測模塊注冊模塊用例名稱使用已注冊過的郵箱注冊賬號測試步驟進入注冊頁面輸入已注冊過的郵箱,如1804842134@預期結果注冊框上方黃色部分提示:郵箱已經(jīng)被注冊!實際結果注冊框上方黃色部分提示:郵箱已經(jīng)被注冊!優(yōu)先級高表5-8帖子模塊測試用例用例編號1.3.1所測模塊我的帖子用例名稱未登錄查看左側導航欄我的帖子測試步驟訪問自駕游服務,不進行登錄點擊左側導航欄中“我的帖子”預期結果彈出登錄框實際結果彈出登錄框優(yōu)先級中表5-9帖子模塊測試用例用例編號1.3.2所測模塊我的帖子用例名稱已登錄狀態(tài)查看左側導航欄我的帖子測試步驟訪問自駕游服務,并進行登錄點擊左側導航欄中“我的帖子”預期結果下拉框展示我發(fā)表過的帖子名稱,以及收到的點贊數(shù)實際結果下拉框展示我發(fā)表過的帖子名稱,以及收到的點贊數(shù)優(yōu)先級中表5-10錢包模塊測試用例用例編號1.4.1所測模塊我的錢包用例名稱查看余額測試步驟1.訪問自駕游服務,并進行登錄2.點擊左側導航欄中“我的錢包”3.點擊下方“我的余額”預期結果出現(xiàn)提示框,正確輸入密碼后顯示余額實際結果出現(xiàn)提示框,正確輸入密碼后顯示余額優(yōu)先級中表5-11錢包模塊測試用例用例編號1.4.2所測模塊我的錢包用例名稱查看歷史訂單測試步驟1.訪問自駕游服務,并進行登錄2.點擊左側導航欄中“我的錢包”3.點擊下方“歷史訂單”預期結果彈出框展示租車訂單和酒店訂單,展示物品名稱,訂單日期時間,用戶名,價格實際結果彈出框展示租車訂單和酒店訂單,展示物品名稱,訂單日期時間,用戶名,價格優(yōu)先級中表5-12錢包模塊測試用例用例編號1.4.3所測模塊我的錢包用例名稱搜索訂單測試步驟1.訪問自駕游服務,并進行登錄2.點擊左側導航欄中“我的錢包”3.點擊下方“歷史訂單”4.在左上角搜索框輸入物品名稱5.點擊查詢按鈕預期結果展示符合輸入條件的訂單信息實際結果展示符合輸入條件的訂單信息優(yōu)先級中表5-13錢包模塊測試用例用例編號1.4.4所測模塊我的錢包用例名稱關閉歷史訂單測試步驟1.訪問自駕游服務,并進行登錄2.點擊左側導航欄中“我的錢包”3.點擊下方“歷史訂單”4.點擊下方“關閉”按鈕預期結果歷史訂單框關閉實際結果歷史訂單框關閉優(yōu)先級高表5-14租車模塊測試用例用例編號1.5.1所測模塊租車模塊用例名稱預定已經(jīng)被預定的車測試步驟訪問自駕游服務,并進行登錄查看租車商城的車輛信息點擊預定點擊確認預定預期結果系統(tǒng)提示:已經(jīng)被預定了??!實際結果系統(tǒng)提示:已經(jīng)被預定了??!優(yōu)先級高表5-15租車模塊測試用例用例編號1.5.2所測模塊租車模塊用例名稱余額充足預定未被預定的車測試步驟1.訪問自駕游服務,并進行登錄2.查看租車商城的車輛信息3.點擊預定4.點擊確認預定預期結果系統(tǒng)提示:支付成功?。。粴v史訂單增加一條租車訂單記錄實際結果系統(tǒng)提示:支付成功?。?;歷史訂單增加一條租車訂單記錄優(yōu)先級高表5-16租車模塊測試用例用例編號1.5.3所測模塊租車模塊用例名稱余額不足預定未被預定的車測試步驟1.訪問自駕游服務,并進行登錄2.查看租車商城的車輛信息3.點擊預定4.點擊確認預定預期結果系統(tǒng)提示:余額步足!??!請充值!??!實際結果系統(tǒng)提示:余額步足!?。≌埑渲担。?!優(yōu)先級高表5-17租車模塊測試用例用例編號1.5.4所測模塊租車模塊用例名稱首次領取優(yōu)惠券測試步驟訪問自駕游服務,并進行登錄滑動首頁廣告輪播圖在優(yōu)惠券處點擊立即領取按鈕預期結果領取成功,系統(tǒng)提示:領取成功?。?!實際結果領取成功,系統(tǒng)提示:領取成功?。?!優(yōu)先級中表5-18租車模塊測試用例用例編號1.5.5所測模塊租車模塊用例名稱重復領取優(yōu)惠卷測試步驟1.訪問自駕游服務,并進行登錄2.滑動首頁廣告輪播圖3.在優(yōu)惠券處點擊立即領取按鈕預期結果領取失敗,系統(tǒng)提示:您已經(jīng)領取過了~不要太貪心哦~~實際結果領取失敗,系統(tǒng)提示:您已經(jīng)領取過了~不要太貪心哦~~優(yōu)先級中白盒測試部分代碼如下:importrequestsclassTestCase():'''args=(status,data)'''def__init__(self,name,url,method,*args,**kwargs):self.args=args=nameurl=":8000/"+urlifmethod=="GET":self.request=requests.get(url)else:self.request=requests.post(url,kwargs)self.content=str(self.request.content,encoding="utf8")print(len(args[1][:-1]))foriinargs[1]:print(i)ifstr(self.request.status_code)==str(args[0])andstr(self.content)instr(args[1]):self.Tpass="Pass"else:self.Tpass="UnPass"defWrite(self,path="result.txt"):self.reques
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年銀團貸款協(xié)議
- 2025年度補充協(xié)議范本:簽約次數(shù)限定與實施標準6篇
- 2024年食品包裝材料供貨合同
- 2024年碎石加工與石材深加工融合合同范本3篇
- 2024移動支付技術服務與許可合同
- 2024轄區(qū)物業(yè)滅鼠與公共設施保養(yǎng)服務合同3篇
- 2025年度跨境電商代理招聘合作協(xié)議2篇
- 2024預制混凝土構件產(chǎn)業(yè)鏈上下游企業(yè)合作協(xié)議范本3篇
- 南開大學時間序列分析往年期末試題考題
- 2025年度社區(qū)食堂經(jīng)營權租賃合同3篇
- 痛風課件教學
- 2024公共數(shù)據(jù)授權運營實施方案
- 學校食堂從業(yè)人員培訓制度
- 腦疝觀察及護理
- 【學易金卷】2023-2024學年四年級數(shù)學上冊期末全真模擬提高卷(三)(答題卡)(北師大版)
- 部編 2024版歷史七年級上冊期末(全冊)復習卷(后附答案及解析)
- 四川省成都市2024年初中學業(yè)水平考試生物學試卷
- 山東省濟南市歷城區(qū)歷城第二中學2025屆高一數(shù)學第一學期期末監(jiān)測模擬試題含解析
- 供應鏈安全培訓教材課件
- 《籃球移動技術 行進間傳球》教案(共三篇)
- 第三章第四節(jié):“三新”背景下沉淀轉化實驗的一體化微型裝置及其拓展應用 教學設計 2024-2025學年高二上學期化學人教版(2019)選擇性必修1
評論
0/150
提交評論