如何自己搭建一个企业网站,wordpress网络电台,潜江招聘资讯网,0基础学编程先学什么摘 要 针对医院门诊等问题#xff0c;对在线问诊进行研究分析#xff0c;然后开发设计出在线问诊系统以解决问题。在线问诊系统主要功能模块包括首页、轮播图管理、公告信息管理、资源管理、系统用户管理#xff08;管理员、患者用户、医生用户#xff09;、模块管理#… 摘 要 针对医院门诊等问题对在线问诊进行研究分析然后开发设计出在线问诊系统以解决问题。在线问诊系统主要功能模块包括首页、轮播图管理、公告信息管理、资源管理、系统用户管理管理员、患者用户、医生用户、模块管理科室管理、在线问诊、问诊信息、评价信息、病症类型、药物信息等采取面对对象的开发模式进行软件的开发和硬体的架设能很好的满足实际使用的需求完善了对应的软体架设以及程序编码的工作采取MySQL作为后台数据的主要存储单元采用Springboot框架、JSP技术、Ajax技术进行业务系统的编码及其开发实现了本系统的全部功能。本次报告首先分析了研究的背景、作用、意义为研究工作的合理性打下了基础。针对在线问诊系统的各项需求以及技术问题进行分析证明了系统的必要性和技术可行性然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍最后来实现在线问诊系统和部署运行使用它。 关键词在线问诊Springboot框架MySQL数据库 Springboot online consultation system Abstract Conduct research and analysis on online consultation for outpatient issues in hospitals, and then develop and design an online consultation system to solve the problem. The main functional modules of the online consultation system include homepage, carousel management, announcement information management, resource management, system user management (administrator, patient user, doctor user), module management (department management, online consultation, consultation information, evaluation information, disease types, drug information), etc. The object-oriented development model is adopted for software development and hardware installation, which can well meet the actual needs of use, We have improved the corresponding software installation and program coding work, using MySQL as the main storage unit for backend data, and using Springboot framework, JSP technology, and Ajax technology for business system coding and development, achieving all the functions of this system. This report first analyzes the background, role, and significance of the research, laying the foundation for the rationality of the research work. Analyze the various requirements and technical issues of the online consultation system, prove the necessity and feasibility of the system, and then provide a basic introduction to the technical software and design ideas required for designing the system. Finally, implement the online consultation system and deploy it for operation. Key words:Online consultation; Springboot framework; MySQL database 目 录 第1章 绪论 1.1 研究背景与意义 1.2 发展以及研究现状 第2章 相关技术介绍 6 2.1 J2EE技术 2.2 MVVM模式 2.3 B/S结构 2.4 Springboot框架 第3章 系统分析 3.1 可行性分析 3.2 功能需求分析 3.2.1 前台用户功能 3.2.2 后台管理员功能 3.3 非功能需求分析 3.4 安全性需求分析 3.4.1 系统的安全性 3.4.2 数据的安全性 3.5 数据流程分析 第4章 系统设计 4.1 系统架构设计 4.2 系统总体设计 4.3 系统功能设计 4.4 数据库设计 4.4.1 数据需求分析 4.4.2 数据库概念设计 4.4.3 数据库表设计 第5章 系统实现 5.1 数据库访问层的实现 5.2 注册模块的实现 5.3 登录模块的实现 5.4 用户资料修改模块的实现 5.5在线问诊模块的实现 5.6 评论模块的实现 5.7医生评价模块的实现 5.8 科室管理模块的实现 第6章 系统测试 6.1 测试目的 6.2 功能测试 6.3 性能测试 第7章 总结与展望 参考文献 致谢 绪论 研究背景与意义 随着越来越多的人工智能不断融入和应用于医疗领域医疗服务正逐步走入智能化在中国新医改的大背景下在线问诊已经成为民生工程的重点和热点领域。 医院在线问诊系统的研究意义 1节约病人看门诊的排队时间。传统医院的门诊手续繁琐具有很强的不确定性就诊人员流量不均有明显的高峰期和低谷期高峰期病人需要长时间排队也易出现熟人插队等现象医疗资源闲置等问题。在线问诊系统可以自动计算病人的等待时间合理分配就诊时段提高了病人就诊的效率。 2操作方便简洁。病人利用互联网就可以随时随地的在线问诊操作简单便捷方便用户使用提高了病人的就诊效率。 3增强医院的社会竞争力。在线问诊系统的出现使传统繁琐拥挤的就诊环境得到改善提高了医院的医疗服务质量增强了医院的社会竞争力提高医院的经济效益和社会效益。 发展以及研究现状 本课题研究的在线问诊系统是集科室管理、在线问诊、问诊信息、评价信息、病症类型、药物信息的综合性的一个方便民众在线问诊的网站之所以叫做在线问诊系统顾名思义本系统的使用者能够不受医院地域性的影响能够达到不论何时何地,只要有可接入网络终端移动设备就能够随时进行在线问诊。 目前国内以及有了许多类似的问诊网站比较大的如上海助医www.91985.com、浙江省人民医院www.hospitalstar.com等但是大部分的在线问诊系统都参差不起并没有形成统一的操作流程规范也有不少的站点仅仅只是针对某地区的某个医院提供预约服务因此并不能达到方便所有病患的目的,而且由于就诊观念、医院资金、技术平台等原因,在线问诊在推行过程中,也出现了一些问题,诸如问诊回复率低率低、爽约率高、难以真正遏制“号贩子”等,特别是由于需要医院提供更多的人力、物力和财力,增加了医院的运作成本。因此,一些医院尝试引入第三方机构来进行在线问诊管理,甚至有医院取消了自身的预约系统。如果说出于成本和技术的考虑,这些合作也无可厚非,但是其中越来越明显的商业化倾向却值得忧虑。 天下没有免费的午餐,各种名号的公司与医院“合作”,目的当然在于牟取利润。于是预约服务便附加了各种费用,由于缺乏统一标准,高额的预约服务费便在所难免。作为公益性机构,医院把部分稀缺优质公共医疗资源提供给合作公司,允许其收取服务资费,这种做法是否妥当本身就值得商榷。 相对国内的医疗系统发达国家医院在线问诊系统的开发建设实现已经有三十多年的历史至今有了长足的进步。有许多举世公认的成功的系统在医院有效的运转例如美国盐湖城LDS医院的HELP系统。纵观美国的HIS发展历史大约可以分为三个阶段第一个十年集中在开发医院行政管理的功能上像财务收费管理、住院病人和门诊病人的管理等。但直到1972年美国仍然没有一个成功的全面的计算机系统。第二个十年在继续完成和实现医院的在线问诊化的同时开发者的努力已经进入医疗信息的处理领域。最后一个十年至今研究者又把重点放在了信息系统的小型化、智能化、集成化的改造过程。 相关技术介绍 J2EE技术 人可以掌握多门外语而一个计算机科学家精通的大多是编程语言它不是人类的自然语言比如C语言、Java、Perl等等。由于不同的公司开发出的“中间件”不够规范所以Sun公司推出J2EE用这个标准来解决弊病。它提供了良好的机制让每个层次允许与之相对的服务器、组件运行使得系统的搭建稳定可用、开发高效、维护方便。 MVVM模式 MVVM模式是常用的开发模式主要是在代码实现上将其分为M层、V层和C层。 视图View代表用户交互界面一个 Web 应用就可能有很多的界面在 MVVM 模式中视图仅仅处理的只有数据采集、处理还有用户的请求 并不包括业务流程的处理业务流程由模型Model来处理。 模型Model就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的它就像黑箱子在接受视图请求的数据之后然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计一个典型的应用例子就是目前流行的 EJB 模型它从应用技术实现的角度对模型做了进一步的划分以便充分利用现有的组件但是它不能作为应用设计模型的框架。 控制器Controller可以理解为接收用户的请求然后视图和模型匹配在一起一起再完成用户请求。它有非常明显的作用在划分控制层上可以很清晰地告诉你它就是一个分发器选择什么样的模型、视图可以完成用户的什么样的请求。控制层不做所有的数据处理比如说用户点击一个连接控制层接受到请求之后并不处理业务信息它只是向模型传递用户的信息同时告诉模型做什么然后选择符合需求的视图返回给用户。 B/S结构 B/SBrowser/Server比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端那么工作就达到“瘦身”效果 不需要考虑不停装软件的问题。 Spring boot框架 Spring框架是Java平台上的一种开源应用框架提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制但其在Java应用中的频繁使用让它备受青睐以至于后来让它作为EJBEnterpriseJavaBeans模型的补充甚至是替补。Spring框架为开发提供了一系列的解决方案比如利用控制反转的核心特性并通过依赖注入实现控制反转来实现管理对象生命周期容器化利用面向切面编程进行声明式的事务管理整合多种持久化技术管理数据访问提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转IOC特性IOC旨在方便项目维护和测试它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期容器可以通过扫描XML文件或类上特定Java注解来配置对象开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程AOP框架SpringAOP框架基于代理模式同时运行时可配置AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性虽无法与AspectJ框架相比但通过与AspectJ的集成也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制使本地和全局事务以及嵌套事务能够与保存点一起工作并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板系统可以通过事务模板、XML或Java注解进行事务配置并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象JDO、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持同时还可以与Spring的事务管理一起使用为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够于是创建了SpringMVC。 系统分析 可行性分析 技术性方面采用当前主流的Springboot框架进行系统主体框架的搭建前台使用jqueryajax实现前台页面的设计与美观调整以上技术均由本人经过系统学习并且都是在课程设计中实践过的可以使得开发更加便捷和系统。从技术角度看这个系统是完全可以实现的。 实用性方面本次设计的主要任务是在在线问诊系统内科室管理、在线问诊、问诊信息、评价信息、病症类型、药物信息等符合当前潮流的发展。从用户角度出发同时也考虑系统运营成本和人力资源采用网络上的便捷方式实现线上业务使得业务流程更系统也更方便用户的体验比较实用。 经济性方面由于本课题中设计的在线问诊系统的主要目的是为了能够更加方便及快捷的进行信息的查询及检索服务也就是能够可以直接投入使用的信息化软件。系统的主要成本主要是集中在对使用数据后期继续维护及其管理更新这个操作上。但是一旦系统投入到实际的运行及使用之后就能够很好的提高信息查询检索的效率同时也需要有效的保证查询者的信息方面的安全性同时这个在线问诊系统所带来的实际应用方面的价值是远远的超过了实际系统进行开发与维护方面的成本因此从经济上来说开发这个软件是可行的。 功能需求分析 在线问诊系统的功能主要分为前台用户根据自己的需求进行注册登录浏览医生信息并对选中的医生进行在线操作。后台系统管理员因职责的不同分为医生和管理员医生主要对问诊信息订单进行处理而管理员主要对注册用户健康资讯、科室管理、在线问诊、问诊信息、药物信息等进行管理。 管理员用例图如下所示。 图3-1 管理员用例图 用户用例图如下所示。 图3-1 用户用例图 医生用例图如下所示。 图3-1 医生用例图 前台用户功能 用户的功能如下 注册账号用户填写个人信息并验证手机号码。 登录根据账号密码进行登录操作。 维护个人信息用户因个人信息的变更可以随时修改自己注册信息。 公告信息用户可以浏览系统公告信息。 健康资讯用户可以搜索浏览资讯新闻可对健康资讯进行点赞或收藏。 在线问诊用户可以在在线问诊页面搜索医生或科室信息浏览医生的详细信息 可对医生进行在线问诊、评价医生、点赞、收藏等操作。 药物信息用户可以在药物信息页面搜索药物了解相关药物的详细信息。 模块管理用户可以查看自己的问诊信息和评价信息。 医生用户功能如下 注册账号用户填写个人信息并验证手机号码。 登录根据账号密码进行登录操作。 维护个人信息用户因个人信息的变更可以随时修改自己注册信息。 问诊信息医生可以查看患者的详细信息查看患者的问诊信息并在线回复。 评价信息医生可以查看用户的评价信息。 后台管理员功能 管理员功能如下 修改密码管理员可以随时修改自己进入系统的登录密码以保证系统的安全性。 轮播图管理管理员可以添加或删除轮播图。 公告信息管理管理员可以添加或删除公告信息。 资源管理管理员可以查询、添加或删除健康资讯并进行资讯分类。 系统用户管理管理员可以对普通管理员、患者用户、医生用户信息进行管理。 科室管理对科室信息进行维护添加、删除、修改信息。 问诊信息管理管理员可以后台查看患者的问诊信息和医生的回复信息并进行内容管理。 在线问诊管理管理医生信息、科室信息、就职医院等信息进行管理。 评价信息管理管理用户的评价信息内容。 病症类型管理管理病症类型信息项。 药物信息管理对药物的详细信息进行管理。 非功能需求分析 首先主要考虑的是系统功能软件在具体设计的环节上是不是能够较好的满足各类用户的基本功能需求如果不能较好的满足用户需求那么这个系统的存在是没有价值的。软件系统的非功能性求分析从7个方面展开一个是性能分析针对系统一个是安全分析针对系统一个是完整度分析针对系统一个是可维护分析针对系统一个是可扩展性分析针对系统一个是适应业务的性能分析。面对在线问诊系统存在的性能、安全、扩展、完整度等7个方面性能综合比对分析后发现需要相应的非功能性需求分析。 安全性需求分析 系统的安全性 安全性对每一个系统来说都是非常重要的。安全性很好的系统可以保护企业的信息和用户的信息不被窃取。提高系统的安全性不仅是对用户的负责更是对企业的负责。尤其针对于在线问诊系统来说必须要有很好的安全性来保障整个系统。 系统具有对使用者有权限控制针对角色的不通限制使用者的权限以此来确保系统的安全性。 数据的安全性 数据库中的数据是从外界输入的当数据的输入时由于种种原因输入的数据会无效或者是脏数据。因此怎样保证输入的数据符合规定成为了数据库系统尤其是多用户的关系数据库系统首要关注的问题。 因此在写入数据库时要保证数据完整性、正确性和一致性。 数据流程分析 对系统的数据流进行分析系统的使用者分为二类一般用户患者、医生管理员。系统主要对界面信息传送登录信息的验证注册信息的接收用户各种操作的响应做处理。 系统顶层数据流图如下图所示。 图3-2 顶层数据流图 要判断用户是是什么身份是根据登录的数据来判断后跳转到对应的功能界面。在系统的内部用户就可以对数据进行操作数据库中心就可以接收到系统传输的有效数据流来对数据sql语句进行对应操作。 系统底层数据流图如下图所示。 图3-3 底层数据流图 系统可以分为前台和后台两部分每一种操作后系统都返回操作结果。前台和后台的数据连接主要通过数据库既分别对数据库做不同的操作。 系统设计 系统架构设计 本在线问诊系统的架构设计主要分为可以3层主要有Web层业务层Model层。其中web层还包括View层和Controller层Model层包括元数据扩展层和数据访问层。 系统架构如下图所示。 图4-1 系统架构 系统总体设计 在线问诊系统总体分为前台用户模块和后台管理员模块。 两个模块表现上是分别独立存在但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析并查阅相关资料后整理制作的。 综上所述系统功能结构图如下图所示。 图4-2 系统功能结构图 系统功能设计 资源管理模块可分为资讯数据浏览、资讯数据检索、资讯数据维护三个模块管理员对资讯数据有维护的权限发布新的资讯数据、更新已有的资讯数据等。 科室管理模块科室管理分为科室添加、修改和科室购买。科室信息由管理员进行修改、添加、删除操作。 在线问诊模块在线问诊分为医生信息、医生姓名、科室名称、就职医院、医生介绍的数据项。医生信息由管理员进行修改、添加、删除操作。 问诊信息管理模块问诊信息分为患者信息、患者姓名、年龄、性别、病症描述等数据 数据库设计 数据需求分析 从前面可以分析到数据库中最重要的是医生信息科室信息问诊信息同时存在患者信息。分析可以得到如下数据描述 平台用户用于记录用户的各种信息包括用户名、密码、姓名、性别、地址、邮箱、联系方式等数据项。 管理员记录管理员的登录信息。包括用户名密码权限等数据项。 科室科室名称包括科室编号、科室类别、科室图片等数据项。 医生存储各种医生信息。包括医生工号、密码、医生姓名、性别、职称、所在科室、主治症状、照片、是否审核等数据项。 问诊信息存储患者信息、姓名、性别、年龄、病症描述、图片、医生等数据项。 数据库概念设计 根据前面的数据流程图结合系统的功能模块设计设计出符合系统的各信息实体。 1前台用户实体属性图如图4-4所示。 图4-4 前台用户实体属性图 科室实体属性图如图4-5所示。 图4-5科室实体属性图 医生实体属性图如图4-6所示。 图4-6医生实体属性图 管理员实体属性图图4-7所示。 图4-7管理员实体属性图 实体联系图如4-8所示。 图4-8实体联系图 基于Springboot在线问诊系统活动图如图4-9所示。 图4-9系统活动图 数据库表设计 在线问诊系统所拥有的数据表有以下用户信息表科室信息表在线问诊表问诊信息表评价信息表、病症类型表、药物信息表。 由于数据表较多只展示系统主要数据表如下表所示。 表consultation_information (问诊信息) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 consultation_information_id int 10 0 N Y 问诊信息ID 2 consultation_number varchar 64 0 Y N 咨询编号 3 patient_information int 10 0 Y N 0 患者信息 4 patient_name varchar 64 0 Y N 患者姓名 5 patient_sex varchar 64 0 Y N 患者性别 6 patient_age varchar 64 0 Y N 患者年龄 7 description_of_symptoms text 65535 0 Y N 病症描述 8 upload_images varchar 255 0 Y N 上传图片 9 doctor_information int 10 0 Y N 0 医生信息 10 doctors_response text 65535 0 Y N 医生回复 11 recommend int 10 0 N N 0 智能推荐 12 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 13 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 表department_management (科室管理) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 department_management_id int 10 0 N Y 科室管理ID 2 department_management varchar 64 0 Y N 科室管理 3 recommend int 10 0 N N 0 智能推荐 4 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 5 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 表doctor_user (医生用户) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 doctor_user_id int 10 0 N Y 医生用户ID 2 doctor_id varchar 64 0 Y N 医生工号 3 doctors_name varchar 64 0 Y N 医生姓名 4 doctors_gender varchar 64 0 Y N 医生性别 5 department_name varchar 64 0 Y N 科室名称 6 employment_hospital varchar 64 0 Y N 就职医院 7 qualification varchar 255 0 Y N 资格证明 8 employment_certificate varchar 255 0 Y N 就职证明 9 other_certificates varchar 255 0 Y N 其他证明 10 examine_state varchar 16 0 N N 已通过 审核状态 11 recommend int 10 0 N N 0 智能推荐 12 user_id int 10 0 N N 0 用户ID 13 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 14 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 表drug_information (药物信息) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 drug_information_id int 10 0 N Y 药物信息ID 2 drug_name varchar 64 0 Y N 药物名称 3 symptom_type varchar 64 0 Y N 病症类型 4 drug_efficacy varchar 64 0 Y N 药品功效 5 unit_price_of_drugs varchar 64 0 Y N 药品单价 6 drug_introduction text 65535 0 Y N 药品介绍 7 drug_cover varchar 255 0 Y N 药品封面 8 hits int 10 0 N N 0 点击数 9 praise_len int 10 0 N N 0 点赞数 10 recommend int 10 0 N N 0 智能推荐 11 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 12 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 表evaluation_information (评价信息) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 evaluation_information_id int 10 0 N Y 评价信息ID 2 patient_information int 10 0 Y N 0 患者信息 3 patient_name varchar 64 0 Y N 患者姓名 4 doctor_information int 10 0 Y N 0 医生信息 5 doctors_name varchar 64 0 Y N 医生姓名 6 evaluation_details text 65535 0 Y N 评价详情 7 recommend int 10 0 N N 0 智能推荐 8 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 9 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 表online_consultation (在线问诊) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 online_consultation_id int 10 0 N Y 在线问诊ID 2 doctor_information int 10 0 Y N 0 医生信息 3 doctors_name varchar 64 0 Y N 医生姓名 4 doctors_gender varchar 64 0 Y N 医生性别 5 department_name varchar 64 0 Y N 科室名称 6 employment_hospital varchar 64 0 Y N 就职医院 7 doctor_introduction text 65535 0 Y N 医生介绍 8 doctors_photo varchar 255 0 Y N 医生相片 9 hits int 10 0 N N 0 点击数 10 praise_len int 10 0 N N 0 点赞数 11 recommend int 10 0 N N 0 智能推荐 12 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 13 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 表patient_users (患者用户) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 patient_users_id int 10 0 N Y 患者用户ID 2 patient_name varchar 64 0 Y N 患者姓名 3 patient_sex varchar 64 0 Y N 患者性别 4 patient_age varchar 64 0 Y N 患者年龄 5 examine_state varchar 16 0 N N 已通过 审核状态 6 recommend int 10 0 N N 0 智能推荐 7 user_id int 10 0 N N 0 用户ID 8 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 9 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 表symptom_type (病症类型) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 symptom_type_id int 10 0 N Y 病症类型ID 2 symptom_type varchar 64 0 Y N 病症类型 3 recommend int 10 0 N N 0 智能推荐 4 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 5 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 系统实现 数据库访问层的实现 该系统是通过jdbc和MySQL达成连接的新建一个jdbc.properties文件来填写与数据库连接所需要的驱动和参数。 jdbc.driverClasscom.MySQL.jdbc.Driver jdbc.urljdbc:MySQL://localhost:3306/tsi jdbc.usernameroot jdbc.password123 第一个参数代表MySQL数据库的驱动第二个参数代表要连接的数据库第三个和第四个参数代表数据库连接名和密码。 后台与数据库访问主要是通过HQL语句来进行查询的查询语句中的表名是表格的实体类名在这种查询语句中*是不允许使用的除非适合聚合函数一起使用才可以。 注册模块的实现 用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败注册页面的表单验证是通过JavaScript进行验证的用户名的长度必须在6到18之间邮箱必须带有符号密码和密码确认必须相同你输入的密码系统会根据你输入密码的强度给出指定的值电话号码和身份证号码必须要求输入格式与生活相符合当你前台验证通过的时候你点击注册表单会将你输入的值通过name值传递给后台并保存到数据库中。 用户注册流程图如下图所示。 图5-1用户注册流程图 用户注册界面如下图所示。 图5-2用户注册界面 用户注册的关键代码如下。 /** * 注册 * param user * return */ PostMapping(register) public MapString, Object signUp(RequestBody User user) { // 查询用户 MapString, String query new HashMap(); query.put(username,user.getUsername()); List list service.select(query, new HashMap()).getResultList(); if (list.size()0){ return error(30000, 用户已存在); } user.setUserId(null); user.setPassword(service.encryption(user.getPassword())); service.save(user); return success(1); } /** * 用户ID[0,8388607]用户获取其他与用户相关的数据 */ Id GeneratedValue(strategy GenerationType.IDENTITY) Column(name user_id) private Integer userId; /** * 账户状态[0,10](1可用|2异常|3已冻结|4已注销) */ Basic Column(name state) private Integer state; /** * 所在用户组[0,32767]决定用户身份和权限 */ Basic Column(name user_group) private String userGroup; /** * 上次登录时间 */ Basic Column(name login_time) private Timestamp loginTime; /** * 手机号码[0,11]用户的手机号码用于找回密码时或登录时 */ Basic Column(name phone) private String phone; /** * 手机认证[0,1](0未认证|1审核中|2已认证) */ Basic Column(name phone_state) private Integer phoneState; /** * 用户名[0,16]用户登录时所用的账户名称 */ Basic Column(name username) private String username; /** * 昵称[0,16] */ Basic Column(name nickname) private String nickname; /** * 密码[0,32]用户登录所需的密码由6-16位数字或英文组成 */ Basic Column(name password) private String password; /** * 邮箱[0,64]用户的邮箱用于找回密码时或登录时 */ Basic Column(name email) private String email; /** * 邮箱认证[0,1](0未认证|1审核中|2已认证) */ Basic Column(name email_state) private Integer emailState; /** * 头像地址[0,255] */ Basic Column(name avatar) private String avatar; /** * 创建时间 */ Basic Column(name create_time) JsonFormat(pattern yyyy-MM-dd HH:mm:ss) private Timestamp createTime; Basic Transient private String code; } 登录模块的实现 主要由两部分组成登录前的登录界面以及登录后的用户功能界面。登录界面要求用户输入用户名和密码当用户名和密码其中一个输入为空时给出提示“用户名密码不能为空”。获取用户名和密码后到数据库中查找如果用户名存在以及对应的密码正确则登录成功否则登录失败。登录失败后给出提示并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入会员的功能模块主要有会员基本信息修改已经发布药品信息管理发布信息和退出功能。退出功能是清除全局变量username的值并跳回到首页。 登录流程图如下图所示。 图5-3登录流程图 用户登录界面如下图所示。 图5-4用户登录界面 用户登录的关键代码如下。 /** * 登录 * param data * param httpServletRequest * return */ PostMapping(login) public MapString, Object login(RequestBody MapString, String data, HttpServletRequest httpServletRequest) { log.info([执行登录接口]); String username data.get(username); String email data.get(email); String phone data.get(phone); String password data.get(password); List resultList null; MapString, String map new HashMap(); if(username ! null .equals(username) false){ map.put(username, username); resultList service.select(map, new HashMap()).getResultList(); } else if(email ! null .equals(email) false){ map.put(email, email); resultList service.select(map, new HashMap()).getResultList(); } else if(phone ! null .equals(phone) false){ map.put(phone, phone); resultList service.select(map, new HashMap()).getResultList(); }else{ return error(30000, 账号或密码不能为空); } if (resultList null || password null) { return error(30000, 账号或密码不能为空); } //判断是否有这个用户 if (resultList.size()0){ return error(30000,用户不存在); } User byUsername (User) resultList.get(0); MapString, String groupMap new HashMap(); groupMap.put(name,byUsername.getUserGroup()); List groupList userGroupService.select(groupMap, new HashMap()).getResultList(); if (groupList.size()1){ return error(30000,用户组不存在); } UserGroup userGroup (UserGroup) groupList.get(0); //查询用户审核状态 if (!StringUtils.isEmpty(userGroup.getSourceTable())){ String sql select examine_state from userGroup.getSourceTable() WHERE user_id byUsername.getUserId(); String res String.valueOf(service.runCountSql(sql).getSingleResult()); if (resnull){ return error(30000,用户不存在); } if (!res.equals(已通过)){ return error(30000,该用户审核未通过); } } //查询用户状态 if (byUsername.getState()!1){ return error(30000,用户非可用状态不能登录); } String md5password service.encryption(password); if (byUsername.getPassword().equals(md5password)) { // 存储Token到数据库 AccessToken accessToken new AccessToken(); accessToken.setToken(UUID.randomUUID().toString().replaceAll(-, )); accessToken.setUser_id(byUsername.getUserId()); tokenService.save(accessToken); // 返回用户信息 JSONObject user JSONObject.parseObject(JSONObject.toJSONString(byUsername)); user.put(token, accessToken.getToken()); JSONObject ret new JSONObject(); ret.put(obj,user); return success(ret); } else { return error(30000, 账号或密码不正确); } } 用户资料修改模块的实现 用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配在用户点击修改页面的时候如果改后用户名与数据库里面重复了页面会提示该用户名已经存在了否则通过Id来查询用户并将用户的信息修改为表单提交的数据。 在线问诊模块的实现 在线提交问诊信息用户可以点击医生列表中的某个医生查看具体信息点击页面下方显示的问诊按钮完善线上问诊信息后进行提交等待后台医生进行审核回复。 在线问诊提交界面如下图所示。 图5-5在线问诊提交界面 在线问诊的关键代码如下。 PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { service.insert(service.readBody(request.getReader())); return success(1); } Transactional public MapString, Object addMap(MapString,Object map){ service.insert(map); return success(1); } public MapString,Object readBody(BufferedReader reader){ BufferedReader br null; StringBuilder sb new StringBuilder(); try{ br reader; String str; while ((str br.readLine()) ! null){ sb.append(str); } br.close(); String json sb.toString(); return JSONObject.parseObject(json, Map.class); }catch (IOException e){ e.printStackTrace(); }finally{ if (null ! br){ try{ br.close(); }catch (IOException e){ e.printStackTrace(); } } } return null; } public void insert(MapString,Object body){ StringBuffer sql new StringBuffer(INSERT INTO ); sql.append().append(table).append().append( (); for (Map.EntryString,Object entry:body.entrySet()){ sql.append(humpToLine(entry.getKey())).append(,); } sql.deleteCharAt(sql.length()-1); sql.append() VALUES (); for (Map.EntryString,Object entry:body.entrySet()){ Object value entry.getValue(); if (value instanceof String){ sql.append().append(entry.getValue()).append().append(,); }else { sql.append(entry.getValue()).append(,); } } sql.deleteCharAt(sql.length() - 1); sql.append()); log.info([{}] - 插入操作{},table,sql); Query query runCountSql(sql.toString()); query.executeUpdate(); } 评论信息模块的实现 用户可以发表自己的评论。将页面session中的用户账号userId和发表评论文字框内容传入控制层PinlunAction调用addPinlun方法通过PinlunDAOImp向数据库评论表插入将结果返回lyb.jsp界面。 评论添加流程图如下图所示。 图5-1评论添加流程图 医生评价模块的实现 患者用户可以在进行问诊后对医生评价进行提交医生评价提交流程图如下图所示。 图5-1医生评价提交流程图 医生评价提交界面如下图所示。 图5-1医生评价提交界面 科室管理模块的实现 管理员需要对科室进行添加、删除或修改详情信息。删除或修改科室时系统根据科室的状态判定为可删除状态下才会给出删除和修改链接点击删除链接按钮时请求到达后台还会先查询科室状态再次做出判定能否删除。点击修改链接按钮时会跳转到修改信息的页面重新填写好数据后数据提交到后台会对数据库中相应的记录做出修改。 添加科室时会给出数据填写的页面该页面根据填写好的科室名称同样会事先发送Ajax请求查询是否已存在数据填写好之后提交到后台会调用相关服务在数据库中插入记录。 科室管理流程图如下图所示。 图5-1科室管理流程图 科室管理页面设计效果如下图所示。 图5-1科室管理界面 科室管理的关键代码如下。 RequestMapping(/get_list) public MapString, Object getList(HttpServletRequest request) { MapString, Object map service.selectToPage(service.readQuery(request), service.readConfig(request)); return success(map); } 系统测试 测试目的 对任何系统而言测试都是必不可少的环节测试可以发现系统存在的很多问题所有的软件上线之前都应该进行充足的测试之后才能保证上线后不会Bug频发或者是功能不满足需求等问题的发生。下面分别从单元测试功能测试和用例测试来对系统进行测试以保证系统的稳定性和可靠性。 功能测试 下表是科室管理功能的测试用例检测了科室管理中对科室信息的增加删除修改查询操作是否成功运行。观察系统的响应情况得出该功能也达到了设计目标系统运行正确。 前置条件用户登录系统。 表6-1 科室管理的测试用例 功能描述 用于科室管理 测试目的 检测科室管理时的各种操作的运行情况 测试数据以及操作 预期结果 实际结果 点击添加科室必填项合法输入点击保存 提示添加成功 与预期结果一致 点击添加科室必填项输入不合法点击保存 提示必填项不能为空 与预期结果一致 点击修改科室必填项修改为空点击保存 提示必填项不能为空 与预期结果一致 点击修改科室必填项输入不合法点击保存 提示必填项不能为空 与预期结果一致 点击删除科室选择科室删除 提示删除成功 与预期结果一致 点击搜索科室输入存在的科室名 查找出科室 与预期结果一致 点击搜索科室输入不存在的科室名 不显示科室 与预期结果一致 下表是医生管理功能的测试用例检测了医生管理中对医生信息的增加删除修改查询操作是否成功运行。观察系统的响应情况得出该功能也达到了设计目标系统运行正确。 前置条件用户登录系统。 表6-2 医生管理的测试用例 功能描述 用于医生管理 测试目的 检测医生管理时的各种操作的运行情况 测试数据以及操作 预期结果 实际结果 点击添加医生必填项合法输入点击保存 提示添加成功 与预期结果一致 点击添加医生必填项输入不合法点击保存 提示必填项不能为空 与预期结果一致 点击修改医生必填项修改为空点击保存 提示必填项不能为空 与预期结果一致 点击修改医生必填项输入不合法点击保存 提示必填项不能为空 与预期结果一致 点击删除医生选择医生删除 提示删除成功 与预期结果一致 点击搜索医生输入存在的医生名 查找出医生 与预期结果一致 点击搜索医生输入不存在的医生名 不显示医生 与预期结果一致 下表是在线问诊管理功能的测试用例检测了在线问诊管理中问诊信息的提交操作是否成功运行。观察系统的响应情况得出该功能也达到了设计目标系统运行正确。 前置条件用户登录系统。 表6-3 在线问诊管理的测试用例 功能描述 用于在线问诊管理 测试目的 检测在线问诊管理时各种操作的情况 测试数据以及操作 预期结果 实际结果 未选择医生点击提交 提示请选择医生 与预期结果一致 未输入问诊信息点击提交 提示请输入问诊信息 与预期结果一致 性能测试 使用阿里云PTSPerformance Testing Service性能测试服务对线上系统进行压力测试。线上服务器环境为1核心CPU1G内存1Mbps公网带宽Centos7.0操作系统。 压测过程中使用了2台并发机器每台机器20个用户并发对系统主页登录数据查询和数据维护等模块进行并发访问测试结果是有40个用户并发时数据管理相关页面的响应时间甚至达到了7s通过查看服务器出网流量发现已经达到1381kb/s可以看出服务器的带宽已经达到峰值如果系统使用5Mbps的带宽系统的响应时间和TPS将会大大增加。在整个测试的过程中CPU的使用率占用仅8%也提现出带宽瓶颈对系统的影响非常严重。 总结与展望 随着计算机互联网技术的迅猛发展各行各业都已经实现采用计算机相关技术对日益放大的数据进行管理。该课题是在线问诊为核心展开的主要是为了实现线上医疗信息化管理的需求。 在线问诊系统的开发是以Java编程语言作为基础在Myeclipse平台上完成编码工作系统整体为B/S架构数据库系统使用MySQL。文中详细分析了在线问诊系统的研究背景、研究目的和意义、开发工具和相关技术以及系统需求、系统详细设计和系统测试等等一系列内容。系统实现了在线问诊系统所需的一些基本功能并通过测试对这些实现的功能进行了完善进而提高了系统整体的实用性。整个系统的开发过程中大量使用了Java相关的知识以及前端采用了比较流行的渐进式JavaScript框架Vue.js同时涉及到了很多开源框架和组件例如后台后端部分采用Springboot作为开发框架同时集成MyBatis、Redis等相关技术实现。 系统投入运行时各功能均运行正常。系统的每个界面的操作符合常规逻辑对使用者来说操作简单界面友好。整个系统的各个功能设计合理体现了人性化。但是由于自己在系统开发过程中对一些用到的相关知识和技术掌握不够牢固再加上自身开发经验欠缺因此系统在有些方面的功能还不够完善考虑的不够全面因此整个系统还有待日后逐步完善。 参考文献
[1]刘新宇,易蕾香,肖斌斌,赵军霞.期末在线测评系统的设计与实现[J].现代信息科技,2020,4(02):1-3.
[1]孙剑,程建军.基于微信小程序的医院远程挂号系统设计[J].电子设计工程,2021,29(22):51-54.
[2]邢娜,郑蕾,王莉.医院网站预约挂号系统设计[J].解放军医院管理杂志,2021,28(10):929-930969.
[3]晏合虎,张吉珂,陈虹全.浅析医院“号贩子”乱象整治与思考[J].现代医院,2021,21(10):1498-15011505.
[4]陶博,杨妍,王琳,王胤涛,王昆华.基于贝叶斯理论的医院预约挂号反黄牛机制研究[J].现代医药卫生,2021,37(18):3094-3097.
[5]肖扩礼.基于微信公众平台的医院预约挂号服务技术系统的实现路径研究[J].中国设备工程,2021(18):184-185.
[6]常佳宁,潘琳.一种基于Web的在线问诊系统设计[J].中国科技信息,2021(16):45-46.
[7]刘艳,王悦悦,吴丹,宁飘婷,李春燕,王宇博. Application Analysis of Appointment Registration in Hospital Queuing System during the Epidemic[J]. 应用数学进展,2021,10(06):
[8]徐安琪,韩娇娇,徐一涵,范春.智慧医院建设与规划研究[J].医学信息学杂志,2021,42(05):56-6078.
[9]叶基林. 某在线问诊预约管理系统设计与实现[D].电子科技大学,2021.
[10]李慧宁,王文军.基于JavaWeb的医院在线挂号系统设计与实现[J].电子元器件与信息技术,2021,5(02):172-175.
[11]卢鹏章.数据分析系统在医院信息系统中的应用[J].信息与电脑(理论版),2020,32(22):27-29.
[12]王丽娜,李伟庆.基于共现网络的互联网就医研究现状分析[J].电脑知识与技术,2020,16(30):47-49.
[13]宗金运,芦立华,姬庆,石静,金彦.医院智能挂号系统的设计和实现[J].福建电脑,2020,36(08):1-9.
[14] Computers; Research from Peking Union Medical College Hospital Yields New Findings on Computers (Generation of a local lung respiratory motion model using a weighted sparse algorithm and motion prior-based registration)[J]. Journal of Mathematics,2020:
[15]张玉芬.现代化医院电子信息工程建设与应用管窥[J].电子元器件与信息技术,2020,4(04):101-102119.
[16]卢友传,周建设,俞威英.门诊诊间挂号报到系统的设计与应用[J].电子技术与软件工程,2020(08):28-29.
[17]顾绍君.自助挂号收费系统在医院的应用浅谈[J].行政事业资产与财务,2019(24):8172.
致谢
本次设计历时3个月。在这个毕业设计中它离不开指导教师的指导使事情基本顺利。指导老师无论是在毕业设计历经中还是在论文做完中都给了了我特别大的助益。另1个方面教师认真负责的工作姿态谨慎的教学精神厚重的理论水准都使我获益匪浅。他勤恳谨慎的教学育人学习姿态也给我留下了特别特别深的感觉。我从老师那里学到了很多东西。在理论和实践中我的技能得到了特别大的提高。在此特向教师表示由衷的感激。
经过对该毕业设计的全部研究和开发我的系统研发经历了从需求分析到实现详细功能再到最终测试和维护的特殊进展。让我对系统研发有了更深层次的认识。如今我的动手本领单独处理疑惑的本领也获取到了特别大的演练学习增多这是这次毕业设计最好的收获。
最后在整个系统开发过程中我周围的同学和朋友给了我很多意见所以我很快就确认了系统的商业思想。在次我由衷的向他们表示感激。