当前位置: 首页 > news >正文

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防火墙四表五链和防火墙应用案例

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 防火墙在运维工作中有着不可或缺的重要性。首先&#xff0c;它是保障网络安全的关键防线&#xff0c;通过设置访问控制规则&#xff0c;可精准过滤非法网络流量&#xff0c;有效阻挡外部黑客攻击、恶…...

8. 网络编程

网络的基本概念 TCP/IP协议概述 OSI和TCP/IP模型 socket&#xff08;套接字&#xff09; 创建socket 字节序 字节序转换函数 通用地址结构 因特网地址结构 IPV4地址族和字符地址间的转换(点分十进制->网络字节序) 填写IPV4地址族结构案例 掌握TCP协议网络基础编程 相关函数 …...

C++并发编程指南04

文章目录 共享数据的问题3.1.1 条件竞争双链表的例子条件竞争示例恶性条件竞争的特点 3.1.2 避免恶性条件竞争1. 使用互斥量保护共享数据结构2. 无锁编程3. 软件事务内存&#xff08;STM&#xff09; 总结互斥量与共享数据保护3.2.1 互斥量使用互斥量保护共享数据示例代码&…...

常见的同态加密算法收集

随着对crypten与密码学的了解&#xff0c;我们将逐渐深入学习相关知识。今天&#xff0c;我们将跟随同态加密的发展历程对相关算法进行简单的收集整理 。 目录 同态加密概念 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&#xff1a;命令行下载方式2&#xff1a;离线包下载 二、Docker Desktop更新时间 前言 参考文章&#xff1a;Windows Subsystem for Linux——解决WSL更新速度慢的方案 参考视频&#xff1a;一个视频解决D…...

AI智慧社区--生成验证码

接口文档&#xff1a; 从接口文档中可以得知的信息&#xff1a; 代码的返回格式为json格式&#xff0c;可以将Controlller换为RestController前端发起的请求为Get请求&#xff0c;使用注解GetMapping通过返回的数据类型&#xff0c;定义一个返回类型Result package com.qcby.…...

2501,20个窗口常用操作

窗口是屏幕上的一个矩形区域.窗口分为3种:覆盖窗口,弹窗和子窗口.每个窗口都有由系统绘画的"非客户区"和应用绘画的"客户区". 在MFC中,CWnd类为各种窗口提供了基类. 1,通过窗柄取得CWnd指针 可调用Cwnd::FromHandle函数,通过窗柄取得Cwnd指针. void CD…...

【gopher的java学习笔记】一文讲懂controller,service,mapper,entity是什么

刚开始上手Java和Spring时&#xff0c;就被controller&#xff0c;service&#xff0c;mapper&#xff0c;entity这几个词搞懵了&#xff0c;搞不懂这些究竟代表什么&#xff0c;感觉使用golang开发的时候也没太接触过这些名词啊~ 经过两三个月的开发后&#xff0c;逐渐搞懂了这…...

消息队列篇--通信协议篇--STOMP(STOMP特点、格式及示例,WebSocket上使用STOMP,消息队列上使用STOMP等)

STOMP&#xff08;Simple Text Oriented Messaging Protocol&#xff0c;简单面向文本的消息传递协议&#xff09;是一种轻量级、基于文本的协议&#xff0c;旨在为消息代理&#xff08;消息队列&#xff09;和客户端之间的通信&#xff08;websocket&#xff09;提供一种简单的…...

基于SpringBoot的租房管理系统(含论文)

基于SpringBoot的租房管理系统是一个集订单管理、房源信息管理、屋主申诉处理、用户反馈等多项功能于一体的系统。该系统通过SpringBoot框架开发&#xff0c;拥有完善的管理员后台、屋主管理模块、用户功能模块等&#xff0c;适用于房地产租赁平台或中介公司进行日常管理与运营…...

提升企业内部协作的在线知识库架构与实施策略

内容概要 在当前快速变化的商业环境中&#xff0c;企业对于提升内部协作效率的需求愈显迫切。在线知识库作为信息存储与共享的平台&#xff0c;成为了推动企业数字化转型的重要工具。本文将深入探讨如何有效打造与实施在线知识库&#xff0c;强调架构设计、知识资产分类管理及…...

【物联网】ARM核常用指令(详解):数据传送、计算、位运算、比较、跳转、内存访问、CPSR/SPSR、流水线及伪指令

文章目录 指令格式&#xff08;重点&#xff09;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开发中&#xff0c;Jackson库是处理JSON数据的常用工具。其中&#xff0c;JsonTypeId注解是一个非常实用的功能&#xff0c;它可以帮助我们更好地控制多态类型信息在序列化过程中的表现。今天&#xff0c;我们就来深入探讨一下JsonTypeId的用法&#xff0c;并通过具…...

Ubuntu 顶部状态栏 配置,gnu扩展程序

顶部状态栏 默认没有配置、隐藏的地方 安装使用Hide Top Bar 或Just Perfection等进行配置 1 安装 sudo apt install gnome-shell-extension-manager2 打开 安装的“扩展管理器” 3. 对顶部状态栏进行配置 使用Hide Top Bar 智能隐藏&#xff0c;或者使用Just Perfection 直…...

Java---入门基础篇(上)

前言 本片文章主要讲了刚学Java的一些基础内容,例如注释,标识符,数据类型和变量,运算符,还有逻辑控制等,记录的很详细,带你从简单的知识点再到练习题.如果学习了c语言的小伙伴会发现,这篇文章的内容和c语言大致相同. 而在下一篇文章里,我会讲解方法和数组的使用,也是Java中基础…...

Linux C++

一、引言 冯诺依曼架构是现代计算机系统的基础&#xff0c;它的提出为计算机的发展奠定了理论基础。在学习 C 和 Linux 系统时&#xff0c;理解冯诺依曼架构有助于我们更好地理解程序是如何在计算机中运行的&#xff0c;包括程序的存储、执行和资源管理。这对于编写高效、可靠的…...

gradio 合集

知识点 1&#xff1a;基本 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…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...