java实战项目-学生管理系统(附带全套源代码及其登录注册功能的实现)--《进阶篇》

一、前言

新增了登录注册的功能,代码量可能会有点大,所有代码加起来差不多560行。这个项目对于小白来说肯定是一大难关了。文章中的每张图都是作者亲手绘制的,简单明了,如果大家认同作者,希望可以支持一下作者。全套源代码一直会保持公开状态,有需要的话可以自行cv。

java专栏(从0开始的java之旅)

二、效果展示

注册功能展示

登录功能展示

忘记密码功能展示 

三、逻辑分析

1. 登录功能

2. 注册功能

3. 忘记密码功能

四、代码分析

1. 登录

循环尝试登录

for (int i = 0; i < 3; i++) {
    // 代码内容
}

使用了一个循环,最多允许用户尝试三次登录(包括第三次)。

输入用户名

System.out.println("请输入用户名");
String username = sc.next();

用户输入用户名,然后检查是否在已注册用户列表中。

检查用户名是否注册

boolean flag = comtains(users, username);
if (!flag) {
    System.out.println("用户名" + username + "未注册,请先注册在登录");
    System.exit(0);
}

如果用户名不在用户列表中,则提示用户未注册并退出程序。可能的改进是提供注册选项或重新提示输入。

输入密码和验证码

System.out.println("请输入密码");
String password = sc.next();

用户输入密码,并且每次登录尝试都需要输入验证码。

while (true) {
    String rightCode = GetCode();
    // 显示验证码并接受用户输入
}

这段代码通过 GetCode() 方法获取验证码,用户需要输入正确的验证码才能继续登录。验证码大小写不敏感。

验证用户名和密码

User userInfo = new User(username, password, null, null);
boolean result = checkUserInfo(users, userInfo);

checkUserInfo() 方法用于检查输入的用户名和密码是否在用户列表中匹配。如果匹配,则登录成功;否则,根据尝试次数给出失败提示。

登录结果处理

if (result) {
    System.out.println("登录成功");
    // 启动系统
    SyuSystem ss = new SyuSystem();
    ss.StartStuSystem();
    break;
} else {
    // 登录失败处理
}

如果登录成功,显示成功消息并启动系统;否则,根据尝试次数给出失败消息,并在达到最大尝试次数时锁定账号。

2. 注册

输入用户名

while (true) {
    System.out.println("请输入用户名");
    username = sc.next();

    boolean flag1 = checkUsername(username);
    if (!flag1) {
        System.out.println("格式不满足条件,需要重新输入");
    } else {
        boolean flag2 = contains(users, username);
        if (!flag2) {
            System.out.println("用户名" + username + "可用");
            break;
        } else {
            System.out.println("用户名" + username + "已存在,请重新输入");
        }
    }
}

用户首先输入用户名,程序会检查其格式是否符合要求(checkUsername(username) 方法的具体实现未给出,但通常会检查长度、字符等)。

如果用户名格式不正确,要求用户重新输入。

如果用户名已经存在于用户列表中(使用 contains(users, username) 方法判断),则要求用户重新输入。

输入密码

String password;
while (true) {
    System.out.println("请输入要注册的密码");
    password = sc.next();
    System.out.println("请再次输入密码");
    String password2 = sc.next();
    if (password.equals(password2)) {
        System.out.println("两次密码一致,继续输入其他数据");
        break;
    } else {
        System.out.println("两次密码不一致,请重新输入");
    }
}

用户输入密码,并要求再次确认密码。

如果两次输入的密码不一致,提示用户重新输入。

输入身份证号码和手机号码:

String personId;
while (true) {
    System.out.println("请输入身份证号");
    personId = sc.next();
    boolean flag = checkPersonId(personId);
    if (flag) {
        System.out.println("身份证号码满足需求");
        break;
    } else {
        System.out.println("身份证号码不满足需求,请重新输入");
    }
}

String phoneNumber;
while (true) {
    System.out.println("请输入手机号码");
    phoneNumber = sc.next();
    boolean flag = checkPhoneNumber(phoneNumber);
    if (flag) {
        System.out.println("手机号格式正确");
        break;
    } else {
        System.out.println("手机号格式有误,请重新输入");
    }
}

用户依次输入身份证号码和手机号码。

每次输入后,程序会调用相应的验证方法(checkPersonId(personId) 和 checkPhoneNumber(phoneNumber))来验证格式的正确性。

如果格式不正确,提示用户重新输入。

创建用户对象并添加到列表

User user = new User(username, password, personId, phoneNumber);
users.add(user);

用户成功输入所有信息后,将信息封装成 User 对象,并将其添加到 users 列表中。

遍历集合打印用户信息

printList(users);

最后调用 printList(users) 方法遍历并打印注册的用户信息。

3. 忘记密码

输入用户名

System.out.println("请输入用户名");
String username = sc.next();
boolean flag = contains(users, username);
if (!flag) {
    System.out.println("当前用户" + username + "未注册,请先注册");
    return;
}

用户输入用户名,并检查该用户名是否存在于用户列表中(使用 contains(users, username) 方法)。

如果用户名不存在,提示用户先注册并结束函数。

输入身份证号和手机号

System.out.println("请输入身份证号码");
String personId = sc.next();
System.out.println("请输入手机号码");
String phoneNumber = sc.next();

用户输入身份证号码和手机号码。

验证身份信息

int index = findIndex(users, username);
User user = users.get(index);
if (!(user.getPersonId().equalsIgnoreCase(personId) && user.getPhoneNumber().equals(phoneNumber))) {
    System.out.println("身份证号码或手机号码输入有误,不能修改密码");
    return;
}

根据用户名找到对应的用户对象。

验证输入的身份证号码和手机号码是否与用户信息匹配,如果不匹配则提示信息输入有误并结束函数。

更改密码

String password;
while (true) {
    System.out.println("请输入新密码");
    password = sc.next();
    System.out.println("请再次输入密码");
    String newPassword = sc.next();
    if (password.equals(newPassword)) {
        System.out.println("两次密码输入一致");
        break;
    } else {
        System.out.println("两次密码不一致,请重新输入");
        continue;
    }
}

用户输入新的密码,并要求再次确认密码。

如果两次输入的密码不一致,提示用户重新输入。

修改密码

user.setPassword(password);
System.out.println("密码修改成功");

将用户对象中的密码字段更新为新输入的密码。

提示用户密码修改成功。

4. 方法

查找用户信息下标

方法签名和参数
private static int findIndex(ArrayList<User> users, String username)

findIndex 是一个静态方法,用于在给定的 ArrayList<User> 中查找指定用户名的用户。

users 是包含用户对象的列表。

username 是要查找的用户名。

循环遍历列表
for (int i = 0; i < users.size(); i++) {
    if (users.get(i).getUserName().equals(username)) {
        return i;
    }
}

使用 for 循环遍历 users 列表,从索引 0 开始逐个查找。

对于每个用户对象,通过 getUserName() 方法获取用户名,并与输入的 username 进行比较。

如果找到匹配的用户名,返回当前索引 i,即找到的用户在列表中的位置。

未找到用户情况
return -1;

如果循环结束后仍未找到匹配的用户名,返回 -1,表示未找到该用户。

检查用户名和密码是否正确

方法签名和参数

private static boolean checkUserInfo(ArrayList<User> users, User userInfo)

checkUserInfo 是一个静态方法,用于检查用户信息是否匹配。

users 是包含用户对象的列表。

userInfo 是要验证的用户信息对象,其中包含用户名和密码。

循环遍历列表

for (int i = 0; i < users.size(); i++) {
    if (users.get(i).getUserName().equals(userInfo.getUserName()) && users.get(i).getPassword().equals(userInfo.getPassword())) {
        return true;
    }
}

使用 for 循环遍历 users 列表,从索引 0 开始逐个检查每个用户对象。

对于每个用户对象,通过 getUserName() 方法获取用户名,并通过 getPassword() 方法获取密码。

如果当前用户对象的用户名和密码与 userInfo 中的用户名和密码完全匹配,则返回 true,表示找到匹配的用户信息。

未找到匹配的情况

return false;

如果循环结束后未找到任何匹配的用户名和密码组合,则返回 false,表示未找到匹配的用户信息。

检查手机号码

长度检查
if (phoneNumber.length() != 11) {
    return false;
}

首先检查手机号的长度是否为 11 位。如果不是,则返回 false。在大多数国家,手机号通常是固定长度的,这里假设长度为 11 位。

开头检查
if (phoneNumber.startsWith("0")) {
    return false;
}

接着检查手机号码是否以 "0" 开头。在某些国家和地区,手机号码不能以 "0" 开头,因此这里排除以 "0" 开头的情况。

数字检查
for (int i = 0; i < phoneNumber.length(); i++) {
    if (phoneNumber.charAt(i) > '9' || phoneNumber.charAt(i) < '0') {
        return false;
    }
}

然后通过循环遍历每个字符,检查是否都是数字。这是通过比较字符的 ASCII 值来实现的。条件 phoneNumber.charAt(i) > '9' || phoneNumber.charAt(i) < '0' 检查字符是否不在 '0' 到 '9' 的范围内。如果发现非数字字符,立即返回 false

 检查身份证号码

长度检查
if (personId.length() != 18) {
    return false;
}

首先检查身份证号的长度是否为 18 位。在大多数国家和地区,身份证号通常是固定长度的,因此这里假设长度为 18 位。

开头检查
boolean flag = personId.startsWith("0");
if (flag) {
    return false;
}

检查身份证号码是否以 "0" 开头。根据常见的身份证号规则,有些国家或地区的身份证号不应以 "0" 开头,因此这里排除以 "0" 开头的情况。

前17位检查
for (int i = 0; i < personId.length() - 1; i++) {
    if (personId.charAt(i) < '0' || personId.charAt(i) > '9') {
        return false;
    }
}

遍历身份证号的前 17 位,确保它们都是数字字符 ('0' 到 '9')。如果发现非数字字符,立即返回 false

第18位检查
char endChar = personId.charAt(personId.length() - 1);
if ((endChar >= '0' && endChar <= '9') || (endChar == 'x') || (endChar == 'X')) {
    return true;
} else {
    return false;
}

检查身份证号的第 18 位。它可以是数字字符 ('0' 到 '9'),或者是 'x' 或 'X'(用于表示身份证号的最后一位可能是大写字母 X)。

 检查用户名

长度检查
int len = username.length();
if (len > 15 || len < 2) {
    return false;
}

首先检查用户名的长度是否在 2 到 15 之间。这个范围内的长度通常被认为是合适的,太短可能不够描述,太长则可能过于复杂。

字符组成检查
for (int i = 0; i < username.length(); i++) {
    char ch = username.charAt(i);
    if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9'))) {
        return false;
    }
}

遍历用户名的每个字符,确保它们只包含字母(大小写)和数字。如果发现非这些字符,则返回 false

字母检查
int countnum = 0;
for (int i = 0; i < username.length(); i++) {
    char ch = username.charAt(i);
    if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
        countnum++;
    }
}

计算用户名中字母的个数。这段代码似乎是想确保用户名中至少包含一个字母,因为 countnum 变量只有在字符是字母时才增加。

生成一个验证码

创建字母集合
ArrayList<Character> code = new ArrayList<>();
for (int i = 0; i < 26; i++) {
    code.add((char) ('a' + i));  // 添加小写字母
    code.add((char) ('A' + i));  // 添加大写字母
}

首先创建了一个包含所有小写和大写字母的集合 code,即 [a-zA-Z]

随机生成四个字母
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 4; i++) {
    int index = r.nextInt(code.size());
    char ch = code.get(index);
    sb.append(ch);
}

使用 Random 类生成四个随机位置的字母,并将它们添加到 StringBuilder sb 中。

生成一个随机数字
int num = r.nextInt(10);
sb.append(num);

使用 Random 类生成一个 0 到 9 之间的随机数字,并将其追加到 sb 中。

调整数字位置
char[] arr = sb.toString().toCharArray();
int index = r.nextInt(arr.length);
char ch = arr[index];
arr[index] = arr[arr.length - 1];
arr[arr.length - 1] = ch;

将生成的验证码转换为字符数组 arr,然后随机选择一个位置将最后一个字符(即数字)与之交换,以增加验证码的随机性。

五、全套源代码

APP.java

package com.von.StudentSystem;

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

public class App {
    public static void main(String[] args) {
        ArrayList<User> users = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("欢迎来到VON学生管理系统");
            System.out.println("请选择操作:1登录 2注册 3忘记密码 4退出");
            String choose = sc.next();
            switch (choose) {
                case "1" -> login(users);
                case "2" -> register(users);
                case "3" -> forget(users);
                case "4" -> {
                    System.out.println("谢谢使用,再见");
                    System.exit(0);
                }
                default -> System.out.println("没有这个选项");
            }
        }
    }

    //忘记密码
    private static void forget(ArrayList<User> users) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.next();
        boolean flag = comtains(users, username);
        if (!flag) {
            System.out.println("当前用户" + username + "未注册,请先注册");
            return;
        }
        //输入身份证号和手机号
        System.out.println("请输入身份证号码");
        String perdonId = sc.next();
        System.out.println("请输入手机号码");
        String phoneNumber = sc.next();
        //比较身份证号,和手机号是否一样
        int index = findIndex(users, username);
        User user = users.get(index);
        if (!(user.getPersonId().equalsIgnoreCase(perdonId) && user.getPhoneNumber().equals(phoneNumber))) {
            System.out.println("身份证号码或手机号码输入有误,不能修改密码");
            return;
        }
        //更改密码
        String password;
        while (true) {
            System.out.println("请输入新密码");
            password = sc.next();
            System.out.println("请再次输入密码");
            String newPassword = sc.next();
            if (password.equals(newPassword)) {
                System.out.println("两次密码输入一致");
                break;
            } else {
                System.out.println("两次密码不一致,请重新输入");
                continue;
            }
        }
        //修改密码
        user.setPassword(password);
        System.out.println("密码修改成功");
    }

    //查找用户下标
    private static int findIndex(ArrayList<User> users, String username) {
        for (int i = 0; i < users.size(); i++) {
            if (users.get(i).getUserName().equals(username)) {
                return i;
            }
        }
        return -1;
    }

    //登录
    private static void login(ArrayList<User> users) {
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名");
            String username = sc.next();
            boolean flag = comtains(users, username);
            if (!flag) {
                System.out.println("用户名" + username + "未注册,请先注册在登录");
                System.exit(0);
            }
            System.out.println("请输入密码");
            String password = sc.next();

            while (true) {
                String rightCode = GetCode();
                System.out.println("当前验证码为:" + rightCode);
                System.out.println("请输入验证码");
                String code = sc.next();
                if (code.equalsIgnoreCase(rightCode)) {
                    System.out.println("验证码正确");
                    break;
                } else {
                    System.out.println("验证码错误,请重新输入");
                    continue;
                }
            }
            //检查用户名和密码是否正确
            User userInfo = new User(username, password, null, null);
            boolean result = checkUserInfo(users, userInfo);
            if (result) {
                System.out.println("登录成功");
                SyuSystem ss = new SyuSystem();
                ss.StartStuSystem();
                break;
            } else {
                System.out.println("登录失败,用户名或密码错误");
                if (i == 2) {
                    System.out.println("当前账号" + username + "被锁定");
                    return;
                } else {
                    System.out.println("用户名或密码错误,还剩下" + i + "次机会");
                }
            }
        }
    }

    //检查用户名和密码是否正确
    private static boolean checkUserInfo(ArrayList<User> users, User userInfo) {
        for (int i = 0; i < users.size(); i++) {
            if (users.get(i).getUserName().equals(userInfo.getUserName()) && users.get(i).getPassword().equals(userInfo.getPassword())) {
                return true;
            }
        }
        return false;
    }

    //注册
    private static void register(ArrayList<User> users) {
        //1.输入用户名
        Scanner sc = new Scanner(System.in);
        String username;
        while (true) {
            System.out.println("请输入用户名");
            username = sc.next();

            boolean flag1 = checkUsername(username);
            if (!flag1) {
                System.out.println("格式不满足条件,需要重新输入");
            } else {
                //检测用户名是否唯一
                boolean flag2 = comtains(users, username);
                if (!flag2) {
                    System.out.println("用户名" + username + "可用");
                    break;
                } else {
                    System.out.println("用户名" + username + "已存在,请重新输入");
                }
            }
        }
        //2.输入密码
        String password;
        while (true) {
            System.out.println("请输入要注册的密码");
            password = sc.next();
            System.out.println("请再次输入密码");
            String password2 = sc.next();
            if (password.equals(password2)) {
                System.out.println("两次密码一致,继续输入其他数据");
                break;
            } else {
                System.out.println("两次密码不一致,请重新输入");
                continue;
            }
        }
        //3.输入身份证号码
        String personId;
        while (true) {
            System.out.println("请输入身份证号");
            personId = sc.next();
            boolean flag = checkPersonId(personId);
            if (flag) {
                System.out.println("身份证号码满足需求");
                break;
            } else {
                System.out.println("身份证号码不满足需求,请重新输入");
                continue;
            }
        }
        //4.输入手机号码
        String phoneNumber;
        while (true) {
            System.out.println("请输入手机号码");
            phoneNumber = sc.next();
            boolean flag = checkPhoneNumber(phoneNumber);
            if (flag) {
                System.out.println("手机号格式正确");
                break;
            } else {
                System.out.println("手机号格式有误,请重新输入");
                continue;
            }
        }
        //5.用户名、密码、身份证号、手机号放到用户中
        User user = new User(username, password, personId, phoneNumber);
        users.add(user);
        //6.遍历集合
        printList(users);
    }

    //遍历集合
    private static void printList(ArrayList<User> users) {
        for (int i = 0; i < users.size(); i++) {
            User user = users.get(i);
            System.out.println(user.toString());
        }
    }

    //检查手机号码
    private static boolean checkPhoneNumber(String phoneNumber) {
        //长度为11位
        if (phoneNumber.length() != 11) {
            return false;
        }
        //不能0开头
        if (phoneNumber.startsWith("0")) {
            return false;
        }
        //必须都是数字
        for (int i = 0; i < phoneNumber.length(); i++) {
            if (phoneNumber.charAt(i) > '9' && phoneNumber.charAt(i) < '0') {
                return false;
            }
        }
        return true;
    }

    //检查身份证号
    private static boolean checkPersonId(String personId) {
        //身份证号长度
        if (personId.length() != 18) {
            return false;
        }
        //检查开头数据
        boolean flag = personId.startsWith("0");
        if (flag) {
            return false;
        }
        //判断前17位
        for (int i = 0; i < personId.length() - 1; i++) {
            if (personId.charAt(i) < '0' || personId.charAt(i) > '9') {
                return false;
            }
        }
        //判断第18位
        char endChar = personId.charAt(personId.length() - 1);
        if ((endChar >= '0' && endChar <= '9') || (endChar == 'x') || (endChar == 'X')) {
            return true;
        } else {
            return false;
        }
    }

    //检查用户是否在集合中
    private static boolean comtains(ArrayList<User> users, String username) {
        for (int i = 0; i < users.size(); i++) {
            if (users.get(i).getUserName().equals(username)) {
                return true;
            }
        }
        return false;
    }

    //检查用户名
    private static boolean checkUsername(String username) {
        //用户长度必须在3-15位之间
        int len = username.length();
        if (len > 15 || len < 2) {
            return false;
        }
        //只能是字母加数字,不能是纯数字
        for (int i = 0; i < username.length(); i++) {
            char ch = username.charAt(i);
            if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9'))) {
                return false;
            }
        }
        //记录字母的个数
        int countnum = 0;
        for (int i = 0; i < username.length(); i++) {
            char ch = username.charAt(i);
            if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
                countnum++;
            }
        }
        return countnum > 0;
    }

    //生成一个验证码
    private static String GetCode() {
        //创建一个集合存放字母
        ArrayList<Character> code = new ArrayList<>();
        for (int i = 0; i < 26; i++) {
            code.add((char) ('a' + i));
            code.add((char) ('A' + i));
        }
        //随机生成四个字母
        Random r = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 4; i++) {
            int index = r.nextInt(code.size());
            char ch = code.get(index);
            sb.append(ch);
        }
        //生成一个随机数字
        int num = r.nextInt(10);
        sb.append(num);
        //调整数字的位置
        char[] arr = sb.toString().toCharArray();
        int index = r.nextInt(arr.length);
        char ch = arr[index];
        arr[index] = arr[arr.length - 1];
        arr[arr.length - 1] = ch;
        return new String(arr);
    }
}

Student.java

package com.von.StudentSystem;

public class Student {
    private String id;
    private String name;
    private int age;
    private String gender;
    private String address;

    public Student() {
    }

    public Student(String id, String name, int age, String gender, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.address = address;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    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;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

SyuSystem.java

package com.von.StudentSystem;

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

public class SyuSystem {
    public static void StartStuSystem() {
        ArrayList<Student> students = new ArrayList<Student>();
        //菜单
        loop: while(true) {
            System.out.println("===================欢迎来到VON学生管理系统===================");
            System.out.println("====================1:添加学生============================");
            System.out.println("====================2:删除学生============================");
            System.out.println("====================3:修改学生============================");
            System.out.println("====================4:查找学生============================");
            System.out.println("====================5:退出系统============================");
            System.out.println("请输入您的选择");
            Scanner sc = new Scanner(System.in);
            String choose = sc.nextLine();
            switch (choose) {
                case "1" -> addStudent(students);
                case "2" -> delStudent(students);
                case "3" -> changeStudent(students);
                case "4" -> findStudent(students);
                case "5" -> {
                    System.out.println("系统退出成功。欢迎再次使用");
                    break loop;
                }
                default -> System.out.println("没有该选项");
            }
        }
    }
    //1.添加学生
    public static void addStudent(ArrayList<Student> students) {
        Student student = new Student();
        Scanner sc = new Scanner(System.in);
        while(true) {
            System.out.println("请输入学生ID");
            String id = sc.next();
            boolean flag = contains(students, id);
            if(flag) {//已经存在
                System.out.println("id已经存在请重新录入");
            }else {//不存在
                student.setId(id);

                System.out.println("请输入学生的姓名");
                String name = sc.next();
                student.setName(name);

                System.out.println("请输入学生年龄");
                int age = sc.nextInt();
                student.setAge(age);

                System.out.println("请输入学生性别");
                String gender = sc.next();
                student.setGender(gender);

                System.out.println("请输入学生家庭住址");
                String address = sc.next();
                student.setAddress(address);

                students.add(student);
                System.out.println("学生信息添加成功");
                break;
            }
        }
    }
    //2.删除学生
    public static void delStudent(ArrayList<Student> students) {
        System.out.println("请输入你要删除学生的id");
        Scanner sc = new Scanner(System.in);
        String id = sc.next();
        boolean flag = contains(students, id);
        if(flag) {//id存在
            for (int i = 0; i < students.size(); i++) {
                if(students.get(i).getId().equals(id)) {
                    students.remove(i);
                    System.out.println("id为"+id+"的学生删除成功");
                    break;
                }
            }
        }else{//id不存在
            System.out.println("id不存在,删除失败");
        }
    }
    //3.修改学生
    public static void changeStudent(ArrayList<Student> students) {
        System.out.println("请输入要修改学生的id");
        Scanner sc = new Scanner(System.in);
        String id = sc.next();
        boolean flag = contains(students, id);
        if(flag) {//id存在
            for (int i = 0; i < students.size(); i++) {
                if(students.get(i).getId().equals(id)) {
                    System.out.println("请输入要修改的学生姓名");
                    students.get(i).setName(sc.next());
                    System.out.println("请输入要修改的学生年龄");
                    students.get(i).setAge(sc.nextInt());
                    System.out.println("请输入要修改的学生性别");
                    students.get(i).setGender(sc.next());
                    System.out.println("请输入要修改的学生地址");
                    students.get(i).setAddress(sc.next());
                    break;
                }
            }
        }else{//id不存在
            System.out.println("要修改的id"+id+"不存在,请重新输入");
        }
    }
    //4.查询学生
    public static void findStudent(ArrayList<Student> students) {
        if(students.size() == 0) {
            System.out.println("当前没有任何学生信息,请添加后再查询");
            return;
        }
        System.out.println("id\t\t"+"姓名\t\t"+"年龄\t\t"+"性别\t\t"+"家庭住址");
        for (int i = 0; i < students.size(); i++) {
            Student stu = students.get(i);
            System.out.println(stu.getId()+"\t\t"+stu.getName()+"\t\t"+stu.getAge()+"\t\t"+stu.getGender()+"\t\t"+stu.getAddress());
        }
    }
    //5.判断id是否在集合中存在
    public static boolean contains(ArrayList<Student> students, String id) {
        for (int i = 0; i < students.size(); i++) {
            if(students.get(i).getId().equals(id)) {
                return true;
            }
        }
        return false;
    }
}

User.java

package com.von.StudentSystem;

public class User {
    private String userName;
    private String password;
    private String personId;
    private String phoneNumber;

    public User() {
    }

    public User(String userName, String password, String personId, String phoneNumber) {
        this.userName = userName;
        this.password = password;
        this.personId = personId;
        this.phoneNumber = phoneNumber;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPersonId() {
        return personId;
    }

    public void setPersonId(String personId) {
        this.personId = personId;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    @Override
    public String toString() {
        return "User{" +
                "userName='" + userName + '\'' +
                ", password='" + password + '\'' +
                ", personId='" + personId + '\'' +
                ", phoneNumber='" + phoneNumber + '\'' +
                '}';
    }
}

  • 30
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值