sports_shop

274 阅读7分钟

sports_shop

这是 一个 专卖运动类商品 的商城系统

(本文侧重于介绍该系统的前端设计,与数据库表设计)

如何运行:

基础环境要求:

  • 安装Node.js 建议和我的版本一致:v16.15.0
  • 安装vue-cli

具体环境搭建

运行方式

1、源码下载

照着图片提示下载,完成后找个地方解压源码 image.png

2、Project setup

安装完上面要求的环境,切换到 项目源码根目录 ,打开 命令行 ,并执行下面的这行代码

 npm install

3、以下二选一,即可运行项目

想要预览项目效果,或者进行热编译代码,可以执行以下的命令

 npm run serve

也可以执行如下命令,使用图形化界面打开

 vue ui

步骤如下

image.png

4、这步可选,用来打包代码

 npm run build

Customize configuration

See Configuration Reference.

简介

运动商城系统就是网上销售系统,该系统可供两类用户使用。

其中用户主要功能包括:查看所有商品、查看指定商品详细信息、添加商品到购物车、结算购买商品、查看订单···等功能。 如下图:

image.png

管理员拥有上架和下架商品功能。 管理员的功能无非增删改查,这里忙着复习其他科目期末考,暂时没做。

为什么做这个

打算写一个信息管理系统,

思前想后,还是商城系统好做,例子🌰也多:

大到淘宝天猫,小到宿舍楼机智校友卖泡面卖零食的小卖部微信小程序。

仿佛万物皆可电商

当然,为了使项目更加好写,这里简单的参考了一下蜜雪冰城微信小程序,和尚硅谷书城项目。

制作流程

我并没有做太多需求分析,思考用例、活动图、流程图、状态图类、数据库·····那些东西。

在项目开始时凭直觉快速开发 一个简单可交互的前端界面原型,

然后在这个原型基础上,根据页面需要的数据反过来思考数据库的设计

(图方便,数据库并没有进行范式分解,也没有外键联系)

数据库大概设计好后,再来分析每个页面需要的数据,约定好前后端的交互(草稿了一份api接口文档)

之后就是不断调整细节,修改改动,前后端不断相辅相成

一些记录(都已过时,不必看)以API接口文档为准

2022.11.25记录

  • 完成了登录注册界面,和主体内容界面
  • 完成了左侧导航栏的路由跳转
  • 完成了商品展示页面的功能

图片展示:

image.png

image.png

2022.11.26记录

  • 完善了商品展示页的界面与功能
  • 完成了购物车的界面与功能

图片展示:

image.png

image.png

image.png

2022.11.27记录

  • 完成了订单页的界面与功能
  • 完成了个人中心的界面与功能

image.png

image.png

2022.11.28记录

  • 分析了前端界面所需的数据
  • 完成了后端数据库的设计,并将MySQL的库与表结构搭建完成

这里我把导出来的sql文件也放在了源码根目录下 image.png

2022.12.14记录

  • 因繁忙缘故,文档断更了。
  • 今日前后端主要功能都已完成
  • 项目几乎被重构了一遍,不仅是后台接口有修改和新加,就连前端界面改了一些功能

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

数据分析

前端界面所需数据分析

登录界面:

 user: {
   username:'admin',
   password:'123456',
   remenber: true // 记住账户功能
 }

注册界面:

 user: {
   username:'admin',
   password:'123456'
 }

商品展示界面:

基本商品展示:

 goods : [
       {
           goods_picture: require('../assets/mypic/goodsPic.jpg'),
           goods_title:'新宝岛1',
           goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏',
           goods_price:1999,
           goods_id: 1
       },
       {
           goods_picture: require('../assets/mypic/goodsPic.jpg'),
           goods_title:'新宝岛2',
           goods_descrip: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏',
           goods_price:1999,
           goods_id: 2
       }
 ]
 // 思路:直接查询所有商品数据,封装成json 响应给前端

商品详情须有 评论数据:

 comment: [
      {
          goods_id: 1,
          user_id: 1,
          username: 'admin'
          syas: '裹上面包糠,隔壁小孩馋哭了'
      },
 ]
 // 思路:利用goods_id查询相关评论

购物车界面:

基本的购物车数据

 shopping_cart : [
       {
           goods_picture: require('../assets/mypic/goodsPic.jpg'),
           goods_title:'新宝岛1',
           goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏',
           goods_price:1999,
           goods_id: 1,
           order_num: 1,// 商品购买总数
           order_pay: 1999,// 此类商品购买花费
           user_id: 1,
           username: 'admin'
       },
       {
           goods_picture: require('../assets/mypic/goodsPic.jpg'),
           goods_title:'新宝岛1',
           goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏',
           goods_price:1999,
           goods_id: 1,
           order_num: 1,// 商品购买总数
           order_pay: 1999,// 此类商品购买花费
           user_id: 1,
           username: 'admin'
       }
 ]

还需要有用户数据:

user: {
  username:'admin',
  wallet: 99999,
}

还有商品总价:

  totalpay:1999
  // 从购物车对象数组的order_pay累加获得,用于最后扣钱

订单界面:

在购物车结算商品后,一个个购物车数组的对象元素,生成一个个订单数据

  orders : [
        {
            order_id: 1,// 订单编号
            goods_picture: require('../assets/mypic/goodsPic.jpg'),
            goods_title:'新宝岛1',
            goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏',
            goods_price:1999,
            goods_id: 1,
            order_num: 1,// 商品购买总数
            order_pay: 1999,// 此类商品购买花费
            user_id: 1,
            username: 'admin'
        },
        {
            order_id: 1,// 订单编号
            goods_picture: require('../assets/mypic/goodsPic.jpg'),
            goods_title:'新宝岛1',
            goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏',
            goods_price:1999,
            goods_id: 1,
            order_num: 1,// 商品购买总数
            order_pay: 1999,// 此类商品购买花费
            user_id: 1,
            username: 'admin'
        }
  ]

个人中心界面:

user: {
  username:'admin',
  level: 1, // 账户等级
  grade: svip, // 权益
  wallet: 99999,
  state_massage: '这个人很懒,什么都没有留下'
}

升华前端数据,归纳成表:

这里我其实已经把数据库结构写好了,导出来的sql文件也放在了根目录下

user表

user: {
  user_id:1,
  username:'admin',
  password:'123456',
  level: 1, // 账户等级
  grade: svip, // 权益
  type: 'root'
  wallet: 99999,
  user_picture: "绝对路径/assets/userimg/goodsPic.jpg"
  state_massage: '这个人很懒,什么都没有留下'
}

商品表

  goods : [
        {
          goods_id: 1,
          goods_name:'新宝岛1',
          goods_price:1999,
          goods_picture: '绝对路径/assets/goodsimg/goodsPic.jpg',
          goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏'
        },
        {
          goods_id: 1,
          goods_name:'新宝岛1',
          goods_price:1999,
          goods_picture: '绝对路径/assets/goodsimg/goodsPic.jpg',
          goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏'
        }
  ]

商品评论表:

 comment: [
      {
        says_id: 1, //自动递增
        says_time: '2022-11-28',
        syas: '裹上面包糠,隔壁小孩馋哭了',

        goods_id: 1,

        user_id: 1,
        username: 'admin'
      },
      {
        says_id: 1, //自动递增
        says_time: '2022-11-28',
        syas: '裹上面包糠,隔壁小孩馋哭了',

        goods_id: 1,

        user_id: 1,
        username: 'admin'
      }
 ]
 // 思路:利用goods_id查询相关评论

购物车表

 shopping_cart : [
       {
         shopping_cart_id:1, // 自动递增
         shopping_count: 1,// 商品购买总数
         shopping_amount: 1999,// 此类商品购买花费

         goods_id: 1,
         goods_name:'新宝岛1',
         goods_price:1999,
         goods_picture: require('../assets/mypic/goodsPic.jpg'),
         goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏',

         user_id: 1,
         username: 'admin'
       },
       {
         shopping_cart_id:1, // 自动递增
         shopping_count: 1,// 商品购买总数
         shopping_amount: 1999,// 此类商品购买花费

         goods_id: 1,
         goods_name:'新宝岛1',
         goods_price:1999,
         goods_picture: require('../assets/mypic/goodsPic.jpg'),
         goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏',

         user_id: 1,
         username: 'admin'
       }
 ]

订单表:

  orders : [
        {
          order_id: 1,// 订单编号
          order_time: '2022-11-28',
          order_count: 1,// 商品购买总数
          order_amount: 1999,// 此类商品购买花费

          user_id: 1,
          username: 'admin',

          goods_id: 1,
          goods_name:'新宝岛1',
          goods_price:1999,
          goods_picture: require('../assets/mypic/goodsPic.jpg'),
          goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏'
        },
        {
          order_id: 1,// 订单编号
          order_time: '2022-11-28',
          order_count: 1,// 商品购买总数
          order_amount: 1999,// 此类商品购买花费

          user_id: 1,
          username: 'admin',

          goods_id: 1,
          goods_name:'新宝岛1',
          goods_price:1999,
          goods_picture: require('../assets/mypic/goodsPic.jpg'),
          goods_describe: '天玑8100 | 真旗舰芯 | 三星OLED 护眼屏'
        }
  ]