首页 > 编程语言 >基于Java网络书店商城设计实现(源码+lw+部署文档+讲解等)

基于Java网络书店商城设计实现(源码+lw+部署文档+讲解等)

时间:2024-05-15 15:07:46浏览次数:9  
标签:Java 列表 lw 源码 user 所示 return 如图 id

系统介绍:

随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于网络书店商城当然也不能排除在外,随着网络技术的不断成熟,带动了网络书店商城,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的平台特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对网络书店商城而言非常有利。

本系统采用的数据库是Mysql,使用JAVA技术开发,运行环境使用Tomcat服务器,ECLIPSE
是本系统的开发平台。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。

程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。

![](https://img-
blog.csdnimg.cn/img_convert/1dfcc009b5a244db475aa2b44d2f29b0.png)​

程序操作流程图

功能截图:

5.1用户功能模块

用户点击进入到系统操作界面,可以对主页、个人中心、我的收藏管理、订单管理等功能模块,我的收藏管理:通过列表可以获取用户ID、收藏ID、表名、收藏名称、收藏图片信息并进行修改操作,如图5-1所示。

图5-1我的收藏管理界面图

已支付订单列表:通过列表可以获取订单id、用户id、商品id、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等信息,进行查看操作,如图5-2所示。

图5-2已支付订单列表界面图

已退款订单列表:通过列表可以获取订单id、用户id、商品id、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等信息,进行查看、删除操作,如图5-3所示。

图5-3已退款订单列表界面图

已发货订单列表:通过列表可以获取订单id、用户id、商品id、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等信息,进行查看操作,如图5-4所示。

图5-4已发货订单列表界面图

已完成订单列表:通过列表可以获取订单id、用户id、商品id、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等信息,进行查看、删除操作,如图5-5所示。

图5-5已完成订单列表界面图

5.2管理员功能模块

管理员通过用户名和密码填写完成后进行登录,如图5-6所示。管理员登录成功后进入到系统操作界面,可以对主页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等功能模块进行相对应操作。

个人中心:通过列表可以获取原密码、新密码、确认密码等内容,可以进行修改或删除操作,如图5-7所示。

图5-6管理员登录页面

图5-7个人中心页面

用户管理:通过列表可以获取用户账号、用户姓名、密码、性别、联系电话、电子邮箱、余额等信息,进行修改或删除操作,如图5-9所示。

图5-9用户管理界面图

商品分类管理:通过列表可以获取商品分类等信息,进行修改或删除操作,如图5-10所示。

图5-10商品分类管理界面图

商品信息管理:管理员通过列表可以获取商品编号、商品名称、商品分类、数量、品牌、规格、封面、价格、详情等信息,进行修改或删除操作,如图5-11所示。

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

轮播图;该页面为轮播图管理界面。管理员可以在此页面进行首页轮播图的管理,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改操作,以及图片的删除操作,如图5-12所示。

图5-12轮播图管理界面图
已完成订单:管理员通过列表可以获取订单id、用户id、商品id、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等信息,进行修改或删除操作,如图5-14所示。

图5-14已完成订单界面图

已支付订单列表:管理员通过列表可以获取订单id、用户id、商品id、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、

状态、地址等信息,进行修改或删除操作,如图5-15所示。

图5-15已支付订单列表界面图

已完成订单列表:管理员通过列表可以获取订单id、用户id、商品id、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、

状态、地址等信息,进行修改或删除操作,如图5-16所示。

图5-16已完成订单列表界面图

5.3前台首页功能模块

网络书店商城,在网络书店商城可以查看商品信息、我的、跳转到后台、购物车等内容,如图5-17所示。

图5-17系统首页界面图

登录、注册,通过注册填写用户账号、用户姓名、密码、联系电话、电子邮箱等信息进行注册操作,如图5-18所示。

图5-18登录、注册界面图

商品信息,在商品信息页面可以查看商品编号、价格、数量、品牌、规格等信息进行立即购买,如图5-19所示。


图5-19商品信息界面图

个人中心,在个人中心页面可以查看用户账号、用户姓名、密码、性别、联系电话、电子邮箱等如图5-20所示。

图5-20个人中心界面图

收货地址添加,在收货地址添加页面可以查看个人中心、我的订单、我的地址、我的收藏等如图5-21所示。

图5-21收货地址添加界面图

确认下单,在确认下单页面可以查看选择收货地址、清单列表等信息进行支付如图5-22所示。

图5-22确认下单界面图

代码实现:

/**
 * 登录相关
 */
@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 role, HttpServletRequest request) {
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            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);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }
    
    /**
     * 注册
     */
    @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("/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){
        Integer id = (Integer)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);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

欢迎大家点赞、收藏、关注、评论

熟悉一切计算机问题,欢迎打扰。

非开源,毕设定制,程序开发,熟悉各种编程语言和开发,满足各种需求。

标签:Java,列表,lw,源码,user,所示,return,如图,id
From: https://www.cnblogs.com/hunter-code/p/18193898

相关文章

  • jwt揭秘(含源码示例和视频)
    jwt揭秘摘自:https://www.cnblogs.com/wupeiqi/p/11854573.html武沛齐博客JSONWebTokens,是一种开发的行业标准RFC7519,用于安全的表示双方之间的声明。目前,jwt广泛应用在系统的用户认证方面,特别是现在前后端分离项目。1.jwt认证流程在项目开发中,一般会按照上图所示......
  • 【java】【集合类】ArrayList扩容机制
    扩容规则1.ArrayList()无参构造扩容2.ArrayList(intinitialCapacity)扩容3.publicArrayList(Collection<?extendsE>c)扩容4.add(Objecto)扩容5.addAll(Collectionc)扩容要注意的是,以下所有代码中用反射方式来更直观地反映ArrayList的扩容特征,但从JDK9由于模......
  • docker启动java容器报错unable to allocate file descriptor table - out of memory
    问题:启动java进程报错{"log":"libraryinitializationfailed-unabletoallocatefiledescriptortable-outofmemory","stream":"stderr","time":"2024-05-15T06:27:14.681052443Z"}原因:LimitNOFILE=infinity......
  • 【源码】蚁群算法TSP问题可视化
    ACO.Visualization项目本项目演示蚁群算法求解旅行商问题的可视化过程,包括路径上的信息素浓度、蚁群的运动过程等。项目相关的代码:https://github.com/anycad/ACO.Visualization注:本项目基于.NET8开发,需要安装VS2022最新版本。运行效果:https://www.bilibili.com/video/BV1Bf42......
  • Java-线程-synchronized
    0.背景文章目录层级较多,参考我这篇文章来进行展开,方便阅读:博客园SimpleMemory主题如何浮动目录显示参考文章:synchronized底层monitor原理synchronized的底层是基于Java的监视器monitor的。在Java中,monitor(监视器)是用来实现线程同步的一种基本机制。它是一个控制结构,内置......
  • 【Elasticsearch】系统已经配置了JAVA_HOME,ElasticSearch源码还是操作gradle失败(JAVA_
    先看下报错内容吧,如下:FAILURE:Buildcompletedwith2failures.1:Taskfailedwithanexception.-----------*Where:Buildfile'/Users/liubolun/IdeaProjects/elasticsearch/benchmarks/build.gradle'line:20*Whatwentwrong:Aproblemoccurredevalu......
  • 【java】【集合类】HashMap之扩容原理
    一、什么是HashMap?HashMap数据结构为数组+链表(JDk1.7),JDK1.8中增加了红黑树,其中:链表的节点存储的是一个Entry对象,每个Entry对象存储四个属性(hash,key,value,next)二、为什么要使用HashMap?对于要求查询次数特别多,查询效率比较高同时插入和删除的次数比较少的情况下,通常会选择Arra......
  • Unrecognized option: --add-opens java.base/java.lang=ALL-UNNAMED
    由于Java中有关反射相关的功能自从JDK9就开始进行了限制,因此如果还想继续在JDK9以及更高的版本中使用反射相关的功能,需要添加JVM启动参数,--add-opensjava.base/java.lang=ALL-UNNAMED。由于现在的项目都是用Docker部署的,所以紧接着在DockerFile中添加了这个JVM启动参数,如下......
  • Java的基础语法
    Java的基础语法1、注释、标识符、关键字Java中的注释有三种,注释并不会被执行,是给人看的。单行注释//注释文字只能够注释一行。多行注释/*多行注释文字*/能够注释一段文字。文档注释/***abcd*aaaa*/和JavaDoc结合使用标识符Java所有的组成部分都需要名字......
  • CPLEX 初识 -- JAVA实现
    CPLEX初识--JAVA实现本文参考《运筹优化常用模型、算法及案例实战》,同时也是笔者用来记录自己所学知识,如有问题欢迎交流讨论~1环境配置&模型建立需要装配jar包及配置VMoptions,如下图所示:-Djava.library.path="/Applications/CPLEX_Studio2211/java"一般使用IloCple......