第一阶段模块三作业第四题

题目:使用 List 集合实现简易的学生信息管理系统,要求打印字符界面提示用户选择相应的功 能,根据用户输入的选择去实现增加、删除、修改、查找以及遍历所有学生信息的功能。其中学生的信息有:学号、姓名、年龄。 要求: 尽量将功能拆分为多个.java 文件。

思路:增删改查遍历分别对应5种方法,先创建一个学生类用来封装学生的学号,姓名和年龄,然后创建一个List用来保存学生信息,最后分别对这个List进行增删改查遍历的操作即可,具体代码如下。

package com.lagou.homework.part3.student;

/**
 * student类
 */
public class Student {
    private int number;
    private String name;
    private int age;

    public Student() {
    }

    public Student(int number, String name, int age) {
        this.number = number;
        this.name = name;
        this.age = age;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "number=" + number +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

package com.lagou.homework.part3.student;

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

/**
 * student功能实现类
 */
public class StudentImpl {
//    初始化界面
    public static int show(){
        System.out.println("简易学生信息管理系统");
        System.out.println("--------------------------------------------");
        System.out.println("1.新增学生  2.删除学生  3.修改学生信息");
        System.out.println("4.查找学生信息  5.查看所有学生信息  6.退出系统");
        System.out.println("--------------------------------------------");
        System.out.println("请选择相应功能:");
        Scanner sc = new Scanner(System.in);
        int choose = sc.nextInt();
        return choose;
    }

    /**
     * 简易新增学生功能,目前不对是否有重复学号做验证
     * @param lt 保存学生信息的list
     */
    public static void add(List<Student> lt){
        Scanner sc =  new Scanner(System.in);
        System.out.println("新增学生界面");
        int number;
        String name;
        int age;
//        用来控制是否继续新增学生
        String isContinue = "Y";
        while ("Y".equals(isContinue)  || "y".equals(isContinue) ){
            System.out.println("请输入新增学生的学号:");
            number = sc.nextInt();
            System.out.println("请输入新增学生的姓名:");
            name = sc.next();
            System.out.println("请输入新增学生的年龄:");
            age = sc.nextInt();
            lt.add(new Student(number, name, age));
            System.out.println("是否继续新增?Y/N");
            isContinue = sc.next();
            System.out.println("是否继续" + isContinue);
        }
        System.out.println("退出新增学生界面。。。");

    }

    /**
     * 按学号删除学生信息,如果学号有重复,则只删除找到的第一个符合学号的学生
     * @param lt 保存学生信息的list
     */
    public static void delStu(List<Student> lt){
        Scanner sc =  new Scanner(System.in);
        System.out.println("删除学生界面");
//        学生学号
        int number ;
//        list里下标位置
        int listIndex = 0;
//        用来识别是否已经删除了学生
        int isDel = 0;
//        用来控制是否继续删除学生
        String isContinue = "Y";
        while ("Y".equals(isContinue)  || "y".equals(isContinue) ){
            isDel = 0;
            listIndex = 0;
            System.out.println("请输入待删除学生的学号:");
            number = sc.nextInt();
//            循环获取list里所有学生信息
            for (Student s:lt){
//                如果找到该学生学号,则删除该学生
                if (number == s.getNumber()){
                    lt.remove(listIndex);
                    System.out.println("学号为" + number +"的学生已删除。。。");
                    isDel++;
                }
                listIndex++;
            }
//            说明输入的学号没有在list里找到
            if (0 == isDel){
                System.out.println("未找到该学号的学生,请重新输入!");
            }
            System.out.println("是否继续删除?Y/N");
            isContinue = sc.next();
        }
        System.out.println("退出删除学生界面。。。");
    }



    /**
     * 按学号修改学生信息,默认学号不能被修改,如果学号有重复则只会修改查找到的第一个学号
     * 目前一次只能修改学生的一个信息,如果需要修改多个信息,需重新输入该学生学号
     * @param lt 保存学生信息的list
     */
    public static void modifyStu(List<Student> lt){
        Scanner sc =  new Scanner(System.in);
        System.out.println("修改学生界面");
        int number;
        String name;
        int age;
//        用来控制是否找修改了学生
        int isModify = 0;
//        用来控制是否继续修改学生
        String isContinue = "Y";
        while ("Y".equals(isContinue)  || "y".equals(isContinue) ){
            isModify = 0;
            System.out.println("请输入待修改学生的学号:");
            number = sc.nextInt();
//      查找该学生信息
            for (Student s:lt){
//                如果找到该学生学号,则先显示
                if (number == s.getNumber()){
                    System.out.println("学号为" + number +"的学生信息为" );
                    System.out.println("学号:" +number + " 姓名:" + s.getName() + " 年龄:" + s.getAge());
                    System.out.println("请输入待修改的信息");
                    System.out.println("-----------------------------------");
                    System.out.println("1.姓名  2.年龄");
                    System.out.println("-----------------------------------");
//                   用来接收输入信息
                    number = sc.nextInt();
//                    判断是需要修改姓名还是要修改年龄
                    if (1 == number){
                        System.out.println("请输入学生新的姓名");
                        name = sc.next();
                        s.setName(name);
                    }else if(2 == number){
                        System.out.println("请输入学生新的年龄");
                        age = sc.nextInt();
                        s.setAge(age);
                    }else{
                        System.out.println("输入错误,请重新输出!");
                    }
//                    说明有学生信息被修改了
                    isModify++;
                }
            }
//            说明学生没有被修改过
            if (0 == isModify){
                System.out.println("未找到该学号的学生,请重新输入!");
            }
            System.out.println("是否继续修改?Y/N");
            isContinue = sc.next();
            System.out.println("是否继续" + isContinue);
        }
        System.out.println("退出修改学生界面。。。");

    }

    /**
     * 查找学生功能
     * @param lt 保存学生信息的list
     */
    public static void findStu(List<Student> lt){
        Scanner sc =  new Scanner(System.in);
        System.out.println("查找学生界面");
        int number;
        String name;
        int age;
//        用来控制是否找找到了学生
        int isFind = 0;
//        用来控制是否继续查找学生
        String isContinue = "Y";
        while ("Y".equals(isContinue)  || "y".equals(isContinue) ){
            isFind = 0;
            System.out.println("请输入按哪种条件查找学生:");
            System.out.println("---------------------------");
            System.out.println("1.学号  2.姓名  3.年龄");
            System.out.println("---------------------------");
            number = sc.nextInt();
//      查找该学生信息
            switch (number){
                case 1:
                    System.out.println("请输入待查找学生的学号");
                    number = sc.nextInt();
//                    循环从list里取出学生信息去做对比
                    for (Student s:lt){
                        if (number == s.getNumber()){
                            System.out.println("学号为" + number + "的学生姓名为:" +
                                    s.getName() + "年龄为:" + s.getAge());
                            isFind++;
                        }
                    }
                    break;
                case 2:
                    System.out.println("请输入待查找学生的姓名");
                    name = sc.next();
                    for (Student s:lt){
                        if (name.equals(s.getName()) ){
                            System.out.println("姓名为" + name + "的学生学号为:" +
                                    s.getNumber() + "年龄为:" + s.getAge());
                            isFind++;
                        }
                    }
                    break;
                case 3:
                    System.out.println("请输入待查找学生的年龄");
                    age = sc.nextInt();
                    for (Student s:lt){
                        if (age == s.getAge()){
                            System.out.println("年龄为" + age + "的学生学号为:" +
                                    s.getNumber() + "姓名为:" + s.getName());
                            isFind++;
                        }
                    }
                    break;
                default:
                    System.out.println("请输入正确序号!");
            }

//            没有找到学生信息
            if (0 == isFind){
                System.out.println("未找到学生信息,请重新输入!");
            }
            System.out.println("是否继续查找?Y/N");
            isContinue = sc.next();
            System.out.println("是否继续" + isContinue);
        }
        System.out.println("查找学生界面。。。");

    }

    /**
     * 遍历所有学生信息
     * @param lt 保存学生信息的list
     */
    public static void findAllStu(List<Student> lt){
        Scanner sc =  new Scanner(System.in);
        System.out.println("所有学生信息界面");
        int number;
        String name;
        int age;
        for (Student s:lt){
            System.out.println(s.getNumber() + "学生姓名为:" + s.getName()
            + "学生年龄为:" + s.getAge());
        }
        System.out.println("退出所有学生信息界面。。。");

    }
}

package com.lagou.homework.part3.student;


import java.util.LinkedList;
import java.util.List;

/**
 * student测试类
 */
public class StudentTest {
    public static void main(String[] args) {
        List<Student> lt = new LinkedList<>();
        Boolean isExit = false;
        while (!isExit){
            int choose = StudentImpl.show();
//            根据界面选择来调用增删改查遍历方法
            switch (choose){
                case 1:
                    StudentImpl.add(lt);
                    break;
                case 2:
                    StudentImpl.delStu(lt);
                    break;
                case 3:
                    StudentImpl.modifyStu(lt);
                    break;
                case 4:
                    StudentImpl.findStu(lt);
                    break;
                case 5:
                    StudentImpl.findAllStu(lt);
                    break;
                case 6:
                    System.out.println("退出登录。。。。。");
                    isExit = true;
                    break;
                default:
                    System.out.println("请输入正确的序号!");
            }
        }
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值