ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:215.81KB ,
资源ID:3689223      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3689223.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(智慧养老系统信息监管软件的设计与实现第4章上.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

智慧养老系统信息监管软件的设计与实现第4章上.docx

1、智慧养老系统信息监管软件的设计与实现第4章上第4章 智慧养老系统信息监管软件的详细设计与实现围绕信息监管软件的需求和开发方案,结合隐性异常行为识别算法的研究,本章首先对软件各功能模块进行详细设计,然后根据需求明确了数据逻辑,设计并实现了信息监管软件数据库,在此基础上详细阐述了隐性异常行为识别算法和基于角色的访问控制技术的实现方法,最后对重要功能模块进行了具体论述。4.1 信息监管软件功能模块设计根据前文需求分析,本文采用层次化和结构化的设计思想,将软件分解为多个功能模块。图4.1为软件功能模块结构图,信息监管软件分为账户信息、老年人信息、实时定位、医疗健康、主动关怀、生活服务、娱乐活动、紧急事

2、件、智能分析和系统管理十个功能模块。图4.1 软件功能结构图1. 账户管理:包括信息管理、密码修改和退出登录三个子模块。信息管理提供账户基本信息的查询和修改操作;密码修改提供登录密码的修改操作;退出登录提供软件功能页面的退出操作。2. 老年人信息:包括审核信息、基本档案两个子模块。审核信息提供审核信息的添加、查询和修改操作,并提供待审核状态信息的同意申请和拒绝申请操作;基本档案提供老年人基本信息的查询和修改操作,系统管理员允许进行删除操作,此处的删除操作将清空该老年人所有的相关信息。3. 医疗健康:包括患者信息、在线咨询、在线回答三个子模块。患者信息提供老年人健康档案、服药记录、体检记录和就诊

3、记录四种健康相关信息的查询和修改操作,系统管理人员允许对患者信息进行删除,其中服药记录提供服药信息下发功能;在线咨询提供医务人员信息的查询和选择操作,选择完成后老年人可向医务人员进行留言;在线回答提供留言回复操作。4. 实时定位:包括定位信息和电子围栏两个子模块。定位信息提供老年人地理信息查询操作和地图显示;电子围栏提供电子围栏的显示、开启、修改和删除操作。5. 关怀计划:包括关怀管理、计划工单、历史记录三个子模块。关怀管理提供关怀信息的查询、修改、添加和删除操作,并提供关怀计划的添加操作,关怀计划添加成功以后会生成计划工单;计划工单提供关怀计划的查询、修改和删除操作,此处的删除操作将导致计划

4、工单取消;历史记录提供已完成关怀工单的查询操作。6. 生活服务:包括服务管理、服务选择、服务工单和历史记录四个子模块。服务管理提供服务信息的查询、修改、添加和删除操作;服务选择提供服务信息的查询和选择操作,系统管理员允许帮助老年人进行服务信息的选择,服务选择成功以后会生成待审批服务工单;服务工单提供工单信息的审批、查询、修改和删除操作,此处的审批操作通过以后将生成待执行服务工单,删除操作将导致服务计划取消;历史记录提供已完成状态的服务工单查询操作,老年人允许对工单进行评价。7. 娱乐活动:包括活动管理、活动参与、活动工单和历史记录四个子模块。活动管理提供活动信息的查询、修改、添加和删除操作;活

5、动参与提供活动信息的查询操作,并提供活动的选择操作,系统管理员允许帮助老年人进行活动的选择,活动选择成功以后会生成活动工单;活动工单提供待完成状态的活动计划的查询、修改和删除操作,老年人的删除操作将导致自己退出活动计划,系统管理员的删除操作将导致活动工单取消;历史记录提供已完成活动工单的查询操作,老年人允许对工单进行评价。8. 紧急事件:包括事件管理、救援工单和历史记录三个子模块。事件管理提供紧急事件信息的查询、修改、添加和删除操作,并提供救援计划的添加操作,救援计划添加成功以后将生成救援工单;救援工单提供待救援计划的查询、修改和删除操作,此处的删除操作将导致救援计划取消;历史记录提供已完成救

6、援工单的查询操作。9. 智能分析:包括人员管理、状态管理和参数设置三个子模块。人员管理提供参与预测人员信息的查询、修改、添加和删除操作;状态管理提供预测状态的暂停和恢复操作;参数设置提供数据分析进程的工作参数下发操作。10. 系统管理:包括用户管理、角色管理、等级管理、黑名单管理、知识库管理、投诉管理和系统日志七个子模块。用户管理提供用户信息的查询、添加、修改、删除操作,此处的删除操作将清空该人员的所有相关信息;角色管理提供角色属性的查询、添加、修改、删除操作,此处的删除操作只允许在目前角色无人担任的情况下进行;等级管理提供紧急事件等级的查询、添加、修改和删除操作;黑名单管理提供黑名单人员信息

7、的查询、添加、修改、删除操作;知识库管理提供知识库数据的管理操作;投诉管理提供投诉信息的查询、添加、修改、删除操作;系统日志提供每种角色的操作记录的查询操作。4.2 数据库的设计与实现4.2.1 数据库设计1. 实体-联系模型设计实体-联系模型又称E-R(Entity-Relationship)模型44,它提供了实体类型、属性和联系之间的表达方法。在信息监管软件中,通过建立E-R模型,可以清晰表达各实体之间的联系,明确角色与业务之间的关系,为数据库表格的设计提供了逻辑支持。结合软件功能模块的划分,本文设计系统的E-R模型如图4.2所示。图4.2 E-R模型图2. 数据库表格设计根据E-R模型,

8、参照关系型数据库设计三范式45,确定表格字段的数据类型、名称、约束、缺省值和字段说明。本文采用MySQL数据库管理系统创建数据库wps_infomonitor,共设计91张数据库表格,出于篇幅限制,下面只列出主要的12张数据库表格,如表4.1所示。表4.1 信息监管软件主要信息表汇总编号数据库表名数据表描述1wps_user_info存储账户基本信息2wps_elder_info存储老年人基本信息3wps_med_info存储老年人健康信息4wps_ med_messege存储在线咨询信息5wps_pre_data存储老年人预测数据6wps_location存储老年人定位信息7wps_acti

9、vecare存储主动关怀工单8wps_service存储生活服务工单9wps_leisure存储娱乐活动工单10wps_urgent存储紧急事件工单11wps_active_data独居老年人行为数据12wps_pre_data独居老年人预测数据本文以老年人基本信息表和生活服务工单表为例说明数据库表格的结构设计。表4.2为老年人基本信息表wps_elder_info,表4.3为生活服务记录表wps_service。表4.2 老年人基本信息表结构字段字段类型为空约束缺省值字段说明elder_idchar(7)no主键老年人编号namevarchar(32)no姓名agetinyint(4)no年

10、龄gendervarchar(8)no性别ethnicitychar(20)no民族maritalstatustinyint(1)no婚姻状况identitychar(18)no身份证号telchar(11)no手机号码addressvarchar(128)no家庭住址adlongitudechar(11)no家庭地址经度adlatitudechar(11)no家庭地址纬度iserailtinyint(2)no0电子围栏标识radiusint(11)no0电子围栏半径preflagtinyint(2)no0行为预测标识servicegrade_idtinyint(3)no外键0服务等级 ser

11、vicestatustinyint(3)no0服务状态sibnamevarchar(32)no亲属姓名sibtelchar(11)no亲属联系方式sibaddressvarchar(128)no亲属家庭地址chronicvarchar(128)no无慢性病状况disablestatsvarchar(128)no失能状况checkedtinyint(1)no0是否已经审核user_idint(11)yes外键审核人编号checkedtimedatetimeyes审核时间remarktextno无备注信息createtimedatetimeno当前时间创建时间wps_elder_info表存储老年

12、人基本信息,包括姓名、性别、证件类型、证件号、电话、服务等级等字段。其中elder_id为表格主键,用以标识老年人身份, servicegrade_id和user_id为表格外键,用以关联服务等级信息和审核人信息等相关信息。表4.3 生活服务工单表结构字段字段类型为空约束缺省值备注service_idint(11)no主键服务工单编号info_idsmallint(6)no外键服务信息编号表4.3 生活服务工单表结构(续)字段字段类型为空约束缺省值备注elder_idchar(7)no外键老年人编号server_idchar(7)no外键服务人员编号addressvarchar(128)no服

13、务地址timedatetimeno服务时间status_idtinyint(1)no外键0工单状态编号remarktextyes服务备注说明evaluate_idtinyint(1)yes外键评价等级编号createtimedatetimeno当前时间工单创建时间reviewedtimedatetimeyes工单审批时间feedbacktimedatetimeyes工单反馈时间wps_server表存储老年人基本信息,包括服务工单编号、服务类型编号、老年人编号、服务人员编号等字段。其中service_id为表格主键,用以标识服务工单,info_id、elder_id、server_id、sta

14、tus_id、evaluate_id和为表格外键,用以关联服务信息、老年人信息、服务人员信息、工单状态和评价等级。4.2.2 数据库连接与操作信息监管软件的开发框架为CI框架,其提供了一个简单的数据库访问接口。该接口采用Active Record模式,能够以精简的代码完成对数据库的多种操作。在使用访问接口之前,需对连接属性进行配置,包括数据库地址、数据库账号、密码、数据库名等,配置文件路径为application/config/database.php。用户访问数据库时,控制器通过调用database()载入数据库类,获取连接属性,完成数据库连接操作,然后即可调用Model类文件完成数据库读写

15、操作。在实际研发过程中,为了避免重复的数据库SQL语句编写,通过自定义模型的方式封装常用数据库操作。封装完成以后,控制器只需调用自定义模型,即可实现数据库的复杂操作。4.3 独居老年人隐性异常行为识别算法实现独居老年人的隐性异常识别是通过数据分析进程来实现的。由于异常识别是一种需要长期循环执行的数据分析任务,而且用户不关心算法的具体运行过程,只关心执行结果的输出,因此在信息监管软件中,数据分析进程以Windows服务46的形式运行。考虑到研发难度和熟练度的问题,数据分析进程采用C+语言进行研发,研发工具为VisualStudio 2012。信息监管软件与数据分析进程的关系如图4.3所示。图4.

16、3 信息监管软件与数据分析进程关系由上图可知,数据分析进程中存在如下三种工作任务:1. 行为预测:从数据库获取历史数据和天气数据,完成行为预测,将预测数据添加至数据库中。2. 异常识别:获取预测数据、实测数据和天气数据,进行异常识别。根据异常等级添加风险警报。3. 指令接收:接收信息监管软件的控制指令,完成指令解析,执行控制指令。在本节中,将主要阐述数据分析进程的工作流程,其中将重点阐述行为预测和异常识别的具体实现方法。4.3.1 数据分析进程实现 图4.4为数据分析进程的整体业务流程图。在整体业务流程中,共创建了主线程、服务线程、指令接收线程、行为预测线程和异常识别线程五种线程执行不同的任务

17、。下面将逐一介绍每个线程的主要任务。其中行为预测线程和异常识别线程的具体实现将在4.3.2节进行阐述。图4.4 数据分析进程的整体业务流程1. 主线程与其他类型的程序不同,Windows服务程序的主线程一般情况下不负责业务流程的执行。其主要任务是初始化一个SERVICE_TABLE_ENTRY分派表结构体的对象数组,然后将对象数组的首地址作为形参传入StartServiceCtrlDispatcher()。StartServiceCtrlDispatcher()负责把程序主线程连接到服务控制管理器,完成服务入口点函数注册。StartServiceCtrlDispatcher()执行成功以后,服

18、务控制管理器将为分派表结构体中的每个非空元素创建一个新的线程,即服务线程,执行分派表中的服务入口点函数。服务线程创建成功以后,主线程结束。2. 服务线程在Windows服务程序中,服务线程是控制业务流程的核心线程。在服务线程中,主要有以下两个任务:(1) 完成Windows服务的初始化工作。进入服务线程以后,调用RegisterServiceCtrlHandler()通知服务控制管理器,完成控制处理函数的注册。控制处理函数是一个回调函数,它的主要功能是接收服务控制管理器发出的控制指令,通过控制指令去改变服务状态。每个服务线程必须配备一个相应的控制处理函数。RegisterServiceCtrl

19、Handler()执行成功后,获得SERVICE_STATUS_HANDLE类型的句柄,服务控制管理器使用该句柄来标识数据分析进程。将该句柄和SERVICE_STATUS结构体对象作为形参传入SetServiceStatus(),更新服务控制管理中数据分析进程的状态信息,完成Windows服务的初始化工作。(2) 完成工作任务的流程控制。在三种工作任务中,行为预测和异常识别为定时执行的任务,其工作线程在规定时间创建,完成任务后工作线程退出;指令接收为循环执行的任务,其工作线程在创建后会以“等待连接-建立连接-结束连接-等待连接”的方式工作,不会主动退出。所以,工作任务的流程控制可分为以下三步:

20、第1步:从wps_pretime表中获取行为预测线程创建时间string pT1和异常识别线程创建时间string pT2;若返回的结果集为空,则默认pT1=“2:00:00”和pT2=“0:30:00”。第2步:调用_beginthreadex(),完成指令接收线程的创建工作。第3步:进行流程控制。判断队列容器queue Que中是否存在控制指令,控制指令格式为“CommandHeader/time/end”。在若存在控制指令,则根据“CommandHeader”字段和“time”字段的具体内容对pT1或pT2进行修改;若没有控制指令,则进行下一个步骤。获取当前时间string sT。判断s

21、T和pT1、pT2是否拥有相同子串。若有相同子串,则创建工作线程执行相应工作任务,创建完成后延时1秒防止下一轮循环中再次触发相同条件;若没有相同子串,则直接进入下一轮循环。值得注意的是,队列容器queue Que是全局对象,在服务线程和指令接收线程中均涉及到Que的操作。为了防止多个线程同时对Que进行操作,在程序中使用了关键代码段CRITICAL_SECTION对象cs对Que的访问权进行了保护。在对Que进行操作之前,调用EnterCriticalSection()进行加锁,判断是否能得到cs的所有权,若无法得到所有权,则线程会一直等待,直到获取cs的所有权;若得到所有权,则进入关键代码段

22、中访问Que。访问完成后,调用LeaveCriticalSection()释放cs所有权,即解锁,此时其他线程就可以得到cs的所有权,从而完成对Que的操作。3. 指令接收线程指令接收线程是数据分析进程与信息监管软件的主要通信接口。其业务流程如图4.5所示。图4.5 指令接收线程业务流程其中指令接收线程为通信服务端,信息监管软件为通信客户端。所以,在指令接收线程中需实现以下两个主要功能:(1) 命名管道服务端的创建。命名管道服务端的创建流程如下:第1步:创建命名管道:CreateNamedPipe()。第2步:等待客户端连接:ConnectNamedPipe()。第3步:读取客户端发送数据:R

23、eadFile()。第4步:向客户端回复数据:WriteFile()。第5步:关闭连接:DisconnectNamedPipe()。第6步:关闭管道:CloseHandle()。在步骤3中,如果客户端连接以后未发送数据,ReadFile()会以同步的方式等待接收数据,导致线程阻塞。所以应使用异步方式进行方法调用,在规定时间内接收客户端数据。具体实现步骤如下:第1步:调用CreateEvent(),创建初始状态为无信号的事件对象hEvent;初始化规定时间int num=500,单位为毫秒。第2步:初始化OVERLAPPED结构体对象OV,将hEvent赋值给OV.hEvent。第3步:将OV作

24、为形参传入ReadFile(),即使用异步方式调用ReadFile()。第4步:将hEvent和num作为形参传入WaitForSingleObject(),获取该函数返回值int Result。第5步:判断Result值,若Result=WAIT_OBJECT_0,则说明hEvent处于有信号状态,即接收到数据;若Result=WAIT_TIMEOUT,则说明hEvent在设定的500毫秒内均处于无信号状态,即500毫秒内未收到数据,此时向客户端返回数据接收错误标识“ERROR”。(2) 进行控制指令的初步解析,将控制指令存放于队列容器Que中。在Result=WAIT_OBJECT_0的条

25、件下,解析接收数据,若为预定义控制指令,则将控制指令存入Que中;若不为预定义控制指令,则向客户端返回数据接收错误标识“ERROR”。与服务线程中一样,此处也通过加锁和解锁保护全局对象Que的访问权。4. 行为预测线程行为预测线程是实现独居老年人行为预测的核心线程。其业务流程如图4.6所示图4.6 行为预测线程业务流程进入入口点函数,获取当前日期string Date;从wps_prelist表中获取待预测老年人编号,存入vector e_buff;从wps_pause_prelist表中获取暂停预测老年人编号和暂停日期区间,存入vector p_buff。p_buff数据成员格式如下:Pau

26、seID/DateStart/DateEnd/end,其中DateStart标识暂停起始日期,DateEnd标识暂停结束日期。获得e_buff和p_buff以后,首先遍历p_buff,按顺序进行如下两种判断:(1) 判断Date是否大于p_buff成员DateEnd字段。若大于,则说明此条暂停预测记录已经过期,调用p_buff.erase()删除此条记录,同时删除wps_pauseprelist表相应记录。(2) 判断Date是否小于p_buff成员DateStart字段。若小于,则说明此条暂停记录还未到执行时间,调用p_buff.erase()删除此条记录。完成上述两个步骤以后,遍历e_bu

27、ff,判断p_buff与e_buff中是否有相同ID的元素,若存在,则说明此老年人暂时不参与下一周的预测任务,调用e_buff.erase()删除此条记录,同时将wps_pre_data表中该老年人当天的预测值均更新为-1,表示该老年人未参与行为预测。此时e_buff中元素即为参与当天预测的老年人编号,再次遍历e_buff,获取老年人的历史数据,完成行为预测。行为预测任务的具体实现将在4.3.2节论述。5. 异常识别线程异常识别线程是实现独居老年人异常识别的核心线程。其业务比较单纯,只需从数据库获取数据进行异常识别,输出识别结果。异常识别任务的具体实现将在4.3.2节论述。4.3.2 行为预测

28、和异常识别具体实现行为预测线程和异常识别线程是具体实现独居老年人隐性异常行为识别算法的线程。在具体实现中,共涉及5张数据库表:wps_active_data、wps_weather、wps_weather_weight、wps_pre_data和wps_active_type。wps_active_data负责存储独居老年人每天5种活动的活动时长;wps_weather负责存储每天的舒适度等级和降雨量等级;wps_weather_weight负责存储独居老年人的舒适度权值序列和降雨量权值序列;wps_pre_data负责存储独居老年人5种活动的预测数据;wps_active_type负责存储活

29、动类型和对应编号。由于篇幅所限,本节只给出wps_active_data和wps_weather_weight两张表的表结构设计,如表4.4和表4.5所示。表4.4 wps_active_data表结构字段字段类型为空约束缺省值备注idchar(7)no外键老年人编号datedateno日期sleepint(11)yes睡觉时长siestaint(11)yes午休时长toiletint(11)yes上厕所时长mealint(11)yes吃饭时长beoutint(11)yes外出时长表4.5 wps_weather_weight表结构字段字段类型为空约束缺省值备注idchar(7)no外键老年人编号type_idtinyint(2)no外键活动类型create_datedateno权值序列生成日期ssdmfourdecimal(6,2)no-4级舒适度权值ssdmthreedecimal(6,2)no-3级舒适度权值ssdmtwodecimal(6,2)no-4级舒适度权值ssdmone

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1