摘 要
随着汽车产业的快速发展,人们对汽车的需求和选择日益多样化。传统的汽车保举和购买方式已经不能完全满足用户的需求,因此,建立一个基于Flask的汽车保举系统成为一项刻不容缓的任务。通过该系统,能为用户进行个性化保举,用户将能够方便快捷地获取汽车资讯、查看汽车展示信息、对比差别汽车信息。通过系统,能为管理员提供一个汽车保举和对比的管理工具宁静台,进步汽车保举的管理服从和服务水平,提供更好的服务体验。该系统它能够显著提升用户的搜索、欣赏汽车资讯和信息的服从,现代用户对汽车有着更高的要求和等待,他们更希望通过便捷的方式获取汽车干系信息并进行对比,以便做出明智的购车决策。通过汽车保举系统提供汽车资讯、汽车展示和对比功能,能够满足用户的需求,加强用户对汽车干系信息的获取和分析本领,提升用户体验。
汽车保举系统的计划与实现采取MySQL作为数据的主要存储单元,并采用Python开辟技术、Flask技术框架进行业务系统的编码及其开辟,实现了本系统的全部功能。本文,首先分析了研究的背景、意义、方法,为研究工作的合理性打下了底子。针对性地对汽车保举系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对计划系统需要使用的技术软件以及计划思想做了基本的介绍,末了来实现汽车保举系统分析系统和摆设运利用用它。
关键词:汽车保举系统;Python开辟技术;MySQL数据库;Flask技术框架
Abstract
With the rapid development of the automotive industry, people's demand and choices for cars are becoming increasingly diverse. The traditional car recommendation and purchasing methods can no longer fully meet the needs of users, therefore, establishing a Flask based car recommendation system has become an urgent task. Through this system, personalized recommendations can be provided to users, who will be able to easily and quickly obtain car information, view car display information, compare different car information, and make online purchases. Through the system, it can provide administrators with a management tool and platform for car recommendation and sales, improve the management efficiency and service level of car recommendations, and provide a better service experience. This system can significantly improve the efficiency of users in searching and browsing car information. Modern users have higher requirements and expectations for cars, and they prefer to obtain car related information through convenient means and compare it in order to make wise car purchase decisions. By providing car information, car display, and comparison functions through car recommendation systems, it can meet the needs of users, enhance their ability to obtain and analyze car related information, and improve the user experience.
The design and implementation of the car recommendation system adopts MySQL as the main storage unit for data, and adopts Python development technology and Flask technology framework for business system coding and development, achieving all functions of the system. This article first analyzes the background, significance, and methods of the research, laying the foundation for the rationality of the research work. Targeted analysis was conducted on the various requirements and technical issues of the car recommendation system, demonstrating the necessity and feasibility of the system. Then, a basic introduction was made to the technical software and design ideas required for designing the system. Finally, the analysis system of the car recommendation system was implemented and deployed for operation.
Keywords:Automotive recommendation system; Python development technology; MySQL database; Flask Technology Framework
目 录
第1章 绪论
1.1 研究背景
1.2 研究意义
1.3 研究方法
1.4 论文章节安排
第2章 干系技术介绍
2.1 开辟技术阐明
2.2 Python简介
2.3 Flask框架介绍架
2.4 MySQL数据库
第3章 系统分析
3.1 可行性分析
3.2 功能需求分析
3.3 非功能需求分析
3.4 安全性需求分析
3.4.1 系统的安全性
3.4.2 数据的安全性
3.5 系统用例分析
3.6 数据流程分析
第4章 系统计划
4.1 系统架构计划
4.2 系统总体计划
4.3 数据库计划
4.3.1 数据库概念计划
4.3.2 数据库表计划
第5章 关键模块计划与实现
5.1 数据库访问层实现
5.2 登录功能模块实现
5.3 用户功能模块实现
5.3.1 注册模块的实现
5.3.2 前台首页模块的实现
5.3.3 汽车展示模块的实现
5.3.4 个人中心模块的实现
5.4 后台管理功能模块实现
5.4.1 汽车展示管理的实现
5.4.2 系统管理的实现
5.4.3 系统公告管理模块的实现
5.4.4 资源管理的实现
第6章 系统测试
6.1 测试目标
6.2 功能测试
6.3 性能测试
6.4 测试结果
第7章 总结与展望
参考文献
致谢
随着汽车产业的快速发展,人们对汽车的需求和选择日益多样化。传统的汽车保举和购买方式已经不能完全满足用户的需求,因此,建立一个基于Flask的汽车保举系统成为一项刻不容缓的任务。
汽车保举系统的计划与实现采取MySQL作为数据的主要存储单元,并采用Python开辟技术、Flask技术框架进行业务系统的编码及其开辟,实现了本系统的全部功能。包括但不限于系统用户、汽车展示管理、汽车类型管理、对比列表管理,系统管理、系统公告管理、资源管理等汽车保举功能。通过该系统,能为用户提供个性化汽车信息保举,用户将能够方便快捷地获取汽车资讯、查看汽车展示信息、对比差别汽车信息。通过系统,能为管理员提供一个汽车保举和对比的管理工具宁静台,进步汽车保举的管理服从和服务水平,提供更好的服务体验。
汽车保举系统的计划与实现的建立具有告急的研究意义。首先,它能够显著提升用户的购车体验。现代用户对汽车有着更高的要求和等待,他们更希望通过便捷的方式获取汽车干系信息并进行对比,以便做出明智的购车决策。通过提供汽车资讯、展示和对比功能,该系统能够满足用户的需求,加强用户对汽车干系信息的获取和分析本领,提升用户体验。该系统为用户提供了丰富的汽车信息和选择,并通过对比功能帮助用户做出购车决策。通过对比,用户可以更加全面地相识各种汽车型号的特点和优缺点,从而为购买汽车决策的提供支持依据。
同时,该系统提供了管理员能够实时对汽车保举进行管理,进步了管理员的工作服从。在日常运营中,管理员经常需要发布告急公告信息、更新汽车资讯、汽车展示等信息、管理和保持系统运行状态等,并确保用户实时获得干系信息,进步汽车保举管理服从和服务水平。末了,基于Flask开辟汽车保举系统不仅能够提升开辟者的技术水平,同时也可以为后续类似系统的开辟提供履历和参考。Flask是一种轻量级的Web应用框架,具有简朴、机动和易于上手的特点。通过使用Flask开辟汽车保举系统,能够学习和把握这一流行的技术,并将其运用到其他类似的项目中。
综上所述,计划并实现一个基于Flask的汽车保举系统具有告急的研究意义和现实应用价值。它不仅能够提升用户体验、实现汽车对比,提供信息数据支持,还能进步管理服从,同时为开辟者提供技术探索和履历。
首先,通过引擎搜索或者查阅干系文献资料,相识了本系统开辟的背景以及计划系统的意义所在,收集用户需求信息。其次,在开辟工具上,最终确定选用Python平台来计划开辟本系统,MySQL作为计划数据库的工具。即使用Python语言实现用户界面,并同数据库毗连起来实现完备的通信功能。之后,计划出系统大抵的功能模块。主要从方便系统用户和系统管理员的角度进行分析,明确该系统应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。使用现有的开辟平台,结合自己所学的知识,在老师的指导帮助下来完成该计划,确保系统的可用性、实用性。
论文将分层次进行编排,撤除论文择要致谢文献参考部分,论文主要架构如下:
第一章概述了汽车保举系统的研究背景与意义;精炼地总结了研究方法内容进行研究,末了给出了论文的组成结构。
第二章简要概述了本文所用的开辟技术和工具。
第三章简要对系统各业务流程进行需求分析、可行性分析。
第四章对汽车保举系统进行计划。
第五章对汽车保举系统进行实现,并贴出干系页面截图,语言描述出详细功能实现的操纵方法。
第六章对汽车保举系统采用测试用例的方式来对一些主要功能模块测试,末了得出测试结果。
第七章总结与展望。
本系统使用python开辟技术,通过Flask框架配合MySQL数据库进行开辟。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格结构实现相应式,可适应PC端、平板端、手机端等差别屏幕大小尺寸的完美结构展示。
后端部分:采用Flask作为开辟框架,同时集成Redis等干系技术。
Python 是一个高层次的脚本语言结合了表明性、编译性、互动性和面向对象的。Python 的计划,相比其他语言经常使用英文关键字和其他语言的一些标点符号,它具有比其他语言更有特色语法结构,具有很强的可读性。
表明型语言:类似于Python和Perl语言,这意味着开辟过程中没有了编译这个环节。
交互式语言:可以在一个 Python 提示符 >>> 后直接执行代码。
面向对象语言:Python支持面向对象的风格或代码封装在对象的编程技术。
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框架不可替代的。
MySQL 颠末多次的更新,功能层面已经非常的丰富和完善了,从MySQL4版本到5版本进行了比较大的更新,在商业的现实使用中取得了很好的现实应用效果。最新版本的MySQL支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时颠末系统的多次更新,数据库自身的镜像功能也得到了很大的加强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强盛的备份功能也包管了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和笔墨进行了分类处理惩罚,界面的显示更加清爽和详细。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的现实使用带来了很大的便捷。
针对本文中计划的汽车保举系统分析系统在现实的实现过程中,最终选择MySQL数据库的主要原因在于在企业的应用系统应用及开辟的过程中会存在大量的数据库比较频仍的操纵,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的MySQL来对汽车保举系统分析系统后台数据进行存储操纵。
数据库管理系统的总体结构图如下图所示。
图2-1 数据库组成结构
技术性方面,采用当前主流的Python技术进行系统主体框架的搭建,配合使用jquery,ajax,实现前台页面的计划与雅观调解,以上技术,均由本人颠末系统学习,并且都是在课程计划中实践过的,可以使得开辟更加便捷和系统。从技术角度看,这个系统是完全可以实现的。
实用性方面,本次计划的主要任务是在汽车保举系统分析系统内汽车资讯、汽车展示信息等,提供个性化的保举内容,根据用户欣赏的汽车类型和管理员新添加的类型进行优先保举,符合当前潮流的发展,并能提供汽车信息对比,方便用户比较汽车的优缺点。从用户角度出发,同时也考虑系统运营成本和人力资源,采用网络上的便捷方式,实现线上业务,使得业务流程更系统,也更方便用户的体验,具有实用性。
经济性方面,由于本课题中计划的汽车保举系统分析系统的主要目标是为了能够更加方便及快捷的进行信息的查询管理及检索服务,也就是能够可以直接投入使用的信息化软件。系统的主要成本主要是会合在对使用数据后期继承维护及其管理更新这个操纵上。但是一旦系统投入到现实的运行及使用之后就能够很好的进步信息查询检索的服从,同时也需要有用的包管查询者的信息方面的安全性,同时这个汽车保举系统分析系统所带来的现实应用方面的价值是远远的超过了现实系统进行开辟与维护方面的成本,因此,从经济上来说开辟这个软件是可行的。
汽车保举系统分析系统的功能主要分为平常用户根据自己的需求进行注册登录,查询和欣赏汽车资讯、汽车展示等信息,并可以喜好的汽车信息进行收藏和对比,在线上进行购买操纵,管理员则主要对系统用户、汽车展示管理、汽车类型管理、对比列表管理,系统管理、系统公告管理、资源管理等进行处理惩罚。详细如下:
平常用户模块:
- 注册登录:游客可以通过注册成为系统用户,使用账号暗码可进行登录,使用系统功能。
- 首页:当平常用户登录进入首页界面,可查看轮播图、汽车资讯、汽车展示保举和使用系统其他功能,首页的汽车展示保举会根据用户欣赏的汽车类型进行优先保举,同时,管理员新添加的汽车类型也会优先保举。
- 系统公告:当平常用户点击“系统公告”这一按钮,可查看包括关于我们、联系方式、网站介绍等管理员发布的所有系统公告,点击可查看详情。
- 汽车资讯:当平常用户点击“汽车资讯”这一按钮,可查看管理员发布的所有汽车资讯信息,支持局部搜索和下拉(筛选、排序)搜索,并支持热门文章保举,点击可查看详情,进行点赞、收藏和品评。
- 汽车展示:当平常用户点击“汽车展示”这一按钮,可查看管理员发布的所有汽车展示,支持汽车名称、汽车类型、汽车品牌、对比量、汽车卖价等关键字搜索和下拉汽车类型、排序的下拉搜索,点击可查看详情(汽车名称、汽车类型、汽车品牌、汽车配置、对比量、汽车卖价、汽车详情),进行点赞、收藏和品评,并可点击参加对比操纵,填写参加对比信息(对比日期)并提交。
- 我的账户:当平常用户点击“我的账户”这一按钮,可对个人资料进行管理,包括修改暗码和修改资料(头像、昵称、邮箱、平常用户姓名、平常用户性别)。
- 个人中心:当平常用户点击“个人中心”这一按钮,可对个人首页、对比列表、收藏等信息进行管控。比方:
- 点击“对比列表”,可查看自己的对比列表信息,进行查询和删除操纵,支持汽车名称搜索,可以对添加的汽车展示信息,进行同步对比,可点击查看详情(汽车名称、汽车类型、汽车品牌、汽车配置、对比量、汽车卖价、平常用户、对比日期);
- 点击“收藏”,可管理所有收藏信息,包括汽车资讯、汽车展示等收藏信息,进行查看和删除操纵,点击可查看详情。
管理员模块:
- 登录:管理员账号暗码由系统生成,可使用账号暗码可进行登录,使用系统功能,并对个人信息和暗码进行管理。
- 系统用户:管理员可对平常用户和管理员进行管控,包括进行增编削查操纵,点击可查看详情。
- 汽车展示管理:当管理员点击“汽车展示”这一按钮,可查看发布的所有汽车展示,进行增改删查操纵,支持汽车名称、汽车类型、汽车品牌、对比量、汽车卖价搜索,点击可查看详情(汽车名称、汽车类型、汽车品牌、汽车配置、对比量、汽车卖价、汽车详情)和查看品评。
- 汽车类型管理:当管理员点击“汽车类型”这一按钮,可查看发布的所有汽车类型信息,进行增改删查操纵,支持汽车类型搜索,点击可查看详情。
- 对比列表管理:当管理员点击“对比列表”这一按钮,可查看所有比列表信息,,支持汽车名称搜索,可点击查看详情。
- 系统管理:管理员可对首页的轮播图进行管理,进行增编削查操纵,支持标题搜索,可点击查看详情(标题、轮播图)。
- 系统公告管理:管理员可对系统公告进行管理,进行增编削查操纵,支持标题搜索,可点击查看详情(标题、正文)。
- 资源管理:管理员可对汽车资讯和资讯分类进行管理,进行增编削查操纵,汽车资讯支持标题、标签、分类搜索,可点击查看详情(封面图、标题、分类、标签、描述、正文)和查看品评;资讯分类支持类型名称搜索,可点击查看详情。
首先主要考虑的是系统功能软件,在详细计划的环节上,是不是能够较好的满足各类用户的基本功能需求,如果不能较好的满足用户需求,那么这个系统的存在是没有价值的。软件系统的非功能性求分析,从7个方面展开,一个是性能分析,针对系统;一个是安全分析,针对系统,一个是完备度分析,针对系统,一个是可维护分析,针对系统,一个是可扩展性分析,针对系统,一个是适应业务的性能分析。面临汽车保举系统分析系统存在的性能、安全、扩展、完备度等7个方面性能综合比对分析后发现,需要相应的非功能性需求分析。
安全性对每一个系统来说都是非常告急的。安全性很好的系统可以保护企业的信息和用户的信息不被窃取。进步系统的安全性不仅是对用户的负责,更是对企业的负责。尤其针对于汽车保举系统分析系统来说,必须要有很好的安全性来保障整个系统。
系统具有对使用者有权限控制,针对脚色的不通限制使用者的权限,以此来确保系统的安全性。
数据库中的数据是从外界输入的,当数据的输入时,由于种种原因,输入的数据会无效,或者是脏数据。因此,怎样包管输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。
因此,在写入数据库时,要包管数据完备性、正确性和一致性。
汽车保举系统中平常用户脚色用例图如图3-1所示:
图3-1平常用户脚色用例图
汽车保举系统中管理员用例图如图3-2所示:
图3-2 管理员用例图
对系统的数据流进行分析,系统的使用者分为二类,平常用户和管理员。系统主要对界面信息传送,登录信息的验证,注册信息的接收,用户各种操纵的相应做处理惩罚。
系统顶层数据流图如下图所示。
图3-3 顶层数据流图
要判定用户是是什么身份,是根据登录的数据来判定后,跳转到对应的功能界面。在系统的内部用户就可以对数据进行操纵,数据库中心就可以接收到系统传输的有用数据流来对数据sql语句进行对应操纵。
系统底层数据流图如下图所示。
图3-4 底层数据流图
系统可以分为前台和后台两部分,每一种操纵后系统都返回操纵结果。前台和后台的数据毗连主要通过数据库,既分别对数据库做差别的操纵。
本汽车保举系统分析系统的架构计划主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
系统架构如下图所示。
图4-1 系统架构
汽车保举系统分析系统总体分为平常用户模块和后台管理员模块。
两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅干系资料后整理制作的。
综上所述,系统功能结构图如下图所示。
图4-2 系统功能结构图
数据库计划一样平常包括需求分析、概念模型计划、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型计划有概念模型和逻辑结构计划两部分。
根据前面的数据流程图,结合系统的功能模块计划,计划出符合系统的各信息实体。
系统E-R图如下图所示。
图4-3 系统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
| 用户编号:
| 表article (文章:用于内容管理系统的文章)
编号
| 名称
| 数据类型
| 长度
| 小数位
| 允许空值
| 主键
| 默认值
| 阐明
| 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
|
| 文章描述
| 表article_type (文章分类)
编号
| 名称
| 数据类型
| 长度
| 小数位
| 允许空值
| 主键
| 默认值
| 阐明
| 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
| 更新时间:
| 表auth (用户权限管理)
编号
| 名称
| 数据类型
| 长度
| 小数位
| 允许空值
| 主键
| 默认值
| 阐明
| 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
| 更新时间:
| 表car_display (汽车展示)
编号
| 名称
| 数据类型
| 长度
| 小数位
| 允许空值
| 主键
| 默认值
| 阐明
| 1
| car_display_id
| int
| 10
| 0
| N
| Y
|
| 汽车展示ID
| 2
| car_name
| varchar
| 64
| 0
| Y
| N
|
| 汽车名称
| 3
| car_type
| varchar
| 64
| 0
| Y
| N
|
| 汽车类型
| 4
| car_pictures
| varchar
| 255
| 0
| Y
| N
|
| 汽车图片
| 5
| automobile_brand
| varchar
| 64
| 0
| Y
| N
|
| 汽车品牌
| 6
| car_configuration
| varchar
| 64
| 0
| Y
| N
|
| 汽车配置
| 7
| sales_volume
| int
| 10
| 0
| Y
| N
| 0
| 销售量
| 8
| car_selling_price
| int
| 10
| 0
| Y
| N
| 0
| 汽车卖价
| 9
| car_details
| longtext
| 2147483647
| 0
| Y
| N
|
| 汽车详情
| 10
| hits
| int
| 10
| 0
| N
| N
| 0
| 点击数
| 11
| praise_len
| int
| 10
| 0
| N
| N
| 0
| 点赞数
| 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
| 更新时间
| 表car_type (汽车类型)
编号
| 名称
| 数据类型
| 长度
| 小数位
| 允许空值
| 主键
| 默认值
| 阐明
| 1
| car_type_id
| int
| 10
| 0
| N
| Y
|
| 汽车类型ID
| 2
| car_type
| 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
| 更新时间
| 表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:
| 表comparison_list (对比列表)
编号
| 名称
| 数据类型
| 长度
| 小数位
| 允许空值
| 主键
| 默认值
| 阐明
| 1
| comparison_list_id
| int
| 10
| 0
| N
| Y
|
| 对比列表ID
| 2
| car_name
| varchar
| 64
| 0
| Y
| N
|
| 汽车名称
| 3
| car_type
| varchar
| 64
| 0
| Y
| N
|
| 汽车类型
| 4
| automobile_brand
| varchar
| 64
| 0
| Y
| N
|
| 汽车品牌
| 5
| car_configuration
| varchar
| 64
| 0
| Y
| N
|
| 汽车配置
| 6
| sales_volume
| int
| 10
| 0
| Y
| N
| 0
| 销售量
| 7
| car_selling_price
| int
| 10
| 0
| Y
| N
| 0
| 汽车卖价
| 8
| regular_users
| int
| 10
| 0
| Y
| N
| 0
| 平常用户
| 9
| comparison_date
| date
| 10
| 0
| Y
| N
|
| 对比日期
| 10
| create_time
| datetime
| 19
| 0
| N
| N
| CURRENT_TIMESTAMP
| 创建时间
| 11
| 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
| 更新时间:
| 表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已取消
| 表regular_users (平常用户)
编号
| 名称
| 数据类型
| 长度
| 小数位
| 允许空值
| 主键
| 默认值
| 阐明
| 1
| regular_users_id
| int
| 10
| 0
| N
| Y
|
| 平常用户ID
| 2
| user_name
| varchar
| 64
| 0
| Y
| N
|
| 用户姓名
| 3
| gender
| varchar
| 64
| 0
| Y
| N
|
| 性别
| 4
| examine_state
| varchar
| 16
| 0
| N
| N
| 已通过
| 审核状态
| 5
| user_id
| int
| 10
| 0
| N
| N
| 0
| 用户ID
| 6
| create_time
| datetime
| 19
| 0
| N
| N
| CURRENT_TIMESTAMP
| 创建时间
| 7
| 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
|
| 文件类型
| 表user (用户账户:用于保存用户登录信息)
编号
| 名称
| 数据类型
| 长度
| 小数位
| 允许空值
| 主键
| 默认值
| 阐明
| 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
| email
| 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
| 会员扣头
| 表user_group (用户组:用于用户前端身份和鉴权)
编号
| 名称
| 数据类型
| 长度
| 小数位
| 允许空值
| 主键
| 默认值
| 阐明
| 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
| 更新时间:
|
从flask架构的原理可知,汽车保举系统分析系统的各大模块的实现均需要对数据库的数据进行操纵,详细包括查询数据、写入数据、更新数据和删除数据。
数据库查询流程图如下图所示。
图5-1数据库查询流程图
数据库配置文件 代码如下 在app.py:
db = SQLAlchemy()
app = Flask(__name__, static_folder='static')
# 数据库链接配置
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@127.0.0.1:3306/projectxxxxx'
app.secret_key = 'v&#prqo7t*(!ktb+8r=+83@#_$n1pg_xig$j=6v^r3#$i)wx87'
db.init_app(app)
app.config['UPLOAD_FOLDER'] = 'static/upload'
主要由两部分组成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和暗码,当用户名和暗码其中一个输入为空时,给出提示“用户名,暗码不能为空”。获取用户名和暗码后到数据库中查找,如果用户名存在,以及对应的暗码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入会员的功能模块,主要有会员基本信息修改,已经发布招聘信息管理,发布信息,和退出功能。退出功能是清除全局变量username的值,并跳回到首页。用户登录界面如下图所示。
图5-2用户登录界面
登录代码如下:
def Login(self, ctx):
"""
登录API
@param {Object} ctx http请求上下文
"""
print("===================登录=====================")
ret = {
"error": {
"code": 70000,
"message": "账户不存在",
}
}
body = ctx.body
# 获取用户
password = md5hash(body["password"]) or ""
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if obj:
# 检查用户所属用户组
user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})
if user_group and user_group['source_table'] != '':
user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']},
{"like": False})
if user_obj['examine_state'] == '未通过':
ret = {
"error": {
"code": 70000,
"message": "账户未通过审核",
}
}
return ret
if user_obj['examine_state'] == '未审核':
ret = {
"error": {
"code": 70000,
"message": "账户未审核",
}
}
return ret
# 校验用户状态
if obj["state"] == 1:
# 校验暗码
if obj["password"] == password:
# 生成Token
timeout = datetime.now(tz=timezone.utc)
timestamp = int(time.mktime(timeout.timetuple())) * 1000
token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))
# 存储Token
# session[token] = obj["user_id"]
session.setdefault(token, obj["user_id"])
session.permanent = True
service_select("access_token").Add(
{"token": token, "user_id": obj["user_id"]}
)
# 回传用户
obj["token"] = token
ret = {
"result": {"obj": obj}
}
else:
ret = {
"error": {
"code": 70000,
"message": "暗码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "用户账户不可用,请联系管理员",
}
}
return ret
用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,游客可以通过注册成为系统用户,使用账号暗码可进行登录,使用系统功能。用户注册界面如下图所示。
图5-3用户注册界面
注册代码如下:
# 用户类
class User(controllerClass):
def __init__(self, config={}):
"""
构造函数
@param {Object} config 配置参数
"""
config_init = {
# 选择的模板那路径模板
"tpl": "./user/",
# 选择的服务
"services": "user",
# 注册API
"get_api": ["state", "quit"],
"post_api": ["login", "register", "change_password", "forget_password"],
# 唯一判定
"unique": ["username"]
}
config_temp = config
config_temp.update(config_init)
super(User, self).__init__(config_temp)
def Register(self, ctx):
"""
注册API
@param {Object} config 配置参数
"""
print("===================注册=====================")
userService = service_select("user")
body = ctx.body
# 判定必须信息
if "username" not in body and body["username"] == '':
return {"error": {
"code": 70000,
"message": "用户名不能为空",
}}
if "user_group" not in body and body["user_group"] == '':
return {
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}
if "password" not in body and body["password"] == '':
return {
"error": {
"code": 70000,
"message": "暗码不能为空",
}
}
# 取出表单
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
# 校验是否存在用户
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return {
"error": {
"code": 70000,
"message": "用户名已存在",
}
}
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
# 添加
bl = userService.Add(post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ret
当平常用户登录进入首页界面,可查看轮播图、汽车资讯、汽车展示保举和使用系统其他功能,首页的汽车展示保举会根据用户欣赏的汽车类型进行优先保举,同时,管理员新添加的汽车类型也会优先保举。首页界面如下图所示。
图5-4首页界面
当平常用户点击“汽车展示”这一按钮,可查看管理员发布的所有汽车展示,支持汽车名称、汽车类型、汽车品牌、销售量、汽车卖价等关键字搜索和下拉汽车类型、排序的下拉搜索,点击可查看详情(汽车名称、汽车类型、汽车品牌、汽车配置、销售量、汽车卖价、汽车详情),进行点赞、收藏和品评,并可点击参加对比操纵,填写参加对比信息(对比日期)并提交。汽车展示界面如下图所示。
图5-5汽车展示界面
当平常用户点击“个人中心”这一按钮,可对个人首页、对比列表、收藏等信息进行管控。比方:点击“对比列表”,可查看自己的对比列表信息,进行查询和删除操纵,支持汽车名称搜索,可以对添加的汽车展示信息,进行同步对比,可点击查看详情(汽车名称、汽车类型、汽车品牌、汽车配置、销售量、汽车卖价、平常用户、对比日期);点击“收藏”,可管理所有收藏信息,包括汽车资讯、汽车展示等收藏信息,进行查看和删除操纵,点击可查看详情。个人中心界面如下图所示。
图5-6个人中心界面
当管理员点击“汽车展示”这一按钮,可查看发布的所有汽车展示,进行增改删查操纵,支持汽车名称、汽车类型、汽车品牌、销售量、汽车卖价搜索,点击可查看详情(汽车名称、汽车类型、汽车品牌、汽车配置、销售量、汽车卖价、汽车详情)和查看品评。汽车展示管理如下图所示。
图5-7汽车展示管理界面
添加代码如下:
def Add(self, ctx):
"""
增
@param {Object} ctx http请求上下文
@return {Object} 返回json-rpc格式结果
"""
body = ctx.body
unique = self.config.get("unique")
obj = None
if unique:
qy = {}
for i in range(len(unique)):
key = unique
qy[key] = body.get(key)
obj = self.service.Get_obj(qy)
if not obj:
# 添加数据前
error = self.Add_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("add_before", ctx, None)
if error["code"]:
return {"error": error}
# 添加数据
result = self.service.Add(body, self.config)
# 添加数据发生错误
if self.service.error:
return {"error": self.service.error}
# 添加数据成功后
res = self.Add_after(ctx, result)
if res:
result = res
res = self.Events("add_after", ctx, result)
if res:
result = res
return {"result": result}
else:
return {"error": {"code": 10000, "message": "已存在"}}
删除代码如下:
def Del(self, ctx):
"""
删
@param {Object} ctx http请求上下文
@return {Object} 返回json-rpc格式结果
"""
if len(ctx.query) == 0:
errorMsg = {"code": 30000, "message": "删除条件不能为空!"}
return errorMsg
result = self.service.Del(ctx.query, self.config)
if self.service.error:
return {"error": self.service.error}
return {"result": result}
管理员可对首页的轮播图进行管理,进行增编削查操纵,支持标题搜索,可点击查看详情(标题、轮播图)。系统管理如下图所示。
图5-8系统管理界面
查询代码如下:
def Get_obj(self, ctx):
"""
查一条
@param {Object} ctx http请求上下文
@return {Object} 返回json-rpc格式结果
"""
query = dict(ctx.query)
config_plus = {}
if "field" in query:
field = query.pop("field")
config_plus["field"] = field
obj = self.service.Get_obj(query, obj_update(self.config, config_plus))
if self.service.error:
return {"error": self.service.error}
if obj:
self.interact_obj(ctx, obj)
return {"result": {"obj": obj}}
管理员可对系统公告进行管理,进行增编削查操纵,支持标题搜索,可点击查看详情(标题、正文)。系统公告管理模块如下图所示。
图5-9系统公告管理界面
管理员可对汽车资讯和资讯分类进行管理,进行增编削查操纵,汽车资讯支持标题、标签、分类搜索,可点击查看详情(封面图、标题、分类、标签、描述、正文)和查看品评;资讯分类支持类型名称搜索,可点击查看详情。资源管理如下图所示。
图5-10资源管理界面
修改代码如下:
# 改
def Set(self, ctx):
"""
改
@param {Object} ctx http请求上下文
@return {Object} 返回json-rpc格式结果
"""
# 修改数据前
error = self.Set_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("set_before", ctx, None)
if error["code"]:
return {"error": error}
query = ctx.query
if 'page' in query.keys():
del ctx.query['page']
if 'size' in query.keys():
del ctx.query['size']
if 'orderby' in query.keys():
del ctx.query['orderby']
# 修改数据
result = self.service.Set(ctx.query, ctx.body, self.config)
# 修改数据发生错误
if self.service.error:
return {"error": self.service.error}
# 修改数据成功后
res = self.Set_after(ctx, result)
if res:
result = res
res = self.Events("set_after", ctx, result)
if res:
result = res
return {"result": result}
对任何系统而言,测试都是必不可少的环节,测试可以发现系统存在的很多问题,所有的软件上线之前,都应该进行富足的测试之后才华包管上线后不会Bug频发,或者是功能不满足需求等问题的发生。下面分别从单元测试,功能测试和用例测试来对系统进行测试以包管系统的稳固性和可靠性。
下表是系统登录功能测试用例,检测了用户名和暗码的差别的输入情况,观察系统的相应情况。得出该功能达到了计划目标。
表6-1 系统登录功能测试用例
功能描述
| 用于系统登录
| 测试目标
| 检测登录时的正当性检查
| 测试数据以及操纵
| 预期结果
| 现实结果
| 输入的用户名和暗码带有非法字符
| 提示用户名或者暗码错误
| 与预期结果一致
| 输入的用户名或者暗码为空
| 提示用户名或者暗码错误
| 与预期结果一致
| 输入的用户名和暗码不存在
| 提示用户名或者暗码错误
| 与预期结果一致
| 输入正确的用户名和暗码
| 登录成功
| 与预期结果一致
|
下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的相应情况。得出该功能达到了计划目标。
表6-2 注册功能测试用例
功能描述
| 用于用户注册
| 测试目标
| 检测用户注册时的正当性检查
| 测试数据以及操纵
| 预期结果
| 现实结果
| 输入的手机号不正当
| 提示请输入正确的手机号码
| 与预期结果一致
| 输入的字段为空
| 提示必填项不能为空
| 与预期结果一致
| 输入的暗码少于6位
| 提示暗码必须为6-12位
| 与预期结果一致
| 输入的暗码大于12位
| 提示暗码必须为6-12位
| 与预期结果一致
|
下表是汽车展示功能测试用例,检测了汽车展示中对汽车展示的增加,删除,修改,查询操纵是否成功运行。观察系统的相应情况,得出该功能也达到了计划目标,系统运行正确。
前置条件;用户登录系统。
表6-3 汽车展示的测试用例
功能描述
| 用于汽车展示
| 测试目标
| 检测汽车展示时的各种操纵的运行情况
| 测试数据以及操纵
| 预期结果
| 现实结果
| 点击添加汽车展示,必填项正当输入,点击保存
| 提示添加成功
| 与预期结果一致
| 点击添加汽车展示,必填项输入不正当,点击保存
| 提示必填项不能为空
| 与预期结果一致
| 点击修改汽车展示,必填项修改为空,点击保存
| 提示必填项不能为空
| 与预期结果一致
| 点击修改汽车展示,必填项输入不正当,点击保存
| 提示必填项不能为空
| 与预期结果一致
| 点击删除汽车展示,选择汽车展示删除
| 提示删除成功
| 与预期结果一致
| 点击搜索汽车展示,输入存在的汽车展示名
| 查找出汽车展示
| 与预期结果一致
| 点击搜索汽车展示,输入不存在的汽车展示名
| 不显示汽车展示
| 与预期结果一致
| 使用阿里云PTS(Performance Testing Service)性能测试服务对线上系统进行压力测试。线上服务器环境为:1焦点CPU,1G内存,1Mbps公网带宽,Centos7.0操纵系统。
压测过程中使用了2台并发机器,每台机器20个用户并发,对系统主页,登录,数据查询和数据维护等模块进行并发访问,测试结果是有40个用户并发时,数据管理干系页面的相应时间甚至达到了7s,通过查看服务器出网流量发现已经达到1381kflask,可以看出服务器的带宽已经达到峰值,如果系统使用5Mbps的带宽,系统的相应时间和TPS将会大大增加。在整个测试的过程中,CPU的使用率占用仅8%,也提现出带宽瓶颈对系统的影响非常严重。
在本次测试的过程主要针对系统登录功能测试、注册功能测试、汽车展示功能添加功能测试等功能进行测试,并以真实数据逐一进行干系功能项目标输入,最终能够包管每个项目涉及的功能都是能够正常运行,因此能够包管本次计划的,已实现的功能能够正常运行并且干系数据库的信息也同样包管正确。
随着计算机互联网技术的迅猛发展,各行各业都已经实现采用计算机干系技术对日益放大的数据进行管理。该课题是汽车保举系统分析系统为焦点展开的,主要是为了实现汽车保举信息化管理和用户搜索、欣赏和对比汽车信息的需求。
汽车保举系统分析系统的开辟是以Python编程语言作为底子,在PythonStrom平台上完成编码工作,系统整体为flask架构,数据库系统使用MySQL。文中详细分析了汽车保举系统分析系统的研究背景、意义、方法、开辟工具和干系技术以及系统需求、系统详细计划和系统测试等等一系列内容。系统实现了汽车保举系统分析系统所需的一些基本功能,并通过测试对这些实现的功能进行了完善,进而进步了系统整体的实用性。整个系统的开辟过程中大量使用了Python干系的知识以及前端开辟使用的html和javascript等,同时涉及到了很多开源框架和组件,比方后台系统中运用的MVVM架构、Freemarker模板引擎等,前端运用的UI框架等。
系统投入运行时,各功能均运行正常。系统的每个界面的操纵符合常规逻辑,对使用者来说操纵简朴,界面友爱。整个系统的各个功能计划合理,体现了人性化。
但是由于自己在系统开辟过程中对一些用到的干系知识和技术把握不够牢固,再加上自身开辟履历欠缺,因此系统在有些方面的功能还不够完善,考虑的不够全面,因此整个系统尚有待日后渐渐完善。
参考文献
[1]吴国栋,刘旭旭,毕海娇等.基于元学习个性化保举研究综述[J].计算机工程与科学,2024,46(02):338-352.
[2]范磊.基于大数据分析的汽车互联网产物需求预测与个性化保举研究[J].互联网周刊,2023,(24):62-64.
[3]姜小云,吴俞,张永莉.基于Flask的气象装备长途维修指导系统计划与实现[J].电子计划工程,2023,31(23):50-53.DOI:10.14022/j.issn1674-6236.2023.23.011.
[4]陈俊.基于Python的个性化在线学习系统的计划与实现[J].电脑知识与技术,2023,19(28):37-39.DOI:10.14004/j.cnki.ckt.2023.1502.
[5]崔艺楷.基于标签扩展的汽车智能保举系统[D].曲阜师范大学,2023.
[6]孟彩霞,林俊豪.基于Flask的分布式毛病扫描系统研究与计划[J].警员技术,2023,(03):68-72.
[7]王婧,骆慧伦,陈捷.基于Flask的北斗气象站信息管理系统的研究[J].信息记录材料,2023,24(04):224-227.DOI:10.16009/j.cnki.cn13-1295/tq.2023.04.074.
[8]陈嘉发,黄宇靖.Flask框架在数据可视化的应用[J].福建电脑,2022,38(12):44-48.DOI:10.16707/j.cnki.fjpc.2022.12.009.
[9]刘中林.基于大数据技术的购房保举系统的计划与实现[D].西安石油大学,2022.DOI:10.27400/d.cnki.gxasc.2022.001238.
[10]范路桥,段班祥,高洁等.基于Python+Flask+MySQL的知宝问答系统[J].现代计算机,2022,28(22):93-98.
[11]来思琪,孔华锋.基于Flask框架的消息聚合系统计划与实现[J].电脑编程技巧与维护,2022,(11):30-33.DOI:10.16184/j.cnki.comprg.2022.11.009.
[12]肖扬.基于产物画像的汽车保举研究[D].大连外国语大学,2022.DOI:10.26993/d.cnki.gslyc.2022.000268.
[13]孙俊,李秋月,赵晨悦.基于Python的图书信息搜集与展示研究[J].现代信息科技,2022,6(05):30-33.DOI:10.19850/j.cnki.2096-4706.2022.05.008.
[14]王迷莉.基于Python的大学生职业保举平台计划[J].信息技术与信息化,2021,(08):149-152.
[15]罗晨光.基于智能保举的册本交换系统的计划与实现[D].西安电子科技大学,2021.DOI:10.27389/d.cnki.gxadu.2021.001377.
[16]喻永尚,刘勇,张桂芬.基于大数据的Python语言个性化学习分析模型的研究与应用[J].信息记录材料,2021,22(04):189-191.DOI:10.16009/j.cnki.cn13-1295/tq.2021.04.113.
[17]刘亮均,杨柳.影戏保举系统的计划与实现[J].物联网技术,2021,11(03):86-88+92.DOI:10.16667/j.issn.2095-1302.2021.03.026.
[18]杨柳,林晓华.旅游地点保举系统开辟[J].信息技术与信息化,2020,(11):13-15.
[19]甄玉敏.基于知识图谱的个性化消息保举系统的计划与实现[D].北京交通大学,2020.DOI:10.26944/d.cnki.gbfju.2020.003365.
[20]赵诚.基于Flask的汽车消息生成系统的计划与实现[D].南京大学,2020.DOI:10.27235/d.cnki.gnjiu.2020.002925.
[21]曾思亮.基于Flask框架的微博用户分类及保举系统的实现[D].厦门大学,2017.
致谢
本次计划历时几个月。在这个毕业计划中,离不开指导西席的指导,使事情基本顺利。指导老师无论是在毕业计划历经中,还是在论文做完中都给了了我特别大的助益。另1个方面,西席认真负责的工作姿态,审慎的讲授精力厚重的理论水准都使我获益匪浅。他勤奋审慎的讲授育人学习姿态也给我留下了特别特别深的感觉。我从老师那里学到了很多东西。在理论和实践中,我的技能得到了特别大的进步。在此,特向西席表示由衷的感激。
颠末对该毕业计划的全部研究和开辟,我的系统研发经历了从需求分析到实现详细功能,再到最终测试和维护的特殊希望。让我对系统研发有了更深层次的认识。如今我的动手本领单独处理惩罚迷惑的本领也获取到了特别大的演练学习增多,这是这次毕业计划最好的收获。
末了,在整个系统开辟过程中,我周围的同学和朋友给了我很多意见,所以我很快就确认了系统的商业思想。在次,我由衷的向他们表示感激。
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |