项目设计——学生管理系统

/* 要求:
 * 设计学生管理系统,实现添加、删除、修改、查询学生信息的功能
 * 大体思路:
 * 添加——>查询——>修改、删除
 */
import java.util.Scanner;//引包,Scanner类不在java.lang包中,需引包

public class Main {
    static int index = 0;//index用于排序,安置对象
    static Student [] students = new Student[45];//数组中可包含45个学生
    public static void main(String[] args) {
        System.out.println("***********************************");//系统头部
        System.out.println("*       欢迎使用学生管理系统             *");
        System.out.println("***********************************");
        System.out.println("1、添加学生信息");//操作项
        System.out.println("2、删除学生信息");
        System.out.println("3、修改学生信息");
        System.out.println("4、查询学生信息");
        for(;;) {//用死循环执行方法,才能保证存储对象,若单单执行一次,执行结束后直接释放内存,无法存储
            menu();
        }
    }
    private static void menu() { //static修饰,因为要在main方法里使用,main方法为静态
        System.out.println("输入操作项,按下Enter键");
        Scanner scanner = new Scanner(System.in);//创建Scanner对象,以使用其中方法实现输入操作
        int option = scanner.nextInt();//输入
        switch(option) {//输入不同操作项,完成不同的功能
            case 1:{
                if(index > students.length-1) {//若人数已满便无法继续添加
                    System.out.println("人员已满!");
                    return;
                }
                System.out.println("添加学生信息");
                Student student = new Student();
                System.out.println("请输入姓名后,按下Enter键");
                String name = scanner.next();
                student.setName(name);
                System.out.println("请输入学号后,按下Enter键");
                String id = scanner.next();
                student.setId(id);
                for(Student stu : students) {//判断所输入的学号是否有重复
                    if(stu==null) {
                        break;
                    }
                    if(stu.getId().equals(student.getId())) {
                        System.out.println("学号重复!");
                        return;
                    }
                }
                System.out.println("请输入手机号后,按下Enter键");
                String mobile = scanner.next();
                student.setMobile(mobile);
                System.out.println("请输入地址后,按下Enter键");
                String address = scanner.next();
                student.setAddress(address);
                students[index] = student;//存储信息
                index = index+1;//改变下次存储位置
                System.out.println("添加成功");
                System.out.println(index);
                break;
            }
            case 2: {
                System.out.println("删除学生信息");
                for(int i = 0;;i++) {
                    System.out.println("请输入学号:");
                    String yourid = scanner.next();
                    int j = 0;//j用于删除时的排序
                    for(;j<students.length;j++) {//此处查询与case4不同,是为了更方便地操作对象,使逻辑更清晰
                        if(students[j]==null) {
                            break;
                        }
                        if(students[j].getId().equals(yourid)) {
                            System.out.println("找到该学生:");
                            System.out.println(students[j]);
                            System.out.println("要删除该学生全部信息吗?");
                            System.out.println("1.是"+" 2.不是");
                            System.out.println("输入操作项:");
                            option = scanner.nextInt();
                            switch(option) {
                            case 1:{//确认删除
                                for(;j<students.length;j++) {
                                    if(j==students.length-1) {//如果到最后一个位置,直接删除,结束循环
                                        students[j]=null;
                                        break;
                                    }
                                    //这里的排序比较巧妙,若后一位是空对象,则本对象直接删除,循环结束;若不是空对象,将后面每一个
                                    //对象向前移一位,直到遇见空对象或到达最后一位
                                    students[j]= students[j+1];
                                    if(students[j+1]==null) {
                                        break;

 
                                    }
                                }
                                index--;//使下次添加学生时补到最前面的空位
                                System.out.println("删除成功!");
                                return;
                            }
                            case 2:{
                                return;
                            }
                            default:
                                System.out.println("系统未找到"+option+"操作项");
                                return;
                            }
                        }
                        
                    }
                    System.out.println("未找到该学号,请重新输入");
                    if(i>=1) {
                        System.out.println("如需返回请按0");
                        option = scanner.nextInt();
                        if(option == 0) {
                            return;
                        }
                    }
                }
            }
            case 3: {
                System.out.println("修改学生信息");
                for(int i = 0;;i++ ) {
                    System.out.println("请输入学号:");
                    String yourid = scanner.next();
                    for(Student student : students) {
                        if(student==null) {
                            break;
                        }
                        if(student.getId().equals(yourid)) {//在查询的基础上添加修改的部分
                            System.out.println("找到该学生:");
                            System.out.println(student);
                            System.out.println("进行修改");
                            System.out.println("请输入姓名后,按下Enter键");
                            String name = scanner.next();
                            student.setName(name);
                            System.out.println("请输入手机号后,按下Enter键");
                            String mobile = scanner.next();
                            student.setMobile(mobile);
                            System.out.println("请输入地址后,按下Enter键");
                            String address = scanner.next();
                            student.setAddress(address);
                            System.out.println("修改成功!");
                            return;
                        }
                    }
                    System.out.println("未找到该学号,请重新输入");
                    if(i>=1) {
                        System.out.println("如需返回请按0");
                        option = scanner.nextInt();
                        if(option == 0) {
                            return;
                        }
                    }
                }
            }
            case 4:{
                System.out.println("查询学生信息");
                for(int i = 0;;i++) {//此循环用于输入错误时的重新输入,i用于记录输错次数
                    System.out.println("请输入学号:");
                    String yourid = scanner.next();
                    for(Student student : students) {//逐个查找寻找学号匹配的学生
                        if(student==null) {//寻找到空对象,说明已查找所有添加的对象,脱离循环,对未找到的情况进行处理
                            break;
                        }
                        if(student.getId().equals(yourid)) {//寻找到对应的对象,输出对象所有信息
                            System.out.println("找到该学生:");
                            System.out.println(student);//输出Student类里的toString方法,对该方法重写,达到输出所有信息的目的
                            return;
                        }
                        
                    }
                    System.out.println("未找到该学号,请重新输入");//当搜索了所有对象或找到空对象,即未找到,脱离循环
                    if(i>=1) {//输错达到两次,提示返回操作
                        System.out.println("如需返回请按0");
                        option = scanner.nextInt();
                        if(option == 0) {
                            return;
                        }
                    }
                }
            }
            default:System.out.println("系统未找到"+option+"操作项");//处理开始输入操作项错误的情况
        }
    }
}

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值