Java基础:学生管理系统

学生管理系统

学生管理系统升级版

package test;

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

public class StudentManagementSystem {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("欢迎来到学生管理系统");
        ArrayList<UserMember> userMembers = new ArrayList<UserMember>();
        Loop0 : while (true) {
            System.out.println("请选择操作1登录 2注册 3忘记密码");
            int select1 = sc.nextInt();
            switch (select1){
                case 1:
                    // 登录
                    logIn(userMembers);
                    break Loop0;
                case 2:
                    // 注册
                    // 用户名唯一
                    register(userMembers);
                    break;
                case 3:
                    // 忘记密码
                    forgetPassword(userMembers);
                    break;
            }
        }
        // 创建学生系统集合
        ArrayList<StudentMember> studentMembers = new ArrayList<StudentMember>();
        boolean flag = true;
        Loop : while (true) {
            System.out.println("\"-------------欢迎来到黑马学生管理系统----------------\"\n" +
                    "\"1:添加学生\"\n" +
                    "\"2:删除学生\"\n" +
                    "\"3:修改学生\"\n" +
                    "\"4:查询学生\"\n" +
                    "\"5:退出\"" );
            System.out.print("请输入您的选择:");
            int select = sc.nextInt();

            switch (select) {
                case 1 ->
                    // 添加学生, 要求id唯一
                        add(studentMembers);
                case 2 -> {
                    // 删除功能
                    // 需要集合和id,存在则删除,否则提示
                    System.out.print("请输入要删除的学生id:");
                    int deleteId = sc.nextInt();
                    delete(studentMembers, deleteId);
                }
                case 3 -> {
                    // 修改功能
                    // 需要要修改的学生的id和集合
                    System.out.print("请输入要修改的学生id:");
                    int modifyId = sc.nextInt();
                    modify(studentMembers, modifyId);
                }
                case 4 ->
                    // 查询功能
                    // 打印所有学生的信息
                    // 若没有学生信息则提示
                    // 有信息则打印
                        query(studentMembers);
                case 5 -> {
                    // 退出
                    break Loop;
//                    System.exit(0);
                }
            }
        }
    }

    // 添加学生, 要求id唯一
    // 需要对象数组
    // 返回对象数组
    public static void add(ArrayList<StudentMember> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入添加学生的信息(id、姓名、年龄、家庭住址):");
        // 创建学生对象
        StudentMember student = new StudentMember();
        // 判断id是否唯一
        Loop2 : while (true) {
            System.out.print("添加学生的id:");
            int studengtId = sc.nextInt();
            for (StudentMember studentMember : list) {
                if (studengtId == studentMember.getId()) {
                    // 若有相同id则返回添加失败
                    System.out.println("已存在相同id,请重新添加!");
                    continue Loop2;
                }
            }
            // 若没有相同的则添加
            student.setId(studengtId);
            break;
        }
        System.out.print("添加学生的姓名:");
        String studentName = sc.next();
        student.setName(studentName);
        System.out.print("添加学生的年龄:");
        int studentAge = sc.nextInt();
        student.setAge(studentAge);
        System.out.print("添加学生的家庭住址:");
        String studentAddress = sc.next();
        student.setAddress(studentAddress);
        list.add(student);
    }

    // 删除功能
    // 需要集合和id,存在则删除,否则提示
    public static void delete(ArrayList<StudentMember> list, int id){
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId() == id){
                // 如果存在则删除该成员
                list.remove(i);
                return;
            }
        }
        // 否则提示
        System.out.println("不存在该学生信息, 请重新输入!");
    }

    // 修改功能
    // 需要要修改的学生的id和集合
    public static void modify(ArrayList<StudentMember> list, int id){
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId() == id){
                // 如果存在则继续录入信息
                System.out.print("修改学生的姓名:");
                String studentName = sc.next();
                list.get(i).setName(studentName);
                System.out.print("修改学生的年龄:");
                int studentAge = sc.nextInt();
                list.get(i).setAge(studentAge);
                System.out.print("修改学生的家庭住址:");
                String studentAddress = sc.next();
                list.get(i).setAddress(studentAddress);
                return;
            }
        }
        // 否则提示
        System.out.println("不存在该学生信息, 请重新输入!");
    }

    // 查询功能
    // 打印所有学生的信息
    // 若没有学生信息则提示
    // 有信息则打印
    public static void query(ArrayList<StudentMember> list){
        if (list.size() != 0){
            // 有信息则打印
            System.out.println("id\t" + "姓名\t" + "年龄\t" + "家庭住址");
            for (StudentMember studentMember : list) {
                System.out.println(studentMember.getId() + "\t" + studentMember.getName() + "\t" + studentMember.getAge() + "\t" + studentMember.getAddress());
            }
        }else {
            System.out.println("当前无学生信息,请添加后再查询!");
        }
    }

    // 注册账号
    public static void register(ArrayList<UserMember> list){
        Scanner sc = new Scanner(System.in);
        UserMember userMember = new UserMember();
        while (true) {
            System.out.println("请输入要注册的用户名(长度3-15位,字母加数字组合):");
            String username = sc.next();
            // 长度太短或太长则需要重新输入
            if (username.length() < 3 || username.length() > 15) {
                System.out.println("用户名长度不符合要求, 请重新输入!");
                continue;
            }
            // 如果用户名是纯数字,需要重新输入
            if (strNum(username, username.length())) {
                System.out.println("用户名不能是纯数字, 请重新输入!");
                continue;
            }
            // 若都符合要求,则添加用户名
            userMember.setUsername(username);
            System.out.println("用户名合格");
            break;
        }
        // 设置密码
        while (true) {
            System.out.print("请输入密码:");
            String password1 = sc.next();
            System.out.print("请确认密码:");
            String password2 = sc.next();
            if (Objects.equals(password1, password2)){
                // 两次密码相同, 可以注册
                userMember.setPassword(password1);
                System.out.println("密码合格!");
                break;
            }else {
                // 两次密码不相同,重新输入
                System.out.println("两次密码不相同,请重新输入");
            }
        }
        // 验证身份证号码
        while (true) {
            System.out.print("请输入身份证号码:");
            String idcard = sc.next();
            // 验证
            // 长度必须是18
            if (!LengthJudgment(idcard, 18)){
                System.out.println("身份证长度错误,请重新输入!");
                continue;
            }
            // 不能以0开头
            if(firstChar(idcard, '0')){
                System.out.println("身份证不能以0开头,请重新输入!");
                continue;
            }
            if (!strNum(idcard, idcard.length()-1)){
                // 如果前17位不全是数字,需要重新输入
                System.out.println("身份证前17位必须是数字, 请重新输入!");
                continue;
            }
            // 最为一位必须是数字,或是大写X或小写x
            char lastnumber = idcard.charAt(idcard.length()-1);
            if ((lastnumber != 'X' && lastnumber != 'x') && (lastnumber < 48 || lastnumber >57)){
                System.out.println("身份证最为一位必须是数字,或是大写X或小写x, 请重新输入!");
                continue;
            }
            // 输入正确
            userMember.setIdcard(idcard);
            System.out.println("身份证合格!");
            break;
        }
        // 验证手机号码
        while (true){
            System.out.print("请输入手机号码:");
            String phonenumber = sc.next();
            // 判断手机号码长度
            if (!LengthJudgment(phonenumber, 11)){
                System.out.println("手机号码长度错误,请重新输入!");
                continue;
            }
            // 不能以0开头
            if(firstChar(phonenumber, '0')){
                System.out.println("身份证不能以0开头,请重新输入!");
                continue;
            }
            // 必须都是数字
            if (!strNum(phonenumber, phonenumber.length())){
                System.out.println("手机号码必须都是数字, 请重新输入!");
                continue;
            }
            // 输入正确
            userMember.setPhonenumber(phonenumber);
            System.out.println("手机号码合格!");
            break;
        }
        // 注册账号成功
        System.out.println("注册账号成功!");
        list.add(userMember);
        }

    // 登录账号
    public static void logIn(ArrayList<UserMember> list){
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.print("请输入用户名:");
            String username = sc.next();
            for (int i = 0; i < list.size(); i++) {
                if (Objects.equals(username, list.get(i).getUsername())){
                    // 用户名存在
                    // 判断验证码是否正确
                    // 需要验证码
                    // 返回boolean
                    verificationCode();
                    while (true) {
                        System.out.print("请输入密码:");
                        String password = sc.next();
                        for (int i1 = 0; i1 < 3; i1++) {
                            if (Objects.equals(password, list.get(i).getPassword())){
                                // 若密码正确
                                System.out.println("密码正确,登陆成功!");
                                return;
                            }else {
                                System.out.println("密码错误,请重新输入!您还有" + (2-i) + "次机会");
                            }
                        }
                        System.out.println("密码错误,平台关闭!");
                        System.exit(0);
                    }

                }
            }
            System.out.println("用户名未注册,请先注册!");
            register(list);
        }
    }

    // 忘记密码
    public static void forgetPassword(ArrayList<UserMember> list){
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入用户名:");
        String username = sc.next();
        for (int i = 0; i < list.size(); i++) {
            if (Objects.equals(username, list.get(i).getUsername())){
                // 用户名存在
                // 判断身份证号码和手机号
                System.out.println("请输入身份证号码:");
                String idcard = sc.next();
                System.out.println("请输入手机号码:");
                String phonenumber = sc.next();
                if (Objects.equals(idcard, list.get(i).getIdcard()) && Objects.equals(phonenumber, list.get(i).getPhonenumber())){
                    System.out.print("输入正确,请输入新的密码:");
                    String newpassword = sc.next();
                    list.get(i).setPassword(newpassword);
                    return;
                }else {
                    System.out.println("账号信息不匹配,修改失败!");
                    System.exit(0);
                }

            }
        }
        System.out.println("用户不存在,请先注册账号!");
        System.exit(0);
    }

    // 判断长度
    // 需要字符串和规定的长度
    // 返回boolean
    public static boolean LengthJudgment(String str, int len){
        // 长度不相等
        return str.length() == len;
    }

    // 字符串是否以xx开头
    // 需要字符串和字符
    // 返回boolean
    public static boolean firstChar(String str, char c){
        return str.charAt(0) == c;
    }

    // 判断前xx位是否都是数字
    // 需要字符串, 前多少位
    // 返回boolean
    public static boolean strNum(String str, int len){
        // 前len位必须是数字
        int count = 0;
        for (int i = 0; i < len; i++) {
            char c = str.charAt(i);
            if (c >= 48 && c <= 57){
                // 是数字
                count++;
            }
        }
        return count == len;
    }

    // 判断验证码是否正确
    // 需要验证码
    // 返回boolean
    public static void verificationCode(){
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.print("请输入验证码(长度为5,由四个字母和一个数字组成):");
            String verificationcode = sc.next();
            int countnum = 0;
            int countchar = 0;
            if (LengthJudgment(verificationcode, 5)){
                // 长度为5
                for (int i = 0; i < verificationcode.length(); i++) {
                    char c = verificationcode.charAt(i);
                    if (c >= 48 && c <= 57){
                        // 是数字
                        countnum++;
                    } else if ((c >= 97 && c <= 122) || (c >= 65 && c <= 90)) {
                        // 是字母
                        countchar++;
                    }
                }
                if (countchar == 4 && countnum == 1){
                    // 验证码正确
                    System.out.println("验证码输入正确!");
                    break;
                }
            }
            System.out.println("验证码错误,请重新输入!");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值