PHP茶叶商城系统论文毕业设计-附源码211121

摘  要

随着Internet的使用越来越广泛,在传统的商业模式中,对于茶叶等商品,人们习惯于到各种商家店铺购买。然而在快节奏的新时代中,人们不一定能为购买茶叶腾出时间,更不会耐心挑选自己想要的茶叶。所以设计一个茶叶商城系统,既是迎合电子商务的大潮流,也是传统茶叶行业的一个突破口,可以给传统茶叶行业带来转变和机遇。

茶叶商城系统主要是提供给用户一个购买茶叶的平台,通过价格优势吸引众多消费者来购买,实现正常运营。本文主要是采用PHP语言、Mysql数据库、Apache服务器作为开发平台,系统采用B/S结构进行开发,完成一个茶叶商城系统。目标是实现一个以销售为中心的计算机系统,构建用户信息与账号,账号与订单信息有机结合的业务系统。

关键词:PHP语言;茶叶商城;Mysql数据库

ABSTRACT

With the more and more extensive use of the Internet, in the traditional business model, people are used to buying tea and other commodities in various shops. However, in the fast-paced new era, people may not be able to make time for buying tea, let alone patiently choose the tea they want. Therefore, designing a tea mall system not only caters to the trend of e-commerce, but also is a breakthrough of the traditional tea industry, which can bring changes and opportunities to the traditional tea industry.

Mall system mainly provides users with a platform to buy tea, attracting many consumers to buy it through price advantage, and realizing normal operation. This paper mainly uses PHP language, Mysql database and Apache server as the development platform, and the system uses B/S structure to develop and complete a tea mall system. The goal is to realize a sales-centered computer system and build a business system that combines user information with account number, account number with order information.

Key words: PHP language; Tea mall; Mysql database

目    录

  

ABSTRACT

第1章 绪论

1.1研究背景

1.2研究意义

1.3系统目标

1.4本文的结构

第2章 关键技术介绍

2.1开发环境介绍

2.2 PHP开发语言

2.3 JavaScript脚本语言

2.4 Mysql数据库

2.4 AJAX技术

第3章 系统分析

3.1可行性分析

3.1.1操作可行性

3.1.2技术可行性

3.1.3经济可行性

3.2功能需求分析

3.3用例分析

3.4数据流分析

3.5数据字典

第4章 系统设计

4.1结构设计

4.2功能设计

4.3数据库设计

4.3.1概念设计

4.3.2逻辑设计

4.3.3表设计

第5章 系统详细设计 24

5.1数据库访问层的实现 24

5.2注册模块的实现 24

5.3登录模块 26

5.4商城浏览模块 28

5.5系统用户管理模块 30

5.6公告管理模块 31

5.7产品分类管理模块 31

5.8订单状态管理模块 33

5.9订单中心模块 34

第6章 系统测试

6.1测试目的

6.2测试用例

第7章 结论

参考文献

 

  1.  绪论

1.1研究背景

各种物品是人们日常的消费品,物品供应与消费者需求有着极为重要的关系。社会压力造成工作日渐繁忙,时间观念越来越强,简化事务、方便消费,使网络化销售逐渐成为消费社会化的需要。同时,由于人们生活消费质量的不断提高,各种物品消费需要由“数量型”向“质量型”转变,物品消费的消耗性、多样化也成为一种消费需求。

这种消费型社会的大趋势已为网络销售业发展提供了良好商机。据了解,目前内陆各省大多有销售企业在运转,起步时间都不长,而且上规模的正规企业也不是很多,部分仍处于买卖双方谈妥价格后的私下交易。而在广东、山东、北京、上海、天津等地已有大规模的商品销售中心出现,特别是大城市中面向家庭客户的商品销售服务已蔚然兴起。

然而,随着业务量的不断增长,众多企业目前都多多少少的面临着一个严峻的问题,就是由于缺乏信息化的支持,从商品生产到客户下单,再到物流运输的整个业务流程都缺乏有效管理,作业方式较为原始,管理成本不断攀升,而且差错率难以控制。   

本系统是针对企业面临的困境与现状,为方便消费者的购买以及将线上与线下更好的结合在一起,利用相关的技术所设计出的。

1.2研究意义

随着我国电子商务的迅速发展,网络销售已形成了一定的规模并取得较大的成功,其对企业的效益越来越突出。淘宝、京东、亚马逊、苏宁易购、国美等大型电子商务企业的崛起,由此可以看出网络销售的巨大潜力和崭新的盈利模式。网络销售可以加快产品的发布和宣传,使交易过程简化、自动化,销售方只需要把产品交给物流行业运作即可,省去传统交易模式的繁琐。在空间上可以减少店铺租金的支出,不用频繁的进货、卸货、装货以及上架产品,侧面上减少了实体店的数量,为目前堵塞的城市现状给予一定的缓解[4] [5]。 

但是,目前网络销售在实践过程存在着部分问题: 

(1)关于电子商务的法律法规不完善。无良商家肆无忌惮的通过网络售卖假冒伪劣产品,以假乱真,欺骗消费者。 

(2)网络安全技术人才紧缺。目前,很多销售系统被黑客攻击甚至偷取信息、钱财等案件时有发生。 

(3)网络宣传不到位。目前很多企业开通了网络销售系统,但在消费者中知名度不高[6]。 

1.3系统目标

对于典型的数据库系统,尤其是对于像茶叶商城系统这样的数据流量特别大的网络系统,必须要满足使用方便、操作灵活等要求。本系统在设计时应该满足以下几个目标

(1)采用人机对话的操作方式,界面美观、友好,信息查询灵活、方便,数据存储准确、安全可靠;

(2)全面展示所有商品,并可展示主要商品;

(3)便于顾客快捷地进行商品信息查询;

(4)用户可以随时修改自己的基本资料;

(5)实现下单的功能;

(6)顾客可以随时查看自己的订单信息;

(7)对客户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误;

(8)系统最大限度地实现了易维护性和易操作性;

(9)系统运行稳定、安全可靠。

1.4本文的结构

本文具体内容包括:绪论、系统采用的关键技术、系统分析、系统设计、系统实现和系统测试。本文着重描述了系统的组成与结构,阐述了系统的设计方案、实现方法以及所采用的开发工具和相关技术,另外,重点剖析了部分环节的开发过程。本系统在一定的环境下对系统的重要模块进行了模拟测试,证实了系统的可用性、可靠性。

  1.  关键技术介绍

2.1开发环境介绍

1.软件体系结构方案:采用B/S模式,B/S代表的是服务器端由web服务器发放,客户端由浏览器接收的系统,它的前台是html语言,由浏览器解释。B/S结构可以由web服务器能够解释的脚本语言如jsp、php、asp、JavaScript。

2.操作系统方案:Windows 7(旗舰版)操作系统,该系统可以兼容需要的软件,并且具有良好的运行速度,界面良好。

3.后台数据库:选用Mysql。Mysql旨在通过数据库加密、更加安全的默认设置、加强的密码政策和细化许可控制、及加强的安全模型等特性,为企业数据提供最高级别的安全性。

4.开发工具:选用PhpStorm

5.开发语言:PHP语言。

6.开发技术:PHP+html+css+js技术

2.2 PHP开发语言

PHP是一种面向对象的程序设计语言,类是PHP程序的基本组成单元,类中又包含了属性和方法,在类中又可以创建无数个对象。类中包含的主要成员是字段和方法,字段是指一种数据变量,方法是指对字段进行操作的集合,包括给其他变量赋值、调用方法等。PHP代码都是编写在类体中,类体中的每个数据项都可以看作是一个对象,PHP不支持类的多重继承,但可以支持接口的多重继承,并且支持类和接口的实现。由于PHP通常在网络环境中使用,所以PHP提供了一个防止代码恶意攻击的安全机制,同时,PHP具有强类型机制、自动收集垃圾和异常处理等特性,这些都是PHP语言健壮性的重要保证。

1、PHP语言具有如下特点:

(1)PHP 结合 C、Java、Perl 以及自创的新语法形成了自己独特的语法。

(2)PHP可以更快速的执行动态网页,当然这只是相对于CGI或者Perl来说,PHP可以在HTML文档中嵌入程序,而且去执行,另外PHP能够实现CGI的所有功能,因此说明PHP具有很强大的功能。

(3)大部分当下流行的数据库和操作系统PHP语言都能够支持。

(4)PHP语言的最重要特点就是可以让C、C++进行扩展

2、PHP语言具有如下优势:

(1)开放源代码:事实上PHP的所有源代码都可以得到。

(2)免费性:PHP是开源代码并且免费

(3)快捷性:PHP对于初学者来说,它不止编辑简单可以嵌入与HTML语言中,而且对于程序开发和运行也是非常快速的,并且非常容易掌握。

(4)跨平台性强:PHP是可以在服务器运行的脚本语言,所以在UNIX、Android、Mac OS、WINDOWS等操作平台上都可以运行。

(5)效率高:PHP对系统资源的消耗相当少,所以它的效率高。

(6)图像处理:PHP不止是可以使用GD2对图像进行处理,而且他还可以完成对图像的创建。

(7)面向对象:php4、php5对于PHP在面向对象上,有了许多的改进,PHP语言开发大型商业程序也是可以胜任的。

2.3JavaScript脚本语言

此作品中,其中包含了页面的搭建,以及前后台数据接口的连接等,而对于实现用户页面交互以及一些页面逻辑性判断等功能都是用JavaScript完成的,而JavaScript是已经被广泛用于Web应用开发,是一种属于网络的脚本语言,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能。JavaScript作为一种描述语言,作用于web前端,它基于对象(object)和事件驱动(Event Driven)并且安全性也较好。它可以有效的在客户端运行并为服务器减轻负担。

1、JavaScript具有的特点:

(1)脚本语言。JavaScript是一种脚本语言并具有解释性,在程序运行过程中,它就可以进行解释。

(2)基于对象。JavaScript可以创建对象,而且还可以使用现在存在的对象,它是基于对象的脚本语言。

(3)简单。JavaScript不对使用的数据类型有着严格的要求,应用的是弱类型的变量类型,设计是十分紧凑简单。

(4)动态性。JavaScript是可以不经过Web服务器对用户的操作做出相应,是可以采用事件驱动的脚本语言。

(5)跨平台性。JavaScript可以不依赖操作系统,但需要浏览器的支持。所以在编写JavaScript脚本后可以在任意机器上使用,但要注意的一点,使用的浏览器是支持JavaScript脚本语言,现在大多浏览器也支持JavaScript。

2、JavaScript的用途

JavaScript的用途是解决页面交互和数据交互,最终目的是丰富客户端效果以及数据的有效传递。

(1)实现页面交互,提升用户体验实现页面特效。即js操作html的dom节构或操作样式。

(2)客户端表单验证。当数据传送到服务端前,可以将用户填入并上交的信息快速有效的验证,进行了数据的交互,为服务器减轻了负担。

2.4Mysql数据库

Mysql Database,通常简称为Mysql,是一款关系型数据库的管理系统。Mysql数据库系统是目前最流行的关系型数据库管理系统之一,其系统具有良好的可移植性,功能强大且使用十分方便。Mysql支持很多系统和硬件,包括HP-UX,Linux,MicrosoftWindows,SunSolaris,AppleMac等。

Mysql系统的特点:

(1)Mysql的多线索服务器的体系结构使其只利用很少的资源就能够支持多用户的、大数据的高性能事务处理;

(2)Mysql支持大量的多媒体数据,例如声音、动画、二进制图形和多维数据结构等;

(3)Mysql提供了安全保密管理系统,具有良好的安全性、一致性和完整性;

(4)具有新的分布式数据库能力和分布处理的能力;

(5)提供了一些高级语言的接口软件,可以帮助快速开发基于客户端的应用程序,具有良好的移植性、可连结性和可兼容性。

Mysql数据库逻辑结构包含表空间(tablespace)、段(segment)、范围(extend)、数据块(datablock)、和模式对象(schemaobject) 。每一个数据库都可以逻辑划分为一个或多个表空间,每一个表空间都是由一个或多个数据文件来组成。Mysql数据库分为系统表空间和非系统表空间,每一个Mysql数据库都包含一个称作SYSTEM的系统表空间。

2.5AJAX技术

AJAX是创建交互式网页的一种开发技术,利用AJAX技术可以实现以无刷新网页的方式更新HTML元素中的内容。传统的网页如果要更新网页内容,必须重新加载整个页面,而AJAX使用异步数据传输在网页和Web服务器之前传递HTTP请求,这样可以使网页只请求少量信息,而不用刷新整个页面。

  1.  系统分析

3.1可行性分析

本系统操作简单,易理解。茶叶商城系统与大部分电子商务系统的操作流程类似,避免了用户学习使用系统的时间和负担。

3.1.1操作可行性

本系统使用的是现流行的开发语言,即PHP技术。同时所有的信息都是以网页的形式展示,系统中的信息都可以在后台操作数据库达到数据更新的效果。用户只需要会计算机的基本操作或者会上网就可以使用本系统,系统管理员只需要懂得文件上传,处理文本即可操作管理后台。系统布局较简单,功能操作不复杂,完全符合现代市场需求。因此本系统具有操作可行性。

3.1.2技术可行性

本系统在Windows7开发环境下,利用PhpStorm开发工具,并使用Mysql作为数据库管理系统来实现系统的各种功能。Mysql属于主从式的数据库服务器这也是主从式数据库服务器的特点,服务器本身重在数据的管理,为用户端应用程序提供一致的接口。可以提高系统的性能,降低它的局限性。

3.1.3经济可行性

本系统是一个在线的茶叶商城系统,顾客可以直接在系统上购买商品,同时计算机的价格十分低廉,性能却有了长足的进步。而此系统的开发可以有效的提高工作效率,降低管理成本,节省管理费用,为企业的工作效率带来了一个质的飞跃。因此,本系统在经济上是完全具有可行性的。

3.2功能需求分析

通过本系统,卖家节省了用于交易场所、服务质量、维护商铺杂支开销等方面的投入,从而降低了价格;买家方面,不仅节约了时间成本,同时降低了购买成本,可以“货比三家”地随意挑选性价比高的产品。加快了交易和货币流通速度,而进而推动经济的增长。

根据条件需要,系统结构主要由二大用户组成。一是用户,二是管理员用户。

1用户登录及身份要求       

验证注册用户、管理员等用户的信息

2本系统销售功能需求(面向用户)

允许买家用户在线留言。

允许买家用户查询商品的信息。

允许买家用户对购物车的管理。

自动生成订单。

买家用户在线支付订单费用。

买家选择商品,进行购买,填写发货地址、联系电话等信息。

买家选择自己的订单申请售后。

3本系统销售功能需求(面向卖家用户)

对商品信息的管理(添加、删除,修改,查询)。

对买家的订单的管理(删除,修改,查询)。

管理商品的库存数量。

对买家卖家用户注册信息的管理(添加,删除,修改,查询)。

对商品信息的管理(删除,修改,查询)。

对买家的订单的管理(删除,修改,查询)。

对商品类别管理(添加、删除、修改商品类别)。

3.3用例分析

1.管理员主要负责系统管理、商城信息管理、产品分类管理、用户信息管理、订单中心管理、订单状态管理,下图所示描述管理员的用例。

                                                               图3-1管理员用例图

2.注册用户主要使用系统的在线购买业务,下图所示为用户用例图。

                                                                    图3-2买家用例图

3.4数据流分析

数据流图的设计主要是由于系统目前功能还没有确定,可以先描述可能要使用到的功能内容,并且向用户了解“系统从外界接受什么数据”和“系统向外界送出什么数据”等信息,根据用户所给的答复进行设计数据流图。

如下为系统的0层数据流图,系统用户分为管理员和普通用户。

图3-4系统数据流图(0层)

如下图所示为系统1层数据流图。

                                                                图3-5系统数据流图(1层)

茶叶商城系统第二层数据流图主要详细反应各功能模块对应的操作与数据进行交互的原理。并且更详细的显示出各角色对功能模块操作的数据流向,让开发人员能了解该系统的开发方向,能够更准确的开发出系统模型。

将商品信息维护进行细化得到产品信息管理二层数据流程图,如下图所示。     

图3-6商品管理数据流图(2层)

将订单信息管理进行细化得到订单信息管理二层数据流程图,如下图所示。

图3-7订单管理数据流图(2层)

3.5数据字典

1.数据存储描述

下表描述了用户信息的数据流、数据来源、数据去向和数据流组成的词条。

表3-1用户信息描述

数据流

用户信息

数据流来源

Mysql数据库中用户信息表,用户详细信息表

数据去向

系统界面,用户信息管理界面

数据流组成

用户名、用户密码、添加时间、编号

下表描述了购物车信息的数据流、数据来源、数据去向和数据流组成的词条。

表3-2购物车信息描述

数据流

购物车信息

数据流来源

Mysql数据库中购物车表,购物车详细信息表

数据去向

购物车界面

数据流组成

购物车ID、用户ID、商品ID、数量

下表描述了订单信息的数据流、数据来源、数据去向和数据流组成的词条。

表3-3订单信息描述

数据流

订单信息

数据流来源

Mysql数据库中订单表,订单详情表

数据去向

用户订单界面,订单管理界面

数据流组成

用户ID、订单ID、商品ID、下单时间、订单金额

下表描述了产品分类的数据流、数据来源、数据去向和数据流组成的词条。

表3-4商品类别信息描述

数据流

产品分类信息

数据流来源

Mysql数据库中产品分类表、产品详情表

数据去向

产品详情界面、购物车界面、产品分类管理界面

数据流组成

产品分类名

下表描述了商品管理的数据流、数据来源、数据去向和数据流组成的词条。

表3-5订单中心信息描述

数据流

订单中心信息

数据流来源

Mysql数据库中订单中心表、订单中心类别表

数据去向

订单中心查询界面、订单中心详情界面、购物车界面、订单中心管理界面

数据流组成

订单名、订单状态

2.数据处理描述

下表描述用户通过输入用户名和密码进行身份验证处理,验证成功后将返回的信息显示在界面上。

表3-6用户身份验证

处理逻辑名称

用户身份验证

简述

检查输入信息的合法性

输入的数据流

用户名+密码

处理过程

根据输入的用户名和密码,检索用户,显示查询信息

输出的数据流

用户信息、商品信息

下表描述用户成功登录系统后通过商品名查询商品信息,根据查询后返回的数据显示在界面上。

表3-7商品信息查询

处理逻辑名称

商品信息查询

简述

检查输入信息的合法性

输入的数据流

商品名或商品编号或商品类别

处理过程

登录成功的用户,通过商品名查询用户所需的商品,还可查询用户的订单及评论。

输出的数据流

用户订单信息,购物车信息

下表描述管理员用户成功登录系统后可以添加商品,添加后,重新查询商品表,返回的商品数据显示在界面上。

表3-8商品信息添加

处理逻辑名称

商品信息添加

简述

检查输入信息的合法性

输入的数据流

商品信息

处理过程

登录成功的管理员用户,往数据库添加一条商品信息数据。

输出的数据流

商品信息,订单信息

下表描述管理员用户成功登录系统后,购买商品,填写订单收货人、收货地址、联系电话等,生成购买订单后,重新查询订单表,返回的订单数据显示在界面上。

表3-9订单生成

处理逻辑名称

订单生成

简述

检查输入信息的合法性

输入的数据流

订单信息

处理过程

登录成功的用户,往数据库添加一条订单信息数据。

输出的数据流

订单信息

下表描述用户成功登录系统后通过公告标题查询公告信息,根据查询后,返回的公告数据显示在界面上。

表3-10公告信息查询

处理逻辑名称

公告信息查询

简述

检查输入信息的合法性

输入的数据流

公告标题

处理过程

登录成功的用户,通过公告标题查询用户所需的公告信息

输出的数据流

公告信息

  1.  系统设计

4.1结构设计

本系统的设计是基于PHP技术+Mysql数据库+Apache服务器的方式设计,以PhpStorm为开发工具,并运用Photoshop CS6技术美化网页,辅之以CSS技术。本系统使用的角色主要有系统管理员和普通用户,系统分为前台和后台,前台主要用于商品的展示和购买,后台用于商品信息和订单信息的管理,首先以普通用户通过账号注册后登录系统前台,可以进行各种商品的信息浏览和搜索,买家用户可以将需要的商品进行下单购买,用户可以查询订单是否已经被卖家确认,订单生成后表示买家用户购买成功,前台系统除了可以进行商品的下单还可以对有问题的订单申请售后,买家用户同时可以修改个人的信息资料,查看个人的购买记录;以管理员的身份登录系统后台可以进行商产品维护、订单维护、商城。

系统功能结构图如下所示。

图4-1系统功能结构图

4.2功能设计

1.用户登录模块:确保用户注册信息的真实度是提高系统效率和盈利的重要因素。真实的用户才能带来价值,注册是保证真实用户使用系统主要业务的第一步,通过对用户注册信息的审核,可防止机器注册。使用现如今较为流行的管理员进行账号激活的验证方式,对用户注册信息进行过滤,未激活用户信息将不能使用系统主要功能。

如下图所示为用户登录流程图。

                                                                 图4-2用户登录流程图

2.产品浏览模块:没有登录的用户和登录的用户都可以在系统前台进行产品浏览,用户可以查看产品分类的详细信息和选择相应的产品分类进行该类别下的商品查看,用户还可以通过产品名称的关键字进行搜索。

如下图所示为商品浏览流程图。

                                                                    图4-3商品浏览流程图

3.订单管理模块:用户购买产品后,填写收货地址、收货人、电话等信息,生成订单信息,管理员可以审核订单,删除、修改订单,对订单信息进行相应的产品发货。 

如下图所示为订单管理流程图。

                                                                图4-4订单管理流程图

4.产品管理模块

系统管理员可以对产品信息进行增、删、改、查的操作。

5.用户管理模块

系统管理员可以对用户信息进行增、删、改、查的操作。

6.购物车模块

用户对个人添加至购物车里面的商品进行增删改查等操作。

如下图所示为购物车模块流程图。

                                                            图4-5购物车模块流程图

7.产品类别管理模块

系统管理员可以对产品类别进行增、删、改、查的操作。

4.3数据库设计

4.3.1概念设计

本系统的E-R图表现了系统中各个实体之间的联系,经过分析,系统的实体有商城、产品分类、留言、订单、用户等。

商品信息的实体图如下图所示。

图4-6商品信息实体图

留言信息实体图如下图所示。

图4-7留言信息实体图

会员信息实体图如下图所示。

图4-8用户信息实体图

订单状态的实体图如下图所示。

图4-9订单状态信息实体图

系统总体的实体图如下图所示。

                                                                     图4-11系统E-R图

4.3.2逻辑设计

用户注册表是系统用户的信息表,存储系统用户备注、审核状态等相关信息。

商城表,存储商城的相关信息,其中包括商品编号、名称、产品类型、上架时间、商品图、单价、详情、库存、点击数、审核状态等相关信息。

留言板表,存储用户的留言的内容和回复信息,其中包括用户ID、标题、内容、昵称、头像、留言者邮箱、留言者手机号码、回复ID等相关信息。

订单表,存储订单内容的信息,其中包括订单号、商品、商品标题、商品图片、价格、原价、数量、总价、规格、商品分类、联系人姓名、联系人邮箱、联系人手机、邮政编码、买家ID、商家ID等相关信息。

订单中心表,存储订单中心的内容信息,其中包括商品编号、产品类型、单价、购买数、总计、名称、购买人、审核状态、支付状态、支付类型等相关信息。

4.3.3表设计

    数据库表设计:经过前期的需求分析、可执行分析、数据流分析等各个流程分析,结合软件工程的高内聚、低耦合规则,并考虑到以后的程序功能扩展,设计如下几张表

user_registration表:

名称

类型

长度

不是null

主键

注释

user_registration_id

int

11

用户注册ID

remarks

varchar

64

备注

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

shopping_mall表:

名称

类型

长度

不是null

主键

注释

shopping_mall_id

int

11

商城ID

commodity_number

varchar

64

商品编号

name

varchar

64

名称

product_type

varchar

64

产品类型

shelf_time

date

0

上架时间

commodity_map

varchar

255

商品图

unit_price

int

11

单价

details

longtext

0

详情

stock

int

11

库存

hits

int

11

点击数

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

product_classification表:

名称

类型

长度

不是null

主键

注释

product_classification_id

int

11

产品分类ID

product_type

varchar

64

产品类型

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

order_status表:

名称

类型

长度

不是null

主键

注释

order_status_id

int

11

订单状态ID

order_number

varchar

64

订单编号

commodity_number

varchar

64

商品编号

number_of_purchases

varchar

64

购买数

product_type

varchar

64

产品类型

order_status

varchar

64

订单状态

name

varchar

64

名称

user

int

11

用户

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

Message表:

名称

类型

长度

不是null

主键

注释

message_id

int

10

留言板ID:

user_id

int

11

用户ID:

title

varchar

64

标题:

content

longtext

0

内容:

nickname

varchar

32

昵称:

avatar

varchar

255

头像:

email

varchar

125

留言者邮箱

phone

varchar

11

留言者手机号码

create_time

timestamp

0

创建时间:

update_time

timestamp

0

更新时间:

reply_id

int

11

回复ID:

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

订单状态

order_center表:

名称

类型

长度

不是null

主键

注释

order_center_id

int

11

订单中心ID

commodity_number

varchar

64

商品编号

product_type

varchar

64

产品类型

unit_price

varchar

64

单价

number_of_purchases

int

11

购买数

total

varchar

64

总计

name

varchar

64

名称

purchaser

int

11

购买人

examine_state

varchar

16

审核状态

pay_state

varchar

16

支付状态

pay_type

varchar

16

支付类型

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间


  1.  系统详细设计

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值传递给后台并保存到数据库中。

用户注册流程图如下图所示。

图5-1用户注册流程图

                                                                   图5-1用户注册界面

            

用户关键代码如下所示。

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登录模块

本系统主要的用户有系统管理员、买家用户,一个系统最基本的功能就是登录功能,本系统可以进行系统登录的角色有买家用户、管理员,买家对应前台登录界面,管理员对应后台登录界面,首先进入登录页,输入用户名和密码,然后提交至服务端进行数据库数据验证,通过逻辑代码判断数据库是否存在用户输入的这一个记录,如果存在,则判断用户身份,如果是买家用户,则进入买家前台,如果是管理员用户,则进入系统主页,并把用户对象存放在session中,如果不存在这样一条记录,则返回登录界面。

登录界面如下所示。

                                                                       图5-3前台登录界面

 

图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商城浏览模块

系统为用户提供简洁的商城视图,方便用户找到自己需要的商品。在shangpinxinxilist.php实现商品列表的展示,用户点击某个商品,通过商品id传递值,找到数据表的该商品的信息。

如下图所示为商城浏览界面。

                                                                  图5-5商品浏览界面

商城浏览关键代码如下:

public function get_list($request=[],$table_name = '',$table_id = ''){

        $page = 1;

        $size = $table_name == "auth" ? 100 : 10;

        $where = [];

        $order = $table_id.'_id desc';

        $field = '*';

//        echo $order;exit;

        $columns = Db::query( "show COLUMNS FROM `".$table_name."`");

        foreach($columns as $key=>$val){

            $field_name = $val['Field'];

            if(isset($request['like'])){

                if ($request['like']==true){

                    //字段模糊查询

                    if(isset($request[$field_name])){

                        $where[] = [$field_name, '=', $request[$field_name]];

                    }

                }else{

                    //字段模糊查询

                    if(isset($request[$field_name])){

                        $where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];

                    }

                }

            }else{

                //字段模糊查询

                if(isset($request[$field_name])){

                    $where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];

                }

            }

            //范围查询

            if(isset($request[$field_name.'_min'])){

                $where[] = [$field_name, '>=', $request[$field_name.'_min']];

            }

            if(isset($request[$field_name.'_max'])){

                $where[] = [$field_name, '<=', $request[$field_name.'_max']];

            }

        }

        //分页

        if (isset($request['page'])){

            $page = $request['page'];

        }

        if (isset($request['size'])){

            $size = $request['size'];

        }

        //排序

        if (isset($request['order'])){

            $order = $request['order'];

        }

        //查询字段

        if (isset($request['field'])){

            $field = $request['field'];

        }

        //模糊查询

        $list= $this->where($where)->order($order)->field($field)->page($page, $size)->select()->toArray();

        foreach($list as &$l){

         foreach($l as &$o){

         if(strpos($o,$_SERVER['HTTP_HOST']) === false){

         $o = str_replace('upload','http://'.$_SERVER['HTTP_HOST'].'/upload',$o);

         }

         }

        }

        return $list;

    }

5.5系统用户管理模块

过去传统的手工登记管理系统人员信息很不方便,也很容易造成数据出错,所以本系统需要一个可以管理登记人员信息的功能,管理员登入系统,可以添加新的管理员用户,删除现有的管理员,也可以对自己的密码和管理员用户的密码进行修改。修改密码是经过跟数据库的原来的密码字段的数据进行判断,如果输入两次的新密码一致,则更新密码这属性对应的一条数据。

如下图所示为系统用户管理的部分界面。

                                                                  图5-6系统用户管理界面

如下图所示为用户查询界面。

                                                                         图5-7用户查询界面

系统用户管理关键代码如下:

public function add($request=[],$table_name = '',$table_id = ''){

        $result = self::allowField(true)->save($request);

        if ($result) {

            return ['result' => 1];

        } else {

            return ['error' => ['code' => 3000, 'message' => '数据添加失败']];

        }

    }

5.6公告管理模块

用户在系统前台浏览公告,管理员登录系统后,可以对添加、删除、修改公告,公告管理包括添加公告、查询公告、修改公告,系统前台的公告信息时随系统后台变化而变化的,同时能进行详细公告的打印和公告列表导出至excel表,管理员还可以通过标题、编号等关键字进行公告信息的搜索。

公告添加的界面如下图所示。

                                                                    图5-8公告添加界面

公告发布关键代码如下:

Class User extends Validate

{

    protected $rule = [

        'username|账号' => [

            'require' => 'require',

            'max'     => '16',

        ],

        'password|密码' => [

            'require' => 'require',

            'max'     => '32',

        ],

    ];

}

5.7产品分类管理模块

管理人员可以对产品分类进行增删查改的操作,这些操作将在产品分类管理界面进行。

如下图所示为产品分类管理界面。

                                                                 图5-9产品分类管理界面

 产品分类发布关键代码如下:

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);

    }

5.8订单状态管理模块

管理人员可以对订单状态进行增删查改的操作,这些操作将在订单状态管理界面进行。

如下图为订单状态管理界面。

                                                                 图5-10订单状态界面

订单状态审核关键代码如下:

public function avg()

    {

        $request = Request::param();

        if (isset($request['field'])) {

            if (!empty($request['field'])) {

                $result = $this->model->avg_field($request, $this->table, $this->table_id);

                $data = $result;

            } else {

                $data['error']['code'] = 30000;

                $data['error']['message'] = "field的值不能为空!";

            }

        } else {

            $data['error']['code'] = 30000;

            $data['error']['message'] = "field的值不能为空!";

        }

        return json_encode($data);

    }

5.9订单中心模块

首先,用户登录系统,进行商品的下单,下单时要指定商品编号产品类型、单价、购买数、总计、名称、购买人,管理员登录后台进行用户订单中心审核,审核通过,进行商品发货,用户购买成功,用户可以查看自己的订单、有权删除或修改订单。

订单中心的界面如下图所示。

                                                                   图5-11订单生成界面

添加订单中心的关键代码如下:

public function sum()

    {

        $request = Request::param();

        if (isset($request['field'])) {

            if (!empty($request['field'])) {

                $result = $this->model->sum_field($request, $this->table, $this->table_id);

                $data = $result;

            } else {

                $data['error']['code'] = 30000;

                $data['error']['message'] = "field的值不能为空!";

            }

        } else {

            $data['error']['code'] = 30000;

            $data['error']['message'] = "field的值不能为空!";

        }

        return json_encode($data);

    }

  1.  系统测试

6.1测试目的

该系统能够完成商品选购,加入购物车,商城管理,产品分类管理,订单中心管理,购物车管理,用户管理等功能,做到所开发的系统操作简单,尽量使系统操作不受用户对电脑知识水平的限制,符合系统可维护性,由于系统涉及的信息比较广,数据库中的数据需定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转,系统可以对系统数据及一些简单的功能进行独立的维护及调整;符合系统开放性要求,该系统能够在开放的硬件体系结构中运行,并且能与其他系统顺利连接。

6.2测试用例

1.注册测试

表6-1注册测试用例

字段名称

描述

测试项

首页注册功能测试

输入数据

1、输入正确的邮箱、用户名、密码、确认密码、以及验证码之后点击“注册”按钮

2、输入错误的用户名或密码、邮箱、验证码等,单击“注册”按钮

3、不输入邮箱、用户名、密码、确认密码、以及验证码之后点击“注册”按钮

预计输出数据

1、用户能正确注册账号,成功插入数据库用户的账户资料,提示注册成功。

2、无法注册用户信息,注册失败。

3、无法注册用户信息,注册失败。

使用上述测试用例对前台首页注册界面进行测试,当在输入正确的邮箱、用户名、密码、确认密码、以及验证码之后,系统将弹出注册成功信息提示对话框。

使用上述测试用例对前台首页注册界面进行测试,当在输入错误的用户名或密码、邮箱、验证码之后,系统将提示错误。

使用上述测试用例对前台首页注册界面进行测试,当在不输入用户名、密码、邮箱、验证码之后,点击注册按钮。

2.登录界面进行测试 

表6-2登录测试用例

测试项

首页登录功能测试

输入数据

1、输入正确的用户名和密码,单击“登录”按钮

2、输入错误的用户名和密码,单击“登录”按钮

3、不输入用户名和密码,单击“登录”按钮

预计输出数据

1、数据库中存在的用户能正确登录,。结果弹出主界面。

2、错误的或者无效用户登录,登录系统失败。

3、输入用户名或密码信息为空,登录系统失败。

使用上述测试用例对前台首页登录界面进行测试,当在用户名输入框中输入正确的用户名和密码时候,系统将弹出登录成功信息提示对话框。

使用上述测试用例对前台首页登录界面进行测试,当在用户名输入框中输入错误的或无效的用户名时,系统将弹出错误信息提示对话框。

通过测试可以观察到实现的运行结果与测试用例中预计输出的结果是相符的,所以测试通过。

3.在线留言测试

表6-3在线留言测试用例

功能

测试数据

预期结果

测试结果

上留言(用户

留言题目:asd

留言内容:aszcv

在留言列表中显示留言题目,点击显示留言内容。留言显示为未回复

在留言列表中显示留言题目,点击显示留言内容。留言显示为未回复

留言(管理员)

回复留言:dxvcv。

留言列表中留言“asd”显示已回复,点击留言题目,显示留言内容和回复内容

留言列表中留言“asd”显示已回复,点击留言题目,显示留言内容和回复内容

删除留言

删除留言“asd”

留言成功删除

留言成功删除

4产品分类管理进行测试 

名称:用户管理测试        目的:测试产品分类管理界面 

内容:口令的输入,合法性检查,合理性检查,界面的显示控制。 

下表描述了商品表中目前所存在的记录。

表6-5产品分类表预存数据

    商品名

商品类别

商品价格

商品状态

A

A

389

上架

B

B

249

上架

C

C

322

下架

D

D

168

上架

添加时应注意事项:

管理员添加商品时必须添加已存在的商品类别,若该商品不属于现有的所有类别,则应该先添加商品类别。

下表描述了添加商品进行测试的用例,主要是为了防止添加商品时出现异常和存在的漏洞。

表6-6添加商品测试用例

输入

输出

商品名

商品价格

商品图片

   空

参数错误

参数错误

请选择上传图片

A

1

a.jpg

添加成功

5.购买商品测试 

名称:购买商品测试        目的:测试购买商品界面 

内容:口令的输入,合法性检查,合理性检查,界面的显示控制。 

下表描述了购买商品的测试用例,防止购买时出错。

表6-7购买商品测试用例

输入

输出

用户ID

商品ID

商品数量

11

1

1

购买商品成功

22

电视

请填写商品数量

33

电视

a

购买失败

用户购买商品时,首先判断商品数量是否小于库存,若超出库存数量,则提示商品数量不足。

  1.  结论

经过这几个月的设计和开发,“基于PHP的茶叶商城系统”已经完成了,其功能符合设计需求,能够完成买家用户的注册、买家用户的在线购买、购物车管理、订单中心管理和管理员的产品分类管理、订单中心审核、商品维护、用户管理、系统管理,信息维护、查询等功能。经过最后的使用,证明系统完全具有可行性与可扩充性。

在系统的分析阶段,主要是分析系统的需求,理解系统要完成的基本功能,找出系统的用例(Use Case)和角色(Actor),画出系统的用例模型图,用例模型是此后系统建模的基础。在用例的基础上分析顺序图和协作图,得到系统的所有对象,然后建立对象模型。抽象出系统的类,并将系统中联系紧密的类划分为若干个包,画出包图。有了这些基础,就可以将系统划分为小单元功能模块。

整个过程中,我必须认可UML统一建模语言,它让我很清晰的知道自己想做什么,想实现什么,对系统后面的代码编写起到决定性的帮助,同时经过本次系统的设计与实现,让我积累了很多经验,提高了编写程序的能力,为以后的学习和工作打下了坚实的基础。

由于时间有限,本系统还有待继续完善和改进,因此需要进一步进行分析和修改,以使其更加完善! 

参考文献

[1]郑旭萍,蔡绍博,徐欢,张军.基于云计算技术的茶叶销售平台系统[J].福建茶叶,2022,44(01):56-58.

[2]田文鹏,肖浩然,牛吉娟. 一种不易潮变的茶叶销售用茶叶储藏装置[P]. 山东省:CN215362879U,2021-12-31.

[3]李玉娟.新媒体技术在茶叶销售中的应用[J].福建茶叶,2021,43(12):30-31.

[4]广东省农业农村厅. 2021年前三季度广东茶叶 价格稳定 批发和自营销售占六成[N]. 中华合作时报,2021-11-16(B02).

[5]全锦泽,农万宾,滕高攀,陈健添,廖悦如,周伟文,张晓楠. 一种用于茶叶销售的展柜[P]. 广西壮族自治区:CN214631283U,2021-11-09.

[6]孙平利.数学建模在茶叶销售策略中的运用研究[J].福建茶叶,2021,43(10):64-65.

[7]杜泽昊.基于数学建模法的茶叶销售方案研究[J].营销界,2021(16):183-184.

[8]熊竟宏,任新平.直播环境下浙江茶叶销售策略分析[J].南方农业,2021,15(08):226-227+235.

[9]朱小妹, 茶业 茶叶销售. 余金胜 主编,石台年鉴,时代出版传媒股份有限公司黄山书社,2020,155-156,年鉴.

[10]李贝贝,何爽,管凯.基于国潮文化的茶叶销售模式创新探索[J].福建茶叶,2021,43(01):54-56.

[11]鲁丰玲.云计算技术在茶叶销售平台系统中的运用[J].福建茶叶,2020,42(08):53-54.

[12]陈涛. 茶产品销售链的建构与实现路径研究[D].福建农林大学,2020.

[13]Li Ping,Pan Younghwan. Research on service design model of tea industry:A case study of Guangxi Tea Agriculture Project in China[J]. 대한인간공학회 학술대회논문집,2019:

[14]Sarah Kennedy. RTD coffee and tea sales are energized[J]. Dairy Foods,2016,117(10):

[15]金诚. 超市销售的茶叶未标注规格违法吗?[N]. 中国工商报,2015-09-17(003).

致 谢

大学的学习生活总是感觉短暂的,总感到知识还没有学够,但大学毕业就在我们面前,即毕业设计即将的结束,意味着我们的大学生涯即将结束。毕业设计是我们在大学所学知识的一次总结,更是对我们过去所学知识的提炼和升华,通过毕业设计,我们认识到大学学习过程中还有那些知识没有掌握,那些知识需要我们进入深入研究。这次毕业设计让我学到了很多新的知识,研究了一些新的以前自己不熟悉的领域,使我处理问题的能力得到了一定的提升,同时也为今后的继续深造或踏入社会大门提供了很好的锻炼机会。

我也曾经沮丧过,失落过,想放弃过,可是因为你们这不厌其烦的鼓励和支持才使得我坚持了下来,这里我要对我的老师和同学们说句“谢谢你们”。因为我们的知识是有限的,所以本文将不可避免的会出现一些错误和不足之处,还请老师指正。

                                                                点赞+收藏+关注    私信领取本源代码、数据库 

  • 23
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值