摘要
随着移动互联网的快速发展,小程序作为一种新型的应用形态,已经深入到人们的生活中。在高校中,实验室领养管理是一个重要的环节,但传统的领养方式存在着诸多问题,如领养流程繁琐、信息不透明等。因此,本文旨在设计和实现一个基于SSM的流浪动物管理系统,以解决这些问题,提高实验室的利用率和管理效率。该小程序具备用户注册登录、实验室信息查询、领养申请、领养管理等功能,可以方便学生进行实验领养,同时管理员也可以方便地进行领养管理。通过使用SSM框架,我们可以快速构建应用程序,并保证其稳定性和可扩展性。同时,结合小程序的特点,我们可以实现用户界面的友好性和操作的便捷性。该小程序不仅可以解决高校实验室领养管理的问题,还可以为学生和教师提供更好的实验环境和服务。
关键词:SSM;高校实验室;领养管理;小程序;设计与实现
Abstract
With the rapid development of mobile internet,小程序as a new application form has penetrated into people’s lives. In Colleges and universities, laboratory appointment management is an important link, but the traditional appointment method has many problems, such as complicated appointment process and opaque information. Therefore, this article aims to design and implement a SSM-based college laboratory appointment small program to solve these problems and improve the utilization rate and management efficiency of the laboratory. This small program has functions such as user registration and login, laboratory query, appointment application, and appointment management, which can facilitate students to make experimental appointments. At the same time, administrators can also facilitate appointment management. By using the SSM framework, we can quickly build applications and ensure their stability and scalability. At the same time, combined with the characteristics of small programs, we can achieve user-friendly interfaces and convenient operations. This small program can not only solve the problems of college laboratory appointment management, but also provide better experimental environments and services for students and teachers.
Key words: SSM; College laboratory; Appointment management; Design and implementation of small programs
目录
1 绪论
1.1 课题研究背景
1.2 课题研究意义
1.3系统开发技术的特色
2 基于SSM的流浪动物管理系统分析
2.1可行性分析
2.1.1技术可行性分析
2.1.2经济可行性分析
2.1.3操作可行性分析
2.2功能需求分析
2.3用例分析
3基于SSM的流浪动物管理系统总体设计
3.1系统功能模块设计
3.3数据库设计
3.3.1 数据库E-R模型
3.3.2 数据库表设计
4 基于SSM的流浪动物管理系统关键模块实现
4.1 前台微信端
4.1.1 用户注册界面
4.1.2 用户登录界面
4.1.3 知识普及界面
4.1.4 宠物信息详情界面
4.1.5 领养界面
4.1.7我的界面
4.2后台管理员端
4.2.1 系统用户界面
4.2.2宠物信息管理界面
4.2.3系统管理界面
4.2.4通知公告管理界面
4.2.5资源管理界面
5 基于SSM的流浪动物管理系统测试
5.1系统测试
5.2测试结果
总结与展望
参考文献
致谢
1 绪论
1.1 课题研究背景
随着城市化进程的加速和人们生活节奏的加快,流浪动物的数量逐渐增多,给城市管理带来了诸多问题。传统的流浪动物管理方式存在诸多不足,如信息不透明、管理效率低下等。因此,本文提出并实现了一个基于SSM框架的流浪动物管理系统。该系统采用先进的软件工程技术,充分利用SSM框架的优势,设计并实现了一套功能完善、性能优良的流浪动物管理系统。通过该系统的应用,可以提高流浪动物的管理效率,为流浪动物保护事业提供有力支持。
1.2 课题研究意义
随着社会的进步和移动互联网的普及,人们对动物保护的关注度逐渐提高,流浪动物的管理问题也日益受到重视。传统的流浪动物管理方式存在诸多不足,如信息不透明、管理效率低下等。因此,基于SSM(Spring + SpringMVC + MyBatis)框架和微信小程序技术的流浪动物管理系统的设计与实现具有重要的现实意义和学术价值。
首先,该系统的设计与实现有助于提高流浪动物的管理效率。基于SSM框架和微信小程序技术的系统具有高效、稳定、可扩展等优点,可以快速处理大量数据和复杂业务流程,实现流浪动物信息的实时更新和共享。这不仅有助于减少管理成本,还可以提高管理效率,为流浪动物保护事业提供有力支持。
其次,该系统的设计与实现有助于增强流浪动物保护意识。通过微信小程序等移动应用,人们可以更加方便地了解流浪动物的相关信息,参与流浪动物的保护活动。这不仅可以增强人们对动物保护的意识,还可以促进社会对流浪动物的关注和支持。
最后,该系统的设计与实现有助于推动相关技术的发展和应用。该系统涉及到多个领域的技术知识,如JavaEE、微信小程序开发等。通过该系统的研究和开发,可以促进相关技术的进步和创新,推动这些技术在其他领域的广泛应用。
综上所述,基于SSM、微信小程序的流浪动物管理系统的设计与实现的课题研究意义在于提高流浪动物的管理效率、增强流浪动物保护意识以及推动相关技术的发展和应用。该研究可以为流浪动物保护事业提供有力支持,促进社会的和谐发展。
1.3系统开发技术的特色
(1)系统采用前后端分离的开发模式,使得前端和后端可以独立开发和维护,提高了开发效率和系统的可维护性。
(2)系统采用微服务架构,将系统拆分成多个独立的服务,每个服务可以独立部署和扩展,提高了系统的灵活性和可扩展性。
(3)系统采用 Docker 容器化部署技术,使得系统可以快速部署和迁移,提高了系统的可靠性和可移植性。
(4)系统采用自动化测试技术,包括单元测试、接口测试和性能测试等,提高了系统的稳定性和可靠性。
(5)系统采用安全保障技术,包括用户认证、授权、数据加密等,保障了系统的安全性和用户的隐私。
这些技术特色使得基于SSM的流浪动物管理系统具有高效、稳定、可靠、安全等优点,能够满足用户的需求和提高用户的体验。
2 基于SSM的流浪动物管理系统分析
基于SSM的流浪动物管理系统可在微信端实现查看宠物信息、宠物洗护、交流论坛、知识普及、领养信息等操作,相对于传统的流浪动物管理方式,基于SSM的流浪动物管理系统提高了效率和便利性。在后台可对用户、宠物信息、宠物种类、领养信息、宠物洗护、轮播图、知识普及、交流论坛等进行管理、有效掌握宠物领养信息,充分了解用户的需求,更有针对性的服务用户。
2.1可行性分析
2.1.1技术可行性分析
基于SSM的流浪动物管理系统存储所使用的mysql数据库以及开发中所使用的IDEA、Tomcat这些开发工具的使用,能够给我们的编写工作带来许多的便利。系统使用SSM框架进行开发,使系统的可扩展性和维护性更佳,减少java配置代码,简化编程代码,目前SSM框架也是很多企业选择的框架之一。
2.1.2经济可行性分析
在开发基于SSM的流浪动物管理系统中所使用的开发软件像IDEA开发工具、Tomcat8.0服务器、MySQL5.7数据库、Photoshop图片处理软件等,这些都是开源免费的,并且基于SSM的流浪动物管理系统是自己设计并编码实现的,数据库是使用流行mysql进行数据的存储,开源的mysql等技术的使用,减少系统开发费用。
2.1.3操作可行性分析
在日常生活中,随着小程序的快速推广和使用,越来越多人掌握小程序的使用方法,基于SSM的流浪动物管理系统在这种条件背景下是很容易被人们所接受和熟悉的,所以在操作上没任何问题。
基于SSM的流浪动物管理系统中的web后台管理端采用了IntelliJ IDEA 2019.3.4 开发工具,配合了java开发语言中SSM开发框架以及tomcat8.0服务器、jdk1.8,微信端采用了微信开发者工具稳定版1.05.2111300,页面使用wxss和wxml进行布局,微信端和web后台管理端采用json接口通信。
首页:展示流浪动物保护组织的介绍、最新动态、领养信息和洗护服务等内容。提供快速导航和搜索功能,方便用户快速找到所需信息。
宠物信息:展示流浪动物的基本信息和照片,包括品种、年龄、健康状况等。用户可以查看每个流浪动物的具体情况,了解他们的故事和需要。
宠物洗护:提供流浪动物的洗护服务信息,包括服务项目、价格、地址等。用户可以根据自己的需求了解合适的洗护服务。
交流论坛:为用户提供一个交流平台,可以发布求助信息、分享养宠经验、交流心得体会等。论坛设有不同主题或分类,方便用户浏览和参与讨论。
知识普及:发布与流浪动物相关的知识和资讯,如养护技巧、健康指南、行为训练等。帮助用户更好地了解和照顾流浪动物,提高他们的生活质量和幸福感。
我的:用户个人信息管理页面,包括基本信息(如姓名、联系方式等)、收藏信息(如喜欢的流浪动物、有用的资讯等)、领养信息(如已领养的流浪动物、领养申请等)。用户可以随时查看和编辑自己的信息。
2.管理员功能需求分析
后台首页:管理员登录后显示的主页面,包括系统概览、任务提醒、操作日志等。提供常用功能的快捷入口,方便管理员快速处理事务。
系统用户:管理后台的用户账户,包括创建新用户、修改用户权限、查看用户信息等。确保系统的安全性,只赋予相应人员必要的操作权限。
宠物信息管理:管理流浪动物的基本信息,包括添加新动物、修改现有动物信息、删除动物等。确保信息的准确性和完整性,方便用户查询和了解。
宠物种类管理:管理流浪动物的品种分类,包括添加新品种、修改现有品种信息、删除品种等。方便用户根据品种查找和选择合适的流浪动物。
领养信息管理:管理用户的领养申请和领养状态,包括接收领养申请、审核申请、批准或拒绝申请等。确保领养过程的公正性和安全性。
宠物洗护管理:管理流浪动物的洗护服务,包括洗护信息的添加、修改、删除等。
系统管理:管理系统轮播图设置,包括编辑轮播图内容、设置轮播图位置等。
资源管理:管理后台的资源文件,包括知识普及的管理(增删改查知识内容)、百科分类的管理等。提供丰富的知识资源,帮助用户更好地了解和照顾流浪动物。
交流管理:管理交流论坛的内容,包括论坛分类的管理、论坛帖子的审核与删除等。维护论坛的秩序和纯净度,为用户提供一个良好的交流环境。
通过以上功能需求分析,我们可以明确系统的功能模块和业务流程,为后续的系统设计和开发提供指导。
2.3用例分析
基于SSM的流浪动物管理系统的完整UML用例图分别是图2-1,图2-2。在参与者上包括普通用户、管理员。
用户角色的用例包括首页、宠物信息、宠物洗护、交流论坛、知识普及、我的(基本信息、收藏、领养信息)。
图2-1 基于SSM的流浪动物管理系统用户角色用例图
管理员角色的用例包括后台首页、系统用户、宠物信息管理、宠物种类管理、领养信息管理、宠物洗护管理、系统管理、资源管理、交流管理。
图2-2 基于SSM的流浪动物管理系统管理员角色用例图
在上一章节中分析了基于SSM的流浪动物管理系统的功能性需求,并且根据需求分析了基于SSM的流浪动物管理系统中的用例。那么接下来就要开始对基于SSM的流浪动物管理系统架构、主要功能和数据库开始进行设计。
3.1系统功能模块设计
通过对基于SSM的流浪动物管理系统的功能需求分析以及用例分析,得出了基于SSM的流浪动物管理系统的功能模块图如图3-1所示。
3.3数据库设计
3.3.1 数据库E-R模型
下面是整个基于SSM的流浪动物管理系统的数据库表的E-R实体关系图,如图3-2所示:
3.3.2 数据库表设计
通过上一小节中基于SSM的流浪动物管理系统中总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_information_id | int | 10 | 0 | N | Y | 领养信息ID | |
2 | pet_id | varchar | 64 | 0 | Y | N | 宠物编号 | |
3 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
4 | pet_species | varchar | 64 | 0 | Y | N | 宠物种类 | |
5 | pet_age | varchar | 64 | 0 | Y | N | 宠物年龄 | |
6 | pet_gender | varchar | 64 | 0 | Y | N | 宠物性别 | |
7 | user_information | int | 10 | 0 | Y | N | 0 | 用户信息 |
8 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
9 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
10 | adoption_notes | text | 65535 | 0 | Y | N | 领养备注 | |
11 | adoption_status | varchar | 64 | 0 | Y | N | 领养状态 | |
12 | adoption_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 | 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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | 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 | pet_care_id | int | 10 | 0 | N | Y | 宠物洗护ID | |
2 | store_name | varchar | 64 | 0 | Y | N | 店铺名称 | |
3 | store_phone | varchar | 64 | 0 | Y | N | 店铺电话 | |
4 | washing_and_care_prices | varchar | 64 | 0 | Y | N | 洗护价格 | |
5 | store_address | varchar | 64 | 0 | Y | N | 店铺地址 | |
6 | store_image | varchar | 255 | 0 | Y | N | 店铺图片 | |
7 | store_introduction | longtext | 2147483647 | 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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_information_id | int | 10 | 0 | N | Y | 宠物信息ID | |
2 | pet_id | varchar | 64 | 0 | Y | N | 宠物编号 | |
3 | pet_name | varchar | 64 | 0 | Y | N | 宠物名称 | |
4 | pet_species | varchar | 64 | 0 | Y | N | 宠物种类 | |
5 | pet_status | varchar | 64 | 0 | Y | N | 宠物状态 | |
6 | pet_age | varchar | 64 | 0 | Y | N | 宠物年龄 | |
7 | pet_gender | varchar | 64 | 0 | Y | N | 宠物性别 | |
8 | sterilization_or_not | varchar | 64 | 0 | Y | N | 是否绝育 | |
9 | is_it_deworming | varchar | 64 | 0 | Y | N | 是否驱虫 | |
10 | vaccination | varchar | 64 | 0 | Y | N | 疫苗接种 | |
11 | health_condition | varchar | 64 | 0 | Y | N | 健康状况 | |
12 | pet_pictures | varchar | 255 | 0 | Y | N | 宠物图片 | |
13 | introduction_to_pets | longtext | 2147483647 | 0 | Y | N | 宠物介绍 | |
14 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
15 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
16 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_species_id | int | 10 | 0 | N | Y | 宠物种类ID | |
2 | pet_species | varchar | 64 | 0 | Y | N | 宠物种类 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | 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 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | 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 | 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 | 更新时间: |
4 基于SSM的流浪动物管理系统关键模块实现
基于SSM的流浪动物管理系统划分了微信小程序用户端和web后台管理员端,微信端实现首页、实验室信息、关于我们、新闻资讯、我的(基本信息、收藏、领养信息、通知提醒)等功能,web端是为后台管理员提供系统用户、实验室信息管理、领养信息管理、通知提醒管理、系统管理(轮播图管理)、通知公告管理、资源管理(新闻资讯、资讯分类)、权限管理的平台。
4.1 前台微信端
4.1.1 用户注册界面
不是基于SSM的流浪动物管理系统的用户可以通过微信小程序在线进行注册,填写上自己的账号、密码、重复密码、昵称、邮箱登信息后点击“提交”按钮后将会验证是否有非空数据,再验证密码和重复密码是否一样,最后验证是否账号重复,都验证没问题后即可注册成功。注册实现了用户注册和发布者注册两部分,其用户注册界面展示如下图4-1所示。
图4-1用户注册界面图
注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示“用户已存在”,否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
4.1.2 用户登录界面
微信小程序上注册后的用户可以通过自己的用户名和密码进行登录,在用户填写好自己的用户名和密码信息并点击“登录”按钮后,将会先验证是否有非空数据,再验证填写的用户信息和数据库中保存的是否一致,一致后将会登录成功,登录成功后将会在左上角上显示用户信息;否则将会提示相应错误信息,用户登录界面如下图4-2所示。
图4-2用户登录界面图
登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报“用户不存在”,执行完以上代码,最后涉及到用户带有“审核”的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,其代码如下:
/**
* 登录
* @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.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());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
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, "账号或密码不正确");
}
}
输入有效的用户名和密码信息,点击“登录”按钮,自动跳转到“首页”页面,首页界面如下图4-3所示。
图4-3首页界面图
4.1.3 知识普及界面
用户点击知识普及按钮,可以进入知识普及列表,点击感兴趣的知识普及,进入知识普及详情页面,用户可以进行查看、点赞、收藏、评论等操作,界面如下图4-4所示。
图4-4知识普及详情界面图
4.1.4 宠物信息详情界面
用户点击宠物信息可以进入宠物信息列表,点击任意一个宠物信息后将可以进入到该宠物信息的详情界面中,用户可以查看宠物信息的详细介绍,还可以进行领养、点赞、收藏、评论等,宠物信息详情界面如下图4-5所示。
图4-5宠物信息详情界面图
4.1.5 领养界面
在宠物信息详情页面左下角点击“领养”后进入到“领养”界面,输入相关信息后,点击“提交”按钮后将会生成自己的领养信息,领养界面如下图4-6所示。
图4-6领养信息界面图
4.1.7我的界面
点击基于SSM的流浪动物管理系统端底部的“我的”菜单进行“我的”页面,用户可以管理自己的个人信息管理页面,包括基本信息(如姓名、联系方式等)、收藏信息(如喜欢的流浪动物、有用的资讯等)、领养信息(如已领养的流浪动物、领养申请等)。用户可以随时查看和编辑自己的信息,界面如下图4-7所示。
图4-7我的界面图
4.2后台管理员端
4.2.1 系统用户界面
管理员点击“系统用户”这一菜单会显示管理员、普通用户这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作。界面如下图4-8所示。
图4-8普通用户管理界面图
4.2.2宠物信息管理界面
管理员点击后台左边的“宠物信息管理”菜单后将可以对宠物信息进行管理,包括添加、编辑和删除宠物信息等,宠物信息管理界面如下图4-9所示。
图4-9宠物信息列表界面图
新增一条数据,通过post传入一个json对象,然后经过request.getReader(),最后经过readBody()转成一个Map,含有String和Object,key用的是字段名,Object存放数据,最终得到Map,insert用拼装sql,读取body,组装成一个insert对象,runCountSql()语句,代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
4.2.3系统管理界面
管理员点击“系统管理”这一菜单会显示轮播图这一个子菜单,管理员可以对前台展示的轮播图进行设置,界面如下图所示。
4.2.4通知公告管理界面
点击“通知告管理”这个菜单,可以查看到系统中所有添加的通知公告,支持通过标题对通知公告进行查询,添加、删除等操作。通知公告管理界面如下图所示。
图4-11通知公告界面图
4.2.5资源管理界面
管理员点击“资源管理”这一菜单会显示知识普及、知识分类这两个子菜单,管理员可以对这两部分涉及到的功能进行更新维护,更好的服务于前台用户。界面如下图所示。
5 基于SSM的流浪动物管理系统测试
基于SSM的流浪动物管理系统测试是为了检验软件是否达到设计要求,是否存在错误,通过测试的方法来检查基于SSM的流浪动物管理系统,以便发现基于SSM的流浪动物管理系统中的错误。测试工作是保证基于SSM的流浪动物管理系统质量的关键。
5.1系统测试
微信端上用户在线领养功能测试:
表5-1微信端上用户在线领养功能测试用例表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
在线领养功能模块测试 | 宠物情信息正常的显示 | 浏览宠物详情信息 | 在小程序端上选择一个宠物信息将会进入该宠物的详情界面,同时可以领养、评论、收藏、点赞。 | 进入该宠物的详情信息界面 | 正确 |
在线领养功能模块测试 | 在线领养功能成功 | 浏览宠物详情信息 | 点击“领养”填写领养信息,点击“提交”按钮。 | 生成自己的领养信息。 | 正确 |
微信端上评论功能测试:
表5-2微信端上评论功能测试用例表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
评论功能模块测试 | 评论信息正常的显示 | 浏览宠物详情信息 | 点击“评论”-“输入评论内容,点击“提交”按钮。 | 成功完成评论 | 正确 |
web后台端上管理员发布宠物信息功能测试:
表5-3web后台端上管理员发布宠物信息功能测试用例表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
管理员发布宠物信息功能测试 | 添加宠物信息的情况 | 输入新宠物信息的基本信息 | 后台选择“宠物信息管理”菜单后,填写新宠物基本信息后点击“提交”按钮 | 新宠物信息发布成功 | 正确 |
5.2测试结果
通过编写了基于SSM的流浪动物管理系统的测试用例,已经检测完毕了5.1章节中的3大模块,它为基于SSM的流浪动物管理系统系统的后期推广运营提供了强力的技术支撑。
总结与展望
本次基于SSM的流浪动物管理系统的设计与实现,功能方面,通过功能模块图区分该程序的用户端与管理端各自的功能权限;数据库方面,数据库使用口碑较好的mysql进行数据的存储,开源的mysql等技术的使用,相对来说体积较小,服务稳定,减少系统开发成本费用,通过数据库表的E-R实体关系图建立了表单与表单之间的连接,区分不同的表单之间的关系,更好的完善数据库的内容;测试方面,通过测试用例检查基于SSM的流浪动物管理系统的设计缺陷和程序存在的错误,在系统测试阶段的过程中,出现了一些问题,例如,注册信息,没有规范用户在注册页面填写信息时输入两次密码,而导致后期登录错误,最后通过多次修改程序和测试解决了问题。最终经过不断的检测、修改,实现项目的稳定,达到了预期的设计效果。
系统整体的功能到达预期的效果,但页面的美化方面还是存在一些不足,例如:小程序中的图标过于简洁;wxss页面的渲染布局方面不够完善,人们在使用软件过程中,对某些功能不易找寻,针对此次项目产生的问题,日后将不断改进,使该项目更加完善。
参考文献
[1]袁琳琳.计算机软件Java编程特点及技术分析[J].数字通信世界,2023,(12):87-89.
[2]马庆.计算机软件开发中JAVA编程语言的应用[J].山西电子技术,2023,(06):84-86+98.
[3]Li D ,Wang W ,Zhao Y .Intelligent Visual Representation for Java Code Data in the Field of Software Engineering Based on Remote Sensing Techniques[J].Electronics,2023,12(24):
[4]Nikahat M ,Prachi G .Leveraging well-formedness and cognitive level classifiers for automatic question generation on Java technical passages using T5 transformer[J].International Journal of Information Technology,2023,15(4):1961-1973.
[5]颜惠.基于Web的宠物店信息管理系统设计[J].软件,2023,44(02):147-149.
[6]Surya H I P ,Imam B ,Wiwandari H .Land use change and precipitation implication to hydro-meteorological disasters in Central Java: an overview[J].International Journal of Disaster Resilience in the Built Environment,2023,14(1):100-114.
[7]安琪.基于服务设计思维的城市流浪动物助养系统设计研究[D].北京化工大学,2022.DOI:10.26939/d.cnki.gbhgu.2022.001964.
[8]庄帅.宠物管理系统的设计及实现[J].福建电脑,2022,38(05):68-72.DOI:10.16707/j.cnki.fjpc.2022.05.017.
[9]金馨.基于SSM的宠物店线上运营系统的设计与实现[D].首都经济贸易大学,2021.DOI:10.27338/d.cnki.gsjmu.2021.000769.
[10]陈锋,基于物联网平台的宠物半散养式管理系统及方法.安徽省,安徽一网网络科技有限公司,2021-05-04.
[11]周粉妹,吴仁平,钱荣华等.基于SSM的宠物领养网站设计[J].扬州职业大学学报,2021,25(01):32-35.DOI:10.15954/j.cnki.cn32-1529/g4.2021.01.009.
[12]吴文洋,刘世宇.基于B/S架构宠物领养管理系统设计[J].软件,2020,41(11):85-87.
[13]杨芹.宠物领养Web App的设计与实现[D].华中科技大学,2020.DOI:10.27157/d.cnki.ghzku.2020.006892.
[14]叶军,华旭奋,孙晓艳.基于用户体验的互联网+宠物管理系统设计与实现[J].科技创新与应用,2020,(31):87-89.
[15]胡鼎.宠物交易系统的设计与实现[D].华中科技大学,2020.DOI:10.27157/d.cnki.ghzku.2020.004252.
[16]陈金谊,李泳清,邱广萍.机智云技术在宠物管理系统中的应用[J].物联网技术,2019,9(09):87-89+93.DOI:10.16667/j.issn.2095-1302.2019.09.026.
[17]谢文涛,林瑞冬,王妮等.基于Django的宠物信息交流管理系统设计[J].电脑知识与技术,2019,15(25):57-58+69.DOI:10.14004/j.cnki.ckt.2019.3056.
[18]杨华.基于SSM的宠物店信息系统的设计与实现[D].吉林大学,2019.
[19]黄琳,林国钦.基于Java web的宠物店管理系统的设计[J].电子技术与软件工程,2019,(04):36-37.
[20]Coastal Integrated Services Utilizes Marketing Company for The Bugout Pet Feeding System[J].Food and Beverage Close - Up,2016,
致谢
至此论文结束,感谢您的阅读。首先,我要感谢我的父母对我的支持与理解,在两年的本科学习生活中,倾其所能的爱护我,使我能够心无旁骛,全心全意的投入到学习中;不断鼓励我,让我能够拥有不断前进的动力。其次还要感谢我的导师,感谢在这段时间给予我有效的建议,以至于我的毕设有了整体的设计思路,尽管我在实习期间很忙,论文撰写总是停停改改,但是导师依然十分负责,时不时的询问我的任务进展情况,跟进我的论文进度。在老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识,和经验,这些知识和经验令我受益匪浅。
此外,还要感谢我的同学,热心的解答了我在程序上遇到的问题,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测,让我受益良多。在这两年的时间里,我学会了许多专业的知识,还有老师们的谆谆教诲和同学们的帮助使我不断进步,能够做得更好;我也会不断给自己充电,不断突破,成为更好的自己。
最后向所有关心我、帮助我的老师及同学们表示衷心的感谢!