摘 要
随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于沿河农产品特卖网站当然也不能排除在外,随着网络技术的不断成熟,带动了沿河农产品特卖网站,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的平台特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对沿河农产品特卖网站而言非常有利。
本系统使用php开发语言,采用Thinkphp框架,以及MySQL数据库来进行系统开发,针对沿河农产品特卖网站系统信息化建设。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。
关键字:农产品特卖 Mysql数据库 PHP框架
Abstract
With the rapid development of science and technology, all walks of life are trying to connect with modern advanced technology and improve their own advantages through scientific and technological means. Of course, the website of selling agricultural products along the river can not be excluded. With the continuous maturity of network technology, the website of selling agricultural products along the river has been promoted, which has completely changed the traditional management mode in the past, not only making the service management less difficult, but also improving the management flexibility. This personalized platform pays special attention to the interaction and coordination of management, which stimulates the creativity and initiative of managers and is very beneficial to the website of selling agricultural products along the river.
This system uses php development language, Thinkphp framework and MySQL database to develop the system, aiming at the information construction of agricultural products sale website system along the river. In the process of design, the system code is fully guaranteed to be readable, practical, easy to expand, universal, convenient for later maintenance, easy to operate and simple in page.
Key words: Sale of agricultural products;MySQL database;php framework
目 录
1.1背景及意义 1
4.2 数据库设计原则 10
4.3 数据表 12
5.1数据库访问层的实现 26
5.2注册模块的实现 28
5.3登录模块的实现 31
5.4用户资料修改的实现 32
6.1测试定义及目的 36
6.2性能测试 36
6.3测试模块 36
6.4测试结果 37
第一章绪论
1.1背景及意义
系统管理也都将通过计算机进行整体智能化操作,对于沿河农产品特卖网站所牵扯的管理及数据保存都是非常多的,例如管理员;首页、轮播图、公告栏、农产品资讯、资讯分类、商城列表、分类列表、订单列表、普通用户,前台首页、公告栏、农产品资讯、我的等,这给管理者的工作带来了巨大的挑战,面对大量的信息,传统的管理系统,都是通过笔记的方式进行详细信息的统计,后来出现电脑,通过电脑输入软件将纸质的信息统计到电脑上,这种方式比较传统,而且想要统计数据信息比较麻烦,还受时间和空间的影响,所以为此开发了沿河农产品特卖网站;为用户提供了方便管理平台,方便管理员查看及维护,并且可以通过需求进行内容的编辑及维护等;对于用户而言,可以随时进行查询所需信息,管理员可以足不出户就可以获取到系统的数据信息等,而且还能节省用户很多时间,所以开发沿河农产品特卖网站给管理者带来了很大的方便,同时也方便管理员对用户信息进行处理。
本论文沿河农产品特卖网站主要牵扯到的程序,数据库与计算机技术等。覆盖知识面大,可以大大的提高系统人员工作效率。
1.2国内外研究概况
随着国内经济形势的不断发展,中国互联网进入了一个难得的高峰发展时期,这使得中外资本家纷纷转向互联网市场。然而,许多管理领域的不合理结构,人员不足以及市场管理需求的增加使得更多的人具备了互联网管理的意识。
在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。 “沿河农产品特卖网站”是基于Mysql数据库,在Thinkphp框架程序设计的基础上实现的。为确保中国经济的持续发展,信息时代日益更新,服务行业仍在蓬勃发展。同时,随着信息社会的快速发展,各种管理系统面临着越来越多的数据需要处理,如何用方便快捷的方式使管理者在广阔的数据海洋里面查询、存储、管理和共享有效的数据信息,对我们的学习,工作和生活具有重要的现实意义。因此,国内外学术界对此进行了深入而广泛的研究,一个新的研究领域——Thinkphp诞生了。
1.3 研究的内容
目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方式,实现沿河农产品特卖网站的各种功能,从而达到对沿河农产品特卖网站的管理。
详细内容介绍,将在以下六章中详细阐述:
第一章、绪论,介绍了研究课题选择的背景及意义、研究现状,简要介绍了本文的章节内容。
第二章、引入技术知识,通过引入关键技术进行开发,向系统中涉及直观表达的技术知识。
第三章、重点分析了系统的分析,从系统强大的供需市场出发,对系统开发的可行性,系统流程以及系统性能和功能进行了探讨。
第四章、介绍了系统的详细设计方案,包括系统结构设计和数据库设计。
第五章、系统设计的实现,通过对系统功能设计的详细说明,论证了系统的结构。
第六章、系统的整体测试,评判系统是否可以上线运行。
第二章 关键技术的研究
2.1 Thinkphp框架介绍:
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
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软件开发环境及开发工具
操作系统:Windows 10、Windows 7、Windows 8
开发语言:php
使用框架:Thinkphp
前端技术:JavaScript、VUE.js(2.X)、css3
开发工具:phpstorm、Visual Studio Code/HbuildX
数据库:MySQL 5.7.26(版本号)
数据库管理工具:phpstudy/Navicat
PHP版本:php7.1.9nts
服务器:Nginx1.15.11
2.4 B/S体系工作原理:
B/S架构采取浏览器请求,服务器响应的工作模式。
用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。
![](https://i-blog.csdnimg.cn/blog_migrate/f739c1b86d390e8b58d0fb15aac8d38e.png)
2.5 MySQL数据库
数据库是系统开发过程中不可或缺的一部分。在WEB应用方面,MySQL AB开发了一个具有很大优势的MySQL关系数据库管理系统。 MySQL可以将数据存储在不同的表中,这非常灵活,并且还可以提高系统在实际应用中的速度。数据库访问最常用于标准SQL语言,MySQL用于SQL语言,因此它具有高度兼容性。数据库的操作是必不可少的,包括对数据库表的增加、删除、修改、查询等功能。现如今,数据库可以分为关系型数据库和非关系型数据库,Mysql属于关系性数据库,Mysql数据库是一款小型的关系型数据库,它以其自身特点:体积小、速度快、成本低等,Mysql数据库是目前最受欢迎的开源数据库。
在WEB应用技术中, Mysql数据库支持不同的操作系统平台,虽然在不同平台下的安装和配置都不相同,但是差别也不是很大,Mysql在Windows平台下两种安装方式,二进制版和免安装版。安装完Mysql数据库之后,需要启动服务进程,相应的客户端就可以连接数据库,客户端可通过命令行或者图形界面工具登录数据库。
第三章系统分析
3.1 系统设计目标
沿河农产品特卖网站主要是为了用户方便对商品信息、订单评价、订单信息等信息进行操作,也是为了更好的让管理员进行更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。
系统所要实现的功能分析,对于现在网络方便的管理,根据自己的需求可以进行查看等,这样既能节省用户的时间,不用在像传统的方式,需要查询、由于很多用户时间的原因,没有办法去线下了解信息,真的很难去满足用户的各种需求。所以沿河农产品特卖网站的开发不仅仅是能满足用户的需求,还能提高管理员的工作效率,减少原有不必要的工作量。
3.2 系统可行性分析
系统的开发环境和配置都是可以自行安装的,系统使用php开发工具,使用比较成熟的Mysql数据库进行对系统前台及后台之间相关的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
(1)硬件可行性分析
沿河农产品特卖网站及信息分析的设计对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开系统必须顺畅,不能停顿太长时间;性价比高;安全性高。
(2)软件可行性分析
提供类似于借口动态模型的通用机制,设计更加集中。此外,可以使用php语言轻松实现模块化和存储信息。另外,代码重用,也可以很好地反映出来。因此,考虑到系统的实际情况,选择Thinkphp框架作为系统开发技术。通过以上分析,系统的设计和实现在软件中是可行的。
因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。
3.3 系统功能分析和描述
使用沿河农产品特卖网站的分为管理员和用户二个权限模块。
管理员所能使用的功能主要有:首页、轮播图、公告栏、农产品资讯、资讯分类、商城列表、分类列表、订单列表、普通用户等。
用户可以实现;首页、公告栏、农产品资讯、我的管理等。
3.4系统UML用例分析
3.4.1管理员用例
管理员登录后可进行首页、轮播图、公告栏、农产品资讯、资讯分类、商城列表、分类列表、订单列表、普通用户,管理员的用例如图3-1所示。
![](https://i-blog.csdnimg.cn/blog_migrate/4ad8329f9f703b5120d78c249c815a85.png)
图3-1 管理员用例图
3.4.2用户用例
用户注册登录后可进行首页、公告栏、农产品资讯、我的收藏管理,用户用例如图3-2所示。
![](https://i-blog.csdnimg.cn/blog_migrate/42e0360a2b4702b9f3447e5d81af6d9d.png)
图3-2 用户用例图
3.5系统流程分析
3.5.1添加信息流程
添加信息,编号系统使用自动编号模式,没有用户填写,用户添加信息输入信息,系统将自动确认的信息和数据,验证的成功是有效的信息添加到数据库,信息无效,重新输入信息。添加信息流程如图3-3所示。
![](https://i-blog.csdnimg.cn/blog_migrate/6383270d77fb034c80e4f874c8a8a800.png)
图3-3 添加信息流程图
3.5.2操作流程
用户想进入系统,首先进入系统登录界面,通过正确的用户名、密码,选择登录类型登录,系统会检查登录信息,信息正确,然后输入相应的功能界面,提示信息错误,登录失败。系统操作流程如图3-4所示。
![](https://i-blog.csdnimg.cn/blog_migrate/0c8a1950bf02208f36ceb9a24ecbce88.png)
图3-4操作流程图
3.5.3删除信息流程
用户选择要删除的信息并单击Delete按钮。系统提示是否删除信息。如果用户想要删除信息,系统将删除信息。系统数据库删除信息。删除信息流程图如图3-5所示。
![](https://i-blog.csdnimg.cn/blog_migrate/57ebb5f16064ff0e7c287dd057a2ddd8.png)
图3-5 删除信息流程图
第四章系统设计
4.1 系统体系结构
沿河农产品特卖网站的结构图4-1所示:
![](https://i-blog.csdnimg.cn/blog_migrate/6460ed801b3e1317b17c7b45a76c2447.png)
图4-1 系统结构
模块包括主界面,首页、个人中心、订单列表、商城列表、普通用户、资讯分类、农产品资讯等进行相应的操作。
登录系统结构图,如图4-2所示:
![](https://i-blog.csdnimg.cn/blog_migrate/758c318a80a3ba273b8cb701d90d3ba2.png)
图4-2 登录结构图
这些功能可以充分满足沿河农产品特卖网站的需求。此系统功能较为全面如下图系统功能结构如图4-3所示。
![](https://i-blog.csdnimg.cn/blog_migrate/95fdf5fe1ca54401635f11b3ebd77961.png)
图4-3系统功能结构图
4.2 数据库设计原则
每个数据库的应用它们都是和区分开的,当运行到一定的程序当中,它就会与自己相关的协议与客户端进行通讯。那么这个系统就会对使这些数据进行连接。当我们选择哪个桥段的时候,接下来就会简单的叙述这个数据库是如何来创建的。当点击完成按钮的时候就会自动在对话框内弹出数据源的名称,在进行点击下一步即可,直接在输入相对应的身份验证和登录密码。
沿河农产品特卖网站的数据流程:
![](https://i-blog.csdnimg.cn/blog_migrate/7ed1a8d6caf1f4dd50718583041f5669.png)
图4-4 系统数据流程图
订单信息实体E-R图,如图4.5所示。
![](https://i-blog.csdnimg.cn/blog_migrate/2171a36646d0d08e32c5356cfafae6cf.png)
图4.5订单信息E-R图
商城信息E-R图,如图4.6所示。
![](https://i-blog.csdnimg.cn/blog_migrate/390d45e0869da31c936a53648faebbbf.png)
图4.6商城信息E-R图
4.3 数据表
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
shopping_mall表
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
shopping_mall_id | int | 11 | 是 | 是 | 商城ID |
remarks | varchar | 64 | 否 | 否 | 备注 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
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 | 是 | 否 | 更新时间 |
ordinary_users表
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
ordinary_users_id | int | 11 | 是 | 是 | 普通用户ID |
gender | varchar | 64 | 否 | 否 | 性别 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
Type表
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
type_id | smallint | 5 | 是 | 是 | 分类ID |
display | smallint | 4 | 是 | 否 | 显示顺序 |
name | varchar | 16 | 是 | 否 | 分类名称 |
father_id | smallint | 5 | 是 | 否 | 上级分类ID |
description | varchar | 255 | 否 | 否 | 描述 |
icon | text | 0 | 否 | 否 | 分类图标 |
url | varchar | 255 | 否 | 否 | 外链地址 |
create_time | timestamp | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
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 | 是 | 否 | 订单状态 |
Address表
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
address_id | int | 11 | 是 | 是 | 收货地址 |
name | varchar | 32 | 否 | 否 | 姓名 |
phone | varchar | 13 | 否 | 否 | 手机 |
postcode | varchar | 8 | 否 | 否 | 邮编 |
address | varchar | 255 | 是 | 否 | 地址 |
user_id | mediumint | 8 | 是 | 否 | 用户ID |
create_time | timestamp | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
default | tinyint | 1 | 是 | 否 | 默认判断 |
Slides表
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
slides_id | int | 10 | 是 | 是 | 轮播图ID |
title | varchar | 64 | 否 | 否 | 标题 |
content | varchar | 255 | 否 | 否 | 内容 |
url | varchar | 255 | 否 | 否 | 链接 |
img | varchar | 255 | 否 | 否 | 轮播图 |
hits | int | 10 | 是 | 否 | 点击量 |
create_time | timestamp | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
第五章系统实现
5.1数据库访问层的实现
该系统是通过jdbc和Mysql达成连接的,新建一个jdbc.properties文件来填写与数据库连接所需要的驱动和参数。
jdbc.driverClass=com.Mysql.jdbc.Driver
jdbc.url=jdbc:Mysql://localhost:3306/tsi
jdbc.username=root
jdbc.password=123
第一个参数代表Mysql数据库的驱动,第二个参数代表要连接的数据库,第三个和第四个参数代表数据库连接名和密码。
后台与数据库访问主要是通过HQL语句来进行查询的,查询语句中的表名是表格的实体类名,在这种查询语句中*是不允许使用的,除非适合聚合函数一起使用才可以。
5.2注册模块的实现
用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。
用户注册流程图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/f7a7effd4ff25a613212e4ded1f68944.png)
图5-1用户注册流程图
用户登录界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/d31e45cdcaa10633a17cb9e74f58fb74.png)
图5-2用户登录界面
用户注册的关键代码如下。
public function register()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->register($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function register($request=[],$table_name = ''){
$username = $request['username'];
$bol = $this->where(['username'=>$username])->find();
if (!$bol){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '注册失败']];
}
}else{
return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];
}
}
5.3登录模块的实现
主要由两部分组成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和密码,当用户名和密码其中一个输入为空时,给出提示“用户名,密码不能为空”。获取用户名和密码后到数据库中查找,如果用户名存在,以及对应的密码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入会员的功能模块,主要有会员基本信息修改,已经发布课程信息管理,发布信息,和退出功能。退出功能是清除全局变量username的值,并跳回到首页。
登录流程图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/a059dfccc3366266aae89ee35e8b0381.png)
图5-3登录流程图
用户登录界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/ce60ee24ad76701b81e6e5227b4ebb8f.png)
图5-4用户登录界面
用户登录的关键代码如下。
public function login()
{
if (Request::isPost()) {
$request = Request::param();
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->login($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function login($request=[],$table_name = ''){
$username = $request['username'];
$password = $request['password'];
$bol = $this->where(['username'=>$username])->find();
if ($bol){
$password = md5($password);
if ($request['password']==$bol['password']) {
//添加token信息
$access_token['create_time'] = date('Y-m-d H:i:s');
$access_token['update_time'] = date('Y-m-d H:i:s');
$access_token['info'] = json_encode($bol);
// $access_token['info'] = $bol;
$access_token['token'] = md5(date('Y-m-d H:i:s'));
$bol_token = Db::name('AccessToken')->insert($access_token);
if ($bol_token){
$data['obj'] = $bol;
$data['obj']['token'] = $access_token['token'];
return ['result' => $data];
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];
}
} else {
return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];
}
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];
}
}
5.4用户资料修改模块的实现
用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配,在用户点击修改页面的时候,如果改后用户名与数据库里面重复了,页面会提示该用户名已经存在了,否则通过Id来查询用户,并将用户的信息修改为表单提交的数据。
5.5订单列表管理模块的实现
管理员在后台管理界面点击到所有订单界面dingdan_list.php,向控制层dingdanAction发送请求,搜索当前所有订单信息,dingdanAction向订单数据访问层调用搜索全部订单的请求,向数据库的订单表搜索当前所有订单并将订单信息以对象的形式层层返回到dingdan_list.php界面,显示出当前所有订单信息。同时可以删除过期订单,确认已有订单,进行发货处理。
订单列表管理界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/8820ea43781413336a20719488c3d216.png)
图5-5订单列表管理界面
订单列表管理关键代码如下所示。
public function del()
{
$request = Request::param();
$result = $this->model->del_data($request, $this->table, $this->table_id);
$data = $result;
return json_encode($data);
}
5.6商城列表管理的实现
管理员可以获取系统中所有商城的列表并对其进行编辑。管理员在添加商品时,需要输入商品基本信息,如标题、封面图、卖价、原价、商品库存、产品分类、描述、备注等,还需要输入商品详情描述,包括对商品功能的描述以及展示图片等。添加商品完成,数据库商品表添加一条信息。管理员可以搜索商品,同时可以对已经添加的商品进行编辑。
商城列表管理界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/da2afcc62b67b54ffab0c94033cf83c0.png)
图5-6商城列表管理界面
商城列表管理关键代码如下所示。
public function add()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
if($this->table == 'user'){
$request['password'] = md5($request['password']);
}
$res = $this->add_before($request, $this->table, $this->table_id);
if($res['code'] == 200){
$result = $this->model->add($request, $this->table, $this->table_id);
$this->add_after($this->table);
$data = $result;
}else{
$data['error'] = $res;
}
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
5.7普通用户管理模块的实现
根据需求,需要对用户进行注册、删除或修改详情信息。删除或修改用户时,系统根据用户的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询用户状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。
注册用户时,会给出数据填写的页面,该页面根据填写好的教师编号同样会事先发送Ajax请求查询编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
普通用户管理流程图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/8ceb4c373e85a5a7ccb54073a3ac7627.png)
图5-7普通用户管理流程图
普通用户页面设计效果如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/6a9a89993379bb1d7baa25e8d143e7b1.png)
图5-8普通用户管理界面图
普通用户管理关键代码如下所示。
public function avg_group()
{
$request = Request::param();
if (isset($request['groupby']) && isset($request['field'])) {
if (!empty($request['groupby']) && !empty($request['field'])) {
$result = $this->model->avg_group($request, $this->table, $this->table_id);
$data = $result;
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
return json_encode($data);
}
第六章 系统测试
6.1测试定义及目的
关于系统实现的测试,英文名称是System TEST,简称ST,ST是使用完整其系统的各种功能多次、多案例、多环境测试,这是ST的简单描述。ST可以证明该功能对系统的要求是否得到满足以及是否有效。
对于系统开发的实现,不管开发过程多么努力,在系统运行的时候多少都会出现一些错误信息,所以为了系统的安全性及提高系统的使用率及给用户带来更好的体验,系统在完成之前,一定要进行一遍系统的测试,再完美的程序也会有漏洞,再细心的技术开发员也会有疏忽的时候,所以对于程序的测试是必须要做的一步。通过系统测试找到系统存在的问题,并根据问题的原因进行在线解决问题,如果找不到解决问题的办法可以进行通过咨询指导老师或者通过同学帮忙,一定将问题找出,否则将会出现更多的错误。所以程序出现错误时不可避免,系统测试虽然耗时费力,但是为了确保后期系统的长期使用,必须要进行系统测试,问题解决完成后还要再一步测试,直到没有任何问题后方可进行使用。
6.2性能测试
任何一款程序开发成功后都必须通过软件测试,它是保障软件稳定运行的前提。测试最主要的一步就是性能测试,性能测试内容如下:
(1)对于测试的速度有一定的要求,速度必须快,而且对于测试出来的错误问题一定以最快的速度进行处理解决,并且进行再次测试,保证整个系统运行的安全性。
(2)在系统测试的时候要将测试所用到的测试计划和测试报告保管好,方便后期系统的运行使用后的整体维护操作。
(3)软件测试整个过程中的聚类现象应优先考虑。
(4)对于整体系统测试,不要用自己的思想去认可整个系统,而是从公正的角度的进行对系统进行认可,是否符系统的整合应用。
6.3测试模块
测试系统是最新的Windows 10系统,通过对系统实现的功能模块进行每个功能模块的操作测试,查看每个用户的功能模块所对应的权限信息是否可以操作并且数据信息更新一致。
测试需求 | 测试重点 | 是否达成需求 | 结果 |
用户登录 | 输入账号密码 | 需求达成 | 通过 |
用户注册 | 创建新的账号密码 | 需求达成 | 通过 |
登录失败 | 输入错误账号密码 | 需求达成 | 通过 |
修改信息 | 修改成功 | 需求达成 | 通过 |
添加信息管理 | 增删查改 | 需求达成 | 通过 |
回复管理 | 增删查改 | 需求达成 | 通过 |
搜索查询管理 | 增删查改 | 需求达成 | 通过 |
系统测试方面,我们通常运用的是白盒测试以及黑盒测试这两种方法。白盒测试是指在了解系统内部工作流程的前提下,可以根据需求规范验证系统内部操作是否能够正常运行的测试;而黑盒测试指的是,倘若知道了这个系统的全部功能,可以进行测试检测系统中的每一个功能是否满足正常使用。
为了方便用户使用“沿河农产品特卖网站”,以及尽可能少的减少系统测试错误的发生,我们对该系统进行了相对应的测试。
对该系统的全部的功能界面进行测试,简单来说,就是我们输入一些数据并且对其进行提交,之后我们查看每个页面的反馈,检测页面的相关功能可不可以完全实现。
6.4测试结果
测试评估的结果是沿河农产品特卖网站满足要求中的所有功能,处理大多数错误条件,修复大多数错误并通过测试。沿河农产品特卖网站的基本功能都是可行的,不管是系统里面的功能还是界面的设计都是可值得推广宣传的。
总 结
沿河农产品特卖网站的整体功能模块的实现,主要是对自己在大学这几年时间所学内容的一个测试,对于系统,主要是通过现在智能化的沿河农产品特卖网站进行开始系统的实现,并且可以根据需求进行数据信息的增加修改删除等操作,完美的解决了当下沿河农产品特卖网站中所遇到的问题。
经过一个学期的毕业设计的实现完成已接近尾声,到目前为止,当我回想起整个学期的系统开发日,收获颇丰。毕业设计的主要任务是建立一个智能化的沿河农产品特卖网站的信息系统,主要使用Thinkphp框架和Mysql数据库的开发工具,对系统的每个功能模块进行相对应的操作,最后,系统调试结果表明系统基本可以满足功能要求。
沿河农产品特卖网站的开发对我大学学习的改进有很大帮助。它使我能够学习计算机知识的相关技术方面问题及与人交往的沟通交流方面,让我意识到无论我们做什么,我们都需要坚持不懈,努力工作,只有这样尝试了并且坚持去做了,我们才可以成功,才可以获得成功的喜悦,如果没有尝试,只是想,那连成功的机会都没有,实际操作进行做了,才会越来越近的靠近成功,随着道路一路向前,未来的路是美好的。
对于沿河农产品特卖网站的实现,是自己第一次完成的设计一个管理系统。在项目的设计过程中,我克服了各种困难,并且在面对这些困难,我积极的面对,想办法解决问题,并且更好的掌握了理论知识和动手操作实践能力,从系统的开发到设计完成,我完成了一个更全面、更完善、更安全的平台管理系统,这也让我取得了很大的成就感,也使我对未来的生活更有信心。
致 谢
时间过得像箭一样,太阳就像一条船。毕业论文即时结束也意味着我大学四年的大学生活即将结束。论文写作乏味而富有挑战性,指导老师的指导,同学与老师支持鼓励是我坚持完成论文来源。首先,我要感谢我的导师老师在论文开篇,初稿,设计提出宝贵意见,没有老师对我的辛苦栽培,并且严格的要求,我是不可能顺利完成我的论文。在这里,我还要感谢我的妈妈和爸爸,多少感恩的话想要对你们说,我想通过我的学习成果来回报你们,永远祝你们健康幸福!最后,我要感谢所有帮助过我的老师,同学和朋友,并度过了许多快乐和难忘的日子。我希望你们永远幸福快乐。
四年的时间很难在我的漫长的人生旅程中短暂,但短短的四年是最真诚的青年;最纯粹的岁月;最美丽的大学生活。我会记住大学的每一点,记住大学里每个可爱的人。
参考文献
[1]陈瑞. 基于知识图谱的网络农产品经济信息融合研究[D].贵州财经大学,2021.
[2]Baoyu Jia,Zhaoji Yu,Yingzi Zhao. Design of online service reputation system for agricultural products sales platform based on P2P network[J]. Acta Agriculturae Scandinavica, Section B — Soil & Plant Science,2021,71(4):
[3]Hsu Jyh-Yih,Tseng Wei-Kuo,Hsieh Jia-You,Chang Chao-Jen,Chen Huan,Hung Jason C.. The Recommending Agricultural Product Sales Promotion Mode in E-Commerce Using Reinforcement Learning with Contextual Multiarmed Bandit Algorithms[J]. Mathematical Problems in Engineering,2020,2020:
[4]王丹凤. 社会化电商模式下消费者网购农产品行为影响因素研究[D].华北水利水电大学,2020.
[5]各地农产品滞销卖难信息(一)[J].农产品市场,2020(07):15-25.
[6]戚玮.农产品交易网站设计与开发——以淮安为例[J].价值工程,2020,39(06):278-279.
[7]M G Ozerova,N I Pyzhikova,N G Filimonova. Agricultural products sales in the Arctic zone of the Krasnoyarsk Territory[J]. IOP Conference Series: Earth and Environmental Science,2020,421(3):
[8]Junjin Chen,Lin Wang,Le Bu. Research on the promotion path of network live broadcast to the sales of agricultural products[J]. E3S Web of Conferences,2020,218:
[9]唐滔.基于Web技术的农产品网站设计与实现[J].电脑编程技巧与维护,2019(12):18-20.
[10]李芳,石子豪,吴小林.互联网时代农产品电子商务平台的创新模式研究[J].信息记录材料,2019,20(12):190-191.
[11]冯波.黑龙江省绿色农产品网络营销模式研究[J].才智,2019(02):225.
[12]田淑波.黑龙江省农产品销售调研与网络营销模式探讨[J].商业经济,2018(11):8-9+28.
[13]罗素珍.“互联网+”背景下的福建农村农产品销售研究[J].现代营销(创富信息版),2018(10):174-175.
[14]邸春姝,张翔宇.黑龙江省农产品商务网站信息生态环境建设研究[J].农业图书情报学刊,2018,30(08):35-38.
[15], 时代新风 建网站开网店 农产品走出小乡村. 吴小明 主编,博罗年鉴,南方出版传媒广东人民出版社,2017,431,年鉴.
[16]任小旦. 基于互联网下农产品电子商务网站的设计与实现[D].浙江海洋大学,2018.
[17]邓慧娴,胡月英.基于层次分析法的农产品物流企业网站可用性评价[J].呼伦贝尔学院学报,2018,26(02):50-54+17.
[18]杨羽,李肖,朱灵华,潘娟娟.基于SWOT分析的“网农特卖”APP发展研究[J].时代金融,2018(06):284+287.
[19]方彬,赵莹.面向老龄用户的农产品网站界面设计[J].广东蚕业,2018,52(02):121-122.
[20]郑广成,朱翠苗,孔小兵. 一种农产品网站系统[P]. 江苏:CN107169852A,2017-09-15.
[21]刘健. 农业供给侧改革[M].人民邮电出版社:, 201706.242.
[22]梁凤兰,夏伟寒.基于Web的农产品质量安全追溯系统网站的设计与实现[J].计算机时代,2017(03):55-57.
免费领取项目源码,请关注点赞+私聊