java项目:前后端分离SpringBoot+Vue+Element的校内跑腿平台

news2025/7/14 8:06:27

收藏点赞不迷路 关注作者有好处

项目编号:BS-XX-155

一,项目简介

近年来,随着国内都市化的发展,生产生活节奏变快、各种往来频繁。经济的高速发展催生出“懒人经济”。不想走出家门,饭菜可以送上门;不方便交水、电、气费,也可以让人代交;想买任何东西都可以让人替你去采购...繁忙、没有精力去处理一些事情,如今这些都已不再是难题。一些“代跑腿”业务在北京、上海等城市开始出现,并逐渐蔓延到中小城市。跑腿项目因为国内市场的需求而诞生。

为了让客户能有时间去处理更多的事情,为客户提供更加便捷的生活环境,类似于同城随叫随到这样的跑腿项目开始被提出并规划实施。同城随叫随到提出了“有事您动嘴,办事我跑腿,不论大事小事,只要是合理合法的事情,只要您需要跑腿,我们都可以代劳”,这样的服务宗旨,对于很多生活忙碌、需要跑腿服务的人来说,的确很诱人。

本项目分为四个系统:后台管理系统、前台系统、订单系统、登陆注册系统九,即前台用户查询房屋信息、登陆注册、发布跑腿订单信息、管理员信息管理、会员信息管理、用户信息。

后台管理系统:管理用户信息、订单、用户、前台内容等功能。具体有管理员管理、订单管理、订单信息更改、订单信息查询。

前台系统:用户可以在前台系统中进行注册、登录、浏览资源、首页、下单等操作。具体有首页资源展示、资源搜索、订单模块、用户模块。

订单系统:提供下单、查询订单、修改订单状态、定时处理订单搜索系统,

提供商品的搜索功能。

登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。

功能具体信息分析如下:

  1. 用户管理功能

表3-1 用户管理功能描述

功能名称

功能描述

用户信息注册

用户填写电话号码、邮箱、密码、验证码、注册成功

修改信息

用户可以修改自己的个人信息

注销用户

管理员可以注销用户

查询用户

管理员可以查询用户,用户自己也可以查看自己信息。

  1. 订单管理功能

表3-2 订单管理功能描述

功能名称

功能描述

添加订单

用户填写订单信息、选择订单种类、填写订单金额、上传订单图片、添加成功

修改订单状态

管理员可以修改订单状态和订单信息、用户可以修改订单信息

查询订单

用户可以查看自己的订单、管理员可以查询全部订单

订单删除

管理员可以删除订单、用户可以取消自己的订单

  1. 搜索模块功能

表3-3 搜索模块功能描述

功能名称

功能描述

订单标题名查询

在搜索框中输入订单标题名,点击搜索

订单分类名查询

在搜索框中输入订单类型名,点击搜索

  1. 管理员管理功能

表3-4 管理员管理功能描述

功能名称

功能描述

用户管理

对用户信息进行查看、修改、删除、添加操作

订单分类管理

对订单分类信息进行查看、删除、添加操作

订单管理

对订单信息进行查看、修改、删除、添加操作

3.2.2 性能需求

本系统为C/S架构,用户通过浏览器访问获取服务,为了确保用户服务的及时性,需要较为稳定的性能。

1.数据精确度

后台管理在进行订单或订单分类的增加、删除和修改等的操作时,不允许在同一时间内对同一条数据进行三次操作;后端业务在进行订单业务处理时,要求保证数据的一致性,确保数据库事务精确度。

2.时间特性:

用户登录注册响应时间大概在2秒左右;用户订单支付成功后,回调页面的响应时间大概在4秒左右。

大量用户访问时造成的高并发,系统对此响应时间10秒左右。

管理员对订单和订单分类的修改、删除、添加成功后,前台响应、重新渲染页面数据时间大概在3秒前后。

3.安全性

本系统已经设计的较为安全了,使用JWT对前端后端请求中不断传递的token具备一定的加密性,足够确保用户和数据的安全性和隐私性。

4.可维护性

本系统可以由开发人员继续维护,开发过程中,已经确保了代码的简洁与详细的注释。该系统配置在macOS上,后期可以配备在Windows、Linux操作系统上。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前台开发技术:Vue+ElementUI

三,系统展示

后台管理

 

用户管理

 订单类型管理

订单管理

客户端操作界面

用户发布需求操作

四,核心代码展示

package cn.edu.jsu.zjj.running.admin.controller;

import cn.edu.jsu.zjj.running.admin.entity.Admin;
import cn.edu.jsu.zjj.running.admin.service.AdminService;
import cn.edu.jsu.zjj.running.utils.Result;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.HashMap;

/**
 * 管理员表(Admin)表控制层
 *
 * @author znz
 * @since 2022-10-26 10:49:28
 */
@RestController
@RequestMapping("admin")
public class AdminController {
    /**
     * 服务对象
     */
    @Resource
    private AdminService adminService;

    /**
     * 分页查询
     *
     * @param admin 筛选条件
     * @return 查询结果
     */
    @GetMapping
    public Result<ResponseEntity<Page<Admin>>> queryByPage(Admin admin, Integer size,Integer page) {
        PageRequest pageRequest = PageRequest.of(page, size);
        Page<Admin> admins = this.adminService.queryByPage(admin, pageRequest);
        return Result.success(ResponseEntity.ok(admins));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("{id}")
    public Result queryById(@PathVariable("id") Integer id) {
        return this.adminService.queryById(id);
    }

    /**
     * 新增数据
     *
     * @param admin 实体
     * @return 新增结果
     */
    @PostMapping
    public Result add(Admin admin) {
        return this.adminService.insert(admin);
    }

    /**
     * 编辑数据
     *
     * @param admin 实体
     * @return 编辑结果
     */
    @PutMapping
    public Result edit(Admin admin) {
        return this.adminService.update(admin);
    }
    /**
     * 修改密码
     *
     * @return 编辑结果
     */
    @PutMapping("updatePwd")
    public Result updatePwd(Integer aId,String oldPwd,String newPwd) {
        return this.adminService.updatePwd(aId,oldPwd,newPwd);
    }

    /**
     * 删除数据
     *
     * @param aId 主键
     * @return 删除是否成功
     */
    @DeleteMapping
    public Result deleteById(Integer aId) {
        return this.adminService.deleteById(aId);
    }





    //管理员登陆注册
    @GetMapping("login")
    public Result<HashMap<String, Object>> login(String acc, String pwd){
        return adminService.login(acc,pwd);
    }

    @GetMapping("register")
    public Result register(Admin admin){
        return adminService.register(admin);
    }
}

package cn.edu.jsu.zjj.running.apply.controller;

import cn.edu.jsu.zjj.running.apply.entity.Apply;
import cn.edu.jsu.zjj.running.apply.service.ApplyService;
import cn.edu.jsu.zjj.running.utils.Result;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * 用户申请跑腿表(Apply)表控制层
 *
 * @author znz
 * @since 2022-10-26 10:50:46
 */
@RestController
@RequestMapping("apply")
public class ApplyController {
    /**
     * 服务对象
     */
    @Resource
    private ApplyService applyService;

    /**
     * 分页查询
     * @param apply 筛选条件
     * @return 查询结果
     */
    @GetMapping
    public Result<ResponseEntity<Page<Apply>>> queryByPage(Apply apply, Integer size, Integer page) {
        PageRequest pageRequest = PageRequest.of(page,size);
        Page<Apply> applies = this.applyService.queryByPage(apply,pageRequest);
        return Result.success(ResponseEntity.ok(applies));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("{id}")
    public Result queryById(@PathVariable("id") Integer id) {
        return this.applyService.queryById(id);
    }

    /**
     * 新增数据
     *
     * @param apply 实体
     * @return 新增结果
     */
    @PostMapping
    public Result add(Apply apply) {
        return this.applyService.insert(apply);
    }

    /**
     * 编辑数据
     *
     * @param apply 实体
     * @return 编辑结果
     */
    @PutMapping
    public Result edit(Apply apply) {
        return this.applyService.update(apply);
    }


    /**
     * 删除数据
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @DeleteMapping
    public Result deleteById(Integer id) {
        return this.applyService.deleteById(id);
    }

}

package cn.edu.jsu.zjj.running.comment.controller;

import cn.edu.jsu.zjj.running.comment.entity.Comment;
import cn.edu.jsu.zjj.running.comment.service.CommentService;
import cn.edu.jsu.zjj.running.utils.Result;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * 评论表(Comment)表控制层
 *
 * @author makejava
 * @since 2022-10-26 10:52:11
 */
@RestController
@RequestMapping("comment")
public class CommentController {
    /**
     * 服务对象
     */
    @Resource
    private CommentService commentService;

    /**
     * 分页查询
     *
     * @param comment 筛选条件
     * @return 查询结果
     */
    @GetMapping
    public Result<ResponseEntity<Page<Comment>>> queryByPage(Comment comment, Integer size, Integer page) {
        PageRequest pageRequest = PageRequest.of(page,size);
        Page<Comment> comments = this.commentService.queryByPage(comment,pageRequest);
        return Result.success(ResponseEntity.ok(comments));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("{id}")
    public Result queryById(@PathVariable("id") Integer id) {
        return this.commentService.queryById(id);
    }

    /**
     * 新增数据
     *
     * @param comment 实体
     * @return 新增结果
     */
    @PostMapping
    public Result add(Comment comment) {
        return this.commentService.insert(comment);
    }

    /**
     * 编辑数据
     *
     * @param comment 实体
     * @return 编辑结果
     */
    @PutMapping
    public Result edit(Comment comment) {
        return this.commentService.update(comment);
    }

    /**
     * 删除数据
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @DeleteMapping
    public Result deleteById(Integer id) {
        return this.commentService.deleteById(id);
    }

}

package cn.edu.jsu.zjj.running.order.controller;

import cn.edu.jsu.zjj.running.order.entity.Order;
import cn.edu.jsu.zjj.running.order.service.OrderService;
import cn.edu.jsu.zjj.running.utils.Encryption;
import cn.edu.jsu.zjj.running.utils.MailSend;
import cn.edu.jsu.zjj.running.utils.RandomUtil;
import cn.edu.jsu.zjj.running.utils.Result;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;

/**
 * 订单表(Order)表控制层
 *
 * @author PL
 * @since 2022-10-26 10:52:50
 */
@RestController
@RequestMapping("order")
public class OrderController {
    /**
     * 服务对象
     */
    private OrderService orderService;

    private MailSend mailSend;

    public OrderController(OrderService orderService, MailSend mailSend) {
        this.orderService = orderService;
        this.mailSend = mailSend;
    }

    /**
     * 分页查询
     *
     * @param order 筛选条件
     * @return 查询结果
     */
    @GetMapping
    public Result<ResponseEntity<Page<Order>>> queryByPage(Order order, Integer size, Integer page) {
        PageRequest pageRequest = PageRequest.of(page, size);
        Page<Order> orders = this.orderService.queryByPage(order, pageRequest);
        return Result.success(ResponseEntity.ok(orders));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("{id}")
    public Result queryById(@PathVariable("id") Integer id) {
        return this.orderService.queryById(id);
    }

    @GetMapping("queryByState")
    public Result queryByState(Integer oState){
        return this.orderService.queryByState(oState);
    }
    /**
     * 新增数据
     *
     * @param order 实体
     * @return 新增结果
     */
    @PostMapping
    public Result add(MultipartFile file,Order order) throws IOException {
        return this.orderService.insert(file,order);
    }

    /**
     * 编辑数据
     *
     * @param order 实体
     * @return 编辑结果
     */
    @PutMapping
    public Result edit(Order order) {
        return this.orderService.update(order);
    }

    /**
     * 编辑数据
     *
     * @param image 实体
     * @return 编辑结果
     */
    @PostMapping("editImg")
    public Result editImg(MultipartFile uploadFIle, Integer oId, String image) throws IOException {
        return this.orderService.editImg(uploadFIle,oId,image);
    }

    /**
     * 删除数据
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @DeleteMapping
    public Result deleteById(Integer id) {
        return this.orderService.deleteById(id);
    }

}

package cn.edu.jsu.zjj.running.user.controller;

import cn.edu.jsu.zjj.running.order.entity.Order;
import cn.edu.jsu.zjj.running.user.entity.User;
import cn.edu.jsu.zjj.running.user.service.UserService;
import cn.edu.jsu.zjj.running.utils.Encryption;
import cn.edu.jsu.zjj.running.utils.MailSend;
import cn.edu.jsu.zjj.running.utils.RandomUtil;
import cn.edu.jsu.zjj.running.utils.Result;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;

/**
 * 用户表(User)表控制层
 *
 * @author makejava
 * @since 2022-10-26 11:01:13
 */
@RestController
@RequestMapping("user")
public class UserController {
    /**
     * 服务对象
     */
    private UserService userService;

    private MailSend mailSend;

    public UserController(UserService userService, MailSend mailSend) {
        this.userService = userService;
        this.mailSend = mailSend;
    }

    /**
     * 分页查询
     *
     * @param user 筛选条件
     * @return 查询结果
     */
    @GetMapping
    public Result<ResponseEntity<Page<User>>> queryByPage(User user, Integer size,Integer page) {
        PageRequest pageRequest =PageRequest.of(page,size);
        Page<User> users = this.userService.queryByPage(user, pageRequest);
        return Result.success(ResponseEntity.ok(users));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("{id}")
    public Result<User> queryById(@PathVariable("id") Integer id) {
        return this.userService.queryById(id);
    }

    /**
     * 新增数据
     *
     * @param user 实体
     * @return 新增结果
     */
    @PostMapping
    public Result add(User user) {
        return this.userService.insert(user);
    }

    /**
     * 编辑数据
     *
     * @param user 实体
     * @return 编辑结果
     */
    @PutMapping
    public Result edit(User user) {
        return this.userService.update(user);
    }

    @PostMapping("editImg")
    public Result editImg(MultipartFile uploadFIle,Integer uId , String uHeadImg) throws IOException {
        return this.userService.editImg(uploadFIle,uId,uHeadImg);
    }

    /**
     * 删除数据
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @DeleteMapping
    public Result deleteById(Integer id) {
        return this.userService.deleteById(id);
    }

    @PostMapping("login")
    public Result login(String acc,String pwd){
        return userService.login(acc,pwd);
    }

    @PostMapping("register")
    public Result register(User user){
        return this.userService.register(user);
    }

    @PostMapping("verifyUser")
    public Result verifyUser(User user, String uPassword2,String verifyCodeData,String Token){
        if (user.getUEmail()==null||user.getUEmail().equals("")){
            return Result.error("邮箱不能为空");
        }
        if (!user.getUPassword().equals(uPassword2)){
            return Result.error("两次密码不一致");
        }

        PageRequest pageRequest = PageRequest.of(0, 1);
        Page<User> users = this.userService.queryByPage(user, pageRequest);
        if (users.getSize()>1) {
            return Result.error("该邮箱或者手机号已被注册");
        }

        //判断有没有验证码
        if (verifyCodeData!=null&&!verifyCodeData.equals("")&&Token!=null&&!Token.equals("")){
            if (Encryption.getSah256(Encryption.getSah256(verifyCodeData)).equals(Token)){
                userService.register(user);
            }else {
                return Result.error("验证码错误!");
            }
        }else {//没有验证码
            if (Token!=null&&!Token.equals("")){
                return Result.success("","请输入验证码");
            }
            String random = RandomUtil.random();
            mailSend.send(user.getUEmail(),random);
            return Result.success( Encryption.getSah256(Encryption.getSah256(random)),"没有验证码");
        }

        return Result.success("成功");
    }

    @PutMapping("updatePwd")
    public Result updatePwd(Integer uId,String oldPwd,String newPwd){
        return this.userService.updatePwd(uId,oldPwd,newPwd);
    }

}

五,项目总结

过去在没有互联网+的时候,校内师生在校园生活工作的过程中总会存在些许不便或者碰到些许问题,比如需要打印一份东西但是打印店太远自己一时半会儿抽不开身又不太好意思去麻烦他人、或者是在宿舍想吃学校食堂的饭菜但苦于没有外卖平台能够配送、以及碰到文档处理的问题需要在各个教学楼之间来回跑动等。校内的同学老师都是靠着拜托他人或是自己亲力亲为来完成这样一个简单却又不得不花费时间精力来完成的小事上。

在跑腿系统的管理中,对于订单信息的管理是相当重要的,并且也是相当麻烦的,它是订单信息管理工作中一项常规性的工作。长期以来,这一类型的信息管理的工作量是相当巨大的,依靠人工来处理不仅仅浪费了大量的人力物力,而且由于人工管理存在着大量的不可预知性,因此实现跑腿订单信息的网络化势在必行。

本校内跑腿平台的开发定位于一个能够满足数据库管理软件,即具备一个数据库管理软件的基本功能,包括数据的增加,删除,修改,查询等,便于用户查看,操作,和查询订单信息。

此外,系统具有用户登录功能,不同用户有不同的权限,这样可以提高数据的安全性和可靠性。系统采用SSM设计模式与数据库相结合的手段进行开发,结构紧凑、运行速度快、操作简单,更因为拥有自己的源代码,所以保证了软件具有高度的保密、安全性。本系统就是为了解决校内跑题平台信息管理与广大校内师生需求信息量之间的不和谐,使订单信息管理向着规范化、简单化、高效化的方向发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java中restTemplate的使用

原文链接 代码地址 本文介绍restTemplate基础用法。 Java中get和post的用法请参考&#xff1a;https://mp.weixin.qq.com/s/mC0D1nuCqIori5bWtLorWQ 1 提供get/post接口 1.1 Controller RestController RequestMapping("/homepage") public class MyController…

电脑如何清理重复文件,查找电脑重复文件的软件

在电脑上面&#xff0c;不论是我们可以保存的&#xff0c;还是自动缓存的&#xff0c;都会有大量的重复文件&#xff0c;可能我们自己并没有发现&#xff0c;占据着电脑大量的空间&#xff0c;长此以往下去&#xff0c;会让电脑变得卡顿&#xff0c;我们就需要来清理一下这些不…

低代码维格云甘特视图入门教程

功能简介 低代码维格云甘特图主要通过条状图来显示某些时间相关的活动(任务、阶段、项目等)随着时间进展的情况,以便管理者直观地查看活动进度,把控全局。又称为时间视图、横道图、条状图(Bar chart)。 低代码维格云甘特图适用场景 项目管理生产管理其他领域:建筑、IT软件…

嵌入式FreeRTOS学习八,xTaskCreate创建任务的细节以及恢复中断任务实现

一.创建任务函数xTaskCreate 任务也不是很复杂的东西&#xff0c;任务也就是一个函数xTaskCreate。简单得说&#xff0c;创建一个任务&#xff0c;你得提供它的执行函数&#xff0c;你得提供它的栈的大小&#xff0c;函数的执行空间&#xff0c;函数的优先级等重要的条件。因为…

IPWorks EDI Translator Delphi Edition

IPWorks EDI Translator Delphi Edition 一套轻量级可编程EDI解析和翻译组件。 IPWorks EDI转换器包括便于电子数据交换(EDI)解析、翻译和验证的软件组件。这些组件包括灵活的模式支持&#xff0c;使开发人员能够使用各种模式格式&#xff0c;从而更容易与现有EDI处理应用程序集…

Maven项目属性与版本管理

本次将介绍两个内容&#xff0c;分别是&#xff1a; 属性版本管理 1. 属性 1.1 问题分析 我们先来分析一下问题&#xff1a; 前面在父工程中的dependencyManagement标签中对项目中所使用的jar包版本进行了统一的管理&#xff0c;但是如果在标签中有如下的内容&#xff1a;…

React源码分析4-深度理解diff算法

上一章中 react 的 render 阶段&#xff0c;其中 begin 时会调用 reconcileChildren 函数&#xff0c; reconcileChildren 中做的事情就是 react 知名的 diff 过程&#xff0c;本章会对 diff 算法进行讲解。 diff 算法介绍 react 的每次更新&#xff0c;都会将新的 ReactElem…

[安卓逆向]IDA Pro的认识及使用

[安卓逆向]IDA Pro的认识及使用 软件介绍 IDA Pro全称是交互式反汇编器专业版&#xff0c;人们其简称为IDA&#xff0c;IDA pro 是业界最成熟、先进的反汇编工具之一&#xff0c;是目前最棒的一个静态反编译软件&#xff0c;为众多0day世界的成员和ShellCode安全分析人士不可…

指纹浏览器是什么?可以用来解决流量套利的什么问题?

套利是一个永远不会过期的形式&#xff0c;由于信息差永远存在&#xff0c;有信息差就有套利空间。流量套利是购买和转售流量的过程。套利专家通常通过购买廉价流量并以更好的价格出售来赚取收入。他们把流量导流到广告商的网站上&#xff0c;满足广告商希望客户访问自己的网站…

理解Linux权限(一)

理解Linux文件权限 Permission Groups(权限组) 根据权限组划分&#xff1a;每个文件和目录都有3种使用者(用户) ower(所有者) - 所有者的权限仅适用于文件和目录的所有者&#xff0c;不会影响其他用户的操作&#xff1b;group(所属组) - 所属组的权限仅适用于已分配的文件和…

Transwarp Inceptor介绍

Transwarp Inceptor是星环科技推出的用于数据仓库和交互式分析的大数据平台软件&#xff0c;它基于Hadoop和Spark技术平台打造&#xff0c;加上自主开发的创新功能组件&#xff0c;有效的解决了企业级大数据数据处理和分析的各种技术难题&#xff0c;帮助企业快速的构建和推广数…

进化吧,MySQL锁!无锁->偏向锁->轻量级锁->重量级锁(请自动脑补数码宝贝进化音)

写在前边 走到哪都有各种琐事&#xff0c;在MySQL中咱已经聊透了各种琐事 ->MySQL锁机制&&事务&#xff0c;今天来看看Java里边的锁升级过程&#xff0c;以及各种锁之间的比较&#xff0c;悲观乐观&#xff0c;粗化消除~ 四种锁的Markword 优先程度 偏向锁->轻量…

【FPGA】FPGA实现IIC协议读写EEPROM(三) ----- 汇总篇

IIC协议读写EEPROM一、功能分析/模块划分二、状态转移图1、EEPROM读写控制状态转移图2、IIC接口驱动状态转移图三、工程代码实现1、顶层模块2、EEPROM读写控制模块3、IIC接口驱动模块4、参数配置5、其他模块四、仿真测试五、上板验证写在前面 FPGA实现IIC协议读写EEPROM相关文章…

【附源码】计算机毕业设计JAVA教学辅助系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

【Qt】控件探幽——QWidget

注1&#xff1a;本系列文章使用的Qt版本为Qt 6.3.1 注2&#xff1a;本系列文章常规情况下不会直接贴出源码供复制&#xff0c;都以图片形式展示。所有代码&#xff0c;自己动手写一写&#xff0c;记忆更深刻。 本文目录探索QWidget1、ui文件最后会变成什么&#xff1f;2、如何改…

在 OpenHarmony 轻量设备开发应用

本文档旨在讲解新建 Helloworld 项目步骤、固件包烧录到 BES2600WM 开发板、实现 js 和 C 代码的通讯。该 Demo 重点体现的是 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09; 3.1 Beta 系统轻量设备 js 和 C 的交互能力&#xff0c; 效果如图 &#xf…

dpdk PMD

PMD是Poll Mode Driver的缩写&#xff0c;即基于用户态的轮询机制的驱动 在不考虑vfio的情况下&#xff0c;PMD的结构图如下 虽然PMD是在用户态实现设备驱动&#xff0c;但还是依赖于内核提供的策略。其中uio模块&#xff0c;是内核提供的用户态驱动框架&#xff0c;而igb_uio…

深度探讨react-hooks实现原理

react hooks 实现 Hooks 解决了什么问题 在 React 的设计哲学中&#xff0c;简单的来说可以用下面这条公式来表示&#xff1a; UI f(data)等号的左边时 UI 代表的最终画出来的界面&#xff1b;等号的右边是一个函数&#xff0c;也就是我们写的 React 相关的代码&#xff1b…

最新最全面的Spring详解(一)——Spring概述与IOC容器

前言 本文为 【Spring】Spring概述与IOC容器 相关知识&#xff0c;下边将对Spring概述&#xff0c;IOC容器&#xff08;包括&#xff1a;IOC概述、配置元数据、容器实例化与使用、Bean的概述、依赖注入 Dependency Injection、Bean 作用范围&#xff08;作用域&#xff09;、更…

计算机网络(二)

三、数据链路层 3.1 数据链路层概述 数据链路层在物理层提供的服务的基础上向网络层提供服务&#xff0c;其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。数据链路层在不可靠的物理介质上提供可靠的传输。 该层的作用包括&#xff1a;物理地址寻址…