健康運(yùn)動微信小程序的設(shè)計與實現(xiàn)_第1頁
健康運(yùn)動微信小程序的設(shè)計與實現(xiàn)_第2頁
健康運(yùn)動微信小程序的設(shè)計與實現(xiàn)_第3頁
健康運(yùn)動微信小程序的設(shè)計與實現(xiàn)_第4頁
健康運(yùn)動微信小程序的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

[20]。系統(tǒng)的總體架構(gòu)設(shè)計圖如下圖4.1所示:圖4-1系統(tǒng)的總體架構(gòu)設(shè)計圖下面是針對本系統(tǒng)采用的MVC架構(gòu)設(shè)計概述:表視圖層是應(yīng)用程序的用戶界面部分,展示數(shù)據(jù)并且將用戶指令(如按鈕點(diǎn)擊、表單提交等)傳送到控制器。視圖層在本小程序中負(fù)責(zé)的具體功能有:展示運(yùn)動記錄、食物分類、用戶健康報告等;接收用戶輸入和交互,并根據(jù)用戶操作更新界面;與用戶進(jìn)行動態(tài)交互,響應(yīng)用戶操作和請求等功能。業(yè)務(wù)處理層在MVC框架中是應(yīng)用程序架構(gòu)的中心,負(fù)責(zé)處理所有的業(yè)務(wù)邏輯。在本系統(tǒng)中,業(yè)務(wù)邏輯層扮演著協(xié)調(diào)數(shù)據(jù)模型和用戶界面之間交互的角色。具體模塊信息包括基礎(chǔ)信息管理、用戶權(quán)限管理、系統(tǒng)角色管理、運(yùn)動報告管理等模塊。使得平臺的日常管理維護(hù)、功能的增加刪改都可以使用此系統(tǒng)來完成。數(shù)據(jù)層負(fù)責(zé)與數(shù)據(jù)庫的直接交互,為系統(tǒng)的正常運(yùn)行提供數(shù)據(jù)支撐,實現(xiàn)數(shù)據(jù)的存儲和查詢功能。它將數(shù)據(jù)庫操作的具體實現(xiàn)細(xì)節(jié)與業(yè)務(wù)邏輯層隔離開來。主要包括基礎(chǔ)信息中的用戶信息、食物信息、資訊信息、運(yùn)動數(shù)據(jù)、食物類型信息、商品信息、管理員信息以及運(yùn)動類型信息。管理數(shù)據(jù)庫連接,確保操作的高效與安全。使用MVC框架的目的是讓“悅動力”小程序的前端界面與后端邏輯清晰分離,同時由控制器負(fù)責(zé)它們之間的溝通。這有助于維護(hù)代碼的清晰結(jié)構(gòu),使得開發(fā)和后期維護(hù)工作更為方便。4.1.2平臺功能結(jié)構(gòu)設(shè)計“悅動力”健康運(yùn)動平臺設(shè)計為PC端主系統(tǒng)和微信小程序子系統(tǒng)。其中PC端是處理平臺事務(wù),維護(hù)平臺信息中主要使用的系統(tǒng),它包括健康管理中必要的運(yùn)動項目管理、運(yùn)動商品管理、運(yùn)動資訊管理、用戶運(yùn)動報告管理、飲食分類管理、食物信息管理以及系統(tǒng)日常維護(hù)中需要的系統(tǒng)管理等功能。下圖4.2為PC端系統(tǒng)結(jié)構(gòu)設(shè)計圖。圖4-2PC端系統(tǒng)結(jié)構(gòu)設(shè)計圖小程序端主要為用戶提供手機(jī)端服務(wù)。主要為各類人群提供實時運(yùn)動功能、每日步數(shù)查看功能。用戶可以查看平臺提供的各類運(yùn)動資訊及商品,通過食品營養(yǎng)成分信息計算自己攝入的卡路里數(shù)及查看運(yùn)動報告的功能。方便各類用戶實時運(yùn)動或監(jiān)測自己的健康水平。小程序結(jié)構(gòu)設(shè)計圖如下圖4-3所示:4.2數(shù)據(jù)庫設(shè)計4.2.1數(shù)據(jù)模型設(shè)計Food(食物)與FoodType(食物類型)的關(guān)系類型為多對一,每種食物(Food)屬于一種食物類型(FoodType)。Food表中的type_id字段作為外鍵,引用FoodType表的主鍵id字段,建立兩者之間的關(guān)系。Goods(商品)與SysUser(系統(tǒng)用戶)的關(guān)系類型為多對多。系統(tǒng)用戶可以擁有多個角色,同一個角色可以被多個用戶共享。這種多對多關(guān)系通過一個關(guān)聯(lián)表(例如user_roles)來實現(xiàn),該表至少包含兩個字段:user_id和role_id,分別作為外鍵引用SysUser表和SysRole表的主鍵。SysMenu(系統(tǒng)菜單)與SysRole(系統(tǒng)角色)的關(guān)系類型為多對多。系統(tǒng)角色可以訪問多個菜單項,而一個菜單項也可以被多個角色訪問。這種多對多關(guān)系通常通過一個關(guān)聯(lián)表來實現(xiàn),例如roles_menus,該表包含role_id和menu_id兩個字段,分別作為外鍵引用SysRole和SysMenu的主鍵。WxRun(微信運(yùn)動數(shù)據(jù))與SysUser(系統(tǒng)用戶)的關(guān)系類型為一對多。數(shù)據(jù)庫E-R圖如圖4-1所示圖4-1E-R圖例4.2.2數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計食物表是一個詳盡記錄食物名稱、類別、圖片以及各種營養(yǎng)元素(如蛋白質(zhì)、脂肪、碳水化合物等)含量的數(shù)據(jù)庫表結(jié)構(gòu)。它設(shè)計有一個唯一的主鍵標(biāo)識符和多個字段,用于詳細(xì)描述食物的營養(yǎng)信息,包括熱量、蛋白質(zhì)、脂肪、多種維生素和礦物質(zhì)等,以支持健康飲食管理和營養(yǎng)分析。此表通過綜合記錄食物的基本信息和營養(yǎng)成分,旨在為用戶提供一份全面的食物營養(yǎng)指南。namecodedatatypelengthprecisionPrimary主鍵idbigint19TRUE食物名稱titlevarchar255FALSE食物類別type_idbigint19FALSE圖片(列表)image_urlstext65535FALSE營養(yǎng)元素nutrientvarchar255FALSE熱量heatfloat10FALSE蛋白質(zhì)proteinfloat10FALSE脂肪fatfloat10FALSE碳水化合物carbon_waterfloat10FALSE膳食纖維dietary_fiberfloat10FALSE維生素Avitamin_afloat10FALSE維生素Cvitamin_cfloat10FALSE維生素Evitamin_efloat10FALSE胡蘿卜素carrotfloat10FALSE維生素B1vitamin_b1float10FALSE維生素B2vitamin_b2float10FALSE煙酸niacinfloat10FALSE膽固醇cholesterolfloat10FALSE鎂magnesiumfloat10FALSE鐵ironfloat10FALSE鈣calciumfloat10FALSE鋅zincfloat10FALSE銅copperfloat10FALSE錳manganesefloat10FALSE鉀potassiumfloat10FALSE磷phosphorusfloat10FALSE鈉sodiumfloat10FALSE硒seleniumfloat10FALSE表是數(shù)據(jù)庫中用于存儲各類商品信息的表格,包括商品的唯一標(biāo)識符(主鍵)、名稱、價格、數(shù)量、創(chuàng)建時間及創(chuàng)建人信息等基本屬性。此外,它還詳細(xì)記錄了商品的圖片地址、適配機(jī)型、控制方式、主要功能以及無線功能等特定屬性。商品表也描述了商品的電池規(guī)格、特色功能、外觀尺寸、其他功能和備注等,以全面展示商品的特性和使用細(xì)節(jié),方便用戶了解和選擇商品。這種表結(jié)構(gòu)設(shè)計使得商品信息的管理和檢索變得更加高效和系統(tǒng)化。namecodedatatypelengthprecisionPrimary主鍵idbigint19TRUE名稱namevarchar30FALSE價格pricefloat12FALSE數(shù)量numberint10FALSE創(chuàng)建時間create_timedatetimeFALSE創(chuàng)建人create_user_idbigint19FALSE圖片地址image_urlvarchar250FALSE適配機(jī)型model_typevarchar50FALSE控制方式control_modevarchar50FALSE主要功能main_functionvarchar255FALSE無線功能wifi_functionvarchar50FALSE電池規(guī)格batteryvarchar50FALSE特色功能characteristicvarchar150FALSE外觀尺寸sizevarchar100FALSE其他功能othervarchar255FALSE備注remarktext65535FALSE主鍵idbigint19TRUE名稱namevarchar30FALSE價格pricefloat12FALSE運(yùn)動信息表是一個數(shù)據(jù)庫表格,旨在詳細(xì)記錄包括唯一標(biāo)識符、運(yùn)動項目的名稱、推薦的使用年齡、收益部位及詳細(xì)簡介等關(guān)鍵信息,為用戶提供一目了然的運(yùn)動選擇指南,支持健康鍛煉和運(yùn)動決策。namecodedatatypelengthprecisionPrimary主鍵idint10TRUE運(yùn)動名稱namevarchar255FALSE使用年齡applicable_agevarchar20FALSE收益部位beneficial_positionvarchar255FALSE簡介introductiontext65535FALSE用戶信息表是數(shù)據(jù)庫中用以存儲用戶個人信息的結(jié)構(gòu)化表格,包括用戶的唯一標(biāo)識(主鍵)、登錄名、密碼、昵稱、性別、頭像、聯(lián)系地址、OpenID、用戶狀態(tài)、是否為管理員、電話號碼和郵箱等關(guān)鍵信息。此表旨在維護(hù)用戶的基本資料和權(quán)限設(shè)置,支持系統(tǒng)的用戶管理和認(rèn)證機(jī)制。namecodedatatypelengthprecisionPrimary主鍵idbigint19TRUE角色描述labelvarchar50FALSE角色標(biāo)簽值codevarchar20FALSE顯示狀態(tài)statustinyint3FALSE主鍵idbigint19TRUE登錄名user_namevarchar20FALSE密碼passwordvarchar100FALSE昵稱nick_namevarchar50FALSE性別sextinyint3FALSE用戶頭像avatarvarchar255FALSE地址addressvarchar100FALSEopenidopen_idvarchar100FALSE狀態(tài)statustinyint3FALSE是否管員admintinyint3FALSE電話號碼phone_numbervarchar20FALSE用戶郵箱emailvarchar50FALSE新聞數(shù)據(jù)庫表是設(shè)計用來存儲新聞條目信息的結(jié)構(gòu),包括每條新聞的唯一標(biāo)識(主鍵)、標(biāo)題、內(nèi)容、創(chuàng)建時間、創(chuàng)建人、更新時間、更新人、刪除標(biāo)記以及相關(guān)圖片的路徑等字段。該表旨在管理新聞內(nèi)容的發(fā)布、更新和刪除操作,支持新聞內(nèi)容的持久化存儲和高效檢索,為用戶提供實時的新聞信息服務(wù)。namecodedatatypelengthprecisionPrimary主鍵idbigint19TRUE標(biāo)題titlevarchar30FALSE內(nèi)容contentlongtext4.29E+09FALSE創(chuàng)建時間create_timevarchar20FALSE創(chuàng)建人create_namevarchar30FALSE更新時間update_timevarchar20FALSE更新人update_namevarchar30FALSE刪除標(biāo)記deltinyint3FALSE圖片路徑image_urlvarchar250FALSE微信步數(shù)表是一個專門用于記錄和存儲用戶通過微信運(yùn)動功能產(chǎn)生的步數(shù)數(shù)據(jù)的數(shù)據(jù)庫表,它主要包含用戶的微信標(biāo)識(openid)、記錄時間以及對應(yīng)的運(yùn)動步數(shù)。這個表的設(shè)計旨在追蹤和分析用戶的運(yùn)動活動,為基于步數(shù)的健康監(jiān)控和運(yùn)動鼓勵提供數(shù)據(jù)支持。namecodedatatypelengthprecisionPrimary微信標(biāo)識openidvarchar32FALSE時間timevarchar10FALSE運(yùn)動步數(shù)stepint10FALSE菜單管理表是數(shù)據(jù)庫中用于維護(hù)和管理應(yīng)用界面菜單結(jié)構(gòu)的表格,其設(shè)計用來存儲各級菜單項的詳細(xì)信息。這包括每個菜單項的唯一標(biāo)識符(主鍵)、菜單的訪問路徑、菜單圖標(biāo)、菜單名稱、關(guān)聯(lián)的菜單組件、父級菜單的ID以及菜單的顯示狀態(tài)。通過這種方式,菜單管理表支持構(gòu)建動態(tài)的、層級化的用戶界面導(dǎo)航系統(tǒng),使得應(yīng)用的菜單組織更加靈活和用戶友好。namecodedatatypelengthprecisionPrimary主鍵idbigint19TRUE菜單路徑pathvarchar100FALSE菜單圖標(biāo)iconvarchar50FALSE菜單名稱titlevarchar50FALSE菜單組件componentvarchar50FALSE父級菜單parent_idbigint19FALSE顯示狀態(tài)statustinyint3FALSE4.3主要功能流程設(shè)計4.3.1后端登錄流程設(shè)計后端管理賬號由申請人填寫基本信息交給平臺系統(tǒng)管理員和對所填信息是否完整并將信息錄入系統(tǒng)。管理員可以選擇賬號密碼登錄和手機(jī)驗證碼登錄兩種方式。平臺進(jìn)行信息校驗后,方可登錄后端管理系統(tǒng)。后端登錄流程圖如圖4-1所示。圖4-1登錄模塊流程圖4.3.2實時運(yùn)動流程設(shè)計由用戶登錄“悅動力”微信小程序端,點(diǎn)擊運(yùn)動健身頁面后,選擇心儀的運(yùn)動。點(diǎn)擊開始運(yùn)動后即可開始運(yùn)動記錄,在運(yùn)動過程中可以隨時暫停。長摁結(jié)束運(yùn)動后,點(diǎn)擊生成報告按鈕可以保存本次運(yùn)動的數(shù)據(jù)統(tǒng)計。系統(tǒng)出現(xiàn)錯誤時跳轉(zhuǎn)失敗頁面。實時運(yùn)動流程圖如圖4-2所示。圖4-2實時運(yùn)動流程圖圖4-3建議添加流程圖運(yùn)動建議添加由平臺的運(yùn)動分析師登陸后端賬號進(jìn)行操作。點(diǎn)入運(yùn)動報告管理頁面,選擇想要查詢的用戶。當(dāng)目標(biāo)用戶沒有運(yùn)動報告時,顯示無報告信息。平臺運(yùn)動分析師通過查看運(yùn)動數(shù)據(jù),點(diǎn)擊記錄后的加號進(jìn)行運(yùn)動建議的添加,用戶可以在微信端查看。建議添加流程圖如上圖4-3所示。4.3.3食物管理流程設(shè)計食物管理由平臺的飲食管理員登陸后端賬號進(jìn)行操作。點(diǎn)入飲食管理頁面。在分類管理頁面添加食物分類,當(dāng)添加內(nèi)容不合理時返回錯誤值。在食物管理界面可以進(jìn)行飲食信息的添加,也可批量導(dǎo)入excel文件。當(dāng)文件類型不合理或數(shù)據(jù)報錯時返回錯誤值。食物管理流程圖如下圖4-4所示。圖4-4食物管理流程圖4.4主要功能詳細(xì)設(shè)計4.4.1實時運(yùn)動詳細(xì)設(shè)計實時運(yùn)動通過用戶友好的界面提供運(yùn)動類型選擇與目標(biāo)設(shè)置,利用傳感技術(shù)實時追蹤與展示關(guān)鍵運(yùn)動數(shù)據(jù)(如速度、距離、配速等),并通過后端服務(wù)處理數(shù)據(jù),生成個性化運(yùn)動報告和建議。此系統(tǒng)強(qiáng)調(diào)個性化體驗、數(shù)據(jù)準(zhǔn)確性與安全性為用戶提供良好的運(yùn)動體驗。實時運(yùn)動活動圖如下圖4-5所示:圖4-5實時運(yùn)動活動圖實時運(yùn)動用例圖如下圖4-所示:圖4-5實時運(yùn)動用例圖4.4.2健身報告管理詳細(xì)設(shè)計運(yùn)動報告管理模塊的詳細(xì)設(shè)計使得平臺運(yùn)動分析師能夠通過后端賬戶登錄,瀏覽并選取特定用戶的運(yùn)動報告進(jìn)行分析。若用戶未有運(yùn)動報告,系統(tǒng)將顯示“無報告信息”。分析師可以查看每位用戶的詳細(xì)運(yùn)動數(shù)據(jù),并通過點(diǎn)擊運(yùn)動記錄旁的加號按鈕為用戶添加個性化的運(yùn)動建議。這些建議后續(xù)將通過微信小程序端展示給用戶,從而幫助他們根據(jù)專業(yè)反饋優(yōu)化運(yùn)動計劃和提高運(yùn)動效果。報告管理活動圖如圖4-6所示:圖4-6報告管理活動圖運(yùn)動報告管理用例圖如下圖4-所示:圖4-報告管理用例圖4.4.3食物管理詳細(xì)設(shè)計食物管理模塊的核心設(shè)計聚焦于后臺處理流程,包含食物信息的增刪改操作以及食物分類的維護(hù)。模塊支持管理員對食品數(shù)據(jù)庫進(jìn)行細(xì)致管理,如新增食物記錄、更新現(xiàn)有食物信息及刪除不再需要的條目。分類管理功能允許對食物進(jìn)行分組,以便用戶能夠基于類別進(jìn)行篩選。此外,模塊提供批量導(dǎo)入工具,簡化了大量數(shù)據(jù)更新的工作流程,有效提升管理效率。通過這些后臺功能,系統(tǒng)能夠確保食物信息的準(zhǔn)確性和時效性,為用戶提供可靠的數(shù)據(jù)支持。食物管理活動圖如圖4-7所示:圖4-7食物管理活動圖食物管理用例圖如圖4-7所示:圖4-7食物管理用例圖4.4.4系統(tǒng)管理詳細(xì)設(shè)計在系統(tǒng)的詳細(xì)設(shè)計中,管理功能核心側(cè)重于后臺操作流程,實現(xiàn)對系統(tǒng)數(shù)據(jù)的全面控制和維護(hù)。此設(shè)計允許管理員執(zhí)行精確的數(shù)據(jù)管理任務(wù),如添加、更新、和刪除記錄,進(jìn)而確保信息庫的更新和準(zhǔn)確性。管理模塊還包括對分類體系的管理,使得數(shù)據(jù)可以被邏輯地組織和檢索,大幅提升了后臺操作的效率和效果。這些后端管理功能集合,為系統(tǒng)提供了強(qiáng)大的數(shù)據(jù)支撐,確保了用戶界面能夠展示最新、最準(zhǔn)確的信息。此處以用戶管理模塊為例,用戶管理模塊活動圖如下圖4-8所示:系統(tǒng)管理用例圖如下圖所示:系統(tǒng)實現(xiàn)5.1開發(fā)環(huán)境準(zhǔn)備圖5-1系統(tǒng)技術(shù)棧系統(tǒng)所需技術(shù)棧如上圖5-1所示。為構(gòu)建“悅動力”健康運(yùn)動平臺,后端采用了SpringBoot框架以便快速開發(fā)和簡化配置,搭配MySQL和Redis分別處理關(guān)系型數(shù)據(jù)存儲與高速緩存需求,確保了數(shù)據(jù)處理的效率與響應(yīng)速度。MyBatis作為持久層框架,提供了靈活的SQL查詢與對象映射能力,而SpringSecurity保障了應(yīng)用安全。七牛云服務(wù)為文件上傳提供了高效可靠的解決方案。前端采用Vue.js框架,提供了強(qiáng)大的功能支持。使用Echarts作為可視化方案提供了豐富的圖表類型和易于使用的數(shù)據(jù)可視化圖表。這套技術(shù)棧不僅加速了開發(fā)流程,也保證了項目的高性能和安全性。5.2前端系統(tǒng)實現(xiàn)5.2.1飲食健康功能模塊實現(xiàn)飲食健康功能模塊主要為小程序用戶旨在為用戶提供一個方便快捷的方式來查詢各種食物的營養(yǎng)信息,幫助用戶更好地了解食物成分,并計算自己每日攝入的卡路里數(shù),從而做出更健康的飲食選擇。用戶在小程序健康運(yùn)動頁面可以看到各種食物分類。食物分類頁如下圖5-2所示,用戶點(diǎn)擊即可查詢到對應(yīng)種類的食物??梢栽谏戏剿阉鳈谕ㄟ^輸入食物名稱的關(guān)鍵詞來快速查找目標(biāo)食物,系統(tǒng)會即時返回匹配的查詢結(jié)果。食物列表頁如圖5-3所示,用戶點(diǎn)擊目標(biāo)食物后即可進(jìn)入食物詳情頁。食物詳情頁如圖5-4所示,對于每種查詢到的食物,系統(tǒng)都會通過可視化的餅狀圖展示其主要營養(yǎng)成分。食物詳細(xì)數(shù)據(jù)如下圖5-5所示。圖5-2食物分類頁圖5-3食物列表頁圖5-4食物詳情頁 圖5-5食物詳細(xì)數(shù)據(jù)頁下面是配置ECharts餅狀圖的核心功能代碼,通過wx:if="{{tableList.length>0}}"判斷,只有當(dāng)tableList數(shù)組的長度大于0時,即列表中有數(shù)據(jù)時,卡片列表才會被渲染顯示。wx:for="{{tableList}}"表示對tableList數(shù)組進(jìn)行遍歷,每個數(shù)組元素都將用來生成一個卡片。const

chart

=

echarts.init(canvas,

null,

{

width:

width,

height:

height,

devicePixelRatio:

dpr

//

像素

});

canvas.setChart(chart);

let

option

=

{

legend:

{

orient:

'vertical',

icon:

"circle",

bottom:

'bottom',

formatter:

function

(name)

{

let

arr

=

[];

echartsData.forEach(item

=>

{

if

(

==

name)

{

arr.push(name

+

item.value

+

'g');

}

});

return

arr.join('');

}

},

5.2.2運(yùn)動健身功能模塊實現(xiàn)運(yùn)動健身模塊是“悅動力”健康運(yùn)動小程序的核心功能之一,旨在為用戶提供隨時隨地的健身記錄功能并在運(yùn)動結(jié)束后生成運(yùn)動報告。幫助用戶監(jiān)測運(yùn)動進(jìn)度,從而有效提升用戶的身體健康和運(yùn)動表現(xiàn)。該模塊通過整合專業(yè)的運(yùn)動知識和卡路里計算方式,確保數(shù)據(jù)的準(zhǔn)確性。用戶通過小程序健康運(yùn)動頁面的運(yùn)動健身模塊中選擇各種運(yùn)動方式。運(yùn)動健身頁如下圖5-6所示,用戶選擇運(yùn)動類型并點(diǎn)擊,進(jìn)入實時運(yùn)動頁面。實時運(yùn)動頁如下圖5-7所示,用戶點(diǎn)擊開始運(yùn)動后,系統(tǒng)開始計時。在運(yùn)動期間可以隨時暫停運(yùn)動,為了防止在運(yùn)動中誤觸結(jié)束運(yùn)動,系統(tǒng)將結(jié)束運(yùn)動按鈕設(shè)為長摁觸發(fā)。結(jié)束運(yùn)動后可以生成本次的運(yùn)動報告,其中包括運(yùn)動日期、運(yùn)動歷程、運(yùn)動時間、運(yùn)動配速和本次運(yùn)動消耗的卡路里數(shù)。用戶可以在個人中心的健康報告中進(jìn)行查詢。平臺的運(yùn)動管理員可以通過登錄后臺系統(tǒng)查看用戶的運(yùn)動報告,并為用戶的運(yùn)動信息提供建議以及之后的運(yùn)動規(guī)劃。運(yùn)動報告頁如下圖5-8所示。圖5-6運(yùn)動健身頁圖5-7實時運(yùn)動頁圖5-8運(yùn)動報告頁為了防止用戶在運(yùn)動過程中使用其他途徑刷取運(yùn)動里程,平臺增加了運(yùn)動距離合理性判斷功能,以下是判斷功能主體代碼。checkDistance(lat2,

lng2,

cur_time)

{

let

obj

=

this.data.polyline[0].points[this.data.polyline[0].points.length

-

1];

let

lat1

=

obj.latitude;

let

lng1

=

obj.longitude;

//

調(diào)用

return的距離單位為m

let

radLat1

=

lat1

*

Math.PI

/

180.0;

let

radLat2

=

lat2

*

Math.PI

/

180.0;

let

a

=

radLat1

-

radLat2;

let

b

=

lng1

*

Math.PI

/

180.0

-

lng2

*

Math.PI

/

180.0;

let

s

=

2

*

Math.asin(Math.sqrt(Math.pow(Math.sin(a

/

2),

2)

+

Math.cos(radLat1)

*

Math.cos(radLat2)

*

Math.pow(Math.sin(b

/

2),

2)));

s

=

s

*

6378.137;

//

EARTH_RADIUS;

s

=

Math.round(s

*

10000)

/

10;

//m

let

time_differece

=

cur_time

-

this.data.points_time;

//秒

this.data.points_time

=

cur_time;

if

(time_differece

<=

0)

{

return

false;

}

let

cal_distance

=

(lebu.getStride()

/

100)

*

time_differece;

//cm

=>

m

if

((s

<=

cal_distance

&&

s

>

0)

||

(s

<=

this.data.distance_data

&&

this.data.distance

>

0)

||

(s

<

35

&&

s

>

0))

{

return

true;

}

else

{

return

false;

}

},

運(yùn)動報告列表頁從服務(wù)器獲取用戶運(yùn)動報告信息使用this.setData方法更新頁面數(shù)據(jù),將處理后的runinfo_data數(shù)組設(shè)置到頁面的runinfo_data數(shù)據(jù)屬性中,使其能夠在頁面上顯示。代碼如下,wx.request({

url:

`http://localhost:8000/healthReport/findPage?querySting=${wx.getStorageSync('openid')}`,

method:

'post',

data:

postData,

header:

{

'Authorization':

wx.getStorageSync('totken')

},

success:

(res)

=>

{

console.log('res',

res);

if

(res.data.flag)

{

console.log(res);

runinfo_data

=

res.data.rows;

runinfo_data.forEach(item=>{

if

(item.createTime)

{

item.formatTime

=

that.formatTime(item.createTime)

}

})

this.setData({

runinfo_data:

runinfo_data

});

}

},

fail:

(err)

=>

{

wx.showToast({

title:

'網(wǎng)路請求異常',

icon:

'error'

});

reject(err);

}

});5.2.3運(yùn)動數(shù)據(jù)分析功能模塊實現(xiàn)實現(xiàn)運(yùn)動數(shù)據(jù)分析功能模塊涉及到幾個關(guān)鍵步驟:收集用戶步數(shù)數(shù)據(jù)、存儲這些數(shù)據(jù)、分析數(shù)據(jù)以及展示數(shù)據(jù)。用戶通過點(diǎn)擊小程序的運(yùn)動分析頁面即可查看進(jìn)四周的運(yùn)動數(shù)據(jù)統(tǒng)計。運(yùn)動統(tǒng)計頁如下圖5-9所示系統(tǒng)通過微信運(yùn)動API允許訪問用戶的運(yùn)動步數(shù),需要得到用戶的授權(quán)。API調(diào)用代碼如下:

wx.getWeRunData({

success:

(res)

=>

{

//

encryptedData

到開發(fā)者后臺解密開放數(shù)據(jù)

const

{

encryptedData,

iv

}

=

res;

wx.request({

url:

'http://localhost:8000/mini/wxrun',

method:

'POST',

data:

{

encryptedData:

encryptedData,

iv:

iv,

sessionKey:

data.sessionKey,

//

登陸時獲取

openid:

data.openid

},

header:

{

'Authorization':

wx.getStorageSync('totken')

},

success:

(result)

=>

{

wx.setStorageSync('step',

result.data.data);

},

});

},圖5-9運(yùn)動統(tǒng)計頁面圖wx.getWeRunData返回的數(shù)據(jù)是加密的,需要發(fā)送到服務(wù)器解密,解密后可以獲得用戶每天的步數(shù)數(shù)據(jù)。解密數(shù)據(jù)核心代碼如下:public

static

String

decryptData(String

encryptData,

String

sessionKey,

String

iv)

{

return

new

String(

decryptOfDiyIV(Base64.decode(encryptData),

Base64.decode(sessionKey),

Base64.decode(iv))

);}private

static

byte[]

decryptOfDiyIV(byte[]

encryptedData,

byte[]

keyBytes,

byte[]

ivs)

{

init(keyBytes);

try

{

cipher.init(Cipher.DECRYPT_MODE,

key,

new

IvParameterSpec(ivs));

return

cipher.doFinal(encryptedData);

}

catch

(Exception

e)

{

e.printStackTrace();

}

return

null;}private

static

void

init(byte[]

keyBytes)

{

int

base

=

16;

if

(keyBytes.length

%

base

!=

0)

{

int

groups

=

keyBytes.length

/

base

+

1;

byte[]

temp

=

new

byte[groups

*

base];

Arrays.fill(temp,

(byte)

0);

System.arraycopy(keyBytes,

0,

temp,

0,

keyBytes.length);

keyBytes

=

temp;

}

Security.addProvider(new

BouncyCastleProvider());

key

=

new

SecretKeySpec(keyBytes,

"AES");

try

{

cipher

=

Cipher.getInstance("AES/CBC/PKCS7Padding",

"BC");

}

catch

(Exception

e)

{

e.printStackTrace();

}}利用AES算法、CBC模式、PKCS7Padding填充模式來解密微信加密數(shù)據(jù)。解密得到的步數(shù)數(shù)據(jù)存儲在數(shù)據(jù)庫中,在微信小程序中通過Echarts展示用戶的部署趨勢圖,展示用戶四周內(nèi)步數(shù)的趨勢。通過定義一個折線圖,xAxis顯示周一到周日,yAxis顯示步數(shù),折線圖通過series中的data屬性展示實際的步數(shù)數(shù)據(jù)。此外,還加上了一個標(biāo)記線(markLine),顯示一周內(nèi)步數(shù)的平均值。方便用戶觀測自己四周內(nèi)的的步數(shù)趨勢。初始化Echarts代碼如下:initChart:

function()

{

this.lineComponent.init((canvas,

width,

height,

dpr)

=>

{

const

chart

=

echarts.init(canvas,

null,

{

width:

width,

height:

height,

devicePixelRatio:

dpr

//

new

});

canvas.setChart(chart);

chart.setOption(this.getOption());

return

chart;

});

},折線圖數(shù)據(jù)配置代碼如下://

對第二周、第三周和第四周的配置與本周相同,這里以第一周為例

series:

[

{

name:

'本周',

type:

'line',

data:

this.data.data1,

markLine:

{

data:

[

{

type:

'average',

name:

'平均步數(shù)'

}

],

label:

{

position:

'middle',

formatter:

'平均步數(shù):

{c}'

}

}

},5.2.4運(yùn)動資訊功能模塊實現(xiàn)運(yùn)動咨訊功能模塊主要包括體育熱點(diǎn)新聞、運(yùn)動商品以及運(yùn)動項目三個子頁面。用戶點(diǎn)擊小程序的運(yùn)動資訊按鈕,即可瀏覽運(yùn)動咨詢頁面。體育熱點(diǎn)新聞頁如下圖5-10所示,用戶可以點(diǎn)擊查看詳情按鈕瀏覽自己感興趣的熱點(diǎn)新聞。圖5-10體育熱點(diǎn)新聞頁面圖用戶點(diǎn)擊上方的用戶商品頁面來瀏覽平臺提供的運(yùn)動商品。運(yùn)動商品頁面如下圖5-11所示,用戶可以點(diǎn)擊購買按鈕來購買自己想要的商品。圖5-11運(yùn)動商品頁面圖用戶點(diǎn)擊上方的運(yùn)動項目按鈕即可瀏覽運(yùn)動項目頁面。運(yùn)動項目頁如下圖5-12所示。此頁面提供了各種運(yùn)動項目查詢、適于的年齡以及此類運(yùn)動的介紹。用戶可以點(diǎn)擊查看詳情按鈕來查看自己感興趣的運(yùn)動項目的詳細(xì)信息。圖5-12運(yùn)動項目圖下面是頁面發(fā)送分頁請求、處理響應(yīng)、更新頁面數(shù)據(jù)以及用戶界面反饋的簡化代碼:app.ajax(this.data.url,

'POST',

this.data.queryInfo).then((res)

=>

{

let

temp

=

this.data.tableList;

//

當(dāng)前已加載的數(shù)據(jù)

let

result

=

res.rows;

//

響應(yīng)中返回的新數(shù)據(jù)

//

如果是加載第一頁,則清空當(dāng)前數(shù)據(jù)

if

(this.data.queryInfo.pageNumber

==

1)

{

temp

=

[];

}

//

根據(jù)新數(shù)據(jù)的數(shù)量,更新是否還有更多數(shù)據(jù)可加載的標(biāo)志

let

hasMoreData

=

result.length

===

this.data.queryInfo.pageSize;

//

更新頁面數(shù)據(jù)

this.setData({

tableList:

temp.concat(result),

//

合并舊數(shù)據(jù)和新數(shù)據(jù)

hasMoreData:

hasMoreData,

//

是否還有更多數(shù)據(jù)

queryInfo:

{

//

準(zhǔn)備下一頁的加載

pageNumber:

this.data.queryInfo.pageNumber

+

(hasMoreData

?

1

:

0),

pageSize:

this.data.queryInfo.pageSize,

}

});});5.3后端系統(tǒng)實現(xiàn)5.3.1基礎(chǔ)功能模塊實現(xiàn)本系統(tǒng)登錄模塊接收前端傳遞的登錄參數(shù),例如用戶名和密碼。對接收到的用戶名和密碼進(jìn)行驗證,驗證用戶名是否存在、密碼是否正確當(dāng)驗證通過時,生成認(rèn)證令牌(通常是JWTtoken),并返回給前端。如果驗證不通過,返回錯誤信息給前端。它主要依賴于SpringSecurity和JWT(JsonWebToken)來進(jìn)行身份驗證和授權(quán)。此外,還使用了Redis作為數(shù)據(jù)緩存和驗證碼存儲的解決方案,以及MyBatis作為數(shù)據(jù)庫ORM工具。登錄模塊代碼如下:public

Result

login(LoginVo

loginVo)

{

UserDetails

userDetails;

if

("2".equals(loginVo.getType()))

{

//

2表示手機(jī)號登錄

//

手機(jī)號登錄

if

(!StringUtils.isNotEmpty(loginVo.getPhoneNumber())

||

!StringUtils.isNotEmpty(loginVo.getCode()))

{

return

Result.fail("請?zhí)顚懲暾男畔ⅲ?);

}

//

驗證碼對比

Object

code

=

redisUtils.getValue(loginVo.getPhoneNumber()

+

"sms");

if

(code

==

null)

{

return

Result.fail("驗證碼已過期!");

}

if

(!code.toString().equals(loginVo.getCode()))

{

return

Result.fail("驗證碼不正確!");

}

//

加載用戶信息

userDetails

=

userDetailsService.loadUserByUsername(loginVo.getPhoneNumber());

}

else

{

//

其他為普通登錄

//

普通登錄

if

(!StringUtils.isNotEmpty(loginVo.getUsername())

||

!StringUtils.isNotEmpty(loginVo.getPassword()))

{

return

Result.fail("請?zhí)顚懲暾男畔ⅲ?);}

//

根據(jù)用戶名加載用戶信息

userDetails

=

userDetailsService.loadUserByUsername(loginVo.getUsername());

if

(null

==

userDetails

||

!passwordEncoder.matches(MD5Utils.md5(loginVo.getPassword()),

userDetails.getPassword()))

{

return

Result.fail("賬號或密碼錯誤,請重新輸入!");

}

}

//

檢查用戶是否啟用

if

(!userDetails.isEnabled())

{

return

Result.fail("該賬號未啟用,請聯(lián)系管理員!");

}

//

在security對象中存入登陸者信息

UsernamePasswordAuthenticationToken

authenticationToken

=

new

UsernamePasswordAuthenticationToken(userDetails,

null,

userDetails.getAuthorities());

SecurityContextHolder.getContext().setAuthentication(authenticationToken);

//

根據(jù)登錄信息獲取token

String

token

=

tokenUtils.generateToken(userDetails);

//

構(gòu)造返回結(jié)果

Map<String,

String>

map

=

new

HashMap<>(2);

map.put("tokenHead",

tokenHead);

map.put("token",

token);

return

Result.success("登錄成功!",

map);}5.3.2系統(tǒng)管理模塊實現(xiàn)系統(tǒng)管理模塊主要包括用戶管理、角色管理、權(quán)限管理以及菜單管理。方便后期系統(tǒng)的功能添加。用戶管理界面如下圖5-13所示,系統(tǒng)管理員可以通過用戶管理模塊處理平臺用戶賬戶的創(chuàng)建、更新、查詢和刪除操作。允許系統(tǒng)管理為不同的用戶分配不同的角色標(biāo)簽,每個角色都有不同的權(quán)限集合。圖5-13用戶管理界面圖角色管理頁面如下圖5-14所示,系統(tǒng)管理員可以通過角色管理模塊進(jìn)行角色標(biāo)簽的創(chuàng)建。通過改變不同角色所能管理的權(quán)限列表,讓系統(tǒng)的每個模塊都有專人管理。減輕平臺管理員的壓力以及有效防止其他管理員濫用權(quán)限的現(xiàn)象產(chǎn)生。圖5-14角色管理頁面圖權(quán)限管理頁面如下圖5-15所示,系統(tǒng)管理員可以通過權(quán)限管理模塊進(jìn)行平臺各種基礎(chǔ)功能所需要的各種權(quán)限的添加刪除及更改。例如用戶的增刪改查權(quán)限,通過設(shè)置不同的權(quán)限標(biāo)簽值方便平臺管理員的管理以及數(shù)據(jù)庫的寫入。是系統(tǒng)管理模塊中的重要一環(huán)。圖5-15權(quán)限管理頁面圖菜單管理頁面如下圖5-16所示,系統(tǒng)管理員可以通過菜單管理模塊進(jìn)行平臺菜單的增添以及刪除例如用戶的增刪改查權(quán)限。通過導(dǎo)入前端路徑來進(jìn)行菜單的添加。此功能簡化了后端平臺管理的操作,當(dāng)不同模塊維護(hù)或修改時只需停用該菜單模塊即可。圖5-16菜單管理頁面圖菜單權(quán)限部分代碼如下:public

Result

delete(Long

id)

{

("查詢該角色信息下是否有菜單權(quán)限");

List<SysMenu>

menus

=

menuMapper.findByRoleId(id);

List<SysMenu>

childrens

=

new

ArrayList<>();

menus.forEach(item

->

{

childrens.addAll(menuMapper.findByRoleIdAndParentId(item.getId(),

id));

});

if

(menus.size()

>

0

||

childrens.size()

>

0)

{

return

Result.fail("刪除失敗,該角色下?lián)碛胁藛涡畔ⅲ埾葎h除對應(yīng)的菜單信息!");

}

if

(permissionMapper.findByRoleId(id).size()

>

0)

{

return

Result.fail("刪除失敗,該角色下?lián)碛袡?quán)限信息,請先刪除對應(yīng)的權(quán)限信息!");

}

roleMapper.delete(id);

redisUtils.delKey("userInfo_"

+

SecurityUtils.getUsername());

return

Result.success("刪除成功!");

}5.3.3運(yùn)動管理模塊實現(xiàn)運(yùn)動管理模塊包括運(yùn)動項目管理、運(yùn)動商品管理和運(yùn)動資訊管理。主要包括對運(yùn)動項目的增刪改查操作,例如添加新的運(yùn)動項目、修改已有項目信息、刪除不需要的項目等。確保只有運(yùn)維管理員才能訪問運(yùn)動管理模塊的功能,為運(yùn)維管理員的日常工作提供便利。運(yùn)動項目頁如下圖5-16所示,管理員可以通過上方搜索欄快速定位目標(biāo)運(yùn)動。通過不斷優(yōu)化運(yùn)動的各種信息,保障前端用戶的使用體驗。圖5-16運(yùn)動項目頁面圖運(yùn)動商品頁面如下圖5-17所示,管理員可以在此頁進(jìn)行平臺運(yùn)動商品的添加及信息修改。例如商品名稱、商品圖片、商品數(shù)量、商品價格等信息的修改。確保實時更新商品數(shù)據(jù),確保前端用戶的使用體驗。圖5-17運(yùn)動商品頁面圖運(yùn)動資訊頁面如下圖5-18所示,管理員可以在此頁面進(jìn)行運(yùn)動咨訊的增刪改查。此頁面可以查看到體育熱點(diǎn)資訊的創(chuàng)建時間以及更新時間,方便管理員對咨訊信息的實時維護(hù)。平臺確保第一時間更新體育熱點(diǎn)資訊,保證用戶的使用體驗,從而達(dá)到提升用戶粘性的效果。圖5-18運(yùn)動資訊頁面圖5.3.4健康飲食管理模塊實現(xiàn)健康飲食管理模塊是一個專門用于記錄、跟蹤和管理食品分類及其營養(yǎng)成分的系統(tǒng)。這個模塊的主要功能包括創(chuàng)建飲食分類和飲食營養(yǎng)成分信息修改,都是為了讓用戶能夠更加精確地跟蹤和管理他們的飲食習(xí)慣。模塊允許管理員創(chuàng)建不同的食品分類,如蔬菜、水果、肉類、谷物等,以便更好地組織和分類食品信息。通過細(xì)化分類,用戶可以更方便地記錄和查看他們的飲食習(xí)慣,也可以幫助他們作出更健康的飲食選擇。飲食分類管理頁如下圖5-19所示。圖5-19飲食分類頁面圖為了幫助用戶更好地理解他們攝入食物的營養(yǎng)價值,管理模塊允許管理員添加或修改食物的營養(yǎng)成分信息。用戶可以基于這些詳細(xì)的營養(yǎng)信息來做出更合理的飲食計劃,比如增加膳食纖維的攝入,減少添加糖和飽和脂肪的攝入等。食物成分管理頁面如下圖5-20所示。這些功能結(jié)合起來,為用戶提供了一個全面的工具集,以促進(jìn)更健康的飲食習(xí)慣和生活方式。它不僅可以幫助個人用戶跟蹤和分析他們的飲食模式,還可以為營養(yǎng)師和健康專家提供一個平臺,以指導(dǎo)他們的客戶或患者。圖5-20食物成分管理頁面圖食物查詢代碼如下:public

Result

findFoodByTypeId(QueryInfo

queryInfo)

{

PageHelper.startPage(queryInfo.getPageNumber(),

queryInfo.getPageSize());

String

queryString

=

queryInfo.getQueryString();

Page<Food>

foods

=

foodMapper.findByTypeId(queryString);

return

Result.success("食物查詢成功!",

new

PageResult(foods.getTotal(),

foods.getResult()));

}public

Result

findMiniPage(JSONObject

object)

{

PageHelper.startPage(object.getInteger("pageNumber"),

object.getInteger("pageSize"));

Long

typeId

=

object.getLong("typeId");

String

keywords

=

object.getString("keywords");

Page<Food>

foods

=

foodMapper.findMiniPage(typeId,

keywords);

return

PageResult.pageRsult(foods.getTotal(),

foods.getResult());

}5.3.5健康報告管理模塊實現(xiàn)健康報告管理模塊在健康和健身應(yīng)用中起著至關(guān)重要的作用,特別是對于那些尋求提高運(yùn)動表現(xiàn)和健康水平的用戶來說。通過這個模塊,用戶不僅能夠跟蹤和保存他們的運(yùn)動數(shù)據(jù),還能從專業(yè)的運(yùn)動分析師那里獲得個性化的反饋和建議。健康報告管理頁面如下圖5-21所示,平臺運(yùn)動分析師可以通過選擇不同的用戶查看他們的運(yùn)動報告,并根據(jù)這些數(shù)據(jù)提供個性化的反饋和建議。例如根據(jù)運(yùn)動數(shù)據(jù)評估用戶的運(yùn)動水平和進(jìn)步、提供定制的訓(xùn)練建議,如改進(jìn)技巧、增加運(yùn)動強(qiáng)度等。除了運(yùn)動建議外,還可能提供關(guān)于恢復(fù)、營養(yǎng)和防傷的建議。通過這種交互,用戶不僅能夠獲得專業(yè)的指導(dǎo),還能更有動力和方向地進(jìn)行訓(xùn)練,從而更有效地達(dá)到他們的健身目標(biāo)。用戶健康報告信息存儲與redis,將頻繁訪問的數(shù)據(jù),如用戶的健康報告信息存儲在Redis中,可以減少對后端主數(shù)據(jù)庫的訪問壓力,提高整個應(yīng)用的性能和響應(yīng)速度。圖5-21健康報告管理頁面圖分頁查詢健康報告數(shù)據(jù)代碼如下:@PostMapping("/findPage")public

Result

findPage(@RequestBody(required

=

false)

QueryInfo

queryInfo)

{

String

userId

=

queryInfo.getQueryString();

//

從查詢信息中獲取用戶ID

List<HealthReport>

list

=

new

ArrayList<>();

//

初始化健康報告列表

if

(StringUtils.isEmpty(userId))

{

//

如果未提供用戶ID,則查詢所有用戶的健康報告

List<String>

openidList

=

userMapper.allMobileUser().stream().map(SysUser::getOpenId).collect(Collectors.toList());

for

(String

item

:

openidList)

{

List<HealthReport>

healthReportList

=

(List<HealthReport>)

redisUtil.getValue(HEALTH_REPORT_PREFIX

+

item);

if

(!CollectionUtils.isEmpty(healthReportList))

{

list.addAll(healthReportList);

list

=

(List<HealthReport>)

redisUtil.getValue(HEALTH_REPORT_PREFIX

+

userId);

if

(list

==

null)

list

=

new

ArrayList<>();

}

//

分頁邏輯

Integer

pageSize

=

queryInfo.getPageSize();

Integer

pageNumber

=

queryInfo.getPageNumber();

if

(pageSize

!=

null

&&

pageNumber

!=

null)

{

list

=

list.stream()

.skip((pageNumber

-

1)

*

pageSize)

.limit(pageSize)

.collect(Collectors.toList());

}

return

PageResult.pageRsult(CollectionUtils.isEmpty(list)

?

0

:

list.size(),

list);}第六章系統(tǒng)測試6.1測試方法與工具軟件測試的策略根據(jù)目標(biāo)的不同而變化,應(yīng)用的測試技術(shù)也各不相同,可大致分類為:按測試過程可分為靜態(tài)與動態(tài)測試;按照對軟件內(nèi)部結(jié)構(gòu)的了解程度可分為黑盒測試和白盒測試;按照測試的階段可劃分為單元測試、集成測試以及系統(tǒng)測試。以下是對本文所選測試策略的進(jìn)一步闡述。①黑盒測試的核心目標(biāo)在于檢測軟件的功能需求和設(shè)計規(guī)范是否存在任何漏洞或錯誤。這種測試方法把軟件視為一個不透明的盒子,測試人員無需了解程序內(nèi)部的邏輯結(jié)構(gòu),只需關(guān)注于軟件外部的表現(xiàn)和功能。通過這種方式,測試著重于驗證軟件的行為是否符合預(yù)期。主要的黑盒測試技術(shù)包括等價劃分、邊界值分析、因果圖方法和基于推測的錯誤檢測等。這些方法旨在全面覆蓋軟件的功能點(diǎn),確保軟件按照設(shè)計要求正確執(zhí)行。②白盒測試,亦稱結(jié)構(gòu)測試,旨在識別編碼階段的錯誤。編程過程中可能因程序員經(jīng)驗不足或?qū)﹂_發(fā)工具的掌握程度不夠而導(dǎo)致的錯誤尤其值得關(guān)注。雖然現(xiàn)代開發(fā)環(huán)境能自動偵測語法錯誤,促使及時修正,但對于業(yè)務(wù)邏輯的錯誤檢測則更為復(fù)雜。白盒測試允許測試人員“透視”程序內(nèi)部結(jié)構(gòu),通過深入分析代碼邏輯,確保軟件的正確性和穩(wěn)定性。此方法不僅涉及語法準(zhǔn)確性的驗證,還包括邏輯和流程的校驗,確保每一部分都按預(yù)期工作。③系統(tǒng)測試對整體應(yīng)用進(jìn)行綜合評估,考量包括硬件環(huán)境、軟件系統(tǒng)及最終用戶操作等各方面因素,確保整體滿足預(yù)定的需求規(guī)格。該過程不僅能揭示在系統(tǒng)分析和設(shè)計階段可能遺漏的缺陷,還包括了對系統(tǒng)功能、安全性、壓力承載等關(guān)鍵性能的全面檢測。安全測試著眼于驗證系統(tǒng)的安全防護(hù)措施是否充分,以及是否存在潛在的數(shù)據(jù)泄露或隱私侵犯風(fēng)險。壓力測試通過模擬高負(fù)荷情況來測試系統(tǒng)的并發(fā)處理能力和穩(wěn)定性,從而為系統(tǒng)的規(guī)模部署提供決策支持。通過這一系列測試,可以確保系統(tǒng)從多維度達(dá)到業(yè)務(wù)要求,為用戶提供可靠、安全的服務(wù)。6.2測試工具①測試管理工具。Git作為領(lǐng)先的分布式版本控制系統(tǒng),允許測試團(tuán)隊在軟件開發(fā)周期內(nèi)追蹤和保存各個版本的變化。這種方式便于測試人員在版本之間進(jìn)行比對,從而高效地識別和解決問題。②接口測試工具。Swagger是一個獨(dú)立于語言的工具,用于自動生成RESTFUL接口文檔和進(jìn)行接口測試。它主要被前端開發(fā)者用于驗證和測試后端提供的接口。通過Swagger,開發(fā)者能夠直觀地查看整個系統(tǒng)的接口文檔,包括請求的格式和預(yù)期的響應(yīng)數(shù)據(jù),從而在沒有深入閱讀技術(shù)文檔的情況下,直接對接口進(jìn)行調(diào)試和測試。后端開發(fā)者需要在編碼階段集成Swagger,以便前端團(tuán)隊能夠順利利用這些功能。③白盒測試工具。Junit是一個廣泛應(yīng)用于Java環(huán)境下的單元測試框架,允許開發(fā)者對各個獨(dú)立功能模塊進(jìn)行測試。它提供了一種便捷的方式來驗證代碼塊的邏輯正確性而無需修改任何原有代碼。通過使用Junit,開發(fā)者能夠確保他們的代碼單元能夠按預(yù)期工作,這使得它成為Java開發(fā)社區(qū)中備受歡迎的測試工具之一。6.3功能測試6.3.1模塊測試對于“悅動力”健康運(yùn)動平臺進(jìn)行功能測試,首先要對用戶模塊、基礎(chǔ)數(shù)據(jù)模塊、健康運(yùn)動模塊、健康飲食模塊進(jìn)行基本的操作測試。具體的測試內(nèi)容如下列表格所示。系統(tǒng)界面測試結(jié)果如下表6.1所示:編號測試內(nèi)容測試結(jié)果001不同瀏覽器下界面表現(xiàn)在谷歌和火狐中顯示良好,IE略有偏差002系統(tǒng)的背景及按鈕圖像圖像完整無缺失003導(dǎo)航欄與按鈕的定位位置準(zhǔn)確正常004提示界面的反饋情況提示功能正常工作005操作提示的準(zhǔn)確性提示正常006菜單排列順序準(zhǔn)確性順序無誤007界面風(fēng)格的一致性大體一致008頁面的刷新穩(wěn)定性多次刷新后顯示穩(wěn)定009窗口顯示效果頁面顯示正常010系統(tǒng)鏈接的有效性鏈接均有效,跳轉(zhuǎn)無誤表6.1系統(tǒng)界面測試結(jié)果系統(tǒng)管理模塊測試結(jié)果如下表6.2所示:序號角色測試功能測試過程測試結(jié)果011系統(tǒng)管理員登錄操作填入正確的登錄信息成功進(jìn)入系統(tǒng)輸入錯誤的登錄信息提示賬號或密碼錯誤012密碼找回填入正確郵箱成功收到郵件013用戶添加添加用戶信息成功添加用戶014用戶移除選擇并嘗試從用戶列表中移除管理員用戶提示管理員角色無法移除選擇并嘗試從用戶列表中移除普通用戶用戶被成功移除015用戶查找用戶搜索,輸入關(guān)聯(lián)數(shù)據(jù)搜索操作成功用戶搜索,不輸入關(guān)聯(lián)數(shù)據(jù)無法找到用戶016角色創(chuàng)建創(chuàng)建新角色并保存角色創(chuàng)建成功017角色移除嘗試刪除

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論