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.rhkb.cn/news/287285.html

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

相关文章

总结 | vue3项目初始化(附相应链接)

如何运行 vue 项目&#xff1a;vscode运行vue项目_vscode启动vue项目命令-CSDN博客 vue3项目搭建 目录管理 git管理&#xff1a;vue3项目搭建并git管理_git 新建vue3项目-CSDN博客 目录调整&#xff1a;vue3项目 - 目录调整-CSDN博客 vscode中快速生成vue3模板&#xff1a…

14. Springboot集成RabbitMQ

目录 1、前言 2、什么是RabbitMQ 3、安装RabbitMQ 4、Springboot集成RabbitMQ 4.1、添加依赖 4.2、添加配置 4.3、添加controller&#xff0c;作为生产者 4.4、设置生产者消息确认CallBack 4.5、添加Consumer&#xff0c;作为消费者 4.6、启动程序&#xff0c;访问 1…

【C++】类和对象(四千字解析超完整附实例!!!不看会后悔!!!)

新学期开始了&#xff0c;c课程逐渐深入&#xff0c;今天来了解一下c的类和对象中的封装与数据的初始化和清理&#xff01; PS.本博客参考b站up黑马程序员的相关课程&#xff0c;老师讲得非常非常好&#xff01; 封装 封装是C面向对象三大特性之一 1.封装的意义一&#xff1…

国家中英文名称、国家代码(地区代码)、国家域名、经纬度

因为要做世界地图对世界国家的标点&#xff0c;搜索使用到了世界各个国家的地理位置信息&#xff0c;此处做备份与学习。资源地址&#xff08;免费&#xff09; export default {"阿尔巴尼亚": {"m_longitude": "19.809","m_latitude&quo…

聚类分析|基于层次的聚类方法及其Python实现

聚类分析|基于层次的聚类方法及其Python实现 0. 基于层次的聚类方法1. 簇间距离度量方法1.1 最小距离1.2 最大距离1.3 平均距离1.4 中心法1.5 离差平方和 2. 基于层次的聚类算法2.1 凝聚&#xff08;Agglomerative&#xff09;2.3 分裂&#xff08;Divisive&#xff09; 3. 基于…

JavaScript 学习日记(1)---初识JavaScript

初识JavaScript 文章目录 初识JavaScript一、JavaScript 是什么?二、java 和JavaScript 的关系三、JavaScript 的组成四、JS的基本输入输出 ---> 单行注释五、js变量基本概念六、js基本数据类型七、js转义字符八、js类型转换九、运算符 END! 一、JavaScript 是什么? 我们…

沪漂8年回郑州三年如何走上创业之路

大家好&#xff0c;我是大牛&#xff0c;目前人在郑州。 现在标签是&#xff1a; 创业者&#x1f697;&#x1f438; (注册有自己的公司&#xff0c;主要是为了自己的产品和接外包项目)独立开发者&#x1f468;&#x1f3fb;&#x1f4bb; (有自己的小项目)数字游民&…

干货分享之反射笔记

入门级笔记-反射 一、利用反射破泛型集合二、Student类三、获取构造器的演示和使用1.getConstructors只能获取当前运行时类的被public修饰的构造器2.getDeclaredConstructors:获取运行时类的全部修饰符的构造器3.获取指定的构造器3.1得到空构造器3.2得到两个参数的有参构造器&a…

Quartus II仿真出现错误

ModelSim executable not found in D:/intelFPGA/18.0/quartus/bin64/modelsim_ase/win32aloem/ Error. 找不到modelsim地址&#xff0c;原来是我下载了.exe,但没有双击启动安装ase文件夹呀&#xff01;&#xff01;&#xff01;&#xff01;晕&#xff0c;服了我自己

常见测试技术都有哪些?

测试技术是用于评估系统或组件的方法&#xff0c;目的是发现它是否满足给定的要求。系统测试有助于识别缺口、错误&#xff0c;或与实际需求不同的任何类型的缺失需求。测试技术是测试团队根据给定的需求评估已开发软件所使用的最佳实践。这些技术可以确保产品或软件的整体质量…

前端面试拼图-数据结构与算法(二)

摘要&#xff1a;最近&#xff0c;看了下慕课2周刷完n道面试题&#xff0c;记录下... 1. 求一个二叉搜索树的第k小值 二叉树(Binary Tree) 是一棵树 每个节点最多两个子节点 树节点的数据结构{value, left?, right?} 二叉树的遍历 前序遍历&#xff1a;root→left→right 中…

视觉轮速滤波融合1讲:理论推导

视觉轮速滤波融合理论推导 文章目录 视觉轮速滤波融合理论推导1 坐标系2 轮速计2.1 运动学模型2.2 外参 3 状态和协方差矩阵3.1 状态3.2 协方差矩阵 4 Wheel Propagation4.1 连续运动学4.2 离散积分4.2.1 状态均值递推4.2.2 协方差递推 5 Visual update5.1 视觉残差与雅可比5.2…

【C语言】【Leetcode】70. 爬楼梯

文章目录 题目思路&#xff1a;简单递归 > 动态规划 题目 链接: link 思路&#xff1a;简单递归 > 动态规划 这题类似于斐波那契数列的算法&#xff0c;结果其实就是到达前一步和到达前两步的方法之和&#xff0c;一直递归到n1和n2时就行了&#xff0c;但是这种算法有个…

今天聊聊Docker

在数字化时代&#xff0c;软件应用的开发和部署变得越来越复杂。环境配置、依赖管理、版本控制等问题给开发者带来了不小的挑战。而Docker作为一种容器化技术&#xff0c;正以其独特的优势成为解决这些问题的利器。本文将介绍Docker的基本概念、优势以及应用场景&#xff0c;帮…

C++基础之继承续(十六)

一.基类与派生类之间的转换 可以把派生类赋值给基类可以把基类引用绑定派生类对象可以把基类指针指向派生类对象 #include <iostream>using std::cin; using std::cout; using std::endl;//基类与派生类相互转化 class Base { private:int _x; public:Base(int x0):_x(…

Amuse .NET application for stable diffusion

Amuse github地址&#xff1a;https://github.com/tianleiwu/Amuse .NET application for stable diffusion, Leveraging OnnxStack, Amuse seamlessly integrates many StableDiffusion capabilities all within the .NET eco-system Welcome to Amuse! Amuse is a profes…

CAPL - 如何实现弹窗提示和弹窗操作(续)

目录 函数介绍 openPanel closePanel 代码示例 1、简单的打开关闭panel面板

自动驾驶-如何进行多传感器的融合

自动驾驶-如何进行多传感器的融合 附赠自动驾驶学习资料和量产经验&#xff1a;链接 引言 自动驾驶中主要使用的感知传感器是摄像头和激光雷达&#xff0c;这两种模态的数据都可以进行目标检测和语义分割并用于自动驾驶中&#xff0c;但是如果只使用单一的传感器进行上述工作…

文献速递:文献速递:基于SAM的医学图像分割--SAM-Med3D

Title 题目 SAM-Med3D 01 文献速递介绍 医学图像分析已成为现代医疗保健不可或缺的基石&#xff0c;辅助诊断、治疗计划和进一步的医学研究]。在这一领域中最重要的挑战之一是精确分割体积医学图像。尽管众多方法在一系列目标上展现了值得称赞的有效性&#xff0c;但现有的…

C/C++ 语言中的 ​if...else if...else 语句

C/C 语言中的 ​if...else if...else 语句 1. if statement2. if...else statement3. if...else if...else statementReferences 1. if statement The syntax of the if statement is: if (condition) {// body of if statement }The code inside { } is the body of the if …