springboot流浪猫狗疾病预约救治系统
摘 要
现如今在中国,随着人民生活质量的逐渐提高,以及人民群众消费能力的日渐增长,各种各样的家养小动物,已经逐渐成为人类越来越亲密的生活伴侣。并且,现如今社会竞争及其激烈,人们的生活节奏越发急促、紧张,而活泼可爱的小宠物们恰好能为处于紧张生活节奏中的人儿消除内心的孤独,并舒缓工作上带来的压力、增添生活中的情趣。但优点往往伴随着缺点,流浪宠物、宠物传染病等问题也随之潜滋暗长,所以需要一个既能满足爱宠人士的需求,又能有利于解决养宠带来的问题的平台,以平衡利与弊之间的利害关系。
本流浪猫狗疾病预约救治系统,使爱宠人士用户可以随时随地了解医院号源信息,注册用户还能很方便地进行宠物就诊等服务的预约,使用十分便捷;管理员用户还能很方便地管理网站上的各种内容,自定义功能十分强大。
本文以springboot为开发技术,实现了一个流浪猫狗疾病预约救治系统。流浪猫狗疾病预约救治系统的主要使用者分为管理员、宠物医生、宠物主人;主要功能包括有:首页、系统用户(管理员、医生用户、普通用户)、科室信息管理、医生信息管理、预约挂号管理、救治记录管理、领养信息管理、领养申请管理、系统管理、通知公告管理、资源管理、个人信息等功能。通过这些功能模块的设计,基本上实现了整个流浪猫狗疾病预约救治系统的过程。
关键词:流浪猫狗疾病预约救治系统,Springboot框架,MySQL数据库
Abstract
Nowadays in China, with the gradual improvement of people's quality of life and the increasing consumption capacity of the people, various domesticated small animals have gradually become increasingly intimate companions for human life. Moreover, with the fierce competition in today's society, people's pace of life is becoming increasingly rapid and tense. Lively and adorable pets can help people in a tense life rhythm eliminate their inner loneliness, relieve work pressure, and add fun to their lives. But advantages often come with disadvantages, and problems such as stray pets and pet infectious diseases also grow in secret. Therefore, there is a need for a platform that can not only meet the needs of pet lovers, but also help solve the problems caused by pet raising, in order to balance the benefits and drawbacks.
This stray cat and dog disease appointment and treatment system allows pet lovers to access hospital information anytime and anywhere. Registered users can also conveniently make appointments for pet medical services, making it very convenient to use; Administrator users can easily manage various contents on the website, and the customization function is very powerful.
This article uses Springboot as the development technology to implement a reservation and treatment system for stray cat and dog diseases. The main users of the appointment and treatment system for stray cat and dog diseases are administrators, pet doctors, and pet owners; The main functions include: homepage, system users (administrators, doctor users, ordinary users), department information management, doctor information management, appointment registration management, treatment record management, adoption information management, adoption application management, system management, notification announcement management, resource management, personal information, and other functions. Through the design of these functional modules, the entire process of the appointment and treatment system for stray cat and dog diseases has been basically realized.
Keywords: appointment and treatment system for stray cat and dog diseases, Springboot framework, MySQL database.
目 录
现如今在中国,随着人民生活质量的逐渐提高,以及人民群众消费能力的日渐增长,各种各样的家养小动物,已经逐渐成为人类越来越亲密的生活伴侣。并且,现如今社会竞争及其激烈,人们的生活节奏越发急促、紧张,而活泼可爱的小宠物们恰好能为处于紧张生活节奏中的人儿消除内心的孤独,并舒缓工作上带来的压力、增添生活中的情趣。但优点往往伴随着缺点,流浪宠物、宠物传染病等问题也随之潜滋暗长,所以需要一个既能满足爱宠人士的需求,又能有利于解决养宠带来的问题的平台,以平衡利与弊之间的利害关系。
本文以springboot为开发技术,实现了一个宠物医院预约系统。使爱宠人士用户可以随时随地了解医院号源信息,注册用户还能很方便地进行宠物就诊等服务的预约,使用十分便捷;管理员用户还能很方便地管理网站上的各种内容,自定义功能十分强大。
随着人们对宠物的关注度不断提高,宠物医院的服务需求也日益增长。然而,传统的预约管理方式存在一些问题,如预约信息不准确、排队时间过长等,给用户和医生带来了不便。因此,开发一个高效的宠物医院预约管理系统具有重要的现实意义。
宠物医院预约管理系统的开发将为宠物主人和医生提供更加便捷和高效的服务体验。通过该系统,用户可以方便地在线预约挂号、查询医生信息、管理宠物病历和寄养预约等功能,从而节省时间和精力。同时,医生可以更好地管理预约信息、提前做好准备工作,提高工作效率和服务质量。
国外研究现状
国外的宠物市场已经进入了成熟阶段,国外宠物互联网应用为了满足不同用户不同阶段的需求也出现了不少值得借鉴的新颖产品。在国外,宠物在发达国家里作为产业已经有一二百年的历史,形成了繁育、训练、用品用具、医疗、医药、贸易的产业链。比如一些发达国家,如美国、日本和欧洲国家,流浪猫狗疾病预约救治管理系统已经得到广泛应用。这些系统通过利用物联网、人工智能和大数据等技术,在宠物医疗领域提供了更高效、更便捷的服务。
国内研究现状
在国内,宠物医疗虽然还是一个新生行业,但流浪猫狗疾病预约救治系统的数量之多已经超出人们的意料,但其中黑流浪猫狗疾病预约救治系统也占了起码一半的比例,同时经济时报曾有一评论指出流浪猫狗疾病预约救治系统这一行业暴利在500%以上。在国内暴利行业排名中跃居到第七位,紧随在地产、服装等行业之后。国内认为宠物医疗不像人类医疗,只是涉及部分人利益,一直没有相关法律出台,所以出现了流浪猫狗疾病预约救治系统开遍地,宠物用药漫天要价的情形。时至今日,养宠物已成普遍,国家开始重视并开始定出相关法规来规范这一行业,流浪猫狗疾病预约救治系统使用管理信息系统不但让顾客对医院内的药价和治疗费一目了然,也让相关部门前来检查时有据可查,由此可见,使用管理信息系统在一定程度上能消除流浪猫狗疾病预约救治系统里那口说无凭,坑害消费者的状况,对国家规范宠物医疗行业有着重要作用。
六个章节共同组成了本文研究及设计内容,包括:
第一章:绪论。本文章的开头部分,对本题目的研究背景与意义和国内外研究现状等一些做文字性的描述。
第二章:相关技术介绍。主要介绍Springboot框架、Java嵌入式脚本语言、B/S模式等。
第三章:系统分析。包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章:系统设计。本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章:系统实现。将本系统分为前提的开发工具介绍和后期的功能代码实现。
第六章:系统测试。系统完成后,根据各个模块的测试用例才对各个模块进行功能测试。
科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的养老院信息管理系统也需要这项技术的支持。
用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。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。
- 系统分析
开发软件有没有触犯法律,这涉及到软件或者系统能不能发布的问题。如果触犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,若是抄袭别人软件,将会受到严厉惩罚。
软件产业经过多年的发展,现在已经达到了很大的规模,从事软件开发的专业人员不计其数,软件产业的重要性已经上升到了影响和推动国民经济发展的核心地位。本系统基于的架构,目前技术已经非常的成熟,是不存在技术上面难以实现的麻烦。
开发软件所需的时间、人力和物力成本,开发完成后的收益如何,从投资回报的角度软件所需功能在现有经济条件能不能实现等进行深入的考虑,都符合实际的要求。所以流浪猫狗疾病预约救治系统具有经济可行性和实用性,可以节约管理成本。
流浪猫狗疾病预约救治系统主要是为了更加地完善,对科室信息、医生信息、领养信息、救治记录等提供了方便的机制。本系统有多类使用者,分别是普通用户、医生、管理员。以下是从这三种用户的角度分别介绍本系统所要实现的功能。
普通用户:
- 注册:首先检查用户名和邮箱是否存在,如不存在即可进行注册,并将用户输入的密码进行MD5加密,注册成功后提示注册成功,并将用户信息保存到数据库中。
- 登录:使用流浪猫狗疾病预约救治系统前是需要用户登录个人账号。
- 通知公告:前台用户可以浏览医院发布的最新通知公告,了解医院活动、重要通知等信息,并可以根据发布时间和类别进行筛选和查看,及时获取医院动态。
- 宠物知识;前台用户可以浏览宠物相关的知识文章和资讯,包括宠物护理、饲养知识、常见疾病预防等,同时可以根据分类和关键词搜索感兴趣的宠物知识内容,提升对宠物健康管理的认知水平。
- 医生信息:前台用户可以查看医生的基本信息和专业资质,了解医生详情和就诊时间,还可以通过预约挂号系统进行医生的线上预约,方便用户就诊。
- 领养信息:用户可以浏览发布的宠物领养信息,了解领养宠物的基本情况和领养流程,可以根据宠物种类和地区进行搜索和筛选,申请领养喜欢的宠物并了解领养流程。
- 我的账户:用户可对个人的基本信息和登录密码进行管理。
- 个人中心:
- 预约挂号:用户后台可以查看自己的历史预约记录和查看医生回复。
- 救治记录:用户后台可以查看个人宠物的救治记录,包括宠物状态和报告附件等详细信息,方便用户了解宠物的就医历史和健康状况。
- 领养申请:用户后台可以管理个人的领养申请记录,包括查看申请状态、跟进领养进度,上传申请所需的资料和审核文件,方便用户了解领养申请的进展情况。
- 收藏:用户后台可以管理个人收藏的内容,包括收藏的宠物知识文章、医生信息、领养信息等,方便用户快速查看和管理感兴趣的内容,提升用户体验。
医生用户:
- 医生信息管理:医生可以在此模块中查看医生信息详情。
- 预约挂号管理: 医生用户可以查看自己的排班表和接受的预约挂号信息,对宠物的病情描述进行回复。
- 救治记录管理: 医生用户可以记录和管理宠物的救治记录,包括健康状况、上传报告附件等,同时可以进行记录的归类、检索和统计分析,为宠物提供持续的医疗服务。
管理员:
- 系统用户:当管理员点击“系统用户”时,可管理管理员、普通用户和医生用户,同时可对系统用户进行增删改查。
- 科室信息管理: 后台管理员可以对医院的各个科室信息进行管理,包括科室人数、科室位置、科室介绍等信息,以及对科室信息进行添加、删除等操作。
- 医生信息管理: 管理员可以在后台管理医生的基本信息,包括工作时间、医生照片、医生介绍等,还可以进行医生排班管理、权限分配和医生信息的审核与更新。
- 预约挂号管理: 管理员可以查看用户的预约挂号信息进行管理。
- 救治记录管理: 管理员可以管理宠物的救治记录进行归类、检索和统计分析。
- 领养申请管理: 管理员可以处理宠物领养申请,包括审核申请人信息、审核领养条件符合情况、领养协议签署等,并进行领养申请的审批和管理。
- 领养信息管理: 管理员可以管理宠物领养的相关信息,包括领养宠物的基本情况、发布时间等,还可以对领养信息进行发布、编辑和下架管理。
- 系统管理: 管理员可以管理网站首页的轮播图内容,包括图片上传、链接设置、轮播顺序调整等,以及对轮播图进行定时更新和维护。
- 通知公告管理: 后台管理员可以发布和管理网站的通知公告信息,包括通知内容的编辑、发布时间的设定、可见范围的管理等,还可以对通知公告进行置顶、撤回等操作。
- 资源管理:
- 宠物知识: 管理员可以管理网站的宠物知识内容,包括知识的分类、标签、内容编辑等,还可以进行知识的审核、发布和更新管理。
- 知识分类: 后台管理员可以对宠物知识进行分类管理,包括添加、编辑、删除知识分类,设置分类属性和排序,以及对分类进行归档和展示控制。
系统非功能需求有非常多,比如性能需求、可承载最大用户数、稳定性、易用性需求等。本系统分析时考虑到易用性需求,因为系统是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使系统易理解易上手易操作。
1.普通用户主要使用系统进行宠物领养申请,下图所示为普通用户的用例。
![](https://i-blog.csdnimg.cn/direct/4c86da5b1d584214bd1f336bcddb7508.png)
图3-1 用户用例图
2.下图所示为管理员的用例。
![](https://i-blog.csdnimg.cn/direct/0477dbcaadad4fa792ce7a1550b98fcc.png)
图3-2 管理员用例图
3.下图所示为医生的用例。
![](https://i-blog.csdnimg.cn/direct/153c4faf63314e84bbbf687be8248904.png)
图3-3 医生用例图
系统业务流程图如下所示。
![](https://i-blog.csdnimg.cn/direct/77eb9b5536d84384ae118faf54962fdf.png)
本系统架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
![](https://i-blog.csdnimg.cn/direct/75d7a5d68c284f998db6218581fa6bb1.png)
图4-1系统架构图
为了将系统从“做什么”落实到“怎么做”,基于系统设计原则,对系统功能进行更适合编码实现的功能划分。根据上图的系统架构设计,整理出规范的系统功能结构图,为系统的实现编码做好准备。
如下图所示为系统功能结构图。
![](https://i-blog.csdnimg.cn/direct/93ba8e6e9bec4981aa6982bb081f2d75.png)
图4-2系统功能结构图
用户管理针对所有用户和管理员。未注册用户点击注册,进入注册页面填写新用户信息,得到自定义生成账号后,注册完成。未注册用户注册的活动图如下图所示。
![](https://i-blog.csdnimg.cn/direct/8035e517a7414835ae570ccaabbd85fb.png)
图4-3未注册用户注册活动图
用户可进行登录使用更多功能,首先进入用户登录界面,输入用户账号和密码,后台对账号和密码信息进行核对验证,验证成功则页面直接显示登录用户昵称代表登录成功,否则返回用户登录界面。用户登录活动图如下图。
![](https://i-blog.csdnimg.cn/direct/d6816cc85b594ac880406007b1a63909.png)
图4-4用户登录活动图
用户登录后,进入功能页面,进行流浪猫狗疾病预约救治系统信息浏览,医生信息搜索、预约挂号、在线咨询。用户使用功能活动图如下图所示。
![](https://i-blog.csdnimg.cn/direct/6657fc3616c44ec1b943e5b5f81d4b99.png)
图4-5用户使用功能活动图
用户功能界面可对自己的密码进行修改。进入修改密码界面后核对当前密码,核对成功后填写新密码。修改密码活动图如下图所示。
![](https://i-blog.csdnimg.cn/direct/c2a3a1027ea3475ebf187d7ef82ee104.png)
图4-6修改密码活动图
流浪猫狗疾病预约救治系统采用的数据库是MySQL,该部分将根据系统需求和设计,设计合理的数据库。本系统考虑到之后系统的扩展集群,数据库将不使用外键。此外,不用外键时数据管理也较为简单,操作更加方便,性能更高。
E-R图,更加直观的告诉开发人员系统的各个数据的属性,各个数据之间的联系,各个数据的类型。能通过该模型更直观地了解数据库的设计,并根据对其逐渐改善。
本系统图设计,如下图所示。
![](https://i-blog.csdnimg.cn/direct/0da6283f755640cc823833cb7b16d91e.png)
图4-7系统E-R图
本系统根据第三范式的思想设计数据库,减少最大程度的冗余,总共建立有多个表,医生排班表、挂号预约表、宠物就诊表、药品信息表、药品入库表、药品出库表、药品类型表等。
表结构如下所示。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | adoption_application_id | int | 10 | 0 | N | Y | 领养申请ID | |
2 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
3 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
4 | pet_gender | varchar | 64 | 0 | Y | N | 宠物性别 | |
5 | pet_age | varchar | 64 | 0 | Y | N | 宠物年龄 | |
6 | user_information | int | 10 | 0 | Y | N | 0 | 用户信息 |
7 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
8 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
9 | application_content | text | 65535 | 0 | Y | N | 申请内容 | |
10 | application_status | varchar | 64 | 0 | Y | N | 申请状态 | |
11 | application_reply | text | 65535 | 0 | Y | N | 申请回复 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | adoption_information_id | int | 10 | 0 | N | Y | 领养信息ID | |
2 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
3 | pet_status | varchar | 64 | 0 | Y | N | 宠物状态 | |
4 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
5 | pet_gender | varchar | 64 | 0 | Y | N | 宠物性别 | |
6 | pet_age | varchar | 64 | 0 | Y | N | 宠物年龄 | |
7 | health_condition | varchar | 64 | 0 | Y | N | 健康状况 | |
8 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
9 | pet_pictures | varchar | 255 | 0 | Y | N | 宠物图片 | |
10 | introduction_to_pets | longtext | 2147483647 | 0 | Y | N | 宠物介绍 | |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
13 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表department_information (科室信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | department_information_id | int | 10 | 0 | N | Y | 科室信息ID | |
2 | department_number | varchar | 64 | 0 | Y | N | 科室编号 | |
3 | department_name | varchar | 64 | 0 | Y | N | 科室名称 | |
4 | number_of_departments | varchar | 64 | 0 | Y | N | 科室人数 | |
5 | department_location | varchar | 64 | 0 | Y | N | 科室位置 | |
6 | department_introduction | text | 65535 | 0 | Y | N | 科室介绍 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | doctor_information_id | int | 10 | 0 | N | Y | 医生信息ID | |
2 | department_name | varchar | 64 | 0 | Y | N | 科室名称 | |
3 | doctor_users | int | 10 | 0 | Y | N | 0 | 医生用户 |
4 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
5 | remaining_numbers | int | 10 | 0 | Y | N | 0 | 剩余号数 |
6 | working_hours | varchar | 64 | 0 | Y | N | 工作时间 | |
7 | doctors_photo | varchar | 255 | 0 | Y | N | 医生照片 | |
8 | introduction_by_doctor | longtext | 2147483647 | 0 | Y | N | 医生介绍 | |
9 | hits | 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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | doctor_users_id | int | 10 | 0 | N | Y | 医生用户ID | |
2 | department_name | varchar | 64 | 0 | Y | N | 科室名称 | |
3 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
4 | doctors_gender | varchar | 64 | 0 | Y | N | 医生性别 | |
5 | doctors_phone_number | varchar | 16 | 0 | Y | N | 医生电话 | |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
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 | 更新时间 |
表have_an_appointment_with_a_doctor (预约挂号)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | have_an_appointment_with_a_doctor_id | int | 10 | 0 | N | Y | 预约挂号ID | |
2 | department_name | varchar | 64 | 0 | Y | N | 科室名称 | |
3 | doctor_users | int | 10 | 0 | Y | N | 0 | 医生用户 |
4 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
5 | user_information | int | 10 | 0 | Y | N | 0 | 用户信息 |
6 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
7 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
8 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
9 | appointment_frequency | varchar | 64 | 0 | Y | N | 预约次数 | |
10 | appointment_remarks | text | 65535 | 0 | Y | N | 预约备注 | |
11 | appointment_status | varchar | 64 | 0 | Y | N | 预约状态 | |
12 | appointment_reply | text | 65535 | 0 | Y | N | 预约回复 | |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | contact_phone_number | varchar | 16 | 0 | Y | N | 联系电话 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | treatment_records_id | int | 10 | 0 | N | Y | 救治记录ID | |
2 | department_name | varchar | 64 | 0 | Y | N | 科室名称 | |
3 | doctor_users | int | 10 | 0 | Y | N | 0 | 医生用户 |
4 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
5 | user_information | int | 10 | 0 | Y | N | 0 | 用户信息 |
6 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
7 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
8 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
9 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
10 | pet_age | varchar | 64 | 0 | Y | N | 宠物年龄 | |
11 | pet_gender | varchar | 64 | 0 | Y | N | 宠物性别 | |
12 | health_condition | varchar | 64 | 0 | Y | N | 健康状况 | |
13 | diagnostic_results | text | 65535 | 0 | Y | N | 诊断结果 | |
14 | pet_status | varchar | 64 | 0 | Y | N | 宠物状态 | |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
系统中应用的开发工具总结如下表所示。
表5-1开发工具
名称 | 工具 | 版本 |
操作系统 IDE(Integrated Development Environment) | Windows Eclipse | 7/8/10 2017 |
服务器 | Tomcat | 9.10.7 |
JDK(Java Development Kit) | JDK | Java SE 8.0 (1.8.0) |
数据库 浏览器 界面工具 | MySQL 谷歌 Photoshop | 5.7 6.0 2016 |
未注册用户在用户注册界面uerRegister.jsp,输入新用户信息,点击注册后,新用户信息由界面传入控制层userAction,调用addUser(user)方法,通过userDAOImp向数据库用户表插入用户信息,由于用户账号是自动生成的,若成功则反馈注册成功,并提示新用户的用户账号;若失败则回到登录界面,并显示登录失败。
注册界面如下所示。
![](https://i-blog.csdnimg.cn/direct/0233334cc5d64150a2a2b8e6baf4bc29.png)
图5-1注册界面
用户注册关键代码如下所示。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, 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;
}
用户在首页点击登录,进入用户登录界面uerLogin.jsp,输入用户账号和密码,点击登录,用户账号和密码信息由界面传入控制层userAction,调用userLogin(user)方法,通过userDAOImp向数据库用户表搜索该用户账号与密码,将最终结果反馈到前端。若成功则回到首页;用户成功登录,若失败则回到登录界面,并显示登录失败。
用户点击注销,清空浏览器session值,然后返回登录页或者首页。
登录界面如下所示。
![](https://i-blog.csdnimg.cn/direct/8b55b2055b4a48fbb6d079297c107ff1.png)
图5-2登录界面
登录界面关键代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, 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;
Map<String, 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);
Map<String, 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 (res==null){
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, "账号或密码不正确");
}
}
登录用户在首页点击进入用户中心userCenter.jsp,再点击修改个人信息按钮进入userChangeInfo.jsp界面,系统根据session中存储的目前登录的用户的账号,向控制层userAction发送请求,搜索当前用户信息,userAction向userDAOImp调用queryByUserId(user),向数据库的用户表搜索当前用户信息并将用户信息以对象的形式层层返回到userChangeInfo.jsp界面,显示出当前用户的个人信息。
若用户要对个人信息进行修改,则通过修改当前信息之后点击确认,向控制层userAction发送更改后的用户信息,调用changeUser(user)方法,通过userDAOImp向数据库用户表更新用户信息,若成功则反馈注册成功,则返回的userChangeInfo.jsp界面被更改成功;若失败则显示修改失败。
![](https://i-blog.csdnimg.cn/direct/61dfec7a78b14a6784551a24a628f9de.png)
图5-3修改个人资料界面
-
-
- 医生信息模块
-
用户在登录状态下浏览医生信息时,点击某个医生信息进行查看详情,医生信息包括医生姓名、工作时间、医生简介等信息。
医生信息详情界面如下所示。
![](https://i-blog.csdnimg.cn/direct/994927849c4d481789e4d5008caefe28.png)
图5-4医生信息详情界面
-
-
- 挂号预约模块
-
用户在登录状态下点击某个医生信息进入详情页面,可以在界面下方点击预约挂号按钮,提交挂号信息,等待后台医生的审核处理。
预约挂号界面如下所示。
![](https://i-blog.csdnimg.cn/direct/5618a6f3dd154042abd9292712a143e2.png)
图5-5预约挂号界面
预约挂号的关键代码如下。
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
public Map<String,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(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,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();
}
用户可以浏览发布的宠物领养信息,了解领养宠物的基本情况和领养流程,可以根据宠物种类和地区进行搜索和筛选,申请领养喜欢的宠物并了解领养流程。
领养信息界面如下所示。
![](https://i-blog.csdnimg.cn/direct/6e695eb18ff94bcd85e29b6ad9771864.png)
图5-6领养信息列表界面
用户在登录状态下点击某个宠物进入详情页面,可以在界面下方点击领养申请按钮,提交领养申请信息,等待后台管理员的审核处理。
领养申请界面如下所示。
![](https://i-blog.csdnimg.cn/direct/ea7c65a5fe2e492dbe975bb07903a009.png)
图5-7领养申请界面
-
- 后台管理员模块
- 科室信息管理模块
- 后台管理员模块
管理员可以对科室信息进行增删改查操作,比如新添的科室信息,需要编辑科室名称、科室人数、科室位置、科室介绍等信息进行完成添加。
科室信息管理界面图如下所示。
![](https://i-blog.csdnimg.cn/direct/7f38ea359f3b46af9706a955a0aa9944.png)
图5-5科室信息管理界面
-
-
- 医生信息管理模块
-
管理员添加医生信息时,会给出数据填写的页面,主要包括医生姓名、工作时间医生照片、医生简介等信息数据,管理员对此模块可以进行增删改查,医生可以查看个人的详细信息。
医生信息管理设计效果如下图所示。
![](https://i-blog.csdnimg.cn/direct/c2df1a52c970445c97fdbbbf73dc5453.png)
图5-7医生信息管理界面
医生信息管理界面逻辑代码如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
Query count = service.avg(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
管理员添加领养信息时,会给出数据填写的页面,主要包括宠物名称、宠物品种、宠物年龄、宠物介绍等信息数据,管理员对此模块可以进行增删改查,前台用户可以查看宠物的详细信息并申请领养。
领养信息管理设计效果如下图所示。
![](https://i-blog.csdnimg.cn/direct/cb1a72a2e5ed4c96b88a554df99215f7.png)
-
-
- 预约挂号管理模块
-
医生可以查看用户提交的挂号预约信息进行就诊处理并进行添加救治记录,管理员可以对挂号预约数据进行维护管理。
预约挂号管理界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/c1f1b6eabe3c4d58a21d74454378a70e.png)
图5-8预约挂号管理界面
![](https://i-blog.csdnimg.cn/direct/bfa8cb0c4d574ac4907e7e4d5a82191d.png)
图5-9 添加救治记录界面
-
-
- 通知公告管理模块
-
管理员可以对通知公告信息进行增删改查操作。
通知公告管理页面设计效果如下图所示。
![](https://i-blog.csdnimg.cn/direct/1842ce9e6a554b72a42fde56130a11fb.png)
图5-9通知公告管理界面图
通知公告管理的关键代码如下。
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
软件测试是软件开发完成后必须经过的一道程序,它在软件开发过程中地位十分重要,需要由专业的测试工程师来对软件进行各方面的测试,大到功能模块测试,小到代码的单元测试,这对测试工程师来说需要有足够的耐心和专业的测试方案,软件测试归根结底就是对软件的结构和功能的综合测评,需要做到结构稳定和功能正确,二者兼顾。软件测试也叫寻找系统bug的过程,世界上没有完美无缺、不存在bug的软件,只能将软件的bug降到最低最小,来追求极致。
登录测试是系统最开始就要进行,测试用户能否登录,才能完成后续的功能操作。
登录测试用例表如下所示。
表6-1登录测试
用例编号 | YL001 | 程序版本 | 1.00 |
功能名称 | 使用者登录测试 | 编制人 | 李铁蛋 |
功能描述 | 根据用户的登录情况测试 | ||
用例目的 | 测试用户登录情况是否正确 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
用户名 | 为空 | 请输入用户名 | 请输入用户名 |
密码 | 为空 | 请输入密码 | 请输入密码 |
用户密码组合 | 用户名:klouse 密码 klouses | 用户与密码不匹配 | 用户与密码不匹配 |
用户密码组合 | 用户名 : klouse 密码 klouse | 进入系统 | 正确的用户名和密码 登录系统 |
管理员在发布信息页面,通过按照预先格式发布信息,如果因为输入时候缺少相关内容,就不能发布成功,且有相应错误提示
信息录入发布测试用例表如下所示。
表6-1信息录入发布测试
用例编号 | YL002 | 程序版本 | 1.00 |
功能名称 | 信息发布测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者发布或者录入信息进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者录入发布信息进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
属性1 | 为空 | 请输入属性1对应的数据 | 请输入属性1对应的数据 |
属性2 | 为空 | 请输入属性2对应的数据 | 请输入属性2对应的数据 |
属性3 | 为空 | 请输入属性3对应的数据 | 请输入属性3对应的数据 |
全部输入 | 数据均填入 | 录入发布成功 | 录入发布成功 |
管理员在更新信息页面,通过按照预先格式更新信息,如果因为输入时候缺少相关内容或者更新的数据不符合当前规范的话,就不能更新成功,且有相应错误提示
信息更新测试用例表如下所示。
表6-1信息更新测试
用例编号 | YL003 | 程序版本 | 1.00 |
功能名称 | 信息更新测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者更新信息进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者更新信息进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
属性1 | 编号:321 | 编号更新成功 | 编号更新成功 |
属性2 | 名称:名称1 | 名称更新成功 | 名称更新成功 |
属性3 | 内容:内容1234内容 | 内容更新成功 | 内容更新成功 |
全部输入 | 数据均未更改 | 更新成功 | 更新成功 |
管理员在信息页面,通过点击数据删除按钮来删除该条数据,如果该数据和其他数据有关联,则提示是否确定删除。
信息删除测试用例表如下所示。
表6-1信息删除测试
用例编号 | YL004 | 程序版本 | 1.00 |
功能名称 | 信息删除测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者删除信息进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者删除信息进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
数据1 | 无任何关联的数据1 | 数据删除成功 | 数据删除成功 |
数据2 | 和其他数据有关联的数据2 | 请确认是否删除 | 请确认是否删除 |
在经过之前的所有的工作之后,通过对软件的测试方法、测试原则还有典型的测试用例进行全面的、深入的介绍。经过对系统的全面测试,系统目前所具有的所有功能均成功的实现并且通过了测试,整个系统实现了基于 Java 开发的期望。
至此,流浪猫狗疾病预约救治系统已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如springboot、Java技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
参考文献
[1]韩小龙, 司珍, 吕晓峰, 梁博, 冯元, 方静, 李超. 基于面向对象编程的Java语言程序设计方法分析[J]. 集成电路应用, 2024, 41 (01): 228-229.
[2]赵旭东. 计算机软件开发与设计中Java语言的应用研究[J]. 信息与电脑(理论版), 2023, 35 (24): 31-33.
[3]马庆. 计算机软件开发中JAVA编程语言的应用[J]. 山西电子技术, 2023, (06): 84-86+98.
[4]Zhang Xiao, Yu Ali, Wang Xin, Zhang Xue. Sports Work Strategy of College Counselors Based on MySQL Database Big Data Analysis[J]. International Journal of Information Technology and Web Engineering (IJITWE), 2023, 18 (1): 1-14.
[5]杨华, 徐扬. MySQL数据库对中文编码支持的探讨[J]. 网络安全和信息化, 2023, (10): 157-160.
[6]Chenhao Liang. School Vehicle Management System Based on JAVA Language[J]. Academic Journal of Computing & Information Science, 2023, 6 (9):
[7]陈刚. 基于SpringBoot+Thymeleaf+MySQL的动态表单功能模块设计与实现[J]. 长江信息通信, 2023, 36 (09): 100-102.
[8]赵停停. 基于MySQL数据库技术的Web动态网页设计研究[J]. 信息与电脑(理论版), 2023, 35 (17): 174-176.
[9]田斌. 基于SSM框架的宠物医院系统设计[J]. 无线互联科技, 2023, 20 (14): 69-71.
[10]熊群毓. 大数据时代MySQL数据库的应用分析[J]. 信息与电脑(理论版), 2023, 35 (14): 209-212.
[11]李洋, 刘婷. MySQL数据库安全加固技术的研究[J]. 科技与创新, 2023, (13): 120-122.
[12]Courtney Allen, Alexandra Mazanko, Niloofar Abdehagh, Hermann J. Eberl. A New ODE-Based Julia Implementation of the Anaerobic Digestion Model No. 1 Greatly Outperforms Existing DAE-Based Java and Python Implementations[J]. Processes, 2023, 11 (7):
[13]王腾. 基于猫脸智能识别的校园流浪猫救助管理系统的设计与实现[D]. 浙江师范大学, 2023.
[14]柯琅. 流浪猫救助的知识可视化研究[D]. 湖北美术学院, 2023.
[15]王慧. 一个宠物医院管理系统的设计与实现[J]. 电脑知识与技术, 2023, 19 (10): 67-70.
[16]秦豆豆, 赵佳意, 徐池, 禚少岑. AIT——流浪猫狗救助平台管理系统的设计与实现[J]. 电子技术与软件工程, 2021, (14): 158-159.
[17]邵帅, 殷晓晨. 城市社区流浪猫救助服务设计研究[J]. 设计, 2021, 34 (01): 60-63.
[18]姜立波. 一例宠物犬脚掌碾挫外伤的救治[J]. 现代畜牧科技, 2020, (06): 75-76.
[19]邵帅. 基于城市社区的社会创新设计研究[D]. 合肥工业大学, 2020.
[20]王锋. 一种宠物医院管理系统[P]. 辽宁省: CN109493932A, 2019-03-19.
致谢
在老师的教导和帮助下,本人完成了本篇论文,老师对论文的内容、格式都有非常严格的要求,在我写毕业论文的过程中,他多次给出了建议,并定期检查,对我们严格要求,帮助我们在文档的编写上写到极致和正确,他这种教学和工作态度,让我对他产生无限的敬佩感和尊敬感。写毕业论文的同时,作为应届生,我也忙着找工作中,遇到了很多选择,感到困惑迷茫的时候,老师给了我很多意见,感谢老师的耐心开导,跟她的聊天我明白了许多。
我还要感谢我的父母,一直以来都非常支持和相信我,在精神和经济上给了我很多力量,如今我将毕业走上工作之路,终于能报答父母的养育教导之恩。还有我大学期间所有老师和全体同学,遇到问题时,这些老师同学总是无私地帮助我,真的非常感谢,我也会加油努力成长为一个有用的人。
请关注点赞+私信博主,免费领取项目源码