系统合集跳转
源码获取链接
一、系统环境
运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以
tomcat环境: Tomcat 7.x,8.x,9.x版本均可
操作系统环境: Windows XP/7/8//8.1/10/11或者Linux或者MacOS,2G内存以上,推荐4G,4G以上更好
用了技术框架: HTML+CSS+JavaScript+jsp+mysql+Spring+SpringMVC+mybatis+Spring boot
数据库: Mysql数据库,任意版本均可,也可使用各种数据库工具,例如Navicat等。
二、摘要
互联网技术的快速发展,促进了人们各行各业的进步。传统行业逐步向线上进行转变,电商行业得到快速的发展,线上交易数量逐年攀升,网上购物给人们带来了极大的便利。近年来,越来越多的人开始饲养宠物,宠物用品需求急剧增长,但是电商平台宠物用品模块占比还不到15%,这就对用户购买宠物用品造成了极大的不便,为了解决这一情况,开发一款宠物用品商城极为重要。
本文以宠物用品为背景设计并开发出一款基于SSM框架的宠物用品商城系统,本系统基于B/S架构的Web端系统,数据存储在MySql数据库中,系统根据不同角色使用划分为前后台两个界面,前台由普通用户使用,功能主要包括宠物用品购买,信息查询,添加购物车和查看个人订单等功能,后台由管理员角色使用,主要是对系统所有信息进行维护管理。系统采用协同过滤算法来进行推荐,收集其他用户的购物信息进行建模,通过余弦公式计算出推荐值,为顾客进行商品推荐。
【关键词】 宠物用品; SSM框架;协同过滤;MySql
三、目录
1绪论 1
1.1研究背景 1
1.2 研究意义 1
1.3研究现状 1
1.3.1国外研究现状 1
1.3.2国内研究现状 2
1.4 论文主要结构 2
2 开发工具及核心技术 3
2.1 开发工具 3
2.1.1 Navicat 3
2.1.2 IntelliJ IDEA 3
2.1.3 Tomcat7 3
2.2 开发技术 3
2.2.1 Spring框架 3
2.2.2 SpringMVC框架 4
2.2.3 Mybatis框架 4
2.2.4 协同过滤算法 5
2.3 本章小结 5
3可行性分析与需求分析 7
3.1 可行性分析 7
3.1.1 技术可行性 7
3.1.2 经济可行性 7
3.1.3 操作可行性 7
3.2 需求分析 8
3.2.1功能性需求 8
3.2.2非功能需求 10
3.3本章小结 10
4系统的总体设计 11
4.1功能结构设计 11
4.1.1 后台功能模块 11
4.1.2 前台功能模块 12
4.2数据库分析与设计 12
4.2.1数据库概念设计 12
4.2.2数据库表设计 15
4.3 业务流程设计 18
4.3.1 用户流程设计 18
4.3.2 管理员流程设计 20
4.4本章小结 21
5宠物用品商城系统实现 22
5.1后台功能实现 22
5.1.1 用户管理模块 22
5.1.2 商品管理模块 24
5.1.3 评论模块 25
5.1.4 订单管理模块 27
5.1.5 销量统计模块 29
5.1.6 角色管理模块 31
5.2 前台业务实现 31
5.2.1登录注册模块 32
5.2.2搜索模块 34
5.2.3评论模块 35
5.2.4 用户充值模块 36
5.2.5 购物模块 37
5.3 核心功能实现 39
5.4本章小结 40
6系统测试 42
6.1 软件测试的基本概念 42
6.2 测试用例 42
6.3 测试结果 44
总 结 45
致 谢 46
参考文献 47
四、内容
1.1研究背景
随着经济水平的不断攀升,人们生活质量不断提高,越来越多的家庭开始饲养宠物,宠物相关行业得到了飞速的发展,宠物也越来越受到年轻人的喜爱,但是国内宠物行业中宠物用品所占不比重不足20%,国内市场的需求以及人们对宠物用品有了越来越高的要求,这就造成了人们不局限于在线下宠物店进行挑选商品,把目光转移到了网络平台,电商平台中宠物用品商家如雨后春笋般涌现,宠物用品商之间的竞争也逐渐拉开了序幕[1]。同时,物流行业的飞速进步,让快递、闪送越来越快,极大程度上提高了人们网购的体验,在同城的商铺配送速度甚至高于到店购买的速度,给消费者带来的极大的便利。但由于国内互联网电商平台起步晚,存在着技术含金量相对较低、缺乏创新性等问题。基于这个背景下,开发出一款功能完善且创新性十足的宠物用品商城系统迫在眉睫[2]。
1.2 研究意义
开发一款宠物用品商城系统可以代替线下宠物用品销售的弊端,对于消费者来说,再也不需要跑到线下宠物店去进行购买,节省了大量的时间,并且线上宠物用品商城可以将大量的商家信息进行整合,让消费者拥有更多的选择货比三家,从而得到最大程度上的优惠。对于商家来说,线上宠物用品商城可以给商家提供出更多的平台来进行售卖,商家可以解决店面位置不好导致生意差的问题,同时可以为自己的店铺发布广告信息,增加商家收入。对于管理者来说,集成互联网技术让管理更加便利,即使面对庞大的数据量也能轻松应对,大大提高了管理者的管理效率,并且最大程度上的减少人力的投入成本,节省开支。因此,开发一款线上宠物商城系统可以最大程度上利用互联网带来优势,让消费者、商家以及管理者三方受益。
1.3研究现状
1.3.1国外研究现状
对于国外来说,互联网技术发展较早,并且美国是Java语言以及Spring框架的发源地,JavaWeb系统拥有着极长的发展时间。MVC设计思想也是最早提出并得以运用的,采用MVC设计思想极大程度上提高了之前开发系统的速度与质量,让JavaWeb系统得到了飞速的发展,让现在可以拥有大量优秀的系统,截至目前为止,国外已经拥有了非常完善的电商系统和产业链,例如,沃尔玛商超旗下的系统,以及国外最大的电商系统亚马逊电商网站,都是非常不错的例子。
但是对于宠物产业来说,国外虽然拥有巨大的市场份额,但是对于宠物用品来说绝大多数还是附属在其他电商平台下的一个板块,没有单独成为一个系统,这跟国外昂贵的运输成本密不可分,国外没有中国高效且实惠的快递运输方式,同等距离下的运输价格,美国是中国的3倍以上,且时效性相差较多,对于宠物用品本身的价格可能并不是很高,如果付出巨大的运费,很多人宁愿选择到线下进行购物,这就导致了宠物用品市场量巨大,但是宠物用品商城发展较慢的现状。
1.3.2国内研究现状
对于国内来说,互联网技术虽然起步较为缓慢,但是因为国家的重点扶持和培养,让互联网技术在短短的30年间得到了突飞猛进的发展,特别是针对JavaWeb系统来说更是如此,截至目前,国内采用Spring框架延申的系统已经非常多,可以在市面上找到非常多优秀的系统来进行参考。同时,近年来电商发展飞速,京东、淘宝、拼多多等一系列优秀的电商平台占据了市场,这些优良的系统可以给我们开发电商平台提高非常大的帮助,对于宠物用品商城来说,宠物用品在电商平台中占比还不到10%,这就导致了巨大的消费市场和低销售配比之间的矛盾,同时,物流行业的飞速进步,让快递、闪送越来越快,极大程度上提高了人们网购的体验,在同城的商铺配送速度甚至高于到店购买的速度,给消费者带来的极大的便利。这些原因都加剧了宠物用品市场应该独立出来占据电商平台的进度,基于这个背景下,国内现阶段宠物用品商城正在蓬勃发展。
2 开发工具及核心技术
2.1 开发工具
2.1.1 Navicat
Navicat 能在琳琅满目的数据库管理工具中独树一帜,是由于他的高效、便捷、易于上手、轻巧、支持中文等特点[4]。本系统开发选取采用Navicat的原因是因为它是一款轻量级的可视化软件,没有厚重的环境要求,可随时进行变更以及替换版本。其次,它支持多个不同数据库的连接,除常用的MySql外,还支持Oracle、PostgreSQL以及SQL Server等不同类型的数据库,方便系统更换数据库类型时不需要再替换软件,同时对于国内开发人员来说,Navicat是为数不多支持中文的数据库可视化软件,方便国内开发人员上手开发,最后对于设计表格来说非常便利,提供手动设计表格与修改表字段类型的界面,方便修改数据库表格,基于以上原因,本系统开发选用Navicat软件进行管理数据库。
2.1.2 IntelliJ IDEA
IntelliJ IDEA简称Idea,是Java编程语言开发的集成环境,本系统选取Idea软件进行开发带来了非常大的便利,首先,IntelliJ IDEA软件页面比较优美,开发体验良好,支持多语言多种颜色选择,十分人性化。其次,IntelliJ IDEA可以集成多个插件,比如Mybatis的Plus插件,支持自动生成增删改查配置文件,支持lombok插件,免去生成实体类Get、Set方法,为开发系统提供了极大的便利。最后,IntelliJ IDEA软件支持编码辅助和智能编辑等重要功能,可以在代码输入过程中,自动补充方法或类,极大程度上减少开发人员重复工作,非常适用于本系统的开发。基于以上原因,本系统代码的开发采用IntelliJ IDEA软件进行。
2.1.3 Tomcat7
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。本系统开发就是部署在Tomcat服务器上,本系统选取Tomcat作为部署容器是因为它具有非常便捷的部署操作,并且架构属于轻量级,不需要占用大量的内存空间,这样确保了项目的快速部署和启动。并且Tomcat属于开源的项目,不需要额外支付费用。基于以上原因,本系统部署容器选择Tomcat服务器上。
2.2 开发技术
2.2.1 Spring框架
Spring框架一大特性就是控制反转和依赖注入,美食系统中依赖注入部分就是利用到该特性,后台之间模块关联的调用就是靠依赖注入直接引用,不需要每次都进行新建对象,比如在用户管理中,只需要在服务层注入一个用户对象,每个方法都可以调用,不需要每个方法重新新建一遍,可以释放系统内存,并且Spring框架会对该Bean的生命周期进行管理,在不使用的时候还会自动Kill掉,释放内存。
Spring框架另外一大优势就是进行解耦,本系统集合了框架解耦的特性,将用户管理模块、商品管理模块、分类管理模块等等模块解耦出来,各个模块之间关联较少,在一个模块出现问题后最小程度上减少对系统的影响性,同时继承了Spring框架轻量级的优点,整个系统打完War包部署到服务器上只有40兆大小,不占用内存空间。
此外,SpringAOP也是该框架的核心,SpringAOP为面向切面编程,将维度划分为切面和点,采用该模块可以对日志和事务进行很好的集成,非常方便进行日志管理,本系统日志管理就是基于SpringAOP的基础上实现的。Spring框架拥有这些良好的框架和特性,为本系统的开发提供了诸多的便利,这也是本系统后端开发采用Spring框架的原因之一。
2.2.2 SpringMVC框架
SpringMVC框架是一款基于MVC设计思想的Web框架,它本身是属于Spring框架的一个模块,所以它能无间隔的集成Spring框架,在本系统中,采用SpringMVC框架可以更好的实现Web端的系统,本系统在前端发起用户请求后,SpringMVC框架可以配置拦截器将请求进行拦截,然后通过控制器将用户请求进行处理分发到对应的服务层中进行业务处理,然后对接MyBatis框架来进行数据持久化,通过SpringMVC框架让系统分层明确,最大程度上实现了解耦,并且让对应的层级来处理各自的任务,互相不干涉,对于程序开发十分便利,前后端控制器的实现,让数据以及业务处理流程变得井然有序,同时也方便开发人员去进行跟踪和调试。基于以上的优点,本系统采用SpringMVC框架来进行开发。
2.2.3 Mybatis框架
MyBatis 本是apache的一个开源项目iBatis,Mybatis框架主要是用于系统和数据库之间交互使用,Mybatis框架同Spring框架进行集成,主要原理是采用了ORM的思想,将数据库字段和实体类字段进行一一映射,系统操作实体类数据,然后通过映射来传入到数据库中进行修改,本系统中在resource目录下配置好Mapper.xml映射,将实体类和系统的持久层代码结合起来,这样系统可以通过改变实体类的赋值来传递到数据库中,完成数据库的读写查操作。
Mybatis框架解决了Hibernate框架全局映射的问题,采用单独编写Sql语句进行控制,这样改变字段只需要对改动的Sql进行修改,不需要再进行全局修改。在本系统中利用Mybatis框架的特性将字段拆分开来,这样做的好处是,既可以方便字段的变更操作带来的代码改动,又可以提高数据库的查询速度。
2.2.4 协同过滤算法
基于用户的协同算法主要是将用户看作分析的主体,计算每个用户的相似度,对相似度高的用户进行该组用户中物品的推荐。在普通的基于用户算法中,会将每个用户所对应的某些物品直接组成矩阵的形式来生成数据矩阵,这样做的坏处是存在大量的用户之间关联的物品本身是没有联系的,会造成计算后的相似度数据过大或过小,并且不利于代码级别的海量计算。所以将用户与物品的关系通过倒数的方式形成稀疏矩阵,便于计算。
图2-1 物品推荐度计算过程
3.2 需求分析
需求分析是指通过详细的调研和研究后,将用户非形式的需求转换为明确需求的过程,本系统的需求分析通过对使用人员进行抽样调查的形式进行,通过分发设计问卷来采集用户需求,并且对市面上成熟的系统进行参考和研究后得出。分别从功能性需求和非功能性需求两方面进行分析。
3.2.1功能性需求
功能性需求是说有具体的完成内容的需求,根据功能不同系统将角色分为普通用户和管理员两种角色。普通用户为本系统前台的使用者,主要功能与宠物用品购买有关,管理员角色为本系统后台的使用者,功能主要和信息管理有关。系统通过用例图分析来对功能性需求进行概述。
管理员的用例图如图3-1所示:
图3-1管理员用例图
面向管理员的用例的主要功能模块有:
1.登录:管理员进行后台登录,获取管理员专属权限,进行后台管理。
2.用户管理:对用户信息进行维护。
3.商品分类管理:维护商品分类信息,属于商品信息中的一种。
4.商品管理:对商品信息进行管理,方便用户购物。
5.客户管理:对客户信息进行维护。
6.订单管理:对客户产生的订单信息进行核对。
7.评论管理:管理用户产生的评论信息。
8.销售统计:对商家销售量进行统计。
9.充值管理:对用户充值进行审核。
10.系统设置:对系统信息进行管理。
顾客的用例图如图3-2所示:
图3-2顾客用例图
面向用户的用例的主要功能模块有:
1.注册:注册账户来获取个人账号。
2.登录:登录前台来获取购买商品等功能权限。
3.个人中心:查看个人信息以及账户信息。
4.商品收藏:对心仪的商品信息进行收藏,可以在收藏夹中查看。
5.添加购物车:将购买的物品存放到购物车中。
6.用户充值:申请充值,付款后提交到后台进行审核。
7.订单管理:对订单信息进行查看。
8.商品评价:购买后对商品信息进行评论。
4系统的总体设计
4.1功能结构设计
本系统前台由普通用户进行使用,进行宠物用品购买业务,后台由管理员进行统一管理,前台操作后台管理。
4.1.1 后台功能模块
管理员主要是本系统的后台使用者,系统后台功能模块图如图4-1所示:
图4-1管理员功能模块图
(1)用户管理:用户管理包括用户查询以及用户添加等功能,主要是对用户信息进行统一管理和维护的地方,并且可以对失效的用户进行删除。
(2)商品管理:该模块是对商品信息进行维护,主要功能和商品信息修改和添加有关,主要作用是对前台用户查看到的商品信息进行更改,方便用户来进行购物,提高店家销量。
(3)商品分类管理:该模块是对商品的分类信息进行管理,主要作用是为了让商品以类别的形式整理,方便用户查找,同时也方便商家管理。
(4)销售统计:对商家销售信息进行统计,并且通过图表的形式呈现出来,将数据可视化。
(5)订单管理:对用户产生的订单信息进行维护,方便商家核对。
(6)充值管理:查询并审核用户提交的充值信息。
(7)评价管理:对用户评价信息进行维护,可以对其进行删除、修改和查询操作。
(8)系统管理:对系统信息进行管理。包括修改管理员密码和退出系统清除缓存等功能。
4.1.2 前台功能模块
系统前台功能模块图如图4-2所示:
图4-2 顾客功能模块图
(1)商品模块:商品模块是前台主要展示的模块,对商品信息以及商品分类信息进行展示,并且点击图片后还能查看到商品详情,在商品详情中可以进行购买操作。
(2)个人中心:在个人中心中可以查看到自己的信息以及对个人信息进行修改,并且可以对账户信息进行管理,提交充值请求等功能。
(3)订单管理:订单管理主要是对购买商品后产生的订单信息进行查看。
(4)购物车:将商品信息添加到购物车中,并且支持一键清空购物车的操作。
(5)收藏评论:对商品信息进行收藏和评论等功能。
数据库表结构设计
5 系统功能页面展示
6 代码片段
if(comment == null){ret.put("type", "error");ret.put("msg", "请填写正确的评论信息");return ret;}if(StringUtils.isEmpty(comment.getContent())){ret.put("type", "error");ret.put("msg", "请填写评论内容");return ret;}if(commentService.edit(comment) <= 0){ret.put("type", "error");ret.put("msg", "编辑失败,请联系管理员!");return ret;}
if(!StringUtils.isEmpty(username)){Account account = accountService.findByName(username);if(account != null){queryMap.put("userId", account.getId());}}
if(moneyMin != null){queryMap.put("moneyMin", moneyMin);}if(moneyMax != null){queryMap.put("moneyMax", moneyMax);}if(status != null){queryMap.put("status", status);}queryMap.put("offset", page.getOffset());queryMap.put("pageSize", page.getRows());ret.put("rows", orderService.findList(queryMap));ret.put("total", orderService.getTotal(queryMap));
/*** 查询订单列表* @param sn* @param page
*/
@RequestMapping(value="/list",method=RequestMethod.GET)public ModelAndView list(ModelAndView model){model.setViewName("order/list");model.addObject("accountList",
JSONArray.fromObject(accountService.findList(new HashMap<String, Object>())));return model;}
一键三连+关注+评论留下你的邮箱 获取源码,主动获取 看主页置顶
一键三连+关注+评论留下你的邮箱 获取源码,主动获取 看主页置顶
一键三连+关注+评论留下你的邮箱 获取源码,主动获取 看主页置顶