版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一個(gè)基于安卓平臺(tái)的血壓監(jiān)測(cè)與分析系統(tǒng)設(shè)計(jì)摘要在不斷發(fā)展的當(dāng)今時(shí)代,血壓疾病一直是困擾人類(lèi)的其他疾病一樣有著獨(dú)特的癥狀,很多人都在不知不覺(jué)軟件使用了java語(yǔ)言在androids在本文中,第一章介紹了該app的研究背景,簡(jiǎn)要闡述了開(kāi)發(fā)使用的java語(yǔ)言和使用java語(yǔ)言開(kāi)發(fā)軟件的必要性。第二章則介紹了用戶對(duì)于這個(gè)app的需求以及app預(yù)計(jì)實(shí)現(xiàn)的功能。第三章介紹了該app對(duì)于每一模塊的底之后的開(kāi)發(fā)打下基礎(chǔ)。第四章描述了軟件各個(gè)頁(yè)面和模塊的代碼實(shí)現(xiàn)方式。第五關(guān)鍵字:安卓,血壓監(jiān)測(cè)與分析 6 61.2java語(yǔ)言與androidapp開(kāi)發(fā) 6 6 2.2app預(yù)計(jì)實(shí)現(xiàn)功能 3.1數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì) 3.1.1用戶數(shù)據(jù) 3.1.2服藥數(shù)據(jù) 3.1.3血壓數(shù)據(jù) 3.2登錄模塊邏輯設(shè)計(jì) 3.3服藥模塊邏輯設(shè)計(jì) 3.4血壓模塊邏輯設(shè)計(jì) 3.5個(gè)人模塊邏輯設(shè)計(jì) 4.1.1登錄頁(yè)面 4.1.2注冊(cè)頁(yè)面 4.1.3服藥計(jì)劃顯示頁(yè)面 4.1.4添加服藥計(jì)劃頁(yè)面 4.1.5查看血壓頁(yè)面 4.1.6輸入血壓頁(yè)面 204.1.8服藥歷史記錄查看頁(yè)面 24 4.5過(guò)往服藥數(shù)據(jù)讀取的實(shí)現(xiàn) 354.6個(gè)人血壓檢測(cè)與分析app測(cè)試 4.6.1登陸及注冊(cè)測(cè)試 4.6.2服藥數(shù)據(jù)測(cè)試 4.6.3血壓數(shù)據(jù)測(cè)試 第1章緒論其余大部分手機(jī)均使用安卓操作系統(tǒng)。這導(dǎo)致了高血壓等血壓疾病已經(jīng)成為了一大普遍疾病。它的定義是平均收縮壓>140mmHg,平均舒張壓>90mmHg1。我國(guó)高血壓患病率仍然處于較高水平,高血壓的危險(xiǎn)因素為男性、高齡、居住在城市、慢性病數(shù)量>1種、飲酒、血脂異常和糖尿病12。2013年中國(guó)有250萬(wàn)人死于高血壓,占全部死因的27.5%,傷殘調(diào)整壽命年的14.28%。2015年中國(guó)>18歲人群有2.445億高血壓患者。2017年,中國(guó)有254萬(wàn)(95%UI226萬(wàn)282萬(wàn))人死于高收縮壓,其中95.7%(95.6%96.4%)死于心血管病13。但是許多人對(duì)此并不重視。由此可知,我國(guó)有著對(duì)自己血壓進(jìn)行監(jiān)測(cè)記錄的需要,一旦發(fā)現(xiàn)血壓用戶就有了服藥的前提。有的人因?yàn)槟承┰虿畹仍蚪?jīng)常忘記服藥。這時(shí)就需要有一個(gè)軟件來(lái)提醒這些本課題致力于基于安卓系統(tǒng)開(kāi)發(fā)一款個(gè)人血壓監(jiān)測(cè)與分析app,旨在為需用戶提供可視化的血壓變化監(jiān)測(cè)以及及時(shí)的服1.2java語(yǔ)言與androidapp開(kāi)發(fā)換三個(gè)主要頁(yè)面。具體實(shí)現(xiàn)效果如圖4.3所示數(shù)量:1片藥物名稱(chēng):1數(shù)量:23@服藥血壓個(gè)人中心圖4.3服藥計(jì)劃展示頁(yè)面該頁(yè)面為添加服藥計(jì)劃頁(yè)面,頂部標(biāo)題提示該頁(yè)面為添加服藥計(jì)劃頁(yè)面。下側(cè)一共三個(gè)輸入框一個(gè)文字框。文字框分別輸入藥物名稱(chēng)、藥物數(shù)量以及備注。文字框通過(guò)點(diǎn)選來(lái)選擇提示時(shí)間。最下面為添加按鈕,點(diǎn)擊后可以添加一個(gè)服藥計(jì)劃。圖4.4添加服藥計(jì)劃頁(yè)面該頁(yè)面為查看血壓頁(yè)面,頂部標(biāo)題提示該頁(yè)面為查看血壓頁(yè)面。標(biāo)題右側(cè)加號(hào)點(diǎn)擊可以進(jìn)入輸入血壓頁(yè)面。中部為主要部分,偏上側(cè)為根據(jù)所選時(shí)間段繪制的血壓值折線。中間為兩個(gè)按鈕,點(diǎn)擊以切換血壓折線時(shí)間段,分別有一周內(nèi)和兩周內(nèi)兩種選項(xiàng)。偏下側(cè)為對(duì)應(yīng)時(shí)間段所有血壓值的列表,每一條都顯示了該次測(cè)量血壓的收縮壓、舒張壓和測(cè)量時(shí)間。最下方為底部菜單欄用以切換三大主要具體實(shí)現(xiàn)效果如圖4.5所示。該頁(yè)面為個(gè)人信息頁(yè)面,主要分為三部分。頂部為簡(jiǎn)易的頭像和狀態(tài)顯示以及用戶名顯示。中部為服藥歷史記錄頁(yè)面的入口和退出登錄按鈕。入口按鈕右側(cè)有裝飾用箭頭指示。下方為主頁(yè)面包含的底部菜單欄,用于在三大主頁(yè)面間進(jìn)行切換。圖4.7個(gè)人信息頁(yè)面4.1.8服藥歷史記錄查看頁(yè)面該頁(yè)面為服藥歷史記錄查看頁(yè)面。頂部有文字提醒該頁(yè)面顯示歷史服藥記錄。下側(cè)為該用戶對(duì)應(yīng)的歷史服藥記錄。每一條記錄都有四個(gè)部分,分別是名稱(chēng)、數(shù)量、備注和日期。前三項(xiàng)為用戶自行輸入的數(shù)據(jù),最后一項(xiàng)是精準(zhǔn)度到分的標(biāo)準(zhǔn)時(shí)間格式。mainRadioGroup.setOnCheckedChangeListRadioGroup.OnCheckedChangeLipublicvoidonCheckedChanged(RadioGroupImmersionBar.with(MainActivity.this).keyboardEnable(false).statusImmersionBar.with(MainActivity.this).keyboardEnable(false).statusBa0.2f).navigationBarColor(R.color.btn3).init();ImmersionBar.with(MainActivity.this).keyboardEnable(false).statusBa0.2f).navigationBarColor(R.color.btn3).init();}publicvoidshowFragmentFragmentTransactionft=getSupportFragmentManager().beginTransaction();planFragment=newPlaft.add(R.id.frameLayout,}bpFragment=newBloodPressurft.add(R.id.frameLayou}ft.add(R.id.frameLayouImmersionBar.with(this).keyboardEnable(false).statusBarDarkFont(false).navigationBarColor(R.color.colorPrimary).init();privatevoidhideFragments(FragmentTransac4.2登錄與注冊(cè)的實(shí)現(xiàn)用戶在初次登錄時(shí)或者手動(dòng)退出登錄之后需要進(jìn)行登錄,這時(shí)如果用戶沒(méi)有注冊(cè)時(shí)用戶需要輸入一對(duì)用戶名和密碼,用戶名可以是任意不超過(guò)100字符的字符串,但不能與已有用戶名重復(fù)。密碼則是一個(gè)不超過(guò)100字符的非空字符當(dāng)用戶輸入完成口點(diǎn)擊注冊(cè)按鈕(btn_register)后會(huì)觸發(fā)它的onclick函數(shù),此返回。若滿足均為非空串的條件下會(huì)執(zhí)行下一步,記錄下用戶名和密碼,建立用戶名注冊(cè)成功后會(huì)返回登錄界面。在登錄界面內(nèi),用戶需要輸入自己已經(jīng)庫(kù)進(jìn)行檢索,找到完全匹配的用戶名密碼對(duì)則成功登錄則提示用戶名或密碼錯(cuò)誤,請(qǐng)重試。核心代碼:注冊(cè)實(shí)現(xiàn):databaseHelper=newMyDatabaseHelper(this,"usebtn_register.setOnClickListener(newView.OnClickListen//為注冊(cè)按鈕綁定點(diǎn)擊事件的監(jiān)聽(tīng)if(StringUtils.getEditTextData(et_account).StringUtils.getEditTextData(e}if(StringUtils.getEditTextData(et_ac}if(StringUtils.getEditTextData(et_password}Stringusername=StringUtils.getEditTextData(et_account);Stringpassword=StringUtils.getEditTextData(et_password);SQLiteDatabasedb=databaseHelper.getWritableDatabase();Cursorcursor=db.rawQuery("select*fromuserwherename=?",newToast.makeText(RegisterActContentValuesvalues=newContenvalues.put("name",uservalues.put("password",passwdb.insert("user",nu//提示信息}}登錄實(shí)現(xiàn):publicvoidonViewCli//綁定點(diǎn)擊事件.//如果是登錄按鈕.if(StringUtils.getEditTextData(et_account).StringUtils.getEditTextData(et_}if(StringUtils.getEditTextData(et_ac}if(StringUtils.getEditTextData(et_password}Stringusername=StringUtils.getEditTextData(et_account);Stringpassword=StringUtils.getEditTextData(et_password);privatevoidLogin(Stringusername,Stringpassword){SQLiteDatabasedb=databas//在數(shù)據(jù)庫(kù)中查找對(duì)應(yīng)賬號(hào)密碼.Cursorcursor=db.rawQuery("select*fromuserwherename=?andpassword=?",newString[]{usernintuserld=cursor.getInt(cursor.getColumnIndex("id"SPUtils.put(LoginActivity.thSPUtils.put(LoginActivity.this,Intentintent=newIntent(loginActiv}}4.3服藥計(jì)劃編輯及鬧鈴設(shè)置的實(shí)現(xiàn)服藥計(jì)劃方面,我將每一個(gè)服藥計(jì)劃都當(dāng)作一個(gè)鬧鐘項(xiàng)來(lái)處理。對(duì)于服藥計(jì)劃,我設(shè)置了一個(gè)alarmBean,它的屬性id,userld,type,content1,content2,content3和time這幾項(xiàng)。方法則是每一項(xiàng)屬性的getter和setter函數(shù)。對(duì)于添加服藥計(jì)劃數(shù)據(jù)來(lái)說(shuō),在activity_add.xml中,我將添加按鈕賦予一個(gè)id:btn_add。此時(shí)頁(yè)面中存在4個(gè)數(shù)據(jù):et_01、et_o3、et_03、et_04。他們分別代表了名稱(chēng)、數(shù)量、備注和時(shí)間四項(xiàng)。這個(gè)xml所對(duì)應(yīng)的java文件為addalarmActivity.java。在java類(lèi)中,我使用了butterknife框架中的bindView來(lái)獲取數(shù)據(jù)和選中按鈕。該頁(yè)面中第四項(xiàng)的et_04為T(mén)extView,點(diǎn)擊后觸發(fā)onclick函數(shù)。函數(shù)中讀取當(dāng)前時(shí)間并記錄。然后這里我使用了android的DatePickerDialog和time函數(shù),將之前讀取到的時(shí)間自動(dòng)導(dǎo)入并修改來(lái)獲得用戶想要的時(shí)間組合。最后將分散的時(shí)間變量組合成時(shí)間字符串返回到et_04當(dāng)中顯示給用戶。該頁(yè)面中的btn_add按鈕在點(diǎn)擊后會(huì)觸發(fā)onclick函數(shù)。觸發(fā)后由于還在同一函數(shù)中組合得到的時(shí)間,將其轉(zhuǎn)換成date類(lèi)型再通過(guò)getTime方法轉(zhuǎn)換為鬧鐘需要的long型整數(shù)。最后通過(guò)alarmManager的am.setExact方法來(lái)設(shè)置一個(gè)精準(zhǔn)鬧鐘。設(shè)置好了鬧鐘之后要將該數(shù)據(jù)添加到數(shù)據(jù)庫(kù)存儲(chǔ)起來(lái),通過(guò)之前的處理我們可以得到時(shí)間字符串和之前獲取的et_01-et_03。id通過(guò)Sputils獲取一個(gè)id,type值為默認(rèn)的0。這樣就獲得了一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)單元。此時(shí)創(chuàng)建一個(gè)SQLiteDatabase類(lèi)型的數(shù)據(jù)來(lái)獲取數(shù)據(jù)庫(kù)db,再用db.insert將該數(shù)據(jù)插入數(shù)據(jù)庫(kù)中。calendar.setTimeInMillis(System.currefinalinttyear=calendar.gefinalinttmonth=calendar.get(Cafinalinttday=calendafinalinttmhour=calendar.gefinalintmminute=calendar.get(CalendanewDatePickerDialog(AddAlarmActivDatePickerDialog.OnDateSetLpublicvoidonDateSet(DatePicnewTimePickerDialog(AddAlarmActivity.this,newTimePickerDialog.OnTimeSpublicvoidonTimeSet(TimePickerview,intthoucalendar.set(Calendacalendar.set(Calendar.DAY_Ocalendar.set(Calendar.MIcalendar.set(Calendar.calendar.set(Calendar.MIcalendar.set(Calendar.HOUR_OF_DAY,thcalendar.set(Calendyearformat=format(tyear);monthformat=format(monhourformat=format(hourOfDay);minuteformat=format(minute);Strings=yearformat+"-"+monthformat+"-"+dayformat+""+hourformat+":"+minutefs3=yearformat+"-"+monthformat+"-"+dayfo}},mhour,mminute,true)dlongts=date.getTiRandomr=newRandom();Intentintent=newIntent(AddAlarmintent.putExtra("meds",et_01.getText().toStriPendingIntentsender=PendingIntent.getBroadcast(AddAlarmActivity.this,r.nextInt(),intent,PendingIntent.FLAG_UPDATE_CUamanager=(AlarmManager)getSystemServiceif(Build.VERSION.SDK_INT>=Build.VERSION_Camanager.setExact(AlarmManager.RTC_WA}}Stringtrim=et_01.getText().toStStringtrim_3=et_03.getText().toString().trStringtrim_2=et_02.getText().toStSQLiteDatabasedb=databaseHelper.getReadableDatabvalues.put("userld",(String)SPUtils.get(AddAlarmActivity.this,"userId",""));values.put("tips",trim_values.put("amount",trimdb.insert("alarm",nintent.setAction("f對(duì)于查看當(dāng)前服藥計(jì)劃來(lái)說(shuō),使用的頁(yè)面為fragm了兩個(gè)java文件:mainActivity和PlanFragment。其中mainActivity主要提供頁(yè)面查看服藥計(jì)劃主要代碼均位于PlanFragment.java文件中。首先是頁(yè)面創(chuàng)建時(shí)時(shí)由extends出的baseActivity調(diào)用的initData函數(shù),該函數(shù)會(huì)調(diào)用getData函數(shù)從中讀取各項(xiàng)數(shù)據(jù)再放入alarmbean中。當(dāng)我完成一個(gè)alarmbean之后fragment_plan頁(yè)面中的RecyclerView標(biāo)簽中。SQLiteDatabasedb=databaseHelper.getReadableDatabase();Cursorcursor=db.rawQuery("select*fromalarmwnewString[]{(String)SPUtils.get(getActivity(),"userId",""),"0"});while(cursor.moveToNexintid=cursor.getInt(cursor.getColumnIndex("id"Stringuserld_1=cursor.getStriStringtype_1=cuStringmeds=cursor.getString(cursor.getColumnIndex("meds"));Stringamount=cursor.getString(cursor.getStringtips=cursor.getString(cursor.getColumnIndex("tStringtime=cursor.getString(cursor.getColuadapter=newAlarmAdapter(getActivity(),R.layout.list_item_plrecyclerView.setAdapter(ada血壓數(shù)據(jù)在錄入時(shí)與去除了鬧鈴功能的服藥計(jì)劃數(shù)據(jù)的錄入過(guò)程幾乎完全一圖表和輸出,默認(rèn)時(shí)間段為包括當(dāng)天在內(nèi)的最近七天。在初始創(chuàng)建或點(diǎn)擊按鈕更匹配的數(shù)據(jù),找不到則置零。全部完成后調(diào)用initChartView函數(shù)完成對(duì)折線圖的渲染,使用adapter獲取預(yù)先設(shè)置好的血壓fragment_bloodpressure.xml頁(yè)面中的RecprivatevoidsetData(intprogress){SimpleDateFormatformat=newSimpleDateFormat("yyCalendarc=Calendar.getIc.add(Calendar.DATE,pList<Date>days=dateToWeek(d,progrlistString.add(format.fo}for(inti=0;i<liSQLiteDatabasedb=databaseHelper.getReadableDatabCursorcursor=db.rawQuery("select*frombloodpressurewhereuserld=?andtime=?",newString[]{(StSPUtils.get(getActivity(),"userId",""BloodPressureBeanbloodpressureBean=newBintid=cursor.getInt(cursor.getColumnStringuserld1=cursor.getString(cursor.getColumnIndex("Stringhbp=cursor.getString(cursor.gStringlbp=cursor.getString(cursor.getColumnIndex("Ibp"));Stringtime=cursor.getString(cursbloodpressureBean.setId(ibloodpressureBean.setUserld(userlbloodpressureBean.setTime(tbloodpressureBean.setHbp(hbbloodpressureBean.setLbp(lBloodPressureBeanbloodpressureBean=newBbloodpressureBean.setUserld((String)SPUtils.get(getActivity(),"userIdbloodpressureBean.setTime(listString.gebloodpressureBean.setHbp("0bloodpressureBean.setLbp("BloodPressureAdapter(getActivity(),R.layout.list_item_bloodpresrecyclerView.setAdapter(adapublicstaticList<Date>dateToWeList<Date>list=newArrayList<Date>();fdate.setTime(fTime+(a4.5過(guò)往服藥數(shù)據(jù)讀取的實(shí)現(xiàn)進(jìn)行渲染,再將其放入activity_history.xml中的RecyclerView中顯示。Stringuserld=(String)SPUtils.get(this,"userId","");db=databaseHelper.getReadaCursorcursor=db.rawQuery("select*fromalawhile(cursor.moveToNexintid=cursor.getInt(cursor.getColumnIndex("id"Stringuserld_1=cursor.getStriStringmeds=cursor.getString(cursStringtime=cursor.getString(cursor.getColuStringtips=cursor.getString(cursor.getColumnIndex("tStringamount=cursor.getString(cursor.getStringtype_1=cursor.getStlongl=System.currentTSimpleDateFormatsimplalarmBean.setMeds(meds);adapter=newAlarmAdapter2(HistoryActivity.this,R.layout.list_item_plan,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 景區(qū)旅游投訴處理制度
- 2026北京保障房中心有限公司法律管理崗招聘1人備考題庫(kù)及完整答案詳解
- 預(yù)防艾滋病乙肝梅毒相關(guān)制度
- 2026新疆水發(fā)水務(wù)集團(tuán)招聘6人備考題庫(kù)完整參考答案詳解
- 2026江西贛州市會(huì)昌昌興酒店管理有限責(zé)任公司招聘勞務(wù)派遣工作人員1人備考題庫(kù)及答案詳解(考點(diǎn)梳理)
- 2026廣東省公共衛(wèi)生醫(yī)學(xué)中心泗安院區(qū)招聘編外臨床工作人員3人備考題庫(kù)及答案詳解(易錯(cuò)題)
- 罕見(jiàn)腫瘤的個(gè)體化治療治療目標(biāo)設(shè)定原則與實(shí)施經(jīng)驗(yàn)
- 罕見(jiàn)腫瘤的個(gè)體化治療治療策略?xún)?yōu)化實(shí)踐
- 2026江蘇省人民醫(yī)院肺癌中心科研助理招聘1人備考題庫(kù)及一套完整答案詳解
- 征地補(bǔ)償費(fèi)財(cái)務(wù)制度
- 施工總平面布置圖范本
- 嬰幼兒輔食添加及食譜制作
- 安全生產(chǎn)標(biāo)準(zhǔn)化對(duì)企業(yè)的影響安全生產(chǎn)
- 關(guān)于若干歷史問(wèn)題的決議(1945年)
- 畢業(yè)論文8000字【6篇】
- 隨訪管理系統(tǒng)功能參數(shù)
- SH/T 0362-1996抗氨汽輪機(jī)油
- GB/T 23280-2009開(kāi)式壓力機(jī)精度
- GB/T 17213.4-2015工業(yè)過(guò)程控制閥第4部分:檢驗(yàn)和例行試驗(yàn)
- FZ/T 73009-2021山羊絨針織品
- GB∕T 5900.2-2022 機(jī)床 主軸端部與卡盤(pán)連接尺寸 第2部分:凸輪鎖緊型
評(píng)論
0/150
提交評(píng)論