🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以私聊博主获取。🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目演示(需要演示视频可以私信我)
项目展示
1 绪论
1.1 课题背景
随着科学技术发展,电脑已成为人们生活中必不可少的生活办公工具,在这样的背景下,网络技术被应用到各个方面,为了提高办公生活效率,网络信息技术飞速发展。在这样的背景下人类社会进入了全新的信息化的时代。社区健康服务的医疗管理一直是信息管理的一大难题,社区健康服务的医疗人数多,信息量大,此时寻找有效便捷的社区健康服务的医疗管理方法就是当务之急。而日趋成熟的计算机信息管理技术便成为解决这一难题的唯一之选。如今计算机信息管理技术来处理社区健康服务的医疗信息早已游刃有余,其实信息管理技术已经渗透到各个行业的信息控制管理当中,且有着举足轻重的地位。而随着现代化社会主义不断进步,普通群众生活水平有了大幅提高,很多方面都在网络上去实现,从而网络也就成为了最直接、即方便又快捷的接入口。
使用面向社区健康服务的医疗平台相对传统健康服务管理方式具备很多优点:首先可以大幅提高社区健康服务的医疗信息检索,只需输入社区健康服务的医疗相关信息就能在数秒内反馈想要的结果;其次可存储大量的社区健康服务的医疗信息,同时社区健康服务的医疗信息安全性有更高的保障;相比纸质文件来管理社区健康服务信息,社区健康服务的医疗管理平台更节省空间人力资源。这些优点大大提高效率并节省成本。因此,开发面向社区健康服务的医疗平台对社区健康服务的医疗信息进行有效的管理是很必要的,不仅提高了社区健康服务的医疗管理效率,增加了用户信息安全性,方便社区健康服务的医疗及时反馈信息给管理员,增加了用户、医生与管理员之间的互动交流,更能提高社区健康服务的医疗的体验强度。
本系统为了数据库结构的灵活性所以打算采用MySQL来设计数据库,而java技术,B/S架构则保证了较高的平台适应性。本文主要介绍了本系统的开发背景,所要完成的功能和开发的过程,主要说明了系统设计的重点、设计思想。
1.2 课题研究现状
现今,越来越多的人乐于选择一项合适的管理方案,但是用户往往受到管理经验地限制,这时各类社区健康服务平台的崛起,大量社区健康服务制度进入人们生活,而社区健康服务的医疗制无疑是社区健康服务管理的最好制度,在这样成功的管理模式背景下,社区健康服务的医疗信息也越来越多。但是随着社区健康服务的医疗信息的增多,社区健康服务的医疗的管理成为了一个难题。高效便捷地管理社区健康服务的医疗成为了转变管理模式,与时代兼容的当务之急。
面向社区健康服务的医疗平台,为用户随时随地查看社区健康服务的医疗信息提供了便捷的方法,更重要的是大大的简化了管理员管理社区健康服务的医疗信息的方式方法,更提供了其他想要了解社区健康服务的医疗信息及运作情况以及挑选方便快捷的可靠渠道。相比于社区健康服务的医疗信息管理方法,这样的电子信息管理更为简洁方便,面向社区健康服务的医疗平台维护信息反馈和处理社区在线健康服务意见方面也有得天独厚的优势。
面向社区健康服务的医疗平台能做到的不仅是大大简化管理员的信息管理工作,在提高社区健康服务的医疗管理思路的同时还能缩减开支,更能在数字化的平面网络上将社区健康服务的医疗最好的一面展示给客户和潜在客户,而这个平台在带给社区健康服务的医疗全新用户信息管理统计和分类的同时,还成为日后社区健康服务的医疗制定管理思路的重要数据参考。过程永远比结果重要。毕业设计是大学生活中最为浓墨重彩的一笔,在这个过程中不仅学到更为全面的书本和实践知识,更让我感受到了浓浓的同窗之情及师生情。这个平台成为社区健康服务的医疗管理者最不可或缺的内容。尽管目前大部分已经将社区健康服务的医疗管理平台投入使用,但是人们对于平台要求也变得越来越高,大部分平台已经能完美处理各类信息,但是为了更好地契合社区健康服务的医疗管理思路,不同用户有不同的要求,个性化也是管理平台十分重要的一点,所以都希望自己能有一个个性化定制的管理平台,但这又涉及到成本控制问题,目前定制一个平台价值不菲,但是如果有这样一个可以根据需求自己制定页面和内容的面向社区健康服务的医疗平台就可以大大缩减开支,但是凭借目前自身技术恐怕难以实现,不过让平台可二次设计却是有可能实现的。随着社区健康服务的医疗规模的不断扩大,用户信息共享也成一种趋势。社区健康服务的医疗的发展也证明了平台管理在不断发展进步,各种理念也越来越先进,对各方面的要求也变得越来越高,社区健康服务的医疗完全可以在进入页面时发布各类信息进行推荐交流。
1.3 初步设计方法与实施方案
软件体系结构方案:由于本系统需要在不同设备上都能运行,而且电脑配置要求也要越低越好,为了实现这一要求,经过考虑B/S结构成为最佳之选。使用B/S结构的系统可以几乎在任何电脑上运行,只要浏览器可以正常工作就可以正常运行该系统,而且后期维护及二次修改较为容易,符合要求。
操作系统方案:Windows10操作系统,该系统是目前微软公司推出的最新系统,目前大多数市面上的电脑都使用该系统,并且该系统功能完善,兼容性好。开发工具:选用My Eclipse。Java开发技术。
1.4 本文研究内容
本文主要分为七个章节;
第一部分为绪论,主要介绍了目前电脑技术发展状况、社区健康服务的医疗行业发展阶段,分析当前面向社区健康服务的医疗平台弊端以及使用信息技术来管理社区健康服务的医疗信息的好处。
第二部分为相关技术简介,主要介绍了各技术的发展历程,技术发展现状,技术优点以及选用该技术的原因等。
第三部分为系统分析,主要分析了软件设计所需要的功能,。
第四部分为系统设计,主要进行了系统的架构设计、数据库设计等
第五部分为系统详细设计。
第六部分为系统调试与测试,利用测试方法进行可行性测试、性能测试、系统测试等。
第七部分为总结与致谢,主要总结了程序设计的完成过程及完成情况,比对完成设计过程中施以援手的同学和老师表达中心的感谢和祝愿。
2 系统开发环境
2.1 Java技术
Java是由Sun公司推出的一门跨平台的面向对象的程序设计语言。因为Java 技术具有卓越的通用性、高效性、健壮的安全性和平台移植性的特点,而且Java是开源的,拥有全世界最大的开发者专业社群,所以Java的发展迅速。
2.2 JSP技术
JSP(JAVA SERVER PAGES,java服务器页面)自面世以来就被大家所广泛使用,JSP是一种基于文本的程序,同时也是是一种动态网页技术标准。为了简化Servlet的工作(Servlet输出HTML非常困难,JSP就是替代Servlet输出HTML的),而JSP的诞生并不是由一家公司完成,而是经过多家企业的共同研究开发出来的(在SUN MICROSYSTEMS公司领头下)。
JSP具有跨平台,分离静态内容和动态内容,可重复使用组件,预编译,沿用java Servlet所有功能等技术特征。跨平台指JSP是运用java来开发的动态网页技术,JSP继承了Java具有的大部分性质(JSP是JAVA WEB应用的主要视图,但不是唯一的)。分离静态内容和动态内容:无论是javabean、servlet以及嵌入在html代码之间的JSP代码都与html静态页面相分离,如javabean封装一些业务逻辑。可重复使用的组件:这里还是要提一下javabean,无论是值bean还是工具bean都是可重复使用,大大的提高了工作的效率。预编译:JSP页面在被服务器执行前就已经被编译好了,并且只在JSP页面第一次请求时进行编译,后续请求JSP未被修改时则直接掉用之前编译好的代码。JSP沿用了java Servlet的所有功能,并在servlet的额基础上做了很大改进,比如在分离静态内容和动态内容上,servlet所有内容都要在java代码中完成,JSP弥补了这个缺点,服务器先将JSP文件转化为servlet代码然后在进行编译。
2.3 B/S模式
B/S结构是目前使用最多的结构模式,它可以使得系统的开发更加的简单,好操作,而且还可以对其进行维护。使用该结构时只需要在计算机中安装数据库,和一些很常用的浏览器就可以了。浏览器就会与数据库进行信息的连接,可以实现很多的功能,B/S结构是可以直接进行使用的,而且B/S结构在使用中极大的减少了工作的维护。基于B/S的软件,所有的数据库之间都是相互独立的,因此是非常安全的。因为基于B/S结构可以清楚的看到系统正在处理的业务,并且能够及时的让管理人员做出决策,这样就可以避免企业的损失。B/S结构的基本特点是集中式的管理模式,用户使用系统生成数据后,这些数据就可以存储到系统的数据库中,方便日后能够用到,这样就可以满足人们的所有的需求。
图2-1 B/S模式三层结构图
2.4 MyEclipse环境配置
安装完MyEclipse后选择myeclipse“Window->Preferences”
(1)配置myeclipse的jre为sun的jdk,不要用myeclipse的默认jdk:
选择“java->Installed JREs”,勾中里面的“jdk1.7”.
(2)配置编译的级别为6.0:
选择“Compiler->Compiler compliance level”的值为“6.0”。
(3)配置myeclipse的默认的文件编码格式为“UTF-8”:
选择“General->Workspace”,选中“Text file encod”下面的“Other”,设置里面的值为“UTF-8”。
(4)去掉myeclipse的JSP的验证:
选择“MyEclipse->Validation”,将“Build”列的所有勾都给去掉,这样在编译时因为避免了jsp的验证,所以编译的速度会快很多。
2.5 MySQL环境配置
(1)本系统的数据使用的是MySQL,所以要将MySQL安装到指定目录,如果下载的是非安装的MySQL压缩包,直接解压到指定目录就可以了。然后点击C:\Program Files\MySQL\bin\winMySQLadmin.exe这个文件其中C:\Program Files\MySQL是MySQL安装目录。输入winMySQLadmin的初始用户、密码(注:这不是MySQL里的用户、密码)随便填不必在意,确定之后右下角任务的启动栏会出现一个红绿灯的图标,红灯亮代表服务停止,绿灯亮代表服务正常,左击这个图标->winnt->install the service 安装此服务,再左击这个图标->winnt->start the service 启动MySQL服务。
(2)修改MySQL数据库的root密码。用cmd进入命令行模式输入如下命令:
cd C:\Program Files\MySQL\bin
MySQLadmin -u root -p password 123
回车出现Enter password: ,这是要输入原密码. 刚安装时密码为空,所以直接回车,此时MySQL 中账号 root 的密码被改为 123 安装完毕。
3 系统分析
3.1 系统可行性分析
3.1.1 经济可行性
由于本系统是作为毕业设计系统,且系统本身存在一些技术层面的缺陷,并不能直接用于商业用途,只想要通过该系统的开发提高自身学术水平,不需要特定服务器等额外花费。所有创造及工作过程仅需在个人电脑上就能实现,使用到的软件大多为开源软件,所以经济成本并不高,可以轻易实现。
3.1.2 技术可行性
本系统的开发使用java作为系统开发的开发语言,开发环境选择My Eclipse,而B/S结构决定了本系统的兼容性和多用户可操作性,此外选择MySql作为数据库不仅提高了数据安全性更保障了数据的可操作性。
3.1.3 运行可行性
本系统作为以java作为开发语言的系统,而且选用B/S结构则决定了要操作本系统仅需要占用很小的资源,并没有过多地硬件配置要求,目前市面上只要能正常运行浏览器的个人电脑都可以正常运行使用该系统。
综上所述,本系统的设计与开发在经济上、技术上、运行上的条件都是满足的,因此,系统开发具备可行性条件。
3.2 系统现状分析
系统使用用户的数量直接决定了用户信息管理者的工作量,毫无疑问,网站管理者的工作量较大较繁琐。通过前期的调研总结出网站现有的对用户管理工作状况如下分析:
缺少统筹规划,如果一个网站在信息化管理中缺少综合性、系统性、整体性,那不可避免的需要投入大量人力物力来规划整理信息。引入信息化管理方式无疑可以达到节省信息管理成本的目的不仅减少资源浪费还可以使社区健康服务的医疗信息变得井井有条,成为市场竞争中的一大优势。
要循序渐进,心急吃不了热豆腐,任何事情都不可能一蹴而就,就算信息管理系统也一样,要让系统发挥最大效率还是应该多调研,多听取用户和管理者的意见,并进行必要的统筹规划,有组织有目的地设计系统功能,团结各个部门发挥主观能动性。
(3)信息安全措施不到位
隐私权神圣不可侵犯,这是中华人民共和国宪法赋予我们的权利,人和人都不能侵犯我们的正当权益,而网络用户信息管理存在极大安全隐患,信息泄露的案列不在少数,加强信息安全措施是完善网络信息管理过程中不可避免的一环。
(4)资源不能充分共享
资源共享是网络的一大特点,没有共享就没有社交,网络也就失去了他应有的魅力,如果能够实现用户信息共享,无疑对于发展存在不可或缺的帮助。
(5)现有系统可扩展性不高。
如今科学技术发展飞速,随着而来的就是技术更新,那势必会给软件更新带来挑战,因此,系统必须具备良好的开放性和可扩充性,为了不落后于时代,这是必备特色之一。
基于上述分析,面向社区健康服务的医疗平台应该切合实际,做到确实有效,集体表现为:一是系统能够整理并集合归类用户信息,防止用户信息混乱,难以整理;二是系统要安全稳定,不能泄露用户信息,造成隐私泄露,不仅伤害用户利益更是对经营者名誉的损毁;三是系统要具有良好的开放性,不仅要方便定期的维护维修,更要方便及时增加新功能,保证先进的时代契合性。经过详细的讨论论证,确定系统的总体要求。
3.3 功能需求分析
系统功能需求分析是通过软件开发者在参与市场调研,与管理者及使用者交流后经过详细缜密的思考,再讨论研究后得出的初步系统开发所需实现功能。这是开发的第一步,也是至关重要的一步,如果不在这个阶段制定系统所需模块,日后会带来不必要的麻烦。因此,必须严肃认真,全身心投入去做好这个步骤。
本系统采用自上往下的方法开发,基本定位如下功能:
本课题要求实现一套社区健康服务的医疗管理系统,系统主要包括管理员模块,用户和医生模块等功能模块。
图3-3用户用例图
3.4 系统设计规则与运行环境
软件系统的优劣很大程度上是由系统设计的完善与否决定的。世间万物都必须遵循生老病死的法则,这是大自然的规则不能违反,软件设计也一样需要遵循系统设计规则。因此,在设计过程中必须遵循系统设计规则。
规则如下:
简单性:为了扩大系统使用者的受众面,系统设计应该本着操作越简单约好的原则,这样不仅能提高系统的使用率更能够扩大系统使用面。。
针对性:一个系统针对性越强,所能提供的功能必然越完善,用户体验肯定更好,所以应该明确指定系统针对性。
实用性:实用永远是检验一个系统是否成功的唯一标准,使用的语言再高端,使用的结构再新颖但不能满足用户的要求那就是失败。
运行环境:
本系统是一个利用B/S结构来开发的程序,数据库在服务器上部署MySQL数据库即可,其他包括My Eclipse等常规开发程序。硬件要求:CPU:酷睿i3 -3.0GHZ;内存:4G以上;硬盘:128GB。软件平台:操作系统:Windows 10;数据库:MySQL。
3.5系统流程分析
3.5.1操作流程
添加信息流程图,如图所示:
图3-5添加信息流程图
3.5.3删除信息流程
删除信息流程图,如图所示:
4 系统设计
4.1 系统设计主要功能
通过市场调研及咨询研究,了解了使用者及管理者的使用需求,于是制定了管理员、医生和用户等模块。其功能结构图如下图4-1所示:
4.2 数据库设计
4.2.1 数据库设计规范
数据可设计要遵循职责分离原则,即在设计时应该要考虑系统独立性,即每个系统之间互不干预不能混乱数据表和系统关系。
数据库命名也要遵循一定规范,否则容易混淆,数据库字段名要尽量做到与表名类似,多使用小写英文字母和下划线来命名并尽量使用简单单词。
4.2.2 E-R图
医院信息E-R图,如图4-2所示:
图4-2医院信息E-R图
预约挂号管理E-R图,如图4-3所示:
图4-3预约挂号管理E-R图
项目检查管理E-R图如图4-4所示。
图4-4项目检查管理E-R图
4.2.3 数据表
本系统采用的是MySQL数据库存储数据,系统中使用到的主要数据表的具体展示部分如下所示。
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
keshi | varchar | 200 | 科室 |
表4-2:居民健康档案
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
danganbianhao | varchar | 200 | 档案编号 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性别 | ||
nianling | int | 年龄 | |||
shouji | varchar | 200 | 手机 | ||
xuetang | varchar | 200 | 血糖 | ||
xuezhi | varchar | 200 | 血脂 | ||
xueya | varchar | 200 | 血压 | ||
xinlv | varchar | 200 | 心率 | ||
shentiqingkuang | longtext | 4294967295 | 身体情况 | ||
yaowuguominshi | longtext | 4294967295 | 药物过敏史 | ||
jiazuyichuanshi | longtext | 4294967295 | 家族遗传史 | ||
gengxinshijian | datetime | 更新时间 |
表4-3:核酸预约
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
diqu | varchar | 200 | 地区 | ||
jiancedidian | varchar | 200 | 检测地点 | ||
jiancejigou | varchar | 200 | 检测机构 | ||
jiancefeiyong | int | 检测费用 | |||
tijiaoshijian | datetime | 提交时间 | |||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
shouji | varchar | 200 | 手机 | ||
sfsh | varchar | 200 | 是否审核 | 否 | |
shhf | longtext | 4294967295 | 审核回复 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-4:医院信息评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 |
表4-5:医院信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yiyuanmingcheng | varchar | 200 | 医院名称 | ||
yiyuandizhi | varchar | 200 | 医院地址 | ||
yiyuantupian | varchar | 200 | 医院图片 | ||
lianxidianhua | varchar | 200 | 联系电话 | ||
yiyuanjianjie | longtext | 4294967295 | 医院简介 | ||
thumbsupnum | int | 赞 | 0 | ||
crazilynum | int | 踩 | 0 |
表4-6:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-7:医生
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yishenggonghao | varchar | 200 | 医生工号 | ||
yishengxingming | varchar | 200 | 医生姓名 | ||
mima | varchar | 200 | 密码 | ||
keshi | varchar | 200 | 科室 | ||
touxiang | varchar | 200 | 头像 | ||
xingbie | varchar | 200 | 性别 | ||
yiling | varchar | 200 | 医龄 | ||
dianhua | varchar | 200 | 电话 | ||
guahaofeiyong | int | 挂号费用 | |||
zhicheng | varchar | 200 | 职称 | ||
jianjie | longtext | 4294967295 | 简介 |
表4-8:处方查询
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
chufangdanhao | varchar | 200 | 处方单号 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性别 | ||
binglishi | longtext | 4294967295 | 病例史 | ||
yaopinmingcheng | varchar | 200 | 药品名称 | ||
yaopindanjia | float | 药品单价 | |||
shuliang | int | 数量 | |||
zongjia | float | 总价 | |||
yishenggonghao | varchar | 200 | 医生工号 | ||
yishengxingming | varchar | 200 | 医生姓名 | ||
keshi | varchar | 200 | 科室 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-9:项目检查
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yuyuebianhao | varchar | 200 | 预约编号 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
jianchaxiangmu | varchar | 200 | 检查项目 | ||
jianchafeiyong | int | 检查费用 | |||
zhuyishixiang | longtext | 4294967295 | 注意事项 | ||
jianchashijian | datetime | 检查时间 | |||
yishenggonghao | varchar | 200 | 医生工号 | ||
yishengxingming | varchar | 200 | 医生姓名 | ||
keshi | varchar | 200 | 科室 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-10:问诊答疑
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
adminid | bigint | 管理员id | |||
ask | longtext | 4294967295 | 提问 | ||
reply | longtext | 4294967295 | 回复 | ||
isreply | int | 是否回复 |
表4-11:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-12:预约挂号
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yuyuebianhao | varchar | 200 | 预约编号 | ||
yishenggonghao | varchar | 200 | 医生工号 | ||
yishengxingming | varchar | 200 | 医生姓名 | ||
keshi | varchar | 200 | 科室 | ||
guahaofeiyong | int | 挂号费用 | |||
yuyueshijian | datetime | 预约时间 | |||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性别 | ||
nianling | varchar | 200 | 年龄 | ||
shouji | varchar | 200 | 手机 | ||
beizhu | longtext | 4294967295 | 备注 | ||
sfsh | varchar | 200 | 是否审核 | 否 | |
shhf | longtext | 4294967295 | 审核回复 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-13:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表4-14:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
mima | varchar | 200 | 密码 | ||
xingbie | varchar | 200 | 性别 | ||
nianling | int | 年龄 | |||
shouji | varchar | 200 | 手机 |
表4-15:收藏表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
refid | bigint | 收藏id | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 收藏名称 | ||
picture | varchar | 200 | 收藏图片 | ||
type | varchar | 200 | 类型(1:收藏,21:赞,22:踩) | 1 | |
inteltype | varchar | 200 | 推荐类型 |
表4-16:居民在线指导
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | varchar | 200 | 图片 | ||
content | longtext | 4294967295 | 内容 |
5 系统实现
5.1 系统功能模块
用户登录进入面向社区健康服务的医疗平台可以查看首页、医院信息、医生、居民在线指导、个人中心、后台管理、问诊答疑等功能进行详细操作,如图5-1所示。
图5-1系统首页界面图
用户注册,在注册页面通过填写账号、姓名、密码 、再次输入密码、年龄、手机等内容进行注册操作,如图5-2所示。
图5-2用户注册界面图
个人中心;在个人信息页面通过填写账号、姓名、密码、性别、年龄、手机等内容并进行个人信息更新操作;根据需要对我的收藏进行详细操作,如图5-3所示。
图5-3个人中心界面图
医院信息;在医院信息页面中可以查看首页、医院名称、医院地址、联系电话、图片、医院简介等内容,并进行评论或收藏操作;如图5-4所示。
图5-5后台登录界面图
5.2.1 管理员功能模块
管理员登录进入平台可以查看主页、个人中心、用户管理、科室管理、医院信息管理、医生管理、预约挂号管理、项目检查管理、处方查询管理、居民健康档案管理、核酸预约管理、系统管理等功能进行详细操作,如图5-6所示。
图5-6管理员功能界面图
用户管理;在用户管理页面中可以对账号、姓名、性别、年龄、手机等内容进行查看,修改和删除操作;如图5-7所示。
图5-7用户管理界面图
科室管理;在科室管理页面中可以对科室等内容进行查看,修改和删除操作;如图5-8所示。
图5-8科室管理界面图
医院信息管理;在医院信息管理页面中可以对医院名称、医院地址、医院图片、联系电话等内容进行查看、修改、查看评论和删除操作;如图5-9所示。
医生管理;在医生管理页面中可以对医生工号、医生姓名、科室、头像、性别、医龄、电话、挂号费用、职称等内容进行查看,修改和删除操作;如图5-10所示。
图5-10医生管理界面图
预约挂号管理;在预约挂号管理页面中可以对预约编号、医生工号、医生姓名、科室、挂号费用、预约时间、账号、姓名、性别、年龄、手机、备注、是否审核、审核回复、是否支付等内容进行查看,修改和删除操作;如图5-11所示。
图5-11预约挂号管理界面图
项目检查管理;在项目检查管理页面中可以对预约编号、账号、姓名、检查项目、检查费用、注意事项、检查时间、医生工号、医生姓名、科室、是否支付等内容进行查看、修改和删除操作;如图5-12所示。
图5-12项目检查管理界面图
处方查询管理;在处方查询管理页面中可以查看处方单号、账号、姓名、性别、病例史、药品名称、药品单价、数量、总价、医生工号、医生姓名、科室、是否支付等信息,并进行修改或删除操作;如图5-13所示。
居民健康档案管理;在居民健康档案管理页面中可以对档案编号、账号、姓名、性别、年龄、手机、血糖、血脂、血压、心率、身体情况、药物过敏史、家庭遗传史、更新时间等内容进行查看操作;如图5-14所示。
核酸预约管理;在核酸预约管理页面中可以对地区、检测地点、检测机构、检测费用、提交时间、账号、姓名、手机、是否审核、审核回复、是否支付等内容进行审核、查看、修改和删除操作;如图5-15所示。
图5-15核酸预约管理界面图
系统管理;在居民在线指导管理页面中可以对标题、简介、图片等内容进行查看,修改和删除操作;还可以根据需要对轮播图管理进行详细操作,如图5-16所示。
图5-16系统管理界面图
5.2.2 医生功能模块
医生登录进入平台可以查看主页、个人中心、医院信息管理、预约挂号管理、项目检查管理、处方查询管理、居民健康档案管理、核酸预约管理、系统管理等功能进行详细操作,如图5-17所示。
图5-17医生功能界面图
医院信息管理;在医院信息管理页面中可以对医院名称、医院地址、医院图片、联系电话等内容进行查看、查看评论操作,如图5-18所示。
图5-18医院信息管理界面图
预约挂号管理;在预约挂号管理页面中可以对预约编号、医生工号、医生姓名、科室、挂号费用、预约时间、账号、姓名、性别、年龄、手机、备注、是否审核、审核回复、是否支付等内容进行审核、检查、处方和查看操作;如图5-19所示。
图5-19预约挂号管理界面图
项目检查管理;在项目检查管理页面中可以对预约编号、账号、姓名、检查项目、检查费用、注意事项、检查时间、医生工号、医生姓名、科室、是否支付等内容进行查看,修改和删除操作;如图5-20所示。
图5-20预约挂号管理界面图
处方查询管理;在处方查询管理页面中可以对处方单号、账号、姓名、性别、病例史、药品名称、药品单价、数量、总价、医生工号、医生姓名、科室、是否支付等内容进行查看,修改和删除操作;如图5-21所示。
图5-21处方查询管理界面图
5.2.3 用户功能模块
用户登录进入平台可以查看主页、个人中心、预约挂号管理、项目检查管理、处方查询管理、核酸预约管理、我的收藏管理等功能,并进行详细操作,如图5-22所示。
核酸预约管理;在核酸预约管理页面中可以查看地区、检测地点、检测机构、检测费用、提交时间、账号、姓名、手机、是否审核、审核回复、是否支付等内容进行查看、修改、删除操作;如图5-23所示。
图5-23核酸预约管理界面图
6 系统测试
系统测试是软件开发过程中最后一步,但也是不可或缺的重要的一步,没有人可以保证一次性编写完成的系统不会出错,而系统测试就是将自己开发的系统成为成品前的最后一步。在测试过程中需要进行严谨细致的测试,要尽可能全面地在不同情况下运行该系统,排除一切出现错误的可能。
该系统的系统测试主要包括功能测试,可用性测试,维护测试,性能测试等部分,测试结果如下:
6.1 功能测试
功能测试主要包括五项内容:适用性、准确性、可操作性、依从性、安全性。
本系统功能测试如表6.1所示:
表6.1 系统功能测试
测试内容 | 测试结果 |
依从性 | 正常 |
安全性 | 正常 |
可操作性 | 正常 |
适用性 | 正常 |
准确性 | 正常 |
6.2 可用性测试
可用性测试用于检测系统的可操作性、可理解性、可学习性等方面内容。具体测试方面如表6.2所示。
表6.2 系统可用性测试
测试项 | 测试人员的评价 |
操作流程是否合理 | 是 |
所需数据项是否正确显示 | 是 |
模块布局是否协调、合理 | 是 |
模块、提示内容等文字描述是否正确 | 是 |
对选中项能否发生对应切换 | 是 |
操作方式是否简单 | 是 |
窗口移动、缩放、关闭等操作是否正常 | 是 |
操作是否流畅 | 是 |
6.3 维护测试
由于篇幅的原因,本节给出系统部分功能的维护测试用例。具体测试方面如表6-3所示。
表6.3 系统用例测试
序号 | 用例名称 | 用例操作 | 预期结果 | 测试结果 |
1 | 用户登录 | 输入用户名、密码 | 输入正确用户名和密码进入系统主界面,输入错误用户名或密码无法进入并给出提示 | 符合预期 |
2 | 添加社区健康服务的医疗信息 | 在页面内输入社区健康服务的医疗信息,点击“添加”按钮 | 正确存储社区健康服务的医疗信息 | 符合预期 |
3 | 查看社区健康服务的医疗信息 | 查看列表,按照查询条件,筛选符合需要的信息,进一步详细查看社区健康服务的医疗信息 | 正确显示社区健康服务的医疗信息 | 符合预期 |
4 | 添加用户信息 | 在页面内输入用户信息,点击“添加”按钮 | 正确存储用户信息 | 符合预期 |
5 | 翻页功能 | 点击“上一页”“下一页”“首页”“尾页” | 跳转到正确页 | 符合预期 |
6.4 性能测试
性能测试主要通过模拟系统运行环境来测试该系统是否能达到顾客期待。性能测试的重要技术指标就是:系统运行速度、网络响应时间和支持并发节点数。
1)系统运行速度:得益于B/S架构,该系统能在不同配置电脑上运行并无明显卡顿,滞后,完全符合客户要求。
2)网络响应时间:网络响应时间主要包括网络最小响应时间、平均响应时间、最大响应时间三个参数。经过测试,在正常网络运营状态下,局域网内响应时间三参数为:1/2/5s,外网响应时间三参数为3/7/12s,符合客户需求,属于用户心理可承受范围。
3)支持并发节点数:经过模拟环境测试,本系统在并发节点达45个时,网络运营速度会发生较大波动,延迟时间10秒左右,符合客户需求。
6.5 测试结果分析
经过对上述测试结果分析,本系统能够在不同电脑上使用运行,具备一定安全性,用户信息不易泄露,能够日后再增删功能,能够实现所有功能,产品运行性能良好,能达到毕业设计要求。
结 论
本文主要根据目前信息技术发展现状结合人们对于社区健康服务的医疗方式的转变引出开发面向社区健康服务的医疗平台的必要性。然后根据管理员、医生和用户需求指定需求分析和可行性分析,并介绍应用到的相应技术,包括java技术,B/S结构等文中已做相关介绍和科普,然后展示相关模块完成的实现代码和截图,并做相关测试确保程序能正常运行。
本设计所实现的是一个面向社区健康服务的医疗平台,该系统严格按照需求分析制作相关模块,并利用所学知识尽力完成,但是本人由于学识浅薄,无法真正做到让该程序可以投入市场使用,仅仅简单实现部分功能,希望日后还能改善。
本系统具有以下优点:
该系统具有较高的适用性,选用B/S结构,可以在绝大部分个人平台上使用该系统。
系统将用户权限进行划分,管理员,医生和用户能看到及操作的信息不一样,三者具备不同的操作权限。
该系统操作界面简单明了,大部分人都可以正常使用。
但也存在以下问题需要改进:
运行时窗口不能被刷新,可以改进。
系统过于简单,显示的信息有限。。
不能添加多个管理员账号,如果可以则将利于发展社区健康服务的医疗规模,便于社区健康服务的医疗信息集中管理。
不能实时预约接待消息和社区健康服务的医疗反馈建议,容易被忽视,不利于管理员服务客户。
参考文献
[1] 李兴华. JavaWeb开发实战经典基础篇(第1版)[M].北京:清华大学出版社,2010.8
[2] 程志艳, 张亮. JSP实用简明教程[M].北京:清华大学出版社,2005.12
[3] 陈刚. Eclipse从入门到精通[M].北京:清华大学出版社,2005.6
[4] 李勇平.JSP应用开发详解[M].电子工业出版社,2005.10
[5] 郑自国,邹丰义.Java案例开发集锦[M].北京:电子工业出版社,2005.2
[6] 张孝祥. 深入Java Web开发内幕——核心基础[M]. 北京:电子工业出版社. 2006
[7] 李安渝. Web Services技术与实现[M]. 北京:国防工业出版社,2003
[8] 孙卫琴,李洪成.Tomcat 与 Java Web 开发技术详解[M].电子工业出版社,2003.6:1-205
[9] 曹广鑫 编著.JSP数据库项目开发宝典[M].北京:电子工业出版社,2006
[10] 王剑,邓武.基于Web服务面向服务的动态电子商务应用框架研究[J].科学技术与工程,2008,2(3):65-90
[11] 周旌恒.JSP应用开发详解(第三版)[M].北京:电子工业出版社,2004
[12] Shanliang Xue;Qing Yan Wei;Guang Ming Jiao;Dun Wen Zuo. Research Code Management System Based on J2EE[J]. Key Engineering Material.2010,Vol.431-432(188-191)
[13] Yan Ming Li;Li Feng Wan. Design On Framework Structure of College English Learning Management System Based on Struts2[J].Advanced Materials Research.2013,Vol.846-847(1558-1561)
[14] Bruce Eckel. Thinking in Java[M]. Upper Saddle River, New Jersey, USA: Prentice Hall, 2006
[15] Joshua Bloch. Effective Java[M]. Piscataway, N.J: IEEE Press, 2009
[16] Juan Lipson Vuong.A semantics-based routing scheme for grid resource discovery[M].E-Science: First
International Conference on E-Science and GridComputing,2005:58-70,90
致 谢
过程永远比结果重要。毕业设计是大学生活中最为浓墨重彩的一笔,在这个过程中不仅学到更为全面的书本和实践知识,更让我感受到了浓浓的同窗之情及师生情。虽然大学四年间做过不少实验作业,但是独立完成这样一个操作系统还是第一次,遇到困难时理所当然,我也有所心理准备,但是超出自身能力的部分还是需要寻求教师及同学的帮助。在此,我衷心地感谢我的指导教师,可以说,没有教师我就不能顺利完成这次设计。他总是在一筹莫展的时候为我指引方向。比如在开题报告,我的指导教师就细致地指导我该怎么有逻辑地将自己的想法和做法表达清楚,在此由衷感谢他。在设计的过程中,教师百忙之中也乐于给予我指导,不管多晚给教师发消息,不管是不是上班时间去教师办公室寻求帮助,他总能在第一时间对我施以援手,由于我在设计期间需要离校实习,不能及时到教师办公室检查设计进度,当时已经是晚上6点多,我匆匆赶到办公室时,教师依然在伏案办公,桌上是同学们的中期检查报告,检查完毕业设计后,他又继续查看同学们的中期报告,并督促我及时上交报告。教师给的意见总是一针见血地指出我设计及论文中的不足,并举例详细说明我的改进方法,不得不佩服他的学术水平及教学水平。在我开始着手实现这个设计的时候,通过需求分析及可行性分析对该系统有了较为浅显的认识;但是在我真正开始实现时发现事情并没有这么简单。任何成功都不是一蹴而就的,就算是一个简单的毕业设计也需要日积月累的知识和经验。于是,我便去寻求老师和同学的帮助,这也使得我得以从不同的角度重新考虑我的设计。终于,这个系统在我内心有了雏形。在真正实现这个设计的过程中,学习新知识是必定的,同时那些由于时间关系或者本来就没有掌握牢固的知识也有了进一步巩固的机会。然而最重要的是了解到如何作为一个开发人员,以开发人员的思维来看待软件开发的步骤和方法策略。
本次毕业设计的完成预示着大学时代的句号,在这个设计过程中,我收获到的绝不仅仅是做项目过程中要到的知识,更多的是同窗情谊和师生情谊,最重要的是做任何事情都要具备的认真态度,以及真正职业的思考方式方法。
最后真心祝愿同学们前程似锦,祝愿老师们工作顺利,祝学校越办越好!
核心代码展示
/**
* 公告通知
* 后端接口
* @author
* @email
* @date 2021-03-09 11:33:59
*/
@RestController
@RequestMapping("/news")
public class NewsController {
@Autowired
private NewsService newsService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( NewsEntity news){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
return R.ok().put("data", newsService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(NewsEntity news){
EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
NewsView newsView = newsService.selectView(ew);
return R.ok("查询公告通知成功").put("data", newsView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody NewsEntity news, HttpServletRequest request){
//ValidatorUtils.validateEntity(news);
newsService.updateById(news);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
newsService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = newsService.selectCount(wrapper);
return R.ok().put("count", count);
}
}