SSM+老年人社区服务平台 毕业设计-附源码211711
Ssm老年人社區(qū)服務(wù)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
摘?要
科技進(jìn)步的飛速發(fā)展引起人們?nèi)粘I畹木薮笞兓?#xff0c;電子信息技術(shù)的飛速發(fā)展使得電子信息技術(shù)的各個(gè)領(lǐng)域的應(yīng)用水平得到普及和應(yīng)用。信息時(shí)代的到來(lái)已成為不可阻擋的時(shí)尚潮流,人類發(fā)展的歷史正進(jìn)入一個(gè)新時(shí)代。在現(xiàn)實(shí)運(yùn)用中,應(yīng)用軟件的工作規(guī)則和開(kāi)發(fā)步驟,采用Java技術(shù)建設(shè)老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)。
本設(shè)計(jì)主要實(shí)現(xiàn)集人性化、高效率、便捷等優(yōu)點(diǎn)于一身的老年人社區(qū)服務(wù)平臺(tái)系統(tǒng),完成公告內(nèi)容(輪播圖、公告欄)、用戶管理(管理員、護(hù)工人員、注冊(cè)用戶、)、內(nèi)容模塊(社區(qū)新聞、新聞分類)、商城中心(菜品中心列表、分類列表、訂單列表)模塊管理(護(hù)工請(qǐng)假、護(hù)工預(yù)約、護(hù)工介紹、健康信息、老人信息、事故信息)等功能模塊。系統(tǒng)通過(guò)瀏覽器與服務(wù)器進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)的交互與變更。本系統(tǒng)通過(guò)科學(xué)的管理方式、便捷的服務(wù)提高了工作效率,減少了數(shù)據(jù)存儲(chǔ)上的錯(cuò)誤和遺漏。老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)使用Java語(yǔ)言,采用基于MVVM模式的SSM技術(shù)進(jìn)行開(kāi)發(fā),使用 Eclipse 2017 CI 10 編譯器編寫(xiě),數(shù)據(jù)方面主要采用的是微軟的MySQL關(guān)系型數(shù)據(jù)庫(kù)來(lái)作為數(shù)據(jù)存儲(chǔ)媒介,配合前臺(tái)HTML+CSS 技術(shù)完成系統(tǒng)的開(kāi)發(fā)。
關(guān)鍵詞:老人社區(qū)服務(wù);Java語(yǔ)言;關(guān)系型數(shù)據(jù)庫(kù);數(shù)據(jù)存儲(chǔ)
Design and implementation of SM community service platform for the elderly
Abstrac
The rapid development of scientific and technological progress has caused great changes in people's daily life. The rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The advent of the information age has become an irresistible fashion trend, and the history of human development is entering a new era. In practical application, according to the working rules and development steps of application software, Java technology is used to build the community service platform system for the elderly.
This design mainly realizes the elderly community service platform system integrating the advantages of humanization, high efficiency and convenience, and completes the announcement content (rotation map, bulletin board), user management (administrator, nursing staff, registered users,), content module (community news, news classification) Mall Center (menu center list, classification list, order list) module management (nurse leave, nurse appointment, nurse introduction, health information, elderly information, accident information) and other functional modules. The system communicates with the server through the browser to realize the interaction and change of data. Through scientific management and convenient service, the system improves work efficiency and reduces errors and omissions in data storage. The elderly community service platform system uses Java language, adopts SSM technology based on MVVM mode for development, and is written with eclipse 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:?Community service for the elderly; Relational database; Data storage
目 ?錄
第1章 緒論
1.1?研究意義
1.2?研究背景
1.3?本文的組織結(jié)構(gòu)
第2章 相關(guān)技術(shù)介紹
2.1開(kāi)發(fā)技術(shù)
2.2 MVVM模式
2.3 Mysql數(shù)據(jù)庫(kù)
2.4 B/S結(jié)構(gòu)
2.5 SSM框架
2.6 SSM框架各層關(guān)系
第3章 系統(tǒng)分析
3.1?可行性分析
3.1.1?技術(shù)可行性分析
3.1.2?經(jīng)濟(jì)可行性分析
3.1.3?操作可行性分析
3.2?功能需求分析
3.3?非功能需求分析 8
3.4?數(shù)據(jù)流程分析 8
第4章 系統(tǒng)設(shè)計(jì) 10
4.1?系統(tǒng)架構(gòu)設(shè)計(jì) 10
4.2?系統(tǒng)功能結(jié)構(gòu) 10
4.3?功能模塊設(shè)計(jì)
4.4?數(shù)據(jù)庫(kù)設(shè)計(jì)
4.4.1?概念模型
4.4.2?關(guān)系模型
4.4.3?數(shù)據(jù)表
第5章 系統(tǒng)實(shí)現(xiàn)
5.1?登錄模塊的實(shí)現(xiàn)
5.2?用戶子系統(tǒng)模塊的實(shí)現(xiàn) 22
5.2.1?用戶首頁(yè)模塊 22
5.2.2?注冊(cè)模塊 23
5.2.3社區(qū)新聞模塊 25
5.2.4護(hù)工介紹模塊
5.3?管理員子系統(tǒng)模塊的實(shí)現(xiàn)
5.3.1護(hù)工人員管理模塊
5.3.2?個(gè)人資料管理模塊
5.3.3菜品中心管理模塊 31
5.3.4?訂單列表管理模塊
第6章 系統(tǒng)測(cè)試
6.1?測(cè)試目的
6.2?測(cè)試過(guò)程
6.3?測(cè)試結(jié)果
第7章 總結(jié)與展望 37
參考文獻(xiàn) 38
致謝 39
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,計(jì)算機(jī)在各行各業(yè)中的應(yīng)用迅速普及,計(jì)算機(jī)的應(yīng)用在信息管理領(lǐng)域同樣也得到了飛速的發(fā)展。對(duì)于老年人社區(qū)的管理來(lái)說(shuō),利用計(jì)算機(jī)實(shí)現(xiàn)日常工作來(lái)提高辦事效率,是適應(yīng)當(dāng)今社會(huì)發(fā)展要求,推動(dòng)信息管理領(lǐng)域現(xiàn)代化快速發(fā)展的必要條件。雖然老年人社區(qū)管理中一直存在著管理制度,但是社區(qū)管理是一項(xiàng)瑣碎、復(fù)雜而又十分細(xì)致的工作。人員流動(dòng)等工作量非常的大,如果用手工來(lái)操作,不僅工作量大而且容易出現(xiàn)錯(cuò)誤。而利用計(jì)算機(jī)就不同了,一個(gè)完善的社區(qū)管理系統(tǒng)可以幫你解決所有這方面的問(wèn)題。同時(shí)計(jì)算機(jī)具有手工管理所無(wú)法比擬的優(yōu)點(diǎn)。例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高老年人社區(qū)管理的效率。
進(jìn)入21世紀(jì),中國(guó)社會(huì)發(fā)展面臨著社會(huì)轉(zhuǎn)型的巨大沖擊,加上20世紀(jì)80年代以后生育率和出生率的不斷下降,中國(guó)社會(huì)邁進(jìn)了人口老齡化的門坎,人口老齡化是當(dāng)代社會(huì)普遍存在的問(wèn)題,“老有所養(yǎng)"?更是社會(huì)發(fā)展需要解決的首要問(wèn)題,且已成為當(dāng)今無(wú)法回避的嚴(yán).峻而緊迫的重大課題。因此,城市老年人要由誰(shuí)來(lái)提供養(yǎng)老服務(wù)的問(wèn)題,已成為國(guó)家及學(xué)術(shù)界探討的重點(diǎn)所在,在這種背景下,積極探索新形勢(shì)下發(fā)展養(yǎng)老事業(yè)的新途徑,也勢(shì)在必行。隨著,人口老齡化程度的加劇,中國(guó)養(yǎng)老模式面臨著重大的挑戰(zhàn)。城市老年人社區(qū)服務(wù)以其獨(dú)有的優(yōu)勢(shì)成為各大城市共同的選擇。雖然,城市老年人社區(qū)服務(wù)模式盡管經(jīng)過(guò)二十多年的發(fā)展,取得了一定進(jìn)步,但是,依然存在諸多問(wèn)題。
第一章是緒論,本文章的開(kāi)頭部分,對(duì)本題目的研究背景和研究意義等一些做文字性的描述。
第二章研究了老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)的所采用的開(kāi)發(fā)技術(shù)和開(kāi)發(fā)工具。
第三章是系統(tǒng)分析部分,包括系統(tǒng)總體需求描述、功能性角度分析系統(tǒng)需求、非功能性等各個(gè)方面分析系統(tǒng)是否可以實(shí)現(xiàn)。
第四章是系統(tǒng)設(shè)計(jì)部分,本文章的重要部分,提供了系統(tǒng)架構(gòu)的詳細(xì)設(shè)計(jì)和一些主要功能模塊的設(shè)計(jì)說(shuō)明。
第五章是系統(tǒng)的具體實(shí)現(xiàn),介紹系統(tǒng)的各個(gè)模塊的具體實(shí)現(xiàn)。
第六章在前幾章的基礎(chǔ)上對(duì)系統(tǒng)進(jìn)行測(cè)試和運(yùn)行。
最后對(duì)系統(tǒng)進(jìn)行了認(rèn)真的總結(jié),以此對(duì)未來(lái)有一個(gè)新的展望。
本系統(tǒng)前端部分基于MVVM模式進(jìn)行開(kāi)發(fā),采用B/S模式,后端部分基于Java的ssm框架進(jìn)行開(kāi)發(fā)。
前端部分:前端框架采用了比較流行的漸進(jìn)式JavaScript框架Vue.js。使用Vue-Router和Vuex實(shí)現(xiàn)動(dòng)態(tài)路由和全局狀態(tài)管理,Ajax實(shí)現(xiàn)前后端通信,Element UI組件庫(kù)使頁(yè)面快速成型,項(xiàng)目前端通過(guò)柵格布局實(shí)現(xiàn)響應(yīng)式,可適應(yīng)PC端、平板端、手機(jī)端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用ssm作為開(kāi)發(fā)框架,同時(shí)集成MyBatis、Redis等相關(guān)技術(shù)
MVVM是Model-View-ViewModel的簡(jiǎn)寫(xiě)。它本質(zhì)上就是MVC 的改進(jìn)版。MVVM 就是將其中的View 的狀態(tài)和行為抽象化,讓我們將視圖 UI 和業(yè)務(wù)邏輯分開(kāi)。當(dāng)然這些事 ViewModel 已經(jīng)幫我們做了,它可以取出 Model 的數(shù)據(jù)同時(shí)幫忙處理 View 中由于需要展示內(nèi)容而涉及的業(yè)務(wù)邏輯。微軟的WPF帶來(lái)了新的技術(shù)體驗(yàn),如Silverlight、音頻、視頻、3D、動(dòng)畫(huà)……,這導(dǎo)致了軟件UI層更加細(xì)節(jié)化、可定制化。同時(shí),在技術(shù)層面,WPF也帶來(lái)了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來(lái)便是MVP(Model-View-Presenter)模式與WPF結(jié)合的應(yīng)用方式時(shí)發(fā)展演變過(guò)來(lái)的一種新型架構(gòu)框架。它立足于原有MVP框架并且把WPF的新特性糅合進(jìn)去,以應(yīng)對(duì)客戶日益復(fù)雜的需求變化。
Mysql 經(jīng)過(guò)多次的更新,功能層面已經(jīng)非常的豐富和完善了,從Mysql4版本到5版本進(jìn)行了比較大的更新,在商業(yè)的實(shí)際使用中取得了很好的實(shí)際應(yīng)用效果。最新版本的Mysql支持對(duì)信息的壓縮,同時(shí)還能進(jìn)行加密能更好的滿足對(duì)信息安全性的需求。同時(shí)經(jīng)過(guò)系統(tǒng)的多次更新,數(shù)據(jù)庫(kù)自身的鏡像功能也得到了很大的增強(qiáng),運(yùn)行的流暢度和易用性方面有了不小的進(jìn)步,驅(qū)動(dòng)的使用和創(chuàng)建也更加的高效快捷。最大的變動(dòng)還是進(jìn)行了空間信息的顯示優(yōu)化,能更加方便的在應(yīng)用地圖上進(jìn)行坐標(biāo)的標(biāo)注和運(yùn)算。強(qiáng)大的備份功能也保證了用戶使用的過(guò)程會(huì)更加安心,同時(shí)支持的Office特性還支持用戶的自行安裝和使用。在信息的顯示形式上也進(jìn)行了不小的更新,增加了兩個(gè)非常使用的顯示區(qū),一個(gè)是信息區(qū),對(duì)表格和文字進(jìn)行了分類處理,界面的顯示更加清爽和具體。第二是儀表的信息控件,能在儀表信息區(qū)進(jìn)行信息的顯示,同時(shí)還能進(jìn)行多個(gè)信息的比對(duì),為用戶的實(shí)際使用帶來(lái)了很大的便捷。
針對(duì)本文中設(shè)計(jì)的學(xué)生社團(tuán)管理系統(tǒng)在實(shí)際的實(shí)現(xiàn)過(guò)程中,最終選擇Mysql數(shù)據(jù)庫(kù)的主要原因在于在企業(yè)的應(yīng)用系統(tǒng)應(yīng)用及開(kāi)發(fā)的過(guò)程中會(huì)存在大量的數(shù)據(jù)庫(kù)比較頻繁的操作,而且數(shù)據(jù)的安全性要求也是非常的高。綜合這些因素,最終選擇安全性系數(shù)比較高的Mysql來(lái)對(duì)學(xué)生社團(tuán)管理系統(tǒng)后臺(tái)數(shù)據(jù)進(jìn)行存儲(chǔ)操作。
B/S(Browser/Server)比前身架構(gòu)更為省事的架構(gòu)。它借助Web server完成數(shù)據(jù)的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達(dá)到“瘦身”效果, 不需要考慮不停裝軟件的問(wèn)題。
SSM即SpringMVVM+Spring+MySQL,這三個(gè)框架有各自最獨(dú)有的優(yōu)勢(shì),那么將它們組合在一起能夠碰撞出很強(qiáng)的火花。設(shè)計(jì)者在不需消耗大量功夫,能做出Web應(yīng)用程序,而且這個(gè)程序還具有層次清晰、升級(jí)更新操作不影響正常使用的、允許多次使用的特點(diǎn)。這個(gè)復(fù)合框架形成一個(gè)有著結(jié)構(gòu)完整、功能強(qiáng)大和結(jié)構(gòu)良好的體系:SpringMVVM使各板塊分離,Spring使開(kāi)發(fā)更靈活方便,讓開(kāi)發(fā)者直接對(duì)對(duì)象進(jìn)行操縱,各層次分工明細(xì),并實(shí)現(xiàn)各個(gè)層次間的解耦,讓代碼更加的靈活精簡(jiǎn)。這個(gè)框架使程序員能夠規(guī)避在開(kāi)發(fā)時(shí)期避免個(gè)別錯(cuò)誤導(dǎo)致整體被破壞,也能在后期應(yīng)對(duì)客戶對(duì)產(chǎn)品提出的新需求。
DAO層、Service層這兩個(gè)層次都可以單獨(dú)開(kāi)發(fā),互相的耦合度很低,完全可以獨(dú)立進(jìn)行,這樣的一種模式在開(kāi)發(fā)大項(xiàng)目的過(guò)程中尤其有優(yōu)勢(shì)。
Controller,View層因?yàn)轳詈隙缺容^高,因而要結(jié)合在一起開(kāi)發(fā),但是也可以看作一個(gè)整體獨(dú)立于前兩個(gè)層進(jìn)行開(kāi)發(fā)。這樣,在層與層之前只需要知道接口的定義,調(diào)用接口即可完成所需要的邏輯單元應(yīng)用,一切顯得非常清晰簡(jiǎn)單。
系統(tǒng)分析
本次設(shè)計(jì)基于B/S 模式下,運(yùn)用Java、JSP技術(shù)采用的是MySQL數(shù)據(jù)庫(kù)和Eclipse實(shí)現(xiàn),總體的可行性共分為以下三個(gè)方面。
所謂的技術(shù)可行性就是在限定時(shí)間,前期擬定的功能能否被滿足。在開(kāi)發(fā)設(shè)計(jì)上是否會(huì)遇上解決不了的問(wèn)題。做完的項(xiàng)目能否被很好地應(yīng)用,如果存在缺點(diǎn)在后期的維護(hù)上是否存在很大的難度。在對(duì)這個(gè)系統(tǒng)評(píng)估后,認(rèn)定已存在的技術(shù)能達(dá)成目標(biāo)。用Java技術(shù)來(lái)實(shí)現(xiàn)動(dòng)態(tài)的頁(yè)面,嵌入低依賴性的設(shè)計(jì)模式,靈活的數(shù)據(jù)庫(kù),配合穩(wěn)定的服務(wù)器,整個(gè)系統(tǒng)的運(yùn)行效率大大提升。由此可見(jiàn),在技術(shù)層面達(dá)成目標(biāo)不是非非之想。
在項(xiàng)目上使用的工具大部分都是是當(dāng)下流行開(kāi)源免費(fèi)的,所以在開(kāi)發(fā)前期,開(kāi)發(fā)時(shí)用于項(xiàng)目的經(jīng)費(fèi)將會(huì)大大降低,不會(huì)讓開(kāi)發(fā)該軟件在項(xiàng)目啟動(dòng)期受到經(jīng)費(fèi)的影響,所以經(jīng)濟(jì)上還是可行的。盡量用最少的花費(fèi)去滿足用戶的需求。省下經(jīng)費(fèi)用于人工費(fèi),以及設(shè)備費(fèi)用。將在無(wú)紙化,高效率的道路上越走越遠(yuǎn)。
本系統(tǒng)實(shí)現(xiàn)功能的操作很簡(jiǎn)單,普通電腦的常見(jiàn)配置就可以運(yùn)行本軟件,并且只要粗通電腦使用的基本常識(shí)就可以流暢的使用本軟件。電腦具備連接互聯(lián)網(wǎng)的能力,并且可以正常訪問(wèn)系統(tǒng),并不需要操作者有什么高超的能力,只需了解業(yè)務(wù)流程,并且按照專業(yè)知識(shí)進(jìn)行正確操作即可,所以老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)具備操作可行性。
在系統(tǒng)開(kāi)發(fā)設(shè)計(jì)前,應(yīng)該對(duì)功能做初步設(shè)想,清楚這個(gè)管理系統(tǒng)有什么板塊,每個(gè)板塊有什么功能,整體的設(shè)計(jì)是否滿足使用者的需求,接著對(duì)所開(kāi)發(fā)的系統(tǒng)功能進(jìn)行的詳細(xì)分析總結(jié),從而設(shè)計(jì)出完整的系統(tǒng)并將其實(shí)現(xiàn)。用戶和開(kāi)發(fā)人員的交流分析,使其達(dá)到最佳理解程度,使系統(tǒng)功能達(dá)到最佳。
用戶用例圖如下所示。
?
圖3-1 用戶用例圖
管理員用例圖如下所示。
?
圖3-2 管理員用例圖
護(hù)工人員用例圖如下所示。
?
圖3-3護(hù)工用例圖
老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)在對(duì)需求做解析后,整個(gè)系統(tǒng)主要分為三部分:管理員、護(hù)工和注冊(cè)用戶,每個(gè)模塊下的分支功能不一樣。對(duì)功能做出如下說(shuō)明:
普通用戶模塊:
賬號(hào)注冊(cè)。
賬號(hào)登錄認(rèn)證。
管理個(gè)人資料信息,修改可修改的信息項(xiàng)。
社區(qū)新聞模塊:包括快標(biāo)題、封面圖、文章分類、標(biāo)簽。
護(hù)工介紹模塊:包括護(hù)工工號(hào)、姓名、性別、年齡、照片、每小時(shí)單價(jià)。
個(gè)人中心模塊:包括實(shí)名認(rèn)證、修改密碼、訂單信息。
管理員模塊:
維護(hù)普通用戶,審核普通用戶的賬號(hào),可以凍結(jié)普通用戶的登錄權(quán)限,或者刪除普通用戶賬號(hào)。
發(fā)布社區(qū)新聞,并可以銷毀某個(gè)社區(qū)新聞,更新社區(qū)新聞數(shù)據(jù),模糊搜索社區(qū)新聞數(shù)據(jù)等。
護(hù)工請(qǐng)假模塊,對(duì)護(hù)工請(qǐng)假信息的查詢、刪除、添加等信息。
護(hù)工介紹模塊:對(duì)護(hù)工介紹信息的查詢、刪除、添加等信息。
護(hù)工預(yù)約模塊:對(duì)護(hù)工預(yù)約信息的查詢、刪除、添加等信息。
健康信息模塊:并可以銷毀某個(gè)健康信息,更新健康數(shù)據(jù),模糊搜索健康信息數(shù)據(jù)等。
健康知識(shí)模塊:并可以銷毀某個(gè)健康知識(shí),更新健康知識(shí)數(shù)據(jù),模糊搜索健康知識(shí)數(shù)據(jù)等。
老人信息模塊:并可以銷毀某個(gè)老人信息,更新老人信息數(shù)據(jù),模糊搜索老人信息數(shù)據(jù)等。
系統(tǒng)非功能需求有非常多,比如性能需求、可承載最大用戶數(shù)、穩(wěn)定性、易用性需求等。本系統(tǒng)分析時(shí)考慮到易用性需求,因?yàn)橄到y(tǒng)是給人使用的,所以必須充分從用戶的角度出發(fā),考慮用戶體驗(yàn),使系統(tǒng)易理解易上手易操作。
一層數(shù)據(jù)流程圖包括了登錄注冊(cè)、用戶功能和檢索維護(hù)等模塊,在登錄注冊(cè)模塊使用到的數(shù)據(jù)存儲(chǔ)有用戶賬戶文檔,用戶功能模塊需要的存儲(chǔ)是用戶各功能模塊數(shù)據(jù)文檔,檢索維護(hù)是使用以上這些數(shù)據(jù)文檔通過(guò)關(guān)鍵詞進(jìn)行檢索。
系統(tǒng)的一層數(shù)據(jù)流圖如下圖所示。
?
圖3-2系統(tǒng)數(shù)據(jù)流圖(一層)
二層數(shù)據(jù)流程是對(duì)一層數(shù)據(jù)流層圖中填寫(xiě)登錄注冊(cè)信息、用戶功能的細(xì)化。即:填寫(xiě)登錄注冊(cè)信息細(xì)化為填制信息、后臺(tái)審核,用戶功能細(xì)化為護(hù)工介紹、護(hù)工請(qǐng)假、護(hù)工要預(yù)約、健康信息、健康知識(shí)、事故信息、老人信息等操作。
系統(tǒng)的二層數(shù)據(jù)流圖如下圖所示。
?
圖3-4系統(tǒng)數(shù)據(jù)流圖(二層)
目前B/S體系的系統(tǒng)主要的數(shù)據(jù)訪問(wèn)方式是:通過(guò)瀏覽器頁(yè)面用戶可以進(jìn)入系統(tǒng),系統(tǒng)可以自動(dòng)對(duì)用戶向服務(wù)器發(fā)送的請(qǐng)求進(jìn)行處理,處理請(qǐng)求是在系統(tǒng)后臺(tái)中進(jìn)行的,用戶在瀏覽器頁(yè)面上進(jìn)行相應(yīng)操作,就能夠看到服務(wù)端傳遞的處理結(jié)果。老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)主要分為視圖-模型-控制三層架構(gòu)設(shè)計(jì)。在視圖層中,主要是操作在服務(wù)器端向客戶端反饋并顯示的數(shù)據(jù),在模型層中,主要處理相關(guān)的業(yè)務(wù)邏輯、數(shù)據(jù)整合等,最后的控制層它介于視圖和模型之間,主要是調(diào)整兩層之間的關(guān)系,最終落實(shí)數(shù)據(jù)的傳遞。
系統(tǒng)架構(gòu)圖如下圖所示。
?
圖4-1系統(tǒng)架構(gòu)圖
系統(tǒng)設(shè)計(jì)的目的是分析系統(tǒng)包括的所有功能結(jié)構(gòu),為開(kāi)發(fā)人員設(shè)計(jì)開(kāi)發(fā)和實(shí)現(xiàn)系統(tǒng)做好準(zhǔn)備工作。經(jīng)過(guò)前期的需求調(diào)查、分析和整理之后,確定的總體需求主要包括多個(gè)模塊,分別是:護(hù)工介紹、護(hù)工預(yù)約、護(hù)工請(qǐng)假、健康知識(shí)、健康信息、老人信息、事故信息。系統(tǒng)整體角色分為三部分,一是管理員、二是注冊(cè)用戶、三是護(hù)工。權(quán)限分布也是很明顯,普通用戶是在除去瀏覽信息之外還具有查詢和管理自己賬戶信息、公告欄、社區(qū)新聞、護(hù)工介紹、健康知識(shí)等權(quán)限;管理員是最高權(quán)限擁有者。
系統(tǒng)功能結(jié)構(gòu)圖如下圖所示。
?
圖4-2系統(tǒng)功能結(jié)構(gòu)圖
管理員模塊:
維護(hù)普通用戶:審核普通用戶的賬號(hào),可以凍結(jié)普通用戶的登錄權(quán)限,或者刪除普通用戶賬號(hào)。
老人信息:對(duì)老人信息進(jìn)行維護(hù)。
護(hù)工請(qǐng)假管理:對(duì)護(hù)工請(qǐng)假進(jìn)行維護(hù),添加、刪除、修改信息。
護(hù)工介紹管理:對(duì)護(hù)工介紹進(jìn)行維護(hù),添加、刪除、修改信息。
護(hù)工預(yù)約管理:對(duì)預(yù)約信息進(jìn)行維護(hù),添加、刪除、修改信息。
健康信息管理:對(duì)健康信息進(jìn)行維護(hù)管理。
健康知識(shí)管理:對(duì)健康知識(shí)信息的進(jìn)行維護(hù)管理。
對(duì)于一個(gè)要開(kāi)發(fā)的系統(tǒng)來(lái)說(shuō),E-R圖可以讓別人能更快更輕松的了解此系統(tǒng)的事務(wù)及它們之間的關(guān)系。根據(jù)系統(tǒng)分析階段所得出的結(jié)論確定了在老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)中存在著多個(gè)實(shí)體分別是用菜品中心、護(hù)工請(qǐng)假、護(hù)工介紹、護(hù)工預(yù)約、健康信息、健康知識(shí)、老人信息。
系統(tǒng)總體ER圖如下圖所示。
?
圖4-4系統(tǒng)總體ER圖
管理員(管理員id、用戶名、密碼、權(quán)限)
注冊(cè)用戶(注冊(cè)用戶id、用戶名、性別、年齡、審核狀態(tài))
護(hù)工人員(護(hù)工人員id、護(hù)工工號(hào)、審核狀態(tài))
護(hù)工請(qǐng)假(護(hù)工請(qǐng)假id、護(hù)工工號(hào)、請(qǐng)假類型、請(qǐng)假開(kāi)始時(shí)間、請(qǐng)假結(jié)束時(shí)間、請(qǐng)假原因、審核狀態(tài)、審核回復(fù))
護(hù)工預(yù)約(護(hù)工預(yù)約id、護(hù)工工號(hào)、姓名、每小時(shí)單價(jià)、預(yù)約時(shí)長(zhǎng)、總費(fèi)用、服務(wù)時(shí)間、用戶名、聯(lián)系電話、服務(wù)地址、審核狀態(tài)、審核回復(fù)、支付狀態(tài)、支付類型)
護(hù)工介紹(護(hù)工介紹id、護(hù)工工號(hào)、姓名、性別、年齡、照片、每小時(shí)單價(jià)、護(hù)工介紹、點(diǎn)擊數(shù)、點(diǎn)贊數(shù))
健康知識(shí)(健康知識(shí)id、標(biāo)題、封面、所屬類別、簡(jiǎn)介、詳情、點(diǎn)擊數(shù)、點(diǎn)贊數(shù))
健康信息(健康信息id、用戶名、姓名、填報(bào)日期、體溫、血壓、有無(wú)不適、其他備注)
菜品中心(菜品中心id、食材、原價(jià)、賣價(jià)、商品庫(kù)存、商品分類)
老人信息(老人信息id、老人姓名、性別、年齡、身份證、緊急聯(lián)系人、聯(lián)系電話、疾病史、藥物國(guó)民史)
事故信息(事故信息id、老人姓名、事故時(shí)間、事故內(nèi)容、事故原因、處理方案)
數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)就是將E-R圖在數(shù)據(jù)庫(kù)中用具體的字段進(jìn)行描述。用字段和數(shù)據(jù)類型描述來(lái)使對(duì)象特征實(shí)體化,最后形成具有一定邏輯關(guān)系的數(shù)據(jù)庫(kù)表結(jié)構(gòu)。老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)所需要的部分?jǐn)?shù)據(jù)結(jié)構(gòu)表如下表所示。
registered_user表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| registered_user_id | int | 11 | 是 | 是 | 注冊(cè)用戶ID |
| user_name | varchar | 64 | 是 | 否 | 用戶名 |
| gender | varchar | 64 | 否 | 否 | 性別 |
| age | varchar | 64 | 否 | 否 | 年齡 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
nursing_workers_ask_for_leave表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| nursing_workers_ask_for_leave_id | int | 11 | 是 | 是 | 護(hù)工請(qǐng)假ID |
| nurse_no | int | 11 | 否 | 否 | 護(hù)工工號(hào) |
| leave_type | varchar | 64 | 否 | 否 | 請(qǐng)假類型 |
| leave_start_time | datetime | 0 | 否 | 否 | 請(qǐng)假開(kāi)始時(shí)間 |
| leave_end_time | datetime | 0 | 否 | 否 | 請(qǐng)假結(jié)束時(shí)間 |
| reason_for_leave | text | 0 | 否 | 否 | 請(qǐng)假原因 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| examine_reply | varchar | 255 | 否 | 否 | 審核回復(fù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
nursing_staff表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| nursing_staff_id | int | 11 | 是 | 是 | 護(hù)工人員ID |
| nurse_no | varchar | 64 | 是 | 否 | 護(hù)工工號(hào) |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
nurse_appointment表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| nurse_appointment_id | int | 11 | 是 | 是 | 護(hù)工預(yù)約ID |
| nurse_no | int | 11 | 否 | 否 | 護(hù)工工號(hào) |
| full_name | varchar | 64 | 否 | 否 | 姓名 |
| unit_price_per_hour | varchar | 64 | 否 | 否 | 每小時(shí)單價(jià) |
| appointment_duration | int | 11 | 否 | 否 | 預(yù)約時(shí)長(zhǎng) |
| total_cost | varchar | 64 | 否 | 否 | 總費(fèi)用 |
| service_time_ | datetime | 0 | 否 | 否 | 服務(wù)時(shí)間 |
| user_name | int | 11 | 否 | 否 | 用戶名 |
| contact_number | varchar | 64 | 否 | 否 | 聯(lián)系電話 |
| service_address | varchar | 64 | 否 | 否 | 服務(wù)地址 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| examine_reply | varchar | 255 | 否 | 否 | 審核回復(fù) |
| pay_state | varchar | 16 | 是 | 否 | 支付狀態(tài) |
| pay_type | varchar | 16 | 否 | 否 | 支付類型: 微信、支付寶、網(wǎng)銀 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
introduction_to_nursing_workers表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| introduction_to_nursing_workers_id | int | 11 | 是 | 是 | 護(hù)工介紹ID |
| nurse_no | int | 11 | 否 | 否 | 護(hù)工工號(hào) |
| full_name | varchar | 64 | 否 | 否 | 姓名 |
| gender | varchar | 64 | 否 | 否 | 性別 |
| age | varchar | 64 | 否 | 否 | 年齡 |
| photo | varchar | 255 | 否 | 否 | 照片 |
| unit_price_per_hour | int | 11 | 否 | 否 | 每小時(shí)單價(jià) |
| introduction_to_nursing_workers | longtext | 0 | 否 | 否 | 護(hù)工介紹 |
| hits | int | 11 | 是 | 否 | 點(diǎn)擊數(shù) |
| praise_len | int | 11 | 是 | 否 | 點(diǎn)贊數(shù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
health_knowledge表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| health_knowledge_id | int | 11 | 是 | 是 | 健康知識(shí)ID |
| title | varchar | 64 | 否 | 否 | 標(biāo)題 |
| cover | varchar | 255 | 否 | 否 | 封面 |
| category | varchar | 64 | 否 | 否 | 所屬類別 |
| brief_introduction | text | 0 | 否 | 否 | 簡(jiǎn)介 |
| details | longtext | 0 | 否 | 否 | 詳情 |
| hits | int | 11 | 是 | 否 | 點(diǎn)擊數(shù) |
| praise_len | int | 11 | 是 | 否 | 點(diǎn)贊數(shù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
health_information表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| health_information__id | int | 11 | 是 | 是 | 健康信息ID |
| user_name | int | 11 | 否 | 否 | 用戶名 |
| full_name | varchar | 64 | 否 | 否 | 姓名 |
| filling_date | date | 0 | 否 | 否 | 填報(bào)日期 |
| temperature | varchar | 64 | 否 | 否 | 體溫 |
| blood_pressure | varchar | 64 | 否 | 否 | 血壓 |
| any_discomfort | varchar | 64 | 否 | 否 | 有無(wú)不適 |
| other_remarks | varchar | 64 | 否 | 否 | 其他備注 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
food_center表:?
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| food_center_id | int | 11 | 是 | 是 | 菜品中心ID |
| ingredients | varchar | 64 | 否 | 否 | 食材 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| cart_title | varchar | 125 | 否 | 否 | 標(biāo)題 |
| cart_img | text | 0 | 否 | 否 | 封面圖 |
| cart_description | varchar | 255 | 否 | 否 | 描述 |
| cart_price_ago | double | 8 | 是 | 否 | 原價(jià) |
| cart_price | double | 8 | 是 | 否 | 賣價(jià) |
| cart_inventory | int | 11 | 是 | 否 | 商品庫(kù)存 |
| cart_type | varchar | 64 | 是 | 否 | 商品分類 |
| cart_content | longtext | 0 | 否 | 否 | 正文 |
| cart_img_1 | text | 0 | 否 | 否 | 主圖1 |
| cart_img_2 | text | 0 | 否 | 否 | 主圖2 |
| cart_img_3 | text | 0 | 否 | 否 | 主圖3 |
| cart_img_4 | text | 0 | 否 | 否 | 主圖4 |
| cart_img_5 | text | 0 | 否 | 否 | 主圖5 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
elderly_information表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| elderly_information_id | int | 11 | 是 | 是 | 老人信息ID |
| old_man_name | varchar | 64 | 否 | 否 | 老人姓名 |
| gender | varchar | 64 | 否 | 否 | 性別 |
| age | int | 11 | 否 | 否 | 年齡 |
| id | varchar | 64 | 否 | 否 | 身份證 |
| emergency_contact_ | varchar | 64 | 否 | 否 | 緊急聯(lián)系人 |
| contact_number | varchar | 64 | 否 | 否 | 聯(lián)系電話 |
| disease_history | text | 0 | 否 | 否 | 疾病史 |
| national_history_of_drugs | text | 0 | 否 | 否 | 藥物國(guó)民史 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
accident_information表:?
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| accident_information_id | int | 11 | 是 | 是 | 事故信息ID |
| old_man_name | varchar | 64 | 否 | 否 | 老人姓名 |
| accident_time | datetime | 0 | 否 | 否 | 事故時(shí)間 |
| accident_content | text | 0 | 否 | 否 | 事故內(nèi)容 |
| cause_of_accident | text | 0 | 否 | 否 | 事故原因 |
| treatment_scheme | text | 0 | 否 | 否 | 處理方案 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
系統(tǒng)的登錄窗口是用戶的入口,用戶只有在登錄成功后才可以進(jìn)入訪問(wèn)。通過(guò)在登錄提交表單,后臺(tái)處理判斷是否為合法用戶,進(jìn)行頁(yè)面跳轉(zhuǎn),進(jìn)入系統(tǒng)中去。
登錄合法性判斷過(guò)程:用戶輸入賬號(hào)和密碼后,系統(tǒng)首先確定輸入輸入數(shù)據(jù)合法性,然后在login.jsp頁(yè)面發(fā)送登錄請(qǐng)求,調(diào)用src下的mainctrl類的dopost方法來(lái)驗(yàn)證。
用戶登錄模塊的IPO如下所示:
輸入:用戶名和密碼。
處理:
1)檢測(cè)用戶輸入的賬號(hào)、密碼是否正確及在數(shù)據(jù)庫(kù)已對(duì)應(yīng)存在。
2)從數(shù)據(jù)庫(kù)中提取記錄,并儲(chǔ)存在本地的session中(timeout默認(rèn)=30min)。
3)根據(jù)用戶名,將其顯示在系統(tǒng)首頁(yè)上。
輸出:是否成功的信息。
登錄流程圖如下所示。
?
圖5-1登錄流程圖
系統(tǒng)登錄界面如下所示。
?
圖5-2系統(tǒng)登錄界面
用戶登錄的邏輯代碼如下。
??/**
?????* 登錄
?????* @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;
????????QueryWrapper wrapper = new QueryWrapper<User>();
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}else{
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????//判斷是否有這個(gè)用戶
????????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.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態(tài)
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過(guò)")){
????????????????return error(30000,"該用戶審核未通過(guò)");
????????????}
????????}
????????//查詢用戶狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態(tài),不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲(chǔ)Token到數(shù)據(jù)庫(kù)
????????????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, "賬號(hào)或密碼不正確");
????????}
}
????public String select(Map<String,String> query,Map<String,String> config){
????????StringBuffer sql = new StringBuffer("select ");
????????sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
????????sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
????????if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
????????????sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
????????}
????????if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
????????????sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
????????}
????????if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
????????????int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
????????????int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
????????????sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
????????}
????????log.info("[{}] - 查詢操作,sql: {}",table,sql);
????????return sql.toString();
}
????public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
系統(tǒng)呈現(xiàn)出一種簡(jiǎn)潔大方的首頁(yè):界面簡(jiǎn)約、鱗次櫛比,用戶能輕車熟路的使用。出于對(duì)系統(tǒng)使用群體廣泛的顧慮,應(yīng)有良好性能的后臺(tái)。
如下圖所示為系統(tǒng)的首頁(yè)界面。
?
圖5-3系統(tǒng)首頁(yè)界面
其中載入首頁(yè)頁(yè)面的主要代碼如下。
package com.project.demo.constant;
/**
?*/
public class FindConfig {
????public static String PAGE = "page";
????public static String SIZE = "size";
????public static String LIKE = "like";
????public static String ORDER_BY = "orderby";
????public static String FIELD = "field";
????public static String GROUP_BY = "groupby";
????public static String MIN_ = "_min";
????public static String MAX_ = "_max";
}
此頁(yè)面實(shí)現(xiàn)普通用戶的注冊(cè),必須注冊(cè)登錄后才能使用系統(tǒng)大部分功能,用戶名不允許重復(fù)如果重復(fù)將會(huì)注冊(cè)失敗,并彈出相應(yīng)的提示,通過(guò)js實(shí)現(xiàn)對(duì)輸入的驗(yàn)證。
用戶注冊(cè)流程圖如下所示。
?
圖5-4用戶注冊(cè)流程圖
用戶注冊(cè)界面如下圖所示。
?
圖5-5用戶注冊(cè)界面
用戶注冊(cè)關(guān)鍵代碼如下所示。
/**
?????* 注冊(cè)
?????* @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);
}
社區(qū)新聞過(guò)程中,首先使用getmap(id,"xinxi"),通過(guò)社區(qū)ID得到社區(qū)新聞數(shù)據(jù),將社區(qū)新聞數(shù)據(jù)賦值給社區(qū),調(diào)用CommDAO的insert方法將新聞數(shù)據(jù)表中,最后查看個(gè)人歷史社區(qū)新聞?dòng)涗?#xff0c;可以銷毀歷史社區(qū)新聞數(shù)據(jù)。
社區(qū)新聞流程圖如下所示。
?
圖5-6社區(qū)新聞程圖
社區(qū)新聞管理界面如圖所示。
?
圖5-7社區(qū)新聞管理界面
社區(qū)新聞關(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);
}
護(hù)工介紹過(guò)程中,首先使用getmap(id,"xinxi"),通過(guò)護(hù)工ID得到介紹信息數(shù)據(jù),將護(hù)工數(shù)據(jù)賦值給護(hù)工介紹,調(diào)用CommDAO的insert方法將護(hù)工介紹數(shù)據(jù)插入表中,最后查看個(gè)人歷史護(hù)工介紹記錄,可以銷毀歷史護(hù)工介紹數(shù)據(jù)。
護(hù)工介紹流程圖如下所示。
?
圖5-8護(hù)工介紹流程圖
護(hù)工介紹管理界面如圖所示。
?
圖5-9護(hù)工介紹管理界面
護(hù)工介紹管理關(guān)鍵代碼如下所示。
@RequestMapping(value = "/del")
????@Transactional
????public Map<String, Object> del(HttpServletRequest request) {
????????service.delete(service.readQuery(request), service.readConfig(request));
????????return success(1);
}
護(hù)工人員在yhzhgl查看護(hù)工信息,先使用sql語(yǔ)句查詢出所有護(hù)工人員表的數(shù)據(jù),然后調(diào)用PageManager.getPages(url,4,sql, request ),返回一個(gè)ArrayList的對(duì)象,在for循環(huán)里,使用jsp得到每個(gè)ArrayList對(duì)象的數(shù)據(jù),在jsp頁(yè)面中解析ArrayList對(duì)象,得到其各個(gè)鍵值對(duì)的值。
護(hù)工人員管理界面如下圖所示。
?
圖5-10護(hù)工人員管理界面
護(hù)工人員管理關(guān)鍵代碼如下所示。
??@PostMapping("/set")
@Transactional
????public Map<String, Object> set(HttpServletRequest request) throws IOException {
????????service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
????????return success(1);
}
用戶點(diǎn)擊登錄填寫(xiě)賬號(hào)信息登錄后,會(huì)切換內(nèi)容為“某某用戶歡迎您”和歷史訂單,并給出注銷鏈接。當(dāng)用戶登錄成功后會(huì)將個(gè)人信息保存在session作用域中,點(diǎn)擊自己的用戶名時(shí),會(huì)跳轉(zhuǎn)到個(gè)人詳細(xì)信息頁(yè)面,由后臺(tái)通過(guò)Freemarker取出session作用域中的用戶信息進(jìn)行動(dòng)態(tài)渲染,例如,郵箱、電話號(hào)碼、用戶名等等。同時(shí)頁(yè)面上會(huì)顯示修改個(gè)人信息和修改密碼的按鈕,這時(shí)客戶可以修改自己的登錄密碼以保障賬號(hào)的安全性,防止被人竊取賬號(hào),通過(guò)UserController.java的updatePassword()實(shí)現(xiàn),同時(shí)也可以根據(jù)自己的個(gè)人信息是否變動(dòng)做出相應(yīng)的修改,通過(guò)updateUserInfo()實(shí)現(xiàn)。
密碼修改流程圖如下所示。
?
圖5-11密碼修改流程圖
密碼修改關(guān)鍵代碼如下所示。
public String encryption(String plainText) {
????????String re_md5 = new String();
????????try {
????????????MessageDigest md = MessageDigest.getInstance("MD5");
????????????md.update(plainText.getBytes());
????????????byte b[] = md.digest();
????????????int i;
????????????StringBuffer buf = new StringBuffer("");
????????????for (int offset = 0; offset < b.length; offset++) {
????????????????i = b[offset];
????????????????if (i < 0)
????????????????????i += 256;
????????????????if (i < 16)
????????????????????buf.append("0");
????????????????buf.append(Integer.toHexString(i));
????????????}
????????????re_md5 = buf.toString();
????????} catch (Exception e) {
????????????e.printStackTrace();
????????}
????????return re_md5;
}
添加菜品信息時(shí),輸入必填字段后,表現(xiàn)層的ShequController接受傳過(guò)來(lái)的菜品中心信息參數(shù),再調(diào)用ShequController類的addShequ方法,經(jīng)過(guò)ShequService業(yè)務(wù)層到ShequMapper持久層的處理,完成對(duì)整個(gè)添加菜品信息的操作。addShequ方法也和用戶管理中的addUser方法類似,同時(shí)做添加和修改工作。
修改菜品中心信息時(shí),選擇需要修改的菜品信息進(jìn)行修改,調(diào)用ShequController控制器的editShequ方法,拿到該菜品原本的信息并顯示到頁(yè)面,管理員再對(duì)需要修改的菜品信息字段進(jìn)行修改,完成后調(diào)用addShequ方法,調(diào)用業(yè)務(wù)層的updateByKey方法,更新數(shù)據(jù)庫(kù)的菜品中心信息表的數(shù)據(jù)。
菜品中心管理流程圖如下所示。
?
圖5-12菜品中心管理流程圖
菜品中心管理界面如下圖所示。
?
圖5-13菜品中心管理界面
菜品中心管理關(guān)鍵代碼如下所示。
??public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
管理員在后臺(tái)管理界面點(diǎn)擊到所有訂單界面dingdan_list.php,向控制層dingdanAction發(fā)送請(qǐng)求,搜索當(dāng)前所有訂單信息,dingdanAction向訂單數(shù)據(jù)訪問(wèn)層調(diào)用搜索全部訂單的請(qǐng)求,向數(shù)據(jù)庫(kù)的訂單表搜索當(dāng)前所有訂單并將訂單信息以對(duì)象的形式層層返回到dingdan_list.php界面,顯示出當(dāng)前所有訂單信息。同時(shí)可以刪除過(guò)期訂單,確認(rèn)已有訂單,進(jìn)行發(fā)貨處理。
訂單列表管理流程圖如下所示。
?
圖5-14訂單列表管理流程圖
訂單列表添加界面如下圖所示。
?
圖5-15訂單列表添加界面
訂單列表信息添加關(guān)鍵代碼如下所示。
<mapper namespace="com.project.demo.dao.base.BaseMapper">
????<select id="selectBaseList" resultType="java.util.LinkedHashMap">
????????${select}
????</select>
????<select id="selectBaseCount" resultType="Integer">
????????${count}
????</select>
????<select id="selectBaseOne" resultType="Object">
????????${select}
????</select>
????<update id="updateBaseSql">
????????${sql}
????</update>
????<delete id="deleteBaseSql">
????????${sql}
????</delete>
</mapper>
在對(duì)該系統(tǒng)進(jìn)行完詳細(xì)設(shè)計(jì)和編碼之后,就要對(duì)老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)的程序進(jìn)行測(cè)試,檢測(cè)程序是否運(yùn)行無(wú)誤,反復(fù)進(jìn)行測(cè)試和修改,使之最后成為完整的軟件,滿足用戶的需求,實(shí)現(xiàn)預(yù)期的功能。
在軟件的測(cè)試過(guò)程中,通常測(cè)試人員需要針對(duì)不同的功能模塊設(shè)計(jì)多種測(cè)試用例。通過(guò)測(cè)試用例能夠及時(shí)發(fā)現(xiàn)代碼業(yè)務(wù)邏輯上是否與真實(shí)的業(yè)務(wù)邏輯相對(duì)應(yīng),及時(shí)發(fā)現(xiàn)代碼上或邏輯上的缺陷,以此來(lái)來(lái)完善系統(tǒng),提高軟件產(chǎn)品的質(zhì)量,使軟件具有良好的用戶體驗(yàn)。
注冊(cè)測(cè)試用例表如下所示。
表6-1注冊(cè)測(cè)試用例
| 測(cè)試性能 | 新用戶注冊(cè) | ||
| 用例目的 | 測(cè)試系統(tǒng)新用戶個(gè)人信息注冊(cè)功能的功能和安全性 | ||
| 前提條件 | 進(jìn)入注冊(cè)頁(yè)面填寫(xiě)個(gè)人信息 | ||
| 輸入條件 | 預(yù)期輸出 | 實(shí)際情況 | |
| 各項(xiàng)基本信息輸入不完整 | 不允許注冊(cè),無(wú)法點(diǎn)擊注冊(cè)按鈕 | 一致 | |
| 填寫(xiě)已存在的用戶名 | 系統(tǒng)顯示出提示信息,要求重新填寫(xiě) | 一致 | |
| 兩次密碼輸入不一致 | 系統(tǒng)顯示出提示信息,要求重新填寫(xiě) | 一致 | |
| 填寫(xiě)的各項(xiàng)信息沒(méi)有符合提示的長(zhǎng)度和字符要求 | 系統(tǒng)顯示出提示信息,要求重新填寫(xiě) | 一致 | |
| 胡亂填寫(xiě)電話號(hào)碼 | 收不到驗(yàn)證碼 | 一致 | |
| 填寫(xiě)驗(yàn)證碼與收到的不一致 | 系統(tǒng)顯示提示信息告知用戶驗(yàn)證碼錯(cuò)誤,不予注冊(cè) | 一致 | |
登錄測(cè)試用例表如下所示。
表6-2登錄測(cè)試用例
| 測(cè)試性能 | 用戶或操作員登錄系統(tǒng) | ||
| 用例目的 | 測(cè)試用戶或操作員登錄系統(tǒng)時(shí)功能是否正常 | ||
| 前提條件 | 進(jìn)入用戶登錄頁(yè)面或操作員登錄頁(yè)面 | ||
| 輸入條件 | 預(yù)期輸出 | 實(shí)際情況 | |
| 各項(xiàng)信息不予填寫(xiě),直接點(diǎn)擊登陸按鈕 | 不允許登錄,提示填寫(xiě)賬號(hào)相關(guān)信息 | 一致 | |
| 填寫(xiě)錯(cuò)誤的登錄名或密碼后點(diǎn)擊登錄系統(tǒng) | 提示用戶名或密碼錯(cuò)誤,要求重新填寫(xiě)進(jìn)行登錄 | 一致 | |
| 填寫(xiě)與驗(yàn)證碼信息不一致的信息 | 系統(tǒng)顯示出提示信息,表明驗(yàn)證碼錯(cuò)誤,要求重新填寫(xiě) | 一致 | |
社區(qū)新聞測(cè)試用例表如下所示。
表6-3社區(qū)新聞測(cè)試用例
| 測(cè)試性能 | 用戶進(jìn)行社區(qū)新聞的操作 | ||
| 用例目的 | 測(cè)試用戶進(jìn)行社區(qū)新聞操作時(shí),該功能是否正常 | ||
| 前提條件 | 用戶進(jìn)入社區(qū)詳情頁(yè),該社區(qū)能夠被新聞 | ||
| 輸入條件 | 預(yù)期輸出 | 實(shí)際情況 | |
| 對(duì)著某社區(qū)點(diǎn)擊“新聞”按鈕 | 界面跳轉(zhuǎn)至新聞界面 | 一致 | |
| 在新聞界面,輸入必填項(xiàng),點(diǎn)擊“提交”按鈕 | 提示“新聞成功”,并返回上一級(jí)界面 | 一致 | |
| 在新聞界面,填寫(xiě)新聞表單的時(shí)候未輸入完整,點(diǎn)擊“提交”按鈕 | 提示“新聞提醒失敗” | 一致 | |
護(hù)工請(qǐng)假測(cè)試用例表如下所示。
表6-4護(hù)工請(qǐng)假測(cè)試用例
| 測(cè)試性能 | 護(hù)工請(qǐng)假相關(guān)信息管理功能 | ||
| 用例目的 | 測(cè)試系統(tǒng)操作者對(duì)社區(qū)相關(guān)信息進(jìn)行管理的功能是否正常 | ||
| 前提條件 | 登錄系統(tǒng)進(jìn)入相關(guān)管理頁(yè)面 | ||
| 輸入條件 | 預(yù)期輸出 | 實(shí)際情況 | |
| 進(jìn)入護(hù)工請(qǐng)假界面,點(diǎn)擊“錄入”按鈕,填寫(xiě)所有必填項(xiàng),點(diǎn)擊提交 | 提示“錄入成功”,并返回查詢界面 | 一致 | |
| 進(jìn)入護(hù)工請(qǐng)假界面,點(diǎn)擊“錄入”按鈕,未填寫(xiě)一個(gè)或者多個(gè)必填項(xiàng),點(diǎn)擊提交 | 提示“錄入失敗”,請(qǐng)?zhí)顚?xiě)必填項(xiàng) | 一致 | |
| 進(jìn)入護(hù)工請(qǐng)假界面,選擇要修改的一條數(shù)據(jù),點(diǎn)擊該條數(shù)據(jù)后面的“修改”按鈕? | 節(jié)目跳轉(zhuǎn)至修改界面 | 一致 | |
| 在修改界面,修改可修改項(xiàng)后,點(diǎn)擊“提交”按鈕 | 提示“修改成功”,并返回查詢界面 | 一致 | |
| 進(jìn)入護(hù)工請(qǐng)假界面,點(diǎn)擊某條數(shù)據(jù)后面的刪除按鈕 | 提示“是否要?jiǎng)h除該數(shù)據(jù)”,如果用戶點(diǎn)擊“確定”按鈕,則成功刪除該條數(shù)據(jù),并提示“刪除成功”,之后返回查詢界面 | 一致 | |
經(jīng)過(guò)對(duì)此系統(tǒng)的測(cè)試,得出該系統(tǒng)足以滿足用戶日常需求,在功能項(xiàng)目和操作等方面也能滿足操作員對(duì)于其他用戶的管理。但是,還有很多功能有待添加,這個(gè)系統(tǒng)僅能滿足大部分的需求,還需要對(duì)此系統(tǒng)的功能更進(jìn)一步的完善,這樣使用起來(lái)才能更加的完美。
通過(guò)老年人社區(qū)服務(wù)平臺(tái)系統(tǒng)的開(kāi)發(fā),本人鞏固了之前學(xué)過(guò)的知識(shí),如今將平時(shí)所學(xué)到的知識(shí)融合在設(shè)計(jì)中,在設(shè)計(jì)過(guò)程中,做了很多的準(zhǔn)備,首先,在數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)過(guò)程中,尤其是在數(shù)據(jù)庫(kù)的工作原理、工作特點(diǎn),對(duì)其深刻的討論,與此同時(shí),對(duì)于小型站點(diǎn)來(lái)說(shuō),最好服務(wù)器的選擇,其次,利用所學(xué)的知識(shí)點(diǎn)分析所做的系統(tǒng),并在此基礎(chǔ)上設(shè)計(jì)。
目前本系統(tǒng)已經(jīng)上線,正在試運(yùn)行階段,用戶反饋良好,基本完成用戶所需,試運(yùn)行過(guò)程中沒(méi)有出現(xiàn)阻斷性問(wèn)題,有一些不足和小問(wèn)題也及時(shí)予以修正,系統(tǒng)上線后,為了保證數(shù)據(jù)的安全性,對(duì)系統(tǒng)進(jìn)行了備份操作,系統(tǒng)備份是每?jī)蓚€(gè)月備份一次,數(shù)據(jù)庫(kù)備份為每周備份一次,系統(tǒng)部署在租賃的云平臺(tái)服務(wù)器中。
本次系統(tǒng)上線成功后,得到了用戶的高度認(rèn)可,但是在功能上和性能上還需做進(jìn)一步的研究處理,使其有更高的性能和更好的用戶體驗(yàn)。
系統(tǒng)在以后的升級(jí)過(guò)程中,需要解決一系列用戶所提出的問(wèn)題,例如打印過(guò)程中如何避免瀏覽器的兼容性問(wèn)題,大量用戶訪問(wèn)時(shí),如何保持較高的響應(yīng)速度,在系統(tǒng)今后的升級(jí)過(guò)程中將著重解決這些安全性問(wèn)題。
參考文獻(xiàn)
[1]嚴(yán)夢(mèng)琴,羅清平,潘國(guó)慶.社區(qū)嵌入式養(yǎng)老機(jī)構(gòu)老年人健康管理服務(wù)需求及對(duì)策研究[J].長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院學(xué)報(bào),2021,28(03):28-29.
[2]王亦冬,張幸福.大力提升黑龍江省社區(qū)老年人健康管理服務(wù)水平[J].奮斗,2021(09):68-69.
[3]邵麗穎,權(quán)薇麗,高秀芹,浦佩佩,肖建彪,李佳,寧鋒.“在線醫(yī)生”模式在社區(qū)老年人健康管理服務(wù)中的應(yīng)用效果評(píng)價(jià)[J].中國(guó)分子心臟病學(xué)雜志,2021,21(02):3804-3808.
[4]李繼源. 一種智慧社區(qū)模塊化管理系統(tǒng)及方法[P]. 山東省:CN112700874A,2021-04-23.
[5]裘奕嘉,曹梅娟,吳桐.杭州市流動(dòng)老年人社區(qū)健康管理服務(wù)需求調(diào)查研究[J].中國(guó)初級(jí)衛(wèi)生保健,2021,35(04):22-25.
[6]趙艷平.家庭醫(yī)生簽約服務(wù)在社區(qū)老年人高血壓患者中的管理效果觀察[J].繼續(xù)醫(yī)學(xué)教育,2021,35(02):167-168.
[7]鞏夢(mèng)瑩.社區(qū)護(hù)理服務(wù)對(duì)社區(qū)老年人慢性病管理的效果分析[J].科學(xué)咨詢(科技·管理),2021(02):21-22.
[8]段秀紅,盧敏,胡文華.綜合醫(yī)療管理信息平臺(tái)在老年人居家醫(yī)護(hù)服務(wù)中的應(yīng)用[J].中國(guó)藥物與臨床,2021,21(02):331-332.
[9]范琳. 中職老年人服務(wù)與管理專業(yè)實(shí)踐課教學(xué)現(xiàn)狀及對(duì)策研究[D].天津職業(yè)技術(shù)師范大學(xué),2020.
[10]楊瑞婷,李亞軍.基于QFD的社區(qū)老年人慢性病管理產(chǎn)品服務(wù)系統(tǒng)設(shè)計(jì)研究[J].工業(yè)工程設(shè)計(jì),2020,2(03):104-112.
[11]彭凌,潘莉.面向老年人的社區(qū)慢性病管理服務(wù)設(shè)計(jì)研究[J].包裝工程,2021,42(08):102-108.
[12]胡月.構(gòu)建社區(qū)為平臺(tái)的老年人健康管理服務(wù)體系研究[J].中國(guó)農(nóng)村衛(wèi)生,2019,11(03):11-13.
[13]胡月.構(gòu)建社區(qū)為平臺(tái)的老年人健康管理服務(wù)體系研究[J].產(chǎn)業(yè)與科技論壇,2019,18(04):212-213.
[14]劉長(zhǎng)虹,楊莉萍,傅宏. 老年健康管理:現(xiàn)狀、問(wèn)題與對(duì)策——以Q社區(qū)為例的質(zhì)化研究[C]//2018第四屆健康,醫(yī)學(xué)與生命科學(xué)國(guó)際會(huì)議論文集(MEDLIFE2018).2018第四屆健康,2018:56-62.
[15]張嘉琳,韓娟美.老年人與青年共享居住模式的可行性研究——基于“互聯(lián)網(wǎng)+”背景下構(gòu)建“云社區(qū)”和時(shí)間銀行養(yǎng)老新模式[J].現(xiàn)代交際,2018(11):49-50.
[16]紀(jì)志耿. 新中國(guó)成立以來(lái)黨領(lǐng)導(dǎo)農(nóng)村公益事業(yè)發(fā)展的歷史進(jìn)程與基本經(jīng)驗(yàn)研究[M].四川大學(xué)出版社:, 201705.345.
[17]倪晶晶, 寧波市社區(qū)老年人健康管理現(xiàn)狀調(diào)查和對(duì)策研究. 浙江省,寧波衛(wèi)生職業(yè)技術(shù)學(xué)院,2016-05-28.
[18]Georg Gottschalk,Celeste Wilderom. Residential and community services for the elderly in the EC-countries with special reference to the Danish situation[J]. Housing, Theory and Society,2016,9(1):
[19]Whitby Paul,Rule Joan,Joomratty Jill. Support and stay: an innovative community service for the elderly confused[J]. Psychiatric Bulletin,2016,14(12):
致謝
伴隨著設(shè)計(jì)的完成,大學(xué)生涯也隨之即將結(jié)束。大學(xué)期間是我最珍惜的時(shí)光,大學(xué)時(shí)光中學(xué)會(huì)了很多,也成長(zhǎng)了很多,這段時(shí)光中每一段回憶都刻在腦海中。感謝一起學(xué)習(xí),一起成長(zhǎng)同學(xué)們,和成長(zhǎng)過(guò)程悉心教導(dǎo)的老師們,非常感激有你們的陪伴。
首先感謝我的指導(dǎo)老師,設(shè)計(jì)的完成離不開(kāi)老師的一系列指導(dǎo)。在畢業(yè)設(shè)計(jì)的完成過(guò)程中,老師給出了很多中肯的建議,正是由于老師一絲不茍的工作態(tài)度,我的設(shè)計(jì)才能順利的完成。
最后,感謝在大學(xué)生涯中每一位教導(dǎo)我的老師,是你們教給了我豐富的知識(shí),更教會(huì)了我遇到問(wèn)題時(shí),如何去應(yīng)對(duì)并解決。謝謝你們的幫助與支持。
點(diǎn)贊+收藏+關(guān)注 ?→ ?私信領(lǐng)取本源代碼、數(shù)據(jù)庫(kù)
總結(jié)
以上是生活随笔為你收集整理的SSM+老年人社区服务平台 毕业设计-附源码211711的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python-借助有道在线翻译做的小的翻
- 下一篇: FlexboxLayout全攻略(Goo