• SSM+Vue+Element-UI实现网上跳蚤市场


    文末获取源码

    开发语言:Java
    框架:ssm
    JDK版本:JDK1.8
    服务器:tomcat7
    数据库:mysql 5.7/8.0
    数据库工具:Navicat11
    开发软件:eclipse/myeclipse/idea
    Maven包:Maven3.3.9
    浏览器:谷歌浏览器

    前言介绍

    商品交易的需求和管理上的不断提升,商品交易管理的潜力将无限扩大,网上跳蚤市场在业界被广泛关注,本系统对此进行总体分析,将商品交易信息管理的发展提供参考。网上跳蚤市场对商品交易有着明显的带动效应,尤其对当地商品交易的管理帮助更大。

    本系统主要包括管理员和会员两个用户角色;主要包括首页,个人中心,会员管理,商品分类管理,商品信息管理,求购信息管理,留言板管理,系统管理,订单管理等功能的管理系统。

    在该在线网上跳蚤市场中,Eclipse能给用户提供更多的方便,其特点一是方便学习,方便快捷;二是有非常大的信息储存量,主要功能是用在对数据库中查询和编程。其功能有比较灵活的数据应用,只需利用小部分代码就能实现非常强大的功能。因此,利用Eclipse 技术进行系统代码管理是该系统数据库的首选。

    系统分析

    对系统的性能,从(功能、运行、界面、安全)等方面进行,下面我们逐一进行分析。

    1. 系统的功能是否完整进行分析:系统的功能,能对应设计出原始代码和算法,以表格同文字的形式进行详细介绍个人信息保证功能完整。

    2. 系统的运行是否通畅进行分析:系统的每个功能都有编写数据的关系和应对的代码,通过需求分析和可行性分析进行分析和显示系统的物理数据,保证其进行通畅。

    3. 系统的界面设计进行分析:对系统中的软件进行处理与分析的方式是由不同代码来进行的;从而使界面容易操作。

    4. 系统的安全性进行分析:这样才可以每个角色的不同对应的信息也就不同,在登录系统务必使用自己的账号,密码登录,账号与密码错误自然就登录失败了。登录成功可以对自己的信息进行操作,不能对别人的账号的信息进行查看等操作,这样自然保证系统的安全性。

    功能分析

    考虑到实际生活中在商品交易管理方面的需要以及对该系统认真的分析,将系统权限按管理员和会员这两类涉及用户划分。

    (1)管理员功能需求

    管理员登陆后,主要模块包括首页,个人中心,会员管理,商品分类管理,商品信息管理,求购信息管理,留言板管理,系统管理,订单管理等功能。管理员用例图如图 

    (2)会员功能需求

    会员登陆后,主要模块包括首页,个人中心,求购信息管理,留言板管理等功能。会员用例图如图

     

    功能结构 

    为了更好的去理清本系统整体思路,对该系统以结构图的形式表达出来,设计实现该网上跳蚤市场的功能结构图如下所示:

    系统功能实现

    基于HTML5的网上跳蚤市场系统,在系统首页可以查看首页,商品信息,求购信息,留言板,个人中心,后台管理,购物车,在线客服等内容,并进行详细操作;如图

    会员注册

    在会员注册页面通过填写用户账号,密码,确认密码,姓名,年龄,手机等信息进行注册操作,如图

    商品信息

    在商品信息页面可以通过商品名称,商品分类,品牌等内容进行搜索,如图 

     

    个人中心

    在个人中心页面通过填写账号,密码,姓名,年龄,性别,手机,上传图片,余额等内容进行更新信息操作,并根据需要对我的订单,我的地址,我的收藏进行详细操作;如图 

    后台登录模块

    后台登录,管理员和会员进入系统前在登录页面根据要求填写账号,密码和选择角色等信息,点击登录进行登录操作,如图 

    管理员功能

    管理员登陆系统后,可以查看首页,个人中心,会员管理,商品分类管理,商品信息管理,求购信息管理,留言板管理,系统管理,订单管理等功能,还能对每个功能逐一进行相应操作,如图

    会员管理

    在会员管理页面可以索引,账号,姓名,年龄,性别,手机,照片等内容进行详情,修改和删除操作,如图 

    商品分类管理

    在商品分类管理页面可以对索引,商品分类等内容进行详情,修改和删除等操作,如图 

    商品信息管理

    在商品信息管理页面可以对索引,商品编号,商品名称,商品分类,品牌,规格,图片,上架日期,价格,单限,库存等内容进行详情,修改,查看评论和删除等操作,如图 

    求购信息管理

    在求购信息管理页面可以对用索引,标题,商品名称,商品分类,图片,接受价位,需求数量,发布日期,账号,姓名,手机等内容进行详情,修改,查看评论和删除等操作,如图

     

    会员功能

    会员登陆系统,可以查看首页,个人中心,求购信息管理,留言板管理等功能,还能对每个功能逐一进行相应操作,如图

    个人中心

    在个人信息页面通过填写账号,姓名,年龄,性别,手机,照片等内容进行个人信息修改操作,如图 

    求购信息管理

    在求购信息管理页面可以对索引,标题,商品名称,商品分类,图片,接受价位,需求数量,发布日期,账号,姓名,手机等内容进行详情,修改,查看评论和删除等操作,如图 

    系统测试

    系统测试是软件开发过程中最后一步,但也是不可或缺的重要的一步,没有人可以保证一次性编写完成的系统不会出错,而系统测试就是将自己开发的系统成为成品前的最后一步。在测试过程中需要进行严谨细致的测试,要尽可能全面地在不同情况下运行该系统,排除一切出现错误的可能。

    系统测试不仅仅是发现系统潜在的BUG或错误,而更为重要的是为用户提供一个良好的体验和安全可使用的产品服务。而通过发现错误或潜在的问题,将有助于提升产品的竞争力,这也是软件测试的其中的重要目的之一。

    软件测试的方法有好几种,但目前主要采用的是包括以功能为主要测试方向的黑盒测试以及以逻辑为主要测试方向的白盒测试,这是两种不同的测试方法,针对的测试侧重点不同,本课题根据实际需求情况,选择以功能为主要的黑盒测试方法,同时测试是要遵循一定的规则来执行的,一个测试要执行其执行的依据一般是由测试用例来规定的,而测试用例一般是依据需求或说明书来综合制定的,测试在硬件出厂前是十分重要的一个过程,本课题由于时间和精力的关系,选择以实现的功能作为测试要点来进行测试。具体测试过程如下:

    测试用例1及测试过程:

    登录:录入登录信息,账号,密码和权限,然后单击登录进行操作,会出现两种情况:一种情况是登录成功,进入用户相应的功能界面进行下一步操作;另一种情况是提示登录失败,系统会弹出一个对话框要求重新登录操作。

    测试用例2及测试过程:

    管理员登录:录入登录信息,管理员账号,密码和权限,然后单击登录进行操作,会出现两种情况:登录成功进入管理员具有权限的功能界面和提示登录失败。一种情况是登录成功,进入管理员界面进行下一步操作;另一种情况是提示登录失败,系统会弹出一个对话框要求重新登录操作。

    部分核心代码

    1. /**
    2. * 购物车表
    3. * 后端接口
    4. * @author
    5. * @email
    6. * @date 2022-03-15 17:47:31
    7. */
    8. @RestController
    9. @RequestMapping("/cart")
    10. public class CartController {
    11. @Autowired
    12. private CartService cartService;
    13. /**
    14. * 后端列表
    15. */
    16. @RequestMapping("/page")
    17. public R page(@RequestParam Map params,CartEntity cart,
    18. HttpServletRequest request){
    19. if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    20. cart.setUserid((Long)request.getSession().getAttribute("userId"));
    21. }
    22. EntityWrapper ew = new EntityWrapper();
    23. PageUtils page = cartService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cart), params), params));
    24. return R.ok().put("data", page);
    25. }
    26. /**
    27. * 前端列表
    28. */
    29. @IgnoreAuth
    30. @RequestMapping("/list")
    31. public R list(@RequestParam Map params,CartEntity cart,
    32. HttpServletRequest request){
    33. EntityWrapper ew = new EntityWrapper();
    34. PageUtils page = cartService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cart), params), params));
    35. return R.ok().put("data", page);
    36. }
    37. /**
    38. * 列表
    39. */
    40. @RequestMapping("/lists")
    41. public R list( CartEntity cart){
    42. EntityWrapper ew = new EntityWrapper();
    43. ew.allEq(MPUtil.allEQMapPre( cart, "cart"));
    44. return R.ok().put("data", cartService.selectListView(ew));
    45. }
    46. /**
    47. * 查询
    48. */
    49. @RequestMapping("/query")
    50. public R query(CartEntity cart){
    51. EntityWrapper< CartEntity> ew = new EntityWrapper< CartEntity>();
    52. ew.allEq(MPUtil.allEQMapPre( cart, "cart"));
    53. CartView cartView = cartService.selectView(ew);
    54. return R.ok("查询购物车表成功").put("data", cartView);
    55. }
    56. /**
    57. * 后端详情
    58. */
    59. @RequestMapping("/info/{id}")
    60. public R info(@PathVariable("id") Long id){
    61. CartEntity cart = cartService.selectById(id);
    62. return R.ok().put("data", cart);
    63. }
    64. /**
    65. * 前端详情
    66. */
    67. @IgnoreAuth
    68. @RequestMapping("/detail/{id}")
    69. public R detail(@PathVariable("id") Long id){
    70. CartEntity cart = cartService.selectById(id);
    71. return R.ok().put("data", cart);
    72. }
    73. /**
    74. * 后端保存
    75. */
    76. @RequestMapping("/save")
    77. public R save(@RequestBody CartEntity cart, HttpServletRequest request){
    78. cart.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    79. //ValidatorUtils.validateEntity(cart);
    80. cart.setUserid((Long)request.getSession().getAttribute("userId"));
    81. cartService.insert(cart);
    82. return R.ok();
    83. }
    84. /**
    85. * 前端保存
    86. */
    87. @RequestMapping("/add")
    88. public R add(@RequestBody CartEntity cart, HttpServletRequest request){
    89. cart.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    90. //ValidatorUtils.validateEntity(cart);
    91. cartService.insert(cart);
    92. return R.ok();
    93. }
    94. /**
    95. * 修改
    96. */
    97. @RequestMapping("/update")
    98. public R update(@RequestBody CartEntity cart, HttpServletRequest request){
    99. //ValidatorUtils.validateEntity(cart);
    100. cartService.updateById(cart);//全部更新
    101. return R.ok();
    102. }
    103. /**
    104. * 删除
    105. */
    106. @RequestMapping("/delete")
    107. public R delete(@RequestBody Long[] ids){
    108. cartService.deleteBatchIds(Arrays.asList(ids));
    109. return R.ok();
    110. }
    111. /**
    112. * 提醒接口
    113. */
    114. @RequestMapping("/remind/{columnName}/{type}")
    115. public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
    116. @PathVariable("type") String type,@RequestParam Map map) {
    117. map.put("column", columnName);
    118. map.put("type", type);
    119. if(type.equals("2")) {
    120. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    121. Calendar c = Calendar.getInstance();
    122. Date remindStartDate = null;
    123. Date remindEndDate = null;
    124. if(map.get("remindstart")!=null) {
    125. Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
    126. c.setTime(new Date());
    127. c.add(Calendar.DAY_OF_MONTH,remindStart);
    128. remindStartDate = c.getTime();
    129. map.put("remindstart", sdf.format(remindStartDate));
    130. }
    131. if(map.get("remindend")!=null) {
    132. Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
    133. c.setTime(new Date());
    134. c.add(Calendar.DAY_OF_MONTH,remindEnd);
    135. remindEndDate = c.getTime();
    136. map.put("remindend", sdf.format(remindEndDate));
    137. }
    138. }
    139. Wrapper wrapper = new EntityWrapper();
    140. if(map.get("remindstart")!=null) {
    141. wrapper.ge(columnName, map.get("remindstart"));
    142. }
    143. if(map.get("remindend")!=null) {
    144. wrapper.le(columnName, map.get("remindend"));
    145. }
    146. if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    147. wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
    148. }
    149. int count = cartService.selectCount(wrapper);
    150. return R.ok().put("count", count);
    151. }
    152. }

  • 相关阅读:
    最新JMeter面试题,紧扣面试实际要求,看完拿下20K
    电脑重装系统后Word文档如何横向排版
    简单易用的操作界面,让你轻松制作电子期刊
    怎样理解Redis中的AOF重写?
    docker安装MySQL 5.7
    近期调研和使用 zeromq 与 cppzmq 的一些问题
    pytorch快速入门
    IP地址相关
    存储优化知识复习三详细版解析
    linux下抽取pdf的单双页命令
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/126465324