1、项目介绍
该系统主要分为前台和后台两大功能模块,共包含三个角色:农户、经销商和管理员。
具体的系统功能如下:
1.前台功能
前台首页、用户注册、用户登录、新闻公告、水果行情、查看水果、水果详情、加入购物车、加入收藏、购买水果、付款结算、添加评论、留言交流、个人中心、我的订单、我的收藏、意见反馈、发布水果、我的销售等功能。
2.后台功能
后台系统登陆、用户管理、管理员管理、网站内容管理、水果类型管理、水果信息管理、采购订单管理、用户评价管理、意见反馈管理、留言交流管理等功能。
该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的应用价值。
2、技术框架
编程语言:Java
系统架构:B/S
后端框架:SSM
前端框架:JSP、jQuery 、H-ui
数据库:MySQL
Maven项目:否
运行环境:JDK8+Tomcat8.5+MySQL5.6+Idea
3、运行视频
B站地址:
基于SSM实现的水果销售网站、农产品销售管理系统、水果在线交易管理系统、生鲜在线销售管理系统,附源码+数据库,适合课程设计、毕设
基于SSM实现的水果销售网站、农产品销售管理系统、水果在线交易管理系统、生鲜在线销售管理系统,附源码+数据库,适合课程设计、毕设_哔哩哔哩_bilibili
4、项目截图
4.1、项目首页
4.2、农户和经销商-登录
4.3、农户和经销商-注册
4.4、新闻公告
4.5、全部水果
4.6、农户-水果详情
4.7、农户-留言交流
4.8、农户-用户中心
4.9、农户-用户信息
4.10、农户-修改信息
4.11、农户-发布水果
4.12、农户-我的水果
4.13、农户-我的销售
4.14、农户-我的收藏
4.15、农户-意见反馈
4.16、农户-我的意见反馈
4.17、经销商-加入购物车
4.18、经销商-我的购物车
4.19、经销商-付款
4.20、管理员-登录
4.21、管理员-管理员信息管理
4.22、管理员-网站用户信息管理
4.23、管理员-网站栏目信息管理
4.24、管理员-网站内容信息管理
4.25、管理员-水果类型信息管理
4.26、管理员-水果信息管理
4.27、管理员-采购订单信息管理
4.28、管理员-用户评价信息管理
4.29、管理员-意见反馈信息管理
4.30、管理员-留言交流信息管理
4.31、留言信息回复管理
5、代码示例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!doctype html>
<html lang="zh_CN">
<head>
<base href="<%=basePath%>" />
<title>${title }</title>
<script type="text/javascript" src="js/jquery-1.3.2.min.js" charset="utf-8"></script>
<script type="text/javascript" src="js/selimage.js" charset="utf-8"></script>
<script type="text/javascript" src="js/ajax.js" charset="utf-8"></script>
</head>
<body>
<jsp:include page="header.jsp"></jsp:include>
<div class="block box">
<div class="blank"></div>
<div id="ur_here">
当前位置: <a href="<%=basePath%>">首页</a>
<code> > </code>
发布水果
</div>
</div>
<div class="blank"></div>
<div class="blank"></div>
<div class="block clearfix">
<div class="AreaL">
<div class="box">
<div class="box_1">
<div class="userCenterBox">
<jsp:include page="usermenu.jsp"></jsp:include>
</div>
</div>
</div>
</div>
<div class="AreaR">
<div class="box">
<div class="box_1">
<div class="userCenterBox boxCenterList clearfix" style="_height: 1%;">
<h5>
<span>发布水果</span>
</h5>
<div class="blank"></div>
<form action="index/addGoods.action" name="myform" method="post">
<table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#dddddd">
<tr>
<td width="15%" align="right" bgcolor="#FFFFFF">水果名称:</td>
<td width="85%" align="left" bgcolor="#FFFFFF"><input name="goodsname" type="text" size="25"
class="inputBg" id="goodsname" placeholder="请输入水果名称" /></td>
</tr>
<tr>
<td width="15%" align="right" bgcolor="#FFFFFF">水果类型:</td>
<td width="85%" align="left" bgcolor="#FFFFFF"><select name="cateid" class="inputBg" id="cateid"><c:forEach
items="${cateList}" var="cate">
<option value="${cate.cateid}">${cate.catename }</option>
</c:forEach></select></td>
</tr>
<tr>
<td width="15%" align="right" bgcolor="#FFFFFF">图片:</td>
<td width="85%" align="left" bgcolor="#FFFFFF"><input name="image" type="text" size="25" class="inputBg"
id="image" onclick="selimage();" placeholder="请选择图片" readonly="readonly" /></td>
</tr>
<tr>
<td width="15%" align="right" bgcolor="#FFFFFF">单价:</td>
<td width="85%" align="left" bgcolor="#FFFFFF"><input name="price" type="text" size="25" class="inputBg"
id="price" placeholder="请输入单价" /></td>
</tr>
<tr>
<td width="15%" align="right" bgcolor="#FFFFFF">库存数:</td>
<td width="85%" align="left" bgcolor="#FFFFFF"><input name="storage" type="text" size="25" class="inputBg"
id="storage" placeholder="请输入库存数" /></td>
</tr>
<tr>
<td width="15%" align="right" bgcolor="#FFFFFF">水果介绍:</td>
<td align="left" bgcolor="#FFFFFF"><script type="text/javascript" src="ckeditor/ckeditor.js"></script> <textarea
cols="80" name="contents" id="contents" rows="10">在此添加内容 </textarea> <script type="text/javascript">
CKEDITOR.replace('contents', {
language : 'zh-cn'
});
</script></td>
</tr>
<tr>
<td colspan="2" align="center" bgcolor="#FFFFFF"><input type="submit" class="bnt_blue_1"
style="border: none;" value="确认发布" /></td>
</tr>
</table>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="blank"></div>
<jsp:include page="footer.jsp"></jsp:include>
</body>
</html>
package com.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.entity.Complains;
import com.service.ComplainsService;
import com.entity.Users;
import com.service.UsersService;
import com.util.PageHelper;
//定义为控制器
@Controller
// 设置路径
@RequestMapping(value = "/complains" , produces = "text/plain;charset=utf-8")
public class ComplainsController extends BaseController {
// 注入Service 由于标签的存在 所以不需要getter setter
@Autowired
private ComplainsService complainsService;
@Autowired
private UsersService usersService;
// 准备添加数据
@RequestMapping("createComplains.action")
public String createComplains() {
List<Users> usersList = this.usersService.getAllUsers();
this.getRequest().setAttribute("usersList", usersList);
return "admin/addcomplains";
}
// 添加数据
@RequestMapping("addComplains.action")
public String addComplains(Complains complains) {
this.complainsService.insertComplains(complains);
return "redirect:/complains/createComplains.action";
}
// 通过主键删除数据
@RequestMapping("deleteComplains.action")
public String deleteComplains(String id) {
this.complainsService.deleteComplains(id);
return "redirect:/complains/getAllComplains.action";
}
// 批量删除数据
@RequestMapping("deleteComplainsByIds.action")
public String deleteComplainsByIds() {
String[] ids = this.getRequest().getParameterValues("complainsid");
for (String complainsid : ids) {
this.complainsService.deleteComplains(complainsid);
}
return "redirect:/complains/getAllComplains.action";
}
// 更新数据
@RequestMapping("updateComplains.action")
public String updateComplains(Complains complains) {
this.complainsService.updateComplains(complains);
return "redirect:/complains/getAllComplains.action";
}
// 更新状态
@RequestMapping("status.action")
public String status(String id) {
String status = "";
Complains complains = this.complainsService.getComplainsById(id);
if (status.equals(complains.getStatus())) {
status = "";
}
complains.setStatus(status);
this.complainsService.updateComplains(complains);
return "redirect:/complains/getAllComplains.action";
}
// 显示全部数据
@RequestMapping("getAllComplains.action")
public String getAllComplains(String number) {
List<Complains> complainsList = this.complainsService.getAllComplains();
PageHelper.getPage(complainsList, "complains", null, null, 10, number, this.getRequest(), null);
return "admin/listcomplains";
}
// 按条件查询数据 (模糊查询)
@RequestMapping("queryComplainsByCond.action")
public String queryComplainsByCond(String cond, String name, String number) {
Complains complains = new Complains();
if(cond != null){
if ("usersid".equals(cond)) {
complains.setUsersid(name);
}
if ("title".equals(cond)) {
complains.setTitle(name);
}
if ("contents".equals(cond)) {
complains.setContents(name);
}
if ("addtime".equals(cond)) {
complains.setAddtime(name);
}
if ("status".equals(cond)) {
complains.setStatus(name);
}
if ("reps".equals(cond)) {
complains.setReps(name);
}
}
List<String> nameList = new ArrayList<String>();
List<String> valueList = new ArrayList<String>();
nameList.add(cond);
valueList.add(name);
PageHelper.getPage(this.complainsService.getComplainsByLike(complains), "complains", nameList, valueList, 10, number, this.getRequest(), "query");
name = null;
cond = null;
return "admin/querycomplains";
}
// 按主键查询数据
@RequestMapping("getComplainsById.action")
public String getComplainsById(String id) {
Complains complains = this.complainsService.getComplainsById(id);
this.getRequest().setAttribute("complains", complains);
List<Users> usersList = this.usersService.getAllUsers();
this.getRequest().setAttribute("usersList", usersList);
return "admin/editcomplains";
}
}
package com.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.entity.Rebbs;
import com.service.RebbsService;
import com.entity.Users;
import com.entity.Bbs;
import com.service.UsersService;
import com.service.BbsService;
import com.util.PageHelper;
//定义为控制器
@Controller
// 设置路径
@RequestMapping(value = "/rebbs" , produces = "text/plain;charset=utf-8")
public class RebbsController extends BaseController {
// 注入Service 由于标签的存在 所以不需要getter setter
@Autowired
private RebbsService rebbsService;
@Autowired
private UsersService usersService;
@Autowired
private BbsService bbsService;
// 准备添加数据
@RequestMapping("createRebbs.action")
public String createRebbs() {
List<Users> usersList = this.usersService.getAllUsers();
this.getRequest().setAttribute("usersList", usersList);
List<Bbs> bbsList = this.bbsService.getAllBbs();
this.getRequest().setAttribute("bbsList", bbsList);
return "admin/addrebbs";
}
// 添加数据
@RequestMapping("addRebbs.action")
public String addRebbs(Rebbs rebbs) {
this.rebbsService.insertRebbs(rebbs);
return "redirect:/rebbs/createRebbs.action";
}
// 通过主键删除数据
@RequestMapping("deleteRebbs.action")
public String deleteRebbs(String id) {
this.rebbsService.deleteRebbs(id);
return "redirect:/rebbs/getAllRebbs.action";
}
// 批量删除数据
@RequestMapping("deleteRebbsByIds.action")
public String deleteRebbsByIds() {
String[] ids = this.getRequest().getParameterValues("rebbsid");
for (String rebbsid : ids) {
this.rebbsService.deleteRebbs(rebbsid);
}
return "redirect:/rebbs/getAllRebbs.action";
}
// 更新数据
@RequestMapping("updateRebbs.action")
public String updateRebbs(Rebbs rebbs) {
this.rebbsService.updateRebbs(rebbs);
return "redirect:/rebbs/getAllRebbs.action";
}
// 显示全部数据
@RequestMapping("getAllRebbs.action")
public String getAllRebbs(String number) {
List<Rebbs> rebbsList = this.rebbsService.getAllRebbs();
PageHelper.getPage(rebbsList, "rebbs", null, null, 10, number, this.getRequest(), null);
return "admin/listrebbs";
}
// 按条件查询数据 (模糊查询)
@RequestMapping("queryRebbsByCond.action")
public String queryRebbsByCond(String cond, String name, String number) {
Rebbs rebbs = new Rebbs();
if(cond != null){
if ("usersid".equals(cond)) {
rebbs.setUsersid(name);
}
if ("bbsid".equals(cond)) {
rebbs.setBbsid(name);
}
if ("contents".equals(cond)) {
rebbs.setContents(name);
}
if ("addtime".equals(cond)) {
rebbs.setAddtime(name);
}
}
List<String> nameList = new ArrayList<String>();
List<String> valueList = new ArrayList<String>();
nameList.add(cond);
valueList.add(name);
PageHelper.getPage(this.rebbsService.getRebbsByLike(rebbs), "rebbs", nameList, valueList, 10, number, this.getRequest(), "query");
name = null;
cond = null;
return "admin/queryrebbs";
}
// 按主键查询数据
@RequestMapping("getRebbsById.action")
public String getRebbsById(String id) {
Rebbs rebbs = this.rebbsService.getRebbsById(id);
this.getRequest().setAttribute("rebbs", rebbs);
List<Users> usersList = this.usersService.getAllUsers();
this.getRequest().setAttribute("usersList", usersList);
List<Bbs> bbsList = this.bbsService.getAllBbs();
this.getRequest().setAttribute("bbsList", bbsList);
return "admin/editrebbs";
}
}