创建一个简单的spring boot+vue前后端分离项目

一、环境准备

此次实验需要的环境: jdk、maven、nvm和node.js

开发工具:idea或者Spring Tool Suite 4,前端可使用HBuilder X,数据库Mysql

下面提供maven安装与配置步骤和nvm安装与配置步骤:

1、maven安装与配置

1.1 下载maven包

https://dlcdn.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.zip

1.2 解压到安装目录

1.3 将maven目录配置成环境变量

1.4 Cmd打开命令窗口,验证maven: mvn -v

1.5 配置setting文件 打开maven目录,找到conf目录下setting.xml ,修改默认仓库路径

二、nvm安装与配置

1、NVM简介

在项目开发过程中,使用到vue框架技术,需要安装node下载项目依赖,但经常会遇到node版本不匹配 而导致无法正常下载,重新安装node却又很麻烦。为解决以上问题,nvm:一款node的版本管理工 具,能够管理node的安装和使用,使用简单,可下载指定node版本和切换使用不同版本,方便了node 的使用。

2、NVM安装

2.1 下载

安装包下载地址: https://github.com/coreybutler/nvm-windows/releases

windows系统下载nvm-setup.exe

2.2 安装

双击nvm-setup.exe开始安装(安装之前最好卸载计算机已经安装的node)

选择nvm安装根路径

指定nodejs的安装路径(最好提前新建nodejs文件夹,在安装时选择)

2.3 测试

打开命令行,输入nvm -v 可查看版本,即安装成功

3、NVM使用

3.1 设置

设置下载源,修改setting.txt 在安装根路径下编辑setting.txt

添加以下两行镜像地址:

node_mirror:https://npm.taobao.org/mirrors/node/

npm_mirror: https://npm.taobao.org/mirrors/npm/

3.2 使用

1. nvm list available 显示可以安装的所有node.js的版本

2. nvm install 16.20.0 安装node.js的命名 version是版本

3. nvm list 查看已安装的node.js

4. nvm use 16.20.0 切换到使用指定的nodejs版本

*** 表示当前使用的node版本是16.20.0

3.3 NVM常用命令

nvm off // 禁用node.js版本管理(不卸载任何东西)

nvm on // 启用node.js版本管理

nvm install // 安装node.js的命名,version是版本号 例如:nvm install 8.12.0

nvm uninstall // 卸载node.js是的命令,卸载指定版本的nodejs,当安装失败时卸载使用

nvm ls // 显示所有安装的node.js版本

nvm list available // 显示可以安装的所有node.js的版本

nvm use // 切换到使用指定的nodejs版本

nvm v // 显示nvm版本

nvm install stable // 安装最新稳定版

3.4 NVM常见异常

1.nvm use失效 无法使用node

原因:在安装nvm的时候修改了nodejs的安装路径,但安装包并未在指定路径新建nodejs 解决:在指定路径手动新建nodejs文件夹,重新安装并指定路径

三、搭建前后端分离项目

1、后端项目

1.1 数据库设计

1.2 新建springboot工程

第一种方式使用idea创建,File —> New Project —> Spring Initializr ,选择对应的配置。

如果idea没有Spring Initializr ,或者本地jdk不支持Spring Initializr中jdk的选项可以采用第二种方式,访问https://start.aliyun.com/

选择对应的配置,获取代码,然后导入idea或Spring Tool Suite 4

1.3 项目结构以及代码

项目的总体结构如图:

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.7.8</version>
 <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.example</groupId>
 <artifactId>springbootvue</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>springbootvue</name>
 <description>Demo project for Spring Boot</description>
 <properties>
 <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
            <version>3.5.3</version>
        </dependency>
    </dependencies>
 
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
</plugins>
 </build>
 </project>

application.yml

spring:
 datasource:
 username: root
 password: 1qaz@WSX3edc
 url: jdbc:mysql://localhost:3306/course2023?
 allowMultiQueries=true&characterEncoding=UTF-8&characterSetResults=UTF
8&zeroDateTimeBehavior=convertToNull&useSSL=false
 driver-class-name: com.mysql.cj.jdbc.Driver
 server:
 port: 8181
 mybatis:
 type-aliases-package: com.example.springbootvue.entity
 mapper-locations: classpath:mapper/*.xml

UserController.java

package com.example.springbootvue.controller;
 import com.example.springbootvue.entity.user;
 import com.example.springbootvue.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import java.util.List;
 @RestController
 @RequestMapping("/user")
 public class UserController {
 @Autowired
 UserService userService;
 @GetMapping("/findAll")
 public List<user> findAll() {
 return userService.queryuserList();
 }
 @GetMapping("/")
 public String test() {
 return "test";
 }
@PostMapping("/login")
 public user login(@RequestParam("username") String username,
 @RequestParam("password") String password) {
 return userService.queryUserByNameAndPwd(username, password);
 }
 }

user.java

package com.example.springbootvue.entity;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
 public class user {
 private Integer id;
 private String username;
 private String password;
 }

UserMapper.java

 package com.example.springbootvue.mapper;
 import com.example.springbootvue.entity.user;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 import java.util.List;
 @Mapper
 @Repository
 public interface UserMapper {
 public List<user> queryuserList();
 public user queryUserByNameAndPwd(@Param("username")String username, 
@Param("password")String password);
 }

UserService.java

package com.example.springbootvue.service;
 import com.example.springbootvue.entity.user;
 import java.util.List;
 public interface UserService {
 public List<user> queryuserList();
 public user queryUserByNameAndPwd(String username,String password);
 }

UserServiceImpl.java

 package com.example.springbootvue.service;
 import com.example.springbootvue.entity.user;
 import com.example.springbootvue.mapper.UserMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import java.util.List;
 @Service
 public class UserServiceImpl implements UserService{
 @Autowired
 UserMapper userMapper;
 @Override
 public List<user> queryuserList() {
 return userMapper.queryuserList();
 }
 @Override
 public user queryUserByNameAndPwd(String username, String password) {
 return userMapper.queryUserByNameAndPwd(username,password);
 }
 }

usermapper.xml

 <?xml version="1.0" encoding="UTF8"?>
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.example.springbootvue.mapper.UserMapper">
 <select id="queryuserList" 
resultType="com.example.springbootvue.entity.user">
 select * from user
 </select>
 <select id="queryUserByNameAndPwd" 
resultType="com.example.springbootvue.entity.user">
select * from user where username=#{username} and password = #{password}
 </select>
</mapper>

CrosConfig.java

 package com.example.springbootvue.config;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 @Configuration
 public class CrosConfig implements WebMvcConfigurer {
 @Override
 public void addCorsMappings(CorsRegistry registry){
 registry.addMapping("/**")
 .allowedOriginPatterns("*")
 .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
 .allowCredentials(true)
 .maxAge(3600)
 .allowedHeaders("*");
 }
 }

运行SpringbootvueApplication.java,启动成功后,在浏览器上面访问localhost:8181/user/

2、前端项目

2.1 创建vue项目

首先创建一个文件夹,在地址栏输入cmd,按回车键,会出现下面的命令行窗口

输入npm -v和node -v 查看是否安装

接着输入npm install -g @vue/cli来安装相关插件,如果出现如下图错误,是因为npm的官方源在国 外,下载很慢,下面我们将npm源切换成国内源。

下载淘宝镜像源:npm install -g cnpm --registry=https://registry.npm.taobao.org

把当前的源切换成淘宝的源:npm config set registry https://registry.npm.taobao.org

查看源是否切换成功:npm config get registry

继续安装npm install -g @vue/cli

安装好之后输入vue create myfirst(myfirst是你要创建的项目的名称),回车。然后进入下图界面,选 择第三个,回车。

接着选择下图所示选项(上下箭头移动,空格键选中),接着回车

然后后面按我下图所选的即可

接着会加载一段时间(稍微等待一下)

然后我们可以按它的提示输入:

cd myfirst

npm run serve

在浏览器输入生成的链接得到下图,此时vue项目搭建完成

2.2 构建一个简单的登录界面

修改router文件夹下面的index.js如下

import Vue from 'vue'
 import VueRouter from 'vue-router'
 import HomeView from '../views/HomeView.vue'
 import login from "@/views/login";
 Vue.use(VueRouter)
 const routes = [
 {
 path: '/',
 name: 'login',
 component: login
 },
 {
 path: '/home',
 name: 'home',
 component: HomeView
 },
 {
 path: '/about',
 name: 'about',
 component: () => import(/* webpackChunkName: "about" */ 
'../views/AboutView.vue')
 }
 ]
 const router = new VueRouter({
 mode: 'history',
 base: process.env.BASE_URL,
 routes
 })
 export default router

修改views文件夹下面的HomeView.vue如下

 <template>
    <div class="home">
        {{ username }} 登录成功
    </div>
 </template>
 <script>
 export default {
     data() {
        return {
         
        }
     },
     
     created() {
         this.username = this.$route.query.username
     },
 }
 </script>
 <style>
    
</style>

在views文件夹下创建login.vue

 <template>
  <div class="login">
    <div class="mylogin" align="center">
      <h4>登录</h4>
      <el-form
          :model="loginForm"
          :rules="loginRules"
          ref="loginForm"
          label-width="0px"
      >
        <el-form-item label="" prop="account" style="margin-top: 10px">
          <el-row>
            <el-col :span="2">
              <span class="el-icon-s-custom"></span>
            </el-col>
            <el-col :span="22">
              <el-input
                  class="inps"
                  placeholder="账号"
                  v-model="loginForm.account"
              >
              </el-input>
            </el-col>
          </el-row>
        </el-form-item>
        <el-form-item label="" prop="passWord">
          <el-row>
            <el-col :span="2">
              <span class="el-icon-lock"></span>
            </el-col>
            <el-col :span="22">
              <el-input
                  class="inps"
                  type="password"
                  placeholder="密码"
                  v-model="loginForm.passWord"
              ></el-input>
            </el-col>
          </el-row>
        </el-form-item>
        <el-form-item style="margin-top: 55px">
          <el-button type="primary" round class="submitBtn" @click="submitForm"
          >登录
          </el-button>
        </el-form-item>
        <div class="unlogin">
          <router-link :to="{ path: '/forgetpwd' }"> 忘记密码? </router-link>
          |
          <router-link :to="{ path: '/register' }">
            <a href="register.vue" target="_blank" align="right">注册新账号</a>
          </router-link>
        </div>
      </el-form>
    </div>
  </div>
 </template>
 <script>
 import { mapMutations } from "vuex";
 import axios from 'axios'
 
export default {
  name: "Login",
  data: function () {
    return {
      loginForm: {
        account: "",
        passWord: "",
      },
      loginRules: {
        account: [{ required: true, message: "请输入账号", trigger: "blur" }],
        passWord: [{ required: true, message: "请输入密码", trigger: "blur" }],
      },
    };
  },
 
  methods: {
    ...mapMutations(["changeLogin"]),
    submitForm() {
      const userAccount = this.loginForm.account;
      const userPassword = this.loginForm.passWord;
      const params = new URLSearchParams();
      params.append('username', userAccount);
      params.append('password', userPassword);
      // 发起一个post请求
      axios({
        method: 'post',
        url: 'http://localhost:8181/user/login',
        params: params
      }).then(resp=>{
          console.log(resp.data);
          if(resp.data != null && resp.data.id != null){
              this.$router.push('/home?username='+resp.data.username);
          }else{
              this.$message({
                        message: '账户不存在或密码错误',
                        type: 'warning'
                      });
          }
      });
      console.log("用户输入的账号为:", userAccount);
      console.log("用户输入的密码为:", userPassword);
 
    },
  },
 };
 </script>
 <style>
 .login {
 
  height: 100vh;
  background-image: linear-gradient(to bottom right, #3F5EFB, #42b983);
  overflow: hidden;
 
  width: 100vw;
  padding: 0;
  margin: 0;
 
  font-size: 16px;
  background-position: left top;
  background-color: #242645;
  color: #fff;
 
  position: relative;
 }
 
.mylogin {
  width: 240px;
  height: 280px;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  padding: 50px 40px 40px 40px;
  box-shadow: -15px 15px 15px rgba(6, 17, 47, 0.7);
  opacity: 1;
background: linear-gradient(
 230deg,
 rgba(53, 57, 74, 0) 0%,
 rgb(0, 0, 0) 100%
 );
 }
 .inps input {
 border: none;
 color: #fff;
 background-color: transparent;
 font-size: 12px;
 }
 .submitBtn {
 background-color: transparent;
 color: #39f;
 width: 200px;
 }
 </style>

login.vue要用到axios和element-ui,所以我们要安装axios和element-ui

npm install axios

npm install element-ui -S

在main.js中引入element-ui

import ElementUI from 'element-ui';
 import 'element-ui/lib/theme-chalk/index.css';
 Vue.use(ElementUI);

axios可以在对应的页面引入

import axios from 'axios'

App.vue修改如下

<template>
 <div id="app">
 <router-view/>
 </div>
 </template>

在终端输入指令npm run serve运行vue项目,点击生成的链接即可,然后输入账号和密码进行登录,登录后进入主页面

四、完成用户注册和查询功能

用户注册功能效果图如下:

点击注册新账号,跳转到注册页面

填写新账户密码,点击注册,注册成功之后跳转到登录页面,用新账户登录可以登录成功 查询功能效果:在登陆成功页面添加查询按钮

点击查询按钮,查询所有账户,效果如图所示

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【0011】HTML其他文本格式化标签详解(em标签、strong标签、b标签、i标签、sup标签、sub标签......)

如果你觉得我的文章写的不错&#xff0c;请关注我哟&#xff0c;请点赞、评论&#xff0c;收藏此文章&#xff0c;谢谢&#xff01; 本文内容体系结构如下&#xff1a; 本文旨在深入探讨HTML中其他的文本格式化标签&#xff0c;主要有<em> 标签、<strong> 标签、…

从零开始:H20服务器上DeepSeek R1 671B大模型部署与压力测试全攻略

前言 最近&#xff0c;我有幸在工作中接触到了DeepSeek R1 671B模型&#xff0c;这是目前中文开源领域参数量最大的高质量模型之一。DeepSeek团队在2024年推出的这款模型&#xff0c;以其惊人的6710亿参数量和出色的推理性能&#xff0c;引起了业界广泛关注。 作为一名AI基础…

mySQL复习

目录 一.写在前面 二.介绍 三.选择语句 四.内连接 五.列属性 一.写在前面 课程视频&#xff1a;【中字】SQL进阶教程 | 史上最易懂SQL教程&#xff01;10小时零基础成长SQL大师&#xff01;&#xff01;_哔哩哔哩_bilibili 课程所需资料&#xff1a; 链接&#xff1a;h…

基于SpringBoot+Vue的医院挂号管理系统+LW示例参考

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…

golang介绍,特点,项目结构,基本变量类型与声明介绍(数组,切片,映射),控制流语句介绍(条件,循环,switch case)

目录 golang 介绍 面向并发 面向组合 特点 项目结构 图示 入口文件 main.go 基本变量类型与声明 介绍 声明变量 常量 字符串(string) 字符串格式化 空接口类型 数组 切片 创建对象 追加元素 复制切片 map(映射) 创建对象 使用 多重赋值 控制流语句…

3.2-A-L1-2-第15讲-冒泡排序 mochen @denglexi

博观而约取 厚积而薄发 Observe extensively but select wisely; accumulate deeply but release sparingly. 每次比较两个相邻的元素&#xff0c;如果它们的顺序错误就把它 们交换过来。 每一轮进行两两比较&#xff0c;将该轮中最大/最小的值冒出来。 冒泡程序核心代码&#…

25、泛型

十二章、泛型 12-1 为何要有泛型 1、泛型&#xff1a;是一种标签。把元素的类型设计成一个参数&#xff0c;这个类型参数就叫做泛型 2、所谓泛型&#xff0c;就是允许在定义类、接口时通过一个标识表示类中 某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在…

[KEIL]单片机技巧 01

1、查看外设寄存器的值 配合对应的芯片开发手册以查看寄存器及其每一位的意义&#xff0c;可以解决90%以上的单纯的片内外设bug&#xff0c;学会如何通过寄存器的值来排外设上的蛊是嵌入式开发从小白到入门的重要一步&#xff0c;一定要善于使用这个工具&#xff0c;而不是外设…

TCP/IP 5层协议簇:网络层(IP数据包的格式、路由器原理)

目录 1. TCP/IP 5层协议簇 2. IP 三层包头协议 3. 路由器原理 4. 交换机和路由的对比 1. TCP/IP 5层协议簇 如下&#xff1a; 2. IP 三层包头协议 数据包如下&#xff1a;IP包头不是固定的&#xff0c;每一个数字是一个bit 其中数据部分是上层的内容&#xff0c;IP包头最…

免费轻巧多功能 PDF 处理工具:转换、压缩、提取一应俱全

软件技术 今天要给大家分享一款超实用的 PDF 处理工具&#xff0c;它免费又轻巧&#xff0c;如同随时待命的得力小帮手&#xff0c;功能之强大超乎想象&#xff0c;真的值得大家收藏。 这款工具是绿色版软件&#xff0c;解压后开启&#xff0c;满满的 PDF 处理功能便映入眼帘…

基于微信小程序的疫情互助平台(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;从2019年底新型冠状肺炎疫情的爆发以来&#xff0c;使很多工作的管理工作难度再上一层楼。为了在疫情期间能更好的维护信息管理&#xff0…

飞致云开源社区月度动态报告(2025年2月)

自2023年6月起&#xff0c;中国领先的开源软件公司飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源运营数据概览&…

数据库拓展操作

目录 一、截断表&#xff1a; 操作目的&#xff1a; 操作内容&#xff1a; 性能影响&#xff1a; 基本语法&#xff1a; 例子&#xff1a; 二、插入查询结果&#xff1a; 基本语法&#xff1a; 例子&#xff1a; 三、聚合函数&#xff1a; 常用函数&#xff1a; 基…

在 Mac 上使用 Docker 安装宝塔并部署 LNMP 环境

前言 只因为在mac上没有找到合适的PHP开发集成环境&#xff0c;之前有安装了Eserver&#xff0c;但是安装一些常用PHP扩展有时候还是需要手动去编译添加。phpStudy也没有找到适合Mac的版本&#xff0c;在后面安装了Parallels Desktop虚拟机 来运行Ubuntu系统搭建了一套LNMP环境…

Node.js二:第一个Node.js应用

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 创建的时候我们需要用到VS code编写代码 我们先了解下 Node.js 应用是由哪几部分组成的&#xff1a; 1.引入 required 模块&#xff1a;我们可以使用 requi…

Excel基础(详细篇):总结易忽视的知识点,有用的细节操作

目录 基础篇Excel主要功能必会快捷键LotusExcel的文件类型工作表基本操作表项操作选中与缩放边框线 自动添加边框线格式刷设置斜线表头双/多斜线表头不变形的:双/多斜线表头插入多行、多列单元格/行列的移动冻结窗口 方便查看数据打印的常见问题Excel格式数字格式日期格式文本…

vue3:四嵌套路由的实现

一、前言 1、嵌套路由的含义 嵌套路由的核心思想是&#xff1a;在某个路由的组件内部&#xff0c;可以定义子路由&#xff0c;这些子路由会渲染在父路由组件的特定位置&#xff08;通常是 <router-view> 标签所在的位置&#xff09;。通过嵌套路由&#xff0c;你可以实…

【实战篇】【深度解析DeepSeek:从机器学习到深度学习的全场景落地指南】

一、机器学习模型:DeepSeek的降维打击 1.1 监督学习与无监督学习的"左右互搏" 监督学习就像学霸刷题——给标注数据(参考答案)训练模型。DeepSeek在信贷风控场景中,用逻辑回归模型分析百万级用户数据,通过特征工程挖掘出"凌晨3点频繁申请贷款"这类魔…

【Python 数据结构 2.时间复杂度和空间复杂度】

Life is a journey —— 25.2.28 一、引例&#xff1a;穷举法 1.单层循环 所谓穷举法&#xff0c;就是我们通常所说的枚举&#xff0c;就是把所有情况都遍历了的意思。 例&#xff1a;给定n&#xff08;n ≤ 1000&#xff09;个元素ai&#xff0c;求其中奇数有多少个 判断一…

计算机毕业设计SpringBoot+Vue.js社区智慧养老监护管理平台(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…