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:
package com.nobug.studentsystem;/*** @Author: wang* @Create: 2025/1/28* @Description: 学生类**/
public class Student {// id name age addressprivate 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、实现基本菜单和退出功能
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 查询学生信息
代码实现:
// 查询学生
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 添加学生信息
代码实现:
// 添加学生
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是否唯一的方法:
// 判断id在集合中是否存在
public static boolean containsStudentId(ArrayList<Student> students, String id){// 循环遍历集合里面的每一个学生对象// 拿到学生对象后,获取id并进行判断for(Student student : students){if(student.getId().equals(id)){return true;}}return false;
}
修改添加学生信息代码:
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已经存在,重新录入idSystem.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 删除功能实现
实现代码:
// 删除学生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 修改功能实现
代码实现:
// 修改学生
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
复制这段内容后打开迅雷,查看更方便
相关文章:
Java教程练习:学生信息管理系统
文章目录 学生管理系统1、需求文档需求分析 2、新建学生实体类3、实现基本菜单和退出功能4、查询和添加4.1 查询学生信息4.2 添加学生信息 5、修改和删除5.1 删除功能实现5.2 修改功能实现 完整代码下载 学生管理系统 1、需求文档 需求 采取控制台的方式书写学生管理系统。 …...
书生大模型实战营4
文章目录 L0——入门岛玩转HF/魔搭/魔乐社区HF 平台1 注册2 InternLM模型下载3 GitHub CodeSpace的使用4 Hugging Face Spaces的使用5 模型上传 魔搭社区平台简介创建开发机环境配置 下载指定多个文件上传模型 魔乐社区平台下载internlm2_5-chat-1_8b模型上传模型 始智AI平台下…...
麒麟操作系统服务架构保姆级教程(十四)iptables防火墙四表五链和防火墙应用案例
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 防火墙在运维工作中有着不可或缺的重要性。首先,它是保障网络安全的关键防线,通过设置访问控制规则,可精准过滤非法网络流量,有效阻挡外部黑客攻击、恶…...
8. 网络编程
网络的基本概念 TCP/IP协议概述 OSI和TCP/IP模型 socket(套接字) 创建socket 字节序 字节序转换函数 通用地址结构 因特网地址结构 IPV4地址族和字符地址间的转换(点分十进制->网络字节序) 填写IPV4地址族结构案例 掌握TCP协议网络基础编程 相关函数 …...
C++并发编程指南04
文章目录 共享数据的问题3.1.1 条件竞争双链表的例子条件竞争示例恶性条件竞争的特点 3.1.2 避免恶性条件竞争1. 使用互斥量保护共享数据结构2. 无锁编程3. 软件事务内存(STM) 总结互斥量与共享数据保护3.2.1 互斥量使用互斥量保护共享数据示例代码&…...
常见的同态加密算法收集
随着对crypten与密码学的了解,我们将逐渐深入学习相关知识。今天,我们将跟随同态加密的发展历程对相关算法进行简单的收集整理 。 目录 同态加密概念 RSA算法 ElGamal算法 ELGamal签名算法 Paillier算法 BGN方案 Gentry 方案 BGV 方案 BFV 方案…...
深入探讨数据库索引类型:B-tree、Hash、GIN与GiST的对比与应用
title: 深入探讨数据库索引类型:B-tree、Hash、GIN与GiST的对比与应用 date: 2025/1/26 updated: 2025/1/26 author: cmdragon excerpt: 在现代数据库管理系统中,索引技术是提高查询性能的重要手段。当数据量不断增长时,如何快速、有效地访问这些数据成为了数据库设计的核…...
记录 | Docker的windows版安装
目录 前言一、1.1 打开“启用或关闭Windows功能”1.2 安装“WSL”方式1:命令行下载方式2:离线包下载 二、Docker Desktop更新时间 前言 参考文章:Windows Subsystem for Linux——解决WSL更新速度慢的方案 参考视频:一个视频解决D…...
AI智慧社区--生成验证码
接口文档: 从接口文档中可以得知的信息: 代码的返回格式为json格式,可以将Controlller换为RestController前端发起的请求为Get请求,使用注解GetMapping通过返回的数据类型,定义一个返回类型Result package com.qcby.…...
2501,20个窗口常用操作
窗口是屏幕上的一个矩形区域.窗口分为3种:覆盖窗口,弹窗和子窗口.每个窗口都有由系统绘画的"非客户区"和应用绘画的"客户区". 在MFC中,CWnd类为各种窗口提供了基类. 1,通过窗柄取得CWnd指针 可调用Cwnd::FromHandle函数,通过窗柄取得Cwnd指针. void CD…...
【gopher的java学习笔记】一文讲懂controller,service,mapper,entity是什么
刚开始上手Java和Spring时,就被controller,service,mapper,entity这几个词搞懵了,搞不懂这些究竟代表什么,感觉使用golang开发的时候也没太接触过这些名词啊~ 经过两三个月的开发后,逐渐搞懂了这…...
消息队列篇--通信协议篇--STOMP(STOMP特点、格式及示例,WebSocket上使用STOMP,消息队列上使用STOMP等)
STOMP(Simple Text Oriented Messaging Protocol,简单面向文本的消息传递协议)是一种轻量级、基于文本的协议,旨在为消息代理(消息队列)和客户端之间的通信(websocket)提供一种简单的…...
基于SpringBoot的租房管理系统(含论文)
基于SpringBoot的租房管理系统是一个集订单管理、房源信息管理、屋主申诉处理、用户反馈等多项功能于一体的系统。该系统通过SpringBoot框架开发,拥有完善的管理员后台、屋主管理模块、用户功能模块等,适用于房地产租赁平台或中介公司进行日常管理与运营…...
提升企业内部协作的在线知识库架构与实施策略
内容概要 在当前快速变化的商业环境中,企业对于提升内部协作效率的需求愈显迫切。在线知识库作为信息存储与共享的平台,成为了推动企业数字化转型的重要工具。本文将深入探讨如何有效打造与实施在线知识库,强调架构设计、知识资产分类管理及…...
【物联网】ARM核常用指令(详解):数据传送、计算、位运算、比较、跳转、内存访问、CPSR/SPSR、流水线及伪指令
文章目录 指令格式(重点)1. 立即数2. 寄存器位移 一、数据传送指令1. MOV指令2. MVN指令3. LDR指令 二、数据计算指令1. ADD指令1. SUB指令1. MUL指令 三、位运算指令1. AND指令2. ORR指令3. EOR指令4. BIC指令 四、比较指令五、跳转指令1. B/BL指令2. l…...
Jackson中@JsonTypeId的妙用与实例解析
在日常的Java开发中,Jackson库是处理JSON数据的常用工具。其中,JsonTypeId注解是一个非常实用的功能,它可以帮助我们更好地控制多态类型信息在序列化过程中的表现。今天,我们就来深入探讨一下JsonTypeId的用法,并通过具…...
Ubuntu 顶部状态栏 配置,gnu扩展程序
顶部状态栏 默认没有配置、隐藏的地方 安装使用Hide Top Bar 或Just Perfection等进行配置 1 安装 sudo apt install gnome-shell-extension-manager2 打开 安装的“扩展管理器” 3. 对顶部状态栏进行配置 使用Hide Top Bar 智能隐藏,或者使用Just Perfection 直…...
Java---入门基础篇(上)
前言 本片文章主要讲了刚学Java的一些基础内容,例如注释,标识符,数据类型和变量,运算符,还有逻辑控制等,记录的很详细,带你从简单的知识点再到练习题.如果学习了c语言的小伙伴会发现,这篇文章的内容和c语言大致相同. 而在下一篇文章里,我会讲解方法和数组的使用,也是Java中基础…...
Linux C++
一、引言 冯诺依曼架构是现代计算机系统的基础,它的提出为计算机的发展奠定了理论基础。在学习 C 和 Linux 系统时,理解冯诺依曼架构有助于我们更好地理解程序是如何在计算机中运行的,包括程序的存储、执行和资源管理。这对于编写高效、可靠的…...
gradio 合集
知识点 1:基本 Chatbot 创建 import gradio as gr 定义历史记录 history [gr.ChatMessage(role“assistant”, content“How can I help you?”), gr.ChatMessage(role“user”, content“What is the weather today?”)] 使用历史记录创建 Chatbot 组件 ch…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
