java实操(一)-学生管理系统

news2024/9/17 3:37:27

一、题目

1. 程序启动时,读取一个预设的学生数组,其中已经保存了学生信息(包括学生姓名、学号、出生日期、性别、联系方式等)。

2. 程序提供以下操作选项:   - 显示所有学生的信息   - 通过学号查找学生的信息   - 添加新的学生信息   - 修改学生信息   - 删除学生信息   - 退出程序

3. 添加新的学生信息时,要求输入学生所有信息,并自动添加到学生数组中,学号自动生成,不能与已有学生的学号重复。

4. 修改学生信息时,提示用户输入要修改的学生的学号,然后允许用户修改该学生的信息(包括姓名、出生日期、性别、联系方式等)。

5. 删除学生信息时,提示用户输入要删除的学生的学号,并将该学生从学生数组中删除。

6. 修改、添加和删除学生信息后,重新显示所有学生的信息。

二、程序

2.1 Student.java

package Student;

/**
 * 学生类
 * author:fcx
 * version:1.0
 * since:1.0
 */
public class Student {
    /**
     * 姓名
     */
    private String name;
    /**
     * 学号
     */
    private int num;
    /**
     * 出生日期
     */
    private String birth;
    /**
     * 性别
     */
    private boolean gender;
    /**
     * 电话
     */
    private String phone;
    public Student() {
    }
    public Student(String name, int num, String birth, boolean gender, String phone) {
        this.name = name;
        this.num = num;
        this.birth = birth;
        this.gender = gender;
        this.phone = phone;
    }

    public Student(String name, String birth, boolean gender, String phone) {
        this.name = name;
        this.birth = birth;
        this.gender = gender;
        this.phone = phone;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getBirth() {
        return birth;
    }
    public void setBirth(String birth) {
        this.birth = birth;
    }
    public boolean isGender() {
        return gender;
    }
    public void setGender(boolean gender) {
        this.gender = gender;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    @Override
    public String toString() {
        return "姓名:" + this.getName() + ",学号:" + this.getNum() + ",出生日期:"
                + this.getBirth() + ",性别:" + (this.isGender() == true ? "女":"男") + ",联系方式:" + this.getPhone();
    }
    public boolean equals(Object obj){
        if(obj == null){return false;}
        if(this == obj){return true;}
        if(obj instanceof Student){
            Student d = (Student) obj;
            return d.getNum() == this.getNum();//如果学号相同,就表示是同一个学生
        }
        return false;
    }
}

2.2 Management.java

package Student;
/**
 * 学生业务类
 */

import java.util.Scanner;
public class Manager {
    /**
     * 默认初始化的时候,Student数组中10个学生。
     */
    private Student[] student = new Student[10];
    Scanner scanner = new Scanner(System.in);
    public Manager() {
        student[0] = new Student("茉莉", 30101, "2001.2.16", false, "19913855801");
        student[1] = new Student("牡丹", 30102, "2001.3.16", true, "19913828802");
        student[2] = new Student("玫瑰", 30103, "2001.2.14", false, "19913828803");
        student[3] = new Student("月季", 30104, "2001.2.16", true, "19913828804");
        student[4] = new Student("菊花", 30105, "2001.5.16", false, "19913828805");
        student[5] = new Student("芍药", 30106, "2001.2.15", false, "19913828806");
        student[6] = new Student("兰花", 30107, "2001.7.16", true, "19913828807");
        student[7] = new Student("睡莲", 30108, "2001.2.18", false, "19913828808");
        student[8] = new Student("甘菊", 30109, "2001.2.26", true, "19913828809");
        student[9] = new Student("海棠", 30110, "2001.1.16", true, "19913828810");
    }

    /**
     * 显示所有学生信息
     */
    public void display(){
        for(int i = 0; i <= student.length-1;i ++){
            if(student[i] != null){ // 筛出没有学生的,不显示,只显示有学生信息的。
                System.out.println(student[i].toString());
            }
        }
    }

    /**
     * 显示一个学生信息
     * @param findnum
     */
    public void find(int findnum){
        int flag = 0;
        for(Student student : student) {//这个循环会遍历 student 集合中的每一个 Student 对象,将当前的 Student 对象赋值给变量 student 。
            if (student.getNum() == findnum) {
                flag = 1;
                System.out.println("您要查找的学生信息如下:");
                System.out.println(student);
            }
        }
        if(flag == 0){
            System.out.println("学号输入错误,查无此人!");
        }
    }

    /**
     * 增加一个学生
     * @param stu
     */
    public void add(Student stu){
        for(int i = 0;i < student.length; i ++){
            if(student[i] == null){
                student[i] = stu;
                System.out.println("添加学生成功!");
                return;
            }
        }
        //程序如果执行到这里说明没有空位置
        //新建数组,扩容,将老数组拷贝到新数组中
        Student[] students = new Student[student.length + 1];
        System.arraycopy(student,0,students,0,student.length);
        // 学号+1
        int no = this.student[students.length - 2].getNum() + 1; //注意下标越界
        stu.setNum(no);//设置学号
        //这一步很重要,因为其他的方法中都用的是student数组
        this.student = students;
        this.student[this.student.length - 1] = stu; //注意下标越界
        System.out.println("添加学生成功!");
    }
    public void modify(Student stu){
        System.out.println("student.length:" + student.length);
        for(int i = 0;i < student.length;i++){
            if(student[i] != null && student[i].equals(stu)){
                student[i] = stu;
                System.out.println("修改学生信息成功!");
                return;
            }
        }
        System.out.println("学号输入错误!");
    }
    public void delete(int deletenum){
        int flag = 0;
        for(int i = 0;i < student.length;i++){
            if(student[i].getNum() == deletenum){
                student[i] = null;
                flag = 1;
                System.out.println("删除成功!");
            }
        }
        if(flag == 0){
        System.out.println("学号输入错误,请重新输入!");}
        System.out.println("删除成功!");
    }
}

2.3 Test.java

package Student;
import java.util.Scanner;
public class Test {
    public static void main(String[] args){
        System.out.println("欢迎来到学生管理系统~");
        Scanner scanner = new Scanner(System.in);
        Manager manager = new Manager();
        while(true){
            System.out.println("1.呈现所有学生得信息");
            System.out.println("2.通过学号查找学生的信息");
            System.out.println("3.添加新的学生信息");
            System.out.println("4.修改学生信息");
            System.out.println("5.删除学生信息");
            System.out.println("6.退出程序");
            System.out.print("请选择需要实现的操作对应的序号:");
            int menu = scanner.nextInt();
            switch(menu) {
            case 1 -> {
                System.out.println("所有学生信息如下:");
                manager.display();
            }
            case 2 -> {
                System.out.print("请输入要查找的学生的学号:");
                int findnum = scanner.nextInt();
                manager.find(findnum);
            }
            case 3 ->{
                System.out.println("请输入要添加的学生信息!");
                System.out.print("请输入姓名:");
                String name = scanner.next();
                System.out.print("请输入生日:");
                String birth = scanner.next();
                System.out.print("请输入性别:");
                boolean gender = scanner.nextBoolean();
                System.out.print("请输入电话:");
                String phone = scanner.next();
                //封装学生对象
                Student students = new Student(name,birth,gender,phone);
                manager.add(students);
                System.out.println("添加学生后的学生信息如下:");
                manager.display();
            }
            case 4 ->{
                System.out.print("请输入您要修改的学生的学号:");
                int modifynum = scanner.nextInt();
                manager.find(modifynum);
                System.out.print("请输入所要修改学生的姓名:");
                String modifyname = scanner.next();
                System.out.print("请输入所要修改学生的出生日期:");
                String modifydate = scanner.next();
                System.out.print("请输入所要修改学生的性别:");
                boolean modifygender = scanner.nextBoolean();
                System.out.print("请输入所要修改学生的联系方式:");
                String modifyphone = scanner.next();
                Student student = new Student(modifyname,modifynum,modifydate,modifygender,modifyphone);
                manager.modify(student);
                System.out.println("修改后的学生信息如下:");
                manager.display();
            }
            case 5 ->{
                System.out.print("请输入需要删除学生的学号:");
                int deletenum = scanner.nextInt();
                manager.find(deletenum);
                manager.delete(deletenum);
                System.out.println("删除后的学生信息如下:");
                manager.display();
            }
            case 6 ->
                System.exit(0);
        }
        }
    }
}

三、小结

封装的重要性

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

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

相关文章

ApacheKafka中的设计

文章目录 1、介绍1_Kafka&MQ场景2_Kafka 架构剖析3_分区&日志4_生产者&消费者组5_核心概念总结6_顺写&mmap7_Kafka的数据存储形式 2、Kafka的数据同步机制1_高水位&#xff08;High Watermark&#xff09;2_LEO3_高水位更新机制4_副本同步机制解析5_消息丢失问…

Redis典型应用 - 分布式锁

文章目录 目录 文章目录 1. 什么是分布式锁 2. 分布式锁的基本实现 3. 引入过期时间 4. 引入校验Id 5. 引入 watch dog(看门狗) 6. 引入redlock算法 工作原理 Redlock的优点&#xff1a; 总结 1. 什么是分布式锁 在一个分布式系统中,也可能会出现多个节点访问一个共…

QT 编译报错:C3861: ‘tr‘ identifier not found

问题&#xff1a; QT 编译报错&#xff1a;C3861&#xff1a; ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中&#xff0c; 解决方案 就直接用类名引用 &#xff1a;QObject::tr( )

关于易优cms自定义字段不显示的问题

今天在该易优cms自定义字段&#xff0c;折腾了大半天没显示出来&#xff0c;原来是改错对方了。 主要引用的时候 要放在list标签内&#xff0c;不要看文档&#xff0c;把addfields 放在list标签上 例如 {eyou:list loop8} <li><a href"{$field.arcurl}">…

基于yolov8的电动车佩戴头盔检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的电动车佩戴头盔检测系统利用了YOLOv8这一先进的目标检测模型&#xff0c;旨在提高电动车骑行者的安全意识&#xff0c;减少因未佩戴头盔而导致的交通事故风险。YOLOv8作为YOLO系列的最新版本&#xff0c;在检测速度和精度上均进行了优化&#xff0c;…

✨机器学习笔记(一)—— 监督学习和无监督学习

1️⃣ 监督学习&#xff08;supervised learning&#xff09; ✨ 两种主要类型的监督学习问题&#xff1a; 回归&#xff08;regression&#xff09;&#xff1a;predict a number in infinitely many possible outputs. 分类&#xff08;classification&#xff09;&#xff1…

C#串口助手初级入门

1.创建项目 修改项目名称与位置&#xff0c;点击创建 2.进入界面 在视图中打开工具箱&#xff0c;鼠标拖动&#xff0c;便可以在窗口添加控件&#xff0c;右边可以查看与修改属性 3.解决方案资源管理器 发布之前&#xff0c;需要修改相关的信息&#xff0c;比如版本号&#x…

Lombok jar包引入和用法

大家好&#xff0c;今天分享一个在编写代码时的快捷方法。 当我们在封装实体类时&#xff0c;会使用set、get等一些方法。如下图&#xff0c;不但费事还影响代码的美观。 那么如何才能减少代码的冗余呢&#xff0c;首先lib中导入lombok的jar包并添加库。 此处我已导入&#xf…

插件:清理maven错误缓存.bat

插件&#xff1a;https://pan.baidu.com/s/1nHIxHoo1C4MvFlW7QbZe5Q?pwd7zenhttps://pan.baidu.com/s/1nHIxHoo1C4MvFlW7QbZe5Q?pwd7zen没错误缓存时&#xff1a; 有错误缓存时&#xff1a;

真实案例分享:零售企业如何避免销售数据的无效分析?

在零售业务的数据分析中&#xff0c;无效分析不仅浪费时间和资源&#xff0c;还可能导致错误的决策。为了避免这种情况&#xff0c;企业必须采取策略来确保他们的数据分析工作能够产生实际的商业价值。本文将通过行业内真实的案例&#xff0c;探讨零售企业如何通过精心设计的数…

springboot数据库连接由localhost改成IP以后访问报错500(2024/9/7

步骤很详细&#xff0c;直接上教程 情景复现 一.没改为IP之前正常 二.改完之后报错 问题分析 SQL没开启远程连接权限 解决方法 命令行登入数据库 mysql -u root -p切换到对应数据库 use mysql;设置root用户的连接权限允许其他IP连接数据库 update user set host % whe…

jmeter执行python脚本,python脚本的Faker库

jmeter安装 jython的插件jar包 通过如下地址下载jython-standalone-XXX.jar包并放到jmeter的XXX\lib\ext目录下面 Downloads | JythonThe Python runtime on the JVMhttps://www.jython.org/download.html 重启jmeter在JSR223中找到jython可以编写python代码执行 python造数据…

一种快速生成CSV的方法

事情是这个样子的 在QQ群在聊把如何100万数据导出成CSV文件&#xff1f;会不会很慢&#xff1f; 俺回了一句“现在的机器性能好&#xff0c;没啥问题”。 然后大家开始谈论机器的配置了。哎&#xff0c;俺的机器配置有点差。 然后俺就进行了一个测试。 测试数据 数据定义…

【C++二分查找】2439. 最小化数组中的最大值

本文涉及的基础知识点 C二分查找 LeetCode2439. 最小化数组中的最大值 给你一个下标从 0 开始的数组 nums &#xff0c;它含有 n 个非负整数。 每一步操作中&#xff0c;你需要&#xff1a; 选择一个满足 1 < i < n 的整数 i &#xff0c;且 nums[i] > 0 。 将 num…

C++ | Leetcode C++题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {int n s.size(), m t.size();vector<vector<int> > f(m 1, vector<int>(26, 0));for (int i 0; i < 26; i) {f[m][i] m;}for (int i m - 1; …

.Net6/.Net8(.Net Core) IIS中部署 使用 IFormFile 上传大文件报错解决方案

描述 最近使用.Net6 WebAPI IFormFile对象接收上传文件时大于30MB(兆)的文件就会报错 原因分析 IIS上传文件有大小默认限制大约28.6MB 解决办法 .无论是Net6还是.Net8写法都一样 方法一&#xff1a;IIS可视化操作 1.打开Internet Information Services (llS)管理器&…

Banana Pi BPI-SM9 AI 计算模组采用算能科技BM1688芯片方案设计

产品概述 香蕉派 Banana Pi BPI-SM9 16-ENC-A3 深度学习计算模组搭载算能科技高集成度处理器 BM1688&#xff0c;功耗低、算力强、接口丰富、兼容性好。支持INT4/INT8/FP16/BF16/FP32混合精度计算&#xff0c;可支持 16 路高清视频实时分析&#xff0c;灵活应对图像、语音、自…

LeetCode --- 413周赛

题目列表 3274. 检查棋盘方格颜色是否相同 3275. 第 K 近障碍物查询 3276. 选择矩阵中单元格的最大得分 3277. 查询子数组最大异或值 一、检查棋盘方格颜色是否相同 题目给定两个字符串来表示两个方格的坐标&#xff0c;让我们判断这两个方格的颜色是否相同&#xff0c;这…

C++——关联式容器(2):AVL树(平衡二叉树)

2.AVL树 2.1 AVL树的概念 在学习了二叉搜索树后&#xff0c;我们发现了二叉搜索树可以根据大小比较来进行类似于折半查找的操作&#xff0c;使得搜索时间复杂度达到logn的水准。但是在面对极端情况下&#xff0c;如近似有序的序列&#xff0c;那么整棵树的时间复杂度就有可能退…

【Godot4.3】多边形的斜线填充效果基础实现

概述 图案&#xff08;Pattern&#xff09;填充是一个非常常见的效果。其中又以斜线填充最为简单。本篇就探讨在Godot4.3中如何使用Geometry2D和CanvasItem的绘图函数实现斜线填充效果。 基础思路 Geometry2D类提供了多边形和多边形以及多边形与折线的布尔运算。按照自然的思…