国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案

這篇具有很好參考價值的文章主要介紹了基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

SSM流浪寵物領(lǐng)養(yǎng)系統(tǒng)

摘?要

流浪寵物一直是影響城市環(huán)境與居民生活的一個不可忽略的因素。基于此,本文設(shè)計并實現(xiàn)一個流浪寵物領(lǐng)養(yǎng)系統(tǒng)。用戶可以通過本系統(tǒng)查看搜索流浪寵物的相關(guān)信息、進行領(lǐng)養(yǎng)申請,為其提供愛心幫助。本系統(tǒng)有效地解決了流浪寵物領(lǐng)養(yǎng)工作開展困難等問題,為流浪寵物與社會愛動物人士建立了便捷的溝通橋梁。

流浪寵物領(lǐng)養(yǎng)系統(tǒng)是基于瀏覽器與服務(wù)器架構(gòu)平臺,采用跨平臺的JAVA語言開發(fā),利用SSM框架進行邏輯控制,MySQL數(shù)據(jù)庫存儲數(shù)據(jù),最后Tomcat服務(wù)器完成發(fā)布,系統(tǒng)可在多個環(huán)境下運行。

關(guān)鍵詞:流浪寵物領(lǐng)養(yǎng),SSM框架,MySQL數(shù)據(jù)庫

SSM stray pet adoption system

Abstract

Stray pets have always been a non negligible factor affecting the urban environment and residents' lives. Based on this, this paper designs and implements a stray pet adoption system. ?users can check the relevant information of stray animals, apply for the adoption of stray pets, and provide loving help for stray pets. This system effectively solves the problems such as difficulties in the rescue of stray pets, and establishes a convenient communication bridge between stray pets and social animal lovers.

The stray pet adoption system is based on the browser and server architecture platform, developed with cross platform Java language, using SSM framework for logic control, MySQL database to store data, and finally Tomcat server to complete the release. The system can run in multiple environments.

Key words:?Stray pet adoption, SSM framework, MySQL database

目 ?錄

第1章 緒論

1.1?研究背景

1.2?研究現(xiàn)狀

1.3?本文的組織結(jié)構(gòu)

第2章 相關(guān)技術(shù)介紹

2.1 開發(fā)技術(shù)

2.2 MVVM模式

2.3 MySQL數(shù)據(jù)庫

2.4 B/S結(jié)構(gòu)

2.5 SSM框架介紹

2.6 Vue.js 主要功能

第3章 系統(tǒng)分析

3.1?可行性分析

3.1.1?法律可行性分析

3.1.2?技術(shù)可行性分析

3.1.3?經(jīng)濟可行性分析

3.2?功能需求分析

3.3?非功能需求分析 7

3.4?用例分析 7

3.5?業(yè)務(wù)流程分析

3.6?數(shù)據(jù)流程分析

第4章 系統(tǒng)設(shè)計

4.1?系統(tǒng)架構(gòu)設(shè)計

4.2?系統(tǒng)功能結(jié)構(gòu) 12

4.3?功能模塊設(shè)計

4.4?數(shù)據(jù)庫設(shè)計

4.4.1 E-R

4.4.2?表結(jié)構(gòu)設(shè)計

第5章 系統(tǒng)實現(xiàn)

5.1?開發(fā)工具

5.2?注冊模塊

5.3?登錄/注銷模塊

5.4?用戶功能模塊

5.5?管理員功能模塊

第6章 系統(tǒng)測試 35

6.1?測試概述 35

6.2?測試過程 35

6.2.1?登錄測試 35

6.2.2?信息錄入測試 35

6.2.3?信息更新測試 36

6.2.4?信息刪除測試 36

6.3?測試結(jié)果 36

第7章 總結(jié)與展望

7.1?總結(jié)

7.2?展望

參考文獻

致謝 41

第1章緒論

1.1研究背景

隨著近年來我國經(jīng)濟與科技的飛速發(fā)展,人們的生活水平不斷提高。在人們獲得了豐富的物質(zhì)生活之后,對于充實自己精神生活的需求也日益增加。飼養(yǎng)寵物作為精神伴侶成了許多人的選擇,把寵物當(dāng)做家庭成員,陪伴自己一起生活,從中獲得樂趣。但人們把飼養(yǎng)寵物當(dāng)成一種精神寄托和生活伴侶的同時,卻也不免有些人因為各種原因遺棄寵物。流浪寵物,一般是指無主寵物。城市中的流浪動物主要包括流浪狗和流浪貓兩種,主要來源于人為丟棄或者公共場所走失。如今,我國的流浪動物越來越多,但是流浪動物的管理卻十分混亂。

為了解決流浪寵物泛濫問題,備省市先后出現(xiàn)了公有或私有的流浪寵物救助站。但是因為區(qū)域限定、資金短缺、宣傳困難等問題,流浪寵物的領(lǐng)養(yǎng)、助養(yǎng)發(fā)展緩慢。但是隨著Intcmet技術(shù)的發(fā)展,尤其是電子商務(wù)的快速普及,為寵物的領(lǐng)養(yǎng)、助養(yǎng)的普及與快速發(fā)展提供了良好的條件。雖然網(wǎng)絡(luò)上已有一些相關(guān)的領(lǐng)養(yǎng)救助網(wǎng)站,但因信息更新不及時、地域限制、人力物力資源匱乏等問題造成有領(lǐng)養(yǎng)意向和條件的愛心人士的不能或者推遲領(lǐng)養(yǎng),救助站內(nèi)部又存在動物泛濫、資金緊缺的情況,不能形成一個良性循環(huán)。因此開發(fā)一個在線的流浪寵物領(lǐng)養(yǎng)系統(tǒng)就成了當(dāng)務(wù)之急。

1.2研究現(xiàn)狀

在美國和加拿大,流浪寵物由民間救助組織負(fù)責(zé)收留。兩國均有全國性的民間救助動物組織,一部分經(jīng)費來自政府資助,其余來自民間捐款。SPCA(the Society for the Prevention of Cruelty to Animals) 是由Henry Bergh創(chuàng)建的非盈利性公益組織,意在像人類傳達動物們的聲音。專門保護遭受遺棄或虐待的動物的SCPA如今已經(jīng)幾乎遍布美國,并且影響擴散到世界上許多國家或地區(qū),如香港的香港愛護動物協(xié)會(HKSPCA).在國外,由于流浪動物救助組織的規(guī)模較大,因此他們的官方網(wǎng)站也更加正式,功能更加完善。例如SPCA的官方網(wǎng)站設(shè)有捐助模塊、科普模塊、收養(yǎng)模塊、調(diào)查模塊、介紹模塊

在我國流浪寵物救助領(lǐng)養(yǎng)一直是全社會普遍關(guān)注的問題之一,早在2017年,全國兩會時便有代表提出了做好流浪寵物救助工作的建議,且獲得了社會的普遍關(guān)注,這也表明了我國流浪動物救助事業(yè)正在步步成長。但流浪動物救助是一項長期性且復(fù)雜性的工作,且此項工作開展過程中需要投入大量的人力、物力及財力,如何保障流浪動物救助工作可以長期穩(wěn)定的開展是必須研究的重要問題。我國目前對于流浪動物的救助領(lǐng)養(yǎng)與管理機制還不夠完善,更多的是依靠民間自發(fā)性地組織志愿者性質(zhì)的救助站進行小范圍的救助。國內(nèi)大部分流浪動物領(lǐng)養(yǎng)救助組織由于規(guī)模較小,組織網(wǎng)站主要有兩種形式。一種是直接使用博客作為網(wǎng)站,這樣建設(shè)的網(wǎng)站較為簡陋,通常只有文章發(fā)布功能,訪客與救助組織的交流則需要通過博客里預(yù)留的聯(lián)系方式,使用其他工具進行,如利用豆瓣博客建立的流浪動物領(lǐng)養(yǎng)救助站。另一種便是使用現(xiàn)成的網(wǎng)站建設(shè)模板進行建站,這種方式建設(shè)的網(wǎng)站比上一種方法中的更加美觀,但也缺乏實用性如何加快流浪寵物救助領(lǐng)養(yǎng)系統(tǒng)發(fā)展的步伐呢?這問題的解決正是如今電子商務(wù)與流浪寵物領(lǐng)養(yǎng)完美結(jié)合的關(guān)鍵。互聯(lián)網(wǎng)的快速發(fā)展,人們對網(wǎng)絡(luò)的依賴,以及網(wǎng)絡(luò)給人們帶來了如此便利,快捷,全天的服務(wù)。同時,網(wǎng)絡(luò)的虛擬空間成為80后、90后、00后年輕人的主要活動場所傳統(tǒng)的生活方式逐漸被這種新的生活方式所取代,大家都會有意識的通過網(wǎng)絡(luò)去實現(xiàn)自己的需求。

1.3本文的組織結(jié)構(gòu)

六個章節(jié)共同組成了本文研究及設(shè)計內(nèi)容,包括:

第一章:緒論。本文章的開頭部分,對本題目的研究背景和研究意義等一些做文字性的描述。

第二章:相關(guān)技術(shù)介紹。主要介紹SSM框架、Java嵌入式腳本語言、B/S模式等。

第三章:系統(tǒng)分析。包括系統(tǒng)總體需求描述、功能性角度分析系統(tǒng)需求、非功能性等各個方面分析系統(tǒng)是否可以實現(xiàn)。

第四章:系統(tǒng)設(shè)計。本文章的重要部分,提供了系統(tǒng)架構(gòu)的詳細設(shè)計和一些主要功能模塊的設(shè)計說明。

第五章:系統(tǒng)實現(xiàn)。將本系統(tǒng)分為前提的開發(fā)工具介紹和后期的功能代碼實現(xiàn)。

第六章:系統(tǒng)測試。系統(tǒng)完成后,根據(jù)各個模塊的測試用例才對各個模塊進行功能測試。

第2章相關(guān)技術(shù)介紹

2.1開發(fā)技術(shù)

本系統(tǒng)前端部分基于MVVM模式進行開發(fā),采用B/S模式,后端部分基于Java的ssm框架進行開發(fā)。

前端部分:前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現(xiàn)動態(tài)路由和全局狀態(tài)管理,Ajax實現(xiàn)前后端通信,Element UI組件庫使頁面快速成型,項目前端通過柵格布局實現(xiàn)響應(yīng)式,可適應(yīng)PC端、平板端、手機端等不同屏幕大小尺寸的完美布局展示。

后端部分:采用ssm作為開發(fā)框架,同時集成MyBatis、Redis等相關(guān)技術(shù)。

2.2MVVM模式

MVVM是Model-View-ViewModel的簡寫。它本質(zhì)上就是MVC 的改進版。MVVM 就是將其中的View 的狀態(tài)和行為抽象化,讓我們將視圖 UI 和業(yè)務(wù)邏輯分開。當(dāng)然這些事 ViewModel 已經(jīng)幫我們做了,它可以取出 Model 的數(shù)據(jù)同時幫忙處理 View 中由于需要展示內(nèi)容而涉及的業(yè)務(wù)邏輯。微軟的WPF帶來了新的技術(shù)體驗,如Silverlight、音頻、視頻、3D、動畫……,這導(dǎo)致了軟件UI層更加細節(jié)化、可定制化。同時,在技術(shù)層面,WPF也帶來了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結(jié)合的應(yīng)用方式時發(fā)展演變過來的一種新型架構(gòu)框架。它立足于原有MVP框架并且把WPF的新特性糅合進去,以應(yīng)對客戶日益復(fù)雜的需求變化。

2.3MySQL數(shù)據(jù)庫

科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術(shù),數(shù)碼相機用到了光電檢測技術(shù),比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數(shù)據(jù)庫,而這次的流浪寵物領(lǐng)養(yǎng)系統(tǒng)也需要這項技術(shù)的支持。

用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數(shù)據(jù)進行分類,然后分別保存在表里,這樣的特別操作就會提高數(shù)據(jù)管理系統(tǒng)自身的速度,讓數(shù)據(jù)庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網(wǎng)站系統(tǒng)。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象。

2.4B/S結(jié)構(gòu)

B/S(Browser/Server)比前身架構(gòu)更為省事的架構(gòu)。它借助Web server完成數(shù)據(jù)的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果, 不需要考慮不停裝軟件的問題。

2.5SSM框架介紹

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內(nèi)容)。常作為數(shù)據(jù)源較簡單的web項目的框架。

1.1 Spring

Spring就像是整個項目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實體類的構(gòu)造方法來實例化對象。也可以稱之為項目中的粘合劑。

Spring的核心思想是IoC(控制反轉(zhuǎn)),即不再需要程序員去顯式地`new`一個對象,而是讓Spring框架幫你來完成這一切。

1.2 SpringMVC

SpringMVC在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔(dān)中介或是前臺這樣的職責(zé),將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應(yīng)請求所執(zhí)行的操作。SpringMVC相當(dāng)于SSH框架中struts。

1.3 mybatis

mybatis是對jdbc的封裝,它讓數(shù)據(jù)庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關(guān)聯(lián)到各實體類的Mapper文件,Mapper文件中配置了每個類對數(shù)據(jù)庫所需進行的sql語句映射。在每次與數(shù)據(jù)庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執(zhí)行sql命令。

頁面發(fā)送請求給控制器,控制器調(diào)用業(yè)務(wù)層處理邏輯,邏輯層向持久層發(fā)送請求,持久層與數(shù)據(jù)庫交互,后將結(jié)果返回給業(yè)務(wù)層,業(yè)務(wù)層將處理邏輯發(fā)送給控制器,控制器再調(diào)用視圖展現(xiàn)數(shù)據(jù)。

2.6Vue.js 主要功能

Vue.js是一套構(gòu)建用戶界面的漸進式框架。與其他重量級框架不同的是,Vue采用自底向上增量開發(fā)的設(shè)計。Vue 的核心庫只關(guān)注視圖層,并且非常容易學(xué)習(xí),非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅(qū)動采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用。

Vue.js 的目標(biāo)是通過盡可能簡單的 API 實現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。

Vue.js 自身不是一個全能框架——它只聚焦于視圖層。因此它非常容易學(xué)習(xí),非常容易與其它庫或已有項目整合。另一方面,在與相關(guān)工具和支持庫一起使用時,Vue.js 也能驅(qū)動復(fù)雜的單頁應(yīng)用

第3章系統(tǒng)分析

3.1可行性分析

3.1.1法律可行性分析

開發(fā)軟件有沒有觸犯法律,這涉及到軟件或者系統(tǒng)能不能發(fā)布的問題。如果觸犯了法律,就必將會受到法律的制裁。常見法律問題就是軟件抄襲問題,若是抄襲別人軟件,將會受到嚴(yán)厲懲罰。

3.1.2技術(shù)可行性分析

軟件產(chǎn)業(yè)經(jīng)過多年的發(fā)展,現(xiàn)在已經(jīng)達到了很大的規(guī)模,從事軟件開發(fā)的專業(yè)人員不計其數(shù),軟件產(chǎn)業(yè)的重要性已經(jīng)上升到了影響和推動國民經(jīng)濟發(fā)展的核心地位。本系統(tǒng)基于的架構(gòu),目前技術(shù)已經(jīng)非常的成熟,是不存在技術(shù)上面難以實現(xiàn)的麻煩。

3.1.3經(jīng)濟可行性分析

開發(fā)軟件所需的時間、人力和物力成本,開發(fā)完成后的收益如何,從投資回報的角度軟件所需功能在現(xiàn)有經(jīng)濟條件能不能實現(xiàn)等進行深入的考慮,都符合實際的要求。所以流浪寵物領(lǐng)養(yǎng)系統(tǒng)具有經(jīng)濟可行性和實用性,可以節(jié)約管理成本

3.2功能需求分析

流浪寵物領(lǐng)養(yǎng)系統(tǒng)主要是為了更加地完善流浪寵物救助領(lǐng)養(yǎng)的服務(wù)情況,對用戶的信息、流浪寵物信息、流浪寵物領(lǐng)養(yǎng)等提供了方便的機制。本系統(tǒng)有多類使用者,分別是管理員和用戶注冊。以下是從這兩種用戶的角度分別介紹本系統(tǒng)所要實現(xiàn)的功能。

用戶:

注冊:首先檢查用戶名和郵箱是否存在,如不存在即可進行注冊,并將用戶輸入的密碼進行MD5加密,注冊成功后提示注冊成功,并將用戶信息保存到數(shù)據(jù)庫中。

登錄:使用流浪寵物領(lǐng)養(yǎng)系統(tǒng)前是需要用戶登錄個人賬號。

寵物資訊:用戶可以在線進行寵物資訊瀏覽等。

寵物領(lǐng)養(yǎng):用戶可以進行寵物信息瀏覽,選擇自己想要領(lǐng)養(yǎng)的寵物進行領(lǐng)養(yǎng)申請。

管理員:

用戶管理:對用戶進行管理,用戶的注冊,包括用戶昵稱、用戶名信息、用戶的賬號信息。

寵物資訊管理:對寵物資訊進行發(fā)布管理。

寵物信息管理:對寵物信息進行維護管理。

領(lǐng)養(yǎng)申請管理:對領(lǐng)養(yǎng)申請進行審核管理。

寵物分類管理:對寵物信息進行分類管理。

3.3非功能需求分析

系統(tǒng)非功能需求有非常多,比如性能需求、可承載最大用戶數(shù)、穩(wěn)定性、易用性需求等。本系統(tǒng)分析時考慮到易用性需求,因為系統(tǒng)是給人使用的,所以必須充分從用戶的角度出發(fā),考慮用戶體驗,使系統(tǒng)易理解易上手易操作。

3.4用例分析

1.普通用戶主要使用系統(tǒng)進行流浪寵物查詢以及領(lǐng)養(yǎng)申請,下圖所示為普通用戶的用例 ??????????????

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖3-1 普通用戶用例圖

2.管理員主要負(fù)責(zé)用戶管理、寵物信息管理、寵物領(lǐng)養(yǎng)管理、寵物分類管理,下圖所示描述管理員的用例圖。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖3-2 管理員用例圖

3.5業(yè)務(wù)流程分析

系統(tǒng)業(yè)務(wù)流程圖如下所示。????????????????????????????????????????

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

?圖3-3 系統(tǒng)業(yè)務(wù)流程圖

業(yè)務(wù)流程圖(TFD)通過一些特定的符號描述業(yè)務(wù)的處理過程,它重點強調(diào)業(yè)務(wù)過程中每一項處理活動和具體業(yè)務(wù)部門的關(guān)系,選擇部分模塊進行具體描述。重點對本系統(tǒng)整體業(yè)務(wù)中最為主要的寵物信息查詢及領(lǐng)養(yǎng)訂單業(yè)務(wù)進行描述,用戶進入流浪寵物領(lǐng)養(yǎng)系統(tǒng)后進行各種模塊信息的瀏覽,另外,管理人員進入后端管理,以執(zhí)行寵物領(lǐng)養(yǎng)模塊的相關(guān)管理方法,并在解決后向客戶提供反饋機制。

3.6數(shù)據(jù)流程分析

如下為系統(tǒng)的層數(shù)據(jù)流圖,外部實體有用戶和管理員,分別對系統(tǒng)輸入數(shù)據(jù),從而得到要輸出的數(shù)據(jù)。?

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

???

圖3-4系統(tǒng)頂層數(shù)據(jù)流圖

如下圖所示為系統(tǒng)層數(shù)據(jù)流圖。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖3-5系統(tǒng)底層數(shù)據(jù)流圖

流浪寵物領(lǐng)養(yǎng)系統(tǒng)底層數(shù)據(jù)流圖主要描述系統(tǒng)底層模塊的數(shù)據(jù)流、數(shù)據(jù)載體、數(shù)據(jù)處理、外部實體的具體交互。本系統(tǒng)就是管理員和普通用戶在用戶管理、寵物信息、寵物領(lǐng)養(yǎng)管理等模塊上的數(shù)據(jù)交互。

第4章系統(tǒng)設(shè)計

4.1系統(tǒng)架構(gòu)設(shè)計

本系統(tǒng)架構(gòu)設(shè)計主要分為可以3層,主要有Web層,業(yè)務(wù)層,Model層。其中web層還包括View層和Controller層,Model層包括元數(shù)據(jù)擴展層和數(shù)據(jù)訪問層。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖4-1系統(tǒng)架構(gòu)圖

4.2系統(tǒng)功能結(jié)構(gòu)

為了將系統(tǒng)從“做什么”落實到“怎么做”,基于系統(tǒng)設(shè)計原則,對系統(tǒng)功能進行更適合編碼實現(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)圖。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖4-2系統(tǒng)功能結(jié)構(gòu)圖

4.3功能模塊設(shè)計

用戶管理針對所有用戶和管理員。未注冊用戶點擊注冊,進入注冊頁面填寫新用戶信息,得到自定義生成賬號后,注冊完成。未注冊用戶注冊的活動圖如下圖所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖4-3未注冊用戶注冊活動圖

用戶可進行登錄使用更多功能,首先進入用戶登錄界面,輸入用戶賬號和密碼,后臺對賬號和密碼信息進行核對驗證,驗證成功則頁面直接顯示登錄用戶昵稱代表登錄成功,否則返回用戶登錄界面。用戶登錄活動圖如下圖。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖4-4用戶登錄活動圖

用戶登錄后,進入功能頁面,進行寵物資訊瀏覽,寵物信息搜索寵物領(lǐng)養(yǎng)。用戶使用功能活動圖如所示

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖4-5用戶使用功能活動圖

用戶功能界面可對自己的密碼進行修改。進入修改密碼界面后核對當(dāng)前密碼,核對成功后填寫新密碼。修改密碼活動圖如下圖所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖4-6修改密碼活動圖

4.4數(shù)據(jù)庫設(shè)計

流浪寵物領(lǐng)養(yǎng)系統(tǒng)采用的數(shù)據(jù)庫是MySQL,該部分將根據(jù)系統(tǒng)需求和設(shè)計,設(shè)計合理的數(shù)據(jù)庫。本系統(tǒng)考慮到之后系統(tǒng)的擴展集群,數(shù)據(jù)庫將不使用外鍵。此外,不用外鍵時數(shù)據(jù)管理也較為簡單,操作更加方便,性能更高。

4.4.1E-R圖

E-R圖,更加直觀的告訴開發(fā)人員系統(tǒng)的各個數(shù)據(jù)的屬性,各個數(shù)據(jù)之間的聯(lián)系,各個數(shù)據(jù)的類型。能通過該模型更直觀地了解數(shù)據(jù)庫的設(shè)計,并根據(jù)對其逐漸改善。

本系統(tǒng)圖設(shè)計,如下圖所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖4-7系統(tǒng)E-R圖

4.4.2表結(jié)構(gòu)設(shè)計

本系統(tǒng)根據(jù)第三范式的思想設(shè)計數(shù)據(jù)庫,減少最大程度的冗余,總共建立有多個表,用戶注冊表、管理員表、寵物信息表、寵物領(lǐng)養(yǎng)表等。

表結(jié)構(gòu)如下所示。

名稱

類型

長度

不是null

主鍵

注釋

registered_user_id

int

11

注冊用戶ID

gender

varchar

64

性別

address

varchar

64

地址

examine_state

varchar

16

審核狀態(tài)

recommend

int

11

智能推薦

user_id

int

11

用戶ID

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

名稱

類型

長度

不是null

主鍵

注釋

notice_id

mediumint

8

公告id:

title

varchar

125

標(biāo)題:

content

longtext

0

正文:

create_time

timestamp

0

創(chuàng)建時間:

update_time

timestamp

0

更新時間:

名稱

類型

長度

不是null

主鍵

注釋

slides_id

int

10

輪播圖ID:

title

varchar

64

標(biāo)題:

content

varchar

255

內(nèi)容:

url

varchar

255

鏈接:

img

varchar

255

輪播圖:

hits

int

10

點擊量:

create_time

timestamp

0

創(chuàng)建時間:

update_time

timestamp

0

更新時間:

名稱

類型

長度

不是null

主鍵

注釋

pet_information_id

int

11

寵物信息ID

pet_number

varchar

64

寵物編號

pet_name

varchar

64

寵物名稱

pet_species

varchar

64

寵物種類

pet_sex

varchar

64

寵物性別

age

varchar

64

年齡

state

varchar

64

狀態(tài)

photo

varchar

255

照片

vaccination_status

varchar

64

疫苗接種情況

adoption_address

varchar

64

領(lǐng)養(yǎng)地址

details

longtext

0

詳情

hits

int

11

點擊數(shù)

praise_len

int

11

點贊數(shù)

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

名稱

類型

長度

不是null

主鍵

注釋

pet_classification_id

int

11

寵物分類ID

pet_species

varchar

64

寵物種類

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

名稱

類型

長度

不是null

主鍵

注釋

praise_id

int

10

點贊ID:

user_id

int

11

點贊人:

create_time

timestamp

0

創(chuàng)建時間:

update_time

timestamp

0

更新時間:

source_table

varchar

255

來源表:

source_field

varchar

255

來源字段:

source_id

int

10

來源ID:

status

tinyint

1

點贊狀態(tài)

名稱

類型

長度

不是null

主鍵

注釋

pet_adoption_id

int

11

寵物領(lǐng)養(yǎng)ID

adoption_number

varchar

64

領(lǐng)養(yǎng)單號

pet_number

varchar

64

寵物編號

pet_name

varchar

64

寵物名稱

pet_species

varchar

64

寵物種類

pet_sex

varchar

64

寵物性別

user

int

11

用戶

full_name

varchar

64

姓名

contact_number

varchar

64

聯(lián)系電話

adoption_instructions

text

0

領(lǐng)養(yǎng)說明

examine_state

varchar

16

審核狀態(tài)

examine_reply

varchar

16

審核回復(fù)

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

第5章系統(tǒng)實現(xiàn)

5.1開發(fā)工具

系統(tǒng)中應(yīng)用的開發(fā)工具總結(jié)如下表所示。

表5-1開發(fā)工具

名稱

工具

版本

操作系統(tǒng)

IDE(Integrated Development Environment)

Windows

Eclipse

7/8/10

2017

服務(wù)器

Tomcat

9.10.7

JDK(Java Development Kit)

JDK

Java SE 8.0 (1.8.0)

數(shù)據(jù)庫

瀏覽器

界面工具

MySQL

谷歌

Photoshop

5.7

6.0

2016

5.2注冊模塊

未注冊用戶在用戶注冊界面uerRegister.jsp,輸入新用戶信息,點擊注冊后,新用戶信息由界面?zhèn)魅肟刂茖觰serAction,調(diào)用addUser(user)方法,通過userDAOImp向數(shù)據(jù)庫用戶表插入用戶信息,由于用戶賬號是自動生成的,若成功則反饋注冊成功,并提示新用戶的用戶賬號;若失敗則回到登錄界面,并顯示登錄失敗。

注冊界面如下所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-1注冊界面

用戶注冊關(guān)鍵代碼如下所示。

/**

?????* 注冊

?????* @return

?????*/

????@PostMapping("register")

????public Map<String, Object> signUp(HttpServletRequest request) throws IOException {

????????// 查詢用戶

????????Map<String, String> query = new HashMap<>();

????????Map<String,Object> map = service.readBody(request.getReader());

????????query.put("username",String.valueOf(map.get("username")));

????????List list = service.selectBaseList(service.select(query, new HashMap<>()));

????????if (list.size()>0){

????????????return error(30000, "用戶已存在");

????????}

????????map.put("password",service.encryption(String.valueOf(map.get("password"))));

????????service.insert(map);

????????return success(1);

}

????public Map<String,Object> readBody(BufferedReader reader){

????????BufferedReader br = null;

????????StringBuilder sb = new StringBuilder("");

????????try{

????????????br = reader;

????????????String str;

????????????while ((str = br.readLine()) != null){

????????????????sb.append(str);

????????????}

????????????br.close();

????????????String json = sb.toString();

????????????return JSONObject.parseObject(json, Map.class);

????????}catch (IOException e){

????????????e.printStackTrace();

????????}finally{

????????????if (null != br){

????????????????try{

????????????????????br.close();

????????????????}catch (IOException e){

????????????????????e.printStackTrace();

????????????????}

????????????}

????????}

????????return null;

????}

????public void insert(Map<String,Object> body){

????????E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

????????baseMapper.insert(entity);

????????log.info("[{}] - 插入操作:{}",entity);

}

5.3登錄/注銷模塊

用戶在首頁點擊登錄,進入用戶登錄界面uerLogin.jsp,輸入用戶賬號和密碼,點擊登錄,用戶賬號和密碼信息由界面?zhèn)魅肟刂茖觰serAction,調(diào)用userLogin(user)方法,通過userDAOImp向數(shù)據(jù)庫用戶表搜索該用戶賬號與密碼,將最終結(jié)果反饋到前端。若成功則回到首頁;用戶成功登錄,若失敗則回到登錄界面,并顯示登錄失敗。

用戶點擊注銷,清空瀏覽器session值,然后返回登錄頁或者首頁。

登錄界面如下所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-2登錄界面

登錄界面關(guān)鍵代碼如下所示。

/**

?????* 登錄

?????* @param data

?????* @param httpServletRequest

?????* @return

?????*/

????@PostMapping("login")

????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

????????log.info("[執(zhí)行登錄接口]");

????????String username = data.get("username");

????????String email = data.get("email");

????????String phone = data.get("phone");

????????String password = data.get("password");

????????List resultList = null;

????????Map<String, String> map = new HashMap<>();

????????if(username != null && "".equals(username) == false){

????????????map.put("username", username);

????????????resultList = service.select(map, new HashMap<>()).getResultList();

????????}

????????else if(email != null && "".equals(email) == false){

????????????map.put("email", email);

????????????resultList = service.select(map, new HashMap<>()).getResultList();

????????}

????????else if(phone != null && "".equals(phone) == false){

????????????map.put("phone", phone);

????????????resultList = service.select(map, new HashMap<>()).getResultList();

????????}else{

????????????return error(30000, "賬號或密碼不能為空");

????????}

????????if (resultList == null || password == null) {

????????????return error(30000, "賬號或密碼不能為空");

????????}

????????//判斷是否有這個用戶

????????if (resultList.size()<=0){

????????????return error(30000,"用戶不存在");

????????}

????????User byUsername = (User) resultList.get(0);

????????Map<String, String> groupMap = new HashMap<>();

????????groupMap.put("name",byUsername.getUserGroup());

????????List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();

????????if (groupList.size()<1){

????????????return error(30000,"用戶組不存在");

????????}

????????UserGroup userGroup = (UserGroup) groupList.get(0);

????????//查詢用戶審核狀態(tài)

????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){

????????????String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

????????????String res = String.valueOf(service.runCountSql(sql).getSingleResult());

????????????if (res==null){

????????????????return error(30000,"用戶不存在");

????????????}

????????????if (!res.equals("已通過")){

????????????????return error(30000,"該用戶審核未通過");

????????????}

????????}

????????//查詢用戶狀態(tài)

????????if (byUsername.getState()!=1){

????????????return error(30000,"用戶非可用狀態(tài),不能登錄");

????????}

????????String md5password = service.encryption(password);

????????if (byUsername.getPassword().equals(md5password)) {

????????????// 存儲Token到數(shù)據(jù)庫

????????????AccessToken accessToken = new AccessToken();

????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

????????????accessToken.setUser_id(byUsername.getUserId());

????????????tokenService.save(accessToken);

????????????// 返回用戶信息

????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

????????????user.put("token", accessToken.getToken());

????????????JSONObject ret = new JSONObject();

????????????ret.put("obj",user);

????????????return success(ret);

????????} else {

????????????return error(30000, "賬號或密碼不正確");

????????}

}

5.4用戶模塊

5.4.1個人資料模塊

登錄用戶在首頁點擊進入用戶中心userCenter.jsp,再點擊修改個人信息按鈕進入userChangeInfo.jsp界面,系統(tǒng)根據(jù)session中存儲的目前登錄的用戶的賬號,向控制層userAction發(fā)送請求,搜索當(dāng)前用戶信息,userAction向userDAOImp調(diào)用queryByUserId(user),向數(shù)據(jù)庫的用戶表搜索當(dāng)前用戶信息并將用戶信息以對象的形式層層返回到userChangeInfo.jsp界面,顯示出當(dāng)前用戶的個人信息。

若用戶要對個人信息進行修改,則通過修改當(dāng)前信息之后點擊確認(rèn),向控制層userAction發(fā)送更改后的用戶信息,調(diào)用changeUser(user)方法,通過userDAOImp向數(shù)據(jù)庫用戶表更新用戶信息,若成功則反饋注冊成功,則返回的userChangeInfo.jsp界面被更改成功;若失敗則顯示修改失敗。

5.4.2寵物資訊模塊

用戶在登錄狀態(tài)下瀏覽寵物資訊時,點擊加入寵物資訊信息后前臺發(fā)起請求,將對應(yīng)的寵物shuliang、id參數(shù)信息從前臺傳遞GoumaiController類里,匹配到add()方法,add()方法調(diào)用GoumaiServiceImpl類的add()方法。

寵物資訊界面如下所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-3寵物資訊界面

5.4.3寵物領(lǐng)養(yǎng)模塊

用戶在登錄狀態(tài)下點擊寵物領(lǐng)養(yǎng)頁面可將進行寵物領(lǐng)養(yǎng)申請?zhí)峤?/span>,從session中取出該寵物信息,點擊加入寵物領(lǐng)養(yǎng),發(fā)起請求,將對應(yīng)的寵物領(lǐng)養(yǎng)信息chongwulinyang、id參數(shù)信息從前臺傳遞linyangController類里,匹配到add()方法,add()方法調(diào)用linyangServiceImpl類的add()方法。

寵物領(lǐng)養(yǎng)界面如下所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-4寵物領(lǐng)養(yǎng)界面

寵物領(lǐng)養(yǎng)的關(guān)鍵代碼如下。

@PostMapping("/add")

????@Transactional

????public Map<String, Object> add(HttpServletRequest request) throws IOException {

????????service.insert(service.readBody(request.getReader()));

????????return success(1);

????}

????@Transactional

????public Map<String, Object> addMap(Map<String,Object> map){

????????service.insert(map);

????????return success(1);

}

????public Map<String,Object> readBody(BufferedReader reader){

????????BufferedReader br = null;

????????StringBuilder sb = new StringBuilder("");

????????try{

????????????br = reader;

????????????String str;

????????????while ((str = br.readLine()) != null){

????????????????sb.append(str);

????????????}

????????????br.close();

????????????String json = sb.toString();

????????????return JSONObject.parseObject(json, Map.class);

????????}catch (IOException e){

????????????e.printStackTrace();

????????}finally{

????????????if (null != br){

????????????????try{

????????????????????br.close();

????????????????}catch (IOException e){

????????????????????e.printStackTrace();

????????????????}

????????????}

????????}

????????return null;

}

????public void insert(Map<String,Object> body){

????????StringBuffer sql = new StringBuffer("INSERT INTO ");

????????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()){

????????????Object value = entry.getValue();

????????????if (value instanceof String){

????????????????sql.append("'").append(entry.getValue()).append("'").append(",");

????????????}else {

????????????????sql.append(entry.getValue()).append(",");

????????????}

????????}

????????sql.deleteCharAt(sql.length() - 1);

????????sql.append(")");

????????log.info("[{}] - 插入操作:{}",table,sql);

????????Query query = runCountSql(sql.toString());

????????query.executeUpdate();

????}

5.5管理員模塊

5.5.1密碼修改模塊

管理員選擇個人中心的修改本人密碼。通過密碼框輸入現(xiàn)密碼和2次新密碼,如果現(xiàn)密碼錯誤,則提示修改失敗。如果2次新密碼不一致,則提示修改失敗。都沒問題的話,系統(tǒng)提示修改成功,并返回登錄界面。

公告欄管理界面圖如下所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-5公告欄管理界面

用戶信息界面如下所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-6用戶信息界面

5.5.2寵物信息管理模塊

根據(jù)需求,需要對寵物信息進行添加、刪除或修改詳情信息。刪除或修改寵物信息時,系統(tǒng)根據(jù)寵物信息的狀態(tài)判定為可刪除狀態(tài)下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達后臺,還會先查詢寵物信息狀態(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è)計效果如下圖所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-7寵物信息管理界面

寵物信息管理界面邏輯代碼如下:

?@RequestMapping("/get_list")

????public Map<String, Object> getList(HttpServletRequest request) {

????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

????????return success(map);

}

5.5.3寵物領(lǐng)養(yǎng)管理模塊

寵物領(lǐng)養(yǎng)功能需要考慮高并發(fā),防止出現(xiàn)寵物重復(fù)提交領(lǐng)養(yǎng)申請狀態(tài)顯示出錯等情況,特對領(lǐng)養(yǎng)這一共享數(shù)據(jù)增加鎖機制。在樂觀鎖、悲觀鎖以及線程鎖中,綜合考慮性能效率和錯誤的可接受性選擇了樂觀鎖機制。樂觀鎖的實現(xiàn)方式是使用版本標(biāo)識來確定讀到的數(shù)據(jù)與提交時的數(shù)據(jù)是否一致,提交后修改版本標(biāo)識,不一致時可以采取丟棄和再次嘗試的策略。在數(shù)據(jù)庫寵物表(對應(yīng)寵物實體)設(shè)計中增加了version字段,每次數(shù)據(jù)提交時(更改寵物狀態(tài))會判斷version是否匹配,若不匹配停止本次提交,若匹配則提交成功并增加version的值。

寵物領(lǐng)養(yǎng)功能整體流程:用戶瀏覽寵物領(lǐng)養(yǎng)信息時,同時會顯示寵物的狀態(tài),系統(tǒng)會在其顯示詳細信息的頁面時便會判斷寵物的狀態(tài),若寵物狀態(tài)為可領(lǐng)養(yǎng),則會顯示申請的鏈接按鈕。在用戶點擊申請按鈕時,會先通過攔截器判斷用戶是否登錄,若未登錄,會跳轉(zhuǎn)至登錄頁面,提示用戶先登錄,若為登錄用戶就會跳轉(zhuǎn)至填寫申請信息的頁面,填寫好申請信息之后,點擊提交按鈕,申請成功之后返回提示信息,告知用戶申請成功。

寵物領(lǐng)養(yǎng)流程圖如下圖所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-8寵物領(lǐng)養(yǎng)流程圖

寵物領(lǐng)養(yǎng)管理界面如下圖所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-9寵物領(lǐng)養(yǎng)管理界面

寵物領(lǐng)養(yǎng)管理關(guān)鍵代碼如下。

???@RequestMapping(value = {"/sum_group", "/sum"})

????public Map<String, Object> sum(HttpServletRequest request) {

????????Query count = service.sum(service.readQuery(request), service.readConfig(request));

????????return success(count.getResultList());

}

5.5.4寵物分類管理模塊

添加寵物分類時,會給出數(shù)據(jù)填寫的頁面,該頁面根據(jù)填寫好的分類信息同樣會事先發(fā)送Ajax請求查詢類型編號是否已存在,數(shù)據(jù)填寫好之后提交到后臺,會調(diào)用相關(guān)服務(wù)在數(shù)據(jù)庫中插入記錄。

寵物分類信息頁面設(shè)計效果如下圖所示。

基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案,java,php,spring boot,spring cloud,django,小程序,mysql

圖5-10寵物分類管理界面圖

寵物分類管理的關(guān)鍵代碼如下。

?@RequestMapping(value )

????@Transactional

????public Map<String, Object> del(HttpServletRequest request) {

????????service.delete(service.readQuery(request), service.readConfig(request));

????????return success(1);

}

????@Transactional

????public void delete(Map<String,String> query,Map<String,String> config){

????????StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");

????????sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));

????????log.info("[{}] - 刪除操作:{}",table,sql);

????????Query query1 = runCountSql(sql.toString());

????????query1.executeUpdate();

????}

第6章系統(tǒng)測試

6.1測試概述

軟件測試是軟件開發(fā)完成后必須經(jīng)過的一道程序,它在軟件開發(fā)過程中地位十分重要,需要由專業(yè)的測試工程師來對軟件進行各方面的測試,大到功能模塊測試,小到代碼的單元測試,這對測試工程師來說需要有足夠的耐心和專業(yè)的測試方案,軟件測試歸根結(jié)底就是對軟件的結(jié)構(gòu)和功能的綜合測評,需要做到結(jié)構(gòu)穩(wěn)定和功能正確,二者兼顧。軟件測試也叫尋找系統(tǒng)bug的過程,世界上沒有完美無缺、不存在bug的軟件,只能將軟件的bug降到最低最小,來追求極致。

6.2測試過程

6.2.1登錄測試

登錄測試是系統(tǒng)最開始就要進行,測試用戶能否登錄,才能完成后續(xù)的功能操作。

登錄測試用例表如下所示。

表6-1登錄測試

用例編號

YL001

程序版本

1.00

功能名稱

使用者登錄測試

編制人

李鐵蛋

功能描述

根據(jù)用戶的登錄情況測試

用例目的

測試用戶登錄情況是否正確

測試項

測試數(shù)據(jù)

測試結(jié)果

預(yù)期結(jié)果

用戶名

為空

請輸入用戶名

請輸入用戶名

密碼

為空

請輸入密碼

請輸入密碼

用戶密碼組合

用戶名:klouse?密碼 klouses

用戶與密碼不匹配

用戶與密碼不匹配

用戶密碼組合

用戶名 :?klouse?密碼

klouse

進入系統(tǒng)

正確的用戶名和密碼

登錄系統(tǒng)

6.2.2信息錄入測試

管理員在發(fā)布信息頁面,通過按照預(yù)先格式發(fā)布信息,如果因為輸入時候缺少相關(guān)內(nèi)容,就不能發(fā)布成功,且有相應(yīng)錯誤提示

信息錄入發(fā)布測試用例表如下所示。

表6-1信息錄入發(fā)布測試

用例編號

YL002

程序版本

1.00

功能名稱

信息發(fā)布測試

編制人

李鐵蛋

功能描述

對使用者發(fā)布或者錄入信息進行測試,判斷其功能是否達到預(yù)期的要求

用例目的

對系統(tǒng)使用者錄入發(fā)布信息進行原型測試。

測試項

測試數(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ā)布成功

6.2.3信息更新測試

管理員在更新信息頁面,通過按照預(yù)先格式更新信息,如果因為輸入時候缺少相關(guān)內(nèi)容或者更新的數(shù)據(jù)不符合當(dāng)前規(guī)范的話,就不能更新成功,且有相應(yīng)錯誤提示

信息更新測試用例表如下所示。

表6-1信息更新測試

用例編號

YL003

程序版本

1.00

功能名稱

信息更新測試

編制人

李鐵蛋

功能描述

對使用者更新信息進行測試,判斷其功能是否達到預(yù)期的要求

用例目的

對系統(tǒng)使用者更新信息進行原型測試。

測試項

測試數(shù)據(jù)

測試結(jié)果

預(yù)期結(jié)果

屬性1

編號:321

編號更新成功

編號更新成功

屬性2

名稱:名稱1

名稱更新成功

名稱更新成功

屬性3

內(nèi)容:內(nèi)容1234內(nèi)容

內(nèi)容更新成功

內(nèi)容更新成功

全部輸入

數(shù)據(jù)均未更改

更新成功

更新成功

6.2.4信息刪除測試

管理員在信息頁面,通過點擊數(shù)據(jù)刪除按鈕來刪除該條數(shù)據(jù),如果該數(shù)據(jù)和其他數(shù)據(jù)有關(guān)聯(lián),則提示是否確定刪除。

信息刪除測試用例表如下所示。

表6-1信息刪除測試

用例編號

YL004

程序版本

1.00

功能名稱

信息刪除測試

編制人

李鐵蛋

功能描述

對使用者刪除信息進行測試,判斷其功能是否達到預(yù)期的要求

用例目的

對系統(tǒng)使用者刪除信息進行原型測試。

測試項

測試數(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)是否刪除

6.3測試結(jié)果

在經(jīng)過之前的所有的工作之后,通過對軟件的測試方法、測試原則還有典型的測試用例進行全面的、深入的介紹。經(jīng)過對系統(tǒng)的全面測試,系統(tǒng)目前所具有的所有功能均成功的實現(xiàn)并且通過了測試,整個系統(tǒng)實現(xiàn)了基于 Java 開發(fā)的期望。

第7章總結(jié)與展望

7.1總結(jié)

流浪寵物領(lǐng)養(yǎng)系統(tǒng)采用SSM框架開發(fā),該系統(tǒng)非常完美的集優(yōu)點于一身,成熟、強大、易理解易使用,通過使用這個結(jié)構(gòu),降低了開發(fā)的難度。本系統(tǒng)實現(xiàn)了基于SSM流浪寵物領(lǐng)養(yǎng)系統(tǒng),將數(shù)據(jù)操作維護的過程轉(zhuǎn)化成電腦操作流程,具體實現(xiàn)了對系統(tǒng)人員管理、寵物信息數(shù)據(jù)維護、寵物領(lǐng)養(yǎng)數(shù)據(jù)維護,并提供查詢統(tǒng)計功能來對流浪寵物領(lǐng)養(yǎng)系統(tǒng)的相關(guān)數(shù)據(jù)進行統(tǒng)計分析,讓使用者能更清晰的掌握運營情況,幫助使用者進行數(shù)據(jù)操作維護,簡化工作流程,提高工作效率和盈利。

7.2展望

目前完成的流浪寵物領(lǐng)養(yǎng)系統(tǒng),還有許多有待改進的地方。一個是功能上的改進,用戶理應(yīng)可以修改自己的相關(guān)信息,故應(yīng)增設(shè)個人中心功能;另外,系統(tǒng)如果能提供更多的功能就會使得系統(tǒng)更加豐富和多樣化,比如數(shù)據(jù)當(dāng)前分析和未來預(yù)測等。第二個是技術(shù)上的改進,由于對開發(fā)框架不太熟悉,權(quán)限管理這部分,本系統(tǒng)采用一個Java頁面來規(guī)定好導(dǎo)航欄,即跳轉(zhuǎn)的頁面,這相對比較不靈活,如果將URL路徑記錄到數(shù)據(jù)庫并實現(xiàn)增刪查改會比較好;另外就是對EasyUI的使用還不夠熟練,視覺效果和界面觀感有待提升,希望日后能對這個系統(tǒng)有所改進。

參考文獻

[1]單樹倩,任佳勛.基于SSM和Vue框架的數(shù)據(jù)庫原理網(wǎng)站設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2021,17(30):40-41+50.DOI:10.14004/j.cnki.ckt.2021.2868.

[2]喻佳,吳丹新.基于SSM的Web快速開發(fā)框架[J].電腦編程技巧與維護,2021(09):31-33.DOI:10.16184/j.cnki.comprg.2021.09.013.

[3]巢晟盛.基于SSM微服務(wù)架構(gòu)下前后端分離的MVVM模型淺析[J].電腦知識與技術(shù),2021,17(23):128-129+141.DOI:10.14004/j.cnki.ckt.2021.2412.

[4]楊思涵.流浪動物相關(guān)法律與現(xiàn)實問題[J].法制博覽,2021(14):154-156.

[5]邢月,喻德榮.簡析流浪動物救助實踐困境與路徑優(yōu)化[J].大眾標(biāo)準(zhǔn)化,2021(04):71-73.

[6]羅雪櫻,張云雁.流浪動物的法律保護研究——以寧夏為例[J].法制博覽,2020(36):35-36.

[7]趙燦. 《寵愛》移動應(yīng)用設(shè)計的研究[D].北京印刷學(xué)院,2020.DOI:10.26968/d.cnki.gbjyc.2020.000217.

[8]姜蘇. 基于互聯(lián)網(wǎng)平臺解決社會流浪動物問題的可行性研究[D].山東農(nóng)業(yè)大學(xué),2020.DOI:10.27277/d.cnki.gsdnu.2020.001043.

[9]陳薇,劉梓媛,尹婷.新媒體背景下流浪動物救助領(lǐng)養(yǎng)微信公眾號運營研究[J].現(xiàn)代營銷(下旬刊),2020(05):85-86.DOI:10.19932/j.cnki.22-1256/f.2020.05.049.

[10]張雨彤,段娜,楊萌,寧旭,李昶宏.流浪動物導(dǎo)致社會問題的救濟方式[J].法制博覽,2018(12):136+135.

[11]蔣靜,王冰潔.M仔:走在救助路上的愛心姑娘——騰訊公益項目“關(guān)愛生命,善待動物”探訪紀(jì)實[J].中國社會組織,2018(04):50-52.

[12]楊陽,沈海濱,VCG.用心感受狗狗的脈搏[J].金橋,2018(02):38-41.

[13]王波,同雯,王梓昕,李子杰.基于APPCAN的流浪動物領(lǐng)養(yǎng)APP系統(tǒng)設(shè)計[J].電腦知識與技術(shù),2018,13(36):76-77+79.DOI:10.14004/j.cnki.ckt.2018.3953.

[14]張秋雨.流浪動物領(lǐng)養(yǎng)實踐困境與路徑優(yōu)化——基于四川省宜賓市的實證分析[J].法制與社會,2018(15):188-190.DOI:10.19387/j.cnki.1009-0592.2017.05.371.

[15] Jeev Aashraya - A leading Animal Protection and Care Organization to develop additional Shelters for stray Animals in India[J]. M2 Presswire,2018:

[16]Francis E. Hamilton. Leading and Organizing Social Change for Companion Animals[J]. Anthrozo?s,2018,23(3):

致謝

在老師的教導(dǎo)和幫助下,本人完成了本篇論文,老師對論文的內(nèi)容、格式都有非常嚴(yán)格的要求,在我寫畢業(yè)論文的過程中,他多次給出了建議,并定期檢查,對我們嚴(yán)格要求,幫助我們在文檔的編寫上寫到極致和正確,他這種教學(xué)和工作態(tài)度,讓我對他產(chǎn)生無限的敬佩感和尊敬感。寫畢業(yè)論文的同時,作為應(yīng)屆生,我也忙著找工作中,遇到了很多選擇,感到困惑迷茫的時候,老師給了我很多意見,感謝老師的耐心開導(dǎo),跟她的聊天我明白了許多。

我還要感謝我的父母,一直以來都非常支持和相信我,在精神和經(jīng)濟上給了我很多力量,如今我將畢業(yè)走上工作之路,終于能報答父母的養(yǎng)育教導(dǎo)之恩。還有我大學(xué)期間所有老師和全體同學(xué),遇到問題時,這些老師同學(xué)總是無私地幫助我,真的非常感謝,我也會加油努力成長為一個有用的人。文章來源地址http://www.zghlxwxcb.cn/news/detail-826085.html

到了這里,關(guān)于基于SSM的流浪寵物領(lǐng)養(yǎng)系統(tǒng)--270917(免費領(lǐng)源碼+開發(fā)文檔)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包