简单学生管理系统

news2025/7/10 13:15:39

文章目录

    • 1. 学生类
    • 2. 学生管理类
    • 3. 运行结果

1. 学生类

包含四个属性,学号、姓名、年龄及地址。类中包含一个无参构造、一个有参构造以及各属性的 get、set 方法。

package com.zxe;

public class Student {
    private String id;
    private String name;
    private String age;
    private String address;

    public Student() {}

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

    public void setId(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getAge() {
        return age;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAddress() {
        return address;
    }
}

2. 学生管理类

① 这里 psvm 直接帮我们生成 main 方法;
② 主函数里用输出语句打印出主界面;
③ 用户自由选择要进行的操作,程序根据键盘录入的数据做出下一步判断,所以我们用 switch 对键盘录入的选项编号进行一个判断;
④ 不同的选项对应不同的功能,包括添加、删除、修改、查看、退出等功能,我们可以把这些不同的功能模块都封装在不同的方法里,需要时直接调用即可;
⑤ 在完成一次操作后,我们希望它能够再次返回主界面,以供下一次操作,这里我们通过死循环 while(true) 来实现,这样程序就不会退出来,一直运行;
⑥ 其中一个功能是退出功能,这个如何实现呢?直接使用语句 System.exit(0) 退出系统;
⑦ 当用户输入的编号非系统所给选项时,要给出提示,其他情况用 default 完成;
⑧ 各个功能模块所对应的方法,因为涉及到增删改查,所以都需要用到集合,公共部分为减少代码量,我们直接在主函数 main 里面给出集合的创建;
⑨ 这里需要注意的是,创建集合时不要写在 while(true) 里面,否则所做修改将不会保存,即集合永远为空;
⑩ 根据学号对学生进行修改及删除操作时,我们需要拿键盘录入的学号与所有学生的学号进行比对,只有内容一致才可进行改动,因为 String 是引用类型,切忌不可直接通过双等号进行字符串内容的比较,而要使用 equal() 方法来实现。

package com.zxe;

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

public class StudentManager {
    public static void main(String[] args) {

        ArrayList<Student> array = new ArrayList<Student>();

        while (true) {
            System.out.println("———————————— 欢迎来到学生管理系统 ————————————");
            System.out.println();
            System.out.println("1.添加学生\n2.删除学生\n3.修改学生\n4.查看所有学生\n5.退出");
            System.out.println("\n请输入你的选择:\n");
            Scanner sc = new Scanner(System.in);
            int x = sc.nextInt();

            switch (x) {
                case 1:
                    addStudent(array);
                    break;
                case 2:
                    deleteStudent(array);
                    break;
                case 3:
                    setStudent(array);
                    break;
                case 4:
                    allStudent(array);
                    break;
                case 5:
                    System.out.println("谢谢使用!\n");
                    System.exit(0);
                default:
                    System.out.println("请输入正确的选项!\n");
            }

        }
    }

    public static void addStudent(ArrayList<Student> array) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入学生学号:");
        String id = s.nextLine();
        System.out.println("请输入学生姓名:");
        String name = s.nextLine();
        System.out.println("请输入学生年龄:");
        String age = s.nextLine();
        System.out.println("请输入学生地址:");
        String address = s.nextLine();
        Student student = new Student();
        student.setId(id);
        student.setName(name);
        student.setAge(age);
        student.setAddress(address);
        array.add(student);
        System.out.println("添加成功!\n");
    }

    public static void deleteStudent(ArrayList<Student> array) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入要删除的学生学号:");
        String id = s.nextLine();
        for (int i = 0; i < array.size(); i++) {
            Student student = array.get(i);
            if ((i == array.size() - 1) && student.getId().equals(id) == false) {
                System.out.println("删除失败,该学生不存在!\n");
            } else {
                if (student.getId().equals(id)) {
                    array.remove(i);
                    System.out.println("删除成功!\n");
                    break;
                }
            }
        }
    }

    public static void setStudent(ArrayList<Student> array) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入要修改信息学生的学号:");
        String id = s.nextLine();
        System.out.println("请输入修改后的姓名:");
        String name = s.nextLine();
        System.out.println("请输入修改后的年龄:");
        String age = s.nextLine();
        System.out.println("请输入修改后的地址:");
        String address = s.nextLine();
        Student student = new Student();
        student.setId(id);
        student.setName(name);
        student.setAge(age);
        student.setAddress(address);
        for (int i = 0; i < array.size(); i++) {
            Student stu = array.get(i);
            if ((i == array.size() - 1) && stu.getId().equals(id) == false) {
                System.out.println("修改失败,该学生不存在!\n");
            } else {
                if (stu.getId().equals(id)) {
                    array.set(i, student);
                    System.out.println("修改成功!\n");
                    break;
                }
            }
        }
    }

    public static void allStudent(ArrayList<Student> array) {
        System.out.println("全部学生信息如下:\n");
        System.out.println("学号\t姓名\t年龄\t地址\n");
        for (int i = 0; i < array.size(); i++) {
            Student student = array.get(i);
            System.out.println(student.getId() + "\t    " + student.getName() + "\t    " + student.getAge() + "\t    " + student.getAddress() + "\n");
        }
    }
}


3. 运行结果

① 添加学生

在这里插入图片描述

② 查看所有学生

在这里插入图片描述

③ 修改学生

在这里插入图片描述

④ 删除学生

在这里插入图片描述

在这里插入图片描述

⑤ 退出

在这里插入图片描述

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

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

相关文章

Vue+element ui遇到的一些疑难问题总结(一)

element ui 疑难总结1. el-date-picker时间区间控制2. el-cascader 获取name3. el-tree 搜索判断是否匹配到值1. el-date-picker时间区间控制 控制只能选区间&#xff08;7天&#xff0c;一个月&#xff0c;两个月等等&#xff09;重点为 :picker-options"pickerOptions&…

Python爬虫(10)selenium爬虫后数据,存入csv、txt并将存入数据并对数据进行查询

之前的文章有关于更多操作方式详细解答&#xff0c;本篇基于前面的知识点进行操作&#xff0c;如果不了解可以先看之前的文章 Python爬虫&#xff08;1&#xff09;一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫&#xff08;2&#xff09;-Selenium控制浏览…

【原创】java+swing+mysql大学生竞赛管理系统设计与实现

上一篇文章我们介绍了使用swingtxt进行系统设计和数据存储&#xff0c;今天我们还是回归现实&#xff0c;使用javaswingmysql去设计开发一个大学生竞赛管理系统&#xff0c;以方便管理员对大学竞赛的一些信息进行管理。 功能分析&#xff1a; 大学生竞赛管理系统主要是提供给…

黄金短期陷入低位震荡颠簸

基本面&#xff1a; 周二&#xff08;2月21日)黄金价格维持1843-1830区间震荡&#xff0c;日线收带上下影线小阴线。 今日数据 无重要数据 技术面&#xff1a; 日线上&#xff0c;黄金日线收带上下影线小阴线&#xff0c;目前处于短期线附近及下方运行&#xff0c;5日与1…

CAN现场总线基础知识总结,看这一篇就理清了(CAN是什么,电气属性,CAN通协议等)

【系列专栏】&#xff1a;博主结合工作实践输出的&#xff0c;解决实际问题的专栏&#xff0c;朋友们看过来&#xff01; 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…

FPGA纯Vhdl实现MIPI CSI2RX视频解码输出,OV13850采集,提供工程源码和技术支持

目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利&#xff1a;工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff0c;MIPI解码难度之高&#xff0c;令无数英雄竞折腰…

Vue3电商项目实战-商品详情模块3【07-★规格组件-SKUSPU概念、08-★规格组件-基础结构和样式、09-★规格组件-渲染与选中效果】

文章目录07-★规格组件-SKU&SPU概念08-★规格组件-基础结构和样式09-★规格组件-渲染与选中效果07-★规格组件-SKU&SPU概念 官方话术&#xff1a; SPU&#xff08;Standard Product Unit&#xff09;&#xff1a;标准化产品单元。是商品信息聚合的最小单位&#xff0…

二月天-课后程序(JAVA基础案例教程-黑马程序员编著-第五章-课后作业)

【案例5-5】 二月天 【案例介绍】 1.任务描述 二月是一个有趣的月份&#xff0c;平年的二月有28天&#xff0c;闰年的二月有29天。本例要求编写一个程序&#xff0c;从键盘输入年份&#xff0c;根据输入的年份计算这一年的2月有多少天。在计算二月份天数时&#xff0c;可以使…

【微信小程序】--创建第一个小程序项目项目文件的作用(二)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#…

华为OD机试 - 数组合并(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…

[业务逻辑] 订单超时怎么处理

文章目录1.订单的过程分析2.JDK自带的延时队列 (单机)3.RabbitMQ的延时消息 (消息队列方案)4.RocketMQ的定时消息 (消息队列方案)5.Redis过期监听 (Redis方案)6.定时任务分布式批处理 (扫表轮训方案)7.总结1.订单的过程分析 一个订单流程中有许多环节要用到超时处理 买家超时未…

echarts 饼状图 label 既在内部显示数值(百分比),又显示外部指示线

需求 项目开发中&#xff0c;产品经理绘制的原型图中&#xff0c;需要前端实现一个饼状图&#xff0c;且既在饼图内部中 显示 百分比&#xff0c;又显示 外部指示线及数值&#xff0c;效果如下图所示&#xff1a; 查了下 Echarts 官网文档&#xff0c;需要配置 series 下的 la…

使用vs2022编译yolov5+tensorRT+cuda+cudnn代码进行混合编译

首先依赖有cuda、cudnn、tensorrt、protobuf&#xff0c;从Linux的代码直接移植过来这些库是没法使用的&#xff0c;需要下载对应win的下的版本&#xff0c;其中cuda、cudnn和tensorrt直接从官方下载即可&#xff0c;但是protobuf需要自己编译一下&#xff08;protobuf3.11.4&a…

unix高级编程-fork之后父子进程共享文件

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件. 这里我看到的是centos的操作&#xff0c;但我用的是debian系的ubuntu&#xff0c;百度了一下发现debian的在这里…

【数据挖掘实战】——基于水色图像的水质评价

项目地址&#xff1a;Datamining_project: 数据挖掘实战项目代码 目录 一、背景和挖掘目标 1、问题背景 2、水色分类 3、原始数据 4、挖掘目标 二、分析方法和过程 1、初步分析 2、总体流程 第1步&#xff1a;数据预处理——图像切割 第2步&#xff1a;特征提取 ​…

健身蓝牙耳机推荐,推荐五款适合健身的蓝牙耳机

出门运动健身&#xff0c;有音乐的陪伴是我们坚持运动的不懈动力&#xff0c;在健身当中佩戴的耳机&#xff0c;佩戴舒适度以及牢固程度是我们十分需要注意的&#xff0c;还不知道如何选择健身蓝牙耳机&#xff0c;可以看看下面这些运动蓝牙耳机分享。 1、南卡Runner Pro4骨传…

大bug!ChatGPT居然不懂最新的量子计算?

&#xff08;图片来源&#xff1a;网络&#xff09;近期&#xff0c;背靠微软的AI语言模型ChatGPT风靡全网&#xff0c;以社交媒体为传播媒介&#xff0c;仅5天&#xff0c;注册用户数就超过100万&#xff0c;2个月破亿。随后谷歌眼红不已&#xff0c;匆忙召开自研AI搜索工具Ba…

【Python】变量类型,赋值+多个变量赋值

嗨害大家好鸭~我是小熊猫(✿◡‿◡) 好像还有一些小伙伴还不是很会python的基础鸭~ 没关系啦~这不是还有我小熊猫嘛 ~ 源码资料电子书:点击此处跳转文末名片获取 Python 变量类型 变量是存储在内存中的值&#xff0c; 这就意味着在创建变量时会在内存中开辟一个空间。 基于…

java面试题-JUC集合类

ConcurrentHashMap1.为什么HashTable慢? 它的并发度是什么? 那么ConcurrentHashMap并发度是什么?首先&#xff0c;HashTable 是一种线程安全的哈希表&#xff0c;它内部使用的是同步锁来保证线程安全。在并发读写的场景下&#xff0c;同步锁会导致线程的阻塞&#xff0c;从而…