美食分享交流网站
摘 要
大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在美食分享的要求下,开发一款整体式结构的美食分享交流网站,将复杂的系统进行拆分,能够实现对需求的变化快速响应、系统稳定性的保障,能保证平台可持续、规模化发展的要求。
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于python的Django框架进行开发。前端部分:前端框架采用了比较流行的渐进式PythonScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。后端部分:采用Django作为开发框架,同时集成Redis等相关技术。,根据AJAX异步模式的美食分享交流网站解决了传统管理方式所带来的人力、物力和时间上的虚耗和交流深度的限定,这让交流的过程更快捷、准确、便利,同时完成美食分享交流网站的基本功能:首页、个人资料、轮播图、用户管理、沟通交流、交流分类、餐厅资讯、资讯分类、餐厅店铺、订单列表、分类列表、美食中心。
关键词:美食分享;整体式结构;python编程语言;MySQL数据库
Food sharing and exchange website
Abstract
In the age of big data, data is growing explosively. In order to meet the trend of the information age and the requirements of information security, it has become an irresistible trend to use the Internet to serve other industries and promote production. Under the requirements of food sharing, develop a food sharing and exchange website with an overall structure to split the complex system, which can achieve rapid response to changes in demand, guarantee the stability of the system, and ensure the sustainable and large-scale development of the platform.
The front-end part of the system is developed based on MVVM mode, using B/S mode, and the back-end part is developed based on the Django framework of Python. Front end: The front end framework adopts the popular progressive Python Script framework Vue.js. Vue Router and Vuex are used to realize dynamic routing and global state management, Ajax is used to realize front and rear communication, Element UI component library enables rapid page forming, and the front end of the project realizes responsiveness through grid layout, which can adapt to perfect layout display of different screen sizes such as PC end, tablet end and mobile phone end. Back end: Django is used as the development framework, and Redis and other related technologies are integrated., The food sharing and exchange website based on AJAX asynchronous mode solves the waste of manpower, material resources and time brought by the traditional management method and the limit of communication depth, which makes the communication process faster, more accurate and more convenient. At the same time, it completes the basic functions of the food sharing and exchange website: home page, personal information, broadcast map, user management, communication, exchange classification, restaurant information, information classification, restaurant stores, order list Classification list, food center.
Key words: food sharing; Integral structure; Python programming language; MySQL database
目 录
随着计算机技术与网络通信技术的大力发展与全面普及,计算机网络已经成为人们传递信息的重要途径之一。Web应用技术即为网络应用技术的一个重要方面。它具有沟通及时,检索迅速,使用方便,应用广泛等优点。Web技术也逐渐改变着人们的生活方式。比如,人们可以通过Web获取美食快讯、娱乐各方面的信息。民以食为天,随着生活水平的提高,人们不再仅满足于温饱,更追求美食享受。“吃货”、“好吃嘴”越来越多,如何为食客提供一个交流的途径是一个亟待解决和不断完善的问题。因此,搭建一个基于Web的美食网站的网站,可以方便食客分享美食文章、美食信息、美食菜谱。
据统计,外国在美食网站的制作方面做的很好,具有代表性的如Traveling Spoon和Foodiggity。前者是针对游客的美食网站,只需要输入旅游的目的地,网站就会自动检索出许许多多的当地美食信息,给游客提供了极大的帮助。后者是美国的一个饮食文化网站,它从饮食文化、饮食美食快讯、饮食产品和有趣的饮食方面来丰富人们日常生活中对于饮食的各种需求和探索,让食客们光从视觉上都感到享受,更不用说实物具有的诱惑力了。遗憾的是还有很多的美食资源没有被分享,导致它们很少有人知道或无人问津。
国内主要的美食网站例如美食天下,其分类功能很强大,大模块主要有菜谱大全、食材大全、饮食健康、专区/专题等,而且它还开发出了手机版本。在信息分享、用户交流等问题上解决得相当地好,可以说是国内美食网站的标榜。但是美食天下这个网站上缺少本地美食模块,这不利于游客和好吃嘴们到外地旅游时尽享美味。希望这个模块能早点实现开发出来,让美食们为人所知,也让食客们大饱眼福和口福。
根据市场调研得到的信息数据,结合国内外前沿研究,利用相关系统开发和设计方法,最终设计出美食分享交流网站。
本文共有七章,如下所示。
第一章概述了美食分享交流网站的研究目的和意义;精炼地总结了国内外在仓储领域的研究情况和未来的研究趋势,最后给出了论文的组成结构。
第二章简要概述了本文所用的开发技术和工具。
第三章简要对系统各业务流程进行需求分析、可行性分析。
第四章对美食分享交流网站进行设计。
第五章对美食分享交流网站进行实现,并贴出相关页面截图,语言描述出具体功能实现的操作方法。
第六章对美食分享交流网站采用测试用例的方式来对一些主要功能模块测试,最后得出测试结果。
第七章总结全文并对未来的研究做出展望。
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的新特性糅合进去,以应对客户日益复杂的需求变化。
现在MySQL数据库在网络上它可以支撑许多个用户,而且也可以适应客服机和服务器的部署或者配置等,我们这里的服务器和客户机其实就是一种软件上的概念,并且我们使用的计算机硬件也与他们不存在一一对应的关系[3]。
MySQL是一款非常流行的关系型数据库管理系统,它的出现一直都是佼佼者,它不仅功能非常强大,而且使用起来非常方便,并且MySQL的跨平台能力也很好,软件开发人员非常喜欢它的这些强大的优点。不同于其他关系型数据库,对于数据库的管理它有着自己的一套方案,通过对用户设定相应的权限和角色来达到对数据库的管理。由此可见,MySQL是一个能够适用于吞吐量高,可靠性高,效率高的一款数据库管理软件[4]。
优点一:MySQL中对于不同身份的用户都设定其不同的权限来完成不同的业务逻辑,这使得MySQL在安全和完整性远远超出了其他关系型数据库。
优点二:对于那些动画、图形和声音的数据类型MySQL也可以支持,这说明多数据类型MySQL也是可以支持的。
优点三:MySQL还可以做到多个平台的开发,软件开发的多种编程语言都可以实现对MySQL数据库的操作[5] [6]。
B/S架构采取浏览器请求,服务器响应的工作模式。
用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。
![](https://i-blog.csdnimg.cn/blog_migrate/fe47f52175f8d7c92bb9c26cf08f69f7.png)
Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:
用于创建模型的对象关系映射;
为最终用户设计较好的管理界面;
URL 设计;
设计者友好的模板语言;
缓存系统。
Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。
Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。
由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SD Times评选为2013 SD Times 100,位列“API、库和框架”分类第6位,被认为是该领域的佼佼者。
Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV 的设计模式。MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:
层次 | 职责 |
模型(Model),即数据存取层 | 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。 |
模板(Template),即表现层 | 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。 |
视图(View),即业务逻辑层 | 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。 |
从以上表述可以看出Django 视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django 模板 仅仅决定如何展现Django视图指定的数据。或者说, Django将MVC中的视图进一步分解为 Django视图 和 Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。
至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。URLconf对于URL的规则没有任何限制,你完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作。在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。 只需要编写非常少的代码完成很多的事情。所以,它比MVC框架考虑的问题要深一步,因为我们程序员大都在写控制层的程序。这个工作交给了框架,仅需写很少的调用代码,大大提高了工作效率。
在软件开发的过程中系统的可行性分析是必不可少的,可行性的研究就是评估问题是否能得到解决并且是要以最少的时间和最少的代价来解决。为实现上面的目标还要必须考虑到解决这些问题的方法的优点和缺点,还要考虑到实现了这些系统规模的开发带来的经济效益。这里可以用技术的可行性,操作的可行性,经济的可行性对我们的系统进行可行性的研究。美食分享交流网站的可行性分析如下所示:
美食分享交流网站采用的是python编程语言数据库部分采用的是当前流行的MYSQL数据库,美食分享交流网站中的所有数据资源都存储在MySQL数据库中,本系统多处采用了AJAX的异步操作,AJAX技术可以对用户指定部分的数据进行局部刷新,不仅减少了服务器对页面的解析而且极大增加了用户的体验度。本系统的环境配置也较为简单,因为用的是Myeclipse编辑器,而Myeclipse里面有自带的Tomcat服务器和JDK环境,因此不需要我们在重新配置。
本系统采用python、MySQL来支持事务和数据逻辑用H5来做前台页面的显示。
HTML网页中的不同组成成分是采用标签的形式来进行标识的。以下是HTML的基本的组成布局:
![](https://i-blog.csdnimg.cn/blog_migrate/0dfa94e2018d4a985f2b786213ff7a23.png)
图3-1 HTML基本构成图
美食分享交流网站是在python和MySQL的环境中运行的,而系统的成本也只是主要分布在软件的开发和维护上。但如果系统上线投入使用之后,不仅可以方便人们,还节省了用户的时间和精力,而且还极大限度的方便了运营者,减少了运营者的工作强度。美食分享交流网站其实也不太复杂,在开发的时候经济支出也不大,在开发系统时时间用的也不多,从时间的优势和对经济利益方面产生的好处远超过维护和管理的成本,所以开发此系统是可行合适的。
本系统是基于浏览器和服务器的美食分享交流网站,系统开发完成之后用户只需要在浏览器中输入正确的URL地址即可进行访问。本系统的前台页面简单明了,在没有操作指导的情况下也可以进行操作,无论是系统管理员还是普通用户在页面中所有的操作都是在浏览器中完成的,因此只要电脑在有网络的情况下,打开浏览器都能操作。而且在使用之前也不用进行相关的环境配置,因此本系统方便、简单、易于使用,所以该系统是容易并且可操作的。
根据用户对系统的需求,要求系统简单操作,能够准确,完整的对信息进行管理。美食分享交流网站在对需求做解析后,整个系统主要分为两个部分:管理员和普通用户,每个模块下的分支功能不一样。对功能做出如下说明:
管理员模块:首页、个人资料、轮播图、用户管理、沟通交流、交流分类、餐厅资讯、资讯分类、餐厅店铺、订单列表、分类列表、美食中心。
用户模块:首页、沟通交流、餐厅资讯、美食中心、餐厅店铺、我的(个人资料、密码修改、收货地址、收藏、订单、购物车)。
用户用例图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/23d829cd79fea140d4741c2a2232cb6e.png)
图3-1 用户用例图
管理员用例图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/128c9a4529c520e151c8fffdda1e35f1.png)
图3-2 管理员用例图
本美食分享交流网站选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图3-1所示:
![](https://i-blog.csdnimg.cn/blog_migrate/c2d76e68c201c48fd4f2098903ed9eff.png)
图3-1 系统工作原理图
进入系统后首先要进行登录,验证你的身份,赋予你不同的权限。当你成功登录后,页面会有多个板块,分别是首页、沟通交流、餐厅资讯、美食中心、餐厅店铺、我的(个人资料、密码修改、收货地址、收藏、订单、购物车)。里面界面简单易懂,根据标示可以直接进行方便快捷的操作。
系统功能结构图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/b703b558ce38a3445966bc123954a2c6.png)
图4-2系统功能结构图
一个好的系统它的后台数据库一定要考虑的全面,这和我们建造房子一个概念,房子不是随心所欲建起来的,一切都是在合理设计的基础是实现的,地基打牢固了房子才能建的更高。数据库如果设计的很合理,而且每个方面都能考虑到了那么这个系统才能不会出现大的问题。
系统的主要实体间关系E-R图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/a960f8877a48b0ec465f65db910abda4.png)
图4-7系统E-R图
此环节把概念转变成数据。由于整个数据库所处理的信息过多,就只展示几个表。
food_center | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
food_center_id | int | 11 | 是 | 主键 | 美食中心ID |
food_specifications | varchar | 64 | 否 | 美食规格 | |
incidental_part | varchar | 64 | 否 | 附带部分 | |
recommend | int | 11 | 是 | 智能推荐 | |
cart_title | varchar | 125 | 否 | 标题 | |
cart_img | text | 0 | 否 | 封面图 | |
cart_description | varchar | 255 | 否 | 描述 | |
cart_price_ago | double | 8 | 是 | 原价 | |
cart_price | double | 8 | 是 | 卖价 | |
cart_inventory | int | 11 | 是 | 商品库存 | |
cart_type | varchar | 64 | 是 | 商品分类 | |
cart_content | longtext | 0 | 否 | 正文 | |
cart_img_1 | text | 0 | 否 | 主图1 | |
cart_img_2 | text | 0 | 否 | 主图2 | |
cart_img_3 | text | 0 | 否 | 主图3 | |
cart_img_4 | text | 0 | 否 | 主图4 | |
cart_img_5 | text | 0 | 否 | 主图5 | |
create_time | datetime | 0 | 是 | 创建时间 | |
update_time | timestamp | 0 | 是 | 更新时间 | |
forum_type | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
type_id | smallint | 5 | 是 | 主键 | 分类ID |
name | varchar | 16 | 是 | 分类名称 | |
description | varchar | 255 | 否 | 描述 | |
url | varchar | 255 | 否 | 外链地址 | |
father_id | smallint | 5 | 是 | 上级分类ID | |
icon | varchar | 255 | 否 | 分类图标 | |
create_time | timestamp | 0 | 是 | 创建时间 | |
update_time | timestamp | 0 | 是 | 更新时间 | |
goods | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
goods_id | mediumint | 8 | 是 | 主键 | 产品id |
title | varchar | 125 | 否 | 标题 | |
img | text | 0 | 否 | 封面图 | |
description | varchar | 255 | 否 | 描述 | |
price_ago | double | 8 | 是 | 原价 | |
price | double | 8 | 是 | 卖价 | |
sales | int | 10 | 是 | 销量 | |
inventory | int | 11 | 是 | 商品库存 | |
type | varchar | 64 | 是 | 商品分类 | |
hits | int | 10 | 是 | 点击量 | |
content | longtext | 0 | 否 | 正文 | |
create_time | timestamp | 0 | 是 | 创建时间 | |
update_time | timestamp | 0 | 是 | 更新时间 | |
img_1 | text | 0 | 否 | 主图1 | |
img_2 | text | 0 | 否 | 主图2 | |
img_3 | text | 0 | 否 | 主图3 | |
img_4 | text | 0 | 否 | 主图4 | |
img_5 | text | 0 | 否 | 主图5 | |
customize_field | text | 0 | 否 | 自定义字段 | |
source_table | varchar | 255 | 否 | 来源表 | |
source_field | varchar | 255 | 否 | 来源字段 | |
source_id | int | 10 | 是 | 来源ID | |
user_id | int | 11 | 否 | 添加人 | |
order | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
order_id | int | 11 | 是 | 主键 | 订单ID |
order_number | varchar | 64 | 否 | 订单号 | |
goods_id | mediumint | 8 | 是 | 商品id | |
title | varchar | 32 | 否 | 商品标题 | |
img | varchar | 255 | 否 | 商品图片 | |
price | double | 10 | 是 | 价格 | |
price_ago | double | 10 | 是 | 原价 | |
num | int | 8 | 是 | 数量 | |
price_count | double | 8 | 是 | 总价 | |
norms | varchar | 255 | 否 | 规格 | |
type | varchar | 64 | 是 | 商品分类 | |
contact_name | varchar | 32 | 否 | 联系人姓名 | |
contact_email | varchar | 125 | 否 | 联系人邮箱 | |
contact_phone | varchar | 11 | 否 | 联系人手机 | |
contact_address | varchar | 255 | 否 | 收件地址 | |
postal_code | varchar | 9 | 否 | 邮政编码 | |
user_id | int | 10 | 是 | 买家ID | |
merchant_id | mediumint | 8 | 是 | 商家ID | |
create_time | timestamp | 0 | 是 | 创建时间 | |
update_time | timestamp | 0 | 是 | 更新时间 | |
description | varchar | 255 | 否 | 描述 | |
state | varchar | 16 | 是 | 订单状态 | |
restaurant_shop | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
restaurant_shop_id | int | 11 | 是 | 主键 | 餐厅店铺ID |
display_no | varchar | 64 | 否 | 展示编号 | |
restaurant_name | varchar | 64 | 否 | 餐厅名称 | |
cover | varchar | 255 | 否 | 封面 | |
restaurant_matters | varchar | 64 | 否 | 餐厅事项 | |
restaurant_address | varchar | 64 | 否 | 餐厅地址 | |
contact_information | varchar | 64 | 否 | 联系方式 | |
shop_details | longtext | 0 | 否 | 店铺详情 | |
praise_len | int | 11 | 是 | 点赞数 | |
recommend | int | 11 | 是 | 智能推荐 | |
create_time | datetime | 0 | 是 | 创建时间 | |
update_time | timestamp | 0 | 是 | 更新时间 | |
system_user | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
system_user_id | int | 11 | 是 | 主键 | 系统用户ID |
user_no | varchar | 64 | 否 | 用户编号 | |
user_name | varchar | 64 | 否 | 用户姓名 | |
gender | varchar | 64 | 否 | 性别 | |
examine_state | varchar | 16 | 是 | 审核状态 | |
recommend | int | 11 | 是 | 智能推荐 | |
user_id | int | 11 | 是 | 用户ID | |
create_time | datetime | 0 | 是 | 创建时间 | |
update_time | timestamp | 0 | 是 | 更新时间 |
该登录模块利用js进行设计,pythonScript函数CheckSubmit()对输入框是否为空进行验证,使用js的技术结合MySQL 2012数据库的查询语句进行登录信息的验证。首先从文本框中分别获得账号user_name和密码user_pw,使用Sql语句“select * from t_user where user_name=‘”+user_name+“’ and user_pw=‘”+user_pw+“’”将查询结果赋给rs结果集,若rs.next()返回值为空,表示数据库找不到该用户数据,若rs.next()返回值不为空,则显示登录成功,进入主界面。
用户登录流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/7ade7814737eae013e66f362f1b21eee.png)
图5-1用户登录流程
用户登录流程:用户只有输入正确的用户名和密码才会成功进入系统,用户输入用户名密码后点击登录按钮,系统会进行校验该用户名是否存在,如果用户名与密码不匹配或者用户名不存在,则返回主界面。
系统登录界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/97e7ba6843846dd9482d5787fe36f59c.png)
图5-2系统登录界面
在浏览器的地址栏里输入http://localhost:8080/index.jsp 地址,就可以跳转到美食分享交流网站的首页,首页是由4个页面组成的,包括top、left、down和center等页面,这里也是浏览者访问系统的入口,通过@ include引入。
首页载入流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/7bdb8fa4f82173c3580d398d7d814358.png)
图5-3首页载入流程
首页载入流程:系统先连接数据库,显示界面参数初始化,读取数据库的数据表,读取html显示模板,对数据按添加时间排序,按照模板设计位置显示数据,刷新显示界面,断开数据库连接。
首页如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/050a21fd5551806e85eb19b6929f8356.png)
图5-4首页界面
系统的用户通过自行注册生成,在系统首页点击用户注册菜单,系统跳转到对应的注册页面。点击重置按钮,清空所填数据,点击注册按钮完成注册。
用户注册流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/8d5e77eb062fe112617e53be5686bbf6.png)
图5-5用户注册流程
注册个人信息实现流程为:填写个人信息,系统使用JQuery选择器获取在网页中输入的注册信息,再对联系方式、登录密码等信息进行验证,验证通过后用Ajax异步请求方式向服务器发送请求并把数据传送到后台,然后验证用户名是否已存在,如果已存在则注册失败提示“用户名已存在”;如果用户表中没有该用户名则把用户信息加入数据库,把操作状态以json字符串方式返回到前台。Ajax请求成功接收到返回的数据时会触发成功回调函数,然后解析返回的json字符串,系统根据返回信息弹出提示框,注册成功后返回登录页。
用户注册界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/7a13110349a81a946e221ef33f0dd52d.png)
图5-6用户注册界面
用户给食材添加评论,包括评分,评论人,评论内容等,在pinglunadd.jsp实现评论的逻辑添加,管理员管理系统的所有评论信息,在pinglun_list.jsp实现评论的管理。
评论流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/ea06ddfddb41bf314ccc51198d74a463.png)
图5-7信息评论流程
用户登录成功后,浏览食材页面,输入评论语,添加该评论,修改评论,返回评论相关界面。
评论添加界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/d8a403a42f37af36a3833e88d1ea54b8.png)
图5-8评论添加界面
-
-
- 美食中心模块
-
用户在美食中心界面可查看封面、美食名称、价格、加入购物车等操作。
![](https://i-blog.csdnimg.cn/blog_migrate/5e381034a22037e94bdc1300a88cf07a.png)
图5-9美食中心界面
-
-
- 餐厅店铺模块
-
管理员发布餐厅店铺后,餐厅店铺在系统前台显示,用户浏览店铺美食信息,包括店铺编号、店铺名称、图片、美食类别、价格、规格,选择相应的美食购买,通过id传参,找到该美食,在提交订单,生成订单记录。
订单流程如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/119a8c02640a395004f8722cacff275b.png)
图5-10订单流程
餐厅店铺界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/b54aac957e9e477dcfd29c7986145c24.png)
图5-11餐厅店铺界面
管理员对系统用户的管理,在yhzhgl.jsp实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,提交到mod.jsp中,使用sql命令更新密码。
管理员用户管理的界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/42948f47c52db4465333d9e4e218c513.png)
图5-12管理员用户管理界面
登录密码修改界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/1c5c5c0a5bc5cd32c59788b03c880434.png)
图5-13登录密码修改界面
-
-
- 餐厅店铺管理模块
-
餐厅管理包括新增餐厅、删除餐厅、修改餐厅、查询餐厅等,以餐厅新增为例,在视图层请求餐厅信息新增,反馈后,调用业务逻辑层,通过业务逻辑层的接口调用底层的数据逻辑层完成数据库联动操作。
餐厅管理的流程如所示。
![](https://i-blog.csdnimg.cn/blog_migrate/868c1697551f5349afdca912f4538d9c.png)
图5-14餐厅店铺管理流程
餐厅店铺添加的界面如所示。
![](https://i-blog.csdnimg.cn/blog_migrate/ffea4f6556ecb741035e8528c2f38f8c.png)
图5-15餐厅添加界面
餐厅管理的界面如所示。
![](https://i-blog.csdnimg.cn/blog_migrate/1266fb0c63591860b38c696eed13492f.png)
图5-16餐厅管理界面
测试存在于软件开发进程中的最后一个阶段,它可以保证一个软件的开发质量是否符合设计者的初衷,也为程序的正式上线做了最后一道质量检测的工序。软件测试主要是控制各种条件、包括软件输出方式,使用模式和运行环境等,来评估一个系统或应用是否符合设计标准。在软件测试过程中,我们一般刻意的去制造错误和极端条件,不能仅依照正常模式允许,而是多去尝试那些意外的情况。
6.1软件测试的重要性
只有在运行和维护阶段之前经历大量的测试的软件,才能说明它的质量是经得起检验的。最近计算机业界也都一致认为,测试应该存在于软件设计的每个阶段,因为越早发现错误,修复起来就越容易。
实际上,对于一个软件应用,错误是必然存在的,无论使用何种技术或手段,都不可能绝对的排除软件漏洞。测试是随着软件开发一同诞生的,两者是共同发展进步的。实际上,测试可以大幅度的降低维护的成本,如果一个漏洞在开发的早期就被发现,那么修复它的成本远比上线后再修复的成本要低得多。
6.2测试实例的研究与选择
测试有白盒测试和黑盒测试两种方式。
其中,白盒测试是将软件看成一个透明的白盒子,按照程序的内部控制结构和处理技术逻辑来选定测试用例、软件系统测试的逻辑路径及过程需要进行管理测试,又称玻璃盒测试。因此白盒测试需要选择足够多的测试用例,覆盖尽可能多的代码来发现程序中的错误。
黑盒测试,也称为功能测试。它将需软件看作一个黑盒,像一个普通学生一样来模拟软件的使用流程。黑盒测试通过大量的输入边界值或错误数据,来检查是否可产生正确的输出。
本系统测试 主要选择黑盒测试,少量采用白盒测试。通过测试达到以下测试目的:
1.检查各大功能模块的运行,确保其能够正确运行,并检查各页面的完整性,保证页面完整。
2.检查各个接口是否可以正确地输入和输出,保证数据流通稳定可行。
3.检查数据结构,保证其和外部接口没有访问错误,访问顺利。
4.检查原计划的性能需求有没有完成,运行流畅。
本系统的测试用例(部分):
登录部分测试用例 | |||||
编号 | 对象 | 项目 | 操作 | 预期结果 | 结果 |
1 | 登录 | 登录提示 | 使用正确的账号密码登录 | 成功登录 | 预期结果 |
2 | 登录提示 | 使用正确的账号但错误的密码登录 | 提示密码错误 | 预期结果 | |
3 | 登录提示 | 使用错误的账号登录 | 提示不存在账户 | 预期结果 | |
4 | 登录提示 | 不输入账号,点击登录 | 提示输入账号 | 预期结果 | |
5 | 登录提示 | 输入账号但不输入密码点击登录 | 提示输入密码 | 预期结果 | |
6 | 登录入口 | 已登录账号,查看登录入口 | 不显示登录入口 | 预期结果 |
6.3测试环境与测试条件
处理器:Inter Core I7-4710MQ四核处理器
内存:4GB
硬盘:1T
操作系统:Windows 10
数据库:MySQL
6.4系统运行情况
全部测试用例都已通过(包括但不限于以上测试用例),且不存在漏洞,实现了论文开始时所作要求。本系统运行稳定,使用流畅,可以满足学生需求。
6.5系统评价
6.5.1系统功能评价
试运行后进行系统评估,可以认为该系统达到预定的目标要求,可以满足用户的需求,也满足了系统开发前所作目标。
6.5.2系统技术评价
系统在经过大量重复测试后运行十分稳定,安全实用,功能模块已经达到预定目标所需。
6.5.3系统经济评价
在规定的时间内实现系统的大部分功能,且满足要求,节省开发成本,有助于提高科学管理水平,符合本人经济情况。
本次毕业论文的主要是利用pythonweb+MySQL开发一个安全可靠,操作简易,同时具备业务可扩展的美食分享交流网站。本文详细的论述了美食分享交流网站的设计和开发,本系统的所有事务逻辑都是按照系统的需求分析进行设计的,系统有普通用户和系统管理员两种角色,本系统多处采用了AJAX的异步交互技术,同时它也叫异步交互技术,利用它我们可以让网页的局部进行数据刷新操作,AJAX和传统的数据更新技术大大增加了客户的体验程度,由于是对局部进行操作那么就减少了一些繁琐而又不必要的操作,减轻了服务器对页面解析的负担。
与其他系统相比,本系统有自身的优点,
例如:
(1)创新性强;
(2)业务逻辑性强,安全性高,在一些重要的功能模块需要通过审查之后才可使用;
(3)移植性高,在所有window平台都可使用。
当然也还有很多需要进一步改进的地方:
(1)系统大多数页面都是全局刷新,缺乏局部刷新,这将增加服务器的压力,如果有大量用户在同一时间段操作同一个功能模块,可能会导致查询缓慢;
(2)页面没有经过专业的UI设计,美观程度不及其他市场其他网站系统,有待改善。
参考文献
[1]李同金.基于Python的端口扫描技术研究[J].电子世界,2022(02):38-39+42.DOI:10.19353/j.cnki.dzsj.2022.02.015.
[2]孙琳,徐文正.Python编程语言教学中问题分析能力培养的研究[J].产业与科技论坛,2022,21(04):182-183.
[3]高望.新工科背景下“Python语言基础”教学改革实践[J].科技与创新,2022(02):148-150+155.DOI:10.15913/j.cnki.kjycx.2022.02.044.
[4]彭文良,虞燕花.基于Python语言的文本数据流自适应分类方法[J].宁夏师范学院学报,2022,43(01):106-112.
[5]韦依洋,吴一凡,李永远.Python技术在数据可视化中的应用研究[J].福建电脑,2022,38(01):27-31.DOI:10.16707/j.cnki.fjpc.2022.01.007.
[6]戴成秋.Python语言程序设计课程混合式教学方案的设计[J].计算机教育,2022(01):162-166.DOI:10.16512/j.cnki.jsjjy.2022.01.037.
[7]秦维超,戴晓芬.Python编程学习中巧用开源硬件提升问题解决能力[J].中国信息技术教育,2022(01):62-63.
[8]许高建,徐浩宇.基于Python语言的类C编译器的设计与实现[J].洛阳理工学院学报(自然科学版),2021,31(04):78-84.
[9]辛凤阳,王忠鑫,田凤亮,赵明,曾祥玉,王金金.基于BS架构的露天矿连续工艺一体化管控平台设计与实现[J].金属矿山,2021(12):177-182.DOI:10.19614/j.cnki.jsks.202112027.
[10]Li Li. Employment Data Analysis based on Python Crawler Technology[C]//Proceedings of 4th International Workshop on Education Reform and Social Sciences (ERSS 2021).,2021:164-168.DOI:10.26914/c.cnkihy.2021.049800.
[11]方生.基于“MVVM”模式的“Web”前端的设计与实现[J].电脑知识与技术,2021,17(20):147-149.DOI:10.14004/j.cnki.ckt.2021.2004.
[12] Kate Egan and Jeffrey Andrew Weinstock, And Now for Something Completely Different: Critical Approaches to Monty Python[J]. Journal of British Cinema and Television,2021,18(3):
[13]Melchert Oliver,Demircan Ayhan. pyGLLE: A Python toolkit for solving the generalized Lugiato–Lefever equation[J]. SoftwareX,2021,15:
[14]刘紫薇. 基于MVVM设计模式的在线教育系统的设计与实现[D].北京邮电大学,2021.DOI:10.26969/d.cnki.gbydu.2021.002712.
[15]游俊慧.MVC、MVP、MVVM三种架构模式的对比[J].办公自动化,2020,25(22):11-12+27.
[16]李轩冰. 基于文本挖掘技术的网络热点新闻系统的研建[D].北京林业大学,2020.DOI:10.26949/d.cnki.gblyu.2020.001181.
[17]温海标.MVVM模式及其应用研究[J].电脑知识与技术,2020,16(24):92-93.DOI:10.14004/j.cnki.ckt.2020.2683.
[18]杨保军.论新闻规律的形式构成[J].未来传播,2019,26(01):2-12+120.DOI:10.13628/j.cnki.zjcmxb.2019.01.001.
[19]张红.新时代新闻系统政工师工作如何创新[J].青年记者,2018(23):126-127.DOI:10.15997/j.cnki.qnjz.2018.23.081.
[20]李钊. 基于大数据的热点医疗新闻系统的研究与实现[D].西北大学,2018.
致谢
经过几个月时间的努力终于完成了这篇文章,在文章的写作与研究的过程中遇到了很多困难,都在同学和老师的帮助下解决了。尤其非常感谢我最敬爱的老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行文章的修改。老师严谨的治学态度、渊博的学术知识、诲人不倦的敬业精神以及宽容的待人风范使我获益颇丰。此外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此,向帮助和指导过我的老师表示最衷心的感谢!感谢这篇文章所涉及到的各位学者。本文引用了数位学者的文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇文章的写作。感谢我的同学、朋友以及所在单位的同事,在我写文章的过程中给与了我很多素材和帮助,还在文章的撰写和排版过程中提供热情的帮助。同时,感谢我的室友对我的热心指导和帮助,经常有不懂之处都是大家在帮助我,才使得我比较顺利的完成了这篇文章。由于我水平有限,所写文章难免有不足之处,恳请各位老师和学友批评和指正!
关注+点赞+收藏+私信博主,免费领取项目源码