博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到🔎百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我❤️文末获取源码联系❤️ ⚠️一定要先收藏⚠️
第四章 系统设计与实现
电子商城购物平台小程序的系统项目的概述设计分析,主要内容有购物平台的具体分析,进行数据库的是设计,数据采用mysql数据库,并且对于系统的设计采用比较人性化的操作设计,对于系统出现的错误信息可以及时做出处理及反馈。
基于电子商城购物平台小程序的设计基于现有的安卓手机上运行,可以实现管理员;首页、个人中心、用户管理,商品分类管理、商品信息管理、系统管理、订单管理等功能。方便用户对首页、商品信息、商品资讯、我的等详细的了解及统计分析。根据系统功能需求建立的模块关系图如下图:
图4-1管理员功能模块图
图4-2用户功能模块图
4.2开发流程设计
电子商城购物平台小程序的开发对管理模块和系统使用的数据库进行分析,编写代开发,规划和操作是构建信息管理应用程序的必要三步曲,它决定了系统是否能够真正实现预设功能以及是否可以在成功设计后实施。在开发过程中,每个阶段必须严格按照线性顺序进行开发,并且在相应阶段生成的每个工作都可以通过技术进行验证和检查。确保一个阶段完成后是正确的,不会造成下一阶段拖拽现象,使系统完成设计功能后得到保证。
从电子商城购物平台小程序的成功开发经验来看,上述方法效果最为明显,最大程度地降低了系统开发的复杂性。如图4-3所示。
图4-3开发系统流程图
数据库是信息系统的基础和核心。数据库设计的好坏直接影响到信息系统开发的成败。创建数据库表首先确定实体的属性和实体之间的关系。根据关系创建一个数据表。
4.3.1实体ER图
数据库是整个软件编程中最重要的一个步骤,对于数据库问题主要是判定数据库的数量和结构公式的创建。展示系统使用的是Mysql进行对数据库进行管理,进行保证数据的安全性、稳定性等。
概念模型的设计是为了抽象真实世界的信息,并对信息世界进行建模。它是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。而且Mysql数据库是自我保护能力比较强的数据库,下图主要是对数据库实体的E-R图:
(1) 用户管理E-R图,如图4-4所示:
图4-4 用户管理实体属性图
(2)商品分类管理E-R图如图4-5所示:
图4-5商品分类管理实体图
这些功能可以充分满足电子商城购物平台小程序的需求。此系统功能较为全面如下图系统功能结构如图4-6所示。
图4-6系统功能结构图
我们可以根据数据结构的详细分析要求,我们根据输入和输出数据量的要求进行分析,确定什么表表,结构之间的关系,我们可以验证,调整和完善,查询和浏览过程,可以实现数据库,以使用户对数据和功能有更多要求。
基于系统使用的数据库管理系统的特点,对数据库的概念模型进行了转换和构建。但是,这个系统只需要充分考虑电子商城购物平台小程序的功能,而且组织比较清晰。
表4-1 shangpinfenlei表
列名 | 数据类型 | 长度 | 约束 |
id | int | 11 | NOT NULL |
username | varchar | 50 | default NULL |
shangpinfenlei | varchar | 50 | default NULL |
structure | varchar | 50 | default NULL |
表4-2 shangpinxinxi表
列名 | 数据类型 | 长度 | 约束 |
id | int | 11 | NOT NULL |
addtime | varchar | 50 | default NULL |
shangpinmingcheng | varchar | 50 | default NULL |
shangpinfenlei | varchar | 50 | default NULL |
tupian | varchar | 50 | default NULL |
pinpai | varchar | 50 | default NULL |
guige | varchar | 50 | default NULL |
shangpinxiangqing | varchar | 50 | default NULL |
clicktime | varchar | 50 | default NULL |
表4-3:yonghu表
列名 | 数据类型 | 长度 | 约束 |
id | int | 11 | NOT NULL |
addtime | varchar | 50 | default NULL |
yonghuming | varchar | 50 | default NULL |
mima | varchar | 50 | default NULL |
xingming | varchar | 50 | default NULL |
xingbie | varchar | 50 | default NULL |
touxiang | varchar | 50 | default NULL |
lianxidianhua | varchar | 50 | default NULL |
money | varchar | 50 | default NULL |
第五章 系统实现
5.1用户客户端功能实现
用户注册通过注册窗口,进行在线填写自己的用户名、姓名、性别、头像、联系电话等,信息编辑完成后核对信息无误后进行选择注册,系统核对用户所输入的账号信息是否准确,核对信息准确无误后系统进入到操作界面。如图5-1所示。
图5-1用户注册界面图
用户登录通过账号、密码页面,进入到电子商城购物平台小程序主界面,进入到操作界面,进行相对应操作,如图5-2所示。
图5-2用户登录界面图
用户首页页面可以查看首页、商品信息、商品资讯、我的等信息,进行提交操作,如图5-3所示。
图5-3首页界面图
用户进入商品信息页面可以填写商品名称、商品分类、图片、品牌、规格、价格等信息,进行加入购物车、立即购买或收藏等操作,如图5-4所示。
图5-4商品信息界面图
管理员通过电子商城购物平台小程序进行确认,管理员进入到电子商城购物平台小程序主界面,管理员进入到操作界面,通过登录窗口进行在线填写用户名和密码、角色进行登录,登录成功后进入到系统操作界面进行相应信息的获取,如图5-10所示。
图5-10管理员登录主界面图
管理员进入到界面,通过界面的任务大厅,登录成功后进入到系统可以进行查看首页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等功能模块,点击用户管理进入页面可以查看用户名、姓名、性别、头像、联系电话等信息,进行详情、修改、删除等操作,如图5-11所示。
图5-11用户管理界面图
管理员点击商品分类管理进入页面可以查看商品分类等信息,进行详情、修改、删除操作,如图5-12示。
图5-12商品分类管理界面图
管理员进入商品信息管理界面,通过界面的任务大厅,登录成功后进入到系统可以进行查看商品名称、商品分类、图片、品牌、规格、价格等信息,进行详情、修改、查看评论、删除等操作,如图5-13所示。
图5-13商品信息管理界面图
JAVA后端代码实现
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
源码获取
大家点赞、收藏、关注 ,让更多需要的同学看到
不同开发语言专栏推荐订阅:
👇下方有我的微信名片👇