3.26学习总结java初步实现学生管理系统

(该项目通过视频讲解过程中完成,其中将一些操作进行了修改和完善,其目的是为了巩固前面学习java的一些用法,熟悉写项目的过程)

一.项目要求

学生类:

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

添加功能:

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

删除功能:

  • 键盘录入要删除的学生id,需要满足以下要求
  • id存在删除
  • id不存在,需要提示不存在,并回到初始菜单

修改功能:

  • 键盘录入要修改的学生id,需要满足以下要求
  • id存在,继续录入其他信息
  • id不存在,需要提示不存在,并回到初始菜单

查询功能:

  • 打印所有的学生信息,需要满足以下要求。
  • 如果没有学生信息,提示:当前无学生信息,请添加后再查询
  • 如果有学生信息,需要按照以下格式输出。

二.项目过程

1.提取项目要求,按要求分成不同的模块.

2.根据各个的操作分析,采取相应的方法

添加操作:按学生属性添加成员信息

删除操作:将通过ID在学生中查找,通过返回值,判断是否存在学生,如果不为-1,即是学生的编号.

修改操作:将通过ID在学生中查找,得到学生编号,在通过Change方法,对具体的学生信息进行修改

查询操作:遍历输出成员信息.

二.代码实现

学生类 Student

package studentguangli;import java.util.ArrayList;public class Student {//成员变量private String id;private String name;private String sex;private int age;private String address;//空参的构造方法public Student() {}//带参的构造方法public Student(String id, String name, String sex, int age, String address) {this.id = id;this.name = name;this.sex = sex;this.age = age;this.address = address;}//get方法和set方法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 String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}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;}}

StudentSystem

package studentguangli;import studyone.ArrUtill;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class StudentSystem {public static void main(String[] args) {ArrayList<Student> list=new ArrayList<>();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":Addstudent(list);break;case "2":Deletestudent(list);break;case "3":Changestudent(list);break;case "4":Findstudent(list);break;case "5":System.out.println("退出系统!");System.exit(0);default: break;}}}public static void Addstudent(ArrayList<Student> list){Scanner sc=new Scanner(System.in);String id= null;//判断id是否唯一while (true) {System.out.println("请输入添加学生的id:");id = sc.next();boolean flag=checkid(list,id);if(flag){System.out.println("id重复,请重新输入:");}else{break;}}System.out.println("请输入添加学生的姓名:");String name=sc.next();System.out.println("请输入添加学生的性别:");String sex=sc.next();System.out.println("请输入添加学生的年龄:");int age=sc.nextInt();System.out.println("请输入添加学生的家庭住址:");String address=sc.next();Student s=new Student(id,name,sex,age,address);list.add(s);System.out.println("学生信息添加成功!");}public static void Deletestudent(ArrayList<Student> list){Scanner sc=new Scanner(System.in);while (true) {System.out.println("请输入要删除的学生id:");String id=sc.next();int k=getid(list,id);if(k==-1){System.out.println("没有找到此id的学生,请重新输入id:");}else{list.remove(k);System.out.println("删除成功!");break;}}}public static void Changestudent(ArrayList<Student> list){Scanner sc=new Scanner(System.in);while (true) {System.out.println("请输入要修改的学生id:");String id=sc.next();int k=getid(list,id);if(k==-1){System.out.println("没有找到此id的学生,请重新输入id:");}else{change(list,id,k);System.out.println("修改成功!");break;}}}public static void Findstudent(ArrayList<Student> list){if(list.isEmpty()){System.out.println("暂时没有学生信息,请添加后再查询!");return;}System.out.println("id\t\t姓名\t\t性别\t\t年龄\t\t家庭住址");for(int i=0;i< list.size();i++){Student s=list.get(i);System.out.println(s.getId()+"\t"+s.getName()+"\t  "+s.getSex()+"\t  "+s.getAge()+"\t  "+s.getAddress());}}public static boolean checkid(ArrayList<Student> list,String id){
//        //从学生中查找是否有相同的id
//        for(int i=0;i<list.size();i++){
//            Student s= list.get(i);
//            String sid=s.getId();
//            if(sid.equals(id)){
//                //如果有返回true
//                return true;
//            }
//        }
//        //如果没有返回false
//        return false;return getid(list,id)>=0;}public static int getid(ArrayList<Student> list,String id){//从学生中查找是否有相同的idfor(int i=0;i<list.size();i++){Student s= list.get(i);String sid=s.getId();if(sid.equals(id)){//如果有返回该学生的序号return i;}}//如果没有返回-1return -1;}public static void change(ArrayList<Student> list,String id,int num){Scanner sc=new Scanner(System.in);Student s=list.get(num);System.out.println("你要修改的学生信息编号(1.姓名,2.性别,3.年龄,4.家庭住址)");int choice=sc.nextInt();switch (choice){case 1:System.out.println("请输入你要修改的学生姓名:");String newname=sc.next();s.setName(newname);break;case 2:System.out.println("请输入你要修改的学生性别:");String newsex=sc.next();s.setSex(newsex);break;case 3:System.out.println("请输入你要修改的学生年龄:");int newage=sc.nextInt();s.setAge(newage);break;case 4:System.out.println("请输入你要修改的学生家庭住址:");String newaddress=sc.next();s.setAddress(newaddress);break;default:break;}}
}

三.运行结果

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

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

相关文章

VMware扩容硬盘

最近研究Oracle的备份导入导出功能&#xff0c;但是因为磁盘容量不够导致表空间的扩容没办法&#xff0c;从而没办法导入数据库的dmp文件。得想办法先扩容磁盘容量。话不多说上截图操作。 操作环境&#xff1a;VMware10 , Centos 6.9 VMware扩容硬盘步骤 一、关闭虚拟机&…

v4l2采集视频

Video4Linux2&#xff08;v4l2&#xff09;是用于Linux系统的视频设备驱动框架&#xff0c;它允许用户空间应用程序直接与视频设备&#xff08;如摄像头、视频采集卡等&#xff09;进行交互。 linux系统下一切皆文件&#xff0c;对视频设备的操作就像对文件的操作一样&#xff…

蓝桥杯刷题-子串简写

子串简写 代码 kint(input()) s,c1,c2input().split() pre[0]*len(s) ans0 for i in range(len(s)):pre[i]pre[i-1]if c1s[i]:pre[i]1elif c2s[i] and i1-k>0:anspre[i-k1] print(ans)

【MySQL】4.MySQL日志管理与数据库的备份和恢复

备份的目的只要是为了灾难恢复&#xff0c;备份还可以测试应用&#xff0c;回滚数据&#xff0c;修改和查询历史数据&#xff0c;审计等 日志在备份、恢复中起着重要作用 一、数据库备份的重要性 在生产环境中&#xff0c;数据的安全性至关重要 任何数据丢失都可能产生严重的…

苍穹外卖项目-01(开发流程,介绍,开发环境搭建,nginx反向代理,Swagger)

目录 一、软件开发整体介绍 1. 软件开发流程 1 第1阶段: 需求分析 2 第2阶段: 设计 3 第3阶段: 编码 4 第4阶段: 测试 5 第5阶段: 上线运维 2. 角色分工 3. 软件环境 1 开发环境(development) 2 测试环境(testing) 3 生产环境(production) 二、苍穹外卖项目介绍 …

第二证券|股票限售解禁是怎么回事?

限售股是指那些卖出受到限制的股票&#xff0c;其受到了不少投资者的重视。关于股票限售解禁是怎么回事&#xff0c;第二证券下面就为大家详细介绍一下。 股票限售解禁是指一些本来不能在二级商场上自在买卖的股票&#xff0c;当满足必定的条件后能够在二级商场上自在买卖。一…

如何用交换机组建LAN?

什么是LAN&#xff1f; 局域网&#xff08;LAN&#xff09;是连接有限区域&#xff08;例如办公楼、学校或家庭&#xff09;内设备的网络。它允许用户共享资源&#xff0c;包括数据、打印机和互联网访问。LAN连接设备以促进用户之间的协作和传输信息&#xff0c;例如计算机、打…

YOLOv9有效改进专栏汇总|未来更新卷积、主干、检测头注意力机制、特征融合方式等创新![2024/3/23]

​ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 专栏介绍 YOLOv9作为最新的YOLO系列模型&#xff0c;对于做目标检测的同学是必不可少的。本专栏将针对2024年最新推出的YOLOv9检测模型&#xff0…

【C语言】Infiniband驱动mlx4_reset

一、注释 这个 mlx4_reset 函数负责重置 Mellanox 设备。它保存了设备的 PCI 头信息&#xff0c;然后重置了设备&#xff0c;之后还原保存的 PCI 头信息。请注意&#xff0c;该函数是用英文注释的&#xff0c;下面提供中文注释的版本。以下是该函数的流程&#xff1a; 1. 为保…

基于51单片机的鸡蛋孵化环境监测警报系统Proteus仿真

地址&#xff1a;https://pan.baidu.com/s/1-OTZcuPHiZwdfd5KCaG7NA 提取码&#xff1a;1234 仿真图&#xff1a; 1、使用ADC0808测量一路模拟量&#xff08;可以表示温度、湿度、烟雾等等&#xff09; 2、如果测量值低于阀值&#xff0c;启动继电器&#xff1b;高于阀值&…

STM32之HAL开发——RCC外设CubeMX配置时钟

RCC外设介绍 RCC是Reset and Clock Control (复位和时钟控制)的缩写&#xff0c;它是STM32内部的一个重要外设&#xff0c;负责管理各种时钟源和时钟分频&#xff0c;以及为各个外设提供时钟使能。RCC模块可以通过寄存器操作或者库函数来配置。 RCC是复位和时钟控制模块&#…

Motorbike Physics Tool

此软件包适用于任何想要使用他们拥有的摩托车和玩家模型,并快速将其变成可驾驶摩托车而无需编写一行代码的人。 包说明 在这个工具中,它允许您使用您拥有的任何自行车模型,并将其变成可驾驶的摩托车,而无需编写任何代码。对于那些想在游戏中拥有自行车但又不想学习如何制作…

Go第三方框架--gin框架(二)

4. gin框架源码–Engine引擎和压缩前缀树的建立 讲了这么多 到标题4才开始介绍源码&#xff0c;主要原因还是想先在头脑中构建起 一个大体的框架 然后再填肉 这样不容易得脑血栓。标题四主要涉及标题2.3的步骤一 也就是 标题2.3中的 粗线框中的内容 4.1 Engine 引擎的建立 见…

43 带 fixed 列的 el-table 不兼容于 sortablejs

前言 这是一个基于 sortablejs 来实现的 el-table 的拖拽功能的基础实现 然后 这个过程中遇到的一个比较特殊的问题是, 关于 el-table-column 的 fixed 的属性, 对于 sortablejs 这边来定位目标选择列 影响的一个问题 在基础的用例中, 使用 “.el-table__body-wrapper tbo…

力扣--931.下降路径最小和

给你一个 n x n 的 方形 整数数组 matrix &#xff0c;请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始&#xff0c;并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列&#xff08;即位于正下方或者沿对角…

2024/3/26 C++作业

定义一个矩形类&#xff08;Rectangle&#xff09;&#xff0c;包含私有成员&#xff1a;长(length)、宽&#xff08;width&#xff09;, 定义成员函数&#xff1a; 设置长度&#xff1a;void set_l(int l) 设置宽度&#xff1a;void set_w(int w) 获取长度&#xff1a;int…

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记11:数字电位器MCP4017

系列文章目录 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记01&#xff1a;赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记02&#xff1a;开发环境安装 嵌入式|蓝桥杯STM32G431&#xff08;…

【Linux】详细分析/dev/loop的基本知识 | 空间满了的解决方法

目录 前言1. 基本知识2. 内存满了2.1 清空2.2 扩增 3. 彩蛋 前言 服务器一直down机&#xff0c;翻找日志文件一直找不到缘由&#xff0c;最终发现是挂载的内存满了&#xff0c;那本身这个文件就什么用呢&#xff1f; 1. 基本知识 /dev/loop是一种特殊的设备文件&#xff0c;…

I2C系列(三):软件模拟I2C读写24C02

一.目标 PC 端的串口调试软件通过 RS-485 与单片机通信&#xff0c;控制单片机利用软件模拟 I2C 总线对 EEPROM&#xff08;24C02&#xff09; 进行任意读写。 二.硬件简述 2.1 24C02硬件参数 24C02器件地址为0x50&#xff0c;存储容量为256字节&#xff0c;存储单元地址位数…

【SpringBoot】java.lang.Exception: No tests found matching Method

目录 问题解决 问题 在运行SpringBootMaven工程时&#xff0c;创建了一个新的Test单元测试&#xff0c;在运行时遇到的问题如下&#xff1a; java.lang.Exception: No tests found matching Method test_chatGPT(cn.bugstack.chatbot.api.test.ApiTest) from org.junit.inter…