flask宠物寄养系统
摘 要
科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用python技术建设宠物寄养系统。
本设计主要实现集人性化、高效率、便捷等优点于一身的宠物寄养系统,完成系统用户、商品信息、订单信息、入库信息、寄养信息、宠物喂养、宠物视频等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。宠物寄养系统使用python语言,采用基于 MVVM模式的Flask技术进行开发,使用Eclipse 2017 CI 10 编译器编写,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介,配合前台HTML+CSS 技术完成系统的开发。
关键词:宠物寄养系统,flask框架,MySQL数据库
Flask Pet Fostering System
Abstract
The rapid development of science and technology has caused tremendous changes in people's daily lives. The rapid development of electronic information technology has made the application level of electronic information technology in various fields popular and applied. The arrival of the information age has become an irresistible fashion trend, and the history of human development is entering a new era. In practical applications, the working rules and development steps of the application software are used to build a pet foster care system using python technology.
This design mainly implements a pet foster care system that integrates the advantages of humanization, efficiency, and convenience, and completes functional modules such as system user, product information, order information, warehousing information, foster care information, pet feeding, and pet video. The system communicates with the server through a browser to achieve data interaction and change. This system improves work efficiency and reduces errors and omissions in data storage through scientific management methods and convenient services. The pet foster care system is developed using Python language, Flask technology based on the MVVM model, and Eclipse 2017 CI 10 compiler. In terms of data, Microsoft's MySQL relational database is mainly used as the data storage medium, and the development of the system is completed using HTML+CSS technology in the foreground.
Key words: Pet foster care system, flask framework, MySQL database
目 录
第1章 绪论
1.1 研究背景
目前宠物寄养的频次不高,主要集中在春节及小长假期间,但是每当宠物需要寄养的时候就会出现一笼难求的现象。
很多主人可能首选养宠经验比较丰富的宠物商店,所以节假日期间寄养店的宠物数量会很多,宠物活动空间狭小还会有交叉感染的风险,但是的寄养费却比平时高出许多;第二种就是选择专门的寄养机构寄养,宠物可以享受到五星级待遇,专业度高照顾细致,硬件条件也较好,但缺点就是这样的门店较少,并且寄养费用高昂,只适合小众人的寄养。
对比以上两种寄养服务,家庭式寄养可以说是经济实惠又安全的寄养。家庭式寄养是在同城找养宠家庭进行寄养,寄养家庭既具备了养宠经验,家里也有一定的养宠设施,价格稳定不需要耗时耗力,寄养家庭在喂养自己宠物的同时直接照顾到寄养的宠物。这样的同城家庭会有很多,要寄养的宠物都分散到了不同的寄养家庭,有效减少了交叉感染的风险。
本课题旨在设计和实现一个寄养宠物的系统,有助于寄养宠物的推也能给社会带来一点实用价值。
1.2 研究现状
随着我们国家人口老龄化的趋势,独生子女越来越多,家庭结构在发生变化,对宠物的需求也在变大,因此有关宠物的服务行业不断发展,宠物寄养也不断流行起由于公交地铁高铁等公共交通工具不准携带宠物,而托运手续复杂,路途长远颠簸,携带猫猫狗狗出门对主人和宠物来说都十分折腾。一到小长假期间,这些毛孩子就成了“留守儿童”,没有人喂养,寄养就成了最主要的解决方式。
目前市场上大致有三种寄养方式:一、宠物店寄养(少数宠物医院)二、 专业的寄养机构(如酒店式寄养)三、家庭式寄养,而近来在宠圈有一定热度和影响的就是家庭式寄养宠物。
随着寄养需求和行为的激增,传统的宠物寄养问题的新闻频繁出现在大众视野中,这些问题不仅在责任的归属上众说纷纭,在赔偿.上更是难以达到一致。深究其根本原因可以总结为两点,其一,寄养宠物的生活质量难以保证。由于逐利性导致宠物的平均获得空间变得极其有限,让宠物无法得到细致的照顾。其二,寄养纠纷难理清。很多寄养合同都是商家自己拟定的,缺乏法律的保证,一旦发生寄养纠纷就不可避免发生推卸责任的现象,即使有关部门调节也无法使双方信服。
面对差强人意的寄养市场,互联网思维为寄养宠物开拓了新思路。相对于传统渠道,互联网平台有完善的监督体系和严格规范的流程,使得寄养宠物既方便也安心。国外的宠物寄养平台系统已经经过了较长时间的发展,例如美国的Rover是最早提供宠物看护寄养服务的平台。2015年开始,Rover开始扩展业务,增加了帮人遛狗的服务。2017年, Rover 成为了宠物寄养行业的第一。反观国内寄养软件小狗在家是一款宠物短期寄养平台,一直专注于家庭式宠物寄养服务APP,同时结合宠物交流社区为一体的资深萌宠爱好者的集结平台。小狗在家开通了全国200多个城市,宠物主人可通过LBS定位,发现身边实名认证的寄养家庭,高效快捷的解决宠物寄养难题。
1.3 本文的组织结构
六个章节共同组成了本文研究及设计内容,包括:
第一章:绪论。本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。
第二章:相关技术介绍。主要介绍flask框架、python嵌入式脚本语言、B/S模式等。
第三章:系统分析。包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章:系统设计。本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章:系统实现。将本系统分为前提的开发工具介绍和后期的功能代码实现。
第六章:系统测试。系统完成后,根据各个模块的测试用例才对各个模块进行功能测试。
第2章 相关技术介绍
2.1 开发技术
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于python的flask框架进行开发。
前端部分:前端框架采用了比较流行的渐进式pythonScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用flask作为开发框架,同时集成MyBatis、Redis等相关技术。
2.2 MVVM模式
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
2.3 MySQL数据库
科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的宠物寄养系统也需要这项技术的支持。
用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。
2.4 B/S结构
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
2.5 flask框架介绍
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。它被称为微框架(microframework),“微”并不是意味着把整个Web应用放入到一个Python文件,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。Flask自身不会提供表单验证功能,在项目实施过程中可以自由配置,从而为应用程序开发提供数据库抽象层基础组件,支持进行表单数据合法性验证、文件上传处理、用户身份认证和数据库集成等功能。Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别负责业务处理和安全方面的功能,这些基础函数为web项目开发过程提供了丰富的基础组件。Werkzeug库十分强大,功能比较完善,支持URL路由请求集成,一次可以响应多个用户的访问请求;支持Cookie和会话管理,通过身份缓存数据建立长久连接关系,并提高用户访问速度;支持交互式Javascript调试,提高用户体验;可以处理HTTP基本事务,快速响应客户端推送过来的访问请求。Jinja2库支持自动HTML转移功能,能够很好控制外部黑客的脚本攻击。系统运行速度很快,页面加载过程会将源码进行编译形成Python字节码,从而实现模板的高效运行;模板继承机制可以对模板内容进行修改和维护,为不同需求的用户提供相应的模板。目前Python的web框架有很多。除了Flask,还有django、Web2py等等。其中Django是目前Python的框架中使用度最高的。但是Django如同java的EJB(EnterpriseJavaBeansJavaEE服务器端组件模型)多被用于大型网站的开发,但对于大多数的小型网站的开发,使用SSH(Struts+Spring+Hibernat的一个JavaEE集成框架)就可以满足,和其他的轻量级框架相比较,Flask框架有很好的扩展性,这是其他Web框架不可替代的。
第3章 系统分析
3.1 可行性分析
3.1.1 法律可行性分析
开发软件有没有触犯法律,这涉及到软件或者系统能不能发布的问题。如果触犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,若是抄袭别人软件,将会受到严厉惩罚。
3.1.2 技术可行性分析
软件产业经过多年的发展,现在已经达到了很大的规模,从事软件开发的专业人员不计其数,软件产业的重要性已经上升到了影响和推动国民经济发展的核心地位。本系统基于的架构,目前技术已经非常的成熟,是不存在技术上面难以实现的麻烦。
3.1.3 经济可行性分析
开发软件所需的时间、人力和物力成本,开发完成后的收益如何,从投资回报的角度软件所需功能在现有经济条件能不能实现等进行深入的考虑,都符合实际的要求。所以宠物寄养系统具有经济可行性和实用性,可以节约管理成本
3.2 功能需求分析
宠物寄养系统主要是为了更加地完善宠物寄养系统的服务情况,对用户的信息、商品信息等提供了方便的机制。本系统有多类使用者,分别是管理员和用户注册。以下是从这两种用户的角度分别介绍本系统所要实现的功能。
用户:
注册:首先检查用户名和邮箱是否存在,如不存在即可进行注册,并将用户输入的密码进行MD5加密,注册成功后提示注册成功,并将用户信息保存到数据库中。
登录:使用宠物寄养系统前是需要用户登录个人账号。
宠物资讯:用户可以在线进行宠物资讯浏览等。
商品信息:用户可以进行商品信息浏览,选择自己想要商品信息进行购买。
管理员:
用户管理:对用户进行管理,用户的注册,包括用户昵称、用户名信息、用户的账号信息。
宠物资讯管理:对宠物资讯进行发布管理。
宠物喂养管理:对宠物喂养进行维护管理。
订单信息管理:对订单信息进行维护管理。
3.3 非功能需求分析
系统非功能需求有非常多,比如性能需求、可承载最大用户数、稳定性、易用性需求等。本系统分析时考虑到易用性需求,因为系统是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使系统易理解易上手易操作。
3.4 用例分析
1.普通用户主要使用系统进行宠物寄养查询以及商品,下图所示为普通用户的用例
图3-1 普通用户用例图
2.管理员主要负责用户管理、商品信息、订单信息、入库信息、寄养信息、宠物喂养、宠物视频,下图所示描述管理员的用例图。
图3-2 管理员用例图
3.5 业务流程分析
系统业务流程图如下所示。
图3-3 系统业务流程图
业务流程图(TFD)通过一些特定的符号描述业务的处理过程,它重点强调业务过程中每一项处理活动和具体业务部门的关系,选择部分模块进行具体描述。重点对本系统整体业务中最为主要的商品信息查询及领养订单业务进行描述,用户进入宠物寄养系统后进行各种模块信息的浏览,另外,管理人员进入后端管理,以执行商品信息模块的相关管理方法,并在解决后向客户提供反馈机制。
3.6 数据流程分析
如下为系统的顶层数据流图,外部实体有用户和管理员,分别对系统输入数据,从而得到要输出的数据。
图3-4系统顶层数据流图
如下图所示为系统底层数据流图。
宠物寄养系统底层数据流图主要描述系统底层模块的数据流、数据载体、数据处理、外部实体的具体交互。本系统就是管理员和普通用户在用户管理、商品信息、宠物视频管理等模块上的数据交互。
第4章 系统设计
4.1 系统架构设计
本系统架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
图4-1系统架构图
4.2 系统功能结构
为了将系统从“做什么”落实到“怎么做”,基于系统设计原则,对系统功能进行更适合编码实现的功能划分。根据上图的系统架构设计,整理出规范的系统功能结构图,为系统的实现编码做好准备。
如下图所示为系统功能结构图。
图4-2系统功能结构图
4.3 功能模块设计
用户管理针对所有用户和管理员。未注册用户点击注册,进入注册页面填写新用户信息,得到自定义生成账号后,注册完成。未注册用户注册的活动图如下图所示。
图4-3未注册用户注册活动图
用户可进行登录使用更多功能,首先进入用户登录界面,输入用户账号和密码,后台对账号和密码信息进行核对验证,验证成功则页面直接显示登录用户昵称代表登录成功,否则返回用户登录界面。用户登录活动图如下图。
图4-4用户登录活动图
用户登录后,进入功能页面,进行宠物资讯浏览,商品信息搜索、宠物视频。用户使用功能活动图如下图所示。
图4-5用户使用功能活动图
用户功能界面可对自己的密码进行修改。进入修改密码界面后核对当前密码,核对成功后填写新密码。修改密码活动图如下图所示。
图4-6修改密码活动图
4.4 数据库设计
宠物寄养系统采用的数据库是MySQL,该部分将根据系统需求和设计,设计合理的数据库。本系统考虑到之后系统的扩展集群,数据库将不使用外键。此外,不用外键时数据管理也较为简单,操作更加方便,性能更高。
4.4.1 E-R图
E-R图,更加直观的告诉开发人员系统的各个数据的属性,各个数据之间的联系,各个数据的类型。能通过该模型更直观地了解数据库的设计,并根据对其逐渐改善。
本系统图设计,如下图所示。
图4-7系统E-R图
4.4.2 表结构设计
本系统根据第三范式的思想设计数据库,减少最大程度的冗余,总共建立有多个表,用户注册表、管理员表、商品信息表、宠物喂养表等。
表结构如下所示。
表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
表foster_care_information (寄养信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | foster_care_information_id | int | 10 | 0 | N | Y | 寄养信息ID | |
2 | foster_user | int | 10 | 0 | Y | N | 0 | 寄养用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
5 | user_address | varchar | 64 | 0 | Y | N | 用户地址 | |
6 | pet_breed | varchar | 64 | 0 | Y | N | 宠物品种 | |
7 | foster_time | datetime | 19 | 0 | Y | N | 寄养时间 | |
8 | end_time | datetime | 19 | 0 | Y | N | 结束时间 | |
9 | foster_location | varchar | 64 | 0 | Y | N | 寄养位置 | |
10 | vaccine_situation | varchar | 64 | 0 | Y | N | 疫苗情况 | |
11 | pregnant_or_not | varchar | 64 | 0 | Y | N | 是否怀孕 | |
12 | foster_care_notes | text | 65535 | 0 | Y | N | 寄养备注 | |
13 | foster_care_details | longtext | 2147483647 | 0 | Y | N | 寄养详情 | |
14 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
表order_information (订单信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | order_information_id | int | 10 | 0 | N | Y | 订单信息ID | |
2 | item_no | varchar | 64 | 0 | Y | N | 商品编号 | |
3 | order_no | varchar | 64 | 0 | Y | N | 订单编号 | |
4 | trade_name | varchar | 64 | 0 | Y | N | 商品名称 | |
5 | product_brand | varchar | 64 | 0 | Y | N | 商品品牌 | |
6 | commodity_specification | varchar | 64 | 0 | Y | N | 商品规格 | |
7 | order_status | varchar | 64 | 0 | Y | N | 订单状态 | |
8 | commodity_price | int | 10 | 0 | Y | N | 0 | 商品价格 |
9 | purchase_user | int | 10 | 0 | Y | N | 0 | 购买用户 |
10 | purchase_quantity | int | 10 | 0 | Y | N | 0 | 购买数量 |
11 | total_order_amount | varchar | 64 | 0 | Y | N | 订单总额 | |
12 | purchase_remarks | text | 65535 | 0 | Y | N | 购买备注 | |
13 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
14 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
15 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表ordinary_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | ordinary_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 | user_age | int | 10 | 0 | Y | N | 0 | 用户年龄 |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
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 | 更新时间 |
表pet_feeding (宠物喂养)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_feeding_id | int | 10 | 0 | N | Y | 宠物喂养ID | |
2 | foster_user | int | 10 | 0 | Y | N | 0 | 寄养用户 |
3 | pet_nickname | varchar | 64 | 0 | Y | N | 宠物昵称 | |
4 | pet_breed | varchar | 64 | 0 | Y | N | 宠物品种 | |
5 | feeding_time | datetime | 19 | 0 | Y | N | 喂养时间 | |
6 | food_type | varchar | 64 | 0 | Y | N | 食物类型 | |
7 | food_quality | varchar | 64 | 0 | Y | N | 食物质量 | |
8 | food_details | text | 65535 | 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 | 更新时间 |
表pet_video (宠物视频)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | pet_video_id | int | 10 | 0 | N | Y | 宠物视频ID | |
2 | foster_user | int | 10 | 0 | Y | N | 0 | 寄养用户 |
3 | pet_breed | varchar | 64 | 0 | Y | N | 宠物品种 | |
4 | pet_nickname | varchar | 64 | 0 | Y | N | 宠物昵称 | |
5 | foster_care_video | varchar | 255 | 0 | Y | N | 寄养视频 | |
6 | detailed_remarks | text | 65535 | 0 | Y | N | 详情备注 | |
7 | recommend | 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 | 更新时间 |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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已取消 |
表product_information (商品信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | product_information_id | int | 10 | 0 | N | Y | 商品信息ID | |
2 | item_no | varchar | 64 | 0 | Y | N | 商品编号 | |
3 | trade_name | varchar | 64 | 0 | Y | N | 商品名称 | |
4 | product_picture | varchar | 255 | 0 | Y | N | 商品图片 | |
5 | quantity_of_goods | int | 10 | 0 | Y | N | 0 | 商品数量 |
6 | commodity_specification | varchar | 64 | 0 | Y | N | 商品规格 | |
7 | commodity_price | int | 10 | 0 | Y | N | 0 | 商品价格 |
8 | product_brand | varchar | 64 | 0 | Y | N | 商品品牌 | |
9 | suitable_for_pets | varchar | 64 | 0 | Y | N | 适用宠物 | |
10 | product_introduction | text | 65535 | 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 | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 文件类型 |
第5章 系统实现
5.1 开发工具
系统中应用的开发工具总结如下表所示。
表5-1开发工具
名称 | 工具 | 版本 |
操作系统 IDE(Integrated Development Environment) | Windows Eclipse | 7/8/10 2017 |
服务器 | Tomcat | 9.10.7 |
JDK(python Development Kit) | JDK | python SE 8.0 (1.8.0) |
数据库 浏览器 界面工具 | MySQL 谷歌 Photoshop | 5.7 6.0 2016 |
5.2 注册模块
未注册用户在用户注册界面uerRegister.jsp,输入新用户信息,点击注册后,新用户信息由界面传入控制层userAction,调用addUser(user)方法,通过userDAOImp向数据库用户表插入用户信息,由于用户账号是自动生成的,若成功则反馈注册成功,并提示新用户的用户账号;若失败则回到登录界面,并显示登录失败。
注册界面如下所示。
图5-1注册界面
5.3 登录/注销模块
用户在首页点击登录,进入用户登录界面uerLogin.jsp,输入用户账号和密码,点击登录,用户账号和密码信息由界面传入控制层userAction,调用userLogin(user)方法,通过userDAOImp向数据库用户表搜索该用户账号与密码,将最终结果反馈到前端。若成功则回到首页;用户成功登录,若失败则回到登录界面,并显示登录失败。
用户点击注销,清空浏览器session值,然后返回登录页或者首页。
登录界面如下所示。
图5-2登录界面
5.4 用户模块
5.4.1 个人资料模块
登录用户在首页点击进入用户中心userCenter.jsp,再点击修改个人信息按钮进入userChangeInfo.jsp界面,系统根据session中存储的目前登录的用户的账号,向控制层userAction发送请求,搜索当前用户信息,userAction向userDAOImp调用queryByUserId(user),向数据库的用户表搜索当前用户信息并将用户信息以对象的形式层层返回到userChangeInfo.jsp界面,显示出当前用户的个人信息。
若用户要对个人信息进行修改,则通过修改当前信息之后点击确认,向控制层userAction发送更改后的用户信息,调用changeUser(user)方法,通过userDAOImp向数据库用户表更新用户信息,若成功则反馈注册成功,则返回的userChangeInfo.jsp界面被更改成功;若失败则显示修改失败。
5.4.2 宠物资讯模块
用户在登录状态下浏览宠物资讯时,点击加入宠物资讯信息后前台发起请求,将对应的宠物shuliang、id参数信息从前台传递GoumaiController类里,匹配到add()方法,add()方法调用GoumaiServiceImpl类的add()方法。
宠物资讯界面如下所示。
图5-3宠物资讯界面
5.4.3 商品信息模块
用户在登录状态下点击商品信息页面可将进行商品信息提交,从session中取出该商品信息,点击加入商品信息,发起请求,将对应的商品信息chongwulinyang、id参数信息从前台传递linyangController类里,匹配到add()方法,add()方法调用linyangServiceImpl类的add()方法。
商品信息界面如下所示。
图5-4商品信息界面
5.5 管理员模块
5.5.1 公告管理模块
在主页左侧菜单栏中点击“公告管理”按钮,再从二级目录中点击“新增公告”按钮,进入到新增公告界面。在此处公告可以添加公告的标题。
在主页左侧菜单栏中点击“公告管理”按钮,再从二级目录中点击“查询公告”按钮,进入到查询公告界面。在此处公告可以查询当前所有公告记录。
公告展示界面如下图所示。
图5-5公告管理界面
5.5.2 商品信息管理模块
根据需求,需要对商品信息进行添加、删除或修改详情信息。删除或修改商品信息时,系统根据商品信息的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询商品信息状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。
添加商品信息时,会给出数据填写的页面,该页面根据填写好的商品信息同样会事先发送Ajax请求查询是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
商品信息管理页面设计效果如下图所示。
图5-6商品信息管理界面
5.5.3 用户管理模块
用户通过注册了方可获得登录使用权限,此时选择注册用户选项,系统就会自动转到用户注册工作面,在注册该部分信息时系统会自动调用add函数,然后在给定的文本框中填写有关该用户的基础信息后选择确认即可完成注册。检索用户信息,在新增用户信息以后,在检索工具栏中填写对应的用户信息,系统就会将该用户有关的所有信息展示出来。
用户管理流程图如下所示。
图5-1 用户管理流程图
用户管理界面如下图所示。
图5-9用户管理界面
5.5.4 订单信息管理模块
添加订单信息时,会给出数据填写的页面,该页面根据填写好的分类信息同样会事先发送Ajax请求查询类型编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
订单信息页面设计效果如下图所示。
图5-10订单信息管理界面图
第6章 系统测试
6.1 测试概述
软件测试是软件开发完成后必须经过的一道程序,它在软件开发过程中地位十分重要,需要由专业的测试工程师来对软件进行各方面的测试,大到功能模块测试,小到代码的单元测试,这对测试工程师来说需要有足够的耐心和专业的测试方案,软件测试归根结底就是对软件的结构和功能的综合测评,需要做到结构稳定和功能正确,二者兼顾。软件测试也叫寻找系统bug的过程,世界上没有完美无缺、不存在bug的软件,只能将软件的bug降到最低最小,来追求极致。
6.2 测试过程
6.2.1 登录测试
登录测试是系统最开始就要进行,测试用户能否登录,才能完成后续的功能操作。
登录测试用例表如下所示。
表6-1登录测试
用例编号 | YL001 | 程序版本 | 1.00 |
功能名称 | 使用者登录测试 | 编制人 | 李铁蛋 |
功能描述 | 根据用户的登录情况测试 | ||
用例目的 | 测试用户登录情况是否正确 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
用户名 | 为空 | 请输入用户名 | 请输入用户名 |
密码 | 为空 | 请输入密码 | 请输入密码 |
用户密码组合 | 用户名:klouse 密码 klouses | 用户与密码不匹配 | 用户与密码不匹配 |
用户密码组合 | 用户名 : klouse 密码 klouse | 进入系统 | 正确的用户名和密码 登录系统 |
6.2.2 信息录入测试
管理员在发布信息页面,通过按照预先格式发布信息,如果因为输入时候缺少相关内容,就不能发布成功,且有相应错误提示
信息录入发布测试用例表如下所示。
表6-1信息录入发布测试
用例编号 | YL002 | 程序版本 | 1.00 |
功能名称 | 信息发布测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者发布或者录入信息进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者录入发布信息进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
属性1 | 为空 | 请输入属性1对应的数据 | 请输入属性1对应的数据 |
属性2 | 为空 | 请输入属性2对应的数据 | 请输入属性2对应的数据 |
属性3 | 为空 | 请输入属性3对应的数据 | 请输入属性3对应的数据 |
全部输入 | 数据均填入 | 录入发布成功 | 录入发布成功 |
6.2.3 信息更新测试
管理员在更新信息页面,通过按照预先格式更新信息,如果因为输入时候缺少相关内容或者更新的数据不符合当前规范的话,就不能更新成功,且有相应错误提示
信息更新测试用例表如下所示。
表6-1信息更新测试
用例编号 | YL003 | 程序版本 | 1.00 |
功能名称 | 信息更新测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者更新信息进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者更新信息进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
属性1 | 编号:321 | 编号更新成功 | 编号更新成功 |
属性2 | 名称:名称1 | 名称更新成功 | 名称更新成功 |
属性3 | 内容:内容1234内容 | 内容更新成功 | 内容更新成功 |
全部输入 | 数据均未更改 | 更新成功 | 更新成功 |
6.2.4 信息删除测试
管理员在信息页面,通过点击数据删除按钮来删除该条数据,如果该数据和其他数据有关联,则提示是否确定删除。
信息删除测试用例表如下所示。
表6-1信息删除测试
用例编号 | YL004 | 程序版本 | 1.00 |
功能名称 | 信息删除测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者删除信息进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者删除信息进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
数据1 | 无任何关联的数据1 | 数据删除成功 | 数据删除成功 |
数据2 | 和其他数据有关联的数据2 | 请确认是否删除 | 请确认是否删除 |
6.3 测试结果
在经过之前的所有的工作之后,通过对软件的测试方法、测试原则还有典型的测试用例进行全面的、深入的介绍。经过对系统的全面测试,系统目前所具有的所有功能均成功的实现并且通过了测试,整个系统实现了基于 python 开发的期望。
第7章 总结与展望
7.1 总结
宠物寄养系统采用flask框架开发,该系统非常完美的集优点于一身,成熟、强大、易理解易使用,通过使用这个结构,降低了开发的难度。本系统实现了基于flask的宠物寄养系统,将数据操作维护的过程转化成电脑操作流程,具体实现了对系统人员管理、商品信息数据维护、宠物视频维护,并提供查询统计功能来对宠物寄养系统的相关数据进行统计分析,让使用者能更清晰的掌握运营情况,帮助使用者进行数据操作维护,简化工作流程,提高工作效率和盈利。
7.2 展望
目前完成的宠物寄养系统,还有许多有待改进的地方。一个是功能上的改进,用户理应可以修改自己的相关信息,故应增设个人中心功能;另外,系统如果能提供更多的功能就会使得系统更加丰富和多样化,比如数据当前分析和未来预测等。第二个是技术上的改进,由于对开发框架不太熟悉,权限管理这部分,本系统采用一个python页面来规定好导航栏,即跳转的页面,这相对比较不灵活,如果将URL路径记录到数据库并实现增删查改会比较好;另外就是对EasyUI的使用还不够熟练,视觉效果和界面观感有待提升,希望日后能对这个系统有所改进。
参考文献
[1]汪舜敏,彭擎宇,段景辉,梁志勇,周显春.基于Python语言描述的数据结构课程设计实践探究[J].电脑知识与技术,2023,19(04):169-171.DOI:10.14004/j.cnki.ckt.2023.0171.
[2]韦韫韬,王晓娟,薛佳楣,王超,王锐.《Python语言程序设计》课程分层混合式教学模式在学生实践能力培养中的应用研究[J].电脑知识与技术,2023,19(04):175-177.DOI:10.14004/j.cnki.ckt.2023.0167.
[3]史文 ,孙曼曼 ,李春辉 .Python语言在“程序设计基础”课程中的应用探讨[J].成才之路,2023(03):113-116.
[4]包春兰,喻曦.基于数字化的宠物寄养服务研究[J].信息系统工程,2022(11):143-147.
[5]来思琪,孔华锋.基于Flask框架的新闻聚合系统设计与实现[J].电脑编程技巧与维护,2022(11):30-33.DOI:10.16184/j.cnki.comprg.2022.11.009.
[6]杜兴.基于Flask框架Web版的扫脸登录系统研究与实现[J].电子制作,2022,30(12):54-56+87.DOI:10.16589/j.cnki.cn11-3571/tn.2022.12.018.
[7]张宁. 基于Flask框架的四六级英语学习系统的设计与实现[D].华东师范大学,2022.DOI:10.27149/d.cnki.ghdsu.2022.002537.
[8]Yan Qilin. Real-Time Analysis of Youth Emotion Based on Python Language and Smart Sensor Network[J]. Mobile Information Systems,2022,2022.
[9]余晓帆,朱丽青.基于Flask框架的社交网站数据爬取及分析[J].微型电脑应用,2022,38(03):9-12.
[10]Mathieu Didier. Erratum: Modeling Sensitivities of Energetic Materials using the Python Language and Libraries[J]. Propellants, Explosives, Pyrotechnics,2022,47(2).
[11]Rodríguez-Valenzuela Francisco Javier,González-Meza Omar Alejandro,González Gutiérrez Ana Gabriela,Bárcena-Soto Maximiliano,Larios-Durán Roxana,Casillas Norberto. Development of an Application in Python Language to Simulate Cyclic Voltammograms with Multiple Reaction Mechanisms.[J]. Electrochemical Society Transactions,2022,106(1).
[12]李相霏,韩珂.基于Flask框架的疫情数据可视化分析[J].计算机时代,2021(12):60-63+68.DOI:10.16644/j.cnki.cn33-1094/tp.2021.12.014.
[13]李乐天,宁芳,蒋浩.宠物寄养产品服务系统设计[J].机电产品开发与创新,2021,34(05):60-63.
[14]Uzo Izuchukwu Uchenna,Ugboaja Samuel Gregory,Ugwu Nnaemeka Virginus,Obayi Adaora Angela,Chigbundu Kanu Enyioma,Nnamdi Johnson Ezeora,Okwueze Chisom Nneoma,Anigbogu Kenechukwu,Ihedioha Uchechi Michael. Exploring a Secured Socket Python Flask Framework in Real Time Communication System[J]. Asian Journal of Research in Computer Science,2021.
[15]Witsarut Sriratana,Vittaya Khagwian,Sutham Satthamsakul. Analysis of Electric Current by Using MySQL Database on Web Server for Machine Performance Evaluation: A Case Study of Air Conditioning System[J]. 제어로봇시스템학회 국제학술대회 논문집,2020.
[16]宋益锋,闵基龙,苏哲,于浩,徐艺娜,安琪,张旭,赵伊.宠物寄养模式的创建[J].畜牧与饲料科学,2019,40(01):71-74.DOI:10.16003/j.cnki.issn1672-5190.2019.01.019.
致谢
在老师的教导和帮助下,本人完成了本篇论文,老师对论文的内容、格式都有非常严格的要求,在我写毕业论文的过程中,他多次给出了建议,并定期检查,对我们严格要求,帮助我们在文档的编写上写到极致和正确,他这种教学和工作态度,让我对他产生无限的敬佩感和尊敬感。写毕业论文的同时,作为应届生,我也忙着找工作中,遇到了很多选择,感到困惑迷茫的时候,老师给了我很多意见,感谢老师的耐心开导,跟她的聊天我明白了许多。
我还要感谢我的父母,一直以来都非常支持和相信我,在精神和经济上给了我很多力量,如今我将毕业走上工作之路,终于能报答父母的养育教导之恩。还有我大学期间所有老师和全体同学,遇到问题时,这些老师同学总是无私地帮助我,真的非常感谢,我也会加油努力成长为一个有用的人。