目 录
4.1登录模块 0
结论 31
现如今生活质量提高,人们追求精神健康,与家中宠物朝夕相处,感情深厚,宠物渐渐成了我们身边的朋友。因而宠物生病了,需要去看病,自古医院救死扶伤,生命无贵贱,无论人类还是动物都需要合适而又方便的场所看病。同时智能化医院的普及,以往兽医站开始尝试改善自我经营的诊所,采用高效的新技术向正规化且办公化管理的医院转型,这样便可使管理高效,服务优质,方便快捷地对运营的各个部门得到全方位的改善。因而基于宠物医院的办公管理系统是宠物医院的重要工具,简单、实用、灵活,可以事半功倍。
本系统是基于浏览器与服务器架构平台,完整的办公信息处理的宠物医院管理系统。采用跨平台的JAVA语言开发,利用WEB浏览器就可以使工作人员操作本应用,实现对系统各方位信息的操作,无论大型宠物医院还是小型宠物诊所,均可自建局域网管理,方便办公,减少不必要的成本消耗。该系统沿用MVVM模式,利用SSM类的封装进行逻辑控制,利用Java技术完成访问页面的展示,利用MySQL数据库存储数据,最后Tomcat服务器完成网站发布,系统可在多个环境下运行。
本课题在经过了宠物医院正常办公流程下的需求分析后,完成实现了系统用户、护士挂号、宠物病情、药品信息、拿药信息、检查项目、检查信息、收费信息等功能。
关键词:宠物医院管理系统,SSM框架,MySQL数据库
Abstract
Nowadays, the quality of life has improved, people pursue mental health, spend time with their pets at home, and have a deep relationship. Pets have gradually become friends around us. As a result, pets fall ill and need to seek medical treatment. Since ancient times, hospitals have been used to save lives and provide medical assistance. Life is of no value, and both humans and animals need suitable and convenient places to seek medical treatment. At the same time, with the popularization of intelligent hospitals, veterinary stations in the past have begun to try to improve self operated clinics, adopting efficient new technologies to transform into formal and office managed hospitals. This can make management efficient, service high-quality, and facilitate the comprehensive improvement of various operating departments. Therefore, the office management system based on pet hospitals is an important tool for pet hospitals, which is simple, practical, flexible, and can achieve twice the result with half the effort.
This system is a pet hospital management system based on a browser and server architecture platform, with complete office information processing. Developed using a cross platform JAVA language and utilizing a web browser, staff can operate this application and operate various aspects of the system information. Whether it is a large or small pet hospital, they can build their own LAN for management, making it convenient for work and reducing unnecessary cost consumption. The system follows the MVVM mode, uses SSM class encapsulation for logical control, uses Java technology to display access pages, uses MySQL database to store data, and finally completes website publishing on a Tomcat server. The system can run in multiple environments.
After analyzing the requirements under the normal office process of a pet hospital, this project has completed the functions of system users, nurse registration, pet condition, drug information, medication information, examination items, examination information, and fee information.
Key words:Pet Hospital Management System, SSM Framework, MySQL Database
1 绪论
1.1研究背景
目前,很多国内宠物医院信息管理一般采用纯手工管理。这种方法的弊端在于参与管理的人员文化水平不一,字迹不一,互相之间会导致信息传达不便,而.且纸质信息传载媒体有着一个很大的弱点就是容易损坏,造成信息丢失。在当前的信息化时代中,任何宠物医院,都需要一个实用的宠物医院信息管理系统来规范宠物医院信息的管理,这将会大大提高宠物医院的管理水平,优化资源,实现效益的最大化。
现在国内也有一些宠物医院信息管理管理的软件,采用的技术也是多种多样,但大多数宠物医院信息管理系统主要用于大型宠物医院的关键部门。至于小型宠物医院,利用宠物医院信息管理系统管理日常业务的并不多。针对国内对宠物医院信息管理软件的巨大需要和基本需要,一个好的宠物医院信息管理软件,必须功能齐全,操作简便,向用户展示简单明了的操作界面。在完善功能的同时又必须兼顾系统的灵活性,安全性。
宠物医院管理系统的优势主要表现在三个方面:
(1)宠物医院信息管理无纸化,环保又方便。传统的宠物医院信息管理方式,都是经由员工手工记录存档。这种传统的纸质宠物医院信息管理管理,一是会有很大的体力消耗,二是在精力上也是不小的付出。而无纸化宠物医院信息管理,只需在电脑前点点鼠标,在体力上几乎没有多大的消耗,而且在环保、效率、针对性日常业务方面做得要比传统的宠物医院信息管理管理科学得多。
(2)科学管理,安全可靠。传统的宠物医院信息管理管理方式,经常会由于各种原因,产生信息的丢失或是污损,给宠物医院信息管理和日常业务带来很大的不便。而对于宠物医院信息管理系统,只需做好系统数据库的保护,以上问题可以迎刃而解了。
(3)简化工作,促进其他方面的综合发展。由于宠物医院信息管理系统的介入运行,可以使医生腾出更多的时间,做更多针对性的个性化医疗服务,从而使每个病人都有机会享受更多的服务。
1.2研究现状
随着人们的生活水平的不断提高、物质生活不断丰富、精神追求不断提升,人们也越来亲睐于饲养宠物。近年来宠物市场的急剧发展,也让更多的人们关注饲养宠物的益处,特别是年轻人工作愈发繁重的背景下,留守家中的老年人变得越来越孤独,饲养宠物不失为排解孤独的一种有效途径。近几年计算机网络技术的飞速发展,网络已经成了人们日常生活中重要且必不可少的一部分,很多人想要购买宠物却不知道哪种宠物适合自己;想要了解哪些宠物的饲养习性却无处咨询;想弄清楚哪些宠物适合各年龄段的人却因实体宠物医院路途遥远等原因而作罢。于是,宠物医院管理系统应运而生。由于其方便性、快捷性、可靠性,已成为众多宠物爱好者经常光顾的地方。国内外的宠物医院管理系统众多,虽然这些系统运用的技术有所不同,但是他们实现的功能和目的都有一个共同点,对社会的影响、给人们带来的方便是一样的。他们都能满足绝大多数人的需求,使得分散于各地的宠物饲养者们能找到这样一个虚拟的宠物医院,使得大家不用再为如何领养、挂号、爱护自己的爱宠而发愁。
现在国内外也有很多宠物医院信息管理的软件,采用的技术也是多种多样,如基于MySQL和ssm模式,但大多数宠物医院信息管理系统主要用于大型宠物医院的关键部门。至于小型宠物医院,利用宠物医院信息管理系统组织管理的并不多。针对国内外对宠物医院信息管理的巨大需要和基本需要,一个好的宠物医院信息管理系统,必须功能齐全,操作简便,向用户展示友善的操作界面。在完善功能的同时又必须兼顾系统的灵活性,安全性,健壮性。
各个宠物医院管理系统在功能上会存在差异,但都在不断完善,静态网站的宠物医院也在向动态网站的宠物医院过渡。随着Internet的不断快速发展,静态Web站点的开发与维护越来越困难,一方面是信息不断更新和增加,不得不让站点维护人员经常修改页面内容;另一方面静态网页不能及时的与浏览者进行有效交互,使浏览者感觉到乏味。所以开发动态网页是很有必要的。动态网页具有交互性,它能根据用户的要求和选择而动态改变和响应。动态数据访问就是动态网页的特征,当浏览器访问服务器网页时,其Web应用程序才访问数据库,实时检索数据库,响应客户要求。
1.3论文结构与章节安排
论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对网站需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:
第一章:引言。第一章主要介绍了课题研究的背景,系统开发的现状和本文的研究现状与主要工作。
第二章:系统需求分析。第二章主要从系统的用户、功能等方面进行需求分析。
第三章:系统设计。第三章主要对系统框架、系统功能模块、数据库进行功能设计。
第四章:系统实现。第四章主要介绍了系统框架搭建、系统界面的实现。
第五章:系统测试。第五章主要对系统的部分界面进行测试并对主要功能进行测试
系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。下面是详细的介绍。
2.1 可行性分析
(1)技术可行性分析
宠物医院管理系统存储所使用的是mysql数据库以及开发中所使用的是idea、Tomcat这些开发工具的使用,能够给我们的编写工作带来许多的便利。系统使用ssm框架进行开发,使系统的可扩展性和维护性更佳,减少Java配置代码,简化编程代码,目前ssm框架也是很多企业选择的框架之一。
(2)经济可行性分析
在开发宠物医院管理系统中所使用的开发软件像idea开发工具、Tomcat8.0服务器、MySQL5.7数据库、Photoshop图片处理软件等,这些都是开源免费的,这些环境在学校都进行了系统的学习,自己能够独立操作完成,不需要额外花费,而且系统的开发工具从网上都可以直接下载,因此在经济方面是可行的。
(3)操作可行性分析
此次项目设计的时候我参考了很多类似系统的成功案例,对它们的操作界面以及功能都进行了系统的分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。因此操作可行性也没有问题。
2.2系统业务流程分析
管理员权限下的工作流程主要为:管理员通过系统界面提供登录按钮并点击,转入管理员登录界面,并在界面上填入相应的管理员账户和管理员密码,进入管理员权限下的后台系统,并且在系统左侧导航条设置了相应的操作功能。
用户权限下的工作流程主要为:用户通过系统提供的注册功能,进行身份验证并注册,而后在登录界面进行个人身份验证,并且进入用户的个人后台界面,并进行相应的操作。
宠物医院管理系统的业务流程如下图所示。
图3-3 系统业务流程图
2.3 系统功能分析
宠物医院管理系统的设计与实现是为了让企业的使用者更加方便的进行管理个人信息相关联的一些信息,使用者查找管理的时候能够节省大量的时间和精力,有效减少不必要的查找时间。系统在功能上划分为护士用户端、医生用户端和管理员端三大部分。
护士用户端:
(1)登录:护士的账号是由管理员直接添加的,护士可以同样可通过用户名和密码,然后完成拼图滑动验证后登录。
(2)个人资料:用户在登录以后可以修改自己的个人资料以及对自己账号登录的密码进行修改;
(3)药品信息:点击“药品信息”这个菜单,可以查看到系统中所有添加的药品信息,支持通过药品名称或者药品编号对药品信息进行查询,如果想要了解某一药品信息的详细信息,点击后面的“详情”会进入详情界面,如果想要选择某一药品信息,点击“拿药”按钮,根据提示填写对应的信息,点击“提交”按钮,信息没有错题在数据库就会提交成功,拿药成功;
(4)护士挂号:点击“护士挂号”这个菜单,可以查看到系统中所有添加的护士挂号,支持通过挂号时间或者护士用户对护士挂号进行查询,如果想要了解某一护士挂号的详细信息,点击后面的“详情”会进入详情界面。
(5)检查项目:点击“检查项目”这个菜单,可以查看到系统中所有添加的检查项目,支持通过项目编号或者项目位置对检查项目进行查询,如果想要了解某一检查项目的详细信息,点击后面的“详情”会进入详情界面,如果想要选择某一检查项目,点击“检查”按钮,根据提示填写对应的信息,点击“提交”按钮,信息没有错题在数据库就会提交成功,检查成功;
(6)检查信息:点击“检查信息”这个菜单,可以查看到系统中所有添加的检查信息,支持通过检查项目或者项目名称对检查信息进行查询,如果想要了解某一检查信息的详细信息,点击后面的“详情”会进入详情界面。
管理员端:
(1)个人资料:管理在登录以后可以修改自己的个人资料以及对自己账号登录的密码进行修改;
(2)用户管理:管理员可以对系统中所有的用户角色进行管控,包含了管理员、护士用户以及医生用户这三种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户。
(3)护士挂号:管理员点击“护士挂号”会显示出所有的护士挂号,支持输入挂号时间或者护士用户对护士挂号进行查询,如果想要添加新的护士挂号,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条护士挂号,点击“删除”进行删除,也可以点击后面的“就诊”“收费”按钮对护士挂号的就诊/收费信息进行更新维护;
(4)拿药信息:点击“拿药信息”这个按钮可以查看到系统中所有的拿药信息,支持通过药品名称或者药品编号进行查询拿药信息,如果想要添加新的拿药信息,点击“添加”按钮然后根据提示输入拿药信息,点击“提交”后,在拿药信息界面就会显示新增的拿药信息,可以点击某一组织查看拿药信息的详情,也可以直接点击“删除”进行删除拿药信息;
(5)检查项目:点击“检查项目”这个菜单,可以查看到系统中所有添加的检查项目,支持通过项目编号或者项目位置对检查项目进行查询,如果想要了解某一检查项目的详细信息,点击后面的“详情”会进入详情界面,如果想要选择某一检查项目,点击“检查”按钮,根据提示填写对应的信息,点击“提交”按钮,信息没有错题在数据库就会提交成功,检查成功;
(6)药品信息:点击“药品信息”这个菜单,可以查看到系统中所有添加的药品信息,支持通过药品名称或者药品编号对药品信息进行查询,如果想要了解某一药品信息的详细信息,点击后面的“详情”会进入详情界面,如果想要选择某一药品信息,点击“拿药”按钮,根据提示填写对应的信息,点击“提交”按钮,信息没有错题在数据库就会提交成功,拿药成功;
(7)宠物病情:点击“宠物病情”这个按钮可以查看到系统中所有的宠物病情,支持通过护士用户或者宠物种类进行查询宠物病情,如果想要添加新的宠物病情,点击“添加”按钮然后根据提示输入宠物病情,点击“提交”后,在宠物病情界面就会显示新增的宠物病情,可以点击某一组织查看宠物病情的详情,也可以直接点击“删除”进行删除宠物病情;
2.3.2 非功能性分析
宠物医院管理系统的非功能性需求比如宠物医院管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1宠物医院管理系统非功能需求表
安全性 | 主要指宠物医院管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指宠物医院管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响宠物医院管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着宠物医院管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 宠物医院管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.4 系统用例分析
通过2.3功能的分析,得出了本宠物医院管理系统的用例图:
护士用户角色用例如图2-3所示。
图2-3 宠物医院管理系统护士用户角色用例图
web后台管理上的管理员是维护整个宠物医院管理系统中所有数据信息的。管理员角色用例如图2-4所示。
本章主要通过对宠物医院管理系统的可行性分析、流程分析、功能需求分析、系统用例分析,确定整个宠物医院管理系统要实现的功能。同时也为宠物医院管理系统的代码实现和测试提供了标准。
本章主要讨论的内容包括宠物医院管理系统的功能模块设计、数据库系统设计。
3.1 系统架构设计
本宠物医院管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1宠物医院管理系统架构设计图
表现层(UI):又称UI层,主要完成本宠物医院管理系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本宠物医院管理系统时的舒适度。UI的界面设计也要适应不同版本的宠物医院管理系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本宠物医院管理系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本宠物医院管理系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本宠物医院管理系统的数据存储和管理功能。
3.2 系统功能模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本宠物医院管理系统中的用例。那么接下来就要开始对本宠物医院管理系统的架构、主要功能和数据库开始进行设计。宠物医院管理系统根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。
图3-2 宠物医院管理系统功能模块图
3.2 数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.2.1 数据库概念结构设计
下面是整个宠物医院管理系统中主要的数据库表总E-R实体关系图。
图3-3 宠物医院管理系统总E-R关系图
3.2.2 数据库逻辑结构设计
通过前面E-R关系图可以看到项目需要创建很多个数据表。以下是项目中的主要数据库表的关系模型:
表charging_information (收费信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | charging_information_id | int | 10 | 0 | N | Y | 收费信息ID | |
2 | nurse_user | int | 10 | 0 | Y | N | 0 | 护士用户 |
3 | nurse_name | varchar | 64 | 0 | Y | N | 护士姓名 | |
4 | visit_number | varchar | 64 | 0 | Y | N | 就诊号码 | |
5 | charge_date | date | 10 | 0 | Y | N | 收费日期 | |
6 | visit_fees | int | 10 | 0 | Y | N | 0 | 就诊费用 |
7 | drug_expenses | int | 10 | 0 | Y | N | 0 | 药品费用 |
8 | inspection_fee | int | 10 | 0 | Y | N | 0 | 检查费用 |
9 | total_expenses | varchar | 64 | 0 | Y | N | 合计费用 | |
10 | payment_status | varchar | 64 | 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 | 更新时间 |
表doctor_user (医生用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | doctor_user_id | int | 10 | 0 | N | Y | 医生用户ID | |
2 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
3 | doctors_gender | varchar | 64 | 0 | Y | N | 医生性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
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 | 更新时间 |
表drug_information (药品信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | drug_information_id | int | 10 | 0 | N | Y | 药品信息ID | |
2 | drug_name | varchar | 64 | 0 | Y | N | 药品名称 | |
3 | drug_no | varchar | 64 | 0 | Y | N | 药品编号 | |
4 | drug_quantity | int | 10 | 0 | Y | N | 0 | 药品数量 |
5 | drug_prices | int | 10 | 0 | Y | N | 0 | 药品价格 |
6 | manufacturer | varchar | 64 | 0 | Y | N | 生产厂家 | |
7 | drug_specification | varchar | 64 | 0 | Y | N | 药品规格 | |
8 | medicine_picture | varchar | 255 | 0 | Y | N | 药品图片 | |
9 | drug_usage | varchar | 64 | 0 | Y | N | 药品用法 | |
10 | drug_action | varchar | 64 | 0 | Y | N | 药品作用 | |
11 | pharmaceutical_ingredients | text | 65535 | 0 | Y | N | 药品成分 | |
12 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表inspection_information (检查信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | inspection_information_id | int | 10 | 0 | N | Y | 检查信息ID | |
2 | inspection_items | varchar | 64 | 0 | Y | N | 检查项目 | |
3 | project_no | varchar | 64 | 0 | Y | N | 项目编号 | |
4 | project_location | varchar | 64 | 0 | Y | N | 项目位置 | |
5 | project_price | int | 10 | 0 | Y | N | 0 | 项目价格 |
6 | examination_nurse | int | 10 | 0 | Y | N | 0 | 检查护士 |
7 | visit_number | varchar | 64 | 0 | Y | N | 就诊号码 | |
8 | project_documents | varchar | 255 | 0 | Y | N | 项目单据 | |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表inspection_items (检查项目)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | inspection_items_id | int | 10 | 0 | N | Y | 检查项目ID | |
2 | inspection_items | varchar | 64 | 0 | Y | N | 检查项目 | |
3 | project_no | varchar | 64 | 0 | Y | N | 项目编号 | |
4 | project_location | varchar | 64 | 0 | Y | N | 项目位置 | |
5 | project_price | int | 10 | 0 | Y | N | 0 | 项目价格 |
6 | test_specimen | varchar | 64 | 0 | Y | N | 检验标本 | |
7 | project_details | text | 65535 | 0 | Y | N | 项目详情 | |
8 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表medication_information (拿药信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | medication_information_id | int | 10 | 0 | N | Y | 拿药信息ID | |
2 | drug_name | varchar | 64 | 0 | Y | N | 药品名称 | |
3 | drug_no | varchar | 64 | 0 | Y | N | 药品编号 | |
4 | drug_prices | int | 10 | 0 | Y | N | 0 | 药品价格 |
5 | quantity_of_medicine_taken | int | 10 | 0 | Y | N | 0 | 拿药数量 |
6 | total_price_of_drugs | varchar | 64 | 0 | Y | N | 药品总价 | |
7 | medication_nurse | int | 10 | 0 | Y | N | 0 | 拿药护士 |
8 | visit_number | varchar | 64 | 0 | Y | N | 就诊号码 | |
9 | doctors_prescription | varchar | 255 | 0 | Y | N | 医生药方 | |
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 | 更新时间 |
表nurse_registration (护士挂号)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | nurse_registration_id | int | 10 | 0 | N | Y | 护士挂号ID | |
2 | registration_time | datetime | 19 | 0 | Y | N | 挂号时间 | |
3 | nurse_user | int | 10 | 0 | Y | N | 0 | 护士用户 |
4 | nurse_name | varchar | 64 | 0 | Y | N | 护士姓名 | |
5 | pet_category | varchar | 64 | 0 | Y | N | 宠物种类 | |
6 | visit_number | varchar | 64 | 0 | Y | N | 就诊号码 | |
7 | doctor_user | int | 10 | 0 | Y | N | 0 | 医生用户 |
8 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表nurse_user (护士用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | nurse_user_id | int | 10 | 0 | N | Y | 护士用户ID | |
2 | nurse_name | varchar | 64 | 0 | Y | N | 护士姓名 | |
3 | nurse_gender | varchar | 64 | 0 | Y | N | 护士性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
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 | 更新时间 |
表pet_condition (宠物病情)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_condition_id | int | 10 | 0 | N | Y | 宠物病情ID | |
2 | nurse_user | int | 10 | 0 | Y | N | 0 | 护士用户 |
3 | nurse_name | varchar | 64 | 0 | Y | N | 护士姓名 | |
4 | pet_category | varchar | 64 | 0 | Y | N | 宠物种类 | |
5 | visit_number | varchar | 64 | 0 | Y | N | 就诊号码 | |
6 | doctor_user | int | 10 | 0 | Y | N | 0 | 医生用户 |
7 | pet_symptoms | text | 65535 | 0 | Y | N | 宠物症状 | |
8 | disease_diagnosis | text | 65535 | 0 | Y | N | 病情诊断 | |
9 | doctors_prescription | varchar | 255 | 0 | Y | N | 医生药方 | |
10 | inspection_items | varchar | 255 | 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 | 更新时间 |
3.4本章小结
整个宠物医院管理系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4.1登录模块
管理员、医生和护士在登录界面输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对管理员和员工的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其主界面展示如下图4.1所示。
图4.1 登录界面图
登录代码如下:
/**
* 登录
* @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;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}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.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
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, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
4.2用户管理模块
管理员可以对系统中所有的用户角色进行管控,包含了管理员、医生以及护士这两种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户,这里以医生用户为例。界面如下图4.2所示。
图4.2用户管理界面图
用户管理的关键代码如下。
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
4.3护士挂号模块
点击“护士挂号”这个菜单,可以查看到系统中所有添加的护士挂号,支持通过挂号时间或者护士用户对护士挂号进行查询,如果想要了解某一护士挂号的详细信息,点击后面的“详情”会进入详情界面,护士和管理员如果想要选择某一护士挂号,点击“就诊”“拿药”按钮,根据提示填写对应的信息,点击“提交”按钮,信息没有错误在数据库就会提交成功,拿药成功。界面如下图4.3所示。
图4.3护士挂号界面图
4.4宠物病情模块
管理员和护士点击“宠物病情”这个按钮可以查看到系统中的宠物病情信息,支持通过护士用户或者护士姓名进行查询宠物病情信息,如果想要添加新的宠物病情信息,点击“添加”按钮然后根据提示输入宠物病情信息,点击“提交”后,在宠物病情界面就会显示新增的宠物病情信息,可以点击某一宠物病情信息查看宠物病情信息的详情,也可以直接点击“删除”进行删除宠物病情。界面如下图4.4所示。
图4.4宠物病情界面图
宠物病情关键代码如下所示。
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
4.5药品信息模块
管理员点击“药品信息”会显示出所有的药品信息,支持输入药品名称或者药品编号对药品信息进行查询,如果想要添加新的药品信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条药品信息,点击“删除”进行删除,也可以点击后面的“拿药”按钮对药品信息的拿药信息进行更新维护。界面如下图4.5所示。
图4.5 药品信息界面
4.6拿药信息模块
管理员和护士点击“拿药信息”这个按钮可以查看到系统中的拿药信息,支持通过药品名称或者就诊号码进行查询拿药信息,如果想要添加新的拿药信息,点击“添加”按钮然后根据提示输入拿药信息,点击“提交”后,在拿药信息界面就会显示新增的拿药信息,可以点击某一拿药信息查看拿药信息的详情,也可以直接点击“删除”进行删除拿药信息。界面如下图4.6所示。
图4.6 拿药信息界面图
4.7检查项目模块
管理员点击“检查项目”会显示出所有的检查项目,支持输入检查项目或者项目位置对检查项目进行查询,如果想要添加新的检查项目,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条检查项目,点击“删除”进行删除,也可以点击后面的“检查”按钮对检查项目的检查信息进行更新维护。界面如下图4.7所示。
图4.7 检查项目界面
4.8收费信息模块
管理员和护士点击“收费信息”这个按钮可以查看到系统中的收费信息,支持通过护士姓名或者就诊号码进行查询收费信息,如果想要添加新的收费信息,点击“添加”按钮然后根据提示输入收费信息,点击“提交”后,在收费信息界面就会显示新增的收费信息,可以点击某一收费信息查看收费信息的详情,也可以直接点击“删除”进行删除收费信息。界面如下图4.8所示。
图4.8 收费信息界面图
5系统测试
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
表5.1 用户登录功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
用户登录模块测试 | 用户登录成功的情况 | 点击前登录界面输入账号和密码分别输入admin和admin后点击“登录”按钮。 | 登录成功并调整到用户界面 | 正确 |
检查信息添加功能测试:
表5.2 检查信息添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
检查信息添加模块测试 | 检查信息添加成功的情况 | 在检查信息的页面中将点击添加,输入检查相关信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
检查信息添加模块测试 | 检查信息添加失败的情况 | 在检查信息页面中不填写的检查项目,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
查询收费信息功能模块测试:
表5.3 查询收费信息功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
查询收费信息功能测试 | 查询成功的情况 | 在收费信息界面输入收费日期进行查询 | 查询成功 | 正确 |
药品信息添加功能测试:
表5.4 药品添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
药品添加模块测试 | 药品添加成功的情况 | 在药品的页面中将点击添加,输入药品相关信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
药品添加模块测试 | 药品添加失败的情况 | 在药品页面中不填写的药品名称或者药品编号,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
5.3 系统测试结果
通过编写宠物医院管理系统的测试用例,已经检测完毕用户的登录模块、检查信息信息添加模块、查询收费信息模块、药品添加模块的功能测试,在对以上功能得测试过程中,发现了系统中的很多漏送并进行了完善,经过多人在线进行测试,系统完全可以正常运行,当然在后期的维护中系统将不断完善。
至此,宠物医院管理系统已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、ssm技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
[1]王常珏,段尧清,朱泽.基于SSM的政府数据治理联盟链框架构建[J/OL].情报科学:1-18[2022-03-17].http://kns.cnki.net/kcms/detail/22.1264.g2.20220309.1213.002.html
[2]黄子扬,祝奕炜,沈信宇,慕京生,焦俊.基于SSM的水质在线监测与数据分析[J].现代农业科技,2022(05):129-135.
[3]李双,郭晨晨,李佳虎,张慧娥.基于SSM框架的智能驾校系统的设计与开发[J].电脑知识与技术,2022,18(03):62-63+65.
[4]彭永鹤. 一种基于大数据与物联网的宠物医院管理系统[P]. 广东省:CN113972002A,2022-01-25.
[5]郭静.基于SSM框架的高校新生预报到系统的设计与实现[J].电子技术与软件工程,2022(02):232-235.
[6]张烈超,胡迎九.典型Java Web开发框架模型的研究[J].武汉交通职业学院学报,2021,23(04):122-127.
[7]徐旭,李明明,夏辉,陈曦,王天宇,肖硕,雍旭.基于SSM框架的互联网+多元监管下构建医疗设备质量控制管理服务平台研究[J].中国医学装备,2021,18(12):106-110.
[8]李春生,李朝霞,刘涛,胡亚楠.基于SSM的科研室管理系统的研究与设计[J].计算机技术与发展,2021,31(12):148-154.
[9]王萨仁图雅,薛爱兰.动物医院管理系统软件的应用技巧[J].当代畜禽养殖业,2021(05):63-64.
[10]He Xinbin,Bai Yongbin,Yue Lisen,Wang Haixiao,Liu Yi. Design and Implementation of Information System Based on Java Technology Platform[J]. Journal of Physics: Conference Series,2021,2033(1).
[11]Qu Xiaona. Application of Java Technology in Dynamic Web Database Technology[J]. Journal of Physics: Conference Series,2021,1744(4).
[12]王亚文,赵翠.基于SSM框架的社区宠物信息管理系统设计与分析[J].电脑编程技巧与维护,2021(01):103-105.
[13]吴文洋,刘世宇.基于B/S架构宠物领养管理系统设计[J].软件,2020,41(11):85-87.
[14]Tian Ming Huang. Design and Implementation of App System for Legal Consulting Based on JAVA Technology[J]. Procedia Computer Science,2020,166(C).
[15]叶军,华旭奋,孙晓艳.基于用户体验的互联网+宠物管理系统设计与实现[J].科技创新与应用,2020(31):87-89.
[16]Duqing Qu, Guangzhong Hu, Cong Deng , Yuan Liu. Web Online Teaching Answering System based on Java Technology[J]. Frontiers in Economics and Management,2020,1(5).
[17]王锋. 一种宠物医院管理系统[P]. 辽宁省:CN109493932A,2019-03-19.
[18]张帆. 华阳社区宠物医院管理系统的设计与实现[D].东北大学,2016.
致 谢
逝者如斯夫,不舍昼夜。转眼间,大用户用户活便已经接近尾声,人面对着离别与结束,总是充满着不舍与茫然,我亦如此,仍记得那年秋天,我迫不及待的提前一天到了学校,面对学校巍峨的大门,我心里充满了期待:这里,就是我新生活的起点吗?那天,阳光明媚,学校的欢迎仪式很热烈,我面对着一个个对着我微笑的同学,仿佛一缕缕阳光透过胸口照进了我心里,同时,在那天我认识可爱的室友,我们携手共同度过了这难忘的两年。如今,我望着这篇论文的致谢,不禁又要问自己:现在,我们就要说再见了吗?
感慨莫名,不知所言。遥想当初刚来学校的时候,心里总是想着工科学校会过于板正,会缺乏一些柔情,当时心里甚至有一点点排斥,但是随着我对学校的慢慢认识与了解,我才认识到了她的美丽,她的柔情,并且慢慢的喜欢上了这个校园,但是时间太快了,快到我还没有好好体会她的美丽便要离开了,但是她带给我的回忆,永远不会离开我,也许真正离开那天我的眼里会满含泪水,我不是因为难过,我只是想将她的样子映在我的泪水里,刻在我的心里。最后,感谢我的老师们,是你们教授了我们知识与做人的道理;感谢我的室友们,是你们陪伴了我如此之久;感谢每位关心与支持我的人。
少年,追风赶月莫停留,平荒尽处是春山。
点赞+收藏+关注 → 私信领取本源代码、数据库