Java 复习笔记 - 学生管理系统篇

news2024/11/27 4:24:48

文章目录

  • 学生管理系统
    • 一,需求部分
      • 需求
      • 分析
        • 初始菜单
        • 学生类
        • 添加功能
        • 删除功能
        • 修改功能
        • 查询功能
    • 二,实现部分
      • (一)初始化主界面
      • (二)编写学生类
      • (三)编写添加学生方法
      • (四)编写删除学生方法
      • (五)编写修改学生方法
      • (六)编写查询学生方法
      • (七)整合代码,集成系统


学生管理系统

一,需求部分

需求

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

分析

初始菜单

"-------------欢迎进入学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"

学生类

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

添加功能

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

  • id唯一

删除功能

键盘录入要删除的学生id,需要满足以下要求:

  • id存在删除
  • id不存在,需要提示不存在,并回到初始菜单

修改功能

键盘录入要修改的学生id,需要满足以下要求

  • id存在,继续录入其他信息
  • id不存在,需要提示不存在,并回到初始菜单

查询功能

打印所有的学生信息,需要满足以下要求

  • 如果没有学生信息,提示:当前无学生信息,请添加后再查询
  • 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id		姓名		年龄		家庭住址
2023001	张三		23		 南京
2023002	李四		24		 北京
2023003	王五		25		 广州
2023004	赵六	 	26		 深圳

二,实现部分

(一)初始化主界面

要初始化学生管理系统的主界面,可以按照以下思路进行操作:

  1. 创建一个学生管理系统对象,用于管理学生信息。
  2. 使用一个循环,使主界面一直显示,直到用户选择退出。
  3. 在循环中,打印主界面菜单供用户选择操作。
  4. 根据用户的选择,调用学生管理系统对象的相应方法进行操作。
  5. 根据操作结果,显示相应的反馈信息给用户。

下面是一个示例的代码片段,演示了如何初始化学生管理系统的主界面:

import java.util.Scanner;

public class StudentManagementSystem {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int choice = 0;
        
        while (choice != 5) {
            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.print("请输入您的选择: ");
            
            choice = scanner.nextInt();
            
            switch (choice) {
                case 1:
                    // 添加学生逻辑
                    break;
                case 2:
                    // 删除学生逻辑
                    break;
                case 3:
                    // 修改学生逻辑
                    break;
                case 4:
                    // 查询学生逻辑
                    break;
                case 5:
                    System.out.println("感谢使用学生管理系统,再见!");
                    break;
                default:
                    System.out.println("无效的选择,请重新输入!");
                    break;
            }
            
            System.out.println(); // 输出空行,增加可读性
        }
        
        scanner.close();
    }
}

在这个示例中,我们首先创建了一个StudentManagementSystem对象system,用于管理学生信息。然后,在一个无限循环中,打印主界面菜单供用户选择操作。根据用户的选择,我们调用相应的学生管理系统方法进行操作。当用户选择退出时,我们使用System.exit(0)结束程序的执行。

(二)编写学生类

学生类所含属性:id、姓名、年龄、家庭住址

要编写学生类,可以按照以下思路进行操作:

  • 定义学生类,设置其属性和方法。
  • 根据需求,确定学生类的属性,id、姓名、年龄、家庭地址。
  • 为每个属性添加相应的访问器(getter)和修改器(setter)方法,用于获取和设置属性的值。

下面是一个示例的学生类代码片段,演示了如何编写学生类:

public class Student {
    private int id;
    private String name;
    private int age;
    private String address;
    
    public Student(int id, String name, int age, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }
    
    // Getter and Setter methods
    
    public int getId() {
        return id;
    }
    
    public void setId(int 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;
    }
}

(三)编写添加学生方法

public void addStudent() {                                
    Scanner scanner = new Scanner(System.in);             
                                                          
    System.out.println("请输入学生ID:");                       
    int id = scanner.nextInt();                           
    scanner.nextLine(); // 消费掉换行符                         
                                                          
    System.out.println("请输入学生姓名:");                       
    String name = scanner.nextLine();                     
                                                          
    System.out.println("请输入学生年龄:");                       
    int age = scanner.nextInt();                          
    scanner.nextLine(); // 消费掉换行符                         
                                                          
    System.out.println("请输入学生家庭住址:");                     
    String address = scanner.nextLine();                  
                                                          
    Student student = new Student(id, name, age, address);
    students.add(student);                                
                                                          
    System.out.println("学生添加成功!");                        
}                                                         

(四)编写删除学生方法

public void deleteStudent() {                
    Scanner scanner = new Scanner(System.in);
                                             
    System.out.println("请输入要删除的学生ID:");      
    int id = scanner.nextInt();              
                                             
    boolean found = false;                   
                                             
    for (Student student : students) {       
        if (student.getId() == id) {         
            students.remove(student);        
            found = true;                    
            System.out.println("学生删除成功!");   
            break;                           
        }                                    
    }                                        
                                             
    if (!found) {                            
        System.out.println("未找到匹配的学生ID!");   
    }                                        
}              

(五)编写修改学生方法

public void updateStudent() {                    
    Scanner scanner = new Scanner(System.in);    
                                                 
    System.out.println("请输入要修改的学生ID:");          
    int id = scanner.nextInt();                  
    scanner.nextLine(); // 消费掉换行符                
                                                 
    boolean found = false;                       
                                                 
    for (Student student : students) {           
        if (student.getId() == id) {             
            System.out.println("请输入学生姓名:");      
            String name = scanner.nextLine();    
            student.setName(name);               
                                                 
            System.out.println("请输入学生年龄:");      
            int age = scanner.nextInt();         
            scanner.nextLine(); // 消费掉换行符        
            student.setAge(age);                 
                                                 
            System.out.println("请输入学生家庭住址:");    
            String address = scanner.nextLine(); 
            student.setAddress(address);         
                                                 
            found = true;                        
            System.out.println("学生修改成功!");       
            break;                               
        }                                        
    }                                            
                                                 
    if (!found) {                                
        System.out.println("未找到匹配的学生ID!");       
    }                                            
}                                                

(六)编写查询学生方法

public void displayStudents() {                                                                                                          
    if (students.isEmpty()) {                                                                                                            
        System.out.println("当前无学生信息,请添加后再查询!");                                                                                          
    } else {                                                                                                                             
        System.out.println("id\t\t姓名\t\t年龄\t\t家庭住址");                                                                                    
        for (Student student : students) {                                                                                               
            System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t" + student.getAge() + "\t\t" + student.getAddress());
        }                                                                                                                                
    }                                                                                                                                    
}                                                                                                                                        

(七)整合代码,集成系统

package net.army.java.test;

/**
 * 功能:学生管理系统
 * 日期:2023年09月02日
 * 作者:梁辰兴
 */
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class StudentManagementSystem {
    private List<Student> students;

    public StudentManagementSystem() {
        students = new ArrayList<>();
    }

    public void addStudent() {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入学生ID:");
        int id = scanner.nextInt();
        scanner.nextLine(); // 消费掉换行符

        System.out.println("请输入学生姓名:");
        String name = scanner.nextLine();

        System.out.println("请输入学生年龄:");
        int age = scanner.nextInt();
        scanner.nextLine(); // 消费掉换行符

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

        Student student = new Student(id, name, age, address);
        students.add(student);

        System.out.println("学生添加成功!");
    }

    public void deleteStudent() {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入要删除的学生ID:");
        int id = scanner.nextInt();

        boolean found = false;

        for (Student student : students) {
            if (student.getId() == id) {
                students.remove(student);
                found = true;
                System.out.println("学生删除成功!");
                break;
            }
        }

        if (!found) {
            System.out.println("未找到匹配的学生ID!");
        }
    }

    public void updateStudent() {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入要修改的学生ID:");
        int id = scanner.nextInt();
        scanner.nextLine(); // 消费掉换行符

        boolean found = false;

        for (Student student : students) {
            if (student.getId() == id) {
                System.out.println("请输入学生姓名:");
                String name = scanner.nextLine();
                student.setName(name);

                System.out.println("请输入学生年龄:");
                int age = scanner.nextInt();
                scanner.nextLine(); // 消费掉换行符
                student.setAge(age);

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

                found = true;
                System.out.println("学生修改成功!");
                break;
            }
        }

        if (!found) {
            System.out.println("未找到匹配的学生ID!");
        }
    }

    public void displayStudents() {
        if (students.isEmpty()) {
            System.out.println("当前无学生信息,请添加后再查询!");
        } else {
            System.out.println("id\t\t姓名\t\t年龄\t\t家庭住址");
            for (Student student : students) {
                System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t" + student.getAge() + "\t\t" + student.getAddress());
            }
        }
    }

    public static void main(String[] args) {
        StudentManagementSystem system = new StudentManagementSystem();

        // 菜单
        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 scanner = new Scanner(System.in);
            int choice = scanner.nextInt();

            switch (choice) {
                case 1:
                    system.addStudent();
                    break;
                case 2:
                    system.deleteStudent();
                    break;
                case 3:
                    system.updateStudent();
                    break;
                case 4:
                    system.displayStudents();
                    break;
                case 5:
                    System.out.println("谢谢使用,再见!");
                    System.exit(0);
                default:
                    System.out.println("无效的选择,请重新输入!");
                    break;
            }
        }
    }
}

运行效果:
在这里插入图片描述

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

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

相关文章

ref 操作 React 定时器

秒表 需要将 interval ID 保存在 ref 中&#xff0c;以便在需要时能够清除计时器。 import { useRef, useState } from "react";const SecondWatch () > {const [startTime, setStartTime] useState<any>(null);const [now, setNow] useState<any>…

Elasticsearch中RestClient使用

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

如何将自己的镜像使用 helm 部署

本文分别从如下几个方面来分享一波 如何将自己的镜像使用 helm 部署 简单介绍一下 helm 使用自己写 yaml 文件的方式在 k8s 中部署应用 使用 helm 的方式在 k8s 中部署应用 简单介绍一下 helm Helm 是 Kubernetes 的包管理器&#xff0c;在云原生领域用于应用打包和分发 Hel…

12. 微积分 - 梯度积分

Hi,大家好。我是茶桁。 上一节课,我们讲了方向导数,并且在最后留了个小尾巴,是什么呢?就是梯度。 我们再来回看一下但是的这个式子: [ f x f y

信息系统项目管理师(第四版)教材精读思维导图-第八章项目整合管理

请参阅我的另一篇文章&#xff0c;综合介绍软考高项&#xff1a; 信息系统项目管理师&#xff08;软考高项&#xff09;备考总结_计算机技术与软件专业技术_铭记北宸的博客-CSDN博客 本章思维导图PDF格式 本章思维导图XMind源文件 目录 8.1 管理基础 8.2 管理过程 8.3 制定项…

LRU算法 vs Redis近似LRU算法

LRU(Least Recently Use)算法&#xff0c;是用来判断一批数据中&#xff0c;最近最少使用算法。它底层数据结构由Hash和链表结合实现&#xff0c;使用Hash是为了保障查询效率为O(1)&#xff0c;使用链表保障删除元素效率为O(1)。 LRU算法是用来判断最近最少使用到元素&#xf…

最短路Dijkstra,spfa,图论二分图算法AYIT---ACM训练(模板版)

文章目录 前言A - Dijkstra Algorithm0x00 算法题目0x01 算法思路0x02 代码实现 B - 最长路0x00 算法题目0x01 算法思路0x02 代码实现 C - 二分图最大匹配0x00 算法题目0x01 算法思路0x02 代码实现 D - 搭配飞行员0x00 算法题目0x01 算法思路0x02 代码实现 E - The Perfect Sta…

企业架构LNMP学习笔记11

Nginx配置文件的介绍&#xff1a; #nginx子进程启动用户 #user nobody; #子进程数量 一般调整为cpu核数或者倍数 worker_processes 1; #错误日志定义 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#进程pid 存储文件…

ISO/IEC/ITU标准如何快速查找(三十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

C++中的语法知识虚继承和虚基类

多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。 多继承时很容易产生命名冲突,即使我们很小心地将所有类…

UDP和TCP协议报文格式详解

在初识网络原理(初识网络原理_蜡笔小心眼子&#xff01;的博客-CSDN博客)这篇博客中,我们简单的了解了一下TCP/IP五层网络模型,这篇博客将详细的学习一下五层网络模型中传输层的两个著名协议:UDP和TCP 目录 一, 传输层的作用 二, UDP 1,UDP协议的特点 2,UDP报文格式 三, TC…

【数据结构】如何设计循环队列?图文解析(LeetCode)

LeetCode链接&#xff1a;622. 设计循环队列 - 力扣&#xff08;LeetCode&#xff09; 目录 做题思路 只开辟 k 个空间 多开一个空间 代码实现 1. 循环队列的结构 2. 开辟空间 3. 判断空 4. 判断满 5. 队尾插入数据 6. 队头删除数据 7. 获取队头元素 8. 获取队尾元…

ElasticSearch第二讲:ES详解 - ElasticSearch基础概念

ElasticSearch第二讲&#xff1a;ES详解 - ElasticSearch基础概念 在学习ElasticSearch之前&#xff0c;先简单了解下ES流行度&#xff0c;使用背景&#xff0c;以及相关概念等。本文是ElasticSearch第二讲&#xff0c;ElasticSearch的基础概念。 文章目录 ElasticSearch第二讲…

【GoldenDict】win11牛津高阶英汉双解词典安装使用方法

【词典资源】 1&#xff08;本文章使用的版本&#xff09;牛津高阶&#xff08;第10版 英汉双解&#xff09; V11.8&#xff1a; https://pan.baidu.com/s/11272Cldde_2UttQkWS2MlQ 提取码&#xff1a;0p3j 2&#xff08;另一版本&#xff09;第十版 v13.2&#xff1a; ht…

信息系统项目管理师(第四版)教材精读思维导图-第九章项目范围管理

请参阅我的另一篇文章&#xff0c;综合介绍软考高项&#xff1a; 信息系统项目管理师&#xff08;软考高项&#xff09;备考总结_计算机技术与软件专业技术_铭记北宸的博客-CSDN博客 本章思维导图PDF格式 本章思维导图XMind源文件 目录 9.1 管理基础 9.2 管理过程 9.3 规划范…

【Linux】线程安全-信号量

文章目录 信号量原理信号量保证同步和互斥的原理探究信号量相关函数初始化信号量函数等待信号量函数释放信号量函数销毁信号量函数 信号量实现生产者消费者模型 信号量原理 信号量的原理&#xff1a;资源计数器 PCB等待队列 函数接口 资源计数器&#xff1a;对共享资源的计…

Python之单调栈

单调栈 了解单调栈先要了解栈。栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶&#xff0c;相对地&#xff0c;把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈&…

用JAVA(springboot) 开发的彩票模拟系统

闲暇时间&#xff0c;自己写了一个模拟彩票系统&#xff0c;里面研究了开奖算法&#xff0c;下单算法&#xff0c;彩票的各种计算规则。需要源码的私信&#xff0c;研究为主&#xff0c;切勿商务用途。

2022年06月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;有多少种二叉树 输入n(1<n<13)&#xff0c;求n个结点的二叉树有多少种形态 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 整数n 输出 答案 样例输入 3 样例输出 5 这个问题可以使用…

外部中断(EXTI) - 按键控制LED

一、外部中断/事件控制器(EXTI)结构图 1、结构图分析 外部中断主要由外部中断/事件控制器(External interrupt/event controller, EXTI)控制&#xff0c;它管理了外部中断或者事件的使能与否、触发方式等功能。 &#xff08; 外部中断/事件控制器(EXTI)结构图 &#xff09; …