【网站项目】校园商铺系统小程序

发布于:2024-04-19 ⋅ 阅读:(23) ⋅ 点赞:(0)

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。

  1. 代码可以私聊博主获取。🌹
  2. 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
  3. 赠送开题报告模板,帮助书写开题报告。

作者完整代码目录供你选择:

  1. 《Springboot网站项目》400套
  2. 《ssm网站项目》800套
  3. 《小程序项目》300套
  4. 《App项目》500套
  5. 《python网站项目》600套

⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡

项目演示

 

 摘    要

本文论述了微信小程序的校园商铺系统的设计和实现,该系统从实际运用的角度出发,运用了计算机系统设计、数据库等相关知识,基于微信小程序和Mysql数据库设计来实现的,系统主要包括首页、个人中心、用户管理、商家管理、商品类型管理、商品信息管理、在线咨询管理、咨询回复管理、交流论坛、我的收藏管理、留言板管理、系统管理、订单管理等功能。系统界面进行了人性化的设计,操作简单具有一定的使用价值。本文主要从该系统的设计思想、功能的架构,运用的技术、数据库的设计、具体的实现等方面来进行论述。在详细设计部分主要论述了系统功能设计和数据库的设计。在本文的最后对系统的调试结果进行了说明和总结。

关键词:微信小程序的校园商铺系统;微信小程序;Mysql

第一章 绪论

1.1 本课题研究背景

近年来城市与社会经济发展较快,人们的生活水平不断提高,消费观念发生很大变化,随着 Internet 技术的发展,网络已经渗透到人们日常生活的方方面面,悄悄地改变着人们的生活方式。在国内,利用系统进行交易渐渐变成一种常见的交易方式。 比如我们常见的美团、饿了么等类似的系统近几年的发展趋势就非常的好。这类系统的发展的最大的优势在于信息传播快、时效性高。随着计算机和Internet技术的发展,微信小程序的校园商铺系统给传统的商品交易提供了生机。但是,消费观念、投资成本、技术人才、支付以及商品存在破损等因素阻碍了它的发展。所以解决这些问题是促进商品交易发展的首要任务。微信小程序的校园商铺系统还是存在着巨大的潜力的,因为时间的因素,大部分用户还是愿意网上购物,物美价廉。

1.2 本课题研究的目的和意义

人们现在的生活方式因为网络的普及发生了巨大变化,由于电子商务在人们的视野中出现,人们对电子商务额外的关注。人们可以足不出户买到世界各地的服装, 校园商铺可以销售各式各样的产品,其中包括虚拟产品、电子产品、日常生活用品等等。我们的目标不只是在网上展示我们的产品,更重要的是,让更多的用户了解产品创造更多的商机。所以我们目前的挑战是前台界面的设计,要把顾客的眼球吸引住,选则比较人性化的界面设计,要更直观的表现,让顾客能更多的了解产品的作用和功效,让顾客买到喜欢的产品。

本系统的主要意义在于,全力以赴为用户提供一个操作方便,界面简洁,信息直观的网上交易系统。使用该系统的用户,可以先浏览到最新上架的新品和最热门的产品,并可以注册成为本网站的用户,可以利用购物车选择自己想买的产品,然后向商铺提交订单,从而完成网上的交易流程。

1.3 研究现状

在国外很多发达国家,软件产业早已得到全面普及,但我国经济已不断发展,不断引进国外信息化建设,使国内软件行业得以不断发展,在摸索中进步,最终也得到一些成果,我国的软件业迎来了高速的发展,使更多的软件系统得以开发出来,从此逐渐地改变人们的生活工作方式。但是,对于信息化的建设,与很多发达国家相比,由于信息化程度的落后以及经费的不足,我国的校园商铺系统开发方面还是相对落后的,因此,要不断的努力探索,争取开发出一个实用的信息化的基于微信小程序的校园商铺系统,来实现校园商铺管理的信息化。因此本课题以校园商铺为例,目的是开发一个实用的基于微信小程序的校园商铺系统。

校园设备报修小程序的开发运用java技术,MIS的总体思想,以及MYSQL等技术的支持下共同完成了该系统的开发,实现了校园商铺管理的信息化,使用户体验到更优秀的校园商铺系统,管理员管理操作将更加方便,实现目标。

1.4 论文所做的主要工作

本文主要做的工作就是从系统的需求分析开始,结合自己在学校所学的知识和在图书馆查阅的资料,逐步讲解微信小程序的校园商铺的系统构成,数据库管理等一些主要方面的设计。特别是对系统的各个模块的设计用单独的章节来进行详细的阐述。这样可以让读者很容易的知道整个系统的思路和整体的设计思想,能够提高本论文的可读性。

第二章 系统实现的技术支持

2.1微信小程序框架

微信小程序的开发框架是微信所独有的一套框架,分为View视图层和App Service逻辑层两部分。框架提供了一种类似于Web中html语言的wxml语言,作为视图层的标签语言,用于构造页面的布局。另外提供了一种类似Web中css语言的WXSS语言,作为视图层的标签样式语言,用于表述页面的显示。而在逻辑层的框架,则同样使用了JS语言。微信小程序为了使开发者专注在代码的逻辑层面和数据处理上,还专门提供了两种解决方案,一种是事件,一种是数据的传输。这两种方案都位于小程序框架的视图层和逻辑层之间。用户在视图层进行交互之后,传递到逻辑层对数据进行处理,并返回数据到视图层向用户反馈。对于微信小程序视图层的开发设计,小程序官方提供了一系列的组件,这些基本组件可以极大的帮助开发者完成视图层的开发。同时,对于逻辑层的开发,小程序官方提供了一系列API来方便开发者请求一些额外功能。

开发人员在使用微信开发者工具新建一个完整的小程序项目后,小程序项目会自动生成几个默认文件,分别是全局样式:APP.wxss,APP.json,APP.js,其中app.wxss是微信小程序全局的样式,app.json是微信小程序全局的配置,app.js是微信小程序逻辑全局的入口。它们对所有的页面都是有效的。同时对于非全局的pages来说,存在着视图层的两个文件和逻辑层的两个文件,分别是视图层的wxml,wxss,和逻辑层的js,json。

app.js用于控制小程序逻辑,同时定义了全局的函数和data数据。app.json用于配置小程序,可以配置微信小程序的路径、标签、调试、超时等,以满足实际需求。app.wxss用于定义小程序的全局样式,若要渲染页面的效果,可以通过定义class来实现。

wxml类似xml格式,作为标签设计语言,在小程序开发文档提到,wxml的设计功能主要有五项:包括模板、引用、数据绑定、列表渲染、条件渲染,结合小程序官方所提供的组件,开发者可以完成wxml的设计。Wxss类似于css,作为样式语言,用于描述页面样式,有着独特的语法,和JavaScript有着许多区别。小程序开发文档中提到,wxss的设计开发有六项,主要包含模块、变量、代码注释、运算符、语句、数据类型。js文件则为用户在页面交互的逻辑上给予了解决方案,用户在进行相关指令后,逻辑层会作为支撑,通过视图层给用户反馈。

2.2 Java语言简介

Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景,它是面向对象的,分布式的,动态的,具有平台无关性、安全性、健壮性。Java语言的基本语句语法和C++一样,但是它面向对象的技术更加彻底,因为Java要求将所有的内容都必须封装成类,把类作为程序的基本单位。由于不允许类外有变量、方法。 Java语言的分布式体现在数据分布和操作分布,它是面向网络的语言,可以处理TCP/IP协议,它也支持客户机/服务器的计算模式。Java语言的动态性是指类在运行时是动态安装的,使得Java可以动态的维护程序。Java不支持指针,对内存访问的所有操作都是通过对象实例化实现的,这样就避免了指针操作中易产生的错误,同时也预防了病毒对系统的破坏和威胁。

Java语言的编程风格与C语言非常接近,它继承了C++面向对象技术的核心,它面世之后发展迅速,非常流行,对高级C语言形成了很大的冲击。业内人士称之为“一次编译、到处执行”。当然java也有缺点,在每次执行编译后,字节码都需要消耗一定的时间,在某些程度上降低了性能。但是这并不影响java成为此次设计语言的选择。Java语言简单易学,使用它的编程时间短,功能性强,开发者学习起来更简便、更快。Java的主要特性有以下几个:

1.面向对象

面向对象有四个特点:封装、继承、多态、抽象。抽象是指忽略一个问题中的次要部分,关注主要部分。多态是指对同一种消息做出的不同反应。继承是指在原有的父类方法基础上增加自己独有的方法,而不改变原来父类。

2.平台无关性、

Java编译出来的是字节码,直接由虚拟机执行。在任何平台上,只要有Java虚拟机,Java代码都能运行。

3.可靠性和安全性

Java对内存的访问都必须通过对象的实例变量来实现,避免了指针中出现的错误。

4. 多线程     

Java提供了多线程功能,利用编程实现同一时间同时工作的功能。

2.3 Mysql数据库技术

在软件项目,通过经营性数据的数据库,可以保证其安全,独立和数据一致,访问数据的系统来提供,所以有效减少时间程序员开发应用程序。

MySQL可以支持多线程,可以方便使用系统的资源,提高运行的速度。并提供odbc、jdbc和tcp/ ip,以各种形式连接到MySQL; 功能方面表现欠缺,规模小,但对于这个系统就足够了。

因为MySQL是源代码对外开放的,所以任何人都可以通过相应的方法下载,并根据个性化需求进行修改。 由于MySQL的速度,可靠性和适应性,MySQL受到重视。

MySQL虽然功能可能不是很强大,但由于其开源,广泛传播,导致很多人都意识到这个数据库。

2.4 Dreamweaver技术

网页制作软件之一,该软件是现在使用最多的网页编辑工具,它支持DHTML动态网页、Flash动画和插件,能实现很多FrontPage无法实现的功能,如动态按钮、下拉菜单等。另外,它还可以用来作为动态系统的开发平台。

2.5 SSM框架

当今流行的“SSM组合框架”是Spring + SpringMVC + MyBatis的缩写,受到很多的追捧,“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架,通常更简单的数据源。Spring属于一个轻量级的反转控制框架(IoC),但它也是一个面向表面的容器(AOP)。SpringMVC常常用于控制器的分类工作模式,与模型对象分开,程序对象的作用与自动取款机进行处理。这种解耦治疗使整个系统的个性化变得更加容易。MyBatis是一个良好的可持续性框架,支持普通SQL查询,同时允许对存储过程的高级映射进行数据的优化处理。大型Java Web应用程序的由于开发成本太高,开发后难以维护和开发过程中一些难以解决的问题,而采用“SSM组合框架”,它允许建立业务层次结构,并为这个问题提供良好的解决方案。

第三章系统的分析与设计

3.1系统分析

3.1.1可行性分析

经济可行性:由于本系统是作为毕业设计系统,且系统本身存在一些技术层面的缺陷,并不能直接用于商业用途,只想要通过该系统的开发提高自身学术水平,不需要特定服务器等额外花费。所有创造及工作过程仅需在个人电脑上就能实现,使用到的软件大多为开源软件,所以经济成本并不高,可以轻易实现。

技术可行性:本系统的开发使用java作为系统开发的开发语言,开发环境选择My Eclipse,而B/S结构决定了本系统的兼容性和多用户可操作性,此外选择MySql作为数据库不仅提高了数据安全性更保障了数据的可操作性。

运行可行性:本系统作为以java开发语言的系统,而且选用B/S结构则决定了要操作本系统仅需要占用很小的资源,并没有过多地硬件配置要求,目前市面上只要能正常运行浏览器的个人电脑都可以正常运行使用该系统。

经过总结,本系统在经济方面、技术方面、运行方面的条件都得以满足,为此系统的开发具备了可行性条件。

3.1.2需求分析

通过对本系统的功能和结构分析,可以总结出系统的需求,如下:

(1)使用系统的用户分为管理员,用户和商家。

(2)不同的用户类型对应不同的页面访问权限。

(3)用户可以查看商品信息,购买商品,在线咨询,修改自己的订单信息等功能。

(4)商铺要发布最新的商品的相关信息,来吸引对应的用户。

(5)管理员及时更新信息,可以管理用户信息。

3.1.3 功能分析

通过上面的需求分析,我们能够分析出系统的主要功能包括:

管理员可以对首页、个人中心、用户管理、商家管理、商品类型管理、商品信息管理、在线咨询管理、咨询回复管理、交流论坛、我的收藏管理、留言板管理、系统管理、订单管理等进行相应的操作;用户和商铺都可以对小程序的首页、商品信息、交流论坛、我的(包括商品信息、在线咨询、咨询回复、用户充值、我要发贴、我的发贴、购物车、我的订单、留言板)等进行查看及相应的操作。

3.2 总体设计

根据校园商铺系统的功能需求,进行系统设计。

前台功能:用户进入系统可以实现首页、商品信息、交流论坛、我的等进行操作;

后台主要是管理员,管理员功能包括首页、个人中心、用户管理、商家管理、商品类型管理、商品信息管理、在线咨询管理、咨询回复管理、交流论坛、我的收藏管理、留言板管理、系统管理、订单管理等;

系统对这些功能进行整合,产生的功能结构图如下图所示:

图3-1 系统总体设计图

3.3 数据库设计

在每一个系统中数据库有着非常重要的作用,数据库的设计得好将会增加系统的效率以及系统各逻辑功能的实现。所以数据库的设计我们要从系统的实际需要出发,才能使其更为完美的符合系统功能的实现。

3.3.1 数据库E-R图

E-R图为实体-关系图,本系统的E-R图展现了各个实体之间的关系,在本数据库中,各个实体之间的关系均为多对多的关系,如下图:

商品信息属性图如图3-2所示。

 图3-2商品信息实体属性图

在线咨询实体属性图如图3-3所示。

图3-3在线咨询实体属性图

订单管理实体属性图如图3-4所示。

图3-4订单管理实体属性图

3.3.2 数据库中相关的表

微信小程序的闲置公益交易平台的数据库表如下图所示:

3-1:公告资讯

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

varchar

200

图片

content

longtext

4294967295

内容

表3-2:留言板

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

留言人id

username

varchar

200

用户名

content

longtext

4294967295

留言内容

cpicture

varchar

200

留言图片

reply

longtext

4294967295

回复内容

rpicture

varchar

200

回复图片

表3-3:咨询回复

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

bianhao

varchar

200

编号

yonghuming

varchar

200

用户名

xingming

varchar

200

姓名

zixunhuifu

longtext

4294967295

咨询回复

huifushijian

datetime

回复时间

zhanghao

varchar

200

账号

shangjiaxingming

varchar

200

商家姓名

userid

bigint

用户id

表3-4:交流论坛

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

帖子标题

content

longtext

4294967295

帖子内容

parentid

bigint

父节点id

userid

bigint

用户id

username

varchar

200

用户名

isdone

varchar

200

状态

表3-5:在线咨询

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

bianhao

varchar

200

编号

zhanghao

varchar

200

账号

shangjiaxingming

varchar

200

商家姓名

zixunneirong

longtext

4294967295

咨询内容

zixunshijian

datetime

咨询时间

yonghuming

varchar

200

用户名

xingming

varchar

200

姓名

userid

bigint

用户id

表3-6:商品信息评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表3-7:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表3-8:用户

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yonghuming

varchar

200

用户名

mima

varchar

200

密码

xingming

varchar

200

姓名

xingbie

varchar

200

性别

touxiang

varchar

200

头像

shouji

varchar

200

手机

money

float

余额

0

表3-9:token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表3-10:收藏表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

refid

bigint

收藏id

tablename

varchar

200

表名

name

varchar

200

收藏名称

picture

varchar

200

收藏图片

type

varchar

200

类型(1:收藏,21:赞,22:踩)

1

表3-11:商品信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinmingcheng

varchar

200

商品名称

shangpinleixing

varchar

200

商品类型

tupian

varchar

200

图片

faburiqi

date

发布日期

shangpinxiangqing

longtext

4294967295

商品详情

zhanghao

varchar

200

账号

shangjiaxingming

varchar

200

商家姓名

lianxidianhua

varchar

200

联系电话

clicktime

datetime

最近点击时间

clicknum

int

点击次数

0

price

float

价格

onelimittimes

int

单限

-1

alllimittimes

int

库存

-1

表3-12:商品类型

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinleixing

varchar

200

商品类型

表3-13:商家

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhanghao

varchar

200

账号

mima

varchar

200

密码

shangjiaxingming

varchar

200

商家姓名

xingbie

varchar

200

性别

touxiang

varchar

200

头像

youxiang

varchar

200

邮箱

lianxidianhua

varchar

200

联系电话

money

float

余额

0

表3-14:订单

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

orderid

varchar

200

订单编号

tablename

varchar

200

商品表名

shangpinxinxi

userid

bigint

用户id

goodid

bigint

商品id

goodname

varchar

200

商品名称

picture

varchar

200

商品图片

buynumber

int

购买数量

price

float

价格/积分

0

discountprice

float

折扣价格

0

total

float

总价格/总积分

0

discounttotal

float

折扣总价格

0

type

int

支付类型

1

status

varchar

200

状态

address

varchar

200

地址

tel

varchar

200

电话

consignee

varchar

200

收货人

zhanghao

varchar

200

商户名称

表3-15:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表3-16:购物车表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tablename

varchar

200

商品表名

shangpinxinxi

userid

bigint

用户id

goodid

bigint

商品id

goodname

varchar

200

商品名称

picture

varchar

200

图片

buynumber

int

购买数量

price

float

单价

discountprice

float

会员价

zhanghao

varchar

200

商户名称

表3-17:地址

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

address

varchar

200

地址

name

varchar

200

收货人

phone

varchar

200

电话

isdefault

varchar

200

是否默认地址[是/否]

第四章系统详细设计

4.1 前台功能模块

用户要登录微信小程序,则需要注册。在微信小程序的校园商铺系统里有两个用户可以进行登录,分别是用户和商家。用户注册:输入用户名,密码、姓名、性别、手机等信息进行用户注册;商家注册:输入账号、密码、商家姓名、性别、邮箱、联系电话等信息进行商家注册,如图4-1所示。

图4-1用户注册界面图

前台登录:通过注册时输入账号、密码、选择登录的角色,进行登录,如图4-2所示。

图4-2登录界面图

登录微信小程序的校园商铺系统首页,用户可以进行首页、商品信息、交流论坛、我的等功能模块的查看与操作,如图4-3所示。

图4-3系统首页界面图

商品信息:在商品信息页面,可以查看商品名称、价格、图片、商品类型、发布日期、账号、商家姓名、联系电话、点击次数、库存、商品详情等内容,也能对商品信息进行咨询,加入购物车,立即订购,评论或收藏等操作,如图4-4所示。

图4-4商品信息界面图

用户:在我的页面,可以对商品信息、在线咨询、咨询回复、用户充值、我要发贴、我的发贴、购物车、我的订单、留言板等功能进行相应的操作,如图4-5所示。

图4-5用户界面图

用户信息:点击用户信息,通过输入用户名、密码、姓名、性别、头像、手机等内容,点击保存来更新用户信息,也可以点击退出登录,退出系统,如图4-6所示。

图4-6用户信息界面图

4.2后台功能模块

后台登录,通过输入账号和密码,选择角色等信息进行登录,登录到系统后台,进行相应的操作,如下图所示。 

图4-7后台登录界图面

4.2.1管理员功能模块

登录到微信小程序校园商铺系统的后台,管理员可以对首页、个人中心、用户管理、商家管理、商品类型管理、商品信息管理、在线咨询管理、咨询回复管理、交流论坛、我的收藏管理、留言板管理、系统管理、订单管理等功能进行相应操作,如下图所示:

图4-8管理员功能界图面

用户管理:在用户管理页面,可以对索引、用户名、姓名、性别、头像、手机等用户信息进行详情、修改和删除等操作,如下图所示。

商家管理:在商家管理页面,可以对索引、账号、商家姓名、性别、头像、邮箱、联系电话等商家信息进行详情、修改和删除等操作,如下图所示。

图4-10商家管理界面图

商品信息管理:在商品信息管理页面,可以对索引、商品名称、商品类型、图片、发布日期、账号、商家姓名、联系电话、价格、单限、库存等商品信息进行详情,修改,查看评论或删除等操作,如下图所示。

图4-11商品信息管理界面图

在线咨询管理:在在线咨询管理页面,可以对索引、编号、账号、商家姓名、咨询时间、用户名、姓名等信息进行详情、修改和删除等操作,如下图所示。

图4-12在线咨询管理界面图

咨询回复管理:在咨询回复管理页面,可以对索引、编号、用户名、姓名、回复时间、账号、商家姓名等信息进行详情、修改和删除等操作,如下图所示。

图4-13咨询回复管理界面图

交流论坛:在交流论坛页面,可以对索引、帖子标题、用户名、状态等信息进行详情、修改和删除等操作,如下图所示。

图4-14交流论坛界面图

留言板管理:在留言板管理页面,可以对索引、用户名、留言内容、留言图片、回复内容、回复图片等信息进行详情,修改,回复或删除等操作,如下图所示。

图4-15留言板管理界面图

订单管理:在已支付订单,已退款订单,已完成订单,已发货订单,未支付订单,已取消订单页面,可以查看索引、订单编号、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址、电话、收货人、商户名称、下单时间等详细内容,并进行相应的操作管理;如下图所示。

图4-16订单管理界面图

4.2.2商家功能模块

商家登录到微信小程序校园商铺系统的后台,可以对首页、个人中心、商品信息管理、在线咨询管理、咨询回复管理、订单管理等功能进行相应操作,如下图所示:

图4-17商家功能界图面

个人中心:在个人中心页面,通过填写账号、商家姓名、性别、头像、邮箱、联系电话等信息进行个人信息修改操作,如下图所示。

图4-18个人中心界面图

商品信息管理:在商品信息管理页面,可以对索引、商品名称、商品类型、图片、发布日期、账号、商家姓名、联系电话、价格、单限、库存等商品信息进行详情,修改,查看评论或删除等操作,如下图所示。

图4-19商品信息管理界面图

订单管理:在已支付订单页面,可以查看索引、订单编号、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址、电话、收货人、商户名称、下单时间等详细内容进行详情,发货或删除操作;还可以对已退款订单,已完成订单,已发货订单,未支付订单,已取消订单进行相应的操作管理;如下图所示。

图4-20订单管理界面图

第五章 系统的调试和测试

调试其实也是一个相当重要的过程,对于编程完成的功能,并不一定很完善,很多时候不像程序员想象中那么顺利,有很多漏洞都是在调试过程中发现的。测试前,我们首先要清空数据库中的所有数据,然后输入少量的数据进行测试。测试过程中有些功能并不是像构思好的那样顺序执行,并且有时系统会很不稳定,所以测试帮助我们发现错误并对程序做一些修改和完善。

本系统的测试应从用户注册测试开始,然后再进行用户登录测试,对系统的各个模块的功能进行测试,查看是否与需求说明上要求的功能一致。有时候少写一条语句、session未执行或者数据库的某些字段名字改掉了而造成引用不成功这样的小错误是常有的,有时删掉了一些方法但是忘记在前台页面上删除会引发一些错误或者Mysql语句不正确之类的错误都也是比较常见的。

在本系统的测试中我遇到了几个比较“纠结”的问题,最开始是SQL语句部分总是提示user附近有语法错误,怎么都不能做数据库的查询,就是在user表创建时,软件会在表名外加上一个“[]”,导致我的表名总是错误无法查询;MysqlL还有一个我自己造成的问题,就是我无意中把Mysql的登录名给删掉了,导致我没有办法链接到数据库,后来在老师的帮助下我才意识到问题出在这个地方,最后还是重新装的SQL这写问题也就都没有了。最后在做商品的查询/修改功能时也遇到了很大的问题,后台语句的逻辑和SQL语句都没有错误,系统也按照逻辑顺序提示修改成功,可是就是数据库中的内容没有修改,后来发现每做一个操作页面会刷新,就刷新成了数据库中原来的值,Mysql语句确实update成功了,只是修改的是原来的数据,所以看起来没有任何修改,我通过在页面加载方法中添加if (!IsPostBack){ }方法,这样就解决了页面刷新的问题。还有一个比较麻烦的问题就是模糊查询和类型查询的综合查询,一开始只定义了全局变量,总是查询失败,后来通过打断点测试,发现全局变量的值不易保存,后来改成了session变量,查询就成功了。当然遇到的问题不止这三个,还有很多的小问题,不过在模块测试时一一解决了。

调试是一个需要耐心和细心的工作,所以只是大体上执行一下是不会发现漏洞的,应该把每个功能都多调试几次,把可能的顺序或方法都试验一遍,往数据库中多添加一些东西,多次重复调用,尽可能地找出问题,这样才能够使系统更加完善。并且我认为当发现问题并解决问题的时候会体会到很大的成就感和快乐!这种感觉更鼓励我继续努力!

第六章 总结

本次毕业设计是以微信小程序为开发基础,以Mysql为数据库进行开发设计的,着重讨论了数据库模块、用户进入前台查看首页、商品信息、交流论坛、我的等功能的管理,管理员对首页、个人中心、用户管理、商家管理、商品类型管理、商品信息管理、在线咨询管理、咨询回复管理、交流论坛、我的收藏管理、留言板管理、系统管理、订单管理等功能的设计与的实现,并对整个设计进行了简单的调试和修改。本系统操作简单方便快捷,适用于商品的交易。当然,一个完整的校园商铺系统,还需要有很强吸引力的页面美观效果,不过这是本设计所欠缺的。同时,如何让大家对你的系统感兴趣,如何设计的即美观又实用等等都是我们需要考虑到的。做此系统不是单单是为商铺销售,用户购物提供一个平台,更主要的是针对人的需求,这也是本系统开发的意义,所以要多些人性化的元素。

毕业设计已经到了尾声,通过这几个月的毕业设计,使我对开发软件的内容和流程有了更深的了解,虽然编程是一个很辛苦很枯燥的事情,但是当你自己完成了一个作品,实现了它的功能的时候,你就会体会到很多的成就感。遇到问题的时候大家都会很苦恼,但是解决了问题之后那种喜悦也是无法言语的。并且在完成毕业设计的过程中把以前学过的知识又重新巩固了,通过解决问题也学习到许多新的知识。从需求分析和可行性分析到最终完成了设计,涉及的知识领域包括:系统开发、网页设计、数据库原理、软件工程、专业外语等等。并且当代社会计算机行业发展十分迅速,也给了我们很大的压力,所以我们只学书本上和课堂上的知识是远远不够的,我们更应该不断的充实自己,学习新的知识,多做做项目,练习动手的能力,并且在项目中才能检测自己学习的内容有没有真正掌握,这也是理论与实践相结合的重要性。

参考文献

[1] 张海藩.软件工程. 北京:人民邮电出版社,2006

[2] 郑阿奇.C#应用教程.北京:电子工业出版社,2009

[3]耿祥义,张跃平.《JSP实用教程》. 清华大学出版社,2013年5月

[4]Brown等.《JSP编程指南(第二版)》. 电子工业出版社 ,2013年3月

[5]BruceEckel.《Java编程思想》. 机械工业出版社,2013年10月

[6]孙一林,彭波.《Java数据库编程实例》. 清华大学出版社,2015年8月

[7]FLANAGAN.《Java技术手册》. 中国电力出版社,2017年6月

[8] David L.Anderson.Managing  Information Systems.清华大学出版社,2016:16

[9]孙卫琴,李洪成.《Tomcat 与 Java Web 开发技术详解》.电子工业出版社,2013年6月

[10]孙涌.《现代软件工程》.北京希望电子出版社,2013年8月

[11](美)额尔曼.(美)威多姆.数据库系统基础教程.清华大学出版社,2013:5

[12]飞思科技产品研发中心.《JSP应用开发详解》.电子工业出版社,2013年9月

[13] 张晓东. MySOL数据库应用系统与实例[M].北京:人民邮电出版社,2012:179

[14] 王家华.软件工程[M],沈阳:东北大学出版社,2015:46.

致谢

本次毕业设计的完成,首先要感谢的是我的指导老师,在毕业设计过程中,老师一直指导并关注我的设计进程,帮助我解决设计中我解决不了的问题,给我正确的指导,让我能够以良好的心态对待毕业设计,并且在整个毕业设计的过程中为我提出了许多宝贵的意见和建议。在这里再次感谢老师。

在毕业设计制作的过程中,我也会遇到很多难题,当老师给予指导,我自己反复尝试后,有时候还是会失败,是我的室友们,看到我的困惑后,一直和我探讨,陪着我深夜还在尝试。在这过程中,我感受到了来自室友的爱与温暖。

最后,感谢所有在毕业设计给予我帮助的老师、同学、朋友们。在整个设计过程中给我指导和鼓励,并在我困难的时候帮助我。我还要感谢我的家人,谢谢我亲爱的父母,感谢他们给我自始至终的支持与鼓励,让我可以顺利完成毕业设计。

这次毕业设计的完成,对我大学生活画上了完美的句号,我会将这次的宝贵经验加以总结,使用在以后的工作中。

核心代码展示

/**
 * 公告通知
 * 后端接口
 * @author 
 * @email 
 * @date 2021-03-09 11:33:59
 */
@RestController
@RequestMapping("/news")
public class NewsController {
    @Autowired
    private NewsService newsService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
        EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
		PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
        EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
		PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( NewsEntity news){
       	EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
      	ew.allEq(MPUtil.allEQMapPre( news, "news")); 
        return R.ok().put("data", newsService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(NewsEntity news){
        EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
 		ew.allEq(MPUtil.allEQMapPre( news, "news")); 
		NewsView newsView =  newsService.selectView(ew);
		return R.ok("查询公告通知成功").put("data", newsView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        NewsEntity news = newsService.selectById(id);
        return R.ok().put("data", news);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        NewsEntity news = newsService.selectById(id);
        return R.ok().put("data", news);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody NewsEntity news, HttpServletRequest request){
    	news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(news);
        newsService.insert(news);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody NewsEntity news, HttpServletRequest request){
    	news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(news);
        newsService.insert(news);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody NewsEntity news, HttpServletRequest request){
        //ValidatorUtils.validateEntity(news);
        newsService.updateById(news);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        newsService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = newsService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}