java学生管理系统

学生管理系统(练习)

需求:

​ 为学生管理系统书写一个登陆、注册、忘记密码的功能。

​ 只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。

分析:

登录界面:
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作1登录 2注册 3忘记密码");
用户类:

​ 属性:用户名、密码、身份证号码、手机号码

注册功能:

​ 1,用户名需要满足以下要求:

​ 验证要求:

​ 用户名唯一

​ 用户名长度必须在3~15位之间

​ 只能是字母加数字的组合,但是不能是纯数字

​ 2,密码键盘输入两次,两次一致才可以进行注册。

​ 3,身份证号码需要验证。

​ 验证要求:

​ 长度为18位

​ 不能以0为开头

​ 前17位,必须都是数字

​ 最为一位可以是数字,也可以是大写X或小写x

​ 4,手机号验证。

​ 验证要求:

​ 长度为11位

​ 不能以0为开头

​ 必须都是数字

登录功能:

​ 1,键盘录入用户名

​ 2,键盘录入密码

​ 3,键盘录入验证码

验证要求:

​ 用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册

​ 判断验证码是否正确,如不正确,重新输入

​ 再判断用户名和密码是否正确,有3次机会

忘记密码:

​ 1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册

​ 2,键盘录入身份证号码和手机号码

​ 3,判断当前用户的身份证号码和手机号码是否一致,

​ 如果一致,则提示输入密码,进行修改。

​ 如果不一致,则提示:账号信息不匹配,修改失败。

验证码规则:

​ 长度为5

​ 由4位大写或者小写字母和1位数字组成,同一个字母可重复

​ 数字可以出现在任意位置

比如:

​ aQa1K

学生管理系统

需求:

​ 采取控制台的方式去书写学生管理系统。

分析:

初始菜单:
"-------------欢迎来到黑马学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"
学生类:

​ 属性:id、姓名、年龄、家庭住址

添加功能:

​ 键盘录入每一个学生信息并添加,需要满足以下要求:

  • id唯一
删除功能:

​ 键盘录入要删除的学生id,需要满足以下要求:

  • id存在删除
  • id不存在,需要提示不存在,并回到初始菜单
修改功能:

​ 键盘录入要修改的学生id,需要满足以下要求

  • id存在,继续录入其他信息
  • id不存在,需要提示不存在,并回到初始菜单
查询功能:

​ 打印所有的学生信息,需要满足以下要求

  • 如果没有学生信息,提示:当前无学生信息,请添加后再查询
  • 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id			姓名		年龄		家庭住址
11	         张三		23		   贵州
22	         李四		24		   重庆

完整代码实现

User.class 用户类

属性:用户名、密码、身份证号码、手机号码

import java.util.Objects;

public class User {

    private String userName;
    private String password;
    private String personId;
    private String phone;

    public User() {
    }

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

    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 getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(userName, user.userName) &&
                Objects.equals(password, user.password) &&
                Objects.equals(personId, user.personId) &&
                Objects.equals(phone, user.phone);
    }

    @Override
    public int hashCode() {
        return Objects.hash(userName, password, personId, phone);
    }

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

Management.class

管理员类

  • 其中包括 登录、注册、忘记密码三个功能
  • 登录、注册、忘记密码时添加了一些条件校验主要用于练习(详细条件如上需求分析)
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

/**
 * 管理员类
 * 其中包括  登录、注册、忘记密码三个功能
 * 登录、注册、忘记密码时添加了一些条件校验主要用于练习
 */
public class Management {

    ArrayList<User> arrayList = new ArrayList<>();
    StudentSystem studentSystem = new StudentSystem();
    Scanner sc = new Scanner(System.in);
    String name;
    String pwd;
    String personNum;
    String phone;

    /**
     * 注册
     */
    public void registered() {
        while (true) {
            System.out.println("请输入用户名:");
            name = sc.next();
            boolean flag =  judgeUserName(arrayList,name);
            boolean cantance = cantance(arrayList, name);
            if(cantance){
                System.out.println("用户名已存在,请重新输入");
                continue;
            }
            if(flag){
                System.out.println("用户名输入正确");
                break;
            }else{
                System.out.println("用户名输入错误,请重新输入");
                System.out.println("提示:用户名长度必须在3~15位之间,只能是字母加数字的组合,但是不能是纯数字");
                continue;
            }

        }

        while (true) {
            System.out.println("请输入密码:");
            pwd = sc.next();
            System.out.println("请确认密码:");
            String surePwd = sc.next();
            if(pwd.equals(surePwd)){
                System.out.println("密码输入正确");
                break;
            }else{
                System.out.println("两次密码输入不一致,请重新输入");
                continue;
            }
        }

       //身份证号
        while (true) {
            System.out.println("请输入身份证号:");
            personNum = sc.next();
            boolean f = jupgePersonNum(personNum);
            if(f){
                System.out.println("身份证输入正确");
                break;

            }else {
                System.out.println("身份证号输入不正确,请重新输入");
                System.out.println("提示:长度为18位,不能以0为开头前17位,必须都是数字,最为一位可以是数字,也可以是大写X或小写x");
                continue;
            }
        }

        //手机号验证
        while (true) {
            System.out.println("请输入手机号码:");
            phone = sc.next();
            boolean ff = jupegPhone(phone);
            if(ff){
                System.out.println("手机号码输入正确");
                break;
            }else {
                System.out.println("手机号码输入格式不正确,请重新输入");
                System.out.println("提示:长度为11位,不能以0为开头,必须都是数字");
                continue;
            }
        }
        User user = new User(name,pwd,personNum,phone);
        arrayList.add(user);


    }



    /**
     * 判断手机号是否正确
     * @param phone
     * @return
     */
    private boolean jupegPhone(String phone) {
        if(phone.length() != 11) return false;

        char c = phone.charAt(0);
        if(c == '0') return false;
        for (int i = 0; i < phone.length(); i++) {
            if(!(phone.charAt(i)>=0&&phone.charAt(i)<='9')){
                return false;
            }
        }
        return true;
    }

    /**
     * 判断身份证号是否正确
     * @param personNum
     * @return
     */
    private boolean jupgePersonNum(String personNum) {
        if(personNum.length() != 18) return false;
        char c = personNum.charAt(0);
        if(c == '0') return false;
        String substring = personNum.substring(0, 16);
        for (int i = 0; i < substring.length(); i++) {
            if(!(substring.charAt(i)>='0'&&substring.charAt(i)<='9')){
                return false;
            }
        }
        char c1 = personNum.charAt(17);
        if(!((c1>='0'&&c1<='9')||c1 == 'X' ||c1 == 'x') ) return false;

        return true;
    }

    private boolean cantance(ArrayList<User> arrayList, String name) {
        for (int i = 0; i < arrayList.size(); i++) {
            if(arrayList.get(i).getUserName().equals(name)){
                return true;
            }
        }
        return false;
    }

    /**
     * 用户名判断
     * @param arrayList
     * @param name
     * @return
     */
    private boolean judgeUserName(ArrayList<User> arrayList, String name) {
        if(name.length() < 3 || name.length() > 15){
            return false;
        }
        for (int i = 0; i < name.length(); i++) {
            char c = name.charAt(i);
            if(!((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))){
                return false;
            }
        }

        int cut = 0;
        for (int i = 0; i < name.length(); i++) {
            char ch = name.charAt(i);
            if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'){
                cut++;
                break;
            }
        }
        if(cut <= 0) return false;
        return true;
    }


    /**
     * 登录
     */
    public void login() {
        String name;
        String pwd;
        //String judge;
        boolean ff = false;
        int cut = 3;
        while (true) {
            System.out.println("请输入用户名:");
            name = sc.next();
            boolean cantance = cantance(arrayList, name);
            if(!cantance){
                System.out.println("该账号未被注册,请先完成注册");
                //registered();
                return;
            }
            System.out.println("请输入密码:");
            pwd = sc.next();
            cut--;
            ff = judgeUser(arrayList,name,pwd);
            if(!ff){
                System.out.println("用户名或密码错误,请重新输入,您还有"+cut+"次机会");
                if(cut == 0){
                    System.out.println("您的账户已被冻结!");
                    return;
                }
                continue;
            }else{
                System.out.println("用户名或密码输入正确");
                break;
            }

        }

        while (true) {
            System.out.println("请输入验证码");
            String judge = judgeVerificationCode();
            System.out.println(judge);
            String verificationCode = sc.next();
            if(verificationCode.equalsIgnoreCase(judge)){
                System.out.println("验证码输入正确");
                if(ff) {
                    System.out.println("登录成功");
                    studentSystem.studentSystem();
                }
                break;
            }else{
                System.out.println("验证码输入错误,请重新输入");
                continue;
            }
        }

    }

    /**
     * 生成验证码
     * @return
     */
    private String judgeVerificationCode() {
        Random rd = new Random();
        StringBuilder str = new StringBuilder();
        for (int i = 0; i < 5; i++) {
            str.append((char)('a'+rd.nextInt(26)));
            str.append((char)('A'+rd.nextInt(26)));
        }
        char[] chars = str.toString().toCharArray();
        StringBuilder res = new StringBuilder();
        for (int i = 0; i < 4; i++) {
            res.append(chars[rd.nextInt(chars.length)]);
        }
        //System.out.println(res);
        int i = rd.nextInt(10);
        res.append(i);
        char[] charArray = res.toString().toCharArray();
        char temp;
        temp = charArray[charArray.length - 1];
        charArray[charArray.length - 1] = charArray[rd.nextInt(charArray.length-1)];
        charArray[rd.nextInt(charArray.length)] = temp;

       StringBuilder resultStr = new StringBuilder();

        for (int k = 0; k < charArray.length; k++) {
            resultStr.append(charArray[k]);
        }
        return resultStr.toString();

    }

    /**
     * 判断用户是否存在
     * @param arrayList
     * @param name
     * @param pwd
     * @return
     */
    private boolean judgeUser(ArrayList<User> arrayList, String name, String pwd) {
        for (int i = 0; i < arrayList.size(); i++) {
            if((arrayList.get(i).getUserName().equals(name) && arrayList.get(i).getPassword().equals(pwd))){
                return true;
            }
        }
        return false;
    }

    /**
     * 忘记密码
     */
    public void forgetPassword() {
       Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");

        String name = sc.next();
        boolean cantance = cantance(arrayList, name);
        if(!cantance){
            System.out.println("用户名不存在");
            return;
        }

        System.out.println("请输入身份证号:");
        String personId = sc.next();
        System.out.println("请输入手机号码");
        String phone = sc.next();
        boolean f =false;
        for (int i = 0; i < arrayList.size(); i++) {
            if(personId.equals(arrayList.get(i).getPersonId()) && phone.equals(arrayList.get(i).getPhone())){
                System.out.println("请输入新密码:");
                arrayList.get(i).setPassword(sc.next());
                f = true;
                break;
            }
        }
        if(f == false){
            System.out.println("账号信息不匹配修改失败!");
        }
    }



}

Student.class

学生类:

​ 属性:id、姓名、年龄、家庭住址

import java.util.Objects;

public class Student {

    private String id;
    private String name;
    private int age;
    private String address;

    public Student() {
    }

    public Student(String id, String name, int age, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        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 getAddress() {
        return address;
    }

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

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(id, student.id) &&
                Objects.equals(name, student.name) &&
                Objects.equals(address, student.address);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, age, address);
    }
}

Management.class

  • 学生管理系统
  • 简单摸拟学生管理系统,实现对学生信息的管理(增删改查)
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

/**
 * 学生管理系统
 * 简单摸拟学生管理系统,实现对学生信息的管理(增删改查)
 */
public class StudentSystem {

    Scanner sc = new Scanner(System.in);
    ArrayList<Student> students = new ArrayList<>();
    Main homePage = new Main();

    public void studentSystem() {
        studentSystemMenu();
    }


    /**
     * 系统主页
     */
    private void studentSystemMenu() {
        System.out.println("-------------------欢迎来到学生管理系统-------------------------");
        System.out.println("1:添加学生");
        System.out.println("2:查询学生");
        System.out.println("3:修改学生");
        System.out.println("4:删除学生");
        System.out.println("5:返回首页");
        System.out.println("6:退出系统");
        System.out.println("请输入您的选择");

        switch (sc.nextInt()){
            case 1:
                addStudent();
                break;
            case 2:
                selectStudent();
                break;
            case 3:
                updateStudent();
            case 4:
                deleteStudent();
                break;
            case 5:
                homePage.home();
                break;
            case 6:
                System.exit(0);
                break;
        }
    }

    //删除学生
    private void deleteStudent() {
        System.out.println("请输入id:");
        String id = sc.next();
        boolean flag = judegId(id);
        if(!flag){
            System.out.println("该学生不存在!");
            studentSystem();
            return;
        }
        int index = 0;
        for (int i = 0; i < students.size(); i++) {
            if(id.equals(students.get(i).getId())){
                students.remove(i);
                break;
            }
        }

        System.out.println("删除成功");
        studentSystem();
    }

    //修改学生
    private void updateStudent() {
        System.out.println("请输入需要修改信息的学生id: ");
        String id = sc.next();
        boolean flag = judegId(id);
        if(!flag){
            System.out.println("该学生不存在!");
            studentSystem();
            return;
        }
        Student student = new Student();

        int index = 0;
        for (int i = 0; i < students.size(); i++) {
            if(id.equals(students.get(i).getId())){
                index = i;
            }
        }

        System.out.println("请选择要修改的内容:");
        System.out.println("1:修改姓名");
        System.out.println("2:修改年龄");
        System.out.println("3:修改家庭住址");
        System.out.println("4:修改全部信息");
        switch (sc.nextInt()) {
            case 1:
                System.out.println("请输入姓名:");
                students.get(index).setName(sc.next());
                break;
            case 2:
                System.out.println("请输入年龄");
                students.get(index).setAge(sc.nextInt());
                break;
            case 3:
                System.out.println("请输入家庭地址");
                students.get(index).setAddress(sc.next());
                break;
            case 4:
                System.out.println("请输入姓名:");
                students.get(index).setName(sc.next());
                System.out.println("请输入年龄");
                students.get(index).setAge(sc.nextInt());
                System.out.println("请输入家庭地址");
                students.get(index).setAddress(sc.next());
                break;
        }
        studentSystem();

    }

    //查询学生
    private void selectStudent() {
        if(students.size() == 0){
            System.out.println("当前无学生信息,请添加后再查询");
        }
        System.out.println("id\t\t姓名\t年龄\t家庭住址");
        for (Student student : students) {
            System.out.println(student.getId()+"\t\t"+student.getName()+"\t"+student.getAge()+"\t"+student.getAddress());
        }
        studentSystem();
    }

    //添加学生
    private void addStudent() {
        System.out.println("请输入学号:");
        String id = sc.next();
        boolean flag = judegId(id);
        if(flag){
            System.out.println("该学生已存在!");
            studentSystem();
            return;
        }

        System.out.println("请输入姓名:");
        String name = sc.next();

        System.out.println("请输入年龄:");
        int age = sc.nextInt();

        System.out.println("请输入家庭住址:");
        String address = sc.next();
        Student student = new Student(id,name,age,address);

        //判断id是否唯一

            students.add(student);
            System.out.println("添加成功");
            studentSystem();

    }

    //判断id是否存在
    private boolean judegId(String id) {
        for (int i = 0; i < students.size(); i++) {
            if(id.equals(students.get(i).getId())){
                return true;
            }
        }
        return false;
    }
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.home();

    }

    public void home(){
        System.out.println("欢迎来到学生管理系统");
        Management management = new Management();

        while (true) {
            System.out.println("请选择操作1 注册 2 登录 3忘记密码");
            Scanner sc = new Scanner(System.in);
            switch (sc.nextInt()) {
                case 1:
                    management.registered();
                    System.out.println("注册成功:");
                    break;
                case 2:
                    management.login();
                    break;
                case 3:
                    management.forgetPassword();
                    System.out.println("密码修改成功");
                    break;
            }
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值