摘要
大數據時代下,數據呈爆炸式地增長。為了迎合信息化時代的潮流和信息化安全的要求,利用互聯網服務于其他行業,促進生產,已經是成為一種勢不可擋的趨勢。在圖書館管理的要求下,開發一款整體式結構的社區助老志愿服務系統,將復雜的系統進行拆分,能夠實現對需求的變化快速響應、系統穩定性的保障,能保證平臺可持續、規模化發展的要求。
本設計主要實現集人性化、高效率、便捷等優點于一身的社區助老志愿服務系統,完成志愿活動、報名信息、留言板、新聞資訊等功能模塊。系統通過瀏覽器與服務器進行通信,實現數據的交互與變更。只需通過一臺電腦,動動手指就可以操作系統,實現數據通信管理。整個系統的設計過程都充分考慮了數據的安全、穩定及可靠等問題,而且操作過程簡單。本系統通過科學的管理方式、便捷的服務提高了工作效率,減少了數據存儲上的錯誤和遺漏。社區助老志愿服務系統使用Java語言,采用基于Springboot框架、Java技術進行開發,使用 MyEclipse 2017 CI 10 編譯器編寫,數據方面主要采用的是微軟的MySQL關系型數據庫來作為數據存儲媒介,配合前臺HTML+CSS 技術完成系統的開發。
關鍵詞:社區助老志愿服務系統,Springboot,數據庫
Springboot Community Helping the Elderly Volunteer Service System
Abstract
In the era of big data, data is growing explosively. In order to meet the trend of the information age and the requirements of information security, it has become an irresistible trend to use the Internet to serve other industries and promote production. Under the requirements of library management, develop an integrated community volunteer service system for the elderly, split the complex system, which can achieve rapid response to changes in demand, guarantee the stability of the system, and ensure the requirements of sustainable and large-scale development of the platform.
This design mainly realizes the community volunteer service system for helping the elderly, which integrates the advantages of humanization, efficiency and convenience, and completes the function modules of volunteer activities, registration information, message board, news information, etc. The system communicates with the server through the browser to realize data interaction and change. You can operate the system by moving your fingers through a computer to realize data communication management. The design process of the whole system fully considers the safety, stability and reliability of data, and the operation process is simple. The system improves work efficiency and reduces errors and omissions in data storage through scientific management and convenient services. The community volunteer service system for the elderly uses Java language, is developed based on the Springboot framework and Java technology, and is compiled using the MyEclipse 2017 CI 10 compiler. In terms of data, it mainly uses Microsoft's MySQL relational database as the data storage medium, and cooperates with the foreground HTML+CSS technology to complete the system development.
Key words:??community elderly volunteer service system, Springboot, database
目 ?錄
第1章?緒???論
1.1研究意義
1.2 研究內容
1.3?本文的結構
1.4?開發工具及技術 3
第2章 系統分析 7
2.1 可行性分析 7
2.2總體設計原則 7
2.3 系統需求分析 8
2.4 業務流程分析 8
第3章 系統設計 11
3.1 系統概要設計 11
3.2系統結構設計 11
3.3 數據庫設計 12
第4章系統實現
4.1系統功能模塊
4.2管理員功能模塊 22
第5章軟件測試
5.1軟件測試的重要性
5.2測試實例的研究與選擇
5.3測試環境與測試條件
5.4系統運行情況
5.5系統評價
第6章?總結 30
參考文獻: 31
致謝 33
實踐意義:社區助老可以拉近與老年人的距離,更能夠直接的對老年人出現的各種問題進行了解和解決,更能利用這一優勢,結合社區、家庭、社會等各方面來解決老人的實際問題,在日常生活與精神生活等多方面給老人以幫助,使其能夠安享晚年,為構建和諧社會起到關鍵作用。
1.2 研究內容
基于Springboot的社區助老志愿服務系統的開發及實現,所需要的工作內容:
(1)首先是確定選題,確定好所要做的系統,并對系統的背景及現在面臨的一些問題等進行系統的初步確認。
(2)系統確認完成后,結合系統開發的需求進行確認系統開發所使用的技術,基于Springboot的社區助老志愿服務系統的開發使用Springboot框架,數據庫進行平臺的搭建開發,確認好使用的技術進行技術分析,所使用的技術是否可以完成系統的實現。
(3)確定好系統使用的技術,進行在線確認系統所劃分的用戶角色,并且根據用戶角色劃分確定所要設計的功能模塊,對基于Springboot的社區助老志愿服務系統的設計主要劃分用戶角色,并所使用的功能模塊也相應不同,但是系統的數據庫實現的內容是交互的,用戶可以隨時根據自己的需求進行信息查看,對于系統工作人員可以根據自己的分管內容進行在線信息的處理及操作。
(4)系統的功能模塊確認完成后進行程序及界面的設計,設計完成后,并且通過測試來判斷程序是否完善,對于系統測試,需要不同的用戶進行不同的內容編輯及提交,及使用不同的測試方式找出程序中存在的漏洞,并對程序出現的漏洞問題進行在線解決處理,如果測試系統沒有任何問題時,可以將系統上傳進行正式操作使用。
1.3本文的結構
本文具體內容包括:緒論、系統采用的關鍵技術、系統分析、系統設計、系統實現和系統測試。本文著重描述了系統的組成與結構,闡述了系統的設計方案、實現方法以及所采用的開發工具和相關技術,另外,重點剖析了部分環節的開發過程。本系統在一定的環境下對系統的重要模塊進行了模擬測試,證實了系統的可用性、可靠性。
(一)開發環境介紹
1.軟件體系結構方案:采用B/S模式,B/S代表的是服務器端由web服務器發放,客戶端由瀏覽器接收的系統,它的前臺是html語言,由瀏覽器解釋。B/S結構可以由web服務器能夠解釋的腳本語言如jsp、php、asp、JavaScript。
2.操作系統方案:Windows 7(旗艦版)操作系統,該系統可以兼容需要的軟件,并且具有良好的運行速度,界面良好。
3.后臺數據庫:選用Mysql。Mysql旨在通過數據庫加密、更加安全的默認設置、加強的密碼政策和細化許可控制、及加強的安全模型等特性,為企業數據提供最高級別的安全性。
4.開發工具:選用Myeclipse10
5.開發語言:Java語言。
6.開發技術:Springboot+html+css+js技術。
(二)統一建模語言
統一建模語言(Unified ?Modeling ?Language ,UML)是一種可視化建模語言,通俗上講就是系統開發者利用UML可以清楚地表達出自己對系統是如何設計,是一種設計思想的體現,然而UML就是作為輔助工具,就如汽車軸承的輪滑油。UML包括了一些可以相互組合圖表的圖形元素。由于UML是一種語言,所以UML具有組合這些元素的法規。UML提供了多種圖來設計設計系統,如設計系統前期常用的用例圖,行為圖等,這些圖需要用多個視圖來展示一個系統,這組視圖被稱為一個模型(Model)。一個UML模型描述了一個系統需要做什么。同時,UML提供了組織和擴展這些圖的方法。
(三) J2EE技術
人可以掌握多門外語,而一個計算機科學家精通的大多是編程語言,它不是人類的自然語言,比如C語言、Java、Perl等等。由于不同的公司開發出的“中間件”不夠規范,所以Sun公司推出J2EE,用這個標準來解決弊病。它提供了良好的機制,讓每個層次允許與之相對的服務器、組件運行,使得系統的搭建穩定可用、開發高效、維護方便。
(四)Springboot框架
Springboot即SpringMVC+Spring+Mybatis,這三個框架有各自最獨有的優勢,那么將它們組合在一起能夠碰撞出很強的火花。設計者在不需消耗大量功夫,能做出Web應用程序,而且這個程序還具有層次清晰、升級更新操作不影響正常使用的、允許多次使用的特點。這個復合框架形成一個有著結構完整、功能強大和結構良好的體系:SpringMVC使各板塊分離,Spring使開發更靈活方便,使用Mybatis讓開發者直接對對象進行操縱,各層次分工明細,并實現各個層次間的解耦,讓代碼更加的靈活精簡。這個框架使程序員能夠規避在開發時期避免個別錯誤導致整體被破壞,也能在后期應對客戶對產品提出的新需求。 ??????????
(五)Vue.js 主要功能:
Vue.js是一套構建用戶界面的漸進式框架。與其他重量級框架不同的是,Vue采用自底向上增量開發的設計。Vue 的核心庫只關注視圖層,并且非常容易學習,非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅動采用單文件組件和Vue生態 系統支持的庫開發的復雜單頁應用。
Vue.js 的目標是通過盡可能簡單的 API 實現響應的數據綁定和組合的視圖組件。
Vue.js 自身不是一個全能框架——它只聚焦于視圖層。因此它非常容易學習,非常容易與其它庫或已有項目整合。另一方面,在與相關工具和支持庫一起使用時,Vue.js 也能驅動復雜的單頁應用。
(六)MySQL數據庫
科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數據庫,而這次的物流信息管理系統也需要這項技術的支持。
用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數據進行分類,然后分別保存在表里,這樣的特別操作就會提高數據管理系統自身的速度,讓數據庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網站系統。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象。
(七)Ajax 介紹:
Ajax即Asynchronous?Javascript?And?XML(異步JavaScript和XML)在 2005年被Jesse James Garrett提出的新術語,用來描述一種使用現有技術集合的‘新’方法,包括:HTML或XHTML,CSS,JavaScript,DOM,XML,XSLT, 以及最重要的XMLHttpRequest。使用Ajax技術網頁應用能夠快速地將增量更新呈現在用戶界面上,而不需要重載(刷新)整個頁面,這使得程序能夠更快地回應用戶的操作
可行性分析的目的是確定一個系統是否有必要開發、確定系統是否能以最小的代價實現。其工作主要有三個方面,分別是技術、經濟和社會三方面的可行性。我會從這三個方面對基于微信小程序的同城拼車進行詳細的分析。
該系統主要使用Springboot框架啊和MySQL數據庫進行開發,Java易于學習和使用靈活。在校期間也接觸過Springboot和MySQL數據庫的課程,對此有一定的開發經驗,因此開發難度不高,所以從技術上來說是可行的。
本系統設計所選擇的開發工具和服務器都是免費的開源軟件,又或者是適合學生使用的免費版本,并不需要支付費用,而且由作者本人單獨完成,也不存在團隊費用,幾乎沒有經濟成本,具備經濟可行性。
社會可行性主要包括法律和用戶兩個方面,下面將從這兩方面進行分析。
(1)法律因素
本系統是學習開發所制作的程序,并不用作商業用途,是在根據實際調研的結果結合現有的外賣點餐系統后得出的,而且系統制作的全部過程都是在個人的工作電腦中完成的,使用的都是開源和免費的開發環境、分析軟件和數據庫,不存在侵權問題。
(2)用戶可行性
操作人員或者客戶只需要具備一定的Java操作常識,不需要精通計算機技能。此外系統管理人員,只需要在再熟悉下使用Tomcat服務器的操作流程,只要掌握一定的計算機知識即可,在正式上線運營之前,僅需要對操作人員進行簡單的熟悉流程培訓即可。所以從用戶可行性上也是可行的。
一個系統要在開發和維護的過程中方便使用,必須采取一定的設計原則,其主要設計原則有:
簡單性:系統功能簡單易懂,只需要掌握基本的計算機操作能力即可使用。
針對性:針對特定的用戶,沒有多余的其他功能,使用戶可以專心使用。
實用性:能夠滿足社區助老志愿服務系統等方面的需求。
一致性:設計風格、命名規范一致,整個系統的各個功能模塊色彩、擺放位置、功能等都是一致的。
先進性:本系統的代碼采用讀取數據的方式,方便后續開發、拓展。
社區助老志愿服務系統需要滿足的需求有以下幾個:
1.信息獲取方便,用戶可在網頁上快速瀏覽到新的信息
2.志愿活動,查看志愿活動信息并參加報名。
3.注冊登錄,需要吸引用戶,即通過注冊來提高用戶的存留率。
4.報名信息,用戶可以在線進行申請報名志愿者信息登記。
5.修改用戶信息,可以修改用戶密碼或者用戶名等一些個性化操作。
6.管理員功能,管理員可以對用戶信息進行管理。
7.系統安全,操作簡便,不過于復雜。
8.系統可以穩定運行,不存在卡頓等問題造成用戶反感。
2.4.1登錄流程
登錄模塊主要滿足管理員以及用戶的權限登錄,用戶登錄流程圖如圖2-1所示。
圖2-1?登錄流程圖
2.4.2注冊流程
未有賬號的用戶可進入注冊界面進行注冊操作,用戶注冊流程圖如圖2-2所示。
圖2-2?注冊流程圖
2.4.3添加信息流程
用戶在添加信息時,信息編號自動生成,系統會對添加的信息進行驗證,驗證通過則添加至數據庫,添加信息成功,反之添加失敗。添加信息流程如圖2-3所示。
圖2-3?添加信息流程圖
2.4.4刪除信息流程
用戶可選擇要刪除的信息進行信息刪除操作,在刪除信息時系統提示是否確定刪除信息,是則刪除信息成功,系統數據庫將信息進行刪除。刪除信息流程圖如圖2-4所示。
圖2-4刪除信息流程圖
本社區助老志愿服務系統選擇B/S結構(Browser/Server,瀏覽器/服務器結構)和基于Web服務兩種模式。適合在手機上進行操作,只要用戶能連網,任何時間、任何地點都可以進行系統的操作使用。系統工作原理圖如圖3-1所示:
圖3-1 系統工作原理圖
3.2系統結構設計
整個系統是由多個功能模塊組合而成的,要將所有的功能模塊都一一列舉出來,然后進行逐個的功能設計,使得每一個模塊都有相對應的功能設計,然后進行系統整體的設計。
社區助老志愿服務系統結構圖如圖3-2所示。
圖3-2?社區助老志愿服務系統結構圖
數據庫可以說是所有軟件的根本,如果數據庫存在缺陷,那么會導致系統開發的不順利、維護困難、用戶使用不順暢等一系列問題,嚴重時將會直接損害企業的利益,同時在開發完成后,數據庫缺陷也更加難以解決。所以必須要對數據庫設計重點把握,做到認真細致。因此,數據庫設計是這個社區助老志愿服務系統的重點要素。
(1)管理員實體屬性圖如下圖3-3所示
圖3-3管理員實體屬性圖
- 系統實體屬性如下圖3-4所示
圖3-4系統實體屬性圖
將數據庫概念設計的E-R圖轉換為關系數據庫。在關系數據庫中,數據關系由數據表組成,但是表的結構表現在表的字段上。
表access_token (登陸訪問時長)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | token_id | int | 10 | 0 | N | Y | 臨時訪問牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 臨時訪問牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大壽命:默認2小時 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用戶編號: |
表article (文章:用于內容管理系統的文章)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 標題:[0,125]用于文章和html的title標簽中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分類:[0,1000]用來搜索指定類型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 點擊數:[0,1000000000]訪問這篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 點贊數 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
8 | source | varchar | 255 | 0 | Y | N | 來源:[0,255]文章的出處 | |
9 | url | varchar | 255 | 0 | Y | N | 來源地址:[0,255]用于跳轉到發布該文章的網站 | |
10 | tag | varchar | 255 | 0 | Y | N | 標簽:[0,255]用于標注文章所屬相關內容,多個標簽用空格隔開 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主體內容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面圖 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
表article_type (文章分類)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分類ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 顯示順序:[0,1000]決定分類顯示的先后順序 |
3 | name | varchar | 16 | 0 | N | N | 分類名稱:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上級分類ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述該分類的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分類圖標: | |
7 | url | varchar | 255 | 0 | Y | N | 外鏈地址:[0,255]如果該分類是跳轉到其他網站的情況下,就在該URL上設置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表auth (用戶權限管理)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | auth_id | int | 10 | 0 | N | Y | 授權ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用戶組: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模塊名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 頁面標題: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路徑: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳轉方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可刪除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查詢字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表導航名稱: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表導航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表collect (收藏)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
6 | title | varchar | 255 | 0 | Y | N | 標題: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表comment (評論)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | comment_id | int | 10 | 0 | N | Y | 評論ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 評論人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回復評論ID:空為0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 內容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵稱: | |
6 | avatar | varchar | 255 | 0 | Y | N | 頭像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
9 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
表hits (用戶點擊)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | hits_id | int | 10 | 0 | N | Y | 點贊ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 點贊人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
5 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
表message_board (留言板)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | message_board_id | int | 10 | 0 | N | Y | 留言板ID | |
2 | message_user | int | 10 | 0 | Y | N | 0 | 留言用戶 |
3 | user_name | varchar | 64 | 0 | Y | N | 用戶姓名 | |
4 | message_title | varchar | 64 | 0 | Y | N | 留言標題 | |
5 | message_date | date | 10 | 0 | Y | N | 留言日期 | |
6 | message | text | 65535 | 0 | Y | N | 留言信息 | |
7 | examine_state | varchar | 16 | 0 | N | N | 未審核 | 審核狀態 |
8 | examine_reply | varchar | 16 | 0 | Y | N | 審核回復 | |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
表notice (公告)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 標題: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表ordinary_users (普通用戶)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | ordinary_users_id | int | 10 | 0 | N | Y | 普通用戶ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用戶姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用戶性別 | |
4 | user_age | varchar | 64 | 0 | Y | N | 用戶年齡 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通過 | 審核狀態 |
6 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用戶ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
表praise (點贊)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | praise_id | int | 10 | 0 | N | Y | 點贊ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 點贊人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
5 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 點贊狀態:1為點贊,0已取消 |
表registration_information (報名信息)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | registration_information_id | int | 10 | 0 | N | Y | 報名信息ID | |
2 | activity_title | varchar | 64 | 0 | Y | N | 活動標題 | |
3 | activity_type | varchar | 64 | 0 | Y | N | 活動類型 | |
4 | applicant | int | 10 | 0 | Y | N | 0 | 報名人員 |
5 | user_name | varchar | 64 | 0 | Y | N | 用戶姓名 | |
6 | remarks | text | 65535 | 0 | Y | N | 備注信息 | |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
表slides (輪播圖)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | slides_id | int | 10 | 0 | N | Y | 輪播圖ID: | |
2 | title | varchar | 64 | 0 | Y | N | 標題: | |
3 | content | varchar | 255 | 0 | Y | N | 內容: | |
4 | url | varchar | 255 | 0 | Y | N | 鏈接: | |
5 | img | varchar | 255 | 0 | Y | N | 輪播圖: | |
6 | hits | int | 10 | 0 | N | N | 0 | 點擊量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表upload (文件上傳)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | upload_id | int | 10 | 0 | N | Y | 上傳ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 訪問路徑 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路徑 | |
5 | display | varchar | 255 | 0 | Y | N | 顯示順序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父級ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夾 | |
8 | type | varchar | 32 | 0 | Y | N | 文件類型 |
表user (用戶賬戶:用于保存用戶登錄信息)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 賬戶狀態:[0,10](1可用|2異常|3已凍結|4已注銷) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用戶組:[0,32767]決定用戶身份和權限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登錄時間: |
5 | phone | varchar | 11 | 0 | Y | N | 手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手機認證:[0,1](0未認證|1審核中|2已認證) |
7 | username | varchar | 16 | 0 | N | N | 用戶名:[0,16]用戶登錄時所用的賬戶名稱 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵稱:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密碼:[0,32]用戶登錄所需的密碼,由6-16位數字或英文組成 | |
10 | | varchar | 64 | 0 | Y | N | 郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 郵箱認證:[0,1](0未認證|1審核中|2已認證) |
12 | avatar | varchar | 255 | 0 | Y | N | 頭像地址:[0,255] | |
13 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
表user_group (用戶組:用于用戶前端身份和鑒權)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用戶組ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 顯示順序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名稱:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述該用戶組的特點或權限范圍 | |
5 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注冊位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表volunteer_activities (志愿活動)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | volunteer_activities_id | int | 10 | 0 | N | Y | 志愿活動ID | |
2 | activity_title | varchar | 64 | 0 | Y | N | 活動標題 | |
3 | activity_type | varchar | 64 | 0 | Y | N | 活動類型 | |
4 | event_cover | varchar | 255 | 0 | Y | N | 活動封面 | |
5 | activity_time | date | 10 | 0 | Y | N | 活動時間 | |
6 | event_details | text | 65535 | 0 | Y | N | 活動詳情 | |
7 | hits | int | 10 | 0 | N | N | 0 | 點擊數 |
8 | praise_len | int | 10 | 0 | N | N | 0 | 點贊數 |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
第4章系統實現
社區助老志愿服務系統,在系統首頁可以查看首頁、公告信息、新聞資訊、志愿活動、留言板跳轉到后臺等內容,如圖4-1所示。
圖4-1系統功能界面圖
???公告信息,在公告欄可以查看標題、內容、點擊量等內容,如圖4-2所示。
圖4-2公告信息界面圖
公告信息的邏輯代碼如下:
@RequestMapping("/get_obj")
????public Map<String, Object> obj(HttpServletRequest request) {
????????List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
????????if (resultList.size() > 0) {
????????????JSONObject jsonObject = new JSONObject();
????????????jsonObject.put("obj",resultList.get(0));
????????????return success(jsonObject);
????????} else {
????????????return success(null);
????????}
}
在新聞資訊頁面可以查找新聞資訊列表,如圖4-3所示。在注冊頁面通過填寫用戶賬號、密碼、用戶姓名、手機等信息完成用戶注冊,如圖4-4所示。
圖4-3新聞資訊界面圖
新聞資訊的邏輯代碼如下。
public Map<String, Object> error(Integer code, String message) {
????????Map<String, Object> map = new HashMap<>();
????????map.put("error", new HashMap<String, Object>(4) {{
????????????put("code", code);
????????????put("message", message);
????????}});
????????return map;
}
圖4-4注冊界面圖
用戶注冊邏輯代碼如下:
/**
?????* 注冊
?????* @param user
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(@RequestBody User user) {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????query.put("username",user.getUsername());
????????List list = service.select(query, new HashMap<>()).getResultList();
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????user.setUserId(null);
????????user.setPassword(service.encryption(user.getPassword()));
????????service.save(user);
????????return success(1);
}
/**
?????* 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據
?????*/
????@Id
????@GeneratedValue(strategy = GenerationType.IDENTITY)
????@Column(name = "user_id")
????private Integer userId;
????/**
?????* 賬戶狀態:[0,10](1可用|2異常|3已凍結|4已注銷)
?????*/
????@Basic
????@Column(name = "state")
????private Integer state;
????/**
?????* 所在用戶組:[0,32767]決定用戶身份和權限
?????*/
????@Basic
????@Column(name = "user_group")
????private String userGroup;
????/**
?????* 上次登錄時間:
?????*/
????@Basic
????@Column(name = "login_time")
????private Timestamp loginTime;
????/**
?????* 手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時
?????*/
????@Basic
????@Column(name = "phone")
????private String phone;
????/**
?????* 手機認證:[0,1](0未認證|1審核中|2已認證)
?????*/
????@Basic
????@Column(name = "phone_state")
????private Integer phoneState;
????/**
?????* 用戶名:[0,16]用戶登錄時所用的賬戶名稱
?????*/
????@Basic
????@Column(name = "username")
????private String username;
????/**
?????* 昵稱:[0,16]
?????*/
????@Basic
????@Column(name = "nickname")
????private String nickname;
????/**
?????* 密碼:[0,32]用戶登錄所需的密碼,由6-16位數字或英文組成
?????*/
????@Basic
????@Column(name = "password")
????private String password;
????/**
?????* 郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時
?????*/
????@Basic
????@Column(name = "email")
????private String email;
????/**
?????* 郵箱認證:[0,1](0未認證|1審核中|2已認證)
?????*/
????@Basic
????@Column(name = "email_state")
????private Integer emailState;
????/**
?????* 頭像地址:[0,255]
?????*/
????@Basic
????@Column(name = "avatar")
????private String avatar;
????/**
?????* 創建時間:
?????*/
????@Basic
????@Column(name = "create_time")
????@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
????private Timestamp createTime;
????@Basic
????@Transient
????private String code;
}
管理員登錄,通過填寫注冊時輸入的用戶名、密碼、權限進行登錄,如圖4-5所示。
圖4-5管理員登錄界面圖
管理員登錄進入社區助老志愿服務系統可以查看首頁、輪播圖管理、公告信息管理、系統用戶(管理員、普通用戶)資源管理(新聞資訊、新聞分類列表)模塊管理(志愿活動、報名信息、留言板)等信息,如圖4-6所示。
圖4-6管理員功能界面圖
新聞分類列表管理,管理員可以根據需要對新聞資訊分類信息進行修改或刪除操作,如圖4-7所示。
圖4-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);
}
志愿活動管理,管理員在志愿活動管理中可以查看活動標題、活動類型、活動封面、活動詳情、活動時間信息等詳細信息,可根據需要進行增刪改查等操作;如圖4-8所示。
圖4-8志愿活動管理界面圖
留言板管理,管理員可以對志愿者的留言信息進行審核回復,并可根據需要進行增刪改查等操作,如圖4-9所示。
圖4-9留言板管理界面圖
留言板管理的邏輯代碼如下:
@RequestMapping("auth")
public class AuthController extends BaseController<Auth, AuthService> {
????/**
?????* 服務對象
?????*/
????@Autowired
????public AuthController(AuthService service) {
????????setService(service);
????}
}
用戶管理,在用戶管理列表中可以查看用戶賬號、密碼、用戶姓名、性別、手機、照片等內容,并且根據需要進行修改或刪除操作,如圖4-10所示。
圖4-10用戶管理界面圖
測試存在于軟件開發進程中的最后一個階段,它可以保證一個軟件的開發質量是否符合設計者的初衷,也為程序的正式上線做了最后一道質量檢測的工序。軟件測試主要是控制各種條件、包括軟件輸出方式,使用模式和運行環境等,來評估一個系統或應用是否符合設計標準。在軟件測試過程中,我們一般刻意的去制造錯誤和極端條件,不能僅依照正常模式允許,而是多去嘗試那些意外的情況。
只有在運行和維護階段之前經歷大量的測試的軟件,才能說明它的質量是經得起檢驗的。最近計算機業界也都一致認為,測試應該存在于軟件設計的每個階段,因為越早發現錯誤,修復起來就越容易。
實際上,對于一個軟件應用,錯誤是必然存在的,無論使用何種技術或手段,都不可能絕對的排除軟件漏洞。測試是隨著軟件開發一同誕生的,兩者是共同發展進步的。實際上,測試可以大幅度的降低維護的成本,如果一個漏洞在開發的早期就被發現,那么修復它的成本遠比上線后再修復的成本要低得多。
測試有白盒測試和黑盒測試兩種方式。
其中,白盒測試是將軟件看成一個透明的白盒子,按照程序的內部控制結構和處理技術邏輯來選定測試用例、軟件系統測試的邏輯路徑及過程需要進行管理測試,又稱玻璃盒測試。因此白盒測試需要選擇足夠多的測試用例,覆蓋盡可能多的代碼來發現程序中的錯誤。
黑盒測試,也稱為功能測試。它將需軟件看作一個黑盒,像一個普通用戶一樣來模擬軟件的使用流程。黑盒測試通過大量的輸入邊界值或錯誤數據,來檢查是否可產生正確的輸出。
本系統測試 主要選擇黑盒測試,少量采用白盒測試。通過測試達到以下測試目的:
1.檢查各大功能模塊的運行,確保其能夠正確運行,并檢查各頁面的完整性,保證頁面完整。
2.檢查各個接口是否可以正確地輸入和輸出,保證數據流通穩定可行。
3.檢查數據結構,保證其和外部接口沒有訪問錯誤,訪問順利。
4.檢查原計劃的性能需求有沒有完成,運行流暢。
本系統的測試用例(部分):
登錄部分測試用例 | |||||
編號 | 對象 | 項目 | 操作 | 預期結果 | 結果 |
1 | 登錄 | 登錄提示 | 使用正確的賬號密碼登錄 | 成功登錄 | 預期結果 |
2 | 登錄提示 | 使用正確的賬號但錯誤的密碼登錄 | 提示密碼錯誤 | 預期結果 | |
3 | 登錄提示 | 使用錯誤的賬號登錄 | 提示不存在賬戶 | 預期結果 | |
4 | 登錄提示 | 不輸入賬號,點擊登錄 | 提示輸入賬號 | 預期結果 | |
5 | 登錄提示 | 輸入賬號但不輸入密碼點擊登錄 | 提示輸入密碼 | 預期結果 | |
6 | 登錄入口 | 已登錄賬號,查看登錄入口 | 不顯示登錄入口 | 預期結果 |
處理器:Inter Core I7-4710MQ四核處理器
內存:4GB
硬盤:1T
操作系統:Windows 10
數據庫:MySQL
全部測試用例都已通過(包括但不限于以上測試用例),且不存在漏洞,實現了論文開始時所作要求。本系統運行穩定,使用流暢,可以滿足客戶需求。
試運行后進行系統評估,可以認為該系統達到預定的目標要求,可以滿足用戶的需求,也滿足了系統開發前所作目標。
系統在經過大量重復測試后運行十分穩定,安全實用,功能模塊已經達到預定目標所需。
在規定的時間內實現系統的大部分功能,且滿足要求,節省開發成本,有助于提高科學管理水平,符合本人經濟情況。
2023年的今天,計算機技術已經相當成熟。它的發展推動了許多行業改頭換面,計算機的出現使人類社會有了進一步降低人力物力和資源的方法。
本文利用Springboot框架和MySQL數據庫技術,完成了社區助老志愿服務系統。經調試結果顯示,本系統基本可以滿足一個社區助老志愿服務系統的業務需要。系統界面簡潔而有美感,易操作,做出了自己的特色,然而因為時間倉促再加上缺乏系統開發經驗和僅依靠少數問卷調查方式,因此本系統還存在不少缺陷、不足,比如:
1. 數據輸入的格式并沒有全部檢驗,所以很難保證數據的準確,可能有一些不符合規則的數據也可以通過檢驗。
2. 系統功能還不夠完善,無法提供豐富多彩的在線功能。
本系統還存在一些漏洞沒有解決,在現實應用情境中很難保證完全不出錯,但相信通過再次完善,可以調試出真正符合實際的社區助老志愿服務系統。
[2]李樂.Java語言應用研究[J].智慧中國,2022(09):80-81.
[3]宋旸.使用Java語言開發Web應用軟件的知識探討[J].中國設備工程,2022(14):121-123.
[4]王晶晶. Z市L區農村助老志愿服務組織發展中的問題研究[D].山東大學,2022.DOI:10.27272/d.cnki.gshdu.2022.001325.
[5]翟穎. 社會工作介入青年志愿者社區志愿服務能力提升的研究[D].華中農業大學,2022.DOI:10.27158/d.cnki.ghznu.2022.001714.
[6]楊迎.Java語言異常處理機制的分析[J].電子技術,2022,51(03):42-43.
[7]曹嵩彭,王鵬宇.淺析Java語言在軟件開發中的應用[J].信息記錄材料,2022,23(03):114-116.DOI:10.16009/j.cnki.cn13-1295/tq.2022.03.009.
[8]蔣媚. “時間銀行”社區互助養老志愿服務供給研究[D].廣西大學,2021.DOI:10.27034/d.cnki.ggxiu.2021.000229.
[9]許雷. 邛崍市社區志愿服務激勵機制研究[D].電子科技大學,2021.DOI:10.27005/d.cnki.gdzku.2021.003031.
[10]Siyi Liu. Explore Java Language and Android Mobile Software Development[J]. International Journal of Frontiers in Engineering Technology,2021,3.0(2.0).
[11]王越英,尹琴榮.發展社區志愿服務之思考[J].長江論壇,2020(05):77-81.
[12]. Information Technology - Data Management; Data on Data Management Reported by Researchers at Port Said University (Performance Evaluation of Iot Data Management Using Mongodb Versus Mysql Databases In Different Cloud Environments)[J]. Computer Technology Journal,2020.
[13]Kevin Kline. The Java Language Extension for SQL Server Is Now Open Source[J]. Database Trends and Applications,2020,34(4).
[14]燕楠. 社區居家養老服務中“以老助老”模式的可持續探究[D].華東理工大學,2018.
[15]湯立. 株洲地區社區志愿服務現狀及發展對策研究[D].中南林業科技大學,2017.
[16]雷達. 廣州市花都區城市社區志愿服務管理研究[D].華南理工大學,2017.
[17]顧月. 中國社區志愿服務發展的困境及其消解途徑[D].蘇州大學,2016.
[18]王葉. 智慧社區養老服務系統的設計及關鍵技術研究[D].哈爾濱工程大學,2015.
[19]張麗君. 農村助老志愿服務長效機制的實踐探索[D].蘇州大學,2014.
[20]沈瑾. 我國城市社區志愿服務激勵機制研究[D].南京工業大學,2014.
致???謝
大學生活在這個時候即將劃上一個句號,但是對于我的人生道路來說,這僅僅是一個逗號,我將面對的是又一次征程的開始。
回憶過去,許許多多的事情浮現在腦海:剛上大學時歡樂心情和興奮的場景還歷歷在目。一切都是那么新鮮,那么富有吸引力。有快樂也有艱辛,有收獲也有失落。衷心感謝信息學院所有支持幫助過我的老師,謝謝你們多年來的關心和愛護。同窗的友情同樣難忘,你們與我共同走過了人生中不平凡的道路,給我留下了值得珍藏的美好記憶。
最后,我要特別感謝指導論文設計的老師。本論文是在他的悉心指導和熱情幫助下完成的,老師認真負責的工作態度,嚴謹的治學精神和精深的理論水平都使我受益匪淺。老師無論在理論上還是在實踐中,都給予我很大的幫助,使我專業技能的應用水平得到很大提高,這對于我以后的工作和學習都有益處。值此論文完成之際,特別向老師表示衷心的感謝和崇高的敬意,謝謝他細心而又耐心地輔導,使得我得以順利的完成畢業設計開發工作,同時也要感謝其他幫助過我的老師和同學,他們在我成長過程中給予了我很大的幫助,在此一并表示感謝。
由于本人水平有限,加上時間緊促,本文一定有不少缺點和不足,懇請各位老師給予幫助和指正。
免費領取項目源碼,請關注?點贊收藏并私信博主,謝謝-