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…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...
