• 外卖项目01---软件开发整体介绍


    目录

    一、软件开发整体介绍 03

    1.1软件开发流程 03

    1.2角色分工

    1.3软件环境 

    二、外卖项目介绍 04

    2.1项目介绍

    2.2产品原型展示

    2.3技术选型

    2.4功能架构 

    2.5项目上线后的角色分类

    三、开发环境搭建 05

    3.1数据库环境搭建

    3.2maven项目搭建  06

    四、后台登陆功能开发 07

    4.1需求分析

    4.2后台登陆功能开发 08

    4.3后台登陆系统功能 09

    4.4后台系统登陆功能—代码开发(梳理登陆方法处理逻辑)10

     4.5后台系统登陆功能——代码开发(实现登陆处理逻辑)11

    4.6后台登陆功能---功能测试 12

    五、后台退出功能开发 13

    5.1需求分析 13

    5.2代码书写 

    六、分析后台系统首页构成和效果展示方式 14

    6.1系统首席效果展示方式的分析 


    一、软件开发整体介绍 03

    1.1软件开发流程 03

    注:

    需求分析解释

    1、产品原型通常根据网页的形式来介绍一下

    2、通过文档编写,来阐述项目有哪些功能。

    涉及部分解释:

    1、当前的项目需要有几个数据库:数据库内的表和字段是什么样的

    2、 UI界面,将实际的效果展现出来。

    1.2角色分工

    1.3软件环境 

    二、外卖项目介绍 04

    2.1项目介绍

    2.2产品原型展示

     注:该部分一般是产品经理来进行制作的。

    2.3技术选型

    注:

    1、网关层:来自请求后,将来自用户端的请求分配给一个或多个tomcat

    2、应用层:主要是Session做集群的时候session共享的功能。 

    3、应用层Swagger:用于优化,将项目进行拆分,变成前后端项目分离的功能。

    4、数据层Redis:用于数据缓存,在优化的阶段使用。

    5、工具git:代码版本的管理

    2.4功能架构 

    2.5项目上线后的角色分类

    三、开发环境搭建 05

    3.1数据库环境搭建

    注:两种创建数据库的方式。

    1、图形化软件

    2、命令行创建

    3.2maven项目搭建  06

     

     

     小技巧学习:在终端中进行数据的输出(使用log.info)

     添加注释@Slf4j

    配置静态资源映射:将做好的静态资源放置到IDEA中,并能够通过浏览器进行访问

    解决方法:添加一个配置类,使用静态资源映射。

    1. @Slf4j
    2. @Configuration
    3. public class WebMvcConfig extends WebMvcConfigurationSupport {
    4. /***
    5. * 设置静态映射。将在实际的浏览器中能够获取得到工程文件中的指定的静态资源。
    6. * @param registry
    7. */
    8. @Override
    9. protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    10. log.info("开始进行静态资源映射...");
    11. registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
    12. registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
    13. }
    14. }

    思路流程的整理:

    1、创建一个SprngBoot的的项目文件。首先需要添加的注解是@SpringBootApplication

    2、创建一个配置类,首先需要添加注解

    四、后台登陆功能开发 07

    4.1需求分析

    需要服务端创建一些类。

    Controller:来接收来自网页的用户名和密码

    然后使用Service类来调用数据库,在然后调用Mapper来调用数据库。最终调到数据库DB中的数据来和我们输入的数据内容是否一致。

    该部分是DB查询对应的员工表。因为是美团的后台管理系统。

     注:这部分是上述DB要查询的表。

    4.2后台登陆功能开发 08

    创建数据库和IDEA之间的对应: 映射

    会根据数据库存有的类,对应的在程序当中也会创建一个程序实体类。 IDEA中的数据内容和数据库中的数据类型命名是一致的。

     

    注:实现类放到impl文件夹下

    4.3后台登陆系统功能 09

    上面已经将mapper、controller和service进行创建。

    需要编写很多的controller,这些都是响应客户端的页面返回回来的请求。然后controller处理完请求后,反馈给页面一个结果

    本项目的案例统一的都是利用这个R类对象作为处理的结果,进行反馈的。

    4.4后台系统登陆功能—代码开发(梳理登陆方法处理逻辑)10

    最后所有的处理结果都会被处理成一个R对象进行值返回。为增强通用性设置一个泛型

    1、由于客户端登陆界面是传输的json的类型数据,所以需要对对象添加注解@RequestBody。

    2、添加的对象名称要与自己设定employ类中对象名称一致

     3、添加一个session来将将来登陆成功后employ对象中员工id存到session中,来表示成功。然后后面可以利用这个request的get获取,来获取登陆成功的员工id。

     4.5后台系统登陆功能——代码开发(实现登陆处理逻辑)11

     根据功能--->处理逻辑--->进行编码

    为什么使用employeeService.getOne原因:

    在数据库中该数据的索引位置的索引类型为Unique。并且用户名是唯一,所以是Unique。并且能够使用getOne。 

     代码部分实现4.4中的逻辑分析:

    1. package com.itheima.reggie.controller;
    2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
    3. import com.itheima.reggie.common.R;
    4. import com.itheima.reggie.entity.Employee;
    5. import com.itheima.reggie.service.EmployeeService;
    6. import lombok.extern.slf4j.Slf4j;
    7. import org.springframework.beans.factory.annotation.Autowired;
    8. import org.springframework.util.DigestUtils;
    9. import org.springframework.web.bind.annotation.PostMapping;
    10. import org.springframework.web.bind.annotation.RequestBody;
    11. import org.springframework.web.bind.annotation.RequestMapping;
    12. import org.springframework.web.bind.annotation.RestController;
    13. import javax.servlet.http.HttpServletRequest;
    14. @Slf4j
    15. @RestController
    16. @RequestMapping("/employee")//和数据库连接名一致
    17. public class EmployeeController {
    18. @Autowired
    19. private EmployeeService employeeService;
    20. /**
    21. * 员工登陆
    22. * @param request
    23. * @param employee
    24. * @return
    25. */
    26. @PostMapping("/login")
    27. private R login(HttpServletRequest request, @RequestBody Employee employee){
    28. //1、将页面提交的密码password进行md5加密处理
    29. String password = employee.getPassword();
    30. password = DigestUtils.md5DigestAsHex(password.getBytes());//将处理后的数据还传递给自己
    31. //2、根据页面提交的用户名uesrname查询数据库
    32. LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();//包装一个查询对象
    33. queryWrapper.eq(Employee::getUsername,employee.getUsername());//调用匹配对比
    34. Employee emp = employeeService.getOne(queryWrapper);//与数据库连接,获取数据库中的数据信息
    35. //3、如果没有查询到则返回登陆失败结果
    36. if(emp == null){
    37. return R.error("登陆失败");
    38. }
    39. //4、密码比对,如果不一致则返回登陆失败结果
    40. if(!emp.getPassword().equals(password)){//使用第二步中的获取数据库中的数据,被封装的对象emp,
    41. // 进行数据库中的数据获取。和实际的密码(用户端输入的密码)进行比较
    42. return R.error("登陆失败");
    43. }
    44. //5、查看员工的状态,如果为已禁用状态,则返回员工已禁用结果。员工的状态实际上就是数据库中给员工设定状态0/1
    45. if(emp.getStatus() == 0){
    46. return R.error("账号已禁用");
    47. }
    48. //6、登陆成功,将员工id存入最上面对象部分所创将的Session中,并通过Request返回登陆成功的结果给客户端
    49. request.getSession().setAttribute("emplpyee",emp.getId());
    50. return R.success(emp);
    51. }
    52. }

    4.6后台登陆功能---功能测试 12

    使用debug对前面的程序进行测试

    五、后台退出功能开发 13

    5.1需求分析 13

    目前的状态信息如下:根据需求分析有以下逻辑思路 

    5.2代码书写 

    代码书写:

    下图中的路径填写到注解@PostMapping中。 

     

    六、分析后台系统首页构成和效果展示方式 14

    6.1系统首席效果展示方式的分析 

    数据准备部分:

     数据效果实现的部分:

     修改效果:

                                                        

     6.2不同模块点击后的效果实现分析:

    第一步:

    第二步: 

    第三步:

  • 相关阅读:
    Git进阶命令-revert
    Moveit控制机械臂及报错与解决(No motion plan found. No execution attempted)
    软件测试/测试开发丨探索AI与测试报告的完美结合,提升工作效率
    Tableau3——文本表,树形图,词云图
    Uniapp学习之从零开始写一个简单的小程序demo(新建页面,通过导航切换页面,发送请求)
    可视化数据库管理客户端:Adminer
    Oracle数据迁移实用入门
    SpringCloud:前端调用接口时报The header contains multiple values ‘*, *‘, but only one
    深度比较常见库中序列化和反序列化性能的性能差异
    Cron表达式
  • 原文地址:https://blog.csdn.net/xiaoxixicc/article/details/127709383