学生管理系统实现

package com.it.mStudentManager;

import com.it.domain.Student;

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

/*需求:学生管理系统, 功能需求:学生信息的增删改查
 * 实现步骤:一.首先根据用户输入的数字,判断用户要进行哪类操作
 *              1.首先完成主页面的设计
 *            2..多种情况,switch语句进行实现,由于不知道用户操作多少次,因此使用死循环,直到退出
 *
 *         二.完成添加学生信息的模块
 *          三.完成查询信息的模块
 *          四.完成删除信息的模块
 *           五.完成修改信息的模块
 *其中判断用户输入学号的学号是否在集合中对象所保存的学号是否相同是一个比较关键的点
 * 在这个时候,定义了一个getindex方法,用于判断,定义index初始值为-1,若返回值为-1,则该学号不存在
 * 如找到有学号与用户输入相同,则index记录下此时对象的索引位置.获取到对象的索引位置,就可以进行增删改查一系列操作
 * 尤其是增删改,在进行这些操作的时候,应首先判断该学号是否在对象内存在,如存在,根据index此
 * 时索引位置,对该对象进行增删改一些列操作极为简单.,如不存在,对用户给出提示.
 *
 * */
public class StudentManager {
    public static void main(String[] args) {
        //创建一个集合类型的对象,这是本系统所有功能的核心所在
        ArrayList<Student> list = new ArrayList<>();
        //当用户未完成自己的操作时,应始终处于循环中,除非用户输入5键退出
        //因此应设计一个死循环.
        Scanner sc = new Scanner(System.in);
        lo:
        while (true) {
            //1.首先完成主页面的设计
            System.out.println("----------欢迎来到学生管理系统----------");
            System.out.println("1\t添加学生");
            System.out.println("2\t删除学生");
            System.out.println("3\t修改学生");
            System.out.println("4\t查看学生");
            System.out.println("5\t退出");
            System.out.println("请输入您的选择:");

            // 多种情况,switch语句进行实现,由于不知道用户操作多少次,因此使用死循环,直到退出
            int choice = sc.nextInt();
            switch (choice) {
                case 1:
                    //System.out.println("添加学生");
                    addStudent(list);

                    break;
                case 2:
                    //System.out.println("删除学生");
                    deleteStudent(list);
                    break;
                case 3:
                    //System.out.println("修改学生");
                    setStudent(list);
                    break;
                case 4:
                    // System.out.println("查看学生");
                    queryStudent(list);

                    break;
                case 5:
                    break lo;

            }


        }
    }

    //定义一个修改学生信息的方法
    private static void setStudent(ArrayList<Student> list) {
        System.out.println("请输入您的学号");
        Scanner sc = new Scanner(System.in);
        String id = sc.next();
        for (int i = 0; i < list.size(); i++) {
            //遍历数组,获取每个对象.调用对象的getsid方法,获取学号的索引值
            Student stu = list.get(i);
            String sid1 = stu.getSid();
            if (id.equals(sid1)) {
                System.out.println("请输入新的姓名");
                String name = sc.next();
                System.out.println("请输入新的年龄");
                int age = sc.nextInt();
                System.out.println("请输入新的生日");
                String birthday = sc.next();

                Student stu1 =new Student(id,name,age,birthday);
                // 调用list的set方法
                 list.set(i,stu1);
               // 这里封装数据还有另一种实现方法
               /* stu.setName(name);//如用户输入的学号与集合内某对象的学号一致,则将用户输入的学生信息,
                //封装进该对象
                stu.setAge(age);
                stu.setBirthday(birthday);*/



            } else {
                System.out.println("系统查询未查询到该用户");
            }
        }
    }

    //定义一个删除学生信息的方法
    private static void deleteStudent(ArrayList<Student> list) {
        System.out.println("请输入您的学号");
        Scanner sc = new Scanner(System.in);
        String id = sc.next();
        //遍历集合,获取集合中每个对象,然后就可以调用getSid方法获取每个对象的学号,从而进行判断是学号是否存在
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            String sid1 = stu.getSid();
            //将用户输入的id学号与集合内每个对象保存的学号进行比较
            if (id.equals(sid1)) {
                list.remove(i);//如果用户输入id存在的话,调用remove方法,删除集合内该位置对象
                System.out.println("删除成功");
            } else {//如用户输入id与集合内所有对象中sid学号都不同,意味着该学号不存在.
                System.out.println("系统查询未查询到该用户");
            }
        }
    }

    //定义一个查看学生信息的方法
    private static void queryStudent(ArrayList<Student> list) {
        //查看之前应判断集合长度是否为空,如不为空,则进行输出,如为空,则直接输出系统内暂时无学生信息,请添加后查看
        if (list.size() == 0) {
            System.out.println("暂无学生信息,请添加后查看");
        }
        //遍历数组
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println("学号\t姓名\t年龄\t生日");
            System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getBirthday());

        }
    }

    //定义一个添加学生信息的方法
    private static void addStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学号");
        String id = sc.next();
        //查看信息之前应该判断该学号在集合内存在,因此先假设不存在,定义索引值为-1
        //因此,这里应该设计一个查询学号是否在集合内存在的方法,调用该方法,获取学号对象的索引
        //这里创建一个通过学号查找集合内是否存在学生信息的方法,如能找到该学号的索引值,则存在该学生信息,
// 如找不到索引,意味着不存在任何信息,如找到索引,在进行输出
        int index = getindex(list, id);
        if (index == -1) {
            System.out.println("请输入姓名");
            String name = sc.next();
            System.out.println("请输入年龄");
            int age = sc.nextInt();
            System.out.println("请输入生日");
            String birthday = sc.next();
            //封装对象
            Student stu = new Student(id, name, age, birthday);
            //将对象添加进集合
            list.add(stu);
            System.out.println("添加成功");
        } else {
            System.out.println("该学号已经被占用,请重新输入");
        }

    }
//定义一个根据用户输入的学号,获取对象索引的方法,用于判断该学号是否在集合内对象学生信息里存在,也用于
    private static int getindex(ArrayList<Student> list, String id) {
        //首先假设该id对应的对象在集合中不存在.index索引值为-1
        int index = -1;
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            String sid = stu.getSid();
            if (id.equals(sid)) {
                index = i;
            }
        }
        return index;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值