利用面向对象思想,实现类对类的管理(这里对学生类进行管理)

//创建学生类

public class Student {
    // 学生的类
    public String id;// 学号
    public String name;// 姓名
    public int age;// 年龄
    public String gender;// 性别
    // 显示学生的信息

    public void showInfo() {
        String st = "Stundent [学号=" + id + ",姓名=" + name + ",年龄=" + age + ",性别=" + gender + "]";
        System.out.println(st);
    }

}

//创建管理员类

import java.util.Arrays;
import java.util.Scanner;

public class StudentManger {
    public static Scanner sc = new Scanner(System.in);
    public Student[] st = new Student[0];// 管理所有的学员
    /**
     * 1.建立学生类,利用Math的方法,对学生类的属性进行赋值。 2.建立管理员类,对学生类属性进行基本的增删查改。
     */
    char[] ch = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', // 36个
            'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', //
            'p', 'q', 'r', 's', 't', 'u', 'v', 'w', //
            'x', 'y', 'z', '0', //
            'A', 'B', 'C', 'D', 'E', 'F', 'G', // 36个
            'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', //
            'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', //
            'X', 'Y', 'Z', '0', //
            '1', '2', '3', '4', '5', '6', '7', '8', '9' };

    // 获得随机name:随机的6位字母开头
    public String getName() {
        String name = "";
        name += ch[(int) (Math.random() * 26)];// 字母
        for (int i = 0; i < 5; i++) {
            name += ch[(int) (Math.random() * 36)];// 26-35
        }
        return name;
    }

    // 随机获得学号:6位
    public String getId() {
        String id = "tx";
        for (int i = 0; i < 4; i++) {
            id += ch[(int) (Math.random() * (35 - 26 + 1)) + 26];// [26-35]
        }
        return id;
    }

    // 随机获得年龄:[18,25]
    public int getAge() {
        return (int) (Math.random() * (25 - 18 + 1)) + 18;
    }

    // 随机获得性别
    public String getGender() {
        int r = (int) (Math.random() * 10) % 2;
        if (r == 1) {
            return "男";
        }
        return "女";
    }

    // 5、初始化数组的方法:默认的添加17位学生
    public void initSt() {
        for (int i = 0; i < 17; i++) {
            st = Arrays.copyOf(st, st.length + 1);
            Student student = new Student();
            student.age = getAge();
            student.name = getName();
            student.gender = getGender();
            student.id = getId();
            st[st.length - 1] = student;
        }
    }

    // 1.添加功能
    public void addStudent(Student student) {
        st = Arrays.copyOf(st, st.length + 1);
        st[st.length - 1] = student;
        System.out.println("添加成功!");
    }

    // 2.查找功能
    public void showSt() {
        for (int i = 0; i < st.length; i++) {
            System.out.print((i + 1) + "、");
            st[i].showInfo();
        }
    }

    // 3.修改功能
    public void updateStudent(Student student) {
        for (int i = 0; i < st.length; i++) {
            if (st[i] != null && st[i].id != null && st[i].id.equals(student.id)) {
                st[i] = student;
                System.out.println("修改成功!");
                break;
            }
        }
    }

    // 4.删除功能
    public void deteleStudent(Student student) {
        int index = -1;
        boolean isFind = false;
        for (int i = 0; i < st.length; i++) {
            if (st[i] != null && st[i].id != null && st[i].id.equals(student.id)) {
                isFind = true;
                index = i;
                break;
            }
        }
        // 执行删除位移操作
        if (isFind) {
            for (int i = index; i < st.length - 1; i++) {
                st[i] = st[i + 1];
            }
            st = Arrays.copyOf(st, st.length - 1);
            System.out.println("删除成功!");
        } else {
            System.out.println("没有此学员!");
        }
    }

    // 服务的方法
    public void service() {
        initSt();// 先初始化
        do {
            System.out.println("-------------学生宿管系统------------");
            System.out.println("\t1、增加学员");
            System.out.println("\t2、查看学员");
            System.out.println("\t3、修改学员");
            System.out.println("\t4、删除学员");
            System.out.println("\t5、退出系统");
            System.out.println("----------------------------------");
            int num = inputIntNum(1, 5, "请选择编号:");
            switch (num) {
            case 1: {
                // 增加学员
                Student student = new Student();
                System.out.print("输入学号:");
                student.id = sc.next();
                System.out.print("输入年龄:");
                student.age = sc.nextInt();
                System.out.print("输入姓名:");
                student.name = sc.next();
                System.out.print("输入性别:");
                student.gender = sc.next();
                addStudent(student);
                break;
            }
            case 2: {
                showSt();
                break;
            }
            case 3: {
                // 修改学员
                Student student = new Student();
                System.out.print("输入要修改的学号:");
                student.id = sc.next();
                System.out.print("输入修改后的年龄:");
                student.age = sc.nextInt();
                System.out.print("输入修改后的姓名:");
                student.name = sc.next();
                System.out.print("输入修改后的性别:");
                student.gender = sc.next();
                updateStudent(student);
                break;
            }
            case 4: {
                Student student = new Student();
                System.out.print("输入要删除的学号:");
                student.id = sc.next();
                deteleStudent(student);
                break;
            }
            case 5: {
                System.out.println("退出系统!");
                return;
            }
            }
            System.out.print("是否继续(y/n):");
            if (!sc.next().equals("y")) {
                break;
            }
        } while (true);
    }

    /**
     * 控制数整数和范围的方法 start:整数的起始位置 end:整数的结束位置 msg:你要干什么
     */
    public int inputIntNum(int start, int end, String msg) {
        int index = -1;
        do {
            System.out.print(msg);
            while (!sc.hasNextInt()) {
                System.out.print("输入整数:");
                String sd = sc.next();
            }
            index = sc.nextInt();
            if (index <= end && index >= start) {
                break;
            } else {
                System.out.println("选项必须在" + start + "-" + end + "之间!");
            }
        } while (true);
        return index;
    }
}

//测试类

public class Test {
    public static void main(String[] args) {
        StudentManger a = new StudentManger();
        a.service();
    }
}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值