文章目录

  • 1 总体设计
    • 1.1 需求规定
    • 1.2 运行环境
    • 1.3功能需求与程序的关系
    • 1.4人工处理过程
    • 1.5 接口设计
      • 1.5.1 用户接口
      • 1.5.2 外部接口
      • 1.5.3 内部接口
    • 1.6 运行设计
      • 1.6.1运行模块组合
      • 1.6.2 运行控制
    • 1.7 系统数据结构设计
      • 1.7.1 逻辑结构设计
  • 2 详细设计
    • 2.1 前台管理员登录注册设计
    • 2.2 前台商品列表设计
    • 2.3 后台商品功能模块设计
      • 2.3.1 新增商品功能设计
    • #2.3.2 删除商品功能设计
        • 2.3.2.1 单个删除
        • 2.3.2.2 批量删除
      • 2.3.3 修改商品功能设计
      • 2.3.4 查找商品功能设计
        • 2.3.4.1 查找全部
    • 2.4 后台管理员功能模块设计
      • 2.4.1 新增管理员功能设计
      • 2.4.2 管理员登录功能设计

1 总体设计

1.1 需求规定

主要输入输出项目:
商品信息表tb_product:(商品id,商品编号,商品名,类型,生产日期,保质期,单位,库存)。

1.2 运行环境

硬件环境:
推荐配置:CPU:Intel i7-9750H,内存:512M以上,硬盘:100GB以上空间。
软件环境:
Windows 10家庭版
Google Chrome
Apache-Maven-3.8.4
Apache-Aomcat-8.5.77
IntelliJ IDEA 2021.2 1.1.3

基本设计概念和处理:

1.3功能需求与程序的关系

各项功能需求的实现同各块程序的分配关系:

1.4人工处理过程

商品名、编号、保质期、生产日期等信息需要人工录入。

1.5 接口设计

1.5.1 用户接口

1.5.2 外部接口

1.5.3 内部接口

1.6 运行设计

1.6.1运行模块组合

施加不同的外界运行控制时所引起的各种不同的运行模块组合如下表所示:

1.6.2 运行控制

1.7 系统数据结构设计

1.7.1 逻辑结构设计



2 详细设计

2.1 前台管理员登录注册设计

用户点击登录后随即跳转到登录界面,用户输入账号和密码,密码采用password为不可见形式,保护了用户的账号安全,点击登录提交表单后,页面会将数据送到数据库验证此记录是否存在于tb_user表中,如果存在且输入的密码与数据库记录的一致则登录成功。如果没有账号,则点击注册按钮,依次输入昵称、账号、密码,提交,tb_user表中相应增加新注册的用户记录。
关键代码如下:

 login() {var _this = this;// 发送ajax请求,添加数据axios({method: "post",url: "http://localhost:8080/brand-case/user/select",data:_this.user}).then(function (resp) {if (resp.data == "success") {//登录成功//关闭窗口_this.dialogFormVisible = false;document.location.href="product.html";}else {_this.$message({message: '密码或账号错误',type: 'error'});}})
},

2.2 前台商品列表设计

使用axois向后端服务器发送http请求api接口,返回的json数据用定义的商品模型product {number: ‘’,tradeName: ‘’,typeName:‘’,type:‘’,date: ‘’,id: “”,quality: “”,stock: “”,unit:“”}接收,用第三方控件Element-UI中的列表进行数据的展示,并用v-model双向绑定到列表数据tableData上,实现实时的数据展示。
关键代码如下:

// 查询数据
selectAll(){var _this = this;axios({method:"get",url:"http://localhost:8080/brand-case/product/selectAll"}).then(function (resp) {_this.tableData = resp.data;})
},

2.3 后台商品功能模块设计

后台商品功能模块通过BaseServlet解析前台发送来的http请求分发路径,BaseServlet继承HttpServlet,并替换HttpServlet根据请求的最后一段路径来进行方法分发,降低系统耦合度。最后将整个系统部署到Tomcat上运行。

2.3.1 新增商品功能设计

后台ProductServlet继承BaseServlet,接收前台发送的post请求并进行处理,首先将前台发送的json数据转换成Product对象,其次用product对象作为参数调用service层productService的添加数据方法。ProductService是一个接口对象,其实现类为ProductServiceImpl对象,在ProductServiceImpl使用SqlSessionFactory 工厂对象获得一个sqlSession,通过sqlSession调用MyBatis中的mapper对象的添加方法,使用其中的方法将product对象持久化,并前台响应成功的标识。
关键代码如下:

public void add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {//1. 接收商品数据BufferedReader br = request.getReader();String params = br.readLine();//json字符串//ProductProduct product = JSON.parseObject(params, Product.class);//2. 调用service添加productService.add(product);//3. 响应成功的标识response.getWriter().write("success");
}

#2.3.2 删除商品功能设计

2.3.2.1 单个删除

后台ProductServlet继承BaseServlet,接收前台发送的get请求并进行处理,将前台发送的id作为参数调用service层productService的删除数据方法。ProductService是一个接口对象,其实现类为ProductServiceImpl对象,在ProductServiceImpl使用SqlSessionFactory 工厂对象获得一个sqlSession,通过sqlSession调用MyBatis中的mapper对象中的删除方法,将数据库中的数据成功删除,并向前台响应成功标识。
关键代码如下:

//1. 接收数据
String id = request.getParameter("id");
//2. 调用service删除
productService.delete(Integer.parseInt(id));
//3. 响应成功的标识
response.getWriter().write("success");

2.3.2.2 批量删除

后台ProductServlet继承BaseServlet,接收前台发送的post请求并进行处理,将前台发送的ids数组作为参数调用service层productService的批量删除数据方法。ProductService是一个接口对象,其实现类为ProductServiceImpl对象,在ProductServiceImpl使用SqlSessionFactory 工厂对象获得一个sqlSession,通过sqlSession调用MyBatis中的mapper对象中的批量删除方法,将数据库中的数据成功删除,并向前台响应成功标识。
关键代码如下:

//1. 接收数据  [1,2,3]
BufferedReader br = request.getReader();
String params = br.readLine();//json字符串
//转为 int[]
int[] ids = JSON.parseObject(params, int[].class);
//2. 调用service添加
productService.deleteByIds(ids);
//3. 响应成功的标识
response.getWriter().write("success");

2.3.3 修改商品功能设计

后台ProductServlet继承BaseServlet,接收前台发送的post请求并进行处理,将前台发送的json字符串转成product对象作为参数调用service层productService的修改数据方法。ProductService是一个接口对象,其实现类为ProductServiceImpl对象,在ProductServiceImpl使用SqlSessionFactory 工厂对象获得一个sqlSession,通过sqlSession调用MyBatis中的mapper对象中的修改数据方法,将数据库中的数据成功删除,并向前台响应成功标识。
关键代码如下:

//1. 接收品牌数据
BufferedReader br = request.getReader();
String params = br.readLine();//json字符串
///转为Product对象
Product product = JSON.parseObject(params, Product.class);
//2. 调用service修改
productService.update(product);
//3. 响应成功的标识
response.getWriter().write("success");

2.3.4 查找商品功能设计

2.3.4.1 查找全部

后台ProductServlet继承BaseServlet,接收前台发送的get请求并进行处理,调用service层productService的查询数据方法。ProductService是一个接口对象,其实现类为ProductServiceImpl对象,在ProductServiceImpl使用SqlSessionFactory 工厂对象获得一个sqlSession,通过sqlSession调用MyBatis中的mapper对象中的查询方法,同时需要调用TyprService的按照商品分类id查询商品分类名的方法查询到对应的商品名字,写入将成功查询到的product对象中,再将数据转成json字符串发送到前台进行展示。
关键代码如下:

//1. 调用service查询
List<Product> products = productService.selectAll();
for (int i = 0; i < products.size(); i++) {String typename = productService.selectTypeAndDate(products.get(i).getType());products.get(i).setTypeName(typename);
}
//2. 转为JSON
String jsonString = JSON.toJSONString(products);
//3. 写数据
response.setContentType("text/json;charset=utf-8");
response.getWriter().write(jsonString);

2.3.4.2 模糊搜索
后台ProductServlet继承BaseServlet,接收前台发送的post请求并进行处理,将返回的json字符串转化成product对象,使用product中的tradeName商品名属性作为参数,调用service层productService的查询数据方法,在模糊查询中需要将商品名字的字符串进行处理,例如,“糖”需要变成“%糖%”才能实现模糊查询。ProductService是一个接口对象,其实现类为ProductServiceImpl对象,在ProductServiceImpl使用SqlSessionFactory 工厂对象获得一个sqlSession,通过sqlSession调用MyBatis中的mapper对象中的查询方法,同时需要调用TyprService的按照商品分类id查询商品分类名的方法查询到对应的商品名字,写入将成功查询到的product对象中,再将数据转成json字符串发送到前台进行展示。
关键代码如下:

// 获取查询条件对象
BufferedReader br = request.getReader();
String params = br.readLine();//json字符串
//转为 Product
Product product = JSON.parseObject(params, Product.class);
//2. 调用service查询
List<Product> products = productService.selectAndCondition(product);
//写入商品类名
for (int i = 0; i < products.size(); i++) {String typename = productService.selectTypeAndDate(products.get(i).getType());products.get(i).setTypeName(typename);
}
if (products.size() == 0){ //找不到商品response.getWriter().write("null");
}else {//转为JSONString jsonString = JSON.toJSONString(products);//写数据response.setContentType("text/json;charset=utf-8");response.getWriter().write(jsonString);
}

2.4 后台管理员功能模块设计

2.4.1 新增管理员功能设计

后台UserServlet继承BaseServlet,接收前台发送的post请求并进行处理,首先将前台发送的json数据转换成User对象,其次用User对象作为参数调用service层UserService的添加数据方法。UserService是一个接口对象,其实现类为UserServiceImpl对象,在UserServiceImpl使用SqlSessionFactory 工厂对象获得一个sqlSession,通过sqlSession调用MyBatis中的mapper对象的添加方法,使用其中的方法将User对象持久化,并前台响应成功的标识。
关键代码如下:

//1. 接收数据
BufferedReader br = request.getReader();
String params = br.readLine();//json字符串///转为user对象
User user = JSON.parseObject(params, User.class);//2. 调用service查找
User select = userService.select(user.getAccount());if (select.getPassword().equals(user.getPassword())){//3. 响应成功的标识response.getWriter().write("success");
}

2.4.2 管理员登录功能设计

后台UserServlet继承BaseServlet,接收前台发送的post请求并进行处理,将json字符串转成user对象,UserService是一个接口对象,其实现类为UserServiceImpl对象,在UserServiceImpl使用SqlSessionFactory 工厂对象获得一个sqlSession,通过sqlSession调用MyBatis中的mapper对象中的查询方法用user对象的账号作为参数调用service层UserService的查询数据方法,如果对应的账号存在且密码正确,则可以成功登录,向前台相应成功标识。
关键代码如下:

//1. 接收数据
BufferedReader br = request.getReader();
String params = br.readLine();//json字符串
///转为user对象
User user = JSON.parseObject(params, User.class);
//2. 调用service查找
User select = userService.select(user.getAccount());
if (select.getPassword().equals(user.getPassword())){//3. 响应成功的标识response.getWriter().write("success");
}

软件工程 超市库存管理系统 设计报告相关推荐

  1. 超市销售管理系统---设计报告

    目录 第一阶段:开发前的设置和思考 题目要求: 需求分析 概念结构设计 逻辑结构设计 实体(红色表示主键) 联系(红色表示主键) 数据库逻辑结构设计 登录用户 商品表 供货商 订货单表 订货明细 入库 ...

  2. 基于javaweb的超市库存管理系统(idea+servlet+jsp)

    一.系统简介 本项目采用idea工具开发,jsp+servlet+jquery技术编写,数据库采用的是mysql,navicat开发工具. 系统一共分为4个角色分别是:管理员,入库员工,出库员工,普通 ...

  3. jsp+ssm计算机毕业设计超市库存管理系统【附源码】

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  4. C++超市库存管理系统期末作业

    前言: 期末前的一个作业,忙了好久才做好,真是要吐了. 下面是个流程图,相关功能我写的还算清晰,最后还加上了按任意键继续的代码和清屏代码.只是,还没有修改商品的功能,做了这些已经快要废了.还有考试,不 ...

  5. 超市库存管理系统java_java实现超市库存管理系统

    本文实例为大家分享了java库存管理系统的具体代码,供大家参考,具体内容如下 模拟真实的库存管理逻辑,完成超市管理系统的日常功能实现. 经过分析,首先需要一个功能菜单,然后输入所选的功能后,调用序号对 ...

  6. 基于php的库存管理系统开题报告,库存管理系统的开题报告.doc

    库存管理系统的开题报告.doc 库存管理系统的开题报告 论文题目:库存管理信息系统的开发二.题目研究内容:当今社会为信息社会,世界已进入在计算机信息管理领域中激烈竞争的时代.信息已成为继劳动力.土地. ...

  7. 基于PHP+MySQL超市库存管理系统的设计与实现

    随着经济的高速发展,超市的信息化工作也在如火如荼地进行,由于超市规模的不断扩大以及商务往来的日益增多,超市对进销存信息的掌握和使用就越来越多,因此以前的原始的手工操作方式就不能适应超市快速发展的需要, ...

  8. java菜单实现功能_Java实现超市库存管理系统

    模拟真实的库存管理逻辑,完成超市管理系统的日常功能实现. 经过分析,首先需要一个功能菜单,然后输入所选的功能后,调用序号对应的功能方法,实现想要的操作. 具体的步骤如下: 1.完成超市商品初始化.创建 ...

  9. c语言实验报告超市购物系统,C语言超市购物管理系统的报告.doc

    第 PAGE 14 页 共 15 页 TOC \t "标题 2,1,样式2,2,样式3,3" \h 3033 1题目描述 1 760 2 系统分析 1 119 2.1 题目要求 1 ...

  10. 超市库存管理系统(练习)

    /** 下述代码中,对商品信息(编号,名称,单价)进行封装* 这样做到好处在于以后只要找到这个商品,就能够知道该商品的每项信息*/ public class FruitItem01 {//商品的IDi ...

最新文章

  1. Windows Phone 设置DatePicker图标
  2. SRS学习笔记7-SrsHttpServer
  3. JVM性能调优(转)
  4. 日志消息是可执行代码和注释
  5. visio生成数据表图
  6. centos7 卸载 jdk
  7. oracle报错ORA-01843: not a valid month
  8. 用友U8 ERP系统材料出库单打印格式设置-表格格式调整
  9. 用户故事,史诗故事和主题故事
  10. html5酷狗音乐网页代码,酷狗音乐
  11. IT大学生应该经常浏览的十大网站
  12. MPEG-TS封装格式数据
  13. mac游戏排行榜,mac好玩的游戏推荐 (一)
  14. Model 3 FBCM
  15. 软件工程导论(张海藩第六版)期末考试、考研复试重点
  16. 提高访问量,我用魔盒
  17. win7系统无法连接局域网服务器,win7系统无法访问局域网的解决步骤
  18. 正则表达式中的空白符详细解释
  19. matlab 幅值,幅值估计和填零 - MATLAB Simulink - MathWorks 中国
  20. 解决IDEA启动报错---找不到配置项

热门文章

  1. zmap扫描mysql_zmap/masscan 快速扫描网络
  2. Reflector dll反编译工具
  3. 正交幅度调制(QAM)
  4. 安全知识竞赛答题小程序
  5. 阮一峰ES6学习-Symbol
  6. 京东商品类目查询接口
  7. Eclipse 使用的注意 灵格斯 取词
  8. autocad字体ccfang,求CAD字体hzmsdi.shx 发到我邮箱,185955330@qq.com
  9. 使用tftp服务把路由器的配置上传到服务器
  10. python snownlp了解_[Python][snownlp]基于情感词典的情感分析