IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Web项目实战 | 购物系统v2.0 | 开发记录(一) | 需求分析 | 技术选型 | 系统设计 | 数据表设计 | SpringBoot、SSM、Thymeleaf、Bootstrap... -> 正文阅读

[大数据]Web项目实战 | 购物系统v2.0 | 开发记录(一) | 需求分析 | 技术选型 | 系统设计 | 数据表设计 | SpringBoot、SSM、Thymeleaf、Bootstrap...

超市购物系统 v2.0 开发记录(一)


一、需求分析


在全国各地,最离不开人们生活的就是超市,因为超市里的商品种类繁多,有食品、日用品、饮料、蔬菜、水果等,而且每家超时每天都有流水账单,相比于传统的小卖部,超市一般都有一套完善的记账系统,用于统计营业以来的收入与支出。但是,仍有许多小卖部,小型超市仍然采用传统的手写记账的方式,不仅容易出错,而且还容易丢失记录,现可开发一套供这些商家使用的订单后台管理系统,使得只需要在网页上进行简单的操作就能对所有的商品进行统一的管理。
在这里插入图片描述

二、技术选型


目前可采用主流的 SpringBoot + Sping +SpringMVC + MyBatis + MySQL 的技术栈来进行后台的基础搭建,同时使用SpringBoot支持的Thymeleaf模板引擎进行可视化网页的渲染,加上框架 Bootstrap美化页面的排版。由于系统分为普通用户、管理员不同的角色,故可使用 Shiro 框架进行系统认证和授权采用,实现不同角色有不同的访问权限。最后可使用 Echarts.js 插件制作统计图,用于分析周期内的营业情况。

综上,技术栈为 SpringBoot + Thymeleaf + Bootstrap + SSM + MySQL + Shiro + Echarts

回顾版本1.0的技术栈:前端JSP + Servlet + Bootstrap5 + JQuery + Echarts | 后端 MVC架构 + JDBC

三、系统设计


系统中包含管理员和经理、普通用户三个角色,其中管理员和经理可以进入系统里后台,他们属于超市的工作人员。

在这里插入图片描述

3.1 管理员功能模块设计

在这里插入图片描述

3.2 经理功能模块设计

在这里插入图片描述

3.3 用户功能模块设计

在这里插入图片描述

3.4 游客功能模块设计

在这里插入图片描述

3.5 系统流程图

在这里插入图片描述

四、数据表设计


工具:Navicat 11.2.7
在这里插入图片描述

4.1 用户角色表

DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
  `id` int NOT NULL AUTO_INCREMENT,
  `roleName` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

4.2 用户表

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `userCode` varchar(255) NOT NULL COMMENT '用户编码',
  `userName` varchar(255) NOT NULL COMMENT '用户名称',
  `userPassword` varchar(255) NOT NULL COMMENT '用户密码(带密文)',
  `gender` int DEFAULT NULL COMMENT '性别(1: 女, 2:男)',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `phone` varchar(255) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL COMMENT '地址',
  `createBy` bigint DEFAULT NULL,
  `createionDate` date DEFAULT NULL COMMENT '创建时间',
  `modifyBy` bigint DEFAULT NULL COMMENT '更新者',
  `modifyDate` date DEFAULT NULL COMMENT '更新时间',
  `pwd` varchar(255) NOT NULL COMMENT '用户密码(明文)',
  `salt` varchar(255) DEFAULT NULL COMMENT '盐',
  `userRole` int DEFAULT NULL COMMENT '用户角色',
  PRIMARY KEY (`id`),
  KEY `userRole` (`userRole`),
  KEY `createBy` (`createBy`),
  KEY `modifyBy` (`modifyBy`),
  CONSTRAINT `user_ibfk_1` FOREIGN KEY (`userRole`) REFERENCES `role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `user_ibfk_2` FOREIGN KEY (`createBy`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `user_ibfk_3` FOREIGN KEY (`modifyBy`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

4.3 供应商表

DROP TABLE IF EXISTS `provider`;
CREATE TABLE `provider` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `proCode` varchar(255) DEFAULT NULL COMMENT '供应商编码',
  `proName` varchar(255) DEFAULT NULL COMMENT '供应商名称',
  `proDesc` varchar(1024) DEFAULT NULL COMMENT '供应商详细描述',
  `proContact` varchar(255) DEFAULT NULL COMMENT '供应商联系人',
  `proPhone` varchar(255) DEFAULT NULL COMMENT '联系电话',
  `proAddress` varchar(255) DEFAULT NULL COMMENT '地址',
  `createdBy` bigint DEFAULT NULL COMMENT '创建者',
  `creationDate` date DEFAULT NULL COMMENT '创建时间',
  `modifyBy` bigint DEFAULT NULL COMMENT '更新者',
  `modifyDate` date DEFAULT NULL COMMENT '更新时间',
  `proFax` varchar(255) DEFAULT NULL COMMENT '传真',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

4.4 商品类型表

DROP TABLE IF EXISTS `commoditytype`;
CREATE TABLE `commoditytype` (
  `id` int NOT NULL AUTO_INCREMENT,
  `comTypeName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '商品类型的名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

4.5 商品表

DROP TABLE IF EXISTS `commodity`;
CREATE TABLE `commodity` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `comName` varchar(255) DEFAULT NULL COMMENT '货物名称',
  `comStock` bigint DEFAULT NULL COMMENT '库存',
  `createBy` bigint DEFAULT NULL COMMENT '创造人',
  `createDate` date DEFAULT NULL COMMENT '创建日期',
  `modifyBy` bigint DEFAULT NULL,
  `modifyDate` date DEFAULT NULL COMMENT '修改日期',
  `providerId` bigint DEFAULT NULL COMMENT '供应商ID',
  `comPrice` float(10,2) DEFAULT NULL COMMENT '价格',
  `comImgSrc` varchar(512) DEFAULT NULL COMMENT '图片路径',
  `comDesc` varchar(1024) DEFAULT NULL COMMENT '描述',
  `comType` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `createBy` (`createBy`),
  KEY `modifyBy` (`modifyBy`),
  KEY `providerId` (`providerId`),
  KEY `commodity_ibfk_4` (`comType`),
  CONSTRAINT `commodity_ibfk_1` FOREIGN KEY (`createBy`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `commodity_ibfk_2` FOREIGN KEY (`modifyBy`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `commodity_ibfk_3` FOREIGN KEY (`providerId`) REFERENCES `provider` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `commodity_ibfk_4` FOREIGN KEY (`comType`) REFERENCES `commoditytype` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

4.6 订单表

CREATE TABLE `order` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `billCode` varchar(255) DEFAULT NULL COMMENT '账单编码',
  `productName` varchar(255) DEFAULT NULL COMMENT '商品名称',
  `productDesc` varchar(255) DEFAULT NULL COMMENT '商品描述',
  `productUnit` varchar(255) DEFAULT NULL COMMENT '商品单位',
  `productCount` decimal(10,0) DEFAULT NULL COMMENT '商品数量',
  `isPayment` int DEFAULT NULL COMMENT '是否支付(1:未支付 2:已支付)',
  `createdBy` bigint DEFAULT NULL COMMENT '创建者',
  `creationDate` date DEFAULT NULL COMMENT '创建时间',
  `modifyBy` bigint DEFAULT NULL COMMENT '更新者',
  `modifyDate` date DEFAULT NULL COMMENT '更新时间',
  `totalPrice` decimal(10,2) DEFAULT NULL COMMENT '商品总额',
  `providerId` bigint DEFAULT NULL COMMENT '供应商ID',
  PRIMARY KEY (`id`),
  KEY `providerId` (`providerId`),
  CONSTRAINT `order_ibfk_1` FOREIGN KEY (`providerId`) REFERENCES `provider` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

五、总结


相比于版本v1.0 ,Web项目实战 | 商城系统v1.0 | 前端JSP + Servlet + Bootstrap5 + JQuery + Echarts | 后端 MVC架构 + JDBC + Druid数据池,本次版本用了全新的技术栈,技术选型是根据学校课程教的,笔者打算按学校要求的来,先花时间实现基本要求以后再进行优化,数据表的设计相较于真正的电商平台还有很大的差距,目前来说只能满足基本的业务需求,希望将来有机会将这个项目上线。

笔者时常思考身为大数据专业学生是否该花时间学习JavaWeb,即JavaEE,按学校的培训计划来,主要的方向还是大数据开发,Hadoop、Flume、Zookeeper、Spark、Flink这样的技术栈,同时也能运用机器学习课程教的算法去训练模型,预测数据,进行数据分析。

但笔者认为自身的分析能力比较差,以后还是希望走偏Java的路线,即大数据平台开发之类的,所以学好JavaEE还是有必要的,以后在对数据做报表分析的时候得用到Web的知识。Java的发展路线首先是JavaSE、JavaEE、之后会有分布式、微服务相关的内容,其中的分布式则和大数据是相同的,到时候使用Redis数据库做缓存,用Ngnix实现负载均衡,可以在多个节点上部署同一个web项目的不同模块。

总的来说,路还很长,不过大致方向有了就好很多,这一次的Web项目实战预计周期和第一次一样,7天时间,希望在7天后能有更多收获。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 11:59:11  更:2022-01-28 12:00:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:33:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码