java后端开发day18--学生管理系统

在这里插入图片描述
(以下内容全部来自上述课程)
在这里插入图片描述

1.业务分析并搭建主菜单

1.需求

采取控制台的方式去书写学生管理系统

2.分析

1.初始菜单

在这里插入图片描述

2.学生类

属性:id,姓名,年龄,家庭住址

3.添加功能

键盘录入每一个学生信息并添加,需要满足以下要求:

  • id唯一
4.删除功能

键盘录入要删除的学生id,需要满足以下要求:

  • id存在删除
  • id不存在,需要提示不存在,并返回的初始菜单
5.修改功能

键盘录入要修改的学生id,需要满足以下要求:

  • id存在,继续录入其他信息
  • id不存在,需要提示不存在,并返回的初始菜单
6.查询功能

打印所有的学生信息,需要满足以下要求:

  • 如果没有学生信息,提示:当前无学生信息,请添加后再查询
  • 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)

在这里插入图片描述

3.流程图

在这里插入图片描述

4.代码

1.Javabean
package xueshengguanli;public class Student {private 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;}/*** 获取* @return id*/public String getId() {return id;}/*** 设置* @param id*/public void setId(String id) {this.id = id;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}/*** 获取* @return address*/public String getAddress() {return address;}/*** 设置* @param address*/public void setAddress(String address) {this.address = address;}public String toString() {return "Student{id = " + id + ", name = " + name + ", age = " + age + ", address = " + address + "}";}
}
2.测试类
package xueshengguanli;import java.util.ArrayList;
import java.util.Scanner;public class StudentSystem {public static void main(String[] args) {// 将 ArrayList<Student> 移到循环外部,确保操作的是同一个列表ArrayList<Student> list = new ArrayList<>();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("请输入你的选择:");Scanner sc = new Scanner(System.in);String choice = sc.next();  // 容错率switch (choice) {case "1":System.out.println("添加学生");// 调用添加学生的方法addStudent(list);break;case "2":System.out.println("删除学生");// 调用删除学生的方法deleteStudent(list);break;case "3":System.out.println("修改学生");// 调用修改学生的方法updateStudent(list);break;case "4":System.out.println("查询学生");// 调用查询学生的方法queryStudent(list);break;case "5":System.out.println("退出");break loop;// System.exit(0);  停止虚拟机运行default:System.out.println("输入有误");}}}// 添加学生public static void addStudent(ArrayList <Student> list){// 利用空参构造方法创建一个新的学生对象Student newStudent = new Student();Scanner sc = new Scanner(System.in);System.out.println("请输入学生学号:");String id = sc.next();boolean flag = isExist(list,id);if (flag) {System.out.println("当前学号已存在,请重新输入");return;}newStudent.setId(id);System.out.println("请输入学生姓名:");String name = sc.next();newStudent.setName(name);System.out.println("请输入学生年龄:");int age = sc.nextInt();newStudent.setAge(age);System.out.println("请输入学生住址:");String address = sc.next();newStudent.setAddress(address);// 把新的学生对象添加到集合中list.add(newStudent);// 提示添加成功System.out.println("添加成功");}// 删除学生public static void deleteStudent(ArrayList<Student> list){Scanner sc = new Scanner(System.in);System.out.println("请输入要删除的学生学号:");String id = sc.next();// 查询 id 在集合中的索引位置int index = getIndex(list,id);if (index == -1) {System.out.println("当前学号不存在,请重新输入");return;}// 删除list.remove(index);// 提示删除成功System.out.println("删除成功");}// 修改学生public static void updateStudent(ArrayList<Student> list) {// 请输入要修改的 idScanner sc = new Scanner(System.in);System.out.println("请输入要修改的学生学号:");String id = sc.next();// 查询 id 在集合中的索引位置int index = getIndex(list,id);if (index == -1) {System.out.println("当前学号不存在,请重新输入");return;}// 获取要修改的学生对象Student student = list.get(index);// 请输入要修改的学生信息System.out.println("请输入要修改的学生姓名:");String name = sc.next();student.setName(name);System.out.println("请输入要修改的学生年龄:");int age = sc.nextInt();student.setAge(age);System.out.println("请输入要修改的学生住址:");String address = sc.next();student.setAddress(address);// 提示修改成功System.out.println("修改成功");}// 查询学生public static void queryStudent(ArrayList<Student> list){if (list.size() == 0) {System.out.println("当前无学生信息,请添加后重试");return;}// 输出表头System.out.println("学号\t姓名\t年龄\t住址");// 遍历原数组for (int i = 0; i < list.size(); i++) {// 获取当前学生对象Student student = list.get(i);// 输出当前学生对象的信息System.out.println(student.getId() + "\t" + student.getName() + "\t"+ student.getAge() + "\t" + student.getAddress());}}// 判断当前 id 是否存在public static boolean isExist(ArrayList<Student> list,String id){// 遍历原数组for (int i = 0; i < list.size(); i++) {// 判断当前学生对象的 id 是否等于要判断的 idif(list.get(i).getId().equals(id)){// 如果相等,就返回 truereturn true;}}// 如果遍历完都没有相等的,就返回 falsereturn false;}// 通过 id 获取索引public static int getIndex(ArrayList<Student> list,String id){// 遍历原数组for (int i = 0; i < list.size(); i++) {// 判断当前学生对象的 id 是否等于要判断的 idif(list.get(i).getId().equals(id)){// 如果相等,就返回索引return i;}}// 如果遍历完都没有相等的,就返回 -1return -1;}
}

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

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

相关文章

记录一次部署PC端网址全过程

当我查看我之前写的文章时、顿时惊奇发出感慨&#xff1a;啥时候写的&#xff1f;是我写的么&#xff1f;疑惑重重… 所以说&#xff0c;好记性不如烂笔头。 记录一次部署PC端网址全过程 部署PC端网址分是三步&#xff1a;第一步&#xff1a;申请域名并映射到外网IP &#xff0…

本地大模型编程实战(22)用langchain实现基于SQL数据构建问答系统(1)

使 LLM(大语言模型) 系统能够查询结构化数据与非结构化文本数据在性质上可能不同。后者通常生成可在向量数据库中搜索的文本&#xff0c;而结构化数据的方法通常是让 LLM 编写和执行 DSL&#xff08;例如 SQL&#xff09;中的查询。 我们将演练在使用基于 langchain 链 &#x…

利用机器学习实现实时交易欺诈检测

以下是一个基于Python的银行反欺诈AI应用示例代码,演示如何利用机器学习实现实时交易欺诈检测。该示例使用LightGBM算法训练模型,并通过Flask框架构建实时检测API: python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preproc…

最好的Git实践指南(Windows/Linux双系统详解)

Git最佳实践指南&#xff1a;从入门到熟练&#xff08;Windows/Linux双系统详解&#xff09; 一、环境搭建与基础配置&#xff08;适用Windows/Linux&#xff09; 1.1 Git安装与验证 # Windows系统安装&#xff08;推荐Chocolatey包管理&#xff09; # 直接下载git二进制文件…

Python零基础学习第二天(条件语句,循环语句)

Python零基础学习第二天&#xff1a;流程控制与模块导入 一、流程控制结构 1. 条件语句&#xff08;if, elif, else&#xff09; 条件语句用于根据不同的条件执行不同的代码块。基本形式如下&#xff1a; if 条件1: # 当条件1为True时执行这里的代码 elif 条件2: # 当前面的条…

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(三) 实现注册 登录接口

1.划分文件夹 在src目录下创建controllers middleware models routes controllers 放具体的方法 signup login middleware 里面是中间件 请求的验证 models 放对象实体 routes 处理访问路径像/signup /login 等等 2. 接口开发 系统的主要 有用户认证 和 消息 2种类型…

使用Socket编写超牛的http服务器和客户端(一)

实现一个高性能的基于 IOCP(I/O Completion Ports)的 HTTP 服务器,支持多线程、动态线程池调整和路由处理。 主要功能和特性 IOCP 模型: 使用多个 IOCP 句柄(IOCP_COUNT),将客户端连接均匀分配到不同的 IOCP 上,减少线程竞争。 工作线程使用 GetQueuedCompletionStatu…

podman加速器配置,harbor镜像仓库部署

Docker加速器 registries加速器 [rootlocalhost ~]# cat /etc/redhat-release CentOS Stream release 8 [rootlocalhost ~]# cd /etc/containers/ [rootlocalhost containers]# ls certs.d policy.json registries.conf.d storage.conf oci registries.conf re…

MOE结构解读和deepseek的MoE结构

不管dense还是MoE&#xff08;Mixture of Experts&#xff09;都是基于transformer的。 下面回顾下解码器块的主要架构&#xff1a; 注意力机制-层归一化&残差连接-FFN前馈神经网络-层归一化&残差连接。 dense模型是沿用了这个一架构&#xff0c;将post-norm换为pre-no…

C#与AI的交互(以DeepSeek为例)

C#与ai的交互 与AI的交互使用的Http请求的方式&#xff0c;通过发送请求&#xff0c;服务器响应ai生成的文本 下面是完整的代码&#xff0c;我这里使用的是Ollama本地部署的deepseek&#xff0c;在联网调用api时&#xff0c;则url会有不同 public class OllamaRequester {[Se…

第九节: Vue 3 中的 provide 与 inject:优雅的跨组件通信

文章目录 前言什么是 provide 和 inject&#xff1f;provide 的基本使用inject 的基本使用provide 提供响应式数据数据provide 提供修改数据的方法provide 提供只读响应数据provide 使用symbol作为注入名inject 默认值总结 前言 在 Vue 3 中&#xff0c;provide 和 inject 是一…

微信小程序-二维码绘制

wxml <view bindlongtap"saveQrcode"><!-- 二维码 --><view style"position: absolute;background-color: #FFFAEC;width: 100%;height: 100vh;"><canvas canvas-id"myQrcode" style"width: 200px; height: 200px;ba…

Linux系统中ssh远程登录协议

目录 一、SSH协议概述 二、SSH协议工作原理 三、ssh服务与配置文件 3.1、openssh 3.2、ssh命令 3.3、服务端配置 四、基于密钥验证的免交互登录 4.1、客户端生成密钥 4.2、将公钥拷贝至服务器 4.3、验证免密登录 一、SSH协议概述 SSH&#xff08;Secure Shell&#x…

vue2 ruoyi websocket轮询

文章目录 前言一、websocket和心跳是什么&#xff1f;二、使用步骤1.2.监听变化3.关闭 总结 前言 websocket&#xff0c;实现与后端通讯&#xff0c;使用心跳机制&#xff0c;断联自动恢复。 一、websocket和心跳是什么&#xff1f; WebSocket WebSocket 是一种网络通信协议&a…

LangChain大模型应用开发:LangGraph快速构建Agent工作流应用

介绍 大家好&#xff0c;博主又来给大家分享知识了。今天给大家分享的内容是使用LangChain进行大规模应用开发中的LangGraph快速构建Agent工作流应用。 通过对前几次对LangChain的技术分享。我们知道LangChain作为一个强大的工具集&#xff0c;为开发者们提供了丰富的资源和便…

学习FreeRTOS推荐几篇质量高的文章

学习FreeRTOS是一个非常好的选择&#xff0c;因为它是一个广泛使用的实时操作系统&#xff08;RTOS&#xff09;&#xff0c;特别适合嵌入式系统开发。以下是一些高质量的文章和视频资源&#xff0c;帮助你入门和深入学习FreeRTOS&#xff1a; 文章推荐 FreeRTOS官方文档 链接…

深入理解Redis:数据类型、事务机制及其应用场景

在当今快速发展的技术领域中&#xff0c;Redis作为一种高性能的内存数据库&#xff0c;已经被广泛应用于各种场景&#xff0c;从简单的缓存实现到复杂的数据处理任务。其灵活性和高效性主要来源于对多种数据结构的支持以及强大的功能特性&#xff0c;如事务处理、持久化选项、高…

k8s集群3主5从高可用架构(kubeadm方式安装k8s)

关键步骤说明 环境准备阶段 系统更新&#xff1a;所有节点执行yum/apt update确保软件包最新时间同步&#xff1a;通过ntpdate time.windows.com或部署NTP服务器网络规划&#xff1a;明确划分Service网段&#xff08;默认10.96.0.0/12&#xff09;和Pod网段&#xff08;如Flann…

Dify部署无法拉取镜像

Dify部署无法摘取镜像 sudo docker compose up -d [] Running 10/10✘ nginx Error Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiti... 15.2s✘ we…

科技快讯 | L3自动驾驶之风吹向全球 2025年或成商业化关键;DeepSeek商标遭恶意抢注

消息称AMD拟以40亿美元出售数据中心工厂&#xff0c;部分台企成潜在买家 2月24日&#xff0c;彭博社报道&#xff0c;AMD正与包括台湾广达电子、英业达、和硕联合以及纬创资通在内的亚洲企业谈判&#xff0c;出售其去年收购的数据中心制造工厂&#xff0c;总价值可能在30-40亿美…