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

Java—学生信息管理系统(简单、详细)

文章目录

  • 一、主界面展示
  • 二、学生类
  • 三、系统功能方法
    • 3.1 main()方法
    • 3.2 添加学生信息
    • 3.3 删除学生信息
    • 3.4 修改学生信息
    • 3.5 查看所有学生信息
  • 四、完整代码
    • 4.1 Student .Java
    • 4.2 StudentManger.Java


  前言:本案例在实现时使用了Java语言中的ArrayList集合来储存数据。我把整个项目分成了Student .Java、StudentManger.Java 两个部分,实现了简单的学生信息管理系统。文章先分部讲解代码,最后附上完整的项目代码。

在这里插入图片描述


一、主界面展示

在这里插入图片描述

二、学生类

 我们首先创建学生类和构造方法:

  • 成员变量:学号(sid)、姓名(name)、年龄(age)、居住地(address)。
  • 构造方法:无参构造和带四个参数的构造。
  • 成员方法:每个成员变量对应给出get/set方法。
public class Student {//学号private String sid;//姓名private String name;//年龄private String age;//地址private String address;public String getSid() {return sid;}public void setSid(String sid) {this.sid = sid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

三、系统功能方法

3.1 main()方法

 思路:

  • 用输出语句完成主界面编写。
  • 用Scanner实现键盘录入数据。
  • 用switch语句完成操作的选择。
  • 用循环完成再次回到主界面。
    public static void main(String[] args){//创建集合对象,用于存储学生数据ArrayList<Student> array=new ArrayList<Student>();//用循环完成再次回到主界面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实现键盘录入数据Scanner sc = new Scanner(System.in);String line = sc.nextLine();//用switch语句完成操作选择switch (line) {case "1":addStudent(array);break;case "2":deleteStudent(array);break;case "3":updateStudent(array);break;case "4":finalAllStudent(array);break;case "5":System.out.println("已退出,谢谢使用");System.exit(0); //退出虚拟机}}}

3.2 添加学生信息

 思路:

  • 显示提示信息,提示要输入何种信息。
  • 键盘录入学生对象所需要的数据。
  • 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量。
  • 将学生对象添加到集合中(保存)。
  • 给出添加成功提示。

注意:学生信息中姓名最好为3个字、年龄最好为2位数。如:赵四四 20。

    public static void addStudent(ArrayList<Student> array){Scanner sc=new Scanner(System.in);String sid;while(true) {System.out.println("请输入学生的学号:");sid = sc.nextLine();boolean flag = isUsed(array, sid);if (flag) {System.out.println("你输入的学号已被占用,请重新输入:");}else{break;}}System.out.println("请输入学生的姓名:");String name=sc.nextLine();System.out.println("请输入学生的年龄:");String age=sc.nextLine();System.out.println("请输入学生的居住地:");String address=sc.nextLine();//创建学生对象,将键盘录入的数据赋值给学生对象的成员变量Student s=new Student();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);//将学生对象添加到集合中array.add(s);//给出添加成功提示System.out.println("添加学生成功");}

3.3 删除学生信息

 思路:

  • 显示提示信息。
  • 键盘录入要删除的学生学号。
  • 遍历集合将对应学生对象从集合中删除。
  • 给出删除成功提示。
    public static void deleteStudent(ArrayList<Student> array){Scanner sc=new Scanner(System.in);System.out.println("请输入你要删除的学生的学号:");String sid=sc.nextLine();//遍历集合将对应的学生对象从集合中删除for(int i=0; i< array.size(); i++){Student s=array.get(i);if(s.getSid().equals(sid)){array.remove(i);break;}}System.out.println("删除该学生信息成功");}

3.4 修改学生信息

 思路:

  • 显示提示信息。
  • 键盘录入要修改的学生学号。
  • 键盘录入要修改的学生信息。
  • 遍历集合修改对应的学生信息。
  • 给出修改成功提示。
    public static void updateStudent(ArrayList<Student> array){Scanner sc=new Scanner(System.in);System.out.println("请输入你要修改的学生的学号:");String sid=sc.nextLine();//键盘录入要修改的学生信息System.out.println("请输入学生的新姓名:");String name=sc.nextLine();System.out.println("请输入学生的新年龄:");String age=sc.nextLine();System.out.println("请输入学生的新居住地:");String address=sc.nextLine();//创建学生对象Student s=new Student();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);//遍历集合修改对应的学生信息for(int i=0; i<array.size(); i++){Student student=array.get(i);if(student.getSid().equals(sid)){array.set(i,s);  //把修改后的student s赋值给i的位置break;}}//给出修改成功提示System.out.println("修改学生信息成功");}
}

3.5 查看所有学生信息

 思路:

  • 显示表头信息。
  • 将集合中的数据取出按照对应格式显示学生信息,年龄显示补充“ 岁 ”。
    public static void finalAllStudent(ArrayList<Student> array){//判断集合是否有数据,如果没有显示提示信息if(array.size()==0){System.out.println("无信息,请先添加信息再查询");//为了让程序不再往下执行return;}//显示表头信息System.out.println("学号\t\t\t姓名\t\t\t年龄\t\t居住地");for(int i=0; i<array.size(); i++){Student s=array.get(i);System.out.println(s.getSid()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"岁\t"+s.getAddress());}}

四、完整代码

4.1 Student .Java

public class Student {//学号private String sid;//姓名private String name;//年龄private String age;//地址private String address;public String getSid() {return sid;}public void setSid(String sid) {this.sid = sid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

4.2 StudentManger.Java

package mypackage;import java.util.ArrayList;
import java.util.Scanner;public class StudentManger {public static void main(String[] args){//创建集合对象,用于存储学生数据ArrayList<Student> array=new ArrayList<Student>();//用循环完成再次回到主界面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实现键盘录入数据Scanner sc = new Scanner(System.in);String line = sc.nextLine();//用switch语句完成操作选择switch (line) {case "1":addStudent(array);break;case "2":deleteStudent(array);break;case "3":updateStudent(array);break;case "4":finalAllStudent(array);break;case "5":System.out.println("已退出,谢谢使用");System.exit(0); //退出虚拟机}}}//定义添加学生信息的方法public static void addStudent(ArrayList<Student> array){Scanner sc=new Scanner(System.in);String sid;while(true) {System.out.println("请输入学生的学号:");sid = sc.nextLine();boolean flag = isUsed(array, sid);if (flag) {System.out.println("你输入的学号已被占用,请重新输入:");}else{break;}}System.out.println("请输入学生的姓名:");String name=sc.nextLine();System.out.println("请输入学生的年龄:");String age=sc.nextLine();System.out.println("请输入学生的居住地:");String address=sc.nextLine();//创建学生对象,将键盘录入的数据赋值给学生对象的成员变量Student s=new Student();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);//将学生对象添加到集合中array.add(s);//给出添加成功提示System.out.println("添加学生成功");}//定义判断学号是否被占用方法public static boolean isUsed(ArrayList<Student> array, String sid){boolean flag=false;for(int i=0; i< array.size(); i++){Student s= array.get(i);if(s.getSid().equals(sid)){flag=true;break;}}return  flag;}//定义查看所有学生信息的方法public static void finalAllStudent(ArrayList<Student> array){//判断集合是否有数据,如果没有显示提示信息if(array.size()==0){System.out.println("无信息,请先添加信息再查询");//为了让程序不再往下执行return;}//显示表头信息System.out.println("学号\t\t\t姓名\t\t\t年龄\t\t居住地");for(int i=0; i<array.size(); i++){Student s=array.get(i);System.out.println(s.getSid()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"岁\t"+s.getAddress());}}//定义删除学生信息的方法public static void deleteStudent(ArrayList<Student> array){Scanner sc=new Scanner(System.in);System.out.println("请输入你要删除的学生的学号:");String sid=sc.nextLine();//遍历集合将对应的学生对象从集合中删除for(int i=0; i< array.size(); i++){Student s=array.get(i);if(s.getSid().equals(sid)){array.remove(i);break;}}System.out.println("删除该学生信息成功");}//定义修改学生信息的方法public static void updateStudent(ArrayList<Student> array){Scanner sc=new Scanner(System.in);System.out.println("请输入你要修改的学生的学号:");String sid=sc.nextLine();//键盘录入要修改的学生信息System.out.println("请输入学生的新姓名:");String name=sc.nextLine();System.out.println("请输入学生的新年龄:");String age=sc.nextLine();System.out.println("请输入学生的新居住地:");String address=sc.nextLine();//创建学生对象Student s=new Student();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);//遍历集合修改对应的学生信息for(int i=0; i<array.size(); i++){Student student=array.get(i);if(student.getSid().equals(sid)){array.set(i,s);  //把修改后的student s赋值给i的位置break;}}//给出修改成功提示System.out.println("修改学生信息成功");}
}

相关文章:

Java—学生信息管理系统(简单、详细)

文章目录 一、主界面展示二、学生类三、系统功能方法3.1 main()方法3.2 添加学生信息3.3 删除学生信息3.4 修改学生信息3.5 查看所有学生信息 四、完整代码4.1 Student .Java4.2 StudentManger.Java 前言&#xff1a;本案例在实现时使用了Java语言中的ArrayList集合来储存数据。…...

Spring第一课,了解IDEA里面的文件,回顾Cookie和Session,获取Session,Cookie,Header的方式

目录 IDEA第一课&#xff08;熟悉里面内容&#xff09; 建立连接 -RequestMapping 路由映射 请求 1.传递单个参数​编辑 2.多个参数​编辑 3.传递数组 4.传递一个集合&#xff0c;但是这里我们传递的时候发生了500的错误 简单介绍JSON 回顾Cookie和S…...

AcWing113.特殊排序

题目 有 N N N 个元素&#xff0c;编号 1 , 2.. N 1,2..N 1,2..N&#xff0c;每一对元素之间的大小关系是确定的&#xff0c;关系具有反对称性&#xff0c;但不具有传递性。 注意&#xff1a;不存在两个元素大小相等的情况。 也就是说&#xff0c;元素的大小关系是 N N N…...

数据仓库岗面试

1.自我介绍 2.求用户连续登录3天&#xff0c;要讲出多种解法 解法1&#xff08;使用SQL&#xff09;&#xff1a; SELECTuserid FROMloginrecord WHEREDATEDIFF(day, time, LAG(time) OVER (PARTITION BY userid ORDER BY time)) 1AND DATEDIFF(day, LAG(time) OVER (PARTI…...

企业建数仓的第一步是选择一个好用的ETL工具

当企业决定建立数据仓库&#xff08;Data Warehouse&#xff09;&#xff0c;第一步就是选择一款优秀的ETL&#xff08;Extract, Transform, Load&#xff09;工具。数据仓库是企业数据管理的核心&#xff0c;它存储、整合并管理各种数据&#xff0c;为商业决策和数据分析提供支…...

行情分析 - - 加密货币市场大盘走势(11.23)

大饼昨日又开始了回调&#xff0c;因为FTF消息&#xff0c;而实际还是要下跌的&#xff0c;耐心等待即可。 空单策略&#xff1a;入场37300 止盈34000-33000 止损39000 以太昨日上涨也很激励&#xff0c;目前上涨打了止损&#xff0c;现在入场是好的机会&#xff0c;等待即可。…...

穿山甲SDK 集成·android接入广告·app流量变现

接入穿山甲SDK的app 数独训练APP 广告接入示例: Android 个人开发者如何接入广告SDK&#xff0c;实现app流量变现 接入穿山甲SDK app示例&#xff1a; android 数独小游戏 经典数独休闲益智 随着移动互联网的快速发展&#xff0c;广告成为了许多应用开发者获取收益的主要方…...

深度学习模型训练计算量的估算

深度学习模型训练计算量的估算 方法1&#xff1a;基于网络架构和批处理数量计算算术运算次数前向传递计算和常见层的参数数量全连接层&#xff08;Fully connected layer&#xff09;参数浮点数计算量 CNN参数浮点数计算量 转置CNN参数浮点数计算量 RNN参数浮点数计算量 GRU参数…...

【实验笔记】C语言实验——降价提醒机器人

降价提醒机器人 题目&#xff1a; 小 T 想买一个玩具很久了&#xff0c;但价格有些高&#xff0c;他打算等便宜些再买。但天天盯着购物网站很麻烦&#xff0c;请你帮小 T 写一个降价提醒机器人&#xff0c;当玩具的当前价格比他设定的价格便宜时发出提醒。 输入格式&#xf…...

YOLOv5分割训练,从数据集标注到训练一条龙解决

最近进行了分割标注&#xff0c;感觉非常好玩&#xff0c;也遇到了很多坑&#xff0c;来跟大家分享一下&#xff0c;老样子有问题评论区留言&#xff0c;我会的就会回答你。 第一步&#xff1a;准备数据集 1、安装标注软件labelme如果要在计算机视觉领域深入的同学&#xff0…...

再添千万级罚单,某银行年内罚款过亿!金融行业合规问题亟待解决

11月17日晚间&#xff0c;国家金融监管总局上海监管局披露行政处罚信息显示&#xff0c;某银行因32项违法违规事实收到两张690万元的大额罚单&#xff0c;合计罚款金额达1380万元。但这并不是银行该今年收到的第一张大额罚单。今年4月28日&#xff0c;该行因在结售汇、外币理财…...

配置Nginx服务器用于Web应用代理和SSL{仅配置文件}

在本篇博文中&#xff0c;我们将深入讨论如何配置Nginx服务器&#xff0c;使其成为一个强大的Web应用代理&#xff0c;并通过SSL协议加强通信的安全性。 1. 服务器监听与SSL设置 首先&#xff0c;我们要配置Nginx服务器以监听HTTPS流量并设置SSL证书&#xff0c;确保通信的安…...

【广州华锐互动】VR溺水预防教育:在虚拟世界中学会自救!

在现代社会中&#xff0c;水上安全和救援行动的重要性不言而喻。尤其在自然灾害、游泳事故或航海事故中&#xff0c;有效的救援行动可以挽救许多生命。然而&#xff0c;传统的救援训练往往存在成本高、风险大、效率低等问题。在这样的背景下&#xff0c;虚拟现实&#xff08;VR…...

Si(111)衬底上脉冲激光沉积AlN外延薄膜的界面反应控制及其机理

引言 通过有效控制AlN薄膜与Si衬底之间的界面反应&#xff0c;利用脉冲激光沉积&#xff08;PLD&#xff09;在Si衬底上生长高质量的AlN外延薄膜。英思特对PLD生长的AlN/Si异质界面的表面形貌、晶体质量和界面性能进行了系统研究。 我们研究发现&#xff0c;高温生长过程中形…...

基于Cortex®-M4F的TM4C123GH6NMRT7R 32位MCU,LM74900QRGERQ1、LM74930QRGERQ1汽车类理想二极管

一、TM4C123GH6NMRT7R IC MCU 32BIT 256KB FLASH 157BGA Tiva™C系列微控制器为设计人员提供了基于ARMCortex™-M的高性能架构&#xff0c;该架构具有广泛的集成功能以及强大的软件和开发工具生态系统。以性能和灵活性为目标&#xff0c;Tiva™C系列架构提供了一个具有FPU的80…...

苹果企业签名失败常见的问题

苹果企业签名失败的常见问题主要有以下几种&#xff1a; 证书过期或无效&#xff1a;苹果开发者需要定期更新他们的签名证书&#xff0c;以确保其有效性。一旦证书过期&#xff0c;相关应用将无法正常工作。证书不匹配&#xff1a;如果使用的证书与应用程序的Bundle ID不匹配&…...

Jtti:Android alertdialog嵌套出错怎么解决

在Android开发中&#xff0c;AlertDialog嵌套可能导致一些问题&#xff0c;例如显示异常或无法关闭对话框等。这通常是由于上一个AlertDialog未被正确关闭&#xff0c;导致下一个AlertDialog无法正常工作。解决这个问题的方法包括&#xff1a; 1. 确保关闭上一个AlertDialog&a…...

解锁word密码,忘记密码怎么办?

想要解密、找回或去除Word文档密码&#xff0c;可以按以下步骤操作&#xff1a;第一步&#xff0c;在百度上搜索【密码帝官网】&#xff0c;接着在用户中心上传需要解密的文件即可。这种方法安全、简单易操作&#xff0c;而且不用下载软件&#xff0c;手机和电脑都可以用。无论…...

同为科技(TOWE)桌面PDU插排:一款可以DIY定制的“超级插座”

当今社会&#xff0c;各种电子产品和家用电器已成为人们日常生活中不可或缺的一部分&#xff0c;在带给人们便利的同时&#xff0c;也使得电力使用变得更加频繁和重要。然而&#xff0c;当前市面上很多普通插座由于功能单一、材质粗劣、插口数量受限、充电速度过慢、插头间互相…...

使用Java Servlet生成动态二维码

文章目录 引入ZXing库创建QRCodeServlet部署到Servlet容器拓展功能1. 动态生成二维码内容2. 调整二维码尺寸3. 错误修正级别4. 日志输出 结语 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...