通过几天JAVA学习总结和查询资料编写一个学生管理系统(简单版)

news2025/1/18 17:01:48

目录

需求分析

需求:

分析:

学生管理系统开始菜单界面 

学生类:

功能实现:

添加功能

删除功能

修改功能

查询功能

项目实现 

 项目实现分析:

1.实现菜单选择功能

2.实现添加学生信息功能

3.实现删除学生信息功能

4.实现修改学生信息功能

5.实现查询学生信息功能


 

需求分析

需求:

                编写一个学生管理系统,结果在控制台上显示(目前能力有限)

分析:

学生管理系统开始菜单界面 

            ---------------------------------------欢迎来到学生管理系统---------------------------------------                          -----------------1.添加学生信息

            -----------------2.删除学生信息   

            -----------------3.修改学生信息

            -----------------4.查询学生信息

            -----------------5.退出系统

           ------------------"请输入您的选择:"

学生类:

                属性:id(唯一),姓名,年龄,专业

功能实现:

添加功能

                键盘录入输入学生信息

删除功能

        1.id存在,删除学生信息

        2. id不存在,提示该学生不存在,并返回初始页面             

修改功能

                1.id存在,输入学生信息修改

                2. id不存在,提示该学生不存在,并返回初始页面 

查询功能

                1.id存在,输出学生信息

               2. id不存在,提示该学生不存在,并返回初始页面  

项目实现 

 项目实现分析:

1.实现菜单选择功能

public class StudentDemo {
    public static void main(String[] args) {
        //打印菜单
        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);
            String choose = sc.next();
            switch (choose) {
                case "1":
                    System.out.println("添加学生信息");
                    break;
                case "2":
                    System.out.println("删除学生信息");
                    break;
                case "3":
                    System.out.println("修改学生信息");
                    break;
                case "4":
                    System.out.println("查询学生信息");
                    break;
                case "5":
                    System.out.println("退出系统");
                    //停止虚拟机运行
                    System.exit(0);
                default:
                    System.out.println("没有这个选项");
                    break;
            }
        }
    }
}

2.实现添加学生信息功能

//实现添加学生信息功能
    public static void addStudent(ArrayList<Student> list) {
        //创建学生对象
        Student stu = new Student();
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //id已经存在
        while(true){
            //提示输入id
            System.out.println("请输入id");
            String id = sc.next();
            boolean flag = contains(list,id);
            if (flag) {
                System.out.println("id已经存在,请重新输入其他id");
                continue;
            } else {
                stu.setId(id);
                break;
            }
        }
        //提示输入姓名
        System.out.println("请输入姓名");
        String name = sc.next();
        stu.setName(name);
        //提示输入年龄
        System.out.println("请输入年龄");
        int age = sc.nextInt();
        stu.setAge(age);
        //提示输入专业
        System.out.println("请输入专业");
        String major = sc.next();
        stu.setMajor(major);
        //将学生对象添加到集合中
        list.add(stu);
        System.out.println("学生信息添加成功");

    }

3.实现删除学生信息功能

//实现删除学生信息功能
    public static void deleteStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要删除的id");
        String id = sc.next();
        int index = getIndex(list,id);
        if(index >= 0){
            list.remove(index);
            System.out.println("id为"+id+"的学生信息已经被成功删除");
        }else{
            System.out.println("id不存在,删除失败");
        }


    }

4.实现修改学生信息功能

//实现修改学生信息功能
    public static void updateStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        //提示要删除的学生的id
        System.out.println("请输入要修改学生的id");
        String id = sc.next();
        int index = getIndex(list, id);
        if (index == -1) {
            System.out.println("修改的id不存在,请重新输入");
            return;
        }
        Student stu = list.get(index);

        //输入其他修改的信息
        System.out.println("请输入修改的学生姓名");
        String newName = sc.next();
        stu.setName(newName);

        System.out.println("请输入修改的学生年龄");
        int  newAge = sc.nextInt();
        stu.setAge(newAge);

        System.out.println("请输入修改的学生专业");
        String newMajor = sc.next();
        stu.setMajor(newMajor);

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

5.实现查询学生信息功能

//实现查询学生信息功能
    public static void queryStudent(ArrayList<Student> list) {
        if (list.size() == 0) {
            System.out.println("学生不存在");
            return;
        }
        System.out.println("id\t\t\t姓名\t\t年龄\t\t专业");
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getId() + "\t" + stu.getName() + "\t\t" + stu.getAge() + "\t\t" + stu.getMajor());
        }


    }

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

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

相关文章

【DAY04 软考中级备考笔记】数据结构基本结构和算法

数据结构基本结构和算法 2月25日 – 天气&#xff1a;晴 周六玩了一天&#xff0c;周天学习。 1. 什么是数据结构 数据结构研究的内容是一下两点&#xff1a; 如何使用程序代码把现实世界的问题信息化如何用计算机高效地处理这些信息从创造价值 2. 什么是数据 数据是信息的…

Pod 异常问题排查

文章目录 前言1、诊断流程2、常用的排查方法3、Pod 状态、原因分析及故障处理总结 前言 通过 Kubernetes 部署服务&#xff0c;服务并未按照计划正常提供服务。如何通过 Pod 状态&#xff0c;进行异常问题的定制就显得特别重要了&#xff01; 1、诊断流程 2、常用的排查方法 …

基于ZYNQ的PCIE高速数据采集卡的设计(一)

作为信息处理的第一步&#xff0c;数据采集的作用越来越重要。目前&#xff0c;数据采集已经在航 空、民用、军事、医疗等领域得到广泛应用。随着相关技术的不断发展&#xff0c;信号频率越 来高&#xff0c;带宽越来越大&#xff0c;使得数据采集技术逐渐向高速大数据的方向…

最新计算机毕业设计题目100例

文章目录 0 前言1 计算机毕设选题推荐2 开题指导3 最后 0 前言 大家好&#xff01;大四的同学们毕业设计即将开始了&#xff0c;你们做好准备了吗&#xff1f; 学长给大家精心整理了最新的计算机毕业设计选题&#xff0c;希望能为你们提供帮助。如果在选题过程中有任何疑问&a…

C++之std::tuple(二) : 揭秘底层实现原理

相关系列文章 C之std::tuple(二) : 揭秘底层实现原理 C三剑客之std::any(一) : 使用 C之std::tuple(一) : 使用精讲(全) C三剑客之std::variant(一) : 使用 C三剑客之std::variant(二)&#xff1a;深入剖析 深入理解可变参数(va_list、std::initializer_list和可变参数模版) st…

创作纪念日:记录我的成长与收获

机缘 一开始是在我深入学习前端知识的Vue.js框架遇到了一个问题&#xff0c;怎么都解决不了&#xff0c;心烦意乱地来csdn上找解决方法。开心的是真被我找到了&#xff0c;真的很感恩&#xff0c;也意识到在这个平台上分享自己的经验是多么有意义的事情&#xff0c;可能随便的…

外包干了3个月,技术倒退明显...

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

在使用nginx的时候快速测试配置文件,并重新启动

小技巧 Nginx修改配置文件后需要重新启动&#xff0c;常规操作是启动在任务管理器中关闭程序然后再次双击nginx.exe启动&#xff0c;但是使用命令行就可以快速的完成操作。 将cmd路径切换到nginx的安装路径 修改完成配置文件后 使用 nginx -t校验nginx 的配置文件是否出错 …

相机选型介绍

摄影测量中&#xff0c;相机是非常重要的角色&#xff0c;合适的相机产出合适的图像&#xff0c;得到合适的重建精度&#xff0c;这是相机的重要性。 您也许第一反应是&#xff0c;摄影测量所需的理想相机&#xff0c;是有着超高分辨率的相机&#xff0c;但事实可能并非如此&a…

HTML+CSS+JS:轮播组件

效果演示 一个具有动画效果的卡片元素和一个注册表单,背景为渐变色,整体布局简洁美观。 Code <div class="card" style="--d:-1;"><div class="content"><div class="img"><img src="./img/果果k_01.jpg…

【全网首发】上周申请的谷歌Gemini 1.5 Pro已通过!百万token的Gemini 1.5 Pro开箱测试(一)

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

【接口加密】接口加密的未来发展与应用场景

目录 3.1 接口加密与区块链技术的结合 3.1.1 区块链技术的安全特性与优势 3.1.2 接口加密在区块链中的应用案例 3.2 接口加密与物联网安全 3.2.1 物联网安全的挑战与需求 3.2.2 接口加密在物联网领域的实际应用 3.3 接口加密在金融与电子商务领域的应用 随着信息技术的不…

【初始RabbitMQ】延迟队列的实现

延迟队列概念 延迟队列中的元素是希望在指定时间到了之后或之前取出和处理消息&#xff0c;并且队列内部是有序的。简单来说&#xff0c;延时队列就是用来存放需要在指定时间被处理的元素的队列 延迟队列使用场景 延迟队列经常使用的场景有以下几点&#xff1a; 订单在十分…

Spring Boot 笔记 025 主界面

1.1 路由搭建 1.1.1 安装vue router npm install vue-router4 1.1.2 在src/router/index.js中创建路由器&#xff0c;并导出 import { createRouter, createWebHistory } from vue-router//导入组件 import LoginVue from /views/Login.vue import LayoutVue from /views/La…

设计模式学习笔记 - 面向对象 - 8.实践:贫血模型和充血模型的原理及实践

1.Web开发常用的贫血MVC架构违背OOP吗&#xff1f; 前面我们依据讲过了面向对象四大特性、接口和抽象类、面向对象和面向过程编程风格&#xff0c;基于接口而非实现编程和多用组合少用继承设计思想。接下来&#xff0c;通过实战来学习如何将这些理论应用到实际的开发中。 大部…

Redis实现滑动窗口限流

常见限流算法 固定窗口算法 在固定的时间窗口下进行计数&#xff0c;达到阈值就拒绝请求。固定窗口如果在窗口开始就打满阈值&#xff0c;窗口后半部分进入的请求都会拒绝。 滑动窗口算法 在固定窗口的基础上&#xff0c;窗口会随着时间向前推移&#xff0c;可以在时间内平滑控…

对象池模板

概述 对象池的引入也是嵌入式开发的常用方法&#xff0c;也是内存预分配的一种&#xff0c;主要是用来隐藏全局对象的跟踪&#xff0c;通常预内存分配是通过数组来实现。 CMake配置 cmake_minimum_required(VERSION 3.5.1)project(objpool)add_executable(objpool objpool.cp…

2024“薪”风口、学习鸿蒙开发就业钱景如何?

随着华为的鸿蒙系统从诞生之初就备受关注&#xff0c;对于那些对鸿蒙开发感兴趣并希望在这一领域寻找职业发展的人来说&#xff0c;这是一个非常重要的问题。 那么&#xff0c;2024年学鸿蒙开发的就业前景如何呢&#xff1f; 一、彻底摆脱“安卓套壳”&#xff01; HarmonyO…

JVM垃圾收集器【如何找到垃圾、清除垃圾的算法、垃圾回收器】

JVM垃圾收集器 GC基本原理垃圾回收什么是垃圾?如何找到这个垃圾&#xff1f;1&#xff09;引用计数法&#xff08;Reference Counting&#xff09;2&#xff09;根可达算法&#xff08;GCRoots Tracing&#xff09;3&#xff09;回收过程4&#xff09;对象引用 清除垃圾的算法…

Excel的中高级用法

单元格格式&#xff0c;根据数值的正负分配不同的颜色和↑ ↓ 根据数值正负分配颜色 2-7 [蓝色]#,##0;[红色]-#,##0 分配颜色的基础上&#xff0c;根据正负加↑和↓ 2↑-7↓ 其实就是在上面颜色的代码基础上加个 向上的符号↑&#xff0c;或向下的符号↓ [蓝色]#,##0↑;[红色…