IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java基础之学生信息管理系统 -> 正文阅读

[Java知识库]java基础之学生信息管理系统

需求分析:

?这个基础版的管理系统具有一般系统的增删改查功能。创建学生类,根据学生类创建一个集合,设置对应增删改查以及退出系统的方法。

学生类:

public class Student {
    /*
    利用Student类创建学生对象
    成员变量:学号  姓名  性别  年龄  住址
     */
    private String id;
    private String name;
    private int sex;
    private int age;
    private String address;

    public Student() {
    }

    public Student(String id, String name, int sex, int age, String address) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.address = address;
    }

    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 int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        if(sex == 1 || sex == 0) {
            this.sex = sex;
        }else{
            System.out.println("输入错误,请重新输入!");
            setSex(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;
    }
}

思路:学生类中包含学生的学号、姓名、性别、年龄、住址信息,在此设置为私有变量,并为外部提供set()和get()方法。

实现类:

package com.bow.learn.学生管理系统;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentSystem {
    static Scanner sc = new Scanner(System.in);

    /*
    打印功能菜单
     */
    public static void showMenu() {
        System.out.println("*********************");
        System.out.println("*   1、添加学生信息    *");
        System.out.println("*   2、查找学生信息    *");
        System.out.println("*   3、修改学生信息    *");
        System.out.println("*   4、删除学生信息    *");
        System.out.println("*   0、退出管理系统    *");
        System.out.println("*********************");
    }

    /*
    添加学生信息
     */
    public static void addStudent(ArrayList<Student> stu) {
        //对Student类实例化,创建一个对象
        Student s = new Student();

        //从键盘获取学生的学号
        System.out.println("请输入学生学号:(001-999)");
        String id = sc.next();
        for (int i = 0; i < stu.size(); i++) {
            if (id.equals(stu.get(i).getId())) {
                System.out.println("该学号已存在!");
                return;
            }
        }
        s.setId(id);
        //从键盘获取学生的姓名
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        s.setName(name);
        //从键盘获取学生的性别
        while (true) {
            System.out.println("请输入学生性别(0 -- 男、 1 -- 女)");
            int sex = sc.nextInt();
            if (sex == 0 || sex == 1) {
                s.setSex(sex);
                break;
            } else {
                System.out.println("输入错误,请重新输入!");
            }
        }
        //从键盘获取学生的年龄
        while (true) {
            System.out.println("请输入学生年龄:");
            int age = sc.nextInt();
            if (age > 0 && age <= 150) {
                s.setAge(age);
                break;
            } else {
                System.out.println("输入错误,请重新输入!");
            }
        }
        //从键盘获取学生的地址
        System.out.println("请输入学生住址:");
        String address = sc.next();
        s.setAddress(address);

        //将学生信息添加到集合中
        stu.add(s);
        //PS:因为集合是引用类型对象,所以在方法中修改了集合,在外部的集合同时也被修改了,所以就不需要返回修改后的集合
        //提示添加成功
        System.out.println("添加成功!");
    }

    /*
    查找学生信息
     */
    public static void seekStudent(ArrayList<Student> stu) {
        if (stu.size() == 0) {
            System.out.println("学生管理系统中还未录入学生信息!");
            return;
        }
        System.out.println("请输入您要查找的学生的学号(001-999):");
        String id = sc.next();
        for (int i = 0; i < stu.size(); i++) {
            if (stu.get(i).getId().equals(id)) {
                System.out.println("查询成功!");
                System.out.println("id:" + stu.get(i).getId() + " name:" + stu.get(i).getName() +
                        " sex:" + (stu.get(i).getSex() == 0 ? "男" : "女") + " age:" + stu.get(i).getAge()
                        + " address:" + stu.get(i).getAddress());
                return;
            }
        }
        System.out.println("未查到相关学生信息!");
    }

    /*
    修改学生信息
     */
    public static void changeStudent(ArrayList<Student> stu) {
        if (stu.size() == 0) {
            System.out.println("学生管理系统中还未录入学生信息!");
            return;
        }
        System.out.println("请输入您要修改的学生的学号:");
        String id = sc.next();
        for (int i = 0; i < stu.size(); i++) {
            if (stu.get(i).getId().equals(id)) {
                System.out.println("查询成功,请重新录入该同学的信息!");
//                addStudent(stu);
                System.out.println("请输入学生学号(001-999):");
                String idCard = sc.next();
                for (int j = 0; j < stu.size(); j++) {
                    if(idCard.equals(stu.get(j).getId())){
                        System.out.println("该学号已存在!");
                        return;
                    }
                }
                stu.get(i).setId(idCard);
                System.out.println("请输入学生姓名:");
                stu.get(i).setName(sc.next());
                System.out.println("请输入学生性别 (0 -- 男、 1 -- 女)");
                stu.get(i).setSex(sc.nextInt());
                System.out.println("请输入学生年龄:");
                stu.get(i).setAge(sc.nextInt());
                System.out.println("请输入学生住址:");
                stu.get(i).setAddress(sc.next());
                System.out.println("修改成功!");
                return;
            }
        }
        System.out.println("未查到相关学生信息!");
    }

    /*
    删除学生信息
     */
    public static void delStudent(ArrayList<Student> stu) {
        if (stu.size() == 0) {
            System.out.println("学生管理系统中还未录入学生信息!");
            return;
        }
        System.out.println("请输入您要删除的学生的学号:");
        String id = sc.next();
        for (int i = 0; i < stu.size(); i++) {
            if (stu.get(i).getId().equals(id)) {
                stu.remove(i);
                System.out.println("删除成功!");
                return;
            }
        }
        System.out.println("未查到相关学生信息!");
    }

    public static void main(String[] args) {
        //创建一个ArrayList的集合
        ArrayList<Student> stu = new ArrayList<>();
        while (true) {
            showMenu();
            System.out.println("请输入您选择的操作: ");
            int select = sc.nextInt();
            switch (select) {
                case 1://添加
                    addStudent(stu);
                    break;
                case 2://查找
                    seekStudent(stu);
                    break;
                case 3://修改
                    changeStudent(stu);
                    break;
                case 4://删除
                    delStudent(stu);
                    break;
                case 0://退出
                    System.out.println("欢迎下次使用!");
                    System.exit(0);
                    break;

            }
        }
    }
}

思路:

? ? ? ? 设置一个可以打印菜单的方法,在菜单里显示学生管理系统的功能,以及提示用户操作的信息。

? ? ? ? 添加方法:创建一个学生类的对象,提示用户从键盘输入学生的信息,然后将学生类的对象添加到已经准备好的集合中。这里值得注意的是:因为对于查找、修改、删除都是根据学生的学号来查找学生信息,所以在添加方法里,我在提示用户输入学生的学号之后,进行了一个判断,判断新添加的学号是否存在,如果已经存在了,就提示用户“该学号已存在”,并结束这个方法的调用。反之则继续录入信息,在输入性别和年龄的时候我都有做判断,通过0、1的方式控制性别的输入只能是男生或女生,年龄设置在常规的范围内。

? ? ? ? 查找方法:先判断集合中是否有数据,如果集合的长度为0,直接提示用户“学生管理系统中还未录入学生信息”,并结束方法调用。如果有数据,并查到了要找的学号,则输出该学号对应的信息,没找到也会给用户一个提示。

? ? ? ? 修改和删除方法:在修改和删除之前,会先判断集合中是否存在数据,没有数据则不会继续执行操作,给出提示信息并结束方法调用。有数据的情况下,查找到学生信息才能修改,而且修改后的学生的学号不能是已经存在的。删除的操作也是要先查找是否有指定学号的学生的信息,如果存在会提示删除成功,不存在则提示”未找到该学号的相关信息“。

? ? ? ? 退出系统:使用System类的exit()方法即可退出系统,此处传入参数0.

PS:因为java控制台清屏,就要调用windows的命令(我自己用的是Windows的电脑),所以很繁琐,我就没有写,这里我推荐一个关于java清屏操作写的比较好的博客。

传送门

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 08:57:09  更:2021-08-29 08:57:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:22:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码