摘 要
本论文基于SpringBoot框架设计并实现了一款养宠指南服务平台,旨在为宠物爱好者提供一个便捷、全面的养宠指导工具。本平台结合了宠物医疗、饲养、训练等多方面内容,为用户提供了丰富的资讯和功能。首先,通过SpringBoot实现了平台的基础架构及各项功能模块的设计与开发。其次,平台采用了前后端分离的架构,通过RESTful API实现了前后端的数据交互和页面展示。同时,平台还集成了用户注册登录、权限管理、数据存储等功能,确保了平台的安全性和稳定性。最后,通过测试验证了平台的功能完整性和稳定性。
本论文的研究成果表明,基于SpringBoot框架设计的养宠指南服务平台能够有效帮助宠物爱好者解决养宠过程中遇到的问题,并提供了全面的指导和支持。未来,可以进一步优化平台的用户体验、增加更多的功能模块,以满足不同用户的需求。希望本论文的研究能够为类似平台的设计与实现提供一定的参考。
关键词:养宠指南服务平台;SpringBoot框架
A Community Volunteer Service Platform Based on Springboot
Abstract
This paper designs and realizes a pet raising guide service platform based on the SpringBoot framework, aiming to provide a convenient and comprehensive pet raising guidance tool for pet lovers. This platform combines pet medical care, feeding, training and other aspects, providing users with rich information and functions. First, the design and development of the platform infrastructure and various functional modules are realized through SpringBoot. Secondly, the platform adopts the architecture of separating the front and back ends, and realizes the data interaction and page display of the front and back ends through RESTful API. At the same time, the platform also integrates user registration and login, permission management, data storage and other functions, to ensure the security and stability of the platform. Finally, the functional integrity and stability of the platform were verified by testing.
The research results of this paper show that the pet raising guide service platform designed based on the SpringBoot framework can effectively help pet lovers to solve the problems encountered in the process of pet raising, and provide comprehensive guidance and support. In the future, the user experience of the platform can be further optimized and more functional modules added to meet the needs of different users. It is hoped that the research in this paper can provide some reference for the design and implementation of similar platforms.
Key words:Pet raising guide service platform; SpringBoot framework
目 录
随着社会经济的发展和人们生活水平的提高,养宠物已经成为越来越多人日常生活中的重要内容。然而,很多宠物主人在养宠过程中常常面临着各种问题,比如宠物喂养、训练、保健等方面的困扰。因此,为了帮助宠物主人更好地照顾和管理自己的宠物,需要开发一款基于SpringBoot框架的养宠指南服务平台。
该服务平台的设计与实现将实现以下方面的目标和意义:
提高宠物养育的效率和质量:通过该服务平台,宠物主人可以方便地获取到宠物喂养、训练、健康保健等方面的指南和建议,从而有效提高养宠的效率和质量。
促进宠物行业的发展:养宠指南服务平台的推出和应用将促进宠物行业的发展,推动相关企业的技术和服务水平提升,为宠物主人提供更加便捷和专业的服务。
提升宠物主人的养宠体验:通过提供全面的养宠指南和服务,该平台还可以帮助宠物主人更好地了解和照顾自己的宠物,提升宠物主人的养宠体验,增强宠物与主人之间的情感纽带。
增加宠物医疗资源的利用效率:该平台还可以整合各种宠物医疗资源,提供宠物医疗服务信息,方便宠物主人及时获取到宠物健康的相关信息,实现宠物医疗资源的合理利用和配置。
因此,基于SpringBoot的养宠指南服务平台的设计与实现具有重要的现实意义和社会价值,有助于改善宠物主人的养宠体验,提升宠物行业的发展水平,推动宠物健康事业的进步。
-
- 国内外研究现状
目前国内外对于基于SpringBoot的养宠指南服务平台的设计与实现方面的研究现状如下:
国外研究现状: 在国外,已经有一些宠物领域的相关服务平台使用SpringBoot框架进行设计和实现。这些平台主要提供宠物健康管理、喂养指南、训练技巧等信息,帮助宠物主人更好地照顾自己的宠物。同时,一些国外宠物健康机构和社区也利用SpringBoot技术构建了宠物健康档案管理系统,更好地跟踪和保护宠物的健康数据,为宠物主人提供更专业的健康咨询和服务。
国内研究现状: 在国内,随着人们养宠需求的增加,一些企业和研究机构也开始关注养宠领域的服务平台建设。目前,一些国内互联网公司在宠物领域推出了使用SpringBoot框架的养宠指南应用,提供宠物常识、饲养方法、训练技巧等方面的内容,受到宠物主人的欢迎和认可。同时,国内一些宠物医疗机构也开发了使用SpringBoot技术的宠物健康管理平台,方便宠物主人查看宠物的健康报告以及获取医疗服务信息。
总体来看,国内外在基于SpringBoot的养宠指南服务平台的设计与实现方面已经取得了一定的研究进展,不断尝试将先进的技术与宠物养育结合,为宠物主人提供更便捷、专业的养宠指导和服务。未来,有望进一步完善和优化这些平台,提升用户体验,推动宠物行业的发展。
根据市场调研得到的信息数据,结合国内外前沿研究,利用相关系统开发和设计方法,最终设计出养宠指南服务平台。
本文共有七章,如下所示。
第一章概述了养宠指南服务平台的研究背景和意义;精炼地总结了国内外研究情况,最后给出了论文的组成结构。
第二章简要对系统各业务流程进行需求分析、可行性分析。
第三章对养宠指南服务平台进行设计。
第四章对养宠指南服务平台进行实现,并贴出相关页面截图,语言描述出具体功能实现的操作方法。
第五章对养宠指南服务平台采用测试用例的方式来对一些主要功能模块测试,最后得出测试结果。
第六章总结全文并对未来的研究做出展望。
在软件开发的过程中系统的可行性分析是必不可少的,可行性的研究就是评估问题是否能得到解决并且是要以最少的时间和最少的代价来解决。为实现上面的目标还要必须考虑到解决这些问题的方法的优点和缺点,还要考虑到实现了这些系统规模的开发带来的经济效益。这里可以用技术的可行性,操作的可行性,经济的可行性对我们的系统进行可行性的研究。养宠指南服务平台的可行性分析如下所示:
基于Spring Boot的养宠指南服务平台在技术上是完全可行的。Spring Boot以其强大的框架支持和广泛的社区支持,为开发者提供了快速构建、灵活扩展和稳定运行的开发环境。该平台可以利用Spring Boot的丰富功能和工具,实现养宠指南招募、活动管理、服务统计等核心功能的自动化和智能化。同时,Spring Boot的开源性质也促进了技术的共享和合作,为平台的持续发展和优化提供了保障。因此,从技术角度来看,基于Spring Boot的养宠指南服务平台是完全可行的,并且有望为养宠指南服务事业带来显著的提升和改变。
基于Spring Boot的养宠指南服务平台在经济上也是可行的。Spring Boot是一个开源框架,使用成本相对较低,社区资源丰富,可以有效降低开发成本。该平台的实施可以整合和优化现有的养宠指南资源,提高服务效率和质量,从而减少社区在养宠指南管理上的投入。因此,从经济角度来看,基于Spring Boot的养宠指南服务平台具有明显的成本优势和效益提升潜力,是经济可行的。
本系统是基于浏览器和服务器的养宠指南服务平台,系统开发完成之后用户只需要在浏览器中输入正确的URL地址即可进行访问。本系统的前台页面简单明了,在没有操作指导的情况下也可以进行操作,无论是系统管理员还是用户在页面中所有的操作都是在浏览器中完成的,因此只要电脑在有网络的情况下,打开浏览器都能操作。而且在使用之前也不用进行相关的环境配置,因此本系统方便、简单、易于使用,所以该系统是容易并且可操作的。
养宠指南服务平台的设计与实现分为两大部分:管理员和注册用户。
- 管理员功能需求如下:
登录: 提供管理员登录功能,进入后台管理系统。
后台首页: 显示系统的重要信息和功能入口。
系统用户: 管理系统用户的账号信息,包括添加、编辑和删除用户。
宠物信息管理: 查询、重置、删除和发布宠物信息以及查看评论,包含信息有:宠物图片、宠物品种、宠物特点、创建时间、更新时间等。
养宠指南管理: 查询、重置、删除和发布养宠指南以及查看评论,包含信息有:宠物图片、宠物品种、宠物特点、饲养要求、健康护理、宠物训练、宠物繁育、创建时间、更新时间等。
宠物问答管理:查询、重置、删除、提问、回答宠物问题以及查看评论,包含信息有:注册用户、手机号码、宠物品种、提问主题、提问详情。
系统管理:轮播图管理: 管理系统首页轮播图信息,包括添加、编辑和删除图片等。
交流管理: 分享有关宠物的信息,为各宠物爱好者提供交流平台。
(二)注册用户功能需求如下:
注册登录: 用户注册新账号或登录已有账号的功能,确保用户可以访问养宠指南服务平台。
首页: 播放轮播图,提供导航按钮(首页、分享社区、宠物信息、养宠指南、宠物问答等按钮)。
分享社区: 提供注册用户交流的平台,分享宠物的相关话题。
宠物信息: 显示系统发布的宠物信息(宠物图片、宠物品种、宠物特点)等。
养宠指南: 提供志愿用户浏览相关的新闻和资讯,包括社区动态、志愿服务相关信息等。
宠物问答: 用户可以查看系统所有的宠物问答并可进行收藏、点赞、评论以及发表等。
我的账户: 用户可以查看管理个人账户信息。
个人中心: 包含有个人首页、宠物问答、分享社区、收藏等子菜单。
通过2.2功能的分析,得出了系统的用例图:
注册用户角色用例如图2-1所示。
图2-1志愿用户用例图
管理员角色用例如图2-2所示。
图2-2管理员用例图
(1)增加数据流程
系统中的所有用户(管理员、注册用户)都可以实现增加数据功能,图2-4显示的就是在增加数据时的流程。
图2-4增加数据流程图
(2)修改数据流程
在录入系统信息的时候如果信息有错,可以对系统中的数据进行编辑。图2-5显示的就是修改数据的流程。
图2-5修改数据流程图
(3)删除数据流程
在系统中经常会出现一些过期的数据,那就可以直接删除这些数据,图2-6就是删除数据时的流程图。
图2-6删除数据流程图
由于本系统在逻辑事务处理方面对数据库的操作比较频繁所以系统在底层连接数据库时并没有使用原生的JDBC,而是把JDBC进行了封装,封装之后相当于一个连接数据库的工具DB UTIL,这样使用起来会更加方便而且这样进行封装还可以降低系统中代码的冗余,当我们需要连接和使用数据库时只需要调用这个工具里面的一个方法就可以了。而且通过封装可以把对数据库的操作独立起来,当需要连接不同种类的数据库时只需要加以修改就可以达到目的。
DAO层本来并无这个类,它只是java中MVC构造里的一个model概念,主要就是里面的一些方法,而这些方法就是用来访问数据库的方法。我们在软件开发时DAO层我们一般都放接口和接口的实现类,用于来规范实现类的我们叫它接口,实现类重点用于对数据库的操纵。
MVC是一种系统研发的关键模型,M是Model模型,它是系统内部关键程序运行的核心,主要进行对数据库的各种操作。视图View是V也叫做视图,主要的作用是对一些数据进行显示。控制器Controller 是C执行从View的视图层来读取数据,然后控制用户的输入。
系统架构如下图所示。
图3-1系统架构图
进入系统后首先要进行登录,验证你的身份,赋予你不同的权限。当你成功登录后,页面会有多个板块,分别是后台首页、系统用户、宠物信息管理、养宠指南管理、宠物问答管理、系统管理、交流管理。里面界面简单易懂,根据标示可以直接进行方便快捷的操作。
系统功能结构图如下所示。
图3-2系统功能结构图
一个好的系统它的后台数据库一定要考虑的全面,这和我们建造房子一个概念,房子不是随心所欲建起来的,一切都是在合理设计的基础是实现的,地基打牢固了房子才能建的更高。数据库如果设计的很合理,而且每个方面都能考虑到了那么这个系统才能不会出现大的问题。
一个好的数据库可以关系到程序开发的优劣,数据库设计离不开表结构的设计,还有表与表之间的联系,以及系统开发需要设计的数据表内容等信息。在进行数据库设计期间,要结合实际情况来对数据库进行针对性的开发设计。
-
-
- 数据库E-R图设计
-
本养宠指南服务平台采用的是mysql数据库,数据存储快,因为养宠指南服务平台,主要的就是对信息的管理,信息内容比较多,这就需要好好的设计一个好的数据库,分类要清楚,不能添加信息的时候,造成信息太过混乱,设计好的数据库首先就需要先把各个实体之间的关系表达明确,
系统的主要实体间关系E-R图如下图所示。
图3-3系统E-R图
此环节把概念转变成数据。由于整个数据库所处理的信息过多,就只展示以下几个表。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 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_guide_id | int | 10 | 0 | N | Y | 养宠指南ID | |
2 | pet_pictures | varchar | 255 | 0 | Y | N | 宠物图片 | |
3 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
4 | pet_characteristics | longtext | 2147483647 | 0 | Y | N | 宠物特点 | |
5 | feeding_requirements | longtext | 2147483647 | 0 | Y | N | 饲养要求 | |
6 | health_care | longtext | 2147483647 | 0 | Y | N | 健康护理 | |
7 | pet_training | longtext | 2147483647 | 0 | Y | N | 宠物训练 | |
8 | pet_breeding | longtext | 2147483647 | 0 | Y | N | 宠物繁育 | |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_information_id | int | 10 | 0 | N | Y | 宠物信息ID | |
2 | pet_pictures | varchar | 255 | 0 | Y | N | 宠物图片 | |
3 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
4 | pet_characteristics | longtext | 2147483647 | 0 | Y | N | 宠物特点 | |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_qa_id | int | 10 | 0 | N | Y | 宠物问答ID | |
2 | registered_users | int | 10 | 0 | Y | N | 0 | 注册用户 |
3 | mobile_phone_number | varchar | 16 | 0 | Y | N | 手机号码 | |
4 | pet_breeds | varchar | 64 | 0 | Y | N | 宠物品种 | |
5 | question_topic | varchar | 64 | 0 | Y | N | 提问主题 | |
6 | question_details | longtext | 2147483647 | 0 | Y | N | 提问详情 | |
7 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | registered_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
2 | mobile_phone_number | varchar | 16 | 0 | Y | N | 手机号码 | |
3 | my_profession | varchar | 64 | 0 | Y | N | 我的职业 | |
4 | my_gender | varchar | 64 | 0 | Y | N | 我的性别 | |
5 | my_age | int | 10 | 0 | Y | N | 0 | 我的年龄 |
6 | residential_city | varchar | 64 | 0 | Y | N | 居住城市 | |
7 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | 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.1.1 前台首页界面
进入系统首页,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是宠物信息推荐,其主界面展示如下图所示。
图4-1 前台首页界面图
4.1.2 用户注册界面
用户注册:当用户想要进入系统中对信息进行查看的时候,就必须要登录到系统当中,要是新的用户没有系统的账号的话,点击“注册”按钮,就会进入到新用户注册这个界面上,用户输入对应的账号(必须填写)+密码(必须填写)+确认密码(必须填写,而且要与密码一直)+昵称+邮箱+性别+联系电话+选择用户身份等等,然后点击“注册”,系统在用户这一数据库中会查询账号是不是存在,两次密码是不是一样,都填写正确就会注册成功,然后再进行登录,如果是之前已经注册过的用户很长时间没有使用,忘记密码,也可以点击“忘记密码”进行找回。用户注册界面如下图所示。
图4-2 用户注册界面图
注册代码如下:
public String encryption(String plainText) {
String re_md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return re_md5;
}
4.1.3 用户登录界面
系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到系统的首页中;否则将会提示相应错误信息。用户登录界面如下图所示。
图4-3用户登录界面图
登录代码如下:
/**
* 登录
* @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.1.4宠物问答界面
宠物问答管理:查询、重置、删除、提问、回答宠物问题以及查看评论,包含信息有:注册用户、手机号码、宠物品种、提问主题、提问详情。宠物问答界面如下图所示。
图4-4宠物问答界面图
-
- 管理员功能模块的实现
4.2.1 管理员登录界面
管理员进入到系统登录界面,需要填写正确的登录名、密码等信息输入准确无误后登录进入到系统操作界面。管理员的账号是在数据表表中直接设置生成的,不需要进行注册;修改密码:管理员可以随时修改自己进入系统的登录密码,以保证系统的安全性。管理员登录界面如下图所示。
图4-6管理员登录界面图
4.2.2 管理员功能界面
管理员可以查看后台首页、系统用户、宠物信息管理、养宠指南管理、宠物问答管理、系统管理、交流管理等,并且可以根据需要进行相应的操作。管理员功能界面如下图所示。
图4-7管理员功能界面图
4.2.3 系统用户管理界面
管理员可以对系统中所有的用户角色进行管控,包含了管理员、注册用户这二种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户。系统用户管理界面如下图所示。
图4-8系统用户管理界面图
4.2.4宠物信息管理界面
宠物信息管理: 查询、重置、删除和发布宠物信息以及查看评论,包含信息有:宠物图片、宠物品种、宠物特点、创建时间、更新时间等。其界面如下图所示。
图4-9宠物信息管理界面图
4.2.5 系统管理界面
管理员可以对系统前台展示的轮播图进行增删改查,方便用户进行查看。系统管理界面如下图所示。
图4-10系统管理界面图
轮播图添加代码:
@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);
}
养宠指南管理: 查询、重置、删除和发布养宠指南以及查看评论,包含信息有:宠物图片、宠物品种、宠物特点、饲养要求、健康护理、宠物训练、宠物繁育、创建时间、更新时间等。宠物指南管理界面如下图所示。
图4-11宠物指南管理界面图
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,再测试过程中发现问题,并纠正它们,从而使系统更长时间稳定成熟。本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但对于长期使用而言是非常重要和必要系统的开发。
软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。
养宠指南服务平台的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在养宠指南服务平台正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
-
- 系统测试方法
在对养宠指南服务平台进行测试的时候在找到问题的情况下必须在第一时间找到解决问题的办法,不要存在侥幸的心理,这样才能让养宠指南服务平台开发的质量可以过关,并且开发的周期会大大缩短,还有就是在测试时,不要出现重复性的错误,遇到一个错误问题,要将整个养宠指南服务平台开发所牵扯的该问题都必须一一解决,提高养宠指南服务平台的安全性、稳定性。
白盒测试与黑盒测试是测试中比较常用的两种方法。
①结构测试俗称白盒测试:这种测试是在对程序的处理过程与结构都有详尽谅解的前提下,顺从程序内部的逻辑而完成的系统测试,以确定系统中所有的通路都能够遵照设计要求正常工作,不出现任何偏差。
②功能测试又成黑盒测试:主要是针对程序功能能够按照设计正常实现的一种检测,在程序接口处进行,检测程序手法数据是否正常,与外部信息的交换是否完整。
用户登录测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:admin 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
删除分类测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
删除分类模块 | 分类名:最新通知 | 删除成功、页面自动跳转 | 删除成功、页面自动跳转 | 通过 |
修改密码测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
通过对功能的测试,养宠指南服务平台的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。
养宠指南服务平台的整体功能模块的实现,主要是对自己在大学这几年时间所学内容的一个测试,对于系统,主要是通过现在智能化的养宠指南服务平台进行开始系统的实现,并且可以根据需求进行数据信息的增加修改删除等操作,完美的解决了当下养宠指南服务平台所遇到的问题。
经过一个学期的毕业设计的实现完成已接近尾声,到目前为止,当我回想起整个学期的系统开发日,收获颇丰。毕业设计的主要任务是建立一个智能化的养宠指南服务平台,主要使用springboot+vue框架和Mysql数据库的开发工具,对系统的每个功能模块进行相对应的操作,最后,系统调试结果表明系统基本可以满足功能要求。
养宠指南服务平台的开发对我大学学习的改进有很大帮助。它使我能够学习计算机知识的相关技术方面问题及与人交往的沟通交流方面,让我意识到无论我们做什么,我们都需要坚持不懈,努力工作,只有这样尝试了并且坚持去做了,我们才可以成功,才可以获得成功的喜悦,如果没有尝试,只是想,那连成功的机会都没有,实际操作进行做了,才会越来越近的靠近成功,随着道路一路向前,未来的路是美好的。
养宠指南服务平台的实现,是自己第一次完成的设计一个管理系统。在项目的设计过程中,我克服了各种困难,并且在面对这些困难,我积极的面对,想办法解决问题,并且更好的掌握了理论知识和动手操作实践能力,从系统的开发到设计完成,我完成了一个更全面、更完善、更安全的管理系统,这也让我取得了很大的成就感,也使我对未来的生活更有信心。
参考文献
[1]Yiqin ,Liu ,Qainzhi , et al.Design and implementation of student micro-expression recognition system based on convolutional neural network[J].Computer Informatization and Mechanical System,2024,7(2):20-22.
[2]Xi D R ,Ma N T ,Xiao X , et al.Design and implementation of an adaptive neural network observer–based backstepping sliding mode controller for robot manipulators[J].Transactions of the Institute of Measurement and Control,2024,46(6):1093-1104.
[3]Mano P ,Namuangruk S .Theory-based design principles for unprecedentedly high two-level CO2 utilization of CO2-derived metal-organic frameworks[J].Chemical Engineering Journal,2024,486150248-.
[4]Yang S ,Deng X ,Yang K .Machine-learning-based wind farm optimization through layout design and yaw control[J].Renewable Energy,2024,224120161-.
[5]Venu B ,Kadiyam T ,Penumalli K , et al.Negative capacitance FET based dual-split control 6T-SRAM cell design for energy efficient and robust computing-in memory architectures[J].Microelectronic Engineering,2024,288112165-.
[6]Beattie M ,Muirhead K ,Gibb R , et al.Experience-based Modifications of the Bed Band ReAlised through Co-dEsign (EMBRACE).[J].BMJ open quality,2024,13(1):
[7]师亚芳,赵娜,马学礼,等.宠物美容课程实训教学方法研究与创新[J].知识窗(教师版),2024,(02):123-125.
[8]曲锦旭.基于SpringBoot的农作物受灾分析系统的设计与实现[J].农业工程技术,2023,43(35):18-19.DOI:10.16815/j.cnki.11-5436/s.2023.35.006.
[9]吴昊,张丹.基于SpringBoot框架的大学生网上兼职系统设计与实现[J].电脑知识与技术,2023,19(35):68-72.DOI:10.14004/j.cnki.ckt.2023.1860.
[10]姜一波.基于SpringBoot+Vue的在线考试系统设计与实现[J].无线互联科技,2023,20(23):68-71.
[11]黄娟.基于SpringBoot和Vue.js的医院数据提取管理平台的设计与实现[J].信息与电脑(理论版),2023,35(22):91-93.
[12]艾钰承,朱海风,刘舟.基于SpringBoot的“喵站”宠物服务平台的设计与实现[J].科技资讯,2023,21(22):22-25.DOI:10.16661/j.cnki.1672-3791.2305-5042-0756.
[13]游晶,邱淑丽,李敬文.基于SpringBoot的校园智慧报修系统的设计与实现[J].电脑知识与技术,2023,19(32):50-52+65.DOI:10.14004/j.cnki.ckt.2023.1718.
[14]杨传华.宠物养护与经营专业教学做一体化改革探究[J].现代畜牧科技,2023,(11):174-176.DOI:10.19369/j.cnki.2095-9737.2023.11.049.
[15]张恒.Z世代年轻人对动物的喜爱有助于宠物行业的发展[J].中学生英语,2023,(41):12-13.
[16]戴建成,王华,范玉婷.基于SpringBoot+VUE的高校廉政档案管理系统设计与实现[J].产业与科技论坛,2023,22(21):58-60.
[17]屈晓,周挺,吴楷,等.一种SpringBoot基于嵌入式设备的辅助医疗App的设计与实现[J].电脑知识与技术,2023,19(29):55-58+66.DOI:10.14004/j.cnki.ckt.2023.1534.
[18]黄永芳,郭永刚,李峰.基于SpringBoot的藏东南滑坡灾害管理系统设计与实现[J].科学技术创新,2023,(24):100-103.
[19]谢欣,赵家琪,杨卫明.基于SpringBoot的中国传统节日推广平台设计与实现[J].信息与电脑(理论版),2023,35(19):91-94.
[20]马文新,刘百韬,侯冠麒,等.基于SpringBoot的三维数字化设备运维管理系统的设计与实现[J].中国建设信息化,2023,(18):66-69.
致谢
经过几个月时间的努力终于完成了这篇文章,在文章的写作与研究的过程中遇到了很多困难,都在同学和老师的帮助下解决了。尤其非常感谢我最敬爱的老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行文章的修改。老师严谨的治学态度、渊博的学术知识、诲人不倦的敬业精神以及宽容的待人风范使我获益颇丰。此外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此,向帮助和指导过我的老师表示最衷心的感谢!感谢这篇文章所涉及到的各位学者。本文引用了数位学者的文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇文章的写作。感谢我的同学和朋友,在我写文章的过程中给与了我很多素材和帮助,还在文章的撰写和排版过程中提供热情的帮助。同时,感谢我的室友对我的热心指导和帮助,经常有不懂之处都是大家在帮助我,才使得我比较顺利的完成了这篇文章。由于我水平有限,所写文章难免有不足之处,恳请各位老师和学友批评和指正!