




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
緒論研究意義隨著計算機(jī)信息管理技術(shù)的逐步普及,信息交流的便捷已被越來越多的人們所利用。本課題就現(xiàn)如今市場的分析,越來越多的用戶喜歡養(yǎng)寵物:比如,當(dāng)我們現(xiàn)在在傍晚時分漫步街頭時,隨處可見的遛貓、狗現(xiàn)象,理所當(dāng)然我們所知道的一樣,這成為了絕大多數(shù)老年人健身的一大主流趨勢,顯而易見的是,寵物也成為了老年人解決單人寂寞的很好的伴侶。而本課題的寵物貓店管理系統(tǒng)就是一個由人和計算機(jī)等組成的能夠提供信息以支持一個或多個寵物的作業(yè)、管理、配種和交易功能的系統(tǒng)。寵物貓店管理系統(tǒng)作為客戶與寵物之間可以進(jìn)行更便捷的服務(wù)的一種方法和模式,正在得到越來越廣泛的應(yīng)用。寵物貓店管理系統(tǒng)可以很好的解決養(yǎng)寵人士的后續(xù)問題,為他們的后顧之憂提供了高效的處理平臺。使用計算機(jī)對寵物貓店進(jìn)行管理,具有手工管理所無法比擬的優(yōu)點。例如:檢索迅速。查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高寵物貓店管理的效率,也是創(chuàng)業(yè)者或經(jīng)營者的科學(xué)化、正規(guī)化管理及與世界接軌的重要條件。研究方法寵物貓店管理系統(tǒng)是信息行業(yè)業(yè)務(wù)流程過程中十分重要且必備的環(huán)節(jié)之一,在信息行業(yè)業(yè)務(wù)流程當(dāng)中起著承上啟下的作用,其重要性不言而喻。但是,目前許多信息行業(yè)在具體的業(yè)務(wù)流程處理過程中仍然使用手工操作的方式來實施,不僅費時、費力,效率低下,而且無法達(dá)到理想的效果。針對上述問題,采用軟件工程的開發(fā)原理,依據(jù)軟件流程過程規(guī)范,按照需求分析、概要設(shè)計、詳細(xì)設(shè)計、程序編碼、測試、軟件應(yīng)用、軟件維護(hù)等過程開發(fā)了一個寵物貓店管理系統(tǒng)。采用Java作為開發(fā)工具,結(jié)合Mysql數(shù)據(jù)庫,數(shù)據(jù)庫設(shè)計遵循3范式,解決了寵物貓店管理系統(tǒng)中存在的數(shù)據(jù)安全性、數(shù)據(jù)一致性以及系統(tǒng)運行速度等問題。本文的組織結(jié)構(gòu)六個章節(jié)共同組成了本文研究及設(shè)計內(nèi)容,包括:第一章:緒論。本文章的開頭部分,對本題目的研究背景和研究意義等一些做文字性的描述。第二章:相關(guān)技術(shù)介紹。主要介紹Springboot框架、Java嵌入式腳本語言、B/S模式等。第三章:系統(tǒng)分析。包括系統(tǒng)總體需求描述、功能性角度分析系統(tǒng)需求、非功能性等各個方面分析系統(tǒng)是否可以實現(xiàn)。第四章:系統(tǒng)設(shè)計。本文章的重要部分,提供了系統(tǒng)架構(gòu)的詳細(xì)設(shè)計和一些主要功能模塊的設(shè)計說明。第五章:系統(tǒng)實現(xiàn)。將本系統(tǒng)分為前提的開發(fā)工具介紹和后期的功能代碼實現(xiàn)。第六章:系統(tǒng)測試。系統(tǒng)完成后,根據(jù)各個模塊的測試用例才對各個模塊進(jìn)行功能測試。相關(guān)技術(shù)介紹開發(fā)技術(shù)說明本系統(tǒng)前端部分基于MVVM模式進(jìn)行開發(fā),采用B/S模式,后端部分基于Java的springboot框架進(jìn)行開發(fā)。前端部分:前端框架采用了比較流行的漸進(jìn)式JavaScript框架Vue.js。使用Vue-Router和Vuex實現(xiàn)動態(tài)路由和全局狀態(tài)管理,Ajax實現(xiàn)前后端通信,ElementUI組件庫使頁面快速成型,項目前端通過柵格布局實現(xiàn)響應(yīng)式,可適應(yīng)PC端、平板端、手機(jī)端等不同屏幕大小尺寸的完美布局展示。后端部分:采用springboot作為開發(fā)框架,同時集成MyBatis、Redis等相關(guān)技術(shù)。B/S體系工作原理B/S架構(gòu)采取瀏覽器請求,服務(wù)器響應(yīng)的工作模式。用戶可以通過瀏覽器去訪問Internet上由Web服務(wù)器產(chǎn)生的文本、數(shù)據(jù)、圖片、動畫、視頻點播和聲音等信息;而每一個Web服務(wù)器又可以通過各種方式與數(shù)據(jù)庫服務(wù)器連接,大量的數(shù)據(jù)實際存放在數(shù)據(jù)庫服務(wù)器中;從Web服務(wù)器上下載程序到本地來執(zhí)行,在下載過程中若遇到與數(shù)據(jù)庫有關(guān)的指令,由Web服務(wù)器交給數(shù)據(jù)庫服務(wù)器來解釋執(zhí)行,并返回給Web服務(wù)器,Web服務(wù)器又返回給用戶。在這種結(jié)構(gòu)中,將許許多多的網(wǎng)連接到一塊,形成一個巨大的網(wǎng),即全球網(wǎng)。而各個企業(yè)可以在此結(jié)構(gòu)的基礎(chǔ)上建立自己的Internet。在B/S模式中,用戶是通過瀏覽器針對許多分布于網(wǎng)絡(luò)上的服務(wù)器進(jìn)行請求訪問的,瀏覽器的請求通過服務(wù)器進(jìn)行處理,并將處理結(jié)果以及相應(yīng)的信息返回給瀏覽器,其他的數(shù)據(jù)加工、請求全部都是由WebServer完成的。通過該框架結(jié)構(gòu)以及植入于操作系統(tǒng)內(nèi)部的瀏覽器,該結(jié)構(gòu)已經(jīng)成為了當(dāng)今軟件應(yīng)用的主流結(jié)構(gòu)模式。springboot框架介紹Spring框架是Java平臺上的一種開源應(yīng)用框架,提供具有控制反轉(zhuǎn)特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應(yīng)用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補(bǔ)充,甚至是替補(bǔ)。Spring框架為開發(fā)提供了一系列的解決方案,比如利用控制反轉(zhuǎn)的核心特性,并通過依賴注入實現(xiàn)控制反轉(zhuǎn)來實現(xiàn)管理對象生命周期容器化,利用面向切面編程進(jìn)行聲明式的事務(wù)管理,整合多種持久化技術(shù)管理數(shù)據(jù)訪問,提供大量優(yōu)秀的Web框架方便開發(fā)等等。Spring框架具有控制反轉(zhuǎn)(IOC)特性,IOC旨在方便項目維護(hù)和測試,它提供了一種通過Java的反射機(jī)制對Java對象進(jìn)行統(tǒng)一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發(fā)者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關(guān)注點進(jìn)行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務(wù)管理、遠(yuǎn)程訪問等功能均可以通過使用SpringAOP技術(shù)實現(xiàn)。Spring的事務(wù)管理框架為Java平臺帶來了一種抽象機(jī)制,使本地和全局事務(wù)以及嵌套事務(wù)能夠與保存點一起工作,并且?guī)缀蹩梢栽贘ava平臺的任何環(huán)境中工作。Spring集成多種事務(wù)模板,系統(tǒng)可以通過事務(wù)模板、XML或Java注解進(jìn)行事務(wù)配置,并且事務(wù)框架集成了消息傳遞和緩存等功能。Spring的數(shù)據(jù)訪問框架解決了開發(fā)人員在應(yīng)用程序中使用數(shù)據(jù)庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數(shù)據(jù)對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數(shù)據(jù)訪問框架中提供支持,同時還可以與Spring的事務(wù)管理一起使用,為數(shù)據(jù)訪問提供了靈活的抽象。Spring框架最初是沒有打算構(gòu)建一個自己的WebMVC框架,其開發(fā)人員在開發(fā)過程中認(rèn)為現(xiàn)有的StrutsWeb框架的呈現(xiàn)層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創(chuàng)建了SpringMVC。MySQL簡介MySQL是一個開放的、快速的、多線程的SQL關(guān)系型數(shù)據(jù)庫服務(wù)器。由于其體積小、免費、運行速度快以及可以通過相關(guān)免費的軟件來對MySql數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)結(jié)構(gòu)信息等等優(yōu)點。受廣大中等、小型企業(yè)所喜愛并占據(jù)了很大地位。本系統(tǒng)在數(shù)據(jù)庫方面選用MySQL,并通過Nacivat來進(jìn)行MySql數(shù)據(jù)庫的管理。在Mysql的安裝過程中,最需要注意的就是數(shù)據(jù)庫的編碼問題,所以在安裝數(shù)據(jù)庫時需要設(shè)置數(shù)據(jù)庫的編碼為Utf-8,與前臺頁面和服務(wù)器的編碼相一致。JavaScript運行模式JavaScript是一種屬于網(wǎng)絡(luò)的高級腳本語言,已經(jīng)被廣泛用于Web應(yīng)用開發(fā),常用來為網(wǎng)頁添加各式各樣的動態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現(xiàn)自身的功能的。1.8.1是一種解釋性腳本語言(代碼不進(jìn)行預(yù)編譯)。1.8.2主要用來向HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)頁面添加交互行為。1.8.3可以直接嵌入HTML頁面,但寫成單獨的js文件有利于結(jié)構(gòu)和行為的分離。1.8.4跨平臺特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺下運行(如Windows、Linux、Mac、Android、iOS等)。1.8.5JavaScript腳本語言同其他語言一樣,有它自身的基本數(shù)據(jù)類型,表達(dá)式和算術(shù)運算符及程序的基本程序框架。JavaScript提供了四種基本的數(shù)據(jù)類型和兩種特殊數(shù)據(jù)類型用來處理數(shù)據(jù)和文字。而變量提供存放信息的地方,表達(dá)式則可以完成較復(fù)雜的信息處理。
系統(tǒng)分析可行性分析法律可行性分析開發(fā)軟件有沒有觸犯法律,這涉及到軟件或者系統(tǒng)能不能發(fā)布的問題。如果觸犯了法律,就必將會受到法律的制裁。常見法律問題就是軟件抄襲問題,若是抄襲別人軟件,將會受到嚴(yán)厲懲罰。技術(shù)可行性分析軟件產(chǎn)業(yè)經(jīng)過多年的發(fā)展,現(xiàn)在已經(jīng)達(dá)到了很大的規(guī)模,從事軟件開發(fā)的專業(yè)人員不計其數(shù),軟件產(chǎn)業(yè)的重要性已經(jīng)上升到了影響和推動國民經(jīng)濟(jì)發(fā)展的核心地位。本系統(tǒng)基于的架構(gòu),目前技術(shù)已經(jīng)非常的成熟,是不存在技術(shù)上面難以實現(xiàn)的麻煩。經(jīng)濟(jì)可行性分析開發(fā)軟件所需的時間、人力和物力成本,開發(fā)完成后的收益如何,從投資回報的角度軟件所需功能在現(xiàn)有經(jīng)濟(jì)條件能不能實現(xiàn)等進(jìn)行深入的考慮,都符合實際的要求。所以寵物貓店管理系統(tǒng)具有經(jīng)濟(jì)可行性和實用性,可以節(jié)約管理成本功能需求分析寵物貓店管理系統(tǒng)主要是為了更加地完善寵物貓店的情況,對用戶的信息、貓貓用品、訂單中心、會員中心、服務(wù)中心、服務(wù)分類、預(yù)約管理等提供了方便的機(jī)制。本系統(tǒng)有多類使用者,分別是管理員和用戶注冊。以下是從這兩種用戶的角度分別介紹本系統(tǒng)所要實現(xiàn)的功能。用戶:注冊:首先檢查用戶名和郵箱是否存在,如不存在即可進(jìn)行注冊,并將用戶輸入的密碼進(jìn)行MD5加密,注冊成功后提示注冊成功,并將用戶信息保存到數(shù)據(jù)庫中。登錄:使用寵物貓店管理系統(tǒng)前是需要用戶登錄個人賬號。寵物資訊:用戶登錄寵物貓店管理系統(tǒng)首頁時,可以瀏覽寵物資訊信息,根據(jù)不同地寵物可以查看每個不同寵物飼養(yǎng)地方式等,還可以將自己感興趣的資訊點贊以及加入收藏列表中。會員中心:用戶可以在系統(tǒng)中的寵物信息欄內(nèi)搜索寵物信息,具體包括:封面圖、標(biāo)題、分類、標(biāo)簽等。貓貓用品:用戶可以瀏覽貓貓用品,可以自行搜索某樣貓貓用品相關(guān)詳情。具體功能需求如下:貓貓用品搜索:前臺用戶可以直接在前臺輸入框內(nèi)輸入關(guān)鍵詞進(jìn)行搜索,頁面彈跳出對應(yīng)貓貓用品信息。服務(wù)中心:用戶可以查看寵物服務(wù)信息表的寵物狀態(tài),可以根據(jù)寵物狀態(tài)發(fā)起服務(wù)申請:包括填寫活動標(biāo)題、內(nèi)容、要求、圖片。管理員:用戶管理:對用戶進(jìn)行管理,用戶的注冊,包括用戶昵稱、用戶名、用戶的寵物信息(寵物類別、寵物性別、年齡等)用戶的賬號信息:貓貓用品:增加與貓貓用品相關(guān)的信息,對用品進(jìn)行列表,列表信息包括:商品編號、商品名稱、商品圖片、商品價格、商品庫存、商品規(guī)格、商品詳情。訂單列表管理:(1)按購買訂單編號查詢購買訂單;(2)查看購買訂單詳情;(3)支付情況;非功能需求分析系統(tǒng)非功能需求有非常多,比如性能需求、可承載最大用戶數(shù)、穩(wěn)定性、易用性需求等。本系統(tǒng)分析時考慮到易用性需求,因為系統(tǒng)是給人使用的,所以必須充分從用戶的角度出發(fā),考慮用戶體驗,使系統(tǒng)易理解易上手易操作。用例分析1.普通用戶主要使用寵物貓店管理系統(tǒng),下圖所示為普通用戶的用例圖3-1普通用戶用例圖2.管理員主要負(fù)責(zé)用戶管理、貓貓用品、訂單中心、會員中心、服務(wù)中心、服務(wù)分類、預(yù)約管理,下圖所示描述管理員的用例圖。圖3-2管理員用例圖業(yè)務(wù)流程分析系統(tǒng)業(yè)務(wù)流程圖如下所示。圖3-3系統(tǒng)業(yè)務(wù)流程圖業(yè)務(wù)流程圖(TFD)通過一些特定的符號描述業(yè)務(wù)的處理過程,它重點強(qiáng)調(diào)業(yè)務(wù)過程中每一項處理活動和具體業(yè)務(wù)部門的關(guān)系,選擇部分模塊進(jìn)行具體描述。重點對本系統(tǒng)整體業(yè)務(wù)中最為主要的寵物交易及訂單業(yè)務(wù)進(jìn)行描述,用戶進(jìn)入寵物貓店管理系統(tǒng)后進(jìn)行各種模塊信息的瀏覽,選擇想要購買的寵物添加到購買訂單,對寵物飼料下單,用戶確認(rèn)購買、填寫訂單信息,另外,管理人員進(jìn)入后端管理,以執(zhí)行該訂單信息控制模塊的相關(guān)管理方法,并在解決后向客戶提供反饋機(jī)制。數(shù)據(jù)流程分析如下為系統(tǒng)的頂層數(shù)據(jù)流圖,外部實體有用戶和管理員,分別對系統(tǒng)輸入數(shù)據(jù),從而得到要輸出的數(shù)據(jù)。圖3-4系統(tǒng)頂層數(shù)據(jù)流圖如下圖所示為系統(tǒng)底層數(shù)據(jù)流圖。圖3-5系統(tǒng)底層數(shù)據(jù)流圖寵物貓店管理系統(tǒng)底層數(shù)據(jù)流圖主要描述系統(tǒng)底層模塊的數(shù)據(jù)流、數(shù)據(jù)載體、數(shù)據(jù)處理、外部實體的具體交互。本系統(tǒng)就是管理員和普通用戶在用戶管理、寵物管理、疫苗藥物管理、訂單列表管理、下單管理、會員信息管理等模塊上的數(shù)據(jù)交互。系統(tǒng)設(shè)計系統(tǒng)架構(gòu)設(shè)計本系統(tǒng)架構(gòu)設(shè)計主要分為可以3層,主要有Web層,業(yè)務(wù)層,Model層。其中web層還包括View層和Controller層,Model層包括元數(shù)據(jù)擴(kuò)展層和數(shù)據(jù)訪問層。圖4-1系統(tǒng)架構(gòu)圖系統(tǒng)功能結(jié)構(gòu)為了將系統(tǒng)從“做什么”落實到“怎么做”,基于系統(tǒng)設(shè)計原則,對系統(tǒng)功能進(jìn)行更適合編碼實現(xiàn)的功能劃分。根據(jù)上圖的系統(tǒng)架構(gòu)設(shè)計,整理出規(guī)范的系統(tǒng)功能結(jié)構(gòu)圖,為系統(tǒng)的實現(xiàn)編碼做好準(zhǔn)備。如下圖所示為系統(tǒng)功能結(jié)構(gòu)圖。圖4-2系統(tǒng)功能結(jié)構(gòu)圖功能模塊設(shè)計用戶管理針對所有用戶和管理員。未注冊用戶點擊注冊,進(jìn)入注冊頁面填寫新用戶信息,得到自定義生成賬號后,注冊完成。未注冊用戶注冊的活動圖如下圖所示。圖4-3未注冊用戶注冊活動圖用戶可進(jìn)行登錄使用更多功能,首先進(jìn)入用戶登錄界面,輸入用戶賬號和密碼,后臺對賬號和密碼信息進(jìn)行核對驗證,驗證成功則頁面直接顯示登錄用戶昵稱代表登錄成功,否則返回用戶登錄界面。用戶登錄活動圖如下圖。圖4-4用戶登錄活動圖用戶登錄后,進(jìn)入功能頁面,可對自己的信息進(jìn)行管理,包括個人信息,公告欄、寵物資訊、貓貓用品、會員中心、服務(wù)中心。用戶使用功能活動圖如下圖所示。圖4-5用戶使用功能活動圖用戶功能界面可對自己的密碼進(jìn)行修改。進(jìn)入修改密碼界面后核對當(dāng)前密碼,核對成功后填寫新密碼。修改密碼活動圖如下圖所示。圖4-6修改密碼活動圖數(shù)據(jù)庫設(shè)計寵物貓店管理系統(tǒng)采用的數(shù)據(jù)庫是MySQL,該部分將根據(jù)系統(tǒng)需求和設(shè)計,設(shè)計合理的數(shù)據(jù)庫。本系統(tǒng)考慮到之后系統(tǒng)的擴(kuò)展集群,數(shù)據(jù)庫將不使用外鍵。此外,不用外鍵時數(shù)據(jù)管理也較為簡單,操作更加方便,性能更高。E-R圖E-R圖,更加直觀的告訴開發(fā)人員系統(tǒng)的各個數(shù)據(jù)的屬性,各個數(shù)據(jù)之間的聯(lián)系,各個數(shù)據(jù)的類型。能通過該模型更直觀地了解數(shù)據(jù)庫的設(shè)計,并根據(jù)對其逐漸改善。本系統(tǒng)圖設(shè)計,如下圖所示。圖4-7系統(tǒng)E-R圖表結(jié)構(gòu)設(shè)計本系統(tǒng)根據(jù)第三范式的思想設(shè)計數(shù)據(jù)庫,減少最大程度的冗余,總共建立有多個表,用戶注冊表、管理員表、招聘員工表、寵物信息表、遺棄寵物表、活動中心表、會員信息表、疫苗藥物表、志愿者申請表等。表結(jié)構(gòu)如下所示。user_registration表:名稱類型長度不是null主鍵注釋user_registration_idint11是是用戶注冊IDuser_accountvarchar64是否用戶賬號gendervarchar64否否性別agevarchar64否否年齡membership_levelvarchar64否否會員等級member_discountvarchar64否否會員折扣examine_statevarchar16是否審核狀態(tài)recommendint11是否智能推薦user_idint11是否用戶IDcreate_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間service_classification表:名稱類型長度不是null主鍵注釋service_classification_idint11是是服務(wù)分類IDservice_typevarchar64否否服務(wù)類型examine_statevarchar16是否審核狀態(tài)recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間service_centre表:名稱類型長度不是null主鍵注釋service_centre_idint11是是服務(wù)中心IDservice_typevarchar64否否服務(wù)類型single_pricevarchar64否否單次價格shop_addressvarchar64否否店鋪地址contactsvarchar64否否聯(lián)系人contact_numbervarchar64否否聯(lián)系電話remarkstext0否否備注examine_statevarchar16是否審核狀態(tài)recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間order_center表:名稱類型長度不是null主鍵注釋order_center_idint11是是訂單中心IDorder_numbervarchar64否否訂單編號commodity_numbervarchar64否否商品編號trade_namevarchar64否否商品名稱commodity_pricevarchar64否否商品價格membership_levelvarchar64否否會員等級member_discountvarchar64否否會員折扣purchase_quantityint11否否購買數(shù)量total_pricevarchar64否否總價格user_accountint11否否用戶賬號order_date_date0否否下單日期examine_statevarchar16是否審核狀態(tài)pay_statevarchar16是否支付狀態(tài)pay_typevarchar16否否支付類型recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間membership_center表:名稱類型長度不是null主鍵注釋membership_center_idint11是是會員中心IDmember_numbervarchar64否否會員編號member_nicknamevarchar64否否會員昵稱membership_levelvarchar64否否會員等級member_discountvarchar64否否會員折扣user_accountint11否否用戶賬號examine_statevarchar16是否審核狀態(tài)recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間cat_products表:名稱類型長度不是null主鍵注釋cat_products_idint11是是貓貓用品IDcommodity_numbervarchar64否否商品編號trade_namevarchar64否否商品名稱product_picturevarchar255否否商品圖片commodity_pricevarchar64否否商品價格merchandise_inventoryvarchar64否否商品庫存commodity_specificationsvarchar64否否商品規(guī)格product_detailstext0否否商品詳情hitsint11是否點擊數(shù)praise_lenint11是否點贊數(shù)examine_statevarchar16是否審核狀態(tài)recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間booking_management表:名稱類型長度不是null主鍵注釋booking_management_idint11是是預(yù)約管理IDservice_typevarchar64否否服務(wù)類型shop_addressvarchar64否否店鋪地址contactsvarchar64否否聯(lián)系人contact_numbervarchar64否否聯(lián)系電話single_pricevarchar64否否單次價格service_timesint11否否服務(wù)次數(shù)total_pricevarchar64否否總價格time_of_appointmentdate0否否預(yù)約時間user_accountint11否否用戶賬號examine_statevarchar16是否審核狀態(tài)pay_statevarchar16是否支付狀態(tài)pay_typevarchar16否否支付類型recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間系統(tǒng)實現(xiàn)開發(fā)工具系統(tǒng)中應(yīng)用的開發(fā)工具總結(jié)如下表所示。表5-1開發(fā)工具名稱工具版本操作系統(tǒng)IDE(IntegratedDevelopmentEnvironment)WindowsEclipse7/8/102017服務(wù)器Tomcat9.10.7JDK(JavaDevelopmentKit)JDKJavaSE8.0(1.8.0)數(shù)據(jù)庫瀏覽器界面工具M(jìn)ySQL谷歌Photoshop5.76.02016注冊模塊未注冊用戶在用戶注冊界面uerRegister.jsp,輸入新用戶信息,點擊注冊后,新用戶信息由界面?zhèn)魅肟刂茖觰serAction,調(diào)用addUser(user)方法,通過userDAOImp向數(shù)據(jù)庫用戶表插入用戶信息,由于用戶賬號是自動生成的,若成功則反饋注冊成功,并提示新用戶的用戶賬號;若失敗則回到登錄界面,并顯示登錄失敗。注冊界面如下所示。圖5-1注冊界面用戶注冊關(guān)鍵代碼如下所示。/***注冊*@paramuser*@return*/@PostMapping("register")publicMap<String,Object>signUp(@RequestBodyUseruser){//查詢用戶Map<String,String>query=newHashMap<>();query.put("username",user.getUsername());Listlist=service.select(query,newHashMap<>()).getResultList();if(list.size()>0){returnerror(30000,"用戶已存在");}user.setUserId(null);user.setPassword(service.encryption(user.getPassword()));service.save(user);returnsuccess(1);}/***用戶ID:[0,8388607]用戶獲取其他與用戶相關(guān)的數(shù)據(jù)*/@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="user_id")privateIntegeruserId;/***賬戶狀態(tài):[0,10](1可用|2異常|3已凍結(jié)|4已注銷)*/@Basic@Column(name="state")privateIntegerstate;/***所在用戶組:[0,32767]決定用戶身份和權(quán)限*/@Basic@Column(name="user_group")privateStringuserGroup;/***上次登錄時間:*/@Basic@Column(name="login_time")privateTimestamploginTime;/***手機(jī)號碼:[0,11]用戶的手機(jī)號碼,用于找回密碼時或登錄時*/@Basic@Column(name="phone")privateStringphone;/***手機(jī)認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)*/@Basic@Column(name="phone_state")privateIntegerphoneState;/***用戶名:[0,16]用戶登錄時所用的賬戶名稱*/@Basic@Column(name="username")privateStringusername;/***昵稱:[0,16]*/@Basic@Column(name="nickname")privateStringnickname;/***密碼:[0,32]用戶登錄所需的密碼,由6-16位數(shù)字或英文組成*/@Basic@Column(name="password")privateStringpassword;/***郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時*/@Basic@Column(name="email")privateStringemail;/***郵箱認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)*/@Basic@Column(name="email_state")privateIntegeremailState;/***頭像地址:[0,255]*/@Basic@Column(name="avatar")privateStringavatar;/***創(chuàng)建時間:*/@Basic@Column(name="create_time")@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")privateTimestampcreateTime;@Basic@TransientprivateStringcode;}登錄/注銷模塊用戶在首頁點擊登錄,進(jìn)入用戶登錄界面uerLogin.jsp,輸入用戶賬號和密碼,點擊登錄,用戶賬號和密碼信息由界面?zhèn)魅肟刂茖觰serAction,調(diào)用userLogin(user)方法,通過userDAOImp向數(shù)據(jù)庫用戶表搜索該用戶賬號與密碼,將最終結(jié)果反饋到前端。若成功則回到首頁;用戶成功登錄,若失敗則回到登錄界面,并顯示登錄失敗。用戶點擊注銷,清空瀏覽器session值,然后返回登錄頁或者首頁。登錄界面如下所示。圖5-2登錄界面登錄界面關(guān)鍵代碼如下所示。/***登錄*@paramdata*@paramhttpServletRequest*@return*/@PostMapping("login")publicMap<String,Object>login(@RequestBodyMap<String,String>data,HttpServletRequesthttpServletRequest){("[執(zhí)行登錄接口]");Stringusername=data.get("username");Stringemail=data.get("email");Stringphone=data.get("phone");Stringpassword=data.get("password");ListresultList=null;Map<String,String>map=newHashMap<>();if(username!=null&&"".equals(username)==false){map.put("username",username);resultList=service.select(map,newHashMap<>()).getResultList();}elseif(email!=null&&"".equals(email)==false){map.put("email",email);resultList=service.select(map,newHashMap<>()).getResultList();}elseif(phone!=null&&"".equals(phone)==false){map.put("phone",phone);resultList=service.select(map,newHashMap<>()).getResultList();}else{returnerror(30000,"賬號或密碼不能為空");}if(resultList==null||password==null){returnerror(30000,"賬號或密碼不能為空");}//判斷是否有這個用戶if(resultList.size()<=0){returnerror(30000,"用戶不存在");}UserbyUsername=(User)resultList.get(0);Map<String,String>groupMap=newHashMap<>();groupMap.put("name",byUsername.getUserGroup());ListgroupList=userGroupService.select(groupMap,newHashMap<>()).getResultList();if(groupList.size()<1){returnerror(30000,"用戶組不存在");}UserGroupuserGroup=(UserGroup)groupList.get(0);//查詢用戶審核狀態(tài)if(!StringUtils.isEmpty(userGroup.getSourceTable())){Stringsql="selectexamine_statefrom"+userGroup.getSourceTable()+"WHEREuser_id="+byUsername.getUserId();Stringres=String.valueOf(service.runCountSql(sql).getSingleResult());if(res==null){returnerror(30000,"用戶不存在");}if(!res.equals("已通過")){returnerror(30000,"該用戶審核未通過");}}//查詢用戶狀態(tài)if(byUsername.getState()!=1){returnerror(30000,"用戶非可用狀態(tài),不能登錄");}Stringmd5password=service.encryption(password);if(byUsername.getPassword().equals(md5password)){//存儲Token到數(shù)據(jù)庫AccessTokenaccessToken=newAccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll("-",""));accessToken.setUser_id(byUsername.getUserId());tokenService.save(accessToken);//返回用戶信息JSONObjectuser=JSONObject.parseObject(JSONObject.toJSONString(byUsername));user.put("token",accessToken.getToken());JSONObjectret=newJSONObject();ret.put("obj",user);returnsuccess(ret);}else{returnerror(30000,"賬號或密碼不正確");}}用戶模塊個人資料模塊登錄用戶在首頁點擊進(jìn)入用戶中心userCenter.jsp,再點擊修改個人信息按鈕進(jìn)入userChangeInfo.jsp界面,系統(tǒng)根據(jù)session中存儲的目前登錄的用戶的賬號,向控制層userAction發(fā)送請求,搜索當(dāng)前用戶信息,userAction向userDAOImp調(diào)用queryByUserId(user),向數(shù)據(jù)庫的用戶表搜索當(dāng)前用戶信息并將用戶信息以對象的形式層層返回到userChangeInfo.jsp界面,顯示出當(dāng)前用戶的個人信息。若用戶要對個人信息進(jìn)行修改,則通過修改當(dāng)前信息之后點擊確認(rèn),向控制層userAction發(fā)送更改后的用戶信息,調(diào)用changeUser(user)方法,通過userDAOImp向數(shù)據(jù)庫用戶表更新用戶信息,若成功則反饋注冊成功,則返回的userChangeInfo.jsp界面被更改成功;若失敗則顯示修改失敗。會員中心模塊用戶可以在首頁進(jìn)行會員中心搜索,在搜索框輸入關(guān)鍵詞后,前臺發(fā)起請求,將傳遞的keyword參數(shù)信息從前臺傳遞ShangpinController類里,匹配到list()方法,list()方法調(diào)用ShangpinServiceImpl類的getShangpinByKeywordCategory()方法,如果沒有該關(guān)鍵詞,則返回空的結(jié)果集。會員中心界面如下。圖5-3會員中心界面貓貓用品模塊用戶在登錄狀態(tài)下瀏覽貓貓用品時可將該貓貓用品加入寵物購買訂單,從session中取出該用戶的信息,點擊加入貓貓用品后前臺發(fā)起請求,將對應(yīng)的商品數(shù)量shuliang、id參數(shù)信息從前臺傳遞GoumaiController類里,匹配到add()方法,add()方法調(diào)用GoumaiServiceImpl類的add()方法。貓貓用品界面如下所示。圖5-4貓貓用品界面服務(wù)中心模塊用戶在登錄狀態(tài)下瀏覽服務(wù)中心信息時可將該服務(wù)中心信息加入收藏記錄,從session中取出該用戶的信息,點擊加入服務(wù)中心信息收藏前臺發(fā)起請求,將對應(yīng)的服務(wù)中心信息shichang、id參數(shù)信息從前臺傳遞XiadanController類里,匹配到add()方法,add()方法調(diào)用XiadanServiceImpl類的add()方法。服務(wù)中心信息界面如下所示。圖5-5服務(wù)中心界面管理員模塊會員中心列表模塊管理員在后臺管理界面點擊到所有會員中心列表界面shangpinxinxi_list.jsp,向控制層shangpinxinxiAction發(fā)送請求,搜索當(dāng)前所有會員信息,shangpinxinxiAction向shangpinxinxiDAOImp調(diào)用搜索全部會員中心的請求,向數(shù)據(jù)庫的會員中心表搜索當(dāng)前所有會員并將留言信息以對象的形式層層返回到shangpinxinxi_list.jsp界面,顯示出當(dāng)前所有會員中心信息。若要對會員中心列表信息進(jìn)行修改和刪除,則分別進(jìn)入shangpinxinxi_updt.jsp或shangpinxinxi_delete.jsp,通過shangpinxinxiAction向shangpinxinxiDAOImp調(diào)用對應(yīng)的修改或刪除方法,向數(shù)據(jù)庫的會員中心表做相應(yīng)的持久層操作。會員中心列表界面如下所示。圖5-7會員中心列表界面寵物資訊管理模塊管理員在后臺管理界面點擊到所有寵物資訊界面chongwufuwuxinxi_list.jsp,向控制層chongwufuwuxinxiAction發(fā)送請求,搜索當(dāng)前所有寵物資訊,chongwufuwuxinxiAction向chongwufuwuxinxiDAOImp調(diào)用搜索全部寵物資訊的請求,向數(shù)據(jù)庫的寵物資訊表搜索當(dāng)前所有寵物資訊并將寵物資訊以對象的形式層層返回到chongwufuwuxinxi_list.jsp界面,顯示出當(dāng)前所有寵物資訊列表。寵物資訊列表管理界面如下所示。圖5-8寵物資訊列表管理界面訂單中心管理模塊根據(jù)需求,需要對訂單中心進(jìn)行添加、刪除或修改詳情信息。刪除或修改訂單時,系統(tǒng)根據(jù)訂單中心的狀態(tài)判定為可刪除狀態(tài)下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達(dá)后臺,還會先查詢訂單狀態(tài)再次做出判定能否刪除。點擊修改鏈接按鈕時,會跳轉(zhuǎn)到修改信息的頁面,重新填寫好數(shù)據(jù)后,數(shù)據(jù)提交到后臺會對數(shù)據(jù)庫中相應(yīng)的記錄做出修改。添加訂單中心時,會給出數(shù)據(jù)填寫的頁面,該頁面根據(jù)填寫好的訂單同樣會事先發(fā)送Ajax請求查詢訂單號是否已存在,數(shù)據(jù)填寫好之后提交到后臺,會調(diào)用相關(guān)服務(wù)在數(shù)據(jù)庫中插入記錄。訂單中心頁面設(shè)計效果如下圖所示。圖5-9訂單中心界面圖訂單中心管理的關(guān)鍵代碼如下。@PostMapping("/add")@TransactionalpublicMap<String,Object>add(HttpServletRequestrequest)throwsIOException{service.insert(service.readBody(request.getReader()));returnsuccess(1);}@TransactionalpublicMap<String,Object>addMap(Map<String,Object>map){service.insert(map);returnsuccess(1);}publicMap<String,Object>readBody(BufferedReaderreader){BufferedReaderbr=null;StringBuildersb=newStringBuilder("");try{br=reader;Stringstr;while((str=br.readLine())!=null){sb.append(str);}br.close();Stringjson=sb.toString();returnJSONObject.parseObject(json,Map.class);}catch(IOExceptione){e.printStackTrace();}finally{if(null!=br){try{br.close();}catch(IOExceptione){e.printStackTrace();}}}returnnull;}publicvoidinsert(Map<String,Object>body){StringBuffersql=newStringBuffer("INSERTINTO");sql.append("`").append(table).append("`").append("(");for(Map.Entry<String,Object>entry:body.entrySet()){sql.append("`"+humpToLine(entry.getKey())+"`").append(",");}sql.deleteCharAt(sql.length()-1);sql.append(")VALUES(");for(Map.Entry<String,Object>entry:body.entrySet()){Objectvalue=entry.getValue();if(valueinstanceofString){sql.append("'").append(entry.getValue()).append("'").append(",");}else{sql.append(entry.getValue()).append(",");}}sql.deleteCharAt(sql.length()-1);sql.append(")");("[{}]-插入操作:{}",table,sql);Queryquery=runCountSql(sql.toString());query.executeUpdate();}系統(tǒng)測試測試概述軟件測試是軟件開發(fā)完成后必須經(jīng)過的一道程序,它在軟件開發(fā)過程中地位十分重要,需要由專業(yè)的測試工程師來對軟件進(jìn)行各方面的測試,大到功能模塊測試,小到代碼的單元測試,這對測試工程師來說需要有足夠的耐心和專業(yè)的測試方案,軟件測試歸根結(jié)底就是對軟件的結(jié)構(gòu)和功能的綜合測評,需要做到結(jié)構(gòu)穩(wěn)定和功能正確,二者兼顧。軟件測試也叫尋找系統(tǒng)bug的過程,世界上沒有完美無缺、不存在bug的軟件,只能將軟件的bug降到最低最小,來追求極致。測試過程登錄測試登錄測試是系統(tǒng)最開始就要進(jìn)行,測試用戶能否登錄,才能完成后續(xù)的功能操作。登錄測試用例表如下所示。表6-1登錄測試用例編號YL001程序版本1.00功能名稱使用者登錄測試編制人李鐵蛋功能描述根據(jù)用戶的登錄情況測試用例目的測試用戶登錄情況是否正確測試項測試數(shù)據(jù)測試結(jié)果預(yù)期結(jié)果用戶名為空請輸入用戶名請輸入用戶名密碼為空請輸入密碼請輸入密碼用戶密碼組合用戶名:klouse密碼klouses用戶與密碼不匹配用戶與密碼不匹配用戶密碼組合用戶名:klouse密碼klouse進(jìn)入系統(tǒng)正確的用戶名和密碼登錄系統(tǒng)信息錄入測試管理員在發(fā)布信息頁面,通過按照預(yù)先格式發(fā)布信息,如果因為輸入時候缺少相關(guān)內(nèi)容,就不能發(fā)布成功,且有相應(yīng)錯誤提示信息錄入發(fā)布測試用例表如下所示。表6-1信息錄入發(fā)布測試用例編號YL002程序版本1.00功能名稱信息發(fā)布測試編制人李鐵蛋功能描述對使用者發(fā)布或者錄入信息進(jìn)行測試,判斷其功能是否達(dá)到預(yù)期的要求用例目的對系統(tǒng)使用者錄入發(fā)布信息進(jìn)行原型測試。測試項測試數(shù)據(jù)測試結(jié)果預(yù)期結(jié)果屬性1為空請輸入屬性1對應(yīng)的數(shù)據(jù)請輸入屬性1對應(yīng)的數(shù)據(jù)屬性2為空請輸入屬性2對應(yīng)的數(shù)據(jù)請輸入屬性2對應(yīng)的數(shù)據(jù)屬性3為空請輸入屬性3對應(yīng)的數(shù)據(jù)請輸入屬性3對應(yīng)的數(shù)據(jù)全部輸入數(shù)據(jù)均填入錄入發(fā)布成功錄入發(fā)布成功信息更新測試管理員在更新信息頁面,通過按照預(yù)先格式更新信息,如果因為輸入時候缺少相關(guān)內(nèi)容或者更新的數(shù)據(jù)不符合當(dāng)前規(guī)范的話,就不能更新成功,且有相應(yīng)錯誤提示信息更新測試用例表如下所示。表6-1信息更新測試用例編號YL003程序版本1.00功能名稱信息更新測試編制人李鐵蛋功能描述對使用者更新信息進(jìn)行測試,判斷其功能是否達(dá)到預(yù)期的要求用例目的對系統(tǒng)使用者更新信息進(jìn)行原型測試。測試項測試數(shù)據(jù)測試結(jié)果預(yù)期結(jié)果屬性1編號:321編號更新成功編號更新成功屬性2名稱:名稱1名稱更新成功名稱更新成功屬性3內(nèi)容:內(nèi)容1234內(nèi)容內(nèi)容更新成功內(nèi)容更新成功全部輸入數(shù)據(jù)均未更改更新成功更新成功信息刪除測試管理員在信息頁面,通過點擊數(shù)據(jù)刪除按鈕來刪除該條數(shù)據(jù),如果該數(shù)據(jù)和其他數(shù)據(jù)有關(guān)聯(lián),則提示是否確定刪除。信息刪除測試用例表如下所示。表6-1信息刪除測試用例編號YL004程序版本1.00功能名稱信息刪除測試編制人李鐵蛋功能描述對使用者刪除信息進(jìn)行測試,判斷其功能是否達(dá)到預(yù)期的要求用例目的對系統(tǒng)使用者刪除信息進(jìn)行原型測試。測試項測試數(shù)據(jù)測試結(jié)果預(yù)期結(jié)果數(shù)據(jù)1無任何關(guān)聯(lián)的數(shù)據(jù)1數(shù)據(jù)刪除成功數(shù)據(jù)刪除成功數(shù)據(jù)2和其他數(shù)據(jù)有關(guān)聯(lián)的數(shù)據(jù)2請確認(rèn)是否刪除請確認(rèn)是否刪除測試結(jié)果在經(jīng)過之前的所有的工作之后,通過對軟件的測試方法、測試原則還有典型的測試用例進(jìn)行全面的、深入的介紹。經(jīng)過對系統(tǒng)的全面測試,系統(tǒng)目前所具有的所有功能均成功的實現(xiàn)并且通過了測試,整個系統(tǒng)實現(xiàn)了基于Java開發(fā)的期望??偨Y(jié)與展望總結(jié)寵物貓店管理系統(tǒng)采用Springboot框架開發(fā),該系統(tǒng)非常完美的集優(yōu)點于一身,成熟、強(qiáng)大、易理解易使用,通過使用這個結(jié)構(gòu),降低了開發(fā)的難度。本系統(tǒng)實現(xiàn)了基于Springboot的寵物管理平臺,將數(shù)據(jù)操作維護(hù)的過程轉(zhuǎn)化成電腦操作流程,具體實現(xiàn)了對系統(tǒng)人員管理、貓貓用品數(shù)據(jù)維護(hù)、訂單數(shù)據(jù)維護(hù)、預(yù)約數(shù)據(jù)維護(hù)、會員信息管理數(shù)據(jù)維護(hù),并提供查詢統(tǒng)計功能來對寵物貓店管理系統(tǒng)的相關(guān)數(shù)據(jù)進(jìn)行統(tǒng)計分析,讓使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電話銷售個人實習(xí)工作總結(jié)(5篇)
- 2025年證券從業(yè)資格證考試核心框架了解試題及答案
- 項目管理核心競爭力的相關(guān)考題試題及答案
- 項目管理考試全面復(fù)習(xí)指南試題及答案
- 2025至2031年中國高級潤版液行業(yè)投資前景及策略咨詢研究報告
- 行政管理師證書性質(zhì)解析試題及答案
- 注冊會計師考試內(nèi)容梳理試題及答案
- 2025年證券從業(yè)資格證考試需要掌握的經(jīng)濟(jì)學(xué)知識試題及答案
- 2025年銀行從業(yè)資格證考生的堅持之路試題及答案
- 股票交易及風(fēng)險管理考題及答案
- 氬弧焊培訓(xùn)課件-氬弧焊焊接技術(shù)培訓(xùn)
- 中建總工程師的職業(yè)基本素養(yǎng)
- 【房地產(chǎn)項目成本控制問題研究文獻(xiàn)綜述2300字】
- 《一般將來時》教學(xué)設(shè)計
- 小學(xué)數(shù)學(xué)-青島版五四制五年級數(shù)學(xué)上冊第七單元《比的意義》教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 幼兒園故事課件:《胸有成竹》
- GB/T 43200-2023機(jī)器人一體化關(guān)節(jié)性能及試驗方法
- 單面彩鋼酚醛復(fù)合風(fēng)管施工工法
- 浙江省溫州環(huán)大羅山聯(lián)盟2022-2023學(xué)年高一下學(xué)期4月期中聯(lián)考物理試題
- 功率因素校正(PFC)電路-PFC的工作原理課件
- GB/T 10000-2023中國成年人人體尺寸
評論
0/150
提交評論