(附源码)spring boot养老院系统 645488
springboot養老院系統
摘 要
隨著互聯網趨勢的到來,各行各業都在考慮利用互聯網將自己推廣出去,最好方式就是建立自己的互聯網系統,并對其進行維護和管理。在現實運用中,應用軟件的工作規則和開發步驟,采用Java技術建設養老院信息管理系統。
本設計主要實現集人性化、高效率、便捷等優點于一身的養老院信息管理系統,實現功能:管理員:首頁、站點管理(輪播圖)用戶管理(管理員、普通用戶)內容管理(養老院資訊、資訊分類列表)更多管理(老人檔案、托養服務、緊急救援、康復護理、休閑活動、醫療信息、康復信息、財務管理、床位信息、預定信息)等功能模塊。系統通過瀏覽器與服務器進行通信,實現數據的交互與變更。只需通過一臺電腦,動動手指就可以操作系統,實現數據通信管理。整個系統的設計過程都充分考慮了數據的安全、穩定及可靠等問題,而且操作過程簡單。本系統通過科學的管理方式、便捷的服務提高了工作效率,減少了數據存儲上的錯誤和遺漏。
養老院信息管理系統使用java語言springboot框架開發,使用 MyEclipse 2017 CI 10 編譯器編寫,數據方面主要采用的是微軟的MySQL關系型數據庫來作為數據存儲媒介,配合前臺HTML+CSS 技術完成系統的開發。
關鍵詞:養老院;Java語言;關系型數據庫;數據存儲
Springboot nursing home system
Abstract
With the advent of the Internet trend, all walks of life are considering using the Internet to promote themselves. The best way is to establish their own Internet system and maintain and manage it. In practical application, according to the working rules and development steps of the application software, Java technology is used to build the nursing home information management system.
This design mainly realizes the nursing home information management system integrating the advantages of humanization, high efficiency and convenience, and realizes the functions: Administrator: home page Site management (rotation chart) user management (administrator, ordinary users) content management (nursing home information, information classification list) more management (elderly files, nursing services, emergency rescue, rehabilitation care, leisure activities, medical information, rehabilitation information, financial management, bed information, reservation information) and other functional modules. The system communicates with the server through the browser to realize the interaction and change of data. You can operate the system and realize data communication management by moving your fingers through a computer. The safety, stability and reliability of data are fully considered in the design process of the whole system, and the operation process is simple. Through scientific management and convenient service, the system improves work efficiency and reduces errors and omissions in data storage.
The nursing home information management system is developed using the Java language springboot framework and written with MyEclipse 2017 CI 10 compiler. In terms of data, Microsoft's MySQL relational database is mainly used as the data storage medium, and the system development is completed with the foreground HTML + CSS technology.
Key words: nursing home; Java language; Relational database; data storage
目 錄
第1章 緒論 1
1.1 研究背景 1
1.2 開發意義 1
1.3 本文的組織結構 1
第2章 相關技術介紹 3
2.1 開發技術 3
2.2 MVVM模式 3
2.3 MySQL數據庫 3
2.4 B/S結構 3
2.5 Spring Boot框架 4
2.6 Vue.js 主要功能 4
第3章 系統分析 5
3.1 可行性分析 5
3.1.1 技術可行性分析 5
3.1.2 經濟可行性分析 5
3.1.3 操作可行性分析 5
3.2 功能需求分析 5
3.3 非功能需求分析 6
3.4 數據流程分析 6
第4章 系統設計 8
4.1 系統架構設計 8
4.2 系統功能結構 8
4.3 數據庫設計 9
4.3.1 概念模型 9
4.3.2 數據表 9
第5章 系統實現 17
5.1 登錄模塊的實現 17
5.2 用戶子系統模塊的實現 20
5.2.1 用戶首頁模塊 20
5.2.2 托養服務模塊模塊 21
5.3 管理員子系統模塊的實現 22
5.3.1個人資料模塊 22
5.3.2老人信息管理模塊 24
5.3.3用戶管理模塊 27
第6章 系統測試 29
6.1 測試目的 29
6.2 測試過程 29
6.3 測試結果 30
第7章 總結與展望 31
參考文獻 32
致謝 34
- 緒論
- 研究背景
養老院是集老人護理、護工等服務服務于一體的綜合行養老院,經過我們前期的調查,院方大部分工作采用手工操作方式,會帶來工作效率過低,運營成本過大的問題。
院方可用合理的較少投入取得更好的服務效果,在滿足社會需求、注重社會效益的同時,獲得相應的經濟效益,從而提高院方的長遠發展能力,增強內部控制能力,在人、財、物的綜合運營管理上得到更多、更好的方法和手段,用有限的資源取得最合理的社會和經濟效益的產出。
養老院信息管理系統實現系統主要功能:首頁、站點管理(輪播圖)用戶管理(管理員、普通用戶)內容管理(養老院資訊、資訊分類列表)更多管理(老人檔案、托養服務、緊急救援、康復護理、休閑活動、醫療信息、康復信息、財務管理、床位信息、預定信息)管理層決策智能分析等功能,系統采取一體化的運營模式,可作為提高院方綜合運營能力的有效手段。
- 開發意義
養老院在關愛老年人身心健康、提供必要的社會幫助方面發揮著不可或缺的重要作用,同社會中其他性質的企業一樣,養老院同樣需要高效率和高標準的管理系統,以達到為廣大老年客戶提供高水準服務的目的。當前的養老院機構的現狀和存在的問題有以下兩個方面:1、信息化基礎薄弱。養老院當前信息化的一些基礎信息采集不足,無法滿足信息共享、統計、查詢等業務的需要。2、信息流轉不暢。當前養老院信息的傳遞依靠傳統方式,缺乏高效流轉,且流轉渠道不暢。
養老院服務的規模化和多樣性對管理和服務工作帶來了挑戰,對于現代養老機構而言,傳統的管理方式已難以適應現代化養老服務的需要,而采用信息化集成管理,可以使養老機構的管理和服務工作更加便捷和高效。
- 本文的組織結構
第一章是緒論,本文章的開頭部分,對本題目的研究背景和研究意義等一些做文字性的描述。
第二章研究了養老院信息管理系統的所采用的開發技術和開發工具。
第三章是系統分析部分,包括系統總體需求描述、功能性角度分析系統需求、非功能性等各個方面分析系統是否可以實現。
第四章是系統設計部分,本文章的重要部分,提供了系統架構的詳細設計和一些主要功能模塊的設計說明。
第五章是系統的具體實現,介紹系統的各個模塊的具體實現。
第六章在前幾章的基礎上對系統進行測試和運行。
最后對系統進行了認真的總結,以此對未來有一個新的展望。
- 相關技術介紹
- 開發技術
本系統前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現動態路由和全局狀態管理,Ajax實現前后端通信,Element UI組件庫使頁面快速成型。后端部分:采用springboot作為開發框架,同時集成MyBatis、Redis等相關技術。
- MVVM模式
MVVM是Model-View-ViewModel的簡寫。它本質上就是MVC 的改進版。MVVM 就是將其中的View 的狀態和行為抽象化,讓我們將視圖 UI 和業務邏輯分開。當然這些事 ViewModel 已經幫我們做了,它可以取出 Model 的數據同時幫忙處理 View 中由于需要展示內容而涉及的業務邏輯。微軟的WPF帶來了新的技術體驗,如Silverlight、音頻、視頻、3D、動畫……,這導致了軟件UI層更加細節化、可定制化。同時,在技術層面,WPF也帶來了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結合的應用方式時發展演變過來的一種新型架構框架。它立足于原有MVP框架并且把WPF的新特性糅合進去,以應對客戶日益復雜的需求變化。
- MySQL數據庫
科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數據庫,而這次的養老院信息管理系統也需要這項技術的支持。
用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數據進行分類,然后分別保存在表里,這樣的特別操作就會提高數據管理系統自身的速度,讓數據庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網站系統。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象。
- B/S結構
B/S(Browser/Server)比前身架構更為省事的架構。它借助Web server完成數據的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果, 不需要考慮不停裝軟件的問題。
- Spring Boot框架
Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉的核心特性,并通過依賴注入實現控制反轉來實現管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術實現。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且幾乎可以在Java平臺的任何環境中工作。
- Vue.js 主要功能
Vue.js是一套構建用戶界面的漸進式框架。與其他重量級框架不同的是,Vue采用自底向上增量開發的設計。Vue 的核心庫只關注視圖層,并且非常容易學習,非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅動采用單文件組件和Vue生態系統支持的庫開發的復雜單頁應用。
Vue.js 的目標是通過盡可能簡單的 API 實現響應的數據綁定和組合的視圖組件。
Vue.js 自身不是一個全能框架——它只聚焦于視圖層。因此它非常容易學習,非常容易與其它庫或已有項目整合。另一方面,在與相關工具和支持庫一起使用時,Vue.js 也能驅動復雜的單頁應用。
- 系統分析
- 可行性分析
本次設計基于B/S 模式下,運用Java技術采用的是MySQL數據庫和Myeclipse實現,總體的可行性共分為以下三個方面。
- 技術可行性分析
所謂的技術可行性就是在限定時間,前期擬定的功能能否被滿足。在開發設計上是否會遇上解決不了的問題。做完的項目能否被很好地應用,如果存在缺點在后期的維護上是否存在很大的難度。在對這個系統評估后,認定已存在的技術能達成目標。用JSP技術來實現動態的頁面,嵌入低依賴性的設計模式,靈活的數據庫,配合穩定的服務器,整個系統的運行效率大大提升。由此可見,在技術層面達成目標不是非非之想。
- 經濟可行性分析
在項目上使用的工具大部分都是是當下流行開源免費的,所以在開發前期,開發時用于項目的經費將會大大降低,不會讓開發該軟件在項目啟動期受到經費的影響,所以經濟上還是可行的。盡量用最少的花費去滿足用戶的需求。省下經費用于人工費,以及設備費用。將在無紙化,高效率的道路上越走越遠。
- 操作可行性分析
本系統實現功能的操作很簡單,普通電腦的常見配置就可以運行本軟件,并且只要粗通電腦使用的基本常識就可以流暢的使用本軟件。電腦具備連接互聯網的能力,并且可以正常訪問系統,并不需要操作者有什么高超的能力,只需了解業務流程,并且按照專業知識進行正確操作即可,所以養老院信息管理系統具備操作可行性。
- 功能需求分析
在系統開發設計前,應該對功能做初步設想,清楚這個管理系統有什么板塊,每個板塊有什么功能,整體的設計是否滿足使用者的需求,接著對所開發的系統功能進行的詳細分析總結,從而設計出完整的系統并將其實現。用戶和開發人員的交流分析,使其達到最佳理解程度,使系統功能達到最佳。
管理員用例圖如下所示。
圖3-2 管理員用例圖
- 非功能需求分析
系統非功能需求有非常多,比如性能需求、可承載最大用戶數、穩定性、易用性需求等。本系統分析時考慮到易用性需求,因為系統是給人使用的,所以必須充分從用戶的角度出發,考慮用戶體驗,使系統易理解易上手易操作。
- 數據流程分析
零層數據流程圖包括了登錄注冊、用戶功能和檢索維護等模塊,在登錄注冊模塊使用到的數據存儲有用戶賬戶文檔,用戶功能模塊需要的存儲是用戶各功能模塊數據文檔,檢索維護是使用以上這些數據文檔通過關鍵詞進行檢索。
系統的零層數據流圖如下圖所示。
圖3-2系統數據流圖(零層)
一層數據流程圖是對零層數據流程圖的細化,將登錄注冊細分為填制登錄注冊數據和完善數據,用戶功能細分為用戶基本功能和用戶主要功能。
系統的一層數據流圖如下圖所示。
圖3-3系統數據流圖(一層)
二層數據流程是對一層數據流層圖中填寫登錄注冊信息、用戶功能的細化。即:填寫登錄注冊信息細化為填制信息、后臺審核,用戶功能細化為個人資料修改、托養服務、緊急救援、康復護理、醫療信息、康復信息、預定信息等操作。
系統的二層數據流圖如下圖所示。
圖3-4系統數據流圖(二層)
- 系統設計
- 系統架構設計
目前B/S體系的系統主要的數據訪問方式是:通過瀏覽器頁面用戶可以進入系統,系統可以自動對用戶向服務器發送的請求進行處理,處理請求是在系統后臺中進行的,用戶在瀏覽器頁面上進行相應操作,就能夠看到服務端傳遞的處理結果。養老院信息管理系統主要分為視圖-模型-控制三層架構設計。在視圖層中,主要是操作在服務器端向客戶端反饋并顯示的數據,在模型層中,主要處理相關的業務邏輯、數據整合等,最后的控制層它介于視圖和模型之間,主要是調整兩層之間的關系,最終落實數據的傳遞。
系統架構圖如下圖所示。
圖4-1系統架構圖
- 系統功能結構
系統設計的目的是分析系統包括的所有功能結構,為開發人員設計開發和實現系統做好準備工作。經過前期的需求調查、分析和整理之后,確定的總體需求主要包括多個模塊,分別是:首頁、站點管理(輪播圖)用戶管理(管理員、普通用戶)內容管理(養老院資訊、資訊分類列表)更多管理(老人檔案、托養服務、緊急救援、康復護理、休閑活動、醫療信息、康復信息、財務管理、床位信息、預定信息)。系統整體角色分為兩個部分,一是用戶、二是管理員。系統功能結構圖如下圖所示。
圖4-2系統功能結構圖
- 數據庫設計
- 概念模型
對于一個要開發的系統來說,E-R圖可以讓別人能更快更輕松的了解此系統的事務及它們之間的關系。根據系統分析階段所得出的結論確定了在養老院信息管理系統中存在著多個實體分別是用普通用戶、管理員、老人、康復、托養。
系統總體ER圖如下圖所示。
圖4-4系統總體ER圖
- 數據表
數據庫邏輯結構就是將E-R圖在數據庫中用具體的字段進行描述。用字段和數據類型描述來使對象特征實體化,最后形成具有一定邏輯關系的數據庫表結構。養老院信息管理系統所需要的部分數據結構表如下表所示。
|
|
|
|
|
|
bed_information |
|
|
|
|
|
字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
bed_information_id | int | 11 | 否 | 主鍵 | 床位信息ID |
bed_number | varchar | 64 | 是 |
| 床位編號 |
bed_name | varchar | 64 | 是 |
| 床位名稱 |
bed_type | varchar | 64 | 是 |
| 床位類型 |
remaining_beds | int | 11 | 是 |
| 剩余床位 |
bed_picture | varchar | 255 | 是 |
| 床位圖片 |
bed_status | varchar | 64 | 是 |
| 床位狀態 |
bed_introduction | longtext | 0 | 是 |
| 床位介紹 |
hits | int | 11 | 否 |
| 點擊數 |
recommend | int | 11 | 否 |
| 智能推薦 |
create_time | datetime | 0 | 否 |
| 創建時間 |
update_time | timestamp | 0 | 否 |
| 更新時間 |
|
|
|
|
|
|
elderly_files |
|
|
|
|
|
字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
elderly_files_id | int | 11 | 否 | 主鍵 | 老人檔案ID |
elderly_files | varchar | 64 | 是 |
| 檔案編號 |
user | int | 11 | 是 |
| 用戶 |
old_man_name | varchar | 64 | 是 |
| 老人姓名 |
gender_of_the_elderly | varchar | 64 | 是 |
| 老人性別 |
date_of_birth | varchar | 64 | 是 |
| 出生日期 |
old_age | varchar | 64 | 是 |
| 老人年齡 |
check_in_time | date | 0 | 是 |
| 入住時間 |
bed | varchar | 64 | 是 |
| 床位 |
health | text | 0 | 是 |
| 健康情況 |
recommend | int | 11 | 否 |
| 智能推薦 |
create_time | datetime | 0 | 否 |
| 創建時間 |
update_time | timestamp | 0 | 否 |
| 更新時間 |
|
|
|
|
|
|
emergency_rescue |
|
|
|
|
|
字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
emergency_rescue_id | int | 11 | 否 | 主鍵 | 緊急救援ID |
user | int | 11 | 是 |
| 用戶 |
old_man_name | varchar | 64 | 是 |
| 老人姓名 |
record_time | date | 0 | 是 |
| 記錄時間 |
rescue_type | varchar | 64 | 是 |
| 救援類型 |
rescue_content | longtext | 0 | 是 |
| 救援內容 |
recommend | int | 11 | 否 |
| 智能推薦 |
create_time | datetime | 0 | 否 |
| 創建時間 |
update_time | timestamp | 0 | 否 |
| 更新時間 |
|
|
|
|
|
|
financial_management |
|
|
|
|
|
字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
financial_management_id | int | 11 | 否 | 主鍵 | 財務管理ID |
title | varchar | 64 | 是 |
| 標題 |
record_type | varchar | 64 | 是 |
| 記錄類型 |
record_time | date | 0 | 是 |
| 記錄時間 |
amount_of_money | varchar | 64 | 是 |
| 金額 |
remarks | text | 0 | 是 |
| 備注 |
recommend | int | 11 | 否 |
| 智能推薦 |
create_time | datetime | 0 | 否 |
| 創建時間 |
update_time | timestamp | 0 | 否 |
| 更新時間 |
|
|
|
|
|
|
foster_care_services |
|
|
|
|
|
字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
foster_care_services_id | int | 11 | 否 | 主鍵 | 托養服務ID |
user | int | 11 | 是 |
| 用戶 |
old_man_name | varchar | 64 | 是 |
| 老人姓名 |
gender_of_the_elderly | varchar | 64 | 是 |
| 老人性別 |
date_of_birth | varchar | 64 | 是 |
| 出生日期 |
old_age | varchar | 64 | 是 |
| 老人年齡 |
bed_status | varchar | 64 | 是 |
| 床位狀態 |
service_status | varchar | 64 | 是 |
| 服務狀態 |
service_price | varchar | 64 | 是 |
| 服務價格 |
health | text | 0 | 是 |
| 健康情況 |
pay_state | varchar | 16 | 否 |
| 支付狀態 |
pay_type | varchar | 16 | 是 |
| 支付類型: 微信、支付寶、網銀 |
recommend | int | 11 | 否 |
| 智能推薦 |
create_time | datetime | 0 | 否 |
| 創建時間 |
update_time | timestamp | 0 | 否 |
| 更新時間 |
|
|
|
|
|
|
leisure_activities |
|
|
|
|
|
字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
leisure_activities_id | int | 11 | 否 | 主鍵 | 休閑活動ID |
activity_title | varchar | 64 | 是 |
| 活動標題 |
activity_type | varchar | 64 | 是 |
| 活動類型 |
activity_time | date | 0 | 是 |
| 活動時間 |
activity_picture | varchar | 255 | 是 |
| 活動圖片 |
activity_introduction | longtext | 0 | 是 |
| 活動介紹 |
hits | int | 11 | 否 |
| 點擊數 |
recommend | int | 11 | 否 |
| 智能推薦 |
create_time | datetime | 0 | 否 |
| 創建時間 |
update_time | timestamp | 0 | 否 |
| 更新時間 |
|
|
|
|
|
|
medical_information |
|
|
|
|
|
字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
medical_information_id | int | 11 | 否 | 主鍵 | 醫療信息ID |
user | int | 11 | 是 |
| 用戶 |
old_man_name | varchar | 64 | 是 |
| 老人姓名 |
medical_type | varchar | 64 | 是 |
| 醫療類型 |
medical_time | date | 0 | 是 |
| 醫療時間 |
medical_content | text | 0 | 是 |
| 醫療內容 |
recommend | int | 11 | 否 |
| 智能推薦 |
create_time | datetime | 0 | 否 |
| 創建時間 |
update_time | timestamp | 0 | 否 |
| 更新時間 |
|
|
|
|
|
|
ordinary_users |
|
|
|
|
|
- 系統實現
- 登錄模塊的實現
系統的登錄窗口是用戶的入口,用戶只有在登錄成功后才可以進入訪問。通過在登錄提交表單,后臺處理判斷是否為合法用戶,進行頁面跳轉,進入系統中去。
登錄合法性判斷過程:用戶輸入賬號和密碼后,系統首先確定輸入輸入數據合法性,然后在login.jsp頁面發送登錄請求,調用src下的mainctrl類的dopost方法來驗證。
用戶登錄模塊的IPO如下所示:
輸入:用戶名和密碼。
處理:
1)檢測用戶輸入的賬號、密碼是否正確及在數據庫已對應存在。
2)從數據庫中提取記錄,并儲存在本地的session中(timeout默認=30min)。
3)根據用戶名,將其顯示在系統首頁上。
輸出:是否成功的信息。
登錄流程圖如下所示。
圖5-1登錄流程圖
系統登錄界面如下所示。
圖5-2系統登錄界面
登錄代碼如下:
/**
* 登錄
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[執行登錄接口]");
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);
//查詢用戶審核狀態
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,"該用戶審核未通過");
}
}
//查詢用戶狀態
if (byUsername.getState()!=1){
return error(30000,"用戶非可用狀態,不能登錄");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存儲Token到數據庫
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, "賬號或密碼不正確");
}
}
- 用戶子系統模塊的實現
- 用戶首頁模塊
系統呈現出一種簡潔大方的首頁:界面簡約、鱗次櫛比,用戶能輕車熟路的使用。出于對系統使用群體廣泛的顧慮,應有良好性能的后臺。在系統時間顯示上編寫javascript腳本在導航欄顯示系統的當前日期,首先定義一個數組d存放周一至周日,創建一個獲取時間的對象time后通過該對象的方法獲取年月日,(time.getDay())%7計算得到的結果是數組的下標,通過數組下標就獲取了數組的值,利用字符竄連接把年月日和星期轉換成字符竄,通過document.getElementById("date")獲取標簽后使用innerHTML把該字符串顯示在jsp頁面。
如下圖所示為系統的首頁界面。
圖5-3系統首頁界面
系統首頁代碼如下:
@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-4托養服務界面
托養服務如下:
@RequestMapping(value = "/del")
@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();
}
- 管理員子系統模塊的實現
5.3.1個人資料模塊
用戶點擊登錄填寫賬號信息登錄后,當用戶登錄成功后會將個人信息保存在session作用域中,點擊自己的用戶名時,會跳轉到個人詳細信息頁面,由后臺通過Freemarker取出session作用域中的用戶信息進行動態渲染,例如,郵箱、電話號碼、用戶名等等。同時頁面上會顯示修改個人信息和修改密碼的按鈕,這時客戶可以修改自己的登錄密碼以保障賬號的安全性,防止被人竊取賬號,通過UserController.java的updatePassword()實現,同時也可以根據自己的個人信息是否變動做出相應的修改,通過updateUserInfo()實現。
密碼修改流程圖如下所示。
圖5-5密碼修改流程圖
密碼修改流程圖如下所示
圖5-6密碼修改界面圖
密碼修改代碼如下:
/**
* 修改密碼
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根據Token獲取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根據UserId和舊密碼獲取用戶
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
Query ret = service.count(query, service.readConfig(request));
List list = ret.getResultList();
Object s = list.get(0);
int count = Integer.parseInt(list.get(0).toString());
if(count > 0){
// 修改密碼
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密碼修改失敗!");
}
5.3.2老人信息管理模塊
添加老人信息時,輸入必填字段后,表現層的LaorenController接受傳過來的老人信息參數,再調用LaorenController類的addLaoren方法,經過LaorenService業務層到LaorenMapper持久層的處理,完成對整個添加老人信息的操作。addLaoren方法也和用戶管理中的addUser方法類似,同時做添加和修改工作。
修改老人信息時,選擇需要修改的老人進行修改,調用LaorenController控制器的editLaoren方法,拿到該老人原本的信息并顯示到頁面,管理員再對需要修改的老人信息字段進行修改,完成后調用addLaoren方法,調用業務層的updateByKey方法,更新數據庫的老人信息表的數據。
老人管理界面如下所示。
圖5-7老人管理流程圖
老人信息添加界面如下圖所示。
圖5-8老人添加界面
老人添加代碼如下:
@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.3.3用戶管理模塊
刪除用戶時,選擇需要刪除的用戶進行刪除,把主鍵的uId傳到YihurenyuanController控制器,再調用控制器的deleteYihurenyuan方法,數據經過YihurenyuanService業務層解析和處理,請求YihurenyuanMapper持久層調用deleteByPrimaryKey方法操作數據庫將用戶數據從數據庫中刪除。
查找用戶時,輸入需要查找的用戶名,調用getData方法獲取所有數據并且進行分頁,把獲取到的所有數據顯示到視圖上,這時候只需要用腳本方法便能快速查找,不涉及對數據庫操作。
用戶管理流程圖如下所示。
圖5-9用戶管理流程圖
用戶添加界面如下圖所示。
圖5-10用戶添加界面
- 系統測試
- 測試目的
在對該系統進行完詳細設計和編碼之后,就要對養老院信息管理系統的程序進行測試,檢測程序是否運行無誤,反復進行測試和修改,使之最后成為完整的軟件,滿足用戶的需求,實現預期的功能。
- 測試過程
在軟件的測試過程中,通常測試人員需要針對不同的功能模塊設計多種測試用例。通過測試用例能夠及時發現代碼業務邏輯上是否與真實的業務邏輯相對應,及時發現代碼上或邏輯上的缺陷,以此來來完善系統,提高軟件產品的質量,使軟件具有良好的用戶體驗。
注冊測試用例表如下所示。
表6-1注冊測試用例
測試性能 | 新用戶注冊 | ||
用例目的 | 測試系統新用戶個人信息注冊功能的功能和安全性 | ||
前提條件 | 進入注冊頁面填寫個人信息 | ||
輸入條件 | 預期輸出 | 實際情況 | |
各項基本信息輸入不完整 | 不允許注冊,無法點擊注冊按鈕 | 一致 | |
填寫已存在的用戶名 | 系統顯示出提示信息,要求重新填寫 | 一致 | |
兩次密碼輸入不一致 | 系統顯示出提示信息,要求重新填寫 | 一致 | |
填寫的各項信息沒有符合提示的長度和字符要求 | 系統顯示出提示信息,要求重新填寫 | 一致 | |
胡亂填寫電話號碼 | 收不到驗證碼 | 一致 | |
填寫驗證碼與收到的不一致 | 系統顯示提示信息告知用戶驗證碼錯誤,不予注冊 | 一致 | |
登錄測試用例表如下所示。
表6-2登錄測試用例
測試性能 | 用戶或操作員登錄系統 | ||
用例目的 | 測試用戶或操作員登錄系統時功能是否正常 | ||
前提條件 | 進入用戶登錄頁面或操作員登錄頁面 | ||
輸入條件 | 預期輸出 | 實際情況 | |
各項信息不予填寫,直接點擊登陸按鈕 | 不允許登錄,提示填寫賬號相關信息 | 一致 | |
填寫錯誤的登錄名或密碼后點擊登錄系統 | 提示用戶名或密碼錯誤,要求重新填寫進行登錄 | 一致 | |
填寫與驗證碼信息不一致的信息 | 系統顯示出提示信息,表明驗證碼錯誤,要求重新填寫 | 一致 | |
老人管理測試用例表如下所示。
表6-3老人管理測試用例
測試性能 | 老人相關信息管理功能 | ||
用例目的 | 測試系統后臺操作員對老人相關信息進行管理的功能是否正常 | ||
前提條件 | 登錄系統后臺進入相關管理頁面 | ||
輸入條件 | 預期輸出 | 實際情況 | |
普通操作員登錄,點擊進入老人相關信息管理的頁面 | 提示非超級用戶,權限不夠,無法進入相關頁面 | 一致 | |
超級操作員登入,刪除某個已被賬單的老人 | 提示該老人刪除失敗 | 一致 | |
點擊增加老人按鈕 | 頁面正常跳轉 | 一致 | |
增加老人是,填寫已存在的老人編號 | 提示該編號已存在 | 一致 | |
- 測試結果
經過對此系統的測試,得出該系統足以滿足用戶日常需求,在功能項目和操作等方面也能滿足操作員對于其他用戶的管理。但是,還有很多功能有待添加,這個系統僅能滿足大部分的需求,還需要對此系統的功能更進一步的完善,這樣使用起來才能更加的完美。
- 總結與展望
通過養老院信息管理系統的開發,本人鞏固了之前學過的知識,如今將平時所學到的知識融合在設計中,在設計過程中,做了很多的準備,首先,在數據庫系統的設計過程中,尤其是在數據庫的工作原理、工作特點,對其深刻的討論,與此同時,對于小型站點來說,最好服務器的選擇,其次,利用所學的知識點分析所做的系統,并在此基礎上設計。
目前本系統已經上線,正在試運行階段,用戶反饋良好,基本完成用戶所需,試運行過程中沒有出現阻斷性問題,有一些不足和小問題也及時予以修正,系統上線后,為了保證數據的安全性,對系統進行了備份操作,系統備份是每兩個月備份一次,數據庫備份為每周備份一次,系統部署在租賃的云平臺服務器中。
本次系統上線成功后,得到了用戶的高度認可,但是在功能上和性能上還需做進一步的研究處理,使其有更高的性能和更好的用戶體驗。
系統在以后的升級過程中,需要解決一系列用戶所提出的問題,例如打印過程中如何避免瀏覽器的兼容性問題,大量用戶訪問時,如何保持較高的響應速度,在系統今后的升級過程中將著重解決這些安全性問題。
參考文獻
[1]單樹倩,任佳勛.基于springboot和Vue框架的數據庫原理網站設計與實現[J].電腦知識與技術,2021,17(30):40-41+50.DOI:10.14004/j.cnki.ckt.2021.2868.
[2]肖守淵,朱紅. 鄉鎮養老院如何做好醫養結合服務[N]. 中國人口報,2021-06-23(003).DOI:10.28125/n.cnki.ncrcb.2021.001444.
[3]余明巖. 陜西石泉縣養老院老年體育健身需求與服務供給研究[D].云南師范大學,2021.DOI:10.27459/d.cnki.gynfc.2021.000682.
[4]彭霞. 小組工作介入農村養老院特困老人精神贍養的應用研究[D].蘭州大學,2021.DOI:10.27204/d.cnki.glzhu.2021.001778.
[5]江西永新縣:提升鄉鎮養老院建設管理水平[J].社會福利,2021(03):59-60.
[6]臧夢璐.地方“兩會”亮點之三 進一步理順農村養老院機構設置和管理體制——專訪江蘇省人大代表、淮安廣濟醫藥連鎖有限公司董事長 朱華林[J].光彩,2021(02):26-27.
[7]王志文.關于加強農村養老院監督的調查與思考[J].廉政瞭望,2020(14):82-83.
[8]朱婷. 鄉鎮政府在養老院養老服務供給中的責任分析[D].南京理工大學,2020.
[9]Minmin He,Shengli Lv. Research on Civil Aircraft Structural Strength Material Performance Database Based on springboot[C]//Proceedings of 2020 4th International Conference on Electrical,Automation and Mechanical Engineering(EAME2020).Proceedings of 2020 4th International Conference on Electrical,2020:1062-1067.DOI:10.26914/c.cnkihy.2020.057541.
[10]厲麗. 農村養老院公辦民營改革困境及其對策研究[D].云南師范大學,2020.DOI:10.27459/d.cnki.gynfc.2020.000945.
[11]李蓓. 農村五保戶老人養老院生活適應研究[D].蘭州大學,2020.DOI:10.27204/d.cnki.glzhu.2020.001941.
[12]大埔縣人民政府辦公室關于對全縣鄉鎮養老院管理現狀情況的通報[J].梅州市人民政府公報,2020(05):27-32.
[13]韓振秋,陳乃筍.山東肥城市:“四個到位”確保農村養老院建設管理水平提升[J].社會福利,2020(03):36.
[14]路興華.農村養老院公建民營的困境及對策——基于安徽安慶市農村養老院的調查[J].社會福利,2019(11):37-38.
[15]Kan Ji,Xiaojun Chen,Aoming Qin,Jia Liu,Jinmei Wu. Design and Implementation of Teaching Quality Evaluation System Based on springboot[C]//第七屆計算與信息科學國際學術會議論文集.,2019:444-452.
[16]孫似錦,楊飛,陳小紅,彭明俊,肖麗娜.銅仁市農村養老院發展現狀、困境及對策研究[J].勞動保障世界,2019(27):63-65+68.
[17] 民政部養老服務司負責同志就特困人員供養服務設施(養老院)改造提升和加強管理有關問題答記者問[N]. 中國老年報,2019-09-17(002).DOI:10.28108/n.cnki.nclnb.2019.000558.
[18]田固.通力合作 多措并舉 著力提升農村養老院兜底保障能力——解讀民政部等四部門《關于實施特困人員供養服務設施(養老院)改造提升工程的意見》和《關于進一步加強特困人員供養服務設施(養老院)管理有關工作的通知》[J].社會福利,2019(09):18-20.
[19]陸彬. 農村養老院特困老人精神贍養的社會支持網絡建構研究[D].揚州大學,2019.DOI:10.27441/d.cnki.gyzdu.2019.000390.
[20]甘滿堂,馮璐,蕭開通.社區互助養老與村辦養老院可持續運營——以福建省晉江市蕭下村養老院為例[J].重慶工商大學學報(社會科學版),2020,37(01):99-105.
致謝
伴隨著設計的完成,大學生涯也隨之即將結束。大學期間是我最珍惜的時光,大學時光中學會了很多,也成長了很多,這段時光中每一段回憶都刻在腦海中。感謝一起學習,一起成長同學們,和成長過程悉心教導的老師們,非常感激有你們的陪伴。
首先感謝我的指導老師,設計的完成離不開老師的一系列指導。在畢業設計的完成過程中,老師給出了很多中肯的建議,正是由于老師一絲不茍的工作態度,我的設計才能順利的完成。
最后,感謝在大學生涯中每一位教導我的老師,是你們教給了我豐富的知識,更教會了我遇到問題時,如何去應對并解決。謝謝你們的幫助與支持。
免費領取項目源碼,請關注點贊+私聊
總結
以上是生活随笔為你收集整理的(附源码)spring boot养老院系统 645488的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Java毕业设计药房药品采购集中管理
- 下一篇: 品高脚踏移动警务云而来 引领公安行业云化