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…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...