版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE25摘要在信息技术不断发展的背景下,充分利用计算机的先进管理方式可以替代人工方式带来的不足。例如耗时、成本高、数据维护困难、数据容易丢失等。本次利用数据库工具SQLServer和JSP编程技术来开发个人健康管理系统。系统主要使用JAVA作为开发语言,是一个基于Web技术的B/S结构系统,支持运行环境MicrosoftWindows7及以上版本。管理员主要实现录入信息、管理医生、用户、发布健康资讯等功能。医生主要查看和回复用户。用户可以查看医生信息并在线咨询医生等。个人健康管理系统是基于计算机进行的数据处理,可以在短时间内完成批量数据的管理,即使是基础数据的录入、错改数据、统计数据等操作要求也可以轻松完成,使用这样的系统不仅减少了大量的人工工作量,更加节省了数据处理投资的资金和时间。关键词:健康服务管理;管理用户;咨询医生;健康信息体检AbstractUnderthebackgroundofthecontinuousdevelopmentofinformationtechnology,theadvancedmanagementmodeofmakingfulluseofcomputercanreplacethedeficiencybroughtbymanualmode.Forexample,timeconsuming,highcost,difficultdatamaintenance,easydatalossandsoon.TheuseofdatabasetoolsSQLServerandJSPprogrammingtechnologytodeveloppersonalhealthmanagementsystem.ThesystemmainlyusesJAVAasthedevelopmentlanguage.ItisaB/SstructuresystembasedonWebtechnology.ItsupportsMicrosoftWindows7andaboveversionsoftheoperatingenvironment.Theadministratormainlyrealizesthefunctionsofinputtinginformation,managingdoctors,users,releasinghealthinformationandsoon.Thedoctormainlyviewsandrespondstotheuser.Userscancheckdoctorinformationandconsultdoctorsonline.Personalhealthmanagementsystemisbasedoncomputerdataprocessing,canbefinishedinashorttimebatchdatamanagement,eventhebasicdataentry,changethewrongdata,statisticsandotheroperationrequirementscanalsobedoneeasily,useofsuchasystemnotonlyreducetheworkloadofalotofartificial,moresavemoneyandtimeofinvestmentinthedataprocessing.Keywords:Healthservicemanagement;Manageusers;Consultyourdoctor;Healthinformationphysicalexamination目录TOC\o"1-3"\h\u20152摘要 121986Abstract 2231231绪论 674591.1研究背景 6190641.2研究目的和意义 6283171.3国内外研究现状 754951.4研究内容 7245712开发环境及相关技术 862462.1JSP技术 8265482.2SQLServer2008 837852.3JAVA语言 978023系统分析 9217073.1可行性分析 9258893.1.1操作可行性分析 9122733.1.2经济可行性分析 10232893.1.3技术可行性分析 10314023.2系统流程分析 10121993.2.1用户注册流程图 11125953.2.2用户登录流程图 11299443.2.3信息添加流程图 1247613.3系统性能分析 13308073.3.1系统安全性分析 13242973.3.2系统维护性分析 13104303.3.3系统功能分析 13173604系统设计 16300414.1系统架构设计 16212974.2功能模块设计 16128644.2.1管理员功能结构设计 17316164.2.2医生功能结构设计 17153374.2.3用户功能结构设计 17306914.3数据库设计 1859564.3.1数据库结构设计 1877824.3.2数据库表结构 21316485系统实现 24257985.1管理员功能实现 24237505.1.1健康资讯管理 24308795.1.2医生信息管理 25325015.1.3系统会员管理 25281635.2医生功能实现 26111635.2.1查看咨询信息 26245105.2.2回复用户咨询 2753795.3用户功能实现 27304255.3.1每日记录管理 27103245.3.2体检信息管理 28151325.3.3医生资源信息 28185735.3.4健康教育活动记录 29236996系统测试 306136.1系统测试的实施 30262236.2系统功能测试 3021116.2.1登录功能测试 3035116.2.2注册功能测试 31323916.3测试结果分析 318862结论 329270参考文献 338577致谢 34附录361绪论1.1研究背景当今已经进入互联网发展的信息时代。随着信息发展的飞速,单靠人工处理是不能迅速完成大量工作的,毕竟人工处理大量的数据会耗费较长时间,而且数据的错误率也会提升。另外,在检索数据时也是一种既浪费能源,又消耗时间的事情[1]。因此,引入最新的信息技术开发系统去解决传统管理模式带来的各种困扰已逐渐成为一种新的趋势。本次开发的是个人健康管理系统,让个人健康信息的管理去依赖于计算机,包括输入健康信息,发布、维护健康信息等都在计算机上操作。在优化信息管理系统的过程中,可以在此基础上进一步的进行实现信息管理的规范化、系统化。从而使得个人健康信息的管理人员摆脱复杂繁琐的工作,提高自身应用能力和管理能力,最大限度地发挥个人健康管理系统的作用,从而产生更大的效率。1.2研究目的和意义个人健康管理系统的出现可以解决传统模式带来的问题,如传统模式不能处理大量的数据、效率低、耗时长、并且浪费大量人力物力、数据易出错等。个人健康管理系统是基于计算机的数据处理,即可以在短时间内完成对数据的管理,甚至可以轻松完成基础数据的录入、管理数据、统计数据等操作要求,使用这样的系统可以减少很多繁琐的工作量,让数据管理人员提高工作效率,可以节省数据处理的资金和时间。同时,个人健康管理系统自身也有一个支持的数据库,以便用来保存系统的后台数据。这种数据存储的容量是传统模式无法比拟的。在数据安全方面,有相应的加密技术提供保护,因此不易发生数据泄露和被盗等状况。另外,个人健康管理系统可以对操作者输入的数据进行实时检查,能够及时的反馈错误信息,提高输入数据的准确性,可以充分保证系统数据的可靠性[2]。总之,个人健康管理系统,够完成数据的高效处理,是一个可靠的操作系统。1.3国内外研究现状国内:目前中国人民对健康的重视度还不够,而且从事健康管理方面的专业人员非常短缺,其实早在05年中国就有近百人考取了健康管理师这门职业,但是对于健康方面的权威人员还是非常紧缺的。就目前来看健康管理这门行业的潜力是巨大的,国家也在积极宣传健康管理的重要性,一些以健康为主的公众号以及健康平台也进入了大众的视线中,本系统就是针对有想初步体验健康管理的人群所建立的,在家就可以咨询医生以及查看健康方面的资讯,这点对于上班族也是及其友好的。国外:健康管理这个词汇是近几十年才流行起来的,但是国外的健康管理理念一直领先于中国,尤其是美国的健康管理理念受到了美国政府的重视,并且美国的健康理念在全世界也是遥遥领先的。2010年起,日本就大力宣传健康管理理念,对于本就注重健康管理的日本人来说这并不难实施。在德国和芬兰也有着对于健康管理不同形式的策划与实施例如提出以病人为中心以员工健康为重点等理念。1.4研究内容本系统用JAVA作为主要开发语言,对于国内外健康管理理念以及健康管理相关的软件以及公众号作为基本参考,从而设计出个人健康管理系统,本文共分为六章,对个人健康管理系统的描述,将按照如下章节进行。第一章:根据前期的研究成果,以及对参考资料进行了分析和总结,从而进一步明确本系统研究的背景和意义。第二章:通过对现有开发技术分析的基础上,确定了开发语言和开发工具,从而进行系统的开发。第三章:在用户需求的基础上,结合同类系统的功能,分析确定了系统的功能,并分析了系统开发的可行性。第四章:在第三章的基础上,对系统功能进行了进一步的细分,对系统的各个模块进行了功能设计,同时对系统的支撑数据库也进行了设计。第五章:在第四章的基础上,利用编程技术实现个人健康管理系统的所需功能。第六章:是系统测试部分。从登录功能测试,注册功能测试,测试结果分析来测试系统并得出结论。2开发环境及相关技术个人健康管理系统的开发是建立在一定的编程环境下,所以使用的工具和技术都有相应的要求,下面将介绍本系统中使用的工具和技术。JSP技术JSP里可以用JAVA语言写在标记内。可以混合HTML语言以及XHTML语言代码进行混合编辑。编写JAVA语言的代码需要用特殊符号标记起来,用“<%”作为开始,中间书写JAVA语句,以“%>”作为结束标签,必须是有开头和结尾的,不然会编译是会出错的,必须是成对出现也是必须有闭合的[3]。JSP可以处理表单数据,因为JSP也算是一种Servlet,把数据提交给Servlet处理也是可以的。其实对于用户来说,实现动态数据页面就可以的,但是后台也需要一些数据处理,JSP技术就可以做到数据处理。JSP可以通过JDBC直接操作数据库,并在页面上显示数据,记录用户的访问信息和选择信息,并使用JavaBean组件。它还可以通过会话在不同的网页上传递信息和共享相关信息[4]。动态网页有很多规范和标准,比如CGI规范或者ISAPI规范等。这些标准是固定的,但是JSP技术比CGI更规范、更强大。例如,JSP的性能比CGI好,因为JSP文件中可以嵌入许多元素。如果有那么多的元素,使用CGI时将变成大量的文件。受硬盘读写效率的限制,时间越短越好,能耗得越低才是最完美的。JSP就是JavaEE中不可缺少的一部分。SQLServer2008本系统应用的是SQLServer数据库。SQLServer是一个关系数据库管理系统,因为SQLServer数据库一直是微软研究的商业产品。随着中国市场的增加,微软在客户体验方面也做了不少的优化。微软的官方网站上有很多中文版的数据库学习资料,网上也有很多关于数据库操作的书籍。在大家熟悉的Windows程序开发平台中,选择SQLServer数据库自然成为首选。从学习的角度来看,由于以前对SQLServer数据库进行过浅显的运用,从而也想进一步的熟悉并使用SQLServer数据库。另一方面,SQLServer数据库的功能与其他数据库相似,能够实现所需的数据操作功能并且操作简单,因此选择SQLServer数据库作为本程序所应用的数据库。JAVA语言JAVA语言发展有二十多年了,经过互联网行业经过这么多年的发展,它仍然占据了一半的市场份额,仍然受到很多使用者的喜爱。随着互联网从业人员的增多,JAVA在语言世界上的地位并没有降低,可以被视为语言界的“不老树”。JAVA语言学习并没有很难,当然这是针对于前辈C++来讲的,C++语言相当的强悍[5]。JAVA取消了很多C++特征,比如goto这些语句,并且取消了主文件,因此所有文件都是带有数组和各种对象的类。JAVA自带“垃圾回收”来防止泄漏和其他相关的储存以及动态内存分配造成的锁死等现象。在性能方面,JAVA自可以实现自动处理对象的引用,然后处理自动无用单元收集,这样使得开发人员只需要创建对象,使用对象,编辑代码逻辑,不需要去关注它的性能。选择让JAVA处理各种数据,这样程序员就可以花更多的时间研究应用和程序之间的关系,使开发更加的集中。从以上来看JAVA是一种实用的编译语言,同时操作方便易于编写。因此设计过程不是非常的复杂就可以产生优秀的代码。3系统分析3.1可行性分析一个系统能否发展,能否带来效益,都是需要进行提前分析的。而可行性研究就是对这些问题进行分析,并得出这个环节在项目发展中是否起着重要作用的结论。3.1.1操作可行性分析系统的运行环境是利用率高的软件,通过网络教程就可以下载并安装,其次,系统对运行设备的要求较低,可以使用4GB内存的计算机。随着当前硬件设备的升级,几乎所有的计算机都有8GB的内存,因此运行的设备也满足了使用程序的要求。本系统不用于处理类似于商业软件的各种信息和内容,所以占用空间较小。大多数计算机都能运行。3.1.2经济可行性分析经济可行性分析主要分析系统的经济效益能否超过系统自身的开发成本。在任何项目开发之前,其经济可行性都是值得探讨的问题。本次项目个人健康管理系统的数据处理相对简单,管理的数据量也相对较少。因此,项目的开发周期不会耽误很长时间,项目开发成本也不高。另外,本项目需要管理的数据量较少,性能条件一般的计算机都能够满足本项目的运行要求。从后期管理成本来看,项目管理成本不高。但项目一旦投入使用,将给用户带来一定的效益,同时也节约了信息管理的成本。如此一来,这样一个投资成本低,却能带来诸多效益的项目,个人健康管理系统在经济上是可行的。3.1.3技术可行性分析技术上的可行性分析主要分析现有的条件以及技术是否可以顺利展开后续的工作。随着互联网的快速发展,与互联网有关的程序也逐渐被广泛关注,尤其是著名的以B/S为结构的程序,再加上JSP技术的发展与成熟度,现在可以快速使用模块化代码来开发基于B/S结构的项目程序[6]。JAVA也是学习过的内容,所以技术操作并没有太大的困难。通过对系统运行、经济技术可行性分析来看,开发个人健康管理系统是十分必要的,这样不仅使得管理信息计算机化,还可以缩短数据处理所消耗的时间,从而提高工作效率。3.2系统流程分析本系统在完成数据处理后,其内部也都设置了相应的处理流程。如注册数据的最终去向以及对每个数据的判断等,这些都是事先进行分析的,然后在编码时,将判断逻辑写入系统。当系统面临相同的事务处理需求时,执行相应的逻辑处理规则。3.2.1用户注册流程图目前,在很多系统中,除了编码时提前写入管理员的登录信息外,其他用户的数据大多通过注册写入系统,这样注册用户的数据就可以保存在数据库中。注册功能其对应的流程如下。只有每项必填数据都符合要求,用户的资料才会被数据库保存。用户注册流程图如3-1所示。图3-1用户注册流程图3.2.2用户登录流程图在本系统的数据库中,所有用户的信息都会保存在一张数据表中,这意味着用户数据表中的用户名和密码可以用于系统的登录功能。用户提交的登录信息是必需填写的,不能省略,进入功能操作区前,数据格式和内容必须准确。用户登录流程图如图3-2所示。图3-2用户登录流程图3.2.3信息添加流程图本系统存储的数据具有参考价值,因此在录入数据时,必须保证数据的准确性,所添加的信息需要进行判断才可以进行操作,这些数据只有在检验合格后才由数据库保存。信息添加流程图如图3-3所示。图3-3信息添加流程图3.3系统性能分析3.3.1系统安全性分析一个系统的安全与否直接影响到用户的使用。系统安全性体现在数据的保密性上。通常,很多系统都配备了游客登录或注册功能。无论是登录时使用的账户密码,还是用户注册生成的私有数据,都是系统中宝贵的资源。一旦数据泄露,一些不法人员就会从中谋取利益,或者通过用户注册留下的电话骚扰用户,给用户带来身心伤害。因此,密钥数据通常是直接加密的,这样可以始终保持数据的安全性[7]。3.3.2系统维护性分析系统在长期使用中难免会出现一些问题。因此,在处理这些问题时,可以对系统进行一些修改。系统变更的难度反映了系统是否易于维护。一般来说,当一个系统易于维护时,它将更加易于更改,并将节省大量的时间和金钱。3.3.3系统功能分析本系统的功能不会像市面上的商业程序那样复杂,所提供的功能只能满足目标用户进行一般的操作系统内容并浏览以及一些简单的信息处理功能。管理员录入医生信息,发布健康资讯,管理系统用户,管理医生和管理健康资讯等,用户和医生也分别有不同的操作功能,如图3-4至3-6所示。1.管理员用例图管理员具有修改密码,添加删除信息等功能。管理员用例图,如图3-4所示。图3-4管理员用例图医生具有查看、回复用户功能。医生用例图,如图3-5所示。图3-5医生用例图3.用户用例图用户具有管理、添加每日记录,添加体检信息,咨询医生等功能。用户用例图,如图3-6所示图3-6用户用例图4系统设计个人健康管理系统分为普通用户,管理员,医生这三种权限。管理员身份具有会员信息管理、健康资讯管理、医生信息管理,发布健康资讯、修改个人密码等功能。普通用户注册一个系统账号后登录系统,可以管理自己的健康信息,包括每日记录管理,体检信息管理,健康教育活动记录,健康资讯信息浏览,浏览医生信息,在线咨询医生等。医生身份具有查看和回复用户的咨询问题等功能。4.1系统架构设计页面的布局需要对系统的各个模块进行划分,然后根据这些模块的重要性进行布局,还需要关注用户关心的关键信息,采用合理的布局,传达系统想要表达的信息内容,还可以让用户快速高效地获得所需的信息。版面设计虽然是页面设计的核心,但也要注意页面内容的协调、统一和平衡性[8]。布局设计也要考虑基本原则,接下来的内容就对此进行阐述。第一点:参照系统要求,对系统内容进行划分,根据不同的重要性进行布局,并在同一区域内展示相似或相近的信息内容,使访问者能够更顺畅地阅读信息;第二点:页面中比较重要的区域是左侧的位置,所以这部分区域应该放系统中比较重要的模块,毕竟这部分区域可以吸引用户的注意力,让用户进入页面,就可以找到自己需要的信息。对于一些次要的模块,它们可以放在页面的底部和右侧。只有这样才能发挥页面设计的实用性;第三点:根据用户习惯设计页面。虽然大多数用户都有共同的操作特点,但它们之间还是有区别的。影响用户操作习惯的常见因素有:年龄、学历、职业、性别等。所以设计时也在考虑用户的共性特征,也需要尽量尊重用户的不同习惯。4.2功能模块设计功能模块也是不可缺少的部分,它能够清晰的展示出不同功能所拥有的不同作用。下面为系统的功能设计,管理员可以录入医生信息,发布健康资讯,管理系统会员,管理医生和健康资讯等,医生可以回复和查看用户资讯,用户可以资讯医生以及管理体检信息等功能。4.2.1管理员功能结构设计设置管理员可以录入医生信息发布健康资讯,管理系统会员,管理医生和健康咨询等。管理员功能结构图,如图4-1所示。图4-1管理员功能结构图4.2.2医生功能结构设计医生主要实现了查看用户咨询,回复用户咨询功能。医生功能结构图,如图4-2所示。图4-2医生功能结构图4.2.3用户功能结构设计用户需要管理每日记录,管理体检信息,登记健康教育活动信息,查看医生信息并在线咨询医生,查看健康咨询信息。用户功能结构图,如图4-3所示。图4-3用户功能结构图4.3数据库设计个人健康管理系统选用关系数据库作为程序的后台,之所以选择关系数据库主要还是因为它使用方便,维护数据方便,特别是是它具备了强大的SQL查询语言[9]。数据库不仅能更加方便程序的书写另一方面也提高了程序的质量。4.3.1数据库结构设计这部分内容需要根据用户需求当中的数据信息进行仔细的拆分和分析,并从这些数据中标识出E-R模型需要使用的数据,包括实体、实体拥有的属性以及基于实体的关系[10]。使用这种方法不仅可以节省数据库设计的时间,而且可以直观地表达设计内容及其相互之间的关系。1.医生实体属性图设计的医生实体,其具备的属性如下图4-4所示。图4-4医生实体属性图2.健康教育活动实体属性图设计的健康教育活动实体属性图,其具备的属性如图4-5所示。图4-5健康教育活动实体属性图3.每日记录实体属性图每日记录实体属性图,如图4-6所示。图4-6每日记录实体属性图4.咨询信息实体属性图设计的咨询信息实体实体属性图,其具备的属性如图4-7所示。图4-7咨询信息实体属性图5.用户实体属性图设计用户实体属性图,其具备的属性如图4-8所示。图4-8用户实体属性图6.管理员实体属性图设计管理员实体属性图,其具备的属性如图4-9所示。图4-9管理员实体属性图7.实体间关系E-R图设计的实体间关系E-R图,其具备的属性如图4-10所示。图4-10实体间关系E-R图4.3.2数据库表结构一般来说,数据库是用来保存数据的,无论设计得多好,它都不会失去保存数据的功能。设计数据库和不设计数据库的区别在于数据访问的效率。一个设计良好的数据库可以快速响应数据的查询、存储和更新。一个设计糟糕的数据库不仅会延长数据的处理时间,而且很容易出错。因此,数据库设计也是程序开发中不可缺少的环节之一[11]。个人健康管理系统共有六张数据表,分别是用户信息表,管理员信息表,每日记录信息表,健康教育活动信息表,医生信息表,咨询信息表。如表4-1至4-6所示。1.用户信息表用户信息表(id,loginName,loginPass,xingming,xingbie,shengri),其中id为主键。该表可以编写用户的基本信息。表的结构如表4-1所示。表4-1用户信息表列名说明数据类型长度允许空id编号(主键)int4否loginName账号varchar50否loginPass密码varchar50否xingming姓名varchar50否xingbie性别varchar50否shengri出生日期varchar50否2.管理员信息表管理员信息表(userId,userName,userPw),其中userId为主键,该表可以管理用户名userName和密码userPw。表的结构如表4-2所示。表4-2管理员信息表列名说明数据类型长度允许空userId编号(主键)int4否userName用户名varchar50否userPw密码varchar50否3.每日记录信息表每日记录信息表(id,yonghu_id,shijian,yinshi,yundong,shuimian,beizhu),其中id为主键。该表可记录用户的每日信息。表的结构如表4-3所示。表4-3每日记录信息表列名说明数据类型长度允许空id编号(主键)Int4否yonghu_id用户IDvarchar4否shijian记录时间varchar50否yinshi饮食状况varchar50否yundong运动情况varchar50否shuimian睡眠状况varchar50否beizhu备注信息varchar50否4.健康教育活动信息表健康教育活动信息表(id,yonghu_id,shijian,didian,xingshi,zhuti,zuzhizhe,neirong),其中id为主键。该表可记录用户的健康教育活动信息。表的结构如表4-4所示。表4-4健康教育活动信息表列名说明数据类型长度允许空id编号(主键)int2否yonghu_id用户IDint50否shijian活动时间varchar50否didian活动地点varchar50否xingshi活动形式varchar50否zhuti活动主题varchar50否zuzhizhe组织者varchar50否neirong活动内容varchar50否5.医生信息表医生信息表(id,xingming,xingbie,nianling,biye,loginname,loginpw),其中id为主键。该表可以编辑医生的详细信息。表的结构如表4-5所示。表4-5医生信息表列名说明数据类型长度允许空id编号(主键)int4否xingming姓名varchar50否xingbie性别date8否nianling年龄int4否biye毕业院校int4否loginname账号int4否loginpw密码int4否6.咨询信息表咨询信息表(id,content,zixunshijian,huifu,huifushijian,yonghu_id,yisheng_id),其中id为主键。表的表结构如表4-6所示。表4-6咨询信息表列名说明数据类型长度允许空id编号(主键)Int4否content内容varchar5000否zixunshijian咨询时间varchar50否huifu回复信息varchar50否huifushijian回复时间varchar50否yonghu_id用户IDInt4否yisheng_id医生IDInt4否5系统实现这部分工作主要由程序员完成。通常面对一个大系统,这些程序员会分工明确,每个人完成不同的功能模块,在使用代码实现功能的基础上,提前预留接口,最后通过接口将自己完成的功能模块组合起来[12]。本章将具体讨论如何实现功能模块从而最终实现了整个系统。5.1管理员功能实现5.1.1健康资讯管理管理员进入指定功能操作区之后,可以管理健康资讯信息,管理员在当前页面添加健康资讯,对每条健康资讯的详细信息都可以详细查看并且删除。其运行效果,如图5-1所示。图5-1健康资讯管理页面5.1.2医生信息管理管理员进入指定功能操作区之后,需要进行管理医生信息时,有关医生信息的录入,删除都可以在本页面完成。其运行效果,如图5-2所示。图5-2医生信息管理页面5.1.3系统会员管理管理员进入指定功能操作区之后,需要管理系统会员信息,运行效果,管理员可以停用并启用系统会员的账号,查询系统会员信息。如图5-3所示。图5-3系统会员管理页面5.2医生功能实现5.2.1查看咨询信息医生进入指定功能操作区之后,需要查看用户的咨询信息,医生查看这些信息后,需要一一进行回复处理。运行效果,如图5-4所示。图5-4查看咨询信息页面5.2.2回复用户咨询医生进入指定功能操作区之后,对需要回复的咨询信息进行回复处理,医生登记回复内容就可提交。运行效果,如图5-5所示。图5-5回复用户咨询页面5.3用户功能实现5.3.1每日记录管理用户进入指定功能操作区之后,需要记录每日的饮食情况,运动情况,睡眠情况等信息,记录的信息也可以被用户删除。运行效果,如图5-6所示。图5-6每日记录管理页面5.3.2体检信息管理用户进入指定功能操作区之后,需要管理体检信息,用户随时可查看体检信息,并且登记新的体检信息。运行效果,如图5-7所示。图5-7体检信息管理页面5.3.3医生资源信息用户进入指定功能操作区之后,需要查看医生资源信息,用户可以选择某位医生进行在线咨询。运行效果,如图5-8所示。图5-8医生资源信息页面5.3.4健康教育活动记录用户进入指定功能操作区之后,需要查看健康教育活动记录信息,用户可以继续添加已经参加的健康教育活动信息,也可以删除这些信息。运行效果,如图5-9所示。图5-9健康教育活动记录页面6系统测试面对已完成的系统,下一步的工作就是对其进行测试。这个环节需要运用多种方式发现操作系统中存在的问题,及时分析并且解决,使目标系统能够被用户所接受。6.1系统测试的实施下面的测试内容包括确认测试、验收测试、回归测试。确认测试:这个环节的主要的任务是确认系统的有效性,所以它还有另外一个名字,就是有效性测试。通过检查目标系统的功能及其运行环境的配置,测试人员需要检查目标系统是否符合先前分析,以及设计是否符合用户的需求规范[13]。验收测试:在实践中,通常要求开发人员、质量保障人员和面向系统的用户参与这一过程。让用户通过设计好的用例在系统的操作界面上输入数据,并检测系统的输出结果[14]。回归测试:主要用于测试变更的软件。在保证修改后的系统不会产生其他错误的情况下,验证系统修改部分的正确性。6.2系统功能测试很多时候,需要对系统中的指定功能进行数据检验,检验不同数据的录入,其产生的结果或反馈的信息跟预定的需求是否有差别。6.2.1登录功能测试作为个人健康管理系统的门面,其登录功能起着非常重要的作用。它不仅可以保护系统的安全,还可以引导不同的用户进入不同的操作区域。每当有不同形式的数据输入时,系统都会对每个数据进行判断,准确录入的数据才会让访问者登录进入功能操作区。登录功能测试表,如表6-1所示。表6-1登录功能测试表测试内容录入的数据预期结果最终结果输入用户表的账号和密码账号:user密码:user登录成功登录成功随意输入账号和密码账号:abc密码:abc提示信息错误提示信息错误输入用户表的账号,密码随意输入账号:user密码:abc提示账号密码不匹配提示账号密码不匹配随意输入账号,输入用户表的密码账号:abc密码:cba提示账号密码不匹配提示账号密码不匹配6.2.2注册功能测试如果访问者需要操作本系统的功能,前提是要在用户表里面有登录本系统的个人资料。注册功能就是让游客成为用户的一种操作方式,只要不是本系统用户,注册时登记的账号不能与用户表已有的账号重复就可以。注册功能测试表,如图6-2所示。表6-2注册功能测试表测试内容录入的数据预期结果最终结果输入用户表的账号账号:user操作失败操作失败输入用户表没有的账号账号:abc操作成功操作成功6.3测试结果分析通过以上对个人健康管理系统的测试,发现该系统统一的界面和清晰的导航设计使系统易于操作。通过与用户需求的比较,发现该系统功能完善,能够在操作环境中正常使用,这里的操作环境类似于系统的生产环境。总之,个人健康管理系统通过测试后即可使用。结论在系统开发之前,需要确定用户的身份和程序的应用范围,以便对系统进行准确的定位。只有精确的定位系统才能节省开发时间和不必要的麻烦。本系统的功能是帮助用户管理自己的个人健康信息,当然本系统的功能也采取了一些类似的系统功能。系统设计是基于功能需求的分析,这同样也是一个重要的组成部分,需要引起开发者的重视。系统前期的设计对后期的编码起着重要的作用,这样不仅可以降低编码过程中的误码率,而且可以提高编码的速度。毕竟,系统的实现是基于系统设计的。系统编码完成后,将进行最终测试。当所开发的系统合格后,即可完成系统开发。本系统的开发遵循功能分析、系统模块设计、数据库设计、系统功能实现、系统功能测试等过程。系统采用了JAVA、JSP等技术并开展了以下几方面工作。(1)使用JAVA作为项目的主要开发语言,后台使用SQLServer作为数据库管理系统并建立数据库表格,本项目是一个基于Web技术的B/S结构的系统。(2)系统具有较完善的功能,使用者基本可以使用本系统去处理相关数据,而且系统可以较长时间进行工作。对于系统的操作,使用者也易于上手,毕竟本系统在设计时,就对页面中的导航目录进行着重设计,把页面中的重点区域用来展示系统的导航功能,让使用者进入系统界面,可以第一时间就可以发现系统的导航,并使用系统的导航功能找到需要的内容。(3)本系统具有一定优势的同时也会暴露出自身的缺陷,例如系统在编码的过程中对使用的变量名不便于记忆,并且变量名也不是非常规范,代码的编写也不是特别规范,缺少关键代码的注释等,还有项目的目录规划不合理等问题。本系统还需要时间来完善,日后运用先进成熟的技术去重构本系统,让系统日益完善。参考文献[1]周晓雯.面向学生的健康管理系统的设计与实现.中国地质大学(北京),2019.[2]王敏东,孙丹.个人健康管理服务信息平台对健康体检人群的作用[J].临床医药文献电子杂志,2020,28(08):200-204.[3]王云锦,赵志宏.基于B/S架构的健康管理平台的设计与实现[J].电脑知识与技术,2010(33):495-497.[4]张永瑞.基于Android及JavaWeb平台的个人健康信息管理系统[D].西安电子科技大学,2014.[5]贾贺顺.基于JavaEE平台的个人健康管理系统设计与实现[J].南京邮电大学,2018,50(20):247-248.[7]禹蒙蒙.基于B/S架构的健康管理系统的设计与实现[J].管理与科技(上旬刊),2018(08):179-180.[8]程灿.计算机软件Java编程及应用分析[J].科技创新与应用,2020(16):170-180.[9]马达,彭涛,周春光,等.基于网络的个人健康管理实时监控健康分析平台[J].吉林大学学报(理学版),2010(03):461-463.[10]张云健.计算机软件Java编程特点及其技术应用[J].信息与电脑(理论版),2019(13):97-98.[10]李民玺,马凯,杨晓东.基于Web平台的辅助诊断系统[J].软件,2020,486(10):42-45.[11]吴雨渲,严张凌.基于微服务架构的个人健康管理系统的设计与实现[J].信息与电脑(理论版),2020,32;No.457(15):101-103.[12]岳青玲.Java面向对象编程的三大特性[J].电子技术与软件工程,2019(24):239-240.[13]刘星淇.Java编程语言的特点与应用分析[J].通讯世界,2019,26(09):149-150.[13]CernianAlexandra,TiganoaiaBogdan.ABlockchain-BasedApproachtoIntergetPersonalHealthRecords[J].FusionEngineeringandDesign,2020.[14]WilliamD,Freeman,MeredithKarney.ChallengesofPersonalHealthRecords[J].HealthInformaticsJournal,2019,100.附录/***健康报告*/publicclassHealthReportActivityextendsAppCompatActivity{privateintstepCount=0;privateTextViewshow_length,show_cal,show_step,show_weight;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_health_report);show_cal=(TextView)findViewById(R.id.show_cal);show_weight=(TextView)findViewById(R.id.show_weight);show_step=(TextView)findViewById(R.id.show_step);show_length=(TextView)findViewById(R.id.show_length);Useruser=BmobUser.getCurrentUser(User.class);Stringweight=user.getWeight()+"";if(user.getStep()!=null){intcount=0;Datedate=newDate(System.currentTimeMillis());SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");StringcurrentTime=sdf.format(date);Stringday=currentTime.substring(8,10);if(day.substring(0,1).equals("0")){count=Integer.parseInt(day.substring(1,2));}else{count=Integer.parseInt(day);}floatstart=1f;for(inti=(int)start;i<start+count;i++){Calendarcal=Calendar.getInstance();cal.setTime(newDate());cal.set(Calendar.HOUR_OF_DAY,0);cal.set(Calendar.MINUTE,0);cal.set(Calendar.SECOND,0);cal.set(Calendar.MILLISECOND,0);cal.set(Calendar.DAY_OF_MONTH,cal.get(Calendar.DAY_OF_MONTH)-count+i);//让日期减去5DateendDate=cal.getTime();SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyy-MM-dd");Stringd=simpleDateFormat.format(endDate);intk=user.getStepDate().size();for(intj=0;j<count;j++){if(k-1-j>=0&&user.getStepDate().get(k-1-j).equals(d)){inty=Integer.parseInt(user.getStep().get(k-1-j));stepCount+=y;break;}}}}DecimalFormatdf=newDecimalFormat("0.00");show_step.setText("步数:"+stepCount);show_length.setText("距离:"+df.format(stepCount*0.75/1000)+"公里");show_cal.setText("热量:"+df.format(stepCount*0.056)+"千卡");show_weight.setText("体重:"+weight+"kg");}}/***用户运动周和月历史*/publicclassStepHistoryActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_step_history);finalTextViewzhou=(TextView)findViewById(R.id.zhou);finalTextViewyue=(TextView)findViewById(R.id.yue);finalWeekFragmentblankFragment=newWeekFragment();finalMonthFragmentblankFragment2=newMonthFragment();FragmentManagerfragmentManager1=getSupportFragmentManager();FragmentTransactionfragmentTransaction=fragmentManager1.beginTransaction();fragmentTransaction.add(R.id.container4,blankFragment);fragmentTmit();zhou.setClickable(false);zhou.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){FragmentManagerfragmentManager=getSupportFragmentManager();FragmentTransactiontransaction=fragmentManager.beginTransaction();transaction.replace(R.id.container4,blankFragment);mit();yue.setClickable(true);zhou.setClickable(false);zhou.setTextColor(getResources().getColor(R.color.orangered));yue.setTextColor(getResources().getColor(R.color.black));}});yue.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){FragmentManagerfragmentManager=getSupportFragmentManager();FragmentTransactiontransaction=fragmentManager.beginTransaction();transaction.replace(R.id.container4,blankFragment2);mit();yue.setClickable(false);zhou.setClickable(true);zhou.setTextColor(getResources().getColor(R.color.black));yue.setTextColor(getResources().getColor(R.color.orangered));}});}}/**
*体重管理
*/publicclassWeightActivityextendsActivityimplementsView.OnClickListener{
privateEditTextedit_weight,edit_height;
privateButtondetermine;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weight);
edit_weight=(EditText)findViewById(R.id.edit_weight);
edit_height=(EditText)findViewById(R.id.edit_height);
determine=(Button)findViewById(R.id.btn_determine);
determine.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewview){
switch(view.getId()){
caseR.id.btn_determine:
doubleuserWeight=0;
Stringweight=edit_weight.getText().toString();
Stringheight=edit_height.getText().toString();
if(BmobUser.getCurrentUser(User.class).getWeight()!=null){
userWeight=Double.parseDouble(BmobUser.getCurrentUser(User.class).getWeight());
}
Stringinfo="";
if(!weight.isEmpty()&&!height.isEmpty()){
doubled_weight=Double.parseDouble(weight);
doubled_height=Double.parseDouble(height)/100;
if(userWeight>0){
if(userWeight>d_weight){
info=",与上次测量相比减少了"+(userWeight-d_weight)+"kg";
}elseif(userWeight<d_weight){
info=",与上次测量相比增加了"+(d_weight-userWeight)+"kg";
}else{
info=",与上次测量相比体重没有变化";
}
}
finaldoubleresult=d_weight/d_height/d_height;
BigDecimalbigDecimal=newBigDecimal(result);
AlertDialog.Builderbuilder=newAlertDialog.Builder(WeightActivity.this);
builder.setTitle("成年人正常体重指数为18.5-22.9");
builder.setMessage("你的体重指数为"+bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()+info);
builder.setCancelable(false);
builder.setPositiveButton("确定",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialogInterface,inti){
if(result<22.9&&result>18.5){
Toast.makeText(WeightActivity.this,"体重正常,请保持",Toast.LENGTH_SHORT).show();
}elseif(result>22.9){
Toast.makeText(WeightActivity.this,"体重偏重,请减肥",Toast.LENGTH_SHORT).show();
}elseif(result<18.5){
Toast.makeText(WeightActivity.this,"体重过轻,请增加饮食",Toast.LENGTH_SHORT).show();
}
}
});
builder.show();
Useruser=newUser();
user.setWeight(d_weight+"");
user.update(BmobUser.getCurrentUser(User.class).getObjectId(),newUpdateListener(){
@Override
publicvoiddone(BmobExceptione){
if(e==null){
}else{
Log.d("tag","done:"+e.getMessage());
}
}
});
break;
}else{
Toast.makeText(WeightActivity.this,"请输入",Toast.LENGTH_SHORT).show();
}
default:
break;
}
}
@Override
publicvoidonBackPressed(){
super.onBackPressed();
finish();
}}/***步数检测器*/publicclassStepDetectorimplementsSensorEventListener{ privatefloatmLimit=10;privatefloatmLastValues[]=newfloat[3*2];privatefloatmScale[]=newfloat[2];privatefloatmYOffset;privatefloatmLastDirections[]=newfloat[3*2];privatefloatmLastExtremes[][]={newfloat[3*2],newfloat[3*2]};privatefloatmLastDiff[]=newfloat[3*2];privateintmLastMatch=-1;privateStepListenermListener;publicStepDetector(){inth=480;mYOffset=h*0.5f;mScale[0]=-(h*0.5f*(1.0f/(SensorManager.STANDARD_GRAVITY*2)));mScale[1]=-(h*0.5f*(1.0f/(SensorManager.MAGNETIC_FIELD_EARTH_MAX)));}publicvoidsetSensitivity(floatsensitivity){mLimit=sensitivity;}publicvoidsetStepListener(StepListenersl){ mListener=sl;}@SuppressWarnings("deprecation") publicvoidonSensorChanged(SensorEventevent){Sensorsensor=event.sensor;synchronized(this){if(sensor.getType()==Sensor.TYPE_ORIENTATION){}else{intj=(sensor.getType()==Sensor.TYPE_ACCELEROMETER)?1:0;if(j==1){floatvSum=0;for(inti=0;i<3;i++){finalfloatv=mYOffset+event.values[i]*mScale[j];vSum+=v;}intk=0;floatv=vSum/3;floatdirection=(v>mLastValues[k]?1:(v<mLastValues[k]?-1:0));if(direction==-mLastDirections[k]){ intextType=(direction>0?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 刀具的材料科学研究与工程应用考核试卷
- 光缆行业知识产权保护与侵权防范考核试卷
- 保健品销售渠道拓展策略考核试卷
- 公交车驾驶员职业素养与礼仪培训考核试卷
- 临床用血指导与服务考核试卷
- 光缆的防雷保护措施考核试卷
- 中药批发市场的品牌定位与价值塑造考核试卷
- 创业投资行业政策导向分析与发展趋势考核试卷
- 丝印染在智能穿戴设备中的应用考核试卷
- 校车转让合同
- 《葡萄酒勃艮第》课件
- 混凝土浇筑记录表
- 装修验收单标准范本
- 检察院听证会申请书范本
- 采血知情同意书模板
- 小学道德与法治-心中的“110”教学设计学情分析教材分析课后反思
- 方案的构思过程 课件-2023-2024学年高中通用技术苏教版(2019)技术与设计1
- 青海中冠嘉颉环保科技有限公司铝灰渣循环再利用项目(中试试验)环评报告
- 2024届江西省南昌市名校物理九年级第一学期期末考试试题含解析
- Mysql 8.0 OCP 1Z0-908 CN-total认证备考题库(含答案)
- 人文智能学习通超星课后章节答案期末考试题库2023年
评论
0/150
提交评论