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

news2024/11/27 14:51:23

(该项目通过视频讲解过程中完成,其中将一些操作进行了修改和完善,其目的是为了巩固前面学习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){
        //从学生中查找是否有相同的id
        for(int i=0;i<list.size();i++){
            Student s= list.get(i);
            String sid=s.getId();
            if(sid.equals(id)){
                //如果有返回该学生的序号
                return i;
            }
        }
        //如果没有返回-1
        return -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.coloradmin.cn/o/1556695.html

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

相关文章

Qt源码调试步骤记录

1.源码&#xff1a; 两种方式&#xff0c;要么安装qt时选择source&#xff0c;要么从官网下载源码&#xff0c;然后在qt creator中设置路径。二选一即可。我选的第二种。 1.1.第一种&#xff0c;安装时选择source&#xff1a; 1.2.第二种&#xff0c;下载源码设置路径&#x…

Linux中安装JDK17.X

1、总体概述&#xff1f; 该操作方式适合centos或red hat环境 2.1、在线下载JDK安装包&#xff1f; 通过wget命令下载JDK17.X包 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 如果提示&#xff1a;没有wget命令就安装wget yum install w…

Qt 富文本处理 (字体颜色大小加粗等)

Qt中支持HTML的控件有textEdit 、label 、textBrowser 。 接口&#xff1a;setHtml("Qt"); toHtml(). 文本样式设置 : 可分字设置 &#xff0c;主要使用QTextCharFormat类进行文本样式设置。 示例&#xff1a; QTextCharFormat fmt; //粗体 fmt.setFontWeight…

wps没保存关闭了恢复数据教程

有时候我们因为电脑问题会忘记保存就关闭wps导致数据丢失&#xff0c;不知道wps没保存关闭了怎么恢复数据&#xff0c;其实数据是无法恢复的。 wps没保存关闭了怎么恢复数据 1、wps没有数据恢复功能&#xff0c;不过可以开启自动备份。 2、我们可以先点击wps左上角的“文件”…

Vtk裁剪功能之平面裁剪vtkClipClosedSurface(vtk小记)

1.原理分析 对你的三维图形&#xff0c;使用一个平面切下去&#xff0c;然后保留一半。 确定一个平面&#xff1a;使用法向量和一个三维坐标点可以确定一个平面 原始图像 切一刀 切两刀&#xff0c;又一半 切三刀&#xff0c;又一半 源代码 #include <vtkActor.h> #i…

Linux 学习之路 -- 工具篇 -- gcc / g++

在 Linux 系统中&#xff0c;gcc 和 g 是两个常用的编译工具&#xff0c;分别用于编译 C 和 C 代码。下面我将介绍gcc、g的一些基本用法 目录 一、简单的认识 二、简单了解一下编译的过程 <1> 预处理阶段 <2>编译 <3>汇编 <4>链接…

SQLite数据库成为内存中数据库(三)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite使用的临时文件&#xff08;二&#xff09; 下一篇&#xff1a;SQLite中的原子提交&#xff08;四) ​​ SQLite数据库通常存储在单个普通磁盘中文件。但是&#xff0c;在某些情况下&#xff0c;数据库可能…

python爬虫基础------函数

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

打工人神器! Raccoon 代码小浣熊

继这三个之后&#xff0c;今天又来了一个 [ Raccoon代码小浣熊 ] 核心精要与产品特点 全面支持多种编程语言和IDE&#xff1a;「代码小浣熊」支持超过90种主流编程语言&#xff0c;包括但不限于Python、Java、JavaScript、C、Go和SQL等。同时&#xff0c;它集成了市面上主流的…

电脑换屏总结——关于我把电脑砸了这件事!

大家好&#xff0c;我是工程师看海&#xff0c;很高兴和各位一起分享我的原创文章&#xff0c;喜欢和支持我的工程师&#xff0c;一定记得给我点赞、收藏、分享哟。 加微信[chunhou0820]与作者进群沟通交流。 【淘宝】https://m.tb.cn/h.5PAjLi7?tkvmMLW43KO7q CZ3457 「运放秘…

【ENSP】交换机和交换机之间实现静态路由

1.概念 三层交换机只能在Vlanif逻辑口配置iP地址 2.实现方法 交换机允许对应vlan通行&#xff0c;配置vlanif的ip地址&#xff0c;做静态路由 3.静态路由配置方法 ip route-static 目的网段 子网掩码 下一跳设备 LSW1三层交换机配置 u t m sys vlan batch 10 20 …

一文彻底搞懂并发容器

文章目录 1. 什么是并发容器2. 并发容器的分类 1. 什么是并发容器 并发容器是一种用于多线程环境的数据结构&#xff0c;它们能够有效地处理并发访问和修改的问题。在多线程应用程序中&#xff0c;多个线程可能会同时访问和修改共享的数据结构&#xff0c;这可能会导致数据不一…

npm卸载不掉的解决方案

不管怎么重装重启都报错 真服了&#xff0c;npm卸载不掉绝对是有缓存存在&#xff0c;用where npm查到d盘 实际上根本不在这个地方&#xff0c;这个是我安装的6.14.12版本的npm的地方&#xff0c;我说我怎么怎么重装怎么导包都不行呢&#xff0c;偷偷隐藏在这个目录里面&#…

vue3路由代码示例

路由简单分三步吧 第一定义路由&#xff1a; 包括访问地址&#xff0c;对应组件 第二使用&#xff1a;在index.html中使用它 下面是代码示例&#xff1a; components/Person.vue <template><router-link to"/test/hello">跳转</router-link>&…

简易TCP服务器通信、IO多路复用(select、poll、epoll)以及reactor模式。

网络编程学习 简单TCP服务器通信TCP三次握手和四次挥手三次握手&#xff08;如下图&#xff09;常见问题&#xff1f; 四次挥手 client和server通信写法server端client端 通信双方建立连接到断开连接的状态转换怎么应对多用户连接&#xff1f;缺点 IO多路复用select优缺点 poll…

Linux---命令行参数

一、命令行参数 在介绍命令行参数前&#xff0c;我想问大家一个问题&#xff0c;在以前写C/C时&#xff0c;main 函数可不可以带参数&#xff1f; 答案是可以带的&#xff0c;int main(int argc, char* argv[]){}&#xff0c;但平时写代码时也证明了&#xff0c;main 函数的参…

Gradle连接超时问题connect time out

出现这样的问题不要慌张&#xff0c;可能是你配置gradle的问题一步一步来解决就完事了 1. 出现这样的问题首先我们先检查配置 首先我们先看到的标出来的地址可以看到&#xff0c;我们需要下载的是这个链接里面的压缩包数据&#xff0c;查看版本以及这个链接是不是错误的 2. 第…

[OpenCV学习笔记]Qt+OpenCV实现图像灰度反转、对数变换和伽马变换

目录 1、介绍1.1 灰度反转1.2 图像对数变换1.3 图像伽马变换 2、效果图3、代码实现4、源码展示 1、介绍 1.1 灰度反转 灰度反转是一种线性变换&#xff0c;是将某个范围的灰度值映射到另一个范围内&#xff0c;一般是通过灰度的对调&#xff0c;突出想要查看的灰度区间。 S …

大创项目推荐 深度学习 opencv python 实现中国交通标志识别_1

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

Windows下载使用nc(netcat)命令

‘nc’ 不是内部或外部命令&#xff0c;也不是可运行的程序&#xff1f; 点击链接地址&#xff0c;下载压缩包。 完成后解压 使用方式&#xff08;三种&#xff09;&#xff1a; 1、直接双击exe使用 2、把这个exe放到cmd启动的默认路径下 放到默认路径下&#xff0c;使用nc&a…