【计算机毕业设计】051网上医院预约挂号系统_医院预约挂号系统毕设-程序员宅基地

技术标签: java  计算机毕业设计  vue  后端  课程设计  

作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的网站项目。

  1. 代码可以查看文章末尾️联系方式获取,记得注明来意哦~
  2. 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
  3. 赠送开题报告模板,帮助书写开题报告。

作者完整代码目录供你选择:

  1. 《Springboot网站项目》400套
  2. 《ssm网站项目》800套
  3. 《小程序项目》300套
  4. 《App项目》500套
  5. 《Python网站项目》600套

文章末尾可以获取联系方式,需要源码或者演示视频可以联系

感兴趣大家可以点点关注收藏,后续更新更多项目资料。

项目展示

  要

如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让医院预约挂号信息的管理模式进行升级,也为了更好的维护医院预约挂号信息,网上医院预约挂号系统的开发运用就显得很有必要。并且通过开发网上医院预约挂号系统,不仅可以让所学的SSM框架得到实际运用,也可以掌握MySQL的使用方法,对自身编程能力也有一个检验和提升的过程。尤其是通过实践,可以对系统的开发流程加深印象,无论是前期的分析与设计,还是后期的编码测试等环节,都可以有一个深刻的了解。

网上医院预约挂号系统根据调研,确定管理员除了管理医生,科室和用户外,也能管理用户预约挂号信息,下载用户病例,发布健康资讯,管理客服聊天信息。医生管理本人的坐诊信息,审核预约挂号,管理用户就诊病例。用户在前台查看医生坐诊,对医生预约挂号,评价并收藏医生,查看健康资讯,联系客服,用户在后台支付挂号价格,下载病例。

借助于网上医院预约挂号系统这样的工具,让信息系统化,流程化,规范化是最终的发展结果,让其遵循实际操作流程的情况下,对医院预约挂号信息实施规范化处理,让医院预约挂号信息通过电子的方式进行保存,无论是管理人员检索医院预约挂号信息,维护医院预约挂号信息都可以便利化操作,真正缩短信息处理时间,节省人力和信息管理的成本。

关键预约挂号,联系客服,下载病例

第一章 绪论

1.1 选题背景

如今的信息时代,对信息的共享性,信息的流通性有着较高要求,尽管身边每时每刻都在产生大量信息,这些信息也都会在短时间内得到处理,并迅速传播。因为很多时候,管理层决策需要大量信息作为参考依据,也有些时候,各大企业或学校也需要使用工具宣传自身的文化理念等等,所以信息能够得到迅速传播并带给人们一定的参考价值,充分发挥信息本身的作用是很有必要的,而这些恰恰是传统模式所不能相比的。因此,借助工具让信息系统化,流程化,规范化是最终的发展结果,而这个工具则是计算机软件。本次设计实现的计算机软件网上医院预约挂号系统,让其遵循实际操作流程的情况下,对医院预约挂号信息实施规范化处理,让医院预约挂号信息通过电子的方式进行保存,无论是管理人员检索医院预约挂号信息,维护医院预约挂号信息都可以便利化操作,真正缩短信息处理时间,节省人力和信息管理的成本。

1.2 选题意义

为了让医院预约挂号信息的管理模式进行升级,也为了更好的维护医院预约挂号信息,网上医院预约挂号系统的开发运用就显得很有必要,因为它不仅可以让医院预约挂号信息的管理人员统一完成信息管理,而且还会在保证医院预约挂号信息处于安全状态的情况下,让医院预约挂号信息的处理流程缩短,让信息的管理工作量减少,让医院预约挂号信息的录入和后期维护缩短时间,以及节省管理医院预约挂号信息需要投入的精力与资金。由于网上医院预约挂号系统运用的技术比较成熟,所以它本身就具备了稳定的性能,连续24小时运行都毫无压力。而且还可以保证数据处理的质量。另外,网上医院预约挂号系统为了满足易用性的用户需求,特意在页面的设计上合理布局各元素,让重要内容和导航功能在关键区域展示,让操作系统的用户可以毫不费力的完成系统的操作。总的说来,网上医院预约挂号系统实现了信息资源的共享,让信息可以以更好的方式进行传播,让管理员的管理水平得到提升的同时,也让医院预约挂号信息计算机化。

1.3 研究内容

根据网上医院预约挂号系统设计与实现的流程来对整个系统进行说明。本文将从下述6个部分介绍系统。

第一部分:介绍选题的动因,包括介绍课题背景和意义等。

第二部分:介绍本系统选用的开发手段,包括编程语言,后台支持的数据库,开发类技术等。

第三部分:介绍系统的分析内容,包括投资决策必须的可行性研究,用户对功能的要求,系统运行的性能要求等知识。

第四部分:介绍系统的设计。包括对系统功能结构的设计,数据表结构设计等。

第五部分:介绍系统的实现。包括各模块实现的具体运行效果。

第六部分:介绍系统测试。包括检查系统功能,测试知识点的介绍等。


第二章 开发环境

对网上医院预约挂号系统进行开发,需要了解开发技术的理论与实际运用,对开发工具,尤其是数据库的使用方法需要进行掌握。

2.1 SSM框架

SSM框架是三个框架的合称,分别是Spring框架和SpringMVC框架以及MyBatis框架。三个框架随着时间的发展,越来越变成了当今Java语言的开发主流,帮助程序开发人员专注于业务逻辑以及配置相关操作,能自动生成的都支持自动生成,避免了很多耦合性出错,通过控制反转和依赖注入,让程序开发变成配置文件开发,简单明了,让创建的Java对象都能通过自身来进行创建。面向切面的操作让程序开发也变成了部门协同,公共事务都交给了SpringAOP来操作,让程序开发变得更加专注。MyBatis越来越智能,可以用配置文件和SQL语句混合开发,可以像操作Java语言一样操作数据库。

2.2 JSP技术

JSP开发技术,是Java开发网站必须要学习的一门技术。JSP不能单单说是一种语言,是Java语言诞生的公司为动态网页技术制定的一个网页技术标准。学习JSP技术之前肯定是要学习Java语言和一些HTML语言,并且要对Servlet容器进行学习,这些都属于架构上面的学习,在学校学习了基础的语言之后,再去理解架构也不过是用熟悉的Java语言重新造句而已,让学习更加容易,学习的难度也就大幅度的降低了。JSP编程过程中,可以在HTML代码中插入Java的相关代码,只需要用标签标记即可。JSP主要是用于实现用户界面方面的部分,前端开发人员只需要结合HTML的代码对页面进行布局之后,嵌入JSP操作,JSP可以获取数据库相关数据,通过Java的列表遍历方法就可以使JSP编译之后,浏览器显示的数据界面是动态化的,每次操作都可以让页面布局不乱而数据进行合理的更改显示。选择JSP技术进行网页应用程序的开发会达到很高的效率。

2.3 MYSQL数据库

MYSQL数据库起源于瑞典,但是经营不善被数据库行业老大甲骨文公司给收购了,收购了之后本以为只是为了发展Oracle数据库,然后MySQL数据库就会被雪藏,但是没想到甲骨文公司收购后对MySQL数据库进行了支持,并且让之前Oracle占据不了的中小型市场让MySQL占用,完全实现了甲骨文公司的利润增长,不管是从大型数据库还是中小型数据库,都有了自己的产品,并且可以对两种数据库的优势尽量的发挥,取长补短,MySQL数据库反而发展的越来越好。

最新版本的MYSQL数据库配备上了管理工具,因为甲骨文公司属于老牌的数据库厂商,对数据库的客户端工具自然有其他下线厂商进行研发配套,这些旁枝末节的事情并没有投入很大的精力,造成的结果就是程序开发人员还是习惯使用传统的Navicat for MySQL或者SQLyog这些MySQL数据库管理工具,大部分数据库开发调试人员还是习惯于视窗情况下看到相关数据。不管是越来越强的MySQL数据库还是市面上广泛流传的各种MySQL数据库客户端,MySQL数据库能实现本课题的开发,那么选择MySQL作为数据库是没有问题的。


第三章 系统分析

提前通过各种渠道,比如图书馆,电脑上的网站等渠道获取跟本系统有关联的资料,同时设计调查问卷,让系统的使用者参与调查,了解其对系统的需求,然后进行系统的分析,确定本系统的开发可行性,确定本系统的功能等内容。

3.1可行性分析

这部分内容主要从开发的角度和运行使用的角度等层面研究系统,确定是否投资系统,为进一步开展工作提供理论依据。

3.1.1技术可行性

本系统采用的技术和开发类语言都具备丰厚的理论基础,同时这些开发技术和开发语言在市面上都得到了广泛运用,很多功能实现的源码都以模块化的方式通过网络进行了公开,所以本系统可以参考这些代码实现功能。因此,系统开发技术可行。

3.1.2操作可行性

网上医院预约挂号系统根据用户阅读习惯对系统内容进行排版布局,把系统页面中的关键位置用来设置导航条,可以方便用户第一时间找到需要的内容,同时,页面中也会设置一些提示,用于帮助用户操作系统,因此,系统操作可行。

3.1.3经济可行性

本系统需要在硬件设备上配置开发环境,就可以开展系统的开发工作。由于本系统并不是商业化程序,所以本人学习用的笔记本,或机房电脑都符合要求。对于开发环境的配置问题,可以通过网络直接下载安装,期间并不收取费用。因此,系统经济可行。

以上就是从技术,操作,经济的层面研究系统,最终确定系统可以开展。

3.2系统流程分析

要访问网上医院预约挂号系统,需要符合要求的身份,证明访问者身份的信息就是在登录界面需要填写的信息,其中有用户名,有密码。在登录界面,系统后台也有专门编写的安全验证机制,只有信息匹配的访问者才有资格进入系统。具体流程见下图。如果访问者提供的信息在数据库中没有记录,就表明该访问者没有权限,也就无法享受系统提供的服务。

图3-1 操作流程图

在网上医院预约挂号系统里面,任何填充的数据都要经过合法性验证,具体流程见下图。只有符合条件的数据才可以保存。

图3-2 添加信息流程图

经过时间的改变,系统里面的很多数据也需要更新,更新时,同样需要检查更新的数据是否合法,具体流程见下图。只有判断符合要求的数据最终才可以保存。

图3-3 修改信息流程图

为了避免操作者大意误删数据,任何需要删除的数据,都需要反复确认,具体流程见下图。删除的数据将不会在页面中显示。

图3-4 删除信息流程图

3.3系统性能分析

用户使用系统,一是为了阅读需要的信息;二是为了享受系统提供的服务。因此一个质量较好的系统就更容易让用户频繁使用。而能够反馈系统的质量的信息就是系统的性能。常见的能够表示系统性能的指标有安全性,系统可扩展性,数据完整性等。接下来就对这些指标进行介绍。

3.3.1数据完整性

只要是系统中的数据,其长期保存在数据库里面,就要求其具备可靠性。这样才能发挥出数据具备的参考价值。一般来说,为了保证数据信息是准确的,并且可靠的,在数据处理上,包括录入数据,编辑数据等,都要求数据信息是完整登记的。同时,系统中的数据其自身需要具备完整性外,也要求数据之间产生的关系也要具备完整性。另外,在数据库中填充信息时,同样的信息应该以同样的方式出现在不同的表中。对于数据进行完整性定义,也是方便后期对数据的使用和查看。

3.3.2系统可扩展性

站在当前用户需求的角度考虑问题具有一定的局限性,由此设计的系统也一样。为了保护开发系统的财产,同时也为了让系统长远立足市场,系统开发人员就需要充分预留系统的空间,让系统在未来的日子里可以扩充功能,并进行更新和升级。这就是系统具备可扩展性的表现。

3.3.3系统安全性

系统在投入使用中,用户与系统的交互会产生数据,比如插入数据,编辑数据等操作都会产生数据。而作为系统的后台支持的数据库,主要任务就是保存这些数据。为了不让数据信息被窃取或者泄露,也是为了对系统的安全性进行保证,所以市面上也出现了很多的加密技术,其中MD5单向加密技术在系统中运用得最多。其原因有三点:

第一点,面对任意两段明文,在经过MD5加密处理后,它们的密文不一样;

第二点,面对任意一段明文,进行MD5加密处理后,其密文不变;

第三点,破解MD5加密的数据非常困难;

目前,关于MD5加密技术的代码已经可以从网站上下载,可以直接将模块化的代码在系统中直接引用。一般来说,用户注册的数据还有管理员登录系统使用的数据都是很重要的资源,所以这部分数据常常会经过加密处理,这样也就消除了系统安全上的隐患。

3.4系统功能分析

这部分内容在系统分析环节比较重要,它直接关系本系统开发的进展。无论是设计,还是实现,都是在本系统调研的功能的基础上进行。

为了直观显示系统的功能,运用用例图这样的工具显示分析的结果。分析的管理员功能如下。管理员除了管理医生,科室和用户外,也能管理用户预约挂号信息,下载用户病例,发布健康资讯,管理客服聊天信息。

图3-5 管理员用例图

为了直观显示系统的功能,运用用例图这样的工具显示分析的结果。分析的医生功能如下。医生管理本人的坐诊信息,审核预约挂号,管理用户就诊病例。

图3-6 医生用例图

为了直观显示系统的功能,运用用例图这样的工具显示分析的结果。分析的用户功能如下。用户在前台查看医生坐诊,对医生预约挂号,评价并收藏医生,查看健康资讯,联系客服,用户在后台支付挂号价格,下载病例。

图3-7 用户用例图


第四章 系统设计

设计一个系统不单单是设计系统的页面,可以说系统设计其本质是一个结合了众多设计过程的比较复杂的系统工程。一般来说,在完成系统设计时,需要了解和掌握很多设计的知识,有界面布局技术的知识,页面采用的字体和颜色的运用,还有页面空白的规范使用等,如何将这些元素进行组合,让页面可以直观表达信息内容的同时,也能维持页面整体的美观。

4.1 系统设计思想

系统开发必然需要统一设计思想。根据这个设计思想指导系统的开发,可以加快系统开发进程。根据目前用户对网上医院预约挂号系统的需求,确定下述原则即为本系统的设计思想。

(1)实用性:本系统依照用户需求设计功能,遵循用户使用方便的原则,把用户在实际工作中的各个操作细节也充分考虑进来,让使用者在没有系统操作说明书的情况下,也能很容易的完成系统的操作。

(2)先进性:为了让本系统具备高性能,设计时,需要把目前的各种成熟技术加以考虑,比如软件开发技术也要考虑进去,比如计算机技术也需要进行考虑。对于系统结构的选择,本系统将毫不犹豫的选择成熟先进的B/S结构,方便开发的同时,对于后期的维护也提供了便利。

(3)高安全性:设计本系统时,对于一些系统的关键数据要严加看管,比如管理员本人的账号和密码,一定要加密保存在数据库里面。除此以外,也需要充分使用安全措施对用户的共享资源进行保护。

(4)可维护性:设计时,要提前考虑本系统的可维护性,因为一个便于维护的系统在后期产生的维护成本将会大大降低。维护一般包括软硬件的维护还有对于网络的维护等。

(5)可扩展性:重新开发一个新系统相比在原有系统上升级,会花费大量的资金和精力,由此,一个好的系统必定具备良好的可扩展性。在用户需求变动的情况下,可以通过系统的更新和升级来持续满足用户需求,这样的系统就具备了可扩展性。

4.2功能结构设计

这部分内容使用结构图这样的工具,显示设计结果,设计的管理员功能见下图。管理员除了管理医生,科室和用户外,也能管理用户预约挂号信息,下载用户病例,发布健康资讯,管理客服聊天信息。

图4-1 管理员功能结构图

设计的医生功能见下图。医生管理本人的坐诊信息,审核预约挂号,管理用户就诊病例。

图4-2 医生功能结构图

设计的用户功能见下图。用户在前台查看医生坐诊,对医生预约挂号,评价并收藏医生,查看健康资讯,联系客服,用户在后台支付挂号价格,下载病例。

图4-3 用户功能结构图

4.3数据库设计

现如今,关系数据库已经广泛占据了市场。其具有坚实的理论基础,并且它可以很好的支持SQL这样的查询语言。所以,大部分程序的后台数据库几乎都是关系数据库。它们被用于长期对程序数据进行保存,采用的方式就是正确使用SQL语句在数据库中完成数据的插入,修改,删除等操作。

4.3.1 数据库E-R图

系统设计的内容不仅仅是对功能进行模块设计,它也包括了对数据库进行设计。功能设计这部分内容已经完成了,接下来进行的数据库设计也要根据规定的流程进行。

数据库设计这部分内容也需要参照用户的需求来完成。同时为了方便展示数据库中存在的各种关系,需要使用到E-R图,并运用E-R图中常见的符号来表示用户需求中的数据内容。所以,在建立E-R模型前,需要把用户需求的数据信息进行拆分并分析,并确定实体,实体特征,还有它们之间的关联,然后选择某个绘制E-R模型的工具比如Visio,亿图,Navicat等,用规定的符号去表示这些数据。这些常用的符号分别是矩形,菱形,椭圆,它们表示的内容分别是实体,关系,属性。

4.3.2 数据库表结构

很多时候,在进行数据表的存储结构的设计时,都会遇到一些困扰,比如每张数据表如何命名,如何设计每张数据表里面的字段,如何为各个字段进行命名,以及如何设置字段的取值范围等信息。很多初学者,在进行表结构设计时,无论是对表进行命名,还是对字段进行命名,都是采用中文的方式,导致在编码阶段,在对数据进行操作时,总是报错,影响编码人员的开发速度,而且一旦数据表结构建立之后,后期进行修改也比较麻烦。因为设计数据表的结构,就意味着程序中需要长期保存的数据都是根据这样的结构进行保存的,在后面的使用中,无论是程序数据往数据表中写入,还是需要编辑或删除数据,都是按照这个规则进行。如此说来,设计数据库也是非常重要的任务,它关系到后面程序的开发,也关系到程序的运行使用。

通常在设计数据表结构时,会把前面设计的E-R图进行表结构的转化。把实体用来代表数据表,把其属性,也就是椭圆形代表的内容用来表示数据表中的字段,然后根据程序对于数据的存储要求,设计字段的类型和长度。比如用户的年龄可以用int(整数型),设置其长度为4或者6等。总之,数据表结构一旦建立,就可以往里面填充数据了。

表4-1 客服聊天信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

userid

bigint(20)

用户id

adminid

bigint(20)

NULL

管理员id

ask

longtext

NULL

提问

reply

longtext

NULL

回复

isreply

int(11)

NULL

是否回复

表4-2 科室信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

keshi

varchar(200)

科室

表4-3 医生信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

yishenggonghao

varchar(200)

医生工号

mima

varchar(200)

密码

yishengxingming

varchar(200)

医生姓名

xingbie

varchar(200)

NULL

性别

touxiang

varchar(200)

NULL

头像

zhicheng

varchar(200)

NULL

职称

keshi

varchar(200)

NULL

科室

lianxidianhua

varchar(200)

NULL

联系电话

youxiang

varchar(200)

NULL

邮箱

money

float

0

余额

表4-4 医生坐诊信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

yishenggonghao

varchar(200)

医生工号

yishengxingming

varchar(200)

医生姓名

xingbie

varchar(200)

NULL

性别

touxiang

varchar(200)

NULL

头像

zhicheng

varchar(200)

NULL

职称

keshi

varchar(200)

NULL

科室

youxiang

varchar(200)

NULL

邮箱

shanzhanglingyu

varchar(200)

NULL

擅长领域

zuozhenshijian

varchar(200)

NULL

坐诊时间

guahaojiage

int(11)

挂号价格

gerenjieshao

longtext

NULL

个人介绍

表4-5 用户信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

yonghuming

varchar(200)

用户名

mima

varchar(200)

密码

xingming

varchar(200)

姓名

xingbie

varchar(200)

NULL

性别

touxiang

varchar(200)

NULL

头像

shouji

varchar(200)

NULL

手机

money

float

0

余额

blacklist

int(11)

0

是否拉黑

表4-6 用户病例信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

binglibianhao

varchar(200)

NULL

病例编号

binglimingcheng

varchar(200)

NULL

病例名称

yonghuming

varchar(200)

NULL

用户名

xingming

varchar(200)

NULL

姓名

shouji

varchar(200)

NULL

手机

bingqing

varchar(200)

NULL

病情

jianchaxiangmu

varchar(200)

NULL

检查项目

jianchajieguo

varchar(200)

NULL

检查结果

yaodan

varchar(200)

NULL

药单

yizhu

longtext

NULL

医嘱

zhuyishixiang

varchar(200)

NULL

注意事项

binglifujian

varchar(200)

NULL

病例附件

riqi

date

NULL

日期

yishenggonghao

varchar(200)

NULL

医生工号

zhicheng

varchar(200)

NULL

职称

表4-7 预约挂号信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

yuyuebianhao

varchar(200)

NULL

预约编号

yuyuemingcheng

varchar(200)

预约名称

yishenggonghao

varchar(200)

NULL

医生工号

yishengxingming

varchar(200)

NULL

医生姓名

touxiang

varchar(200)

NULL

头像

yuyueshijian

datetime

NULL

预约时间

guahaojiage

varchar(200)

NULL

挂号价格

yuyueneirong

longtext

NULL

预约内容

beizhu

varchar(200)

NULL

备注

yonghuming

varchar(200)

NULL

用户名

xingming

varchar(200)

NULL

姓名

shouji

varchar(200)

NULL

手机

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

ispay

varchar(200)

未支付

是否支付


第五章 系统实现

前面做的所有工作,都是为了给系统实现做准备。在系统实现期间,需要根据设计方案执行,通过运用编码技术实现一个可以处理事务的系统。

5.1管理员功能实现

5.1.1 客服管理

实现管理员权限的客服管理功能,其运行效果见下图。管理员管理客服聊天信息,一旦接收到用户提交的咨询信息,管理员即可回复。

图5-1 客服管理页面

5.1.2 医生管理

实现管理员权限的医生管理功能,其运行效果见下图。医生的基本资料,包括医生的联系电话,工号以及科室等可以让管理员增删改查管理。

图5-2 医生管理页面

5.1.3 用户管理

实现管理员权限的用户管理功能,其运行效果见下图。用户通过注册提交个人信息,管理员可以拉黑用户,也能对用户取消拉黑。

图5-3 用户管理页面

5.1.4 用户病例管理

实现管理员权限的用户病例管理功能,其运行效果见下图。用户病例附件可以让管理员下载查看,管理员也能查询用户的病例信息。

图5-4 用户病例管理页面

5.2医生功能实现

5.2.1 医生坐诊管理

实现医生权限的医生坐诊管理功能,其运行效果见下图。医生在个人后台增删改查本人的坐诊信息,坐诊信息描述了坐诊时间,挂号价格等。

图5-5 医生坐诊管理页面

5.2.2 预约挂号管理

实现医生权限的预约挂号管理功能,其运行效果见下图。用户对医生进行预约挂号,医生只需审核挂号,对前来就诊的用户登记病例信息。

图5-6 预约挂号管理页面

5.2.3 用户病例管理

实现医生权限的用户病例管理功能,其运行效果见下图。医生登记的用户病例资料都会显示在本页面,医生可以下载病例附件。

图5-7 用户病例管理页面

5.3用户功能实现

5.3.1 查看医生坐诊

实现用户权限的查看医生坐诊功能,其运行效果见下图。用户在本页面查看坐诊时间和挂号价格信息,点击预约挂号即可提交资料进行挂号,用户也能评价本页面显示的医生,或者点击红色五角星收藏医生。

图5-8 查看医生坐诊页面

5.3.2 联系客服

实现用户权限的联系客服功能,其运行效果见下图。用户在操作系统期间有疑问可以向客服进行咨询。

图5-9 联系客服页面

5.3.3 预约挂号

实现用户权限的预约挂号功能,其运行效果见下图。用户在前台提交了预约挂号信息之后,可以进入用户后台支付挂号的价格,查看挂号明细。

图5-10 预约挂号页面

5.3.4 用户病例

实现用户权限的用户病例功能,其运行效果见下图。用户就诊之后,医生会登记用户的病例,用户在本人的后台可以下载病例附件。

图5-11 用户病例页面


第六章 系统测试

一个完整的系统是经由各个子模块组合而成,而各个子模块也都是编制人员通过编程语言和技术实现的。所以对系统测试不仅包含对每个子模块进行测试,也包括对组合的系统整体进行测试,最后还需要目标用户的参与,测试编制的系统。测试期间发现的系统错误都需要记录,并花时间寻找解决办法去改正错误,提高系统的质量,也减少用户在实际使用系统中所产生的困扰。

6.1系统测试的特点

制作的系统在进行测试检验时,也具备一些特点。接下来就对这些特点进行描述:

第一点:比较完整的系统测试,需要经历端到端的测试。

第二点:测试系统一方面需要测试系统的架构,另外一方面也要测试系统的业务流程等;

第三点:测试目标系统需要对测试方法进行正确使用,降低目标系统的出错率。

总之,系统测试除了功能需要运行正常外,系统具备的性能也要得到体现,在面对故障时,系统才有能力去应对。

6.2 系统功能测试

本部分测试选用黑盒测试,主要是检查输入系统的数据,其运行后输出结果是否跟预期保持一致。

6.2.1 用户登录测试

这里选取管理员的登录功能进行检查,测试数据如下。通过不同数据录入,对系统的输出结果进行比对,看实现的登录功能是否符合要求。

表6-1 管理员登录测试表

测试功能

操作步骤

数据输入

预期结果

最终结果

管理员登录

在登录页面,根据提示填写验证信息,最后提交

验证的信息有账号,也有密码,输入的数据保证其中一个是正确的,进行测试

失败

失败

输入的数据都保持正确

成功

成功

6.2.2 医生查询功能测试

网上医院预约挂号系统存在很多数据,查询功能就可以帮助使用者快速获取信息,对该功能测试的数据见下表。只有使用者录入的关键词内容正确,才会得到匹配的结果。

表6-2医生查询功能测试表

测试功能

操作步骤

数据输入

预期结果

最终结果

医生查询功能

进入查询页面,登记要查询内容的关键词并提交

登记格式有误的内容,或者是保持医生姓名为空

失败

失败

正确录入医生姓名

成功

成功

6.3 系统测试结果

在对网上医院预约挂号系统进行功能和性能上的检测之后,也对系统的兼容性和易操作性进行了检测。最后得出网上医院预约挂号系统与用户需求保持高度一致,系统具有一定的安全性能,可以对用户提供的数据进行安全保存,另外系统不仅可以满足用户现有需求,其具备的扩展性也能让系统在未来进行功能扩展或升级,以满足用户的不同操作需求。


结  论

从设计到制作完成,本系统已经花了三四个月时间,这期间也得到了导师的帮助。不然我不可能在这么短时间完成。网上医院预约挂号系统的开发,是一个运用理论知识来指导实际工作的任务。尽管已经充分把大学期间,从书本上学习的知识运用了进来,但还是发现自身知识的匮乏。不过比较有收获的事情就是,通过本系统的开发,我对计算机软件的开发有了重新的见解,也知道它实现的具体流程,并且自己通过实际操作,不仅重新回顾和补充了以往学习的书本知识,也知道理论和实际操作之间的相互关系,并能够在一定环境下,让理论指导实践。项目能够完成,也代表着我自身开发能力的进步。

项目制作期间,我觉得最关键的环节就是系统的分析和设计,分析系统具备的功能需要多查找同类型系统的资料,并把用户需求进行参考,才可以得出本系统的需求。设计时也是在需求分析的基础上开展,也是对功能的具体细分,同时还有设计保存数据的数据库,不但要创建合适的数据表,也需要认真对表结构进行构思,尤其是表的字段设计,还有表关系的设计也是很关键的设计环节。因为后期的编码都是根据设计文档开展下去的。编码虽然对编程技术的要求较高,但是一些良好的编程习惯也不能忽视,比如注释代码,这样便于后期的程序维护。还有学会如何对变量取名,因为程序里面涉及到的变量有很多,一个方便记忆,又容易与其它变量区分的变量名称是非常有益的,可以节省编码和测试过程的时间。

网上医院预约挂号系统完全根据需求文档设计制作,可以在数据处理上发挥它的优势,而且使用者也能轻松完成对系统的操作。从界面设计的角度来看,网上医院预约挂号系统始终遵循简单大方的原则,让使用者一进入系统界面,不会产生压抑等负面情绪,而是比较愉悦的心情去操作系统。从程序编码的角度来看,本系统设计的结构比较清晰,而且编码的方式也比较规范化,在关键处也都进行了代码注释。从数据存储的角度来看,本系统选用的MySQL数据库,本身比较轻盈,但能短时间完成大量数据的处理,其提供的功能不可小觑。

作为毕设进行制作的网上医院预约挂号系统,其缺陷也是显而易见的,只能说需求文档要求的大致功能都得到实现,但是程序的有些操作逻辑还是比较复杂,并没有进行优化,在今后的时间里,将会继续学习新技术,利用重构的方式设计本系统,使之具备更强的可扩展性,让系统日趋完善。

致  谢

大学生活真的很美好,不仅可以学到很多本专业的知识,还能在本校交到兴趣相投的朋友,还有身边授课的老师也都很好,他们虽然扮演着老师的角色,但课堂下却像朋友一样交流相处。所以,在即将毕业的时刻,我又突然很庆幸来到了这里上大学。

在大学里,我觉得自己的知识增加了很多,遇到问题可以想办法去解决,锻炼了我的知识运用能力。看到自己的成长,内心非常激动,同时也想对本校的老师表示感谢。还有对我的大学校园表示感谢,以及对我的舍友和同学表示感谢。

感谢校园的授课老师和指导我毕业的老师,他们把自身所学知识都教给了我们,我们才会获取知识并取得进步,指导我毕业的老师,在我的项目制作,和后期的文档编写阶段,都尽最大努力帮助我,对我遇到的问题,他都耐心告诉我怎么去解决,让我自己在本项目制作中,得到锻炼。我也从指导老师那里学到了很多知识,在此,感谢他的帮助和引导,我才可以在短短几个月时间设计实现我的项目。

陪着我一起努力的还有我的舍友和同学,我们多次面对面交流如何寻找资料,以及一些编程的小技巧等知识,正因为我们互相帮助,才可以节省项目制作的时间,也让我有足够的精力去完善自己制作的项目。

最后,感谢学校提供的读书环境,以及给我学习锻炼的机会。


参考文献

[1]刘磊,何志华.医院挂号系统设计与实现[J].医学信息学杂志,2019,40(04):33-36.

[2]张磊.医院预约挂号系统设计与应用探究[J].中国信息化,2018(12):81-82.

[3]姜熳,严正仲,陈功,陈平.医院预约挂号平台的集成设计与实现[J].中国卫生信息管理杂志,2018,15(06):659-662.

[4]乔岚.基于MyBatis和Spring的JavaEE数据持久层的研究与应用[J].信息与电脑(理论版),2017(08):73-76.

[5]邹红霆.基于SSM框架的Web系统研究与应用[J].湖南理工学院学报(自然科学版),2017,30(01):39-43.

[6]彭影.优化Java数据库访问效率的策略研究[J].计算机产品与流通,2020(02):21.

[7]李亚娟,张宝丽,秦爽,陈岩.基于JSP技术的动态网页开发技术研究[J].电脑知识与技术,2019,15(23):262-263.

[8]杨占胜.JSP中文乱码问题的探讨与解决方法[J].福建电脑,2020,36(04):36-41.

[9]刘婷.JSP技术发展前景研究[J].信息与电脑(理论版),2019(08):70-71.

[10]蒋睿.MySQL数据库安全研究[J].电脑知识与技术,2020,16(09):3-4+21.

[11]段震.浅谈MySQL数据库有关数据备份的几种方法[J].山西电子技术,2020(02):17-18.

[12]李瑞祥,刘伟.MYSQL数据查询技巧[J].网络安全和信息化,2019(05):70-71.

[13]刘建臣.处理MySQL访问异常故障[J].网络安全和信息化,2019(12):160-161.

[14]韩禄.计算机软件开发中影响软件质量的因素[J].信息与电脑(理论版),2020,32(18):114-116.

[15]浦天宏.计算机软件开发设计的难点和对策[J].信息与电脑(理论版),2020,32(18):117-119.

[16]卫红春.信息系统分析与设计[M].北京:清华大学出版社,2016.

[17]黎连业,王华,李淑春.软件测试与测试技术[M].清华大学出版社,2016.

[18]Konstantins Gusarovs. An Analysis on Java Programming Language Decompiler Capabilities[J]. Applied Computer Systems,2018,23(2).

[19]Tan Yiyu. A Hardware-oriented Object Model for Java in an Embedded Processor[J]. Microprocessors and Microsystems,2018.

核心代码展示

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

项目推荐

【计算机毕业设计】各项技术选题汇总

【计算机毕业设计】基于Springboot的网上购物商城销售系统

【计算机毕业设计】开题报告模板2

【计算机毕业设计】任务书案例2

【网站项目】基于springboot的在线考试系统

【网站项目】基于springboot的4S店车辆管理系统

【软件设计】基于python的高校资产管理系统

【网站项目】python009基于推荐算法的电影推荐系统

【网站项目】基于Springcloud的分布式架构网上商城

文章末尾可以获取联系方式,需要源码,高清图片,演示视频可以联系(不开源)

感兴趣大家可以点点关注收藏,后续更新更多项目资料。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/licongzhuo/article/details/132123042

智能推荐

java ssm 运行步骤_SSM三大框架的运行流程、原理、核心技术详解-程序员宅基地

文章浏览阅读644次。一、Spring部分1、Spring的运行流程·第一步:加载配置文件ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");,ApplicationContext接口,它由BeanFactory接口派生而来,因而提供了BeanFactory所有的功能。配置文件中的bean的信息是被加载在HashMap中的,一个..._ssm那个文件是运行

计算机的外围设备简介_计算机外围固定-程序员宅基地

文章浏览阅读6.1k次,点赞3次,收藏5次。外围设备介绍计算机的外围设备(简称外设)虽然很多,但按功能分大类只有四类:输入、输出、存储、网络通讯。有些专业计算机需要的外围设备也不尽相同,并不都需要这四类外围设备。外围设备可以按需要组装,有些专业计算机甚至可以将存储设备和主芯片集成到一片芯片上,从而不再需要外加存储设备。最早的计算机(那时还只能称为计算器,只能做简单运算,如ABC机和ENIAC机)输入只是一些拨码开关,只能输入数字(还得是二进_计算机外围固定

java 图片中加文字_java怎么在图片上加文字-程序员宅基地

文章浏览阅读1.5k次。java 图片中加文字_java怎么在图片上加文字

GBase8cGDCA认证模拟题题库(三)_如果需要打开delete语句的审计功能,需要开启下面哪个参数-程序员宅基地

文章浏览阅读720次,点赞20次,收藏6次。B 选项,在创建模式时,可以不指定模式名。C 选项,兼容模式可选值为 AB、C、PG.安装GBase 8c分布式集群时所需的配置文件gbase.yml,在解压GBase8cV5 S3.0.0BXX CentOS x86 64.tar.bz2压缩包生成的目录中得到。真值的有效文本值是: TRUE、t、"true'、y、yes'、"1'TRUE'、true、整数范围内1~2^63-1、整数范围内-1~-2^63。GBase 8c 使用create table 创建表时,不指定参数,默认是astore,行存表。_如果需要打开delete语句的审计功能,需要开启下面哪个参数

xml文件中几个名词_xml文件里面的名词-程序员宅基地

文章浏览阅读334次。1 xmlns是XML Namespaces的缩写,中文名称是XML(标准通用标记语言的子集)命名空间。 web-app是web.xml的根节点标签名称 version是版本的意思 xmlns是web.xml文件用到的命名空间 xmlns:xsi是指web.xml遵守xml规范 xsi:schemaLocation是指具体用到的schema资源_xml文件里面的名词

【OpenGL】中点圆、椭圆生成算法_用setpixel函数中点画圆算法代码c++-程序员宅基地

文章浏览阅读1.6w次,点赞12次,收藏69次。OpenGL 中点圆、椭圆生成算法_用setpixel函数中点画圆算法代码c++

随便推点

rem和vw的分析比较_rem和vw兼容性-程序员宅基地

文章浏览阅读6.5k次,点赞3次,收藏9次。rem:首先rem是css单位,相比于px固定的像素单位,rem是相对像素单位,更加的灵活。需求存在:现在移动端各种屏幕的出现,适应性就更加的强烈。根据分辨率的不同让html的字体大小变化。一、基本原理:我们在页面中写rem,由于rem是相对于根元素字体大小来计算的,那么就可以实现自适应的效果。Rem原理举例:设计稿宽度:x px移动设备宽度:y pxHtml中font-size..._rem和vw兼容性

【Ubuntu】Ubuntu 20.04安装Python3.7_ubuntu server 20.04 完整安装python3.7-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏81次。注意:转入root权限下1. 升级# sudo apt update# sudo apt upgrade -y2. 安装编译Python源程序所需的包# sudo apt install build-essential -y# sudo apt install libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev -y# sudo apt-get install zlib1g-dev._ubuntu server 20.04 完整安装python3.7

matlab建模DNA双链,PPT绘制科研图形—DNA双链、分子细胞模型-程序员宅基地

文章浏览阅读1.3k次。原标题:PPT绘制科研图形—DNA双链、分子细胞模型 PPT绘制DNA双链 1用矩形工具画一个矩形如下,线条颜色设置为无,填充色如下图蓝色 2选中矩形框,选择菜单栏的“格式—— 编辑形状——转换为任意多边形” 3这个时候再看下“编辑形状”,可以看到“编辑顶点” 已经为可用状态 4点击“编辑顶点“,矩形框四个角变为黑色实点。可以拖动实点变为如下图示。然后在边缘上右键,选择”添加顶点“,添加如下顶点 ..._matlab双螺旋结构模型图怎么画

duilib vs2015 安装_DuiLib(1)——简单的win32窗口-程序员宅基地

文章浏览阅读169次。资源下载https://yunpan.cn/cqF6icWRN5CTc 访问密码 92e3 注:DUILIB库.7z 是vs2015下编译好的动态库及静态库,如上图所示一、新建一个win32工程项目设置中选择:debug,常规中:全程无优化-全程无优化,多线程调试 (/MTd);我的项目选择的是静态编译,使用的是静态库,就不需要带duilib.dll文件了代码如下:#include #inclu..._vs2015使用duilib

OpenGL: 渲染管线理论详解_通过此次实验你对固定渲染管线的opengl编程有什么了解。-程序员宅基地

文章浏览阅读5k次,点赞4次,收藏13次。学习着色器,并理解着色器的工作机制,就要对OpenGL的固定功能管线有深入的了解。首先要知道几个OpenGL的术语:渲染(rendering):计算机根据模型(model)创建图像的过程。模型(model):根据几何图元创建的物体(object)。几何图元:包括点、直线和多边形等,它是通过顶点(vertex)指定的。 最终完成了渲染的图像是由在屏幕上绘制的像素组成的。在内存中,和像素有关的信息(如像素的颜色)组织成位平面的形式,位平面是一块内存区域,保存了屏幕上每个像素的一个位的信息。_通过此次实验你对固定渲染管线的opengl编程有什么了解。

Android MPAndroidChart:动态添加统计数据线【8】_android 动态统计-程序员宅基地

文章浏览阅读3.9k次。Android MPAndroidChart:动态添加统计数据线【8】本文在附录相关文章6的基础上,动态的依次增加若干条统计折线(相当于批量增加数据点)。布局文件:

推荐文章

热门文章

相关标签