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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

這篇具有很好參考價值的文章主要介紹了(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

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

摘?要

如今,隨著人們生活水平不斷提高,人們的生活在物質(zhì)滿足的基礎(chǔ)上,更多的人將生活的重點放在追求精神享受的過程中。于此同時,Internet鋪天蓋地的普及,使得這樣的人紛紛通過Internet的方式去尋找精神的滿足。然而領(lǐng)養(yǎng)寵物正是人們現(xiàn)在炙手可熱的一種精神寄托。對于寵物的熱愛讓他們的生活更加充滿愛心和向往。Internet和領(lǐng)養(yǎng)寵物的兩者結(jié)合,大大推動了電子商務(wù)的發(fā)展,促進(jìn)了該行業(yè)的崛起。這正是寵物領(lǐng)養(yǎng)系統(tǒng)誕生的緣由。該系統(tǒng)不僅解決了地理隔離的問題,同時也跟上了網(wǎng)絡(luò)快速發(fā)展的腳步,實現(xiàn)愛寵人士足不出戶的領(lǐng)養(yǎng)到心儀的愛寵。

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

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

?

SSM?pet adoption system

Abstract

Nowadays, with the continuous improvement of people's living standards, people's life is based on material satisfaction, and more people focus on the pursuit of spiritual enjoyment. At the same time, the overwhelming popularity of the Internet makes such people look for spiritual satisfaction through the Internet. However, adopting pets is a spiritual sustenance that people are now hot. The love of pets makes their life more loving and yearning. The combination of Internet and pet adoption has greatly promoted the development of e-commerce and the rise of the industry. This is why the pet adoption system was born. The system not only solves the problem of geographical isolation, but also keeps up with the rapid development of the network, and realizes the adoption of pet lovers to their favorite pet without leaving home.

The 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:?Pet adoption, SSM?framework, MySQL database

目 ?錄

第1章 緒論 1

1.1?研究背景 1

1.2?研究現(xiàn)狀 1

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

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

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

2.2 MVVM模式 3

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

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

2.5 SSM框架介紹 4

2.6 Vue.js 主要功能 4

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

3.1?可行性分析 6

3.1.1?法律可行性分析 6

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

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

3.2?功能需求分析 6

3.3?非功能需求分析 7

3.4?用例分析 7

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

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

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

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

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

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

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

4.4.1 E-R 16

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

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

5.1?開發(fā)工具 20

5.2?注冊模塊 20

5.3?登錄/注銷模塊 23

5.4?用戶功能模塊 26

5.5?管理員功能模塊 29

第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é)與展望 38

7.1?總結(jié) 38

7.2?展望 38

參考文獻(xiàn) 39

致謝 41

?
  1. 緒論
    1. 研究背景

在人們環(huán)保意識進(jìn)一步的強(qiáng)化下,大家都意識到領(lǐng)養(yǎng)動物的社會意義遠(yuǎn)遠(yuǎn)高于經(jīng)濟(jì)意義。提出“寵物領(lǐng)養(yǎng)”活動的初衷,是想通過寵物領(lǐng)養(yǎng),喚起人們熱愛自然、關(guān)注環(huán)境的良好意識。

生活上富裕了,人們就越來越追求精神上的幸福感。領(lǐng)養(yǎng)寵物正是人們追求的重要一部分。與此同時,網(wǎng)絡(luò)普及程度的廣泛,發(fā)展的如此迅速,兩者有效的結(jié)合,更加帶動了人們領(lǐng)養(yǎng)寵物的熱潮。然而,寥寥幾個的實體市場的存在不足以滿足世界各地的需要求,從而更加體現(xiàn)通過網(wǎng)絡(luò)領(lǐng)養(yǎng)寵物地位的重要性。因此一個實用、高效、穩(wěn)定的可實現(xiàn)寵物領(lǐng)養(yǎng)系統(tǒng)正是利用信息提高效率、服務(wù)質(zhì)量的最佳選擇。通過構(gòu)建一個較完善的寵物領(lǐng)養(yǎng)系統(tǒng),同時利用電子化信息化的技術(shù)更為有效的、方便的實現(xiàn)寵物的領(lǐng)養(yǎng),提高效率,取得更多的社會效益。

    1. 研究現(xiàn)狀

在國內(nèi)經(jīng)濟(jì)快速增長的時代,無數(shù)的鋼鐵水泥豎立在我們的生活周圍。在倍感陌生的生活環(huán)境里,人們的生活節(jié)奏是如此的快。忙碌的生活雖然給我們帶來了很好的物質(zhì)基礎(chǔ),但是對于自身的精神生活要求總是無法得到滿足。沒時間,忙碌,孤獨(dú)總是自己的標(biāo)簽。如何提高本身的精神上的質(zhì)量正是人們懊惱的事情。然而,寵物,作為人類忠誠的朋友掀起了熱潮,這就促使人們對領(lǐng)養(yǎng)寵物的熱衷和熱情達(dá)到了一個很高漲的地步。

在國外,領(lǐng)養(yǎng)寵物的生活方式的流行已經(jīng)非常普及。比如:美國作為一個經(jīng)濟(jì)發(fā)展的強(qiáng)國,他們對于領(lǐng)養(yǎng)寵物的觀念是非常牢固的。寵物已經(jīng)是他們家庭的重要部分,不僅是他們的朋友而且把寵物看作其親人一樣。對比國內(nèi),動物領(lǐng)養(yǎng)熱潮才剛開始的,這說明我們地區(qū)的動物領(lǐng)養(yǎng)意識只是剛剛起步的。在領(lǐng)養(yǎng)寵物起步的階段面臨著許多難題。更多的人對于寵物大多停留在購買的程度,而不是到相應(yīng)的寵物收留所去領(lǐng)養(yǎng)。即使有一部分人到寵物收留所進(jìn)行寵物的領(lǐng)養(yǎng),地理隔離也是一大問題所在。如何加快領(lǐng)養(yǎ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后年輕人的主要活動場所,傳統(tǒng)的生活方式逐漸被這種新的生活方式所取代,大家都會有意識的通過網(wǎng)絡(luò)去實現(xiàn)自己的需求。網(wǎng)絡(luò)也憑借著其快速、便捷、互動的優(yōu)勢,

    1. 本文的組織結(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)的詳細(xì)設(shè)計和一些主要功能模塊的設(shè)計說明。

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

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

?
  1. 相關(guān)技術(shù)介紹
    1. 開發(fā)技術(shù)

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

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

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

    1. MVVM模式

MVVM是Model-View-ViewModel的簡寫。它本質(zhì)上就是MVC 的改進(jìn)版。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層更加細(xì)節(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的新特性糅合進(jìn)去,以應(yīng)對客戶日益復(fù)雜的需求變化。

    1. MySQL數(shù)據(jù)庫

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

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

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

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

    1. SSM框架介紹

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ù)庫所需進(jìn)行的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ù)。

    1. Vue.js 主要功能

Vue.js是一套構(gòu)建用戶界面的漸進(jìn)式框架。與其他重量級框架不同的是,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)用

  1. 系統(tǒng)分析
    1. 可行性分析
      1. 法律可行性分析

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

      1. 技術(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)的麻煩。

      1. 經(jīng)濟(jì)可行性分析

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

    1. 功能需求分析

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

用戶:

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

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

寵物資訊:用戶可以在線進(jìn)行寵物資訊瀏覽等。

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

團(tuán)隊信息:用戶可以在線申請入團(tuán)信息的提交。

管理員:

用戶管理:對用戶進(jìn)行管理,用戶的注冊,包括用戶昵稱、用戶名、用戶的寵物信息(寵物品種、寵物性別、年齡等)用戶的賬號信息:

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

寵物信息管理:對寵物信息進(jìn)行維護(hù)管理。

領(lǐng)養(yǎng)管理:對領(lǐng)養(yǎng)信息進(jìn)行維護(hù)管理。

團(tuán)隊申請管理:對用戶的入團(tuán)申請進(jìn)行審核管理。

團(tuán)隊活動管理:維護(hù)管理團(tuán)隊活動信息等。

    1. 非功能需求分析

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

    1. 用例分析

1.普通用戶主要使用系統(tǒng)進(jìn)行寵物領(lǐng)養(yǎng)以及入團(tuán)申請,下圖所示為普通用戶的用例 ??????????????

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖3-1 普通用戶用例圖

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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖3-2 管理員用例圖

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

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

????????????????????????????????????????(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654?

?

圖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)入寵物領(lǐng)養(yǎng)系統(tǒng)后進(jìn)行各種模塊信息的瀏覽,另外,管理人員進(jìn)入后端管理,以執(zhí)行寵物領(lǐng)養(yǎng)模塊的相關(guān)管理方法,并在解決后向客戶提供反饋機(jī)制。

    1. 數(shù)據(jù)流程分析

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

?(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654???

?

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

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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖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)、團(tuán)隊活動管理等模塊上的數(shù)據(jù)交互。

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

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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

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

    1. 系統(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)圖。

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

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

    1. 功能模塊設(shè)計

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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

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

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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖4-4用戶登錄活動圖

用戶登錄后,進(jìn)入功能頁面,進(jìn)行寵物秀瀏覽,寵物信息搜索、寵物領(lǐng)養(yǎng)、寵物轉(zhuǎn)讓。用戶使用功能活動圖如所示

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

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

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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖4-6修改密碼活動圖

    1. 數(shù)據(jù)庫設(shè)計

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

      1. E-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) 畢業(yè)設(shè)計 031654

?

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

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

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

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

名稱

類型

長度

不是null

主鍵

注釋

ordinary_users_id

int

11

普通用戶ID

user_name

varchar

64

用戶姓名

user_gender

varchar

64

用戶性別

user_age

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

主鍵

注釋

group_activities_id

int

11

團(tuán)隊活動ID

team_name

varchar

64

團(tuán)隊名稱

team_type

varchar

64

團(tuán)隊類型

creation_date

date

0

創(chuàng)建日期

head

int

11

團(tuán)長

team_members

int

11

團(tuán)隊成員

user_name

varchar

64

用戶姓名

contact_number

varchar

64

聯(lián)系電話

activity_name

varchar

64

活動名稱

activity_type

varchar

64

活動類型

activity_time

varchar

64

活動時間

activity_location

varchar

64

活動地點

activity_details

longtext

0

活動詳情

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

名稱

類型

長度

不是null

主鍵

注釋

league_application_id

int

11

入團(tuán)申請ID

team_name

varchar

64

團(tuán)隊名稱

team_type

varchar

64

團(tuán)隊類型

creation_date

date

0

創(chuàng)建日期

head

int

11

團(tuán)長

application_user

int

11

申請用戶

user_name

varchar

64

用戶姓名

contact_number

varchar

64

聯(lián)系電話

application_time

datetime

0

申請時間

application_remarks

text

0

申請備注

examine_state

varchar

16

審核狀態(tài)

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

名稱

類型

長度

不是null

主鍵

注釋

head_user_id

int

11

團(tuán)長用戶ID

head_number

varchar

64

團(tuán)長編號

name_of_head

varchar

64

團(tuán)長姓名

head_gender

varchar

64

團(tuán)長性別

head_age

varchar

64

團(tuán)長年齡

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

主鍵

注釋

pet_adoption_id

int

11

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

pet_name

varchar

64

寵物名稱

pet_variety

varchar

64

寵物品種

pet_sex

varchar

64

寵物性別

pet_age

varchar

64

寵物年齡

adoption_status

varchar

64

領(lǐng)養(yǎng)狀態(tài)

pet_pictures

varchar

255

寵物圖片

pet_details

longtext

0

寵物詳情

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

名稱

類型

長度

不是null

主鍵

注釋

team_information_id

int

11

團(tuán)隊信息ID

team_name

varchar

64

團(tuán)隊名稱

team_type

varchar

64

團(tuán)隊類型

creation_date

date

0

創(chuàng)建日期

head

int

11

團(tuán)長

team_cover

varchar

255

團(tuán)隊封面

team_profile

varchar

64

團(tuán)隊簡介

praise_len

int

11

點贊數(shù)

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

名稱

類型

長度

不是null

主鍵

注釋

team_members_id

int

11

團(tuán)隊成員ID

team_name

varchar

64

團(tuán)隊名稱

team_type

varchar

64

團(tuán)隊類型

creation_date

date

0

創(chuàng)建日期

head

int

11

團(tuán)長

team_members

int

11

團(tuán)隊成員

user_name

varchar

64

用戶姓名

contact_number

varchar

64

聯(lián)系電話

joining_time

time

0

入團(tuán)時間

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

?
  1. 系統(tǒng)實現(xiàn)
    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

    1. 注冊模塊

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

注冊界面如下所示。

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖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);

}

    1. 登錄/注銷模塊

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

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

登錄界面如下所示。

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖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, "賬號或密碼不正確");

????????}

}

    1. 用戶模塊
      1. 個人資料模塊

登錄用戶在首頁點擊進(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界面被更改成功;若失敗則顯示修改失敗。

      1. 寵物資訊模塊

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

寵物資訊界面如下所示。

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖5-3寵物資訊界面

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

用戶在登錄狀態(tài)下點擊寵物領(lǐng)養(yǎng)頁面可將進(jìn)行寵物領(lǐng)養(yǎng)申請?zhí)峤?/span>,從session中取出該寵物領(lǐng)養(yǎng)的信息,點擊加入寵物領(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) 畢業(yè)設(shè)計 031654

?

圖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();

????}

    1. 管理員模塊
      1. 密碼修改模塊

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

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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖5-5公告欄管理界面

用戶信息界面如下所示。

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖5-6用戶信息界面

      1. 團(tuán)隊信息管理模塊

根據(jù)需求,需要對團(tuán)隊信息進(jìn)行添加、刪除或修改詳情信息。刪除或修改團(tuán)隊信息時,系統(tǒng)根據(jù)團(tuán)隊信息的狀態(tài)判定為可刪除狀態(tài)下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達(dá)后臺,還會先查詢團(tuán)隊信息狀態(tài)再次做出判定能否刪除。點擊修改鏈接按鈕時,會跳轉(zhuǎn)到修改信息的頁面,重新填寫好數(shù)據(jù)后,數(shù)據(jù)提交到后臺會對數(shù)據(jù)庫中相應(yīng)的記錄做出修改。

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

團(tuán)隊信息頁面設(shè)計效果如下圖所示。

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖5-7團(tuán)隊信息管理界面

團(tuán)隊信息管理界面邏輯代碼如下:

?@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);

}

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

寵物領(lǐng)養(yǎng)功能需要考慮高并發(fā),防止出現(xiàn)寵物重復(fù)?提交領(lǐng)養(yǎng)申請狀態(tài)顯示出錯等情況,特對領(lǐng)養(yǎng)這一共享數(shù)據(jù)增加鎖機(jī)制。在樂觀鎖、悲觀鎖以及線程鎖中,綜合考慮性能效率和錯誤的可接受性選擇了樂觀鎖機(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)會在其顯示詳細(xì)信息的頁面時便會判斷寵物的狀態(tài),若寵物狀態(tài)為可領(lǐng)養(yǎng),則會顯示申請的鏈接按鈕。在用戶點擊申請按鈕時,會先通過攔截器判斷用戶是否登錄,若未登錄,會跳轉(zhuǎn)至登錄頁面,提示用戶先登錄,若為登錄用戶就會跳轉(zhuǎn)至填寫申請信息的頁面,填寫好申請信息之后,點擊提交按鈕,申請成功之后返回提示信息,告知用戶申請成功。

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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

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

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

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖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());

}

      1. 入團(tuán)申請管理模塊

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

入團(tuán)申請信息頁面設(shè)計效果如下圖所示。

(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654

?

圖5-10入團(tuán)申請管理界面圖

入團(tuán)申請管理的關(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();

????}

  1. 系統(tǒng)測試
    1. 測試概述

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

    1. 測試過程
      1. 登錄測試

登錄測試是系統(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)

      1. 信息錄入測試

管理員在發(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ā)布成功

      1. 信息更新測試

管理員在更新信息頁面,通過按照預(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ù)均未更改

更新成功

更新成功

      1. 信息刪除測試

管理員在信息頁面,通過點擊數(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)是否刪除

    1. 測試結(jié)果

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

?
  1. 總結(jié)與展望
    1. 總結(jié)

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

    1. 展望

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

?

參考文獻(xiàn)

[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].電腦編程技巧與維護(hù),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]羅雪櫻,張云雁.流浪動物的法律保護(hù)研究——以寧夏為例[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]陳薇,劉梓媛,尹婷.新媒體背景下流浪動物救助微信公眾號運(yùn)營研究[J].現(xiàn)代營銷(下旬刊),2020(05):85-86.DOI:10.19932/j.cnki.22-1256/f.2020.05.049.

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

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

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

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

[14]張秋雨.流浪動物救助實踐困境與路徑優(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)濟(jì)上給了我很多力量,如今我將畢業(yè)走上工作之路,終于能報答父母的養(yǎng)育教導(dǎo)之恩。還有我大學(xué)期間所有老師和全體同學(xué),遇到問題時,這些老師同學(xué)總是無私地幫助我,真的非常感謝,我也會加油努力成長為一個有用的人。

免費(fèi)領(lǐng)取項目源碼,請關(guān)注點贊+私聊文章來源地址http://www.zghlxwxcb.cn/news/detail-493971.html

到了這里,關(guān)于(附源碼)SSM寵物領(lǐng)養(yǎng)系統(tǒng) 畢業(yè)設(shè)計 031654的文章就介紹完了。如果您還想了解更多內(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包