版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
目錄[20]其次MySQL通常在高并發(fā)環(huán)境下比SQLServer更快。這是因為MySQL是一個輕量級數(shù)據(jù)庫,它使用較少的資源,同時也有更好的優(yōu)化和緩存機制。所以最終選擇以MySQL作為本課題的數(shù)據(jù)庫。在選擇居家養(yǎng)老平臺的框架時,本課題考慮使用SpringBoot框架。首先框架的依賴注入特性節(jié)省了大量開發(fā)時間,允許我在過去已有項目的基礎上進行修改,完成舊功能的修改完善和新功能的開發(fā)。其次,相比于JDBC,該框架將sql語句統(tǒng)一集中配置在xml配置文件中,即使要對數(shù)據(jù)庫進行了一定修改也不需要對Java代碼進行重新編譯。最后,SpringBoot作為主流技術,具備強大的用戶社區(qū)支持,因此這個框架非常容易擴展。2.3可行性分析2.3.1技術可行性首先,平臺整體使用的SSM框架仍然是當前開發(fā)框架的主流,發(fā)展較為成熟,在企業(yè)中仍然有較廣泛的應用,在GitHub等開源社區(qū)也有不小的討論度。若是遇到問題能及時獲取技術支持。其次,算法所需視頻數(shù)據(jù)集的來源為PaddlePaddle,其中包含大量的數(shù)據(jù)集,為圖像識別的可行性和準確度提供了保障。另外,識別涉及的YOLOv5算法目前發(fā)展較為成熟,在計算機視覺領域被廣泛使用,有充足的學習資源和解決過程中問題的途徑。最后,對于以上技術,本人都或多或少的參與了相關項目的開發(fā),有相關經(jīng)驗。因此,此項目是可行的。2.3.2經(jīng)濟可行性由于目前社區(qū)工作人力物力分配壓力嚴重超載,現(xiàn)投入的資源往往會因為分配不合理造成極大程度上的浪費,嚴重影響了系統(tǒng)持續(xù)可用性。我們的系統(tǒng)在除去首次構(gòu)建時所花費的一次性成本外,每年的維護成本占比極低。系統(tǒng)預計使用5年,在這期間將大量減少每年雇傭人員所需的工資開銷,投資者可在保證軟件持續(xù)使用性和自身良好信用的同時,進一步提供商業(yè)養(yǎng)老基金等養(yǎng)老運營專項服務,以此擴大更多利益獲取途徑。2.3.3社會可行性智慧養(yǎng)老正成為養(yǎng)老服務業(yè)發(fā)展的重點,我們對居家養(yǎng)老平臺的開發(fā)符合目前國內(nèi)養(yǎng)老政策的改革趨勢:全國統(tǒng)一的養(yǎng)老服務質(zhì)量標準和評價體系將逐步建立,精準化養(yǎng)老服務將更多依托老年人能力及需求評估。針對于此,我們的軟件在進入市場時將更加注重市場細分及專業(yè)化服務。2.4本章小結(jié)本章節(jié)從項目業(yè)務、需求和可行性三個角度詳細分析了居家養(yǎng)老平臺的業(yè)務使用對象、以及該對象可能存在的各種功能性要求、非功能需求,并從技術、經(jīng)濟、社會三個層面說明該系統(tǒng)有很高的可行性。第3章系統(tǒng)總體設計
3系統(tǒng)總體設計3.1架構(gòu)設計圖3.1項目架構(gòu)圖如圖3.1所示,為了讓應用程序更加模塊化,更容易維護和測試,并且更加靈活,本項目采用傳統(tǒng)的MVC模式開發(fā)。數(shù)據(jù)層主要針對用戶的操作訪問數(shù)據(jù)庫中管理員信息、老人信息、電子病歷數(shù)據(jù)、醫(yī)療設備信息、設備租借信息、申請人信用數(shù)據(jù)等內(nèi)容,而前端展示層負責將應用程序的數(shù)據(jù)以具有視覺吸引力和對用戶友好的方式呈現(xiàn)給用戶,讓社區(qū)使用者對項目功能一目了然,減少上手難度。業(yè)務邏輯層獨立于用戶界面,負責管理應用程序的數(shù)據(jù)和業(yè)務邏輯,針對老人信息管理模塊、電子病歷模塊、醫(yī)療設備租借模塊、目標跌倒檢測這四個模塊的不同功能完成相對應的業(yè)務邏輯設計。3.2功能模塊設計圖3.2功能模塊圖如圖3.2所示,居家養(yǎng)老平臺的主要功能有五大塊,分別為:老人信息管理模塊、登錄模塊、電子病歷模塊、醫(yī)療設備租借模塊、跌倒檢測模塊。其中,老人信息管理模塊的主要功能有:上傳老人信息、修改老人信息、刪除老人信息;注冊登錄模塊的主要功能有:注冊登錄、管理個人信息;電子病歷模塊的主要功能有:導入病歷、查看病歷、健康評估;醫(yī)療設備租借模塊的主要功能有:設備管理、租借人管理,其中租借人管理包括審核信用資格和查詢租借時間;跌倒檢測模塊的主要功能有:實時檢測、通知提示。
3.3數(shù)據(jù)庫設計3.3.1E-R圖設計圖3.3E-R圖如圖3.3所示,居家養(yǎng)老平臺主要有五大實體,有社區(qū)老人、體檢報告、設備、監(jiān)控以及電子病歷。社區(qū)老人實體的屬性有用戶ID、姓名、聯(lián)系方式、家庭住址等屬性。體檢報告實體的屬性有老人姓名、心跳、血壓、血脂、血氧、脈搏等屬性。電子病歷實體的屬性有老人姓名、身份證、癥狀、主治醫(yī)生、治療藥物、就診時間、看診金額等屬性。設備實體的屬性有設備編號、設備名稱、設備價格、設備療效、租借人、是否歸還等屬性。監(jiān)控實體的屬性有老人姓名、聯(lián)系方式、家庭住址、監(jiān)控地點等屬性。3.3.2數(shù)據(jù)庫表設計設計出數(shù)據(jù)庫表并對其進行詳細說明。老人信息表,字段包括:用戶編號,用戶賬號,用戶密碼,用戶昵稱,手機號,郵箱,性別等。其中用戶編號為本表主鍵。表3.1老人信息表字段名注釋數(shù)據(jù)類型長度是否允許為空id主鍵int8否account賬號varchar32否password密碼varchar128否name姓名varchar32否birthday生日datetime10否sex性別enum0否email郵箱varchar32否phone電話號碼varchar32否creat_time創(chuàng)建時間datetime0否如表4.1所示,為創(chuàng)建的Older老人信息表。其作用是對不同的老人信息進行記錄和描述,包含id字段,自增主鍵字段,int型,長度為8且不為空。name字段為用戶的用戶名,varchar類型,長度為32且不為空。password字段為用戶的登錄密碼,該字段的數(shù)據(jù)將都是經(jīng)過Md5加密之后的數(shù)據(jù),varchar類型,長度為128且不為空。birthday字段為用戶出生年月,datetime類型,長度為8且不為空。sex字段為用戶性別,enum類型且不為空。phone字段為用戶的手機號,varchar類型,長度為32且不為空。create_time字段表示為記錄的添加時間,datetime類型并且該字段不可為空。設備信息表,字段包括:設備編號、設備名稱、設備價格、設備用途、租借人、是否歸還等,其中設備編號為本表的主鍵。表3.2設備信息表字段名注釋數(shù)據(jù)類型長度是否允許為空id主鍵int8否machine_name設備名稱varchar32否machine_price設備價值varchar32否machine_value設備用途varchar32否zujie租借人varchar8否is_return是否歸還enum0否如表3.2所示,為創(chuàng)建的Medicine設備信息表。其作用是對不同的醫(yī)療設備信息進行記錄和描述,系統(tǒng)中設備所有的相關數(shù)據(jù)全都存放在設備信息表中。包含id字段,自增主鍵字段,int型,長度為8且不為空。machine_name字段為醫(yī)療設備名,varchar類型,長度為32且不為空。machine_price字段為設備價值,varchar類型,長度為32且不為空。machine_value字段為設備用途,varchar類型,長度為32且不為空。zujie字段為租借人姓名,varchar類型,長度為8且不為空。is_return字段為是否歸還的狀態(tài),enum類型且不為空。監(jiān)控信息表,字段包括:用戶姓名,聯(lián)系方式,家庭住址等,其中用戶姓名為本表的主鍵。表3.3監(jiān)控信息表字段名注釋數(shù)據(jù)類型長度是否允許為空name主鍵varchar8否home家庭住址varchar128否phone聯(lián)系方式varchar16否如表3.3所示,為創(chuàng)建的Movie監(jiān)控信息表。其作用是對監(jiān)控數(shù)據(jù)信息進行記錄和描述,監(jiān)控視頻的相關信息全都存放在監(jiān)控信息表中。包含name字段,自增主鍵字段,varchar型,長度為8且不為空。Home字段,varchar型,長度為128且不為空,phone字段,varchar型,長度為8且不為空。體檢信息表,字段包括老人姓名、心跳、血壓、血脂、血氧、脈搏等,其中用戶編號為本表主鍵。表3.4體檢信息表字段名注釋數(shù)據(jù)類型長度是否允許為空patient_idcard老人身份證varchar18否patient_name老人姓名varchar32否heart_jump心跳int8否blood_pressure血壓int8否blood_ox血糖int8否pulse脈搏int8否xuezhi血脂int8否date體檢時間datetime0否如表3.4所示,為創(chuàng)建的Patient-health老人體檢信息表。其作用是對不同的老人體檢數(shù)據(jù)進行記錄和描述,系統(tǒng)中老人的所有體檢數(shù)據(jù)全都存放在體檢信息表中。包含patient_idcard字段,自增主鍵字段,varchar型,長度為18且不為空。patient_name字段為用戶的用戶名,varchar類型,長度為32且不為空。heart_jump字段為用戶的心跳數(shù)值,varchar類型,長度為8且不為空。blood_pressure字段為用戶的血壓數(shù)值,varchar類型,長度為8且不為空。blood_ox字段為用戶的血糖數(shù)值,varchar類型,長度為8且不為空。pulse字段為用戶的脈搏數(shù)值,varchar類型,長度為8且不為空。xuezhi字段為用戶的血脂數(shù)值,varchar類型,長度為8且不為空。date字段表示為體檢的記錄時間,datetime類型并且該字段不可為空。病歷信息表,字段包括:病人名稱、癥狀、主治醫(yī)生、治療藥物、看診時間、花費金額等,其中看診人身份證為本表主鍵。表3.5病歷信息表字段名注釋數(shù)據(jù)類型長度是否允許為空patient_idcard主鍵int8否patient_name病人名稱varchar32否patient_sym癥狀varchar128否patient_doctor主治醫(yī)生varchar10否patient_medicine治療藥物varchar32否patient_history_date看診時間date-time0否takeprice花費金額int128否如表3.5所示,為創(chuàng)建的Patient-history老人問診病歷表。其作用是對老人問診病歷進行記錄和描述,系統(tǒng)中所有的老人的病歷信息全都存放在病歷信息表中。包含patient_idcard字段,自增主鍵字段,int型,長度為8且不為空。patient_name字段為用戶的用戶名,varchar類型,長度為32且不為空。patient_sym字段為用戶的癥狀,varchar類型,長度為128且不為空。patient_doctor字段為主治醫(yī)生名稱,varchar類型,長度為10且不為空。patient_medicine字段為治療藥物信息,varchar類型,長度為32且不為空。patient_history_date字段表示為用戶的看診時間,datetime類型并且該字段不可為空。takeprice字段為用戶看診所花費的金額,int類型,長度為128且不為空。
3.4接口設計3.4.1界面設計(1)登錄界面圖3.4登錄界面如圖3.4所示,居家養(yǎng)老平臺的登錄界面十分簡約,管理員在使用登錄賬號及密碼進行登錄后平臺將針對不同的異常情況進行不同的提示,當輸入的賬號密碼符合數(shù)據(jù)庫中存儲的數(shù)據(jù)時,系統(tǒng)將跳轉(zhuǎn)到系統(tǒng)主界面。(2)老人信息管理界面圖3.5老人信息管理界面如圖3.5所示,該頁面為老人信息管理頁面,整個頁面采用了功能按鈕加表格的設計風格,這種風格也將是系統(tǒng)的主要風格。上方的篩選表單提供按照用戶名稱搜索的篩選條件。老人信息數(shù)據(jù)表格會顯示老人賬戶、姓名、性別、郵箱、家庭住址、聯(lián)系方式、創(chuàng)建時間等信息。為降低服務端壓力,表格數(shù)據(jù)將采用分頁獲取的形式。(3)電子病歷管理界面圖3.6電子病歷管理界面如圖3.6所示,該頁面為電子病歷管理頁面,采用系統(tǒng)統(tǒng)一的風格設計。頁面呈現(xiàn)方式為功能按鍵加數(shù)據(jù)表格的組合。數(shù)據(jù)表格展示了老人的姓名、身份證號、體檢結(jié)果、就診記錄、癥狀、主治醫(yī)生和治療藥物等信息。為了減緩服務器端壓力并更好地展示數(shù)據(jù),該數(shù)據(jù)表格采用表頁的分頁形式獲取數(shù)據(jù),避免用戶一次性查看多條數(shù)據(jù)造成視覺疲勞。(4)設備租借管理界面圖3.7設備租借管理界面如圖3.7所示,這是一個設備租借管理頁面,頁面布局采用了常見的篩選表單和數(shù)據(jù)表格的形式??梢酝ㄟ^篩選表單中的用戶名稱進行篩選,數(shù)據(jù)表格將顯示設備編號、設備名稱、設備價值金額、租借人、租借情況、租借信息等內(nèi)容。為了減輕服務器端和前端頁面渲染的壓力,表格數(shù)據(jù)不會一次性全部獲取,而是通過分頁獲取。(5)目標跌倒檢測界面圖3.8目標跌倒檢測界面如圖3.8所示,目標跌倒檢測界面功能較為特殊,該界面主要對老人出現(xiàn)的跌倒行為進行識別,并將行為發(fā)生的時間記錄到右側(cè)表單中,頁面主體使用視頻框和圖表的形式展示當前監(jiān)控所捕捉到的畫面,此外用戶可以直觀的看出具體的跌倒行為發(fā)生時間。3.4.2模塊接口設計(1)登錄接口表3.6登錄接口表接口名接口URL請求方法接口功能描述登錄system/dao/LoginPOST用于管理員登錄系統(tǒng)登出system/dao/LoginoutGET用于管理員退出系統(tǒng)如表3.6所示,登錄模塊僅僅需要提供兩個接口,分別為登錄接口、登出接口。(2)老人信息管理接口表3.7老人信息管理接口表接口名接口URL請求方法接口功能描述用戶信息列表system/dao/RoleMapperGET用于管理員獲取全部用戶列表查找老人信息system/dao/RoleMapper/SearchGET用于管理員查找老人信息修改老人信息system/dao/RoleMapper/ModifyPUT用于管理員修改老人信息新增信息system/dao/RoleMapper/AddPOST用于管理員新增老人信息刪除信息system/dao/RoleMapper/DeleteDEL用于管理員刪除老人信息如表3.7所示,老人信息管理接口主要是針對老人信息的增刪改查提供的接口,包括用戶信息列表、查找老人信息、修改老人信息、新增老人信息、刪除老人信息等接口。(3)設備租借管理接口表3.8設備租借管理接口表接口名接口URL請求方法接口功能描述設備列表system/dao/MedicineInfoMapper/ListGET用于管理員獲取全部設備信息查找設備system/dao/MedicineInfoMapper/SearchGET用于管理員查找設備修改設備租借信息system/dao/MedicineInfoMapper/ModifyPUT用于管理員修改設備租借信息新增租借信息system/dao/MedicineInfoMapper/AddPOST用于管理員新增租借信息歸還設備system/dao/MedicineInfoMapper/ReturnDEL用于管理員管理設備歸還扣除信用system/dao/MedicineInfoMapper/DeductDEL用于管理員對租借人信用的管理如表3.8所示,設備租借管理接口主要是針對設備租借信息的增刪改查提供的接口,包括設備信息列表、查找設備信息、修改設備租借信息、新增租借信息、歸還設備等接口。(4)電子病歷管理接口表3.9電子病歷管理接口表接口名接口URL請求方法接口功能描述體檢信息列表system/dao/PatientHealthMapper/ListGET用于管理員獲取全部體檢信息查找體檢信息system/dao/PatientHealthMapper/SearchGET用于管理員查找體檢信息修改體檢信息system/dao/PatientHealthMapper/ModifyPUT用于管理員修改體檢信息上傳文件system/dao/PatientHealthMapper/UploadPOST用于管理員上傳體檢報告文件刪除體檢信息system/dao/PatientHealthMapper/DeleteDEL用于管理員刪除體檢信息就診信息列表system/dao/PatientHistoryMapper/ListGET用于管理員獲取全部就診信息查找就診信息system/dao/PatientHistoryMapper/SearchGET用于管理員查找就診信息的步驟添加就診信息system/dao/PatientHistoryMapper/AddPOST用于管理員添加就診信息刪除就診信息system/dao/PatientHistoryMapper/DeleteDEL用于管理員根據(jù)id和姓名刪除單個就診信息如表3.9所示,電子病歷管理接口主要是針對老人體檢信息和就診歷史的增刪改查提供的接口,包括查看體檢信息、上傳文件、刪除體檢信息、編輯體檢信息、查看就診歷史、修改就診歷史等接口。(5)監(jiān)控查看接口表3.10監(jiān)控查看接口表接口名接口URL請求方法接口功能描述監(jiān)控查看system/dao/MovieMapperPOST用于管理員查看監(jiān)控視頻預警通知system/dao/MovieMapper/InformPOST用于跌倒行為的預警通知如表3.10所示,監(jiān)控查看模塊職責較為單一,僅需要提供獲取攝像頭監(jiān)控接口,預警通知接口。3.5安全性設計(1)密碼安全用戶登錄密碼會被經(jīng)過Md5加密后保存在數(shù)據(jù)庫中,并且后續(xù)的接口中不會展示密碼。該項目采用基于角色的訪問控制授權(quán)機制,來限制和控制用戶的訪問權(quán)限。如果用戶需要執(zhí)行修改密碼等操作,需要先驗證其賬戶權(quán)限。(2)安全審計和監(jiān)控該項目使用日志記錄、審計跟蹤等技術監(jiān)控和審計系統(tǒng)的安全事件,以便發(fā)現(xiàn)和處理安全問題。此外,還建立了異常檢測機制,及時發(fā)現(xiàn)和處理異常事件。(3)SQL注入防范本系統(tǒng)使用MyBatis和MybatisPlus連接數(shù)據(jù)庫。MyBatis作為一款半自動化的持久層框架,而MybatisPlus則是它的增強版。對于簡單查詢,我們可以直接使用MybatisPlus自帶的查詢接口;而對于復雜查詢,需要手動編寫MybatisSQL語句,并使用‘#’符號拼接輸入?yún)?shù)。在SQL語句被執(zhí)行前,數(shù)據(jù)庫會對其進行編譯,然后在執(zhí)行時對占位符進行替換。這種方式可以有效地防止SQL注入的風險。3.6本章小結(jié)本章節(jié)主要對該系統(tǒng)的總體設計進行分析,包括以下四個方面:架構(gòu)設計、功能模塊設計、數(shù)據(jù)庫設計和接口設計。此外本章節(jié)還對系統(tǒng)的架構(gòu)圖、功能模塊圖、E-R圖、數(shù)據(jù)庫進行繪制和設計。第4章系統(tǒng)詳細設計4系統(tǒng)詳細設計4.1對象設計圖4.1系統(tǒng)類圖如圖4.1所示,系統(tǒng)包含7個實體類圖,分別為用戶類(User)、社區(qū)管理員類(CommunityUser)、部門類(Departmaent)、監(jiān)控信息類(Monitor)、設備類(Mechine)、電子病歷類(PatientHistory)、健康信息類(PatientHealth)。與之對應的7個控制類:用戶控制類(UserController)、社區(qū)管理員控制類(CommunityUserController)部門控制類(DepartmaentController)、監(jiān)控信息控制類(MonitorController)、設備控制類(MechineController)、電子病歷類(PatientHistoryController)、健康信息控制類(PatientHealthController)。4.2交互設計4.2.1登錄圖5.2登錄時序圖如圖4.2的登錄時序圖所示,當管理員用戶進入登錄頁面后,輸入賬號、密碼后點擊登錄,由控制類獲取數(shù)據(jù)庫中用戶的賬戶信息并判斷與輸入的信息是否一致,成功登錄后將用戶的信息寫入Session中以保存用戶的登錄態(tài),并將網(wǎng)頁重定向到通知頁面。
4.2.2老人信息管理圖4.3老人信息管理時序圖如圖4.3的老人信息管理時序圖所示,用戶進入老人信息管理頁面后,會向User類發(fā)送初始化頁面的請求。UserController類從數(shù)據(jù)庫查詢該社區(qū)中所有老人的基本信息,并將這些信息進行渲染。當使用者需要修改老人的個人信息時,UserController會先檢查該新輸入的個人信息內(nèi)容,若符合修改或者刪除的標準,則進行對應操作,并將操作結(jié)果進行展示。
4.2.3電子病歷管理圖4.4電子病歷時序圖如圖4.4的電子病歷時序圖所示,當用戶進入電子病歷管理頁面后,向patient_history類發(fā)送請求以初始化頁面。電子病歷類通過電子病歷控制類從數(shù)據(jù)庫獲取該社區(qū)內(nèi)所有老人的電子病歷信息后,將信息返回到頁面進行展示。當用戶需要修改老人的個人電子病歷信息時,用戶輸入新的信息后將其提交給電子病歷類。電子病歷類通過“電子病歷控制”類將新數(shù)據(jù)更新到數(shù)據(jù)庫,并返回更新結(jié)果給頁面進行展示。當用戶想要上傳新的電子病歷時,patient_history類會發(fā)送請求以讀取Excel文件內(nèi)的數(shù)據(jù)。電子病歷控制類將完成這一操作并將導入結(jié)果返回至數(shù)據(jù)庫,并返回結(jié)果給頁面進行展示。
4.2.4設備租借管理圖4.5設備租借時序圖當用戶進入設備租借管理頁面時,會向Medicine類發(fā)送初始化頁面的請求。設備類會通過設備控制類從數(shù)據(jù)庫中獲取該社區(qū)所有醫(yī)療設備的信息和租借情況,然后將這些信息返回給頁面進行填充,具體如圖4.5所示。如果用戶需要修改該社區(qū)設備的租借情況,用戶可以輸入新的信息并將新的數(shù)據(jù)提交給設備類。設備類會通過設備控制類更新數(shù)據(jù)庫中的數(shù)據(jù),并將操作結(jié)果返回給頁面展示。4.2.5目標跌倒檢測圖4.6跌倒檢測時序圖如圖4.6的跌倒檢測時序圖所示,當用戶進入目標跌倒檢測頁面后,可以選擇攝像頭的路徑并發(fā)送初始化頁面的請求,detect類文件將獲取攝像頭的實時數(shù)據(jù)流并進行目標跌倒行為的檢測和標注并將檢測結(jié)果返回給頁面進行展示。4.3功能模塊設計4.3.1登錄模塊圖4.7登錄流程圖如圖4.7所示,注冊登錄流程圖展示了社區(qū)使用者登錄過程中出現(xiàn)的情況以及具體流程:社區(qū)使用者只需輸入賬號和密碼進行登錄操作。如果賬號不存在或密碼錯誤,則需要重新輸入賬號密碼。如果賬號密碼正確匹配,則進入系統(tǒng)主頁面。4.3.2老人信息管理模塊圖4.8老人信息管理流程圖如圖4.8所示,老人信息管理模塊流程圖展示了社區(qū)使用者在對老人信息的管理過程中可能的情況以及具體流程,用戶可以在這個模塊通過關鍵字檢索并修改聯(lián)系方式、地址等基本信息。4.3.3電子病歷模塊圖4.9電子病歷模塊流程圖如圖4.9所示,用戶進入電子病歷模塊,完成對該社區(qū)老人病歷的查看、修改、刪除操作。此外,對近期老人身體情況完成數(shù)據(jù)比對,通過加權(quán)分數(shù)將其分為三大類:可自理,半失能,全失能。4.3.4設備租借模塊圖4.10設備租借模塊流程圖如圖4.10所示,醫(yī)療設備租借模塊流程圖展示了社區(qū)使用者在對醫(yī)療器械的管理過程中可能的情況以及具體流程,當出現(xiàn)租借情況時,用戶可通過平臺所記錄擔保人信用來審核租借人是否有資格進行租借,并且記錄租借時間,當出現(xiàn)逾期情況將在賠款的基礎上會扣除一定信用,當分數(shù)低于一定限額,將無法租借社區(qū)設備。4.3.5跌倒檢測模塊圖4.11跌倒檢測模塊流程圖如圖4.11所示,當出現(xiàn)跌倒情況,平臺將自動發(fā)送提醒給使用者,使用者進入跌倒檢測頁面可查看老人居家活動空間內(nèi)攝像頭記錄的畫面,針對不同情況完成上門救助。4.4本章小結(jié)本章節(jié)通過類圖、時序圖、流程圖等對該系統(tǒng)的主要對象進行劃分,描述系統(tǒng)實體具體屬性,類與類之間的邏輯關系以及系統(tǒng)層之間的交互關系。第5章系統(tǒng)實現(xiàn)
5系統(tǒng)實現(xiàn)5.1用戶登錄模塊界面設計及代碼實現(xiàn)圖5.1用戶登錄界面如圖5.1所示,該圖展示了居家養(yǎng)老平臺的登錄頁面。其主要功能就是讓擁有登錄權(quán)限的社區(qū)管理員可以正常的登錄平臺進行工作,此外,該登錄模塊還有判斷賬戶密碼是否存在空值的功能,在登錄時社區(qū)使用者需要在該頁面輸入登錄賬戶和密碼,平臺會將輸入的信息傳遞給數(shù)據(jù)庫,與存儲的數(shù)據(jù)信息進行比對。客戶端會根據(jù)具體的錯誤類型顯示不同的錯誤信息。若登錄成功,則進入平臺使用界面。當用戶進入登錄界面,系統(tǒng)會調(diào)用index()方法初始化頁面,在輸入賬戶密碼之后,系統(tǒng)通過getRoleList()方法獲取整個系統(tǒng)的使用用戶,并通過selectById方法查詢輸入的賬戶是否存在于數(shù)據(jù)庫中,若比對成功則調(diào)用getKaptchaOnOff()比對輸入密碼是否與數(shù)據(jù)庫中一致,若兩者皆一致,則通過index()方法跳轉(zhuǎn)到主頁。并使用ShiroKit.getSession().setAttribute("sessionFlag",true);將該用戶的Session狀態(tài)置為true。以下為登錄的核心代碼,詳細代碼請見附錄:publicStringloginVali(){
Stringusername=super.getPara("username").trim();
Stringpassword=super.getPara("password").trim();
Stringremember=super.getPara("remember");
SubjectcurrentUser=ShiroKit.getSubject();
UsernamePasswordTokentoken=newUsernamePasswordToken(username,password.toCharArray());
if("on".equals(remember)){
token.setRememberMe(true);
}else{
token.setRememberMe(false);
}
currentUser.login(token);
ShiroUsershiroUser=ShiroKit.getUser();
super.getSession().setAttribute("shiroUser",shiroUser);
super.getSession().setAttribute("username",shiroUser.getAccount());
LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(),getIp()));5.2老人信息管理模塊界面設計及代碼實現(xiàn)圖5.2老人信息管理界面如圖5.2所示,展示的是本系統(tǒng)的老人信息管理頁面,該模塊主要提供以下功能:可以進行部門篩選、新增社區(qū)老人、編輯老人信息、刪除老人信息以及查看老人信息詳情等操作。可以通過點擊詳情按鈕查看該老人的全部信息,當某老人信用低于設定值,管理員可以凍結(jié)該老人用戶,暫停其設備租借功能,直到賠付設備款項。以下為老人信息管理的核心代碼,詳細代碼請見附錄:@RequestMapping(value="/role_edit/{roleId}")
publicStringroleEdit(@PathVariableIntegerroleId,Modelmodel){
Rolerole=this.roleService.selectById(roleId);
model.addAttribute(role);
model.addAttribute("pName",ConstantFactory.me().getSingleRoleName(role.getPid()));
model.addAttribute("deptName",ConstantFactory.me().getDeptName(role.getDeptid()));
LogObjectHolder.me().set(role);
returnPREFIX+"/role_edit.html";
}進入老人信息管理頁面系統(tǒng)會先執(zhí)行initColumn()方法,在initColumn()方法中執(zhí)行function(),后端接收請求,先通過攔截器驗證用戶的token,驗證通過則映射到Controller層中的PatientController,執(zhí)行l(wèi)ist()方法,將查找到的表單分頁結(jié)果封裝到一個Resut對象中返回前端,前端對返回的結(jié)果進行渲染。新增一條老人信息數(shù)據(jù)時,則是先調(diào)用openAddPatient()方法將請求發(fā)送到后端,后端攔截器驗證用戶token,如果通過驗證則映射到Controller層中的PatientController,執(zhí)行add(Patientpatient()方法,跳轉(zhuǎn)到病歷添加頁面,用戶在前端輸入好數(shù)據(jù)后調(diào)用addSubmit()方法通過Dao類放入數(shù)據(jù)庫中并提示相應信息,最后執(zhí)行refresh()方法刷新分頁數(shù)據(jù)。更新老人信息數(shù)據(jù)與新增數(shù)據(jù)使用相同方法,不再贅述。刪除一條老人信息數(shù)據(jù)時調(diào)用delete()方法將請求發(fā)送給后端,后端攔截器驗證用戶token,如果通過驗證則映射到Controller層中的PatientController,執(zhí)行delete(@RequestParamIntegerpatientId)方法并返回操作結(jié)果,前端頁面將提示相應操作信息,最后執(zhí)行index()方法刷新分頁數(shù)據(jù)。查詢某條老人信息數(shù)據(jù)則是調(diào)用search方法,調(diào)用function()并發(fā)送請求到后端,后端攔截器驗證用戶token,如果通過驗證則映射到Controller層中的PatientController,執(zhí)行l(wèi)ist(Stringcondition)方法,將電子集合封裝進一個Column對象執(zhí)行initColumn()方法將數(shù)據(jù)返回前端,最后執(zhí)行refresh()方法刷新分頁數(shù)據(jù)。查看老人信息詳細信息則是調(diào)用openPatientDetail方法,執(zhí)行function()發(fā)送請求,然后映射到Controller層中的PatientController,執(zhí)行detail(@PathVariable("patientId")IntegerpatientId)方法,將老人信息集合封裝進一個Column對象返回前端。5.3電子病歷模塊界面設計及代碼實現(xiàn)圖5.3電子病歷界面(病歷)圖5.4電子病歷界面(體檢)如圖5.3,5.4所示,展示的是本系統(tǒng)的電子病歷模塊,該模塊分成兩大類:體檢信息和就診信息。體檢信息模塊提供上傳文件、新增老人體檢信息、刪除老人體檢信息、編輯老人體檢信息等功能。社區(qū)管理員可以通過搜索框搜索進而篩選查看到對應老人最近的體檢數(shù)據(jù)。就診信息模塊新增老人就診信息、刪除老人就診信息、編輯老人就診信息,通過該模塊,社區(qū)管理員可以很快的了解到某位老人近期的看診記錄,進而更好的安排志愿者或醫(yī)療人員上門服務。進入電子病歷管理頁面系統(tǒng)會先執(zhí)行initColumn()方法,在initColumn()方法中執(zhí)行function(),后端接收請求,先通過攔截器驗證用戶的token,驗證通過則映射到Controller層中的PatientHistoryController,執(zhí)行l(wèi)ist()方法,將查找到的表單分頁結(jié)果封裝到一個Resut對象中返回前端,前端對返回的結(jié)果進行渲染。新增一條電子病歷數(shù)據(jù)時,則是先調(diào)用openAddPatientHistory()方法將請求發(fā)送到后端,后端攔截器驗證用戶token,如果通過驗證則映射到Controller層中的PatientHistoryController,執(zhí)行add(PatientHistorypatientHistory()方法,跳轉(zhuǎn)到病歷添加頁面,用戶在前端輸入好數(shù)據(jù)后調(diào)用addSubmit()方法通過Dao類放入數(shù)據(jù)庫中并提示相應信息,最后執(zhí)行refresh()方法刷新分頁數(shù)據(jù)。更新電子病歷數(shù)據(jù)與新增數(shù)據(jù)使用想要方法,不再贅述。刪除一條電子病歷數(shù)據(jù)時調(diào)用delete()方法將請求發(fā)送給后端,后端攔截器驗證用戶token,如果通過驗證則映射到Controller層中的PatientHistoryController,執(zhí)行delete(@RequestParamIntegerpatientHistoryId)方法并返回操作結(jié)果,前端頁面將提示相應操作信息,最后執(zhí)行index()方法刷新分頁數(shù)據(jù)。查詢某條電子病歷數(shù)據(jù)則是調(diào)用search方法,調(diào)用function()并發(fā)送請求到后端,后端攔截器驗證用戶token,如果通過驗證則映射到Controller層中的PatientHistoryController,執(zhí)行l(wèi)ist(Stringcondition)方法,將電子集合封裝進一個Column對象執(zhí)行initColumn()方法將數(shù)據(jù)返回前端,最后執(zhí)行refresh()方法刷新分頁數(shù)據(jù)。查看電子病歷詳細信息則是調(diào)用openPatientHistoryDetail方法,執(zhí)行function()發(fā)送請求,然后映射到Controller層中的PatientHistoryController,執(zhí)行detail(@PathVariable("patientHistoryId")IntegerpatientHistoryId)方法,將電子病歷集合封裝進一個Column對象返回前端。以下為電子病歷模塊的核心代碼,詳細代碼請見附錄:@RequestMapping("")
publicStringindex(){
returnPREFIX+"patientHistory.html";
}@RequestMapping(value="/list")
@ResponseBody
publicObjectlist(Stringcondition){
List<Map<String,Object>>list=patientHistoryMapper.selectByList(condition);
returnsuper.warpObject(newPatientHistoryWarpper(list));
//returnpatientHistoryService.selectList(null);
}
/**
*新增居民就診歷史管理
*/
@RequestMapping(value="/add")
@ResponseBody
publicObjectadd(PatientHistorypatientHistory){
patientHistoryService.insert(patientHistory);
returnSUCCESS_TIP;
}5.4設備租借模塊界面設計及代碼實現(xiàn)圖5.5設備租借界面如圖5.5所示,展示的是本系統(tǒng)的設備租借模塊,該模塊提供設備查詢、新增租借記錄、編輯租借記錄、刪除租借記錄、查看租借記錄詳情等功能。社區(qū)管理員可以點擊詳情查看該設備的租借信息,而當出現(xiàn)歸還儀器損壞,管理員可以選擇扣除部門信用,并要求租借人及時賠付設備價值金額,某老人信用低于設定值,管理員可以暫停其設備租借功能,直到付清設備款項。進入設備租借管理頁面系統(tǒng)會先執(zhí)行initColumn()方法,在initColumn()方法中執(zhí)行function(),后端接收請求,先通過攔截器驗證用戶的token,驗證通過則映射到Controller層中的MedicineController,執(zhí)行l(wèi)ist()方法,將查找到的表單分頁結(jié)果封裝到一個Resut對象中返回前端,前端對返回的結(jié)果進行渲染。新增設備數(shù)據(jù)時,則是先調(diào)用openAddMedicine()方法將請求發(fā)送到后端,后端攔截器驗證用戶token,如果通過驗證則映射到Controller層中的MedicineController,執(zhí)行add(MedicineMedicine())方法,跳轉(zhuǎn)到病歷添加頁面,用戶在前端輸入好數(shù)據(jù)后調(diào)用addSubmit()方法通過Dao類放入數(shù)據(jù)庫中并提示相應信息,最后執(zhí)行refresh()方法刷新分頁數(shù)據(jù)。更新設備租借數(shù)據(jù)與新增數(shù)據(jù)使用想要方法,不再贅述。刪除一條設備數(shù)據(jù)時調(diào)用delete()方法將請求發(fā)送給后端,后端攔截器驗證用戶token,如果通過驗證則映射到Controller層中的MedicineController,執(zhí)行delete(@RequestParamIntegerMedicineId)方法并返回操作結(jié)果,前端頁面將提示相應操作信息,最后執(zhí)行index()方法刷新分頁數(shù)據(jù)。查詢某條設備租借數(shù)據(jù)則是調(diào)用search方法,調(diào)用function()并發(fā)送請求到后端,后端攔截器驗證用戶token,如果通過驗證則映射到Controller層中的MedicineController,執(zhí)行l(wèi)ist(Stringcondition)方法,將電子集合封裝進一個Column對象執(zhí)行initColumn()方法將數(shù)據(jù)返回前端,最后執(zhí)行refresh()方法刷新分頁數(shù)據(jù)。查看設備租借詳細信息則是調(diào)用openMedicineDetail方法,執(zhí)行function()發(fā)送請求,然后映射到Controller層中的MedicineController,執(zhí)行detail(@PathVariable("MedicineId")IntegerMedicineId)方法,將設備租借集合封裝進一個Column對象返回前端。租借設備租借詳細信息則是調(diào)用openMedicineReturn方法,執(zhí)行function()發(fā)送請求,然后映射到Controller層中的MedicineController,執(zhí)行Return(@PathVariable("MedicineId")IntegerMedicineId)方法并返回操作結(jié)果,前端頁面將提示相應操作信息,最后執(zhí)行index()方法刷新分頁數(shù)據(jù)。歸還設備租借詳細信息則是調(diào)用openMedicineLease方法,執(zhí)行function()發(fā)送請求,然后映射到Controller層中的MedicineController,執(zhí)行Lease(@PathVariable("MedicineId")IntegerMedicineId)方法并返回操作結(jié)果,前端頁面將提示相應操作信息,最后執(zhí)行index()方法刷新分頁數(shù)據(jù)。以下為設備租借模塊的核心代碼,詳細代碼請見附錄:@RequestMapping("/medicineInfo_update/{medicineInfoId}")
publicStringmedicineInfoUpdate(@PathVariableIntegermedicineInfoId,Modelmodel){
MedicineInfomedicineInfo=medicineInfoService.selectById(medicineInfoId);
model.addAttribute("item",medicineInfo);
LogObjectHolder.me().set(medicineInfo);
returnPREFIX+"medicineInfo_edit.html";
}
@Autowired
MedicineInfoMappermedicineInfoMapper;
@RequestMapping(value="/list")
@ResponseBody
publicObjectlist(Stringcondition){
List<Map<String,Object>>list=medicineInfoMapper.selectByList(condition);
returnsuper.warpObject(newMedicineInfoWarpper(list));
//returnmedicineInfoService.selectList(null);
}5.5跌倒檢測模塊界面設計及代碼實現(xiàn)圖5.6跌倒檢測模塊如圖5.6所示,展示的是本系統(tǒng)的跌倒檢測模塊,社區(qū)管理員可以實時查看老人活動空間內(nèi)的監(jiān)控視頻,而當出現(xiàn)跌倒行為時,系統(tǒng)還會發(fā)出預警及通知,并記錄行為發(fā)生時間,以便在黃金救助時間內(nèi)做出應對措施。當用戶進入登錄界面,系統(tǒng)會調(diào)用:5001/video_feed/Camera_1接口進行跳轉(zhuǎn),在dectet類中使用run()方法開始跌倒行為的檢測并且調(diào)用detectBehavior(GenModule)遍歷4路的檢測結(jié)果,當某1路檢測到跌倒目標時便發(fā)送跌倒報警事件。以下為目標跌倒檢測模塊的核心代碼,詳細代碼請見附錄:@app.route('/imgRecognize',methods=['GET','POST'])
defimgRecognize():
imgTxt=ocr()
json_form=json.dumps(imgTxt)#json.dumps方法
print(json_form)
returnjson_form
defgen(camera):
whileTrue:
detectNum,frames=camera.execute_func()
forframeinframes:
ret,jpeg=cv2.imencode('.jpg',frame)
jepg=jpeg.tobytes()
yield(b'--frame\r\n'
b'Content-Type:image/jpeg\r\n\r\n'+jepg+b'\r\n\r\n')
@app.route('/video_feed/<feed_type>')#這個地址返回視頻流響應
defvideo_feed(feed_type):
iffeed_type=='Camera_0':
returnResponse(gen(get_fun(0)),
mimetype='multipart/x-mixed-replace;boundary=frame')
eliffeed_type=='Camera_1':
returnResponse(gen(get_fun(1)),
mimetype='multipart/x-mixed-replace;boundary=frame')5.5本章小結(jié)本章將從系統(tǒng)配置和具體實現(xiàn)代碼的角度來詳細闡述該系統(tǒng)。我們將給出各個模塊的核心代碼,并用詳細的文字描述具體的實現(xiàn)過程。同時,我們結(jié)合具體的代碼描述代碼的具體含義。所有的詳細代碼都將會放置在文檔的附錄章節(jié)中。接下來,我們將對各個模塊進行嚴格的測試,以驗證系統(tǒng)的穩(wěn)定性和可靠性。第6章系統(tǒng)測試
6系統(tǒng)測試6.1測試計劃和目的居家養(yǎng)老平臺的測試目的通常是為了評估平臺的功能、可靠性、易用性、安全性等方面的表現(xiàn),以確保平臺能夠滿足用戶的需求和期望。首先,測試需要通過測試平臺的各種功能,來評估平臺的功能是否齊全。其次,測試需要通過測試平臺的穩(wěn)定性和性能,來評估平臺的可靠性。最后測試需要通過測試平臺的數(shù)據(jù)安全、隱私保護等方面,來評估平臺的安全性。測試任務工作量估計起始時間測試人員編制測試計劃1日2023-3-20方銘設計測試用例2日2023-3-21方銘功能測試1日2023-3-23方銘安全性測試1日2023-3-24方銘性能測試1日2023-3-25方銘表6.1測試計劃表6.2測試與結(jié)果分析6.2.1功能測試(1)登錄實體識別模塊的測試將針對登錄功能進行測試,設計賬號錯誤、密碼錯誤、響應時間等應用場景設計測試用例,并對測試結(jié)果進行分析。測試用例及結(jié)果見表6.2所示。表6.2登錄測試表功能描述用戶登錄相關操作用例目的測試用戶是否可以正常進行賬號登錄操作前提條件頁面正常響應子用例編號測試步驟輸入數(shù)據(jù)預期結(jié)果實際結(jié)果1-1密碼為空登錄1.輸入正確的賬戶2.點擊登錄按鈕admin提示密碼不能為空提示密碼不能為空1-2賬戶不存在1.輸入錯誤的賬戶2.輸入正確的密碼3.點擊登錄按鈕adminad111111示賬提號不存在提示賬號不存在1-3錯誤密碼登陸1.輸入正確的賬戶2.輸入對應的密碼3.點擊登錄按鈕admin123456提示賬號或密碼錯誤提示賬號或密碼錯誤1-4正確的賬戶和密碼1.輸入正確的賬戶2.輸入對應的密碼3.點擊登錄按鈕admin111111提示登錄成功,跳轉(zhuǎn)主頁提示登錄成功,跳轉(zhuǎn)主頁(2)老人信息管理老人信息管理模塊的測試將針對信息管理功能進行測試,設計新增老人信息、刪除老人信息、篩選老人信息等應用場景設計測試用例,并對測試結(jié)果進行分析。測試用例及結(jié)果見表6.3所示。表6.3老人信息管理測試表功能描述查詢老人信息,對老人信息進行新增刪除修改等相關操作用例目的測試用戶是否可以正常進行社區(qū)老人信息管理操作前提條件頁面響應正常子用例編號測試步驟輸入數(shù)據(jù)預期結(jié)果實際結(jié)果3-1用戶新增老人信息未填寫老人名稱(必要信息)1.點擊新增信息2.編輯老人相關信息,姓名未填老人的性別,生日,聯(lián)系方式,家庭住址系統(tǒng)提示信息填寫不全,無法提交系統(tǒng)提示信息填寫不全,無法提交3-2用戶新增老人信息未填寫老人聯(lián)系方式(必要信息)1.點擊新增信息2.編輯老人相關信息,聯(lián)系方式未填老人的姓名,性別,生日,家庭住址系統(tǒng)提示信息填寫不全,無法提交系統(tǒng)提示信息填寫不全,無法提交3-3用戶新增老人信息未填寫老人生日(非必要信息)1.點擊新增信息2.編輯老人相關信息,生日未填老人的姓名,性別,聯(lián)系方式,家庭住址成功提交,數(shù)據(jù)庫新增一條菜譜信息成功提交,數(shù)據(jù)庫新增一條菜譜信息3-4用戶新增老人信息未填寫老人家庭住址(必要信息)1.點擊新增信息2.編輯老人相關信息,家庭住址未填老人的姓名,性別,生日,聯(lián)系方式系統(tǒng)提示信息填寫不全,無法提交系統(tǒng)提示信息填寫不全,無法提交3-5填寫完整老人信息1.點擊新增信息2.編輯老人信息并填寫完整老人的姓名,性別,生日,聯(lián)系方式,家庭住址成功提交,數(shù)據(jù)庫新增一條老人信息成功提交,數(shù)據(jù)庫新增一條老人信息3-6用戶修改老人信息時清空了必要填寫信息字段1.選擇相關人員信息點擊修改2.清空家庭住址字段無系統(tǒng)提示信息不全,修改失敗系統(tǒng)提示信息不全,修改失敗3-7用戶修改某老人信息內(nèi)容1、選擇目標老人點擊修改2、輸入要修改的信息電話功提交,數(shù)據(jù)庫新增一條老人信息成功提交,數(shù)據(jù)庫新增一條老人信息3-8用戶點擊刪除信息1.選擇要刪除的老人信息項點擊刪除無刪除成功,數(shù)據(jù)庫刪除一條老人信息刪除成功,數(shù)據(jù)庫刪除一條老人信息(3)設備租借管理設備租借管理模塊的測試將針對設備租借,設備歸還功能進行測試,設計租借設備不足,歸還延遲等實際場景設計測試用例,并對測試結(jié)果進行分析。測試用例及結(jié)果見表6.4所示。表6.4設備租借測試表功能描述新增租借記錄、歸還設備相關操作用例目的測試用戶是否可以正常進行設備租借操作前提條件頁面正常響應子用例編號測試步驟輸入數(shù)據(jù)預期結(jié)果實際結(jié)果3-1用戶新增租借記錄未填寫老人名稱(必要信息)1.點擊新增租借信息2.編輯租借人相關信息,姓名未填老人的聯(lián)系方式、家庭住址、租借時間等系統(tǒng)提示信息填寫不全,無法提交系統(tǒng)提示信息填寫不全,無法提交3-2用戶新增租借記錄未填寫老人聯(lián)系方式(必要信息)1.點擊新增租借信息2.編輯租借人相關信息,姓名未填老人的姓名、家庭住址、租借時間等系統(tǒng)提示信息填寫不全,無法提交系統(tǒng)提示信息填寫不全,無法提交3-3用戶新增租借記錄未填寫老人租借時間(必要信息)1.點擊新增租借信息2.編輯租借人相關信息,姓名未填老人的姓名、聯(lián)系方式、家庭住址等系統(tǒng)提示信息填寫不全,無法提交系統(tǒng)提示信息填寫不全,無法提交3-4用戶新增租借記錄未填寫老人家庭住址(必要信息)1.點擊新增租借信息2.編輯租借人相關信息,姓名未填老人的姓名、聯(lián)系方式、租借時間等系統(tǒng)提示信息填寫不全,無法提交系統(tǒng)提示信息填寫不全,無法提交3-5填寫完整租借記錄信息1.點擊新增租借信息2.編輯租借人信息并填寫完整租借人的姓名、聯(lián)系方式、家庭住址、租借時間等成功提交,數(shù)據(jù)庫新增一條老人信息成功提交,數(shù)據(jù)庫新增一條老人信息3-6用戶修改設備租借時清空了必要填寫信息字段1.選擇相關人員信息點擊修改2.清空家庭住址字段無系統(tǒng)提示信息不全,修改失敗系統(tǒng)提示信息不全,修改失敗3-7用戶修改某租借信息內(nèi)容1、選擇目標老人點擊修改2、輸入要修改的信息電話功提交,數(shù)據(jù)庫新增一條設備租借信息成功提交,數(shù)據(jù)庫新增一條設備租借信息3-8用戶點擊歸還1、選擇要歸還的設備租借信息項點擊歸還2、判斷設備是否遭到損壞3、判斷是否逾期,需要扣除保證金無否否提示歸還成功,數(shù)據(jù)庫刪除一條設備租借信息提示歸還成功,數(shù)據(jù)庫刪除一條設備租借信息(4)目標跌倒檢測目標跌倒檢測模塊的測試將針對實時監(jiān)控查看功能進行測試,并對測試結(jié)果進行分析。測試用例及結(jié)果見表6.5所示。表6.5監(jiān)控查看測試表功能描述實時監(jiān)控查看相關操作用例目的測試用戶是否可以正常進行監(jiān)控查看等操作前提條件頁面正常響應子用例編號測試步驟輸入數(shù)據(jù)預期結(jié)果實際結(jié)果4-1是否可以進行監(jiān)控視頻查看點擊查看按鈕進行視頻查看無播放視頻畫面并對跌倒行為進行檢測播放視頻畫面并對跌倒行為進行檢測4-2跌倒時是否能展示出預警通知點擊查看按鈕進行查看無播放視頻畫面并對跌倒行為進行預警通知播放視頻畫面并對跌倒行為進行預警通知6.2.2非功能測試(1)安全性測試對社區(qū)對接居家養(yǎng)老平臺的安全性測試,主要是在輸入框進行SQL腳本注入,觀察分析居家養(yǎng)老平臺的功能正常運行是否被影響。詳細的測試用例見表6.6。表6.6安全性測試表測試用例測試過程描述測試結(jié)果文本框SQL注入輸入常用的惡意SQL并點擊查詢按鈕傳送惡意SQL語句傳輸?shù)腟QL語句不具備數(shù)據(jù)庫查詢功能,功能正常運行登錄過期訪問在系統(tǒng)登錄的一段時間后(超過15min)繼續(xù)向服務器發(fā)起登錄用戶特有請求服務器提示用戶登錄狀態(tài)已過期,需要重新登錄(2)兼容性測試測試本系統(tǒng)在不同瀏覽器中是否存在不兼容情況以及在不同的分辨率下的頁面適配情況,詳細的測試用例和測試結(jié)果見表6.7。表6.7兼容性測試表測試用例測試過程描述測試結(jié)果更換測試用瀏覽器分別測試居家養(yǎng)老平臺在Chrome、Edge等主流瀏覽器中是否能正常進行使用在測試瀏覽器中頁面正常呈現(xiàn),功能可正常運行更換測試用分辨率調(diào)整瀏覽器分辨率,分別測試在2k(2560*1440)、1080p(1920*1440)下的頁面布局頁面在各分辨率下都能正??s放,并且整體不會變形(3)性能測試性能測試將對居家養(yǎng)老平臺進行性能測試,包括內(nèi)存使用率,跌倒行為識別速度、準確率等。詳細的測試用例見表6.8。表6.8性能測試表測試用例測試過程描述測試結(jié)果頁面響應速度測試測試系統(tǒng)所有頁面的響應時間頁面的響應速度均可以保持在1s之內(nèi)完成全部響應內(nèi)存占用率測試進行目標跌倒的實時檢測,并打開任務管理器查看內(nèi)存使用率在跌倒檢測過程中仍能空余部分內(nèi)存,跌倒檢測占用內(nèi)存率仍需降低跌倒行為識別速度測試給出不同的視頻流進行連續(xù)識別跌倒行為的識別以及預警速度均能夠保持在2s之內(nèi)。跌倒行為準確率測試給出不同亮度、模糊程度的視頻流進行識別測試90%以上的跌倒行為都能準確預測,部分光亮不足的情況還存在缺陷6.3本章小結(jié)本章節(jié)對該系統(tǒng)的測試計劃和運行環(huán)境等進行說明,對該系統(tǒng)的各個功能進行功能性測試和非功能性測試等,最后的測試結(jié)果分析有助于發(fā)現(xiàn)該系統(tǒng)存在的問題并及時解決。第7章總結(jié)與展望
7總結(jié)與展望隨著經(jīng)濟飛速發(fā)展,政策和后勤保障得以完善,居家養(yǎng)老逐漸成為潮流。但社區(qū)管理也存在一些問題,養(yǎng)老資源供給總體格局呈現(xiàn)兩頭大、中間小的“啞鈴形”形勢,真正符合大多數(shù)老年人的剛性需求,即能夠滿足基本生活照料又具有醫(yī)養(yǎng)結(jié)合功能的中檔養(yǎng)老資源所占份額較低。同時老人獨自居家,遇到緊急情況更是無人知曉,無法獲得及時處理。目前,居家養(yǎng)老已成為養(yǎng)老行業(yè)的重點關注領域。只有充分實現(xiàn)信息化,才能更好地利用互聯(lián)網(wǎng)的巨大優(yōu)勢,有效地解決養(yǎng)老資源分配問題,優(yōu)化老人的居家養(yǎng)老體驗。本文主要完成的工作如下:(1)本次養(yǎng)老平臺的設計對目前居家養(yǎng)老市場的現(xiàn)況進行分析,發(fā)掘出老人安全問題無法及時發(fā)現(xiàn)的痛點,并與市面上已有的智慧養(yǎng)老系統(tǒng)進行了比較,最終得出平臺的具體功能設計。(2)基于整體設計的基礎,本系統(tǒng)實現(xiàn)了各個功能模塊。對于每個功能模塊,還提供了流程圖和時序圖以及文字描述,同時也在文中給出了相關模塊的核心代碼。(3)針對居家養(yǎng)老平臺的最終實現(xiàn)功能,進行了模塊化的測試,設計了覆蓋面比較全的測試用例進行測試,對測試結(jié)果進行了分析,對不符合預期的情況進行了修正,確保了程序的正常運行。盡管本平臺完成了預期的功能,然而在跌倒檢測在內(nèi)存占用率和準確率方面仍存在不足,平臺整體的檢測算法還無法適應于復雜情況下的跌倒檢測。同時,在電腦配置較低時會出現(xiàn)檢測時間較長,響應不夠及時,內(nèi)存占用率過大等問題,仍無法與市面上已有的智慧養(yǎng)老系統(tǒng)相比。因此,后續(xù)將繼續(xù)優(yōu)化目標檢測算法,減緩檢測時間。參考文獻
參考文獻參考文獻張健.高質(zhì)量的新型養(yǎng)老模式——智慧居家養(yǎng)老服務[J].農(nóng)村.農(nóng)業(yè).農(nóng)民(B版),2020,(09):34-35.姜雪楠.“互聯(lián)網(wǎng)+”背景下智慧養(yǎng)老服務產(chǎn)業(yè)發(fā)展策略探析[J].中國管理信息化,2020,23(21):162-163.張盛華.“互聯(lián)網(wǎng)+居家養(yǎng)老”服務模式:機遇、困境和優(yōu)化[J].三晉基層治理,2022,(03):61-65.衡友躍,韓占偉,楊憶.老年人跌倒檢測系統(tǒng)研究與設計[J].通化師范學院學報,2022,43(04):1-5.趙珍珍,董彥如,曹慧,曹斌.老年人跌倒檢測算法的研究現(xiàn)狀[J].計算機工程與應用,2022,58(05):50-65.羅文志,張自豪.基于LoRa的老人跌倒監(jiān)護系統(tǒng)設計[J].電子設計工程,2022,30(18):114-118.徐甲棟,陳強,王洪杰.基于姿態(tài)融合的實時跌倒檢測系統(tǒng)研究[J].軟件導刊,2022,21(04):144-150.武歷展,王夏黎,張倩,王煒昊,李超.基于優(yōu)化YOLOv5s的跌倒人物目標檢測方法[J].圖學學報,2022,43(05):791-802.魯普東,王茜,楊詩琪,李思涵,劉健強,祁燕.基于CNN的室內(nèi)跌倒行為檢測系統(tǒng)的開發(fā)[J].電子世界,2021,(18):139-141.伏娜娜,劉大銘,程曉婷,景云云,張馨芳.基于輕量級OpenPose模型的跌倒檢測算法[J].傳感器與微系統(tǒng),2021,40(11):131-134+138.周洪成,楊娟,徐志國.基于YOLOv5算法的人體跌倒檢測系統(tǒng)設計[J].金陵科技學院學報,2022,38(02):22-29.PatelShitalN.etal.ASurveyonVision-BasedEldersFallDetectionUsingDeepLearningModels[M].SpringerNatureSingapore,2022:447-465.張千坤,陳任翔.室內(nèi)跌倒檢測算法研究[J].郵電設計技術,2022,(08):56-62.王鐵雁.基于智能手機和機器學習的人體跌倒檢測方法研究[J].科學技術創(chuàng)新,2022,(32):85-88.PerezLopezBorjaandGomezDonosoFranciscoandCazorlaMiguel.SAFaD:ASystemfor
AutomaticFallDetectionon
SurveillanceImagery[M].SpringerInternationalPublishing,2022:564-575.VillegasCh.Williametal.ModelfortheDetectionofFallswiththeUseofArtificialIntelligenceasanAssistantfortheCareoftheElderly[J].Computation,2022,10(11):195-195.姜建浩.一種用于老年人家庭看護的跌倒檢測和圖像獲取系統(tǒng)[J].醫(yī)療裝備,2021,34(23):37-38.李樂.Java語言應用研究[J].智慧中國,2022,(09):80-81.雷航.計算機軟件JAVA編程優(yōu)勢及其應用[J].計算機與網(wǎng)絡,2021,47(19):35.張藝贏.基于Mysql和SQLserver數(shù)據(jù)庫安全分析[J].電子世界,2014,(03):24+35.附錄致謝附錄附錄一:老人信息管理publicclassPatientInfoControllerextendsBaseController{
privateStringPREFIX="/patient/patientInfo/";
@RequestMapping(value="/list")
@ResponseBody
publicObjectlist(Stringcondition){
List<Map<String,Object>>list=patientInfoWarpper.selectByList(condition);
returnsuper.warpObject(newPatientInfoWarpper(list));
//returnpatientInfoService.selectList(null);
}
@RequestMapping(value="/add")
@ResponseBody
publicObjectadd(PatientInfopatientInfo){
patientInfoService.insert(patientInfo);
returnSUCCESS_TIP;
}
@RequestMapping(value="/delete")
@ResponseBody
publicObjectdelete(@RequestParamIntegerpatientInfoId){
patientInfoService.deleteById(patientInfoId);
returnSUCCESS_TIP;
}
@RequestMapping(value="/update")
@ResponseBody
publicObjectupdate(PatientInfopatientInfo){
patientInfoService.updateById(patientInfo);
returnSUCCESS_TIP;
}
@RequestMapping(value="/detail/{patientInfoId}")
@ResponseBody
publicObjectdetail(@PathVariable("patientInfoId")IntegerpatientInfoId){
returnpatientInfoService.selectById(patientInfoId);
}
}附錄二:設備租借管理publicclassMedicineInfoControllerextendsBaseController{
privateStringPREFIX="/medicinemanager/medicineInfo/";
publicObjectlist(Stringcondition){
List<Map<String,Object>>list=medicineInfoMapper.selectByList(condition);
returnsuper.warpObject(newMedicineInfoWarpper(list));
//returnmedicineInfoService.selectList(null);
}
@RequestMapping(value="/add")
@ResponseBody
publicObjectadd(MedicineInfomedicineInfo){
medicineInfoService.insert(medicineInfo);
returnSUCCESS_TIP;
}
@RequestMapping(value="/delete")
@ResponseBody
publicObjectdelete(@RequestParamIntegermedicineInfoId){
medicineInfoService.deleteById(medicineInfoId);
returnSUCCESS_TIP;
}
@RequestMapping(value="/update")
@ResponseBody
publicObjectupdate(MedicineInfomedicineInfo){
Wrapper<User>aa=newWrapper<User>(){
@Override
publicStringgetSqlSegment(){
returnnull;
}
};
aa.eq("account","admin");附錄三:老人病歷管理publicclassPatientHealthControllerextendsBaseController{
privateStringPREFIX="/pateint_health_manager/patientHealth/";
@Autowired
privateIPatie
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年哈爾濱市道外區(qū)太平人民醫(yī)院公開招聘編外合同制工作人員6人考試參考試題及答案解析
- 2026徽商銀行客服代表(勞務派遣制)招聘筆試備考試題及答案解析
- 2026貴州農(nóng)商聯(lián)合銀行第一批招聘中層管理人員18人考試備考題庫及答案解析
- 2026湖北省面向北京師范大學普通選調(diào)生招錄考試參考題庫及答案解析
- 中央統(tǒng)戰(zhàn)部直屬事業(yè)單位2026年度應屆高校畢業(yè)生公開招聘考試參考試題及答案解析
- 2026年合肥印象濱湖旅游投資發(fā)展有限公司塘西河公園項目招聘20人筆試備考題庫及答案解析
- 中國科學院西北高原生物研究所2026年支撐崗位招聘1人(青海)考試參考題庫及答案解析
- 2026江西宜春豐城市市屬國企下屬公司招聘24人考試備考試題及答案解析
- 2026中國人壽洛陽分公司(售后部門)招聘售后內(nèi)勤、售后外勤(河南)考試參考試題及答案解析
- 2026備戰(zhàn)中考【地理 ??键c鞏固】精練(含答案)
- 兒童呼吸道合胞病毒感染診斷治療和預防專家共識 4
- 全國計算機等級考試一級WPS Office真題題庫及答案
- 多聯(lián)機空調(diào)安裝施工方案
- 義警法律知識培訓總結(jié)課件
- 實施指南(2025)《DZT 0462.5-2023 礦產(chǎn)資源“三率”指標要求 第 5 部分:金、銀、鈮、鉭、鋰、鋯、鍶、稀土、鍺》解讀
- 菏澤在線食品安全培訓課件
- 小數(shù)四則混合運算專項練習276題(有答案)
- 棉塵安全培訓課件
- 國家事業(yè)單位招聘2025中國民用航空局清算中心應屆畢業(yè)生招聘筆試歷年參考題庫附帶答案詳解
- 梯子作業(yè)安全培訓效果課件
- 吸附解析塔拆除施工方案
評論
0/150
提交評論