Java基础(第九期):Java中的集合 ArrayList 集合的增删改查 Java实现学生信息管理系统

news2024/12/23 5:31:51

⚠️Java基础专栏

文章目录

    • ⚠ Java基础最后一期(第九期)到此结束
  • Java中的集合
    • 一、什么是集合
    • 二、ArrayList
        • 2.1 ArrayList介绍
        • 2.2ArrayList使用
        • 2.3 ArrayList添加
          • add()方法
          • add(index,E element)方法
        • 2.4 ArrayList删除
          • remove(index)方法
          • remove (object) 方法
        • 2.5 ArrayList修改
          • set(index ,element)方法
        • 2.6 ArrayList查询
          • get(index)方法
          • size()方法
        • 2.7 ArrayList集合的小练习
          • 练习一、
          • 练习二、
          • 练习三、
          • 练习四、
          • 练习五、
          • 练习六、
          • Array List常用方法总汇
    • 三、学生信息管理系统

⚠ ⚠ Java进阶专栏!!!!!

⚠ Java基础最后一期(第九期)到此结束

Java中的集合

一、什么是集合

  • 集合是一种容器,用来装数据,类似于数组。

与数组的区别就是,数组定义玩了,长度就固定了

  • 而集合是可变的,开发中用的最多。

二、ArrayList

2.1 ArrayList介绍

ArrayList:是一个可变数组,无参构造默认初始化一个长度为10空间,若是超出,那么会扩容到原来的1.5倍。

原理图:
在这里插入图片描述

看场景使用:

  1. 如果是固定不变的则使用数组
  2. 如果是随机的不确定的,在使用ArrayList集合存放。
2.2ArrayList使用

细节:创建StringBuilde 、 String、 ArrayList的对象,打印对象名,都没有看到地址值,都是元素的内容哦!

1. 构造方法: 
		public ArrayList() : 创建一个空的集合容器
		
		
2. 集合容器的创建细节:
		ArrayList list = new ArrayList();
		现象;可以添加任意数据类型
		弊端:数据不严谨

使用格式:

        // ArrayList的使用
        ArrayList<String> list = new ArrayList<>();
        list.add("泛型限定后只能添加字符串");
        System.out.println(list);   // [泛型限定后只能添加字符串]
  • <数据类型>: 里面写数据类型,jdk7以上在后面的<>中可以为空。

  • 泛型<>:

    <>:中不能出现基本数据类型,想要写其基本数据类型,就得使用包装类(首字母大写就会有提示)

集合练习:

        // 1. 创建一个集合容器,内部存储 11.1 22.2 33.3
        ArrayList<Double> num = new ArrayList<>();
        num.add(11.1);
        num.add(22.2);
        num.add(33.3);
        System.out.println(num);

        // 2. 创建一个集合容器,内部存储 张三,李四,王五
        ArrayList<String> string = new ArrayList<>();
        string.add("张三");
        string.add("李四");
        string.add("王五");
        System.out.println(string);
  • 泛型非常强势的。
2.3 ArrayList添加
add()方法
  • 将指定的元素添加到集合的尾部。
  • 返回值为boolean类型(永远为true)。
add(index,E element)方法
  • 将元素插入到指定的位置上(插队)
  • 返回值为空,有索引必定会出现越界的关系
        // add()无参方法
        ArrayList<String> list = new ArrayList<>();
        list.add("liu");
        list.add("jin");
        list.add("tao");
        System.out.println(list);

        // add(index, E element) 带参方法(插入添加)
        list.add(2, "插入");
        list.add(4, "尾部添加");
        System.out.println(list);
  • 记住带参方法添加不能越界
2.4 ArrayList删除
remove(index)方法
  • 根据索引号做删除,返回值为被删除的元素。
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        // remove(index)删除方法
        System.out.println(list); // [张三, 李四, 王五]
        String result = list.remove(1);
        System.out.println(result);   // 李四
        System.out.println(list);   // [张三, 王五]
remove (object) 方法
  • 根据指定元素删除,返回值为是否成功(boolean类型)
       // remove(object)删除方法
        System.out.println(list);   // [张三, 王五]
        boolean remove = list.remove("王五");
        System.out.println(remove);     // true
        System.out.println(list);    // [张三]

2.5 ArrayList修改
set(index ,element)方法
  • 修改指定索引号的元素值,返回被覆盖(修改)的值。
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        // set(index , new element)方法
        String result = list.set(2, "赵六");
        System.out.println(result);  // 王五
        System.out.println(list);   // [张三, 李四, 赵六]
2.6 ArrayList查询
get(index)方法
  • 根据索引号获取集合元素,返回索引对应的元素
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        // 查询(index)方法
        String result = list.get(2);
        System.out.println(result); // 王五
size()方法
  • 返回集合中元素的个数
        // 查询集合长度方法
        int len = list.size();
        System.out.println(len);    // 3

以上就是集合ArrayList的常用过的增删改查操作了。

2.7 ArrayList集合的小练习
练习一、
需求:创建一个类型为字符串类型的集合,然后取出每一个元素
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        for (int i = 0; i < list.size(); i++){
            System.out.println(list.get(i));
        }
练习二、
需求:定义一个字符串类型的集合,然后对字符串长度为4的元素做打印。
        ArrayList<String> list = new ArrayList<>();
        list.add("12");
        list.add("123");
        list.add("1234");
        list.add("1212");
        list.add("1213");
        list.add("1213213");
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if (s.length() == 4) {
                System.out.println(s);
            }
        }
练习三、
需求:创建一个存储学生对象的集合,存储三个学生对象,并且打印年龄低于18岁的学生信息

Student类

package com.liujintao.domain;

public class Student {
    String name;
    int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }
}

测试类文件

package com.liujintao.test;

import com.liujintao.domain.Student;

import java.util.ArrayList;

public class ArrayListText02 {
    public static void main(String[] args) {
        Student stu1 = new Student("张三", 24);
        Student stu2 = new Student("李四", 8);
        Student stu3 = new Student("王五", 15);

        // 创建学生集合
        ArrayList<Student> list = new ArrayList<>();
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

        // 输出年龄小于18岁的学生信息
        for (int i = 0; i < list.size(); i++) {
            Student age = list.get(i);
            if (age.getAge() == 18) {
                System.out.println(age.getName() +"---" + age.getAge());
            }
        }
    }

}

练习四、
需求:
    创建一个存储学生对象的集合,存储3个学生对对象,使用程序实现在控制台遍历该集合,学生的姓名和年龄来自于键盘录入。

测试类:

package com.liujintao.test;

import com.liujintao.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListText03 {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        for (int i = 1; i <= 3; i++) {
            System.out.println("请输入第" + i + "个学生的信息");
            addStudent(list);
        }

        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getName() + "---" + stu.getAge());
        }
    }


    public static void addStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();
        Student stu = new Student(name, age);
        list.add(stu);
    }
}

学生类:

package com.liujintao.domain;

public class Student {
    String name;
    int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }
}

请输入第1个学生的信息
请输入学生姓名:
张三
请输入学生年龄:
23
请输入第2个学生的信息
请输入学生姓名:
李四
请输入学生年龄:
24
请输入第3个学生的信息
请输入学生姓名:
王五
请输入学生年龄:
25
张三—23
李四—24
王五—25

练习五、
需求:创建一个存储String的集合,内部存储(test, 张三, test,test, 李四)字符串
   删除所有的test字符串,删除后,将集合剩余元素打印在控制台
  • 注意点,ArrayList集合是自动收缩的,删除了,会补齐,印象影响引用的指向。

  • 建议,正序清除记得–

  • 反序正常遍历即可。

package com.liujintao.test;

import java.util.ArrayList;

public class ArrayListTest04 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("test");
        list.add("张三");
        list.add("李四");
        list.add("test");
        list.add("test");
        // 方法一:正序遍历处理
        method1(list);
        // 方法二:倒序遍历处理
        method2(list);
    }

    private static void method2(ArrayList<String> list) {
        for (int i = list.size() - 1; i >= 0; i--) {
            String s = list.get(i);
            if ("test".equals(s)) {
                list.remove(i);
            }
        }
        System.out.println(list);
    }

    private static void method1(ArrayList<String> list) {
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if ("test".equals(s)) {
                list.remove(i);
                i--;
            }
        }
        System.out.println(list);
    }
}

练习六、

需求: 定义一个方法,方法接受一个集合对象(泛型为Student)

方法内部将年龄低于 18 的学生对象找出

并存入新集合对象,方法返回新集合

package com.liujintao.test;

import com.liujintao.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListTest05 {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        // 初始化JavaBean数据
        list.add(new Student("张三", 13));
        list.add(new Student("李四", 14));
        list.add(new Student("王五", 24));
        list.add(new Student("赵六", 15));
        list.add(new Student("小明", 23));

        ArrayList<Student> result = handleFilter(list);
        // 遍历打印
        for (Student stu : result) {
            System.out.println(stu.getName() + " --" + stu.getAge());
        }
    }

    /**
     * 过滤学生数据
     * @param list
     * @return ArrayList<Student> list
     */
    private static ArrayList<Student> handleFilter(ArrayList<Student> list) {
        ArrayList<Student> newList = new ArrayList<>();
        for (Student stu : list) {
            if (stu.getAge() < 18) {
                newList.add(stu);
            }
        }
        return newList;
    }


}

张三 --13
李四 --14
赵六 --15

Array List常用方法总汇

在这里插入图片描述

三、学生信息管理系统

需求:完成学生的信息管理(增删改查功能的实现)

根据菜单栏(完成相应的功能);

            System.out.println("1   添加学生");
            System.out.println("2   删除学生");
            System.out.println("3   修改学生");
            System.out.println("4   查看学生");
            System.out.println("5   退出");

业务逻辑类:

package com.liujintao.priject;

import java.util.ArrayList;
import java.util.Scanner;

public class manageSystem {
    public static void main(String [] args) {
        /**
         * 启动
         */
        start();


    }

    /**
     * 系统入口
     */
    public static void start() {
        // 学生信息库
        ArrayList<Student> list = new ArrayList<>();
        while (true) {
            System.out.println("-----------------欢迎来到学生管理系统-----------------");
            System.out.println("1   添加学生");
            System.out.println("2   删除学生");
            System.out.println("3   修改学生");
            System.out.println("4   查看学生");
            System.out.println("5   退出");

            System.out.println("请输入您的选择:");
            Scanner sc = new Scanner(System.in);
            sc = new Scanner(System.in);
            int num = sc.nextInt();
            switch (num) {
                case 1:
                    addStudent(list);
                    break;
                case 2:
                    handleDelete(list);
                    break;
                case 3:
                    changeStudent(list);
                    break;
                case 4:
                    queryStudent(list);
                    break;
                case 5:
                    System.out.println("退出");
                    System.exit(0);
                default:
                    System.out.println("业务暂未开通,请确认后重试!");
                    break;
            }

        }

    }

    /**
     * 添加学生信息
     * @param list
     */
    public static void addStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生学号");
        String id = sc.next();
        // 下标都不存在,则视为学生信息不存在,放行
        int result = getIndex(id, list);
        if (result == -1) {
            System.out.println("请输入学生姓名");
            String name = sc.next();
            System.out.println("请输入学生年龄");
            int age = sc.nextInt();
            System.out.println("请输入学生出生日期");
            String datebirth = sc.next();
            Student stu = new Student(id, name, age, datebirth);
            list.add(stu);
            System.out.println("添加成功!");
        } else {
            System.out.println("该信息已经被使用");
        }

    }

    /**
     * 删除学生信息
     */
    public static void handleDelete (ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入需要删除的学生学号:");
        String inputId = sc.next();
        // 根据学号拿到学生对象的下标
        int id = getIndex(inputId, list);
        for (int i = 0; i < list.size(); i++) {
            if (id == -1) {
                System.out.println("无法删除不存在的学生信息!");
                break;
            } else {
                list.remove(id);
                System.out.println("删除成功!");
            }
        }
    }

    /**
     * 修改学生信息
     */
    public static void changeStudent(ArrayList<Student> list) {
        // 拿到需要删除的学生学号,然后再得到下标处理
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您需要修改的学生编号:");
        String inputId = sc.next();
        // 调用方法处理得到下标
        int index = getIndex(inputId, list);
        if (index != -1) {
            System.out.println("请输入修改后的姓名:");
            String changeName = sc.next();
            System.out.println("请输入修改后的年龄:");
            int changeAge = sc.nextInt();
            System.out.println("请输入修改后的出生日期:");
            String changeDate = sc.next();
            // 将新的值覆盖
            list.get(index).setId(inputId);
            list.get(index).setName(changeName);
            list.get(index).setAge(changeAge);
            list.get(index).setDatebirth(changeDate);
            System.out.println("修改成功!");
        } else {
            System.out.println("您需要修改的学生信息不存在!");
        }
    }

    /**
     * 查询学生信息
     */
    public static void queryStudent (ArrayList<Student> list) {
        System.out.println("学号\t\t\t\t姓名\t年龄\t出生日期");
        for (Student stu : list) {
            System.out.println(stu.getId() + stu.getName() + stu.getAge() + stu.getDatebirth());
        }
    }

    /**
     * 获取学生在信息库的下标(根据id来判断)
     */
    public static int getIndex(String id, ArrayList<Student> list) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }
}

javaBean数据类:

package com.liujintao.priject;
class Student {
    /**
     * 成员方法学生信息
     * id: 学号
     * name:姓名
     * age:年龄
     * datebirth:出生日期
     */
    private String id;
    private String name;
    private int age;
    private String datebirth;

    /**
     * 初始化数据使用构造器
     */
    public Student() {
    }

    public Student(String id, String name, int age, String datebirth) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.datebirth = datebirth;
    }

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return datebirth
     */
    public String getDatebirth() {
        return datebirth;
    }

    /**
     * 设置
     * @param datebirth
     */
    public void setDatebirth(String datebirth) {
        this.datebirth = datebirth;
    }

}

在这里插入图片描述

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

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

相关文章

《微信小程序开发从入门到实战》学习二十九

3.4 开发参与投票页面 3.4.4 使用label组件扩大单击区域 radio组件的单击区域很小&#xff0c;只有文字左侧的圆圈可以点击&#xff0c;实际使用者一般会期望点击文字也可以选中选项&#xff0c;用label组件包含radio组件&#xff0c;就可以实现点击文字也可以选项。 label组…

基于WSL2+Docker+VScode搭建机器学习(深度学习)开发环境

基于WSL2DockerVScode搭建机器学习(深度学习)开发环境 内容概述&#xff1a;由于最近配发了新的工作电脑但不想装双系统&#xff0c;因此通过本博文来记录基于Windows子系统WSLDocker搭建机器学习与深度学习开发环境的流程步骤&#xff0c;同时记录该过程中所遇到的相关问题及解…

上新!2023年汉字小达人市级比赛在线模拟题增加2个刷题试卷

各位小学三年级到五年级的上海学霸孩子们&#xff0c;刚刚结束了上海小学生古诗文大会的复赛&#xff0c;就紧锣密鼓地全身心投入到上海小学生汉字小达人的市级比赛的备赛中了。 为了助各位孩子一臂之力&#xff0c;我把在线模拟题进行了更新&#xff0c;新增了两个可以刷题的试…

安卓用SQLite数据库存储数据

什么是SQLite&#xff1f; SQLite是安卓中的轻量级内置数据库&#xff0c;不需要设置用户名和密码就可以使用。资源占用较少&#xff0c;运算速度也比较快。 SQLite支持&#xff1a;null&#xff08;空&#xff09;、integer&#xff08;整形&#xff09;、real&#xff08;小…

深度学习第二天:RNN循环神经网络

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 文章目录 介绍 记忆功能对比展现 任务描述 导入库 处理数据 前馈神经网络 循环神经网络 编译与训练模型 模型预测 可能的问题 梯度消失 梯…

开源称重系统-有源代码

最近发现网上有个不错的开源称重软件&#xff0c;界面做的非常漂亮&#xff0c;收藏一下&#xff1b;还有硬件对接&#xff1a;耀华A9仪表、海康威视监控&#xff0c;IC卡读卡器&#xff0c;控制器对接都有&#xff0c;是个不错的软件&#xff0c;非常感谢作者分享&#xff1b;…

Day45:300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

文章目录 300.最长递增子序列思路代码实现 674. 最长连续递增序列思路代码实现 718. 最长重复子数组思路代码实现 300.最长递增子序列 题目链接 思路 单个字符都是一个长为1的子序列&#xff0c;直接初始化dp为1。先固定一个元素位置i&#xff0c;判断0-i范围内到i的最长子序…

十六、互斥量

互斥量的目的就是为了实现互斥访问。 1、概述 (1)举例说明&#xff1a; 怎么独享厕所&#xff1f;自己开门上锁&#xff0c;完事了自己开锁。 你当然可以进去后&#xff0c;让别人帮你把门&#xff1a;但是&#xff0c;命运就掌握在别人手上了。 …

分享一篇很久以前的文档-VMware Vsphere菜鸟篇

PS&#xff1a;由于内容是很久以前做的记录&#xff0c;在整理过程中发现了一些问题&#xff0c;简单修改后分享给大家。首先ESXI节点和win7均运行在VMware Workstation上面&#xff0c;属于是最底层&#xff0c;而新创建的CentOS则是嵌套后创建的操作系统&#xff0c;这点希望…

得物面试:MySQL为何需要4M来双写?为什么redo不双写?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、百度、网易的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; MySQL为何需要4M来双写&#xff1f;为什么redo不双写&…

count=0语句的位置

简洁一点的代码&#xff1a; 像count0这种语句要注意放好位置&#xff0c;尤其是在循环里。

2017年3月24日 Go生态洞察:HTTP/2服务器推送技术深度解析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

操作无法完成错误0x0000709的解决办法,解决0x0000709错误

操作无法完成错误0x0000709是一种常见的Windows错误。这篇文章将带大家了解错误的原因&#xff0c;并提供一些解决该问题的方法&#xff0c;希望能够帮助大家解决0x0000709错误问题。 操作系统错误是我们在使用电脑时经常遇到的问题之一。其中之一就是操作无法完成错误0x000070…

ethernet II 的故事

以太帧有很多种类型。不同类型的帧具有不同的格式和MTU值。但在同种物理媒体上都可同时存在。 以太网第二版或者称之为Ethernet II 帧&#xff0c;DIX帧&#xff0c;是最常见的帧类型。并通常直接被IP协议使用。 格式 当数据帧到达网卡时&#xff0c;网卡要先去掉前导码&#…

安卓系统修图软件(一)

平时我们会不时在朋友圈发自己的自拍照&#xff0c;或者是风景图等&#xff0c;许多小伙伴们此时会对照片进行一定的修理&#xff0c;比如添加滤镜等操作。在电脑上用ps修图比较繁琐&#xff0c;日常中大可不必用这把宰牛刀&#xff1b;而手机自带的编辑器&#xff0c;或者是QQ…

位图及有关海量数据处理

bitset 1.给40亿个不重复的无符号整数&#xff0c;没排过序&#xff0c;给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个中 ①.如果用排序加二分查找&#xff0c;40亿个数需要16g内存&#xff0c;内存开不出这么大连续空间 ②.每个值映射一个比特位&#xff0c;…

【Linux】进程间通信——system V共享内存、共享内存的概念、共享内存函数、system V消息队列、信号量

文章目录 进程间通信1.system V共享内存1.1共享内存原理1.2共享内存数据结构1.3共享内存函数 2.system V消息队列2.1消息队列原理 3.system V信号量3.1信号量原理3.2进程互斥 4.共享内存的使用示例 进程间通信 1.system V共享内存 1.1共享内存原理 共享内存区是最快的IPC形式…

图形编辑器开发:缩放和旋转控制点

大家好&#xff0c;我是前端西瓜哥。好久没写图形编辑器开发的文章了。 今天来讲讲控制点。它是图形编辑器的不可缺少的基础功能。 控制点是吸附在图形上的一些小矩形和圆形点击区域&#xff0c;在控制点上拖拽鼠标&#xff0c;能够实时对被选中进行属性的更新。 比如使用旋…

python_接口自动化测试框架

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

基于springBoot+Vue的停车管理系统

开发环境 IDEA JDK1.8 MySQL8.0Node 系统简介 本项目为前后端分离项目&#xff0c;前端使用vue&#xff0c;后端使用SpringBoot开发&#xff0c;主要的功能有用户管理&#xff0c;停车场管理&#xff0c;充值收费&#xff0c;用户可以注册登录系统&#xff0c;自主充值和预…