Java教程练习:学生信息管理系统

news/2025/1/31 9:22:42 标签: java, 开发语言

文章目录

  • 学生管理系统
    • 1、需求文档
      • 需求
      • 分析
    • 2、新建学生实体类
    • 3、实现基本菜单和退出功能
    • 4、查询和添加
      • 4.1 查询学生信息
      • 4.2 添加学生信息
    • 5、修改和删除
      • 5.1 删除功能实现
      • 5.2 修改功能实现
  • 完整代码下载

学生管理系统

1、需求文档

需求

采取控制台的方式书写学生管理系统。

分析

初始菜单:

学生类:

  • 属性:id、姓名、年龄、家庭住址

添加功能:

  • 键盘录入每一个学生信息并添加,需要满足以下要求:
    • id唯一

删除功能:

  • 键盘录入要删除的学生id,需要满足以下要求:
    • id存在删除。
    • id不存在,需要提示不存在,并返回初始菜单。

修改功能:

  • 键盘录入要修改的学生id,需要满足以下要求
    • id存在,继续录入其他信息
    • id不存在,需要提示不存在,并回到初始菜单

查询功能:

  • 打印所有的学生信息,需要满足以下要求:
    • 如果没有学生信息,提示:当前无学生信息,请添加后查询。
    • 如果有学生信息,需要按照格式化输出。

2、新建学生实体类

Student.java

java">package com.nobug.studentsystem;

/**
 * @Author: wang
 * @Create: 2025/1/28
 * @Description: 学生类
 **/
public class Student {
    // id name age address
    private String id;
    private String name;
    private int age;
    private String address;

    public Student(){

    }

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

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

3、实现基本菜单和退出功能

java">package com.nobug.studentsystem;

import java.util.Scanner;

public class StudentSystem {
    public static void main(String[] args) {
        loop: 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("—— —— —— —— —— —— —— —— —— —— —— —— —— —— —— ——");
            System.out.println("请输入您的选择:");
            Scanner scanner = new Scanner(System.in);
            String choice = scanner.next();
            switch (choice) {
                case "1":
                    addStudent();
                    break;
                case "2":
                    deleteStudent();
                    break;
                case "3":
                    updateStudent();
                    break;
                case "4":
                    queryStudent();
                    break;
                case "5":
                    System.out.println("退出");
                    break loop;
                default:
                    System.out.println("没有这个选项");
            }
        }
    }

    // 添加学生
    public static void addStudent(){
        System.out.println("添加学生");
    }
    // 删除学生
    public static void deleteStudent(){
        System.out.println("删除学生");
    }
    // 修改学生
    public static void updateStudent(){
        System.out.println("修改学生");
    }
    // 查询学生
    public static void queryStudent(){
        System.out.println("查询学生");
    }
}

运行效果:

在这里插入图片描述

4、查询和添加

4.1 查询学生信息

代码实现:

java">// 查询学生
public static void queryStudent(ArrayList<Student> students){
    // 没有学生信息
    if(students.isEmpty()){
        System.out.println("当前无学生信息,请添加后再查询。");
        return;
    }
    // 存在学生信息
    System.out.println("id\t\t姓名\t\t年龄\t\t家庭住址");
    for(Student student : students){
        System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getAge() + "\t" + student.getAddress());
    }
}

4.2 添加学生信息

代码实现:

java">// 添加学生
public static void addStudent(ArrayList<Student> students){
    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入学生的id:");
    String id = scanner.next();

    System.out.print("请输入学生的姓名:");
    String name = scanner.next();

    System.out.print("请输入学生的年龄:");
    int age = scanner.nextInt();

    System.out.print("请输入学生的家庭住址:");
    String address = scanner.next();

    Student student = new Student(id, name, age, address);
    students.add(student);
    System.out.println("学生信息添加成功!");
}

修改代码实现,id唯一,首先编写判断id是否唯一的方法:

java">// 判断id在集合中是否存在
public static boolean containsStudentId(ArrayList<Student> students, String id){
    // 循环遍历集合里面的每一个学生对象
    // 拿到学生对象后,获取id并进行判断
    for(Student student : students){
        if(student.getId().equals(id)){
            return true;
        }
    }
    return false;
}

修改添加学生信息代码:

java">public static void addStudent(ArrayList<Student> students){
    Student student = new Student();
    Scanner scanner = new Scanner(System.in);
    while(true){
        System.out.print("请输入学生的id:");
        String id = scanner.next();
        boolean isContainId = containsStudentId(students, id);
        if(isContainId){
            // id已经存在,重新录入id
            System.out.println("id已经存在,请重新录入:");
        }else {
            // id不存在,可以使用
            student.setId(id);
            break;
        }
    }

    System.out.print("请输入学生的姓名:");
    String name = scanner.next();
    student.setName(name);

    System.out.print("请输入学生的年龄:");
    int age = scanner.nextInt();
    student.setAge(age);

    System.out.print("请输入学生的家庭住址:");
    String address = scanner.next();
    student.setAddress(address);

    students.add(student);
    System.out.println("学生信息添加成功!");
}

实现效果:

在这里插入图片描述

5、修改和删除

5.1 删除功能实现

实现代码:

java">// 删除学生
    public static void deleteStudent(ArrayList<Student> students){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要删除的学生id:");
        String id = scanner.next();
        int index = getIndex(students, id);
        if(index == -1){
            System.out.println("学生id不存在,删除失败。");
        }else {
            students.remove(index);
            System.out.println("学生【"+id+"】信息删除成功!");
        }
    }

实现效果:

在这里插入图片描述

5.2 修改功能实现

代码实现:

java">// 修改学生
public static void updateStudent(ArrayList<Student> students){
    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入要修改的学生id:");
    String id = scanner.next();
    int index = getIndex(students, id);
    if(index == -1){
        System.out.println("学生id不存在,请重新输入:");
        return;
    }
    Student student = students.get(index);
    // 输入其他信息并修改
    System.out.print("请输入要修改的学生姓名:");
    String newName = scanner.next();
    student.setName(newName);
    System.out.print("请输入要修改的学生年龄:");
    int newAge = scanner.nextInt();
    student.setAge(newAge);
    System.out.print("请输入要修改的学生家庭住址:");
    String newAddress = scanner.next();
    student.setAddress(newAddress);

    System.out.println("学生信息修改成功。");
}

完整代码下载

分享文件:studentsystem.zip
链接:https://pan.xunlei.com/s/VOHm8TBUsOWhIalxfSEUYiZ-A1#
提取码:v87w
复制这段内容后打开迅雷,查看更方便

http://www.niftyadmin.cn/n/5838543.html

相关文章

搜索与图论复习1

1深度优先遍历DFS 2宽度优先遍历BFS 3树与图的存储 4树与图的深度优先遍历 5树与图的宽度优先遍历 6拓扑排序 1DFS&#xff1a; #include<bits/stdc.h> using namespace std; const int N10; int n; int path[N]; bool st[N]; void dfs(int u){if(nu){for(int i0;…

从零搭建一个Vue3 + Typescript的脚手架——day3

3.项目拓展配置 (1).配置Pinia Pinia简介 Pinia 是 Vue.js 3 的状态管理库&#xff0c;它是一个轻量级、灵活、易于使用的状态管理库。Pinia 是 Vue.js 3 的官方状态管理库&#xff0c;它可以帮助开发者更好地管理应用的状态。Pinia 是一个开源项目&#xff0c;它有丰富的文档…

vscode和pycharm的区别

VSCode&#xff08;Visual Studio Code&#xff09;和 PyCharm 是两款常用的 Python 开发工具&#xff0c;它们在功能和使用体验上有一些关键区别&#xff1a; 1. 核心定位 VSCode&#xff1a;轻量级、多语言支持的代码编辑器&#xff0c;依靠插件扩展 Python 开发能力。PyCh…

Cesium ArcGisMapServerImageryProvider API 介绍

作为一名GIS研究生&#xff0c;WebGIS 技术无疑是我们必学的核心之一。说到WebGIS&#xff0c;要提的就是 Cesium —— 这个让3D地球可视化变得简单又强大的工具。为了帮助大家更好地理解和使用 Cesium&#xff0c;我决定把我自己在学习 Cesium 文档过程中的一些心得和收获分享…

理解PLT表和GOT表

1 简介 现代操作系统都是通过库来进行代码复用&#xff0c;降低开发成本提升系统整体效率。而库主要分为两种&#xff0c;一种是静态库&#xff0c;比如windows的.lib文件&#xff0c;macos的.a&#xff0c;linux的.a&#xff0c;另一种是动态库&#xff0c;比如windows的dll文…

深入解析JUnit中的@ClassRule注解

在Java开发中&#xff0c;JUnit是一个非常流行的单元测试框架&#xff0c;它为开发者提供了强大的工具来编写和执行测试用例。今天&#xff0c;我们来深入探讨一下JUnit中的ClassRule注解&#xff0c;看看它是如何工作的&#xff0c;并通过一个实际的示例来加深理解。 一、Clas…

记录一次Sqoop从MySQL导入数据到Hive问题的排查经过

个人博客地址:记录一次Sqoop从MySQL导入数据到Hive问题的排查经过 | 一张假钞的真实世界 问题描述 MySQL中原始数据有790W+的记录数,在Sqoop抽取作业成功的情况下在Hive中只有500W左右的记录数。 排查过程 数据导入脚本Log 通过Log可以发现以下信息: 该Sqoop任务被分解…

Java---猜数字游戏

本篇文章所实现的是Java经典的猜数字游戏 , 运用简单代码来实现基本功能 目录 一.题目要求 二.游戏准备 三.代码实现 一.题目要求 随机生成一个1-100之间的整数(可以自己设置区间&#xff09;&#xff0c;提示用户猜测&#xff0c;猜大提示"猜大了"&#xff0c;…