欢迎光临散文网 会员登陆 & 注册

Java——学生管理系统

2022-12-29 16:49 作者:回到唐朝当少爷  | 我要投稿

入门一门语言必写的作业——学生管理系统。主要为了熟悉一下刚学的java语法。

基本上没什么难度,就是很繁琐。

两个界面,一个是登录学生管理系统的界面,一个是进入后的后台界面

需求一:

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

分析:

初始菜单:

"-------------欢迎----------------" 

"1:添加学生" 

"2:删除学生"

"3:修改学生"

"4:查询学生" 

"5:退出" 

"请输入您的选择:"

学生类:

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

添加功能:

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

  • id唯一

删除功能:

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

  • id存在删除

  • id不存在,需要提示不存在,并回到初始菜单

修改功能:

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

  • id存在,继续录入其他信息

  • id不存在,需要提示不存在,并回到初始菜单

查询功能:

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

  • 如果没有学生信息,提示:当前无学生信息,请添加后再查询

  • 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)

id 姓名 年龄 家庭住址 

stu001 张三 23 南京 

stu002 李四 24 北京 

stu003 王五 25 广州 

stu004 赵六 26 深圳

需求二:

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

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

分析:

登录界面:

System.out.println("欢迎来到学生管理系统"); 

System.out.println("请选择操作1登录 2注册 3忘记密码 4退出");

用户类:

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

注册功能:

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

验证要求:

用户名唯一

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

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

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

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

验证要求:

长度为18位

不能以0为开头

前17位,必须都是数字

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

4,手机号验证。

验证要求:

长度为11位

不能以0为开头

必须都是数字

登录功能:

1,键盘录入用户名

2,键盘录入密码

3,键盘录入验证码

验证要求:

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

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

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

忘记密码:

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

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

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

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

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

验证码规则:

长度为5

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

数字可以出现在任意位置

比如:

aQa1K

javabean类:Student


javabean类:User


StudenManager.java

package Java;

import java.util.ArrayList;

import java.util.Random;

import java.util.Scanner;

public class StudentManager{

    public static void main(String[] args) {

      ArrayList<Student> studentList = new ArrayList<>();

      ArrayList<User> userList = new ArrayList<>();

      while(true){

        menu_1();

        Scanner sc = new Scanner(System.in);

        String choose = sc.next();

        switch (choose){

          case "1" -> Login(userList,studentList);

          case "2" -> register(userList);

          case "3" -> forgetPassword(userList);

          case "4" -> {System.out.println("退出整个系统"); System.exit(0);}

          default -> System.out.println("没有这个选项");

        }

      }

    }

    public static void Login(ArrayList<User> userList, ArrayList<Student> studentList){

      System.out.println("请输入您的用户名");

      Scanner sc = new Scanner(System.in);

      String username = sc.next();

      int index = getUserIndex(userList, username);

      if(index==-1){

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

        return;

      }

      else{

        User user = userList.get(index);

        int failNum = 0;

        while(failNum<3){

          System.out.println("请输入密码");

          String password = sc.next();

          if(user.getPassword().equals(password)){

            while(true){

              String code = getCode();

              System.out.println("请输入验证码:");

              String codeInput = sc.next();

              if(code.equals(codeInput)){

                System.out.println("登陆成功");

                StudentSystem(studentList);

                return;

              }

              else{

                System.out.println("验证码有误,请重试");

              }

            }

          }

          else{

            failNum++;

            if(failNum<3) System.out.println("密码错误,请再次输入,您还剩" + (3-failNum) + "次机会");

          }

        }

        System.out.println("密码尝试次数已耗尽,系统自动退出登录界面");

        return;

      }

    }

    public static void register(ArrayList<User> userList){

      User user = new User();

      while(true){

        System.out.println("请输入您待注册的用户名");

        Scanner sc = new Scanner(System.in);

        String username = sc.next();

        if(checkUsername(userList, username)){

          user.setUsername(username);

          while(true){

            System.out.println("请输入密码:");

            String password1 = sc.next();

            System.out.println("请再次输入一遍:");

            String password2 = sc.next();

            if(!password1.equals(password2)){

              System.out.println("两次输入不一致,请重新输入");

            }

            else{

              user.setPassword(password2);

              while(true){

                System.out.println("请输入身份证号码:");

                String personID = sc.next();

                if(checkPersonID(userList, personID)){

                  user.setPersonID(personID);

                  while(true){

                    System.out.println("请输入手机号");

                    String phoneNumber = sc.next();

                    if(checkPhoneNumber(userList, phoneNumber)){

                      user.setPhoneNumber(phoneNumber);

                      userList.add(user);

                      break;

                    }

                  }

                  break;

                }

              }

              break;

            }

          }

          break;

        }

      }

    }

    public static void forgetPassword(ArrayList<User> userList){

      System.out.println("请输入您的用户名");

      Scanner sc = new Scanner(System.in);

      String username = sc.next();

      int index = getUserIndex(userList, username);

      if(index==-1){

        System.out.println("未注册");

        return;

      }

      else{

        User user = userList.get(index);

        System.out.println("请输入身份证号");

        String personID = sc.next();

        System.out.println("请输入手机号");

        String phoneNumber = sc.next();

        if(user.getPersonID().equals(personID)&&user.getPhoneNumber().equals(phoneNumber)){

          while(true){

            System.out.println("请输入新密码");

            String password1 = sc.next();

            System.out.println("请再次输入");

            String password2 = sc.next();

            if(password1.equals(password2)){

              user.setPassword(password2);

              System.out.println("修改成功!");

              return;

            }

            else{

              System.out.print("密码不一致,");

            }

          }

        }

        else{

          System.out.println("账号信息不匹配,修改失败");

          return;

        }

      }

    }

    public static boolean checkUsername(ArrayList<User> userList,String username){

      if(getUserIndex(userList, username)!=-1){

        System.out.println("用户名已注册,请重新输入");

        return false;

      }

      if(username.length() < 3 | username.length() > 15){

          System.out.println("用户名长度不合法,请重新输入3-15位的用户名");

          return false;

      }

      boolean flag = true;//判断是否为纯数字;

      for (int i = 0; i < username.length(); i++) {

        char ch = username.charAt(i);

        if(!(ch>='0'&&ch<='9') && !(ch>='a'&&ch<='z') && !(ch>='A'&&ch<='Z')){

          System.out.println("用户名中含有非法字符,请重新输入");

          return false;

        }

        if((ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z')){

          flag = false;

        }

      }

      if(flag){

        System.out.println("用户名不能为纯数字,请重新输入");

        return false;

      }

      return true;

    }

    public static boolean checkPersonID(ArrayList<User> userList,String personID){

      for (int i = 0; i < userList.size(); i++) {

        if(userList.get(i).getPersonID().equals(personID)){

          System.out.println("身份证号已存在,请重新输入");

          return false;

        }

      }

      if(personID.length()!=18){

        System.out.println("身份证号长度不合法,请重新输入");

        return false;

      }

      if(personID.startsWith("0")){

        System.out.println("身份证号不合法,请重新输入");

        return false;

      }

      char lastChar = personID.charAt(personID.length()-1);

      if(!(lastChar>='0'&&lastChar<='9') && !(lastChar=='x' || lastChar== 'X')){

        System.out.println("身份证尾号不合法,请重新输入");

        return false;

      }

      for (int i = 0; i < personID.length()-1; i++) {

        if(!(personID.charAt(i)>='0'&&personID.charAt(i)<='9')){

          System.out.println("身份证号含非法字符,请重新输入");

          return false;

        }

      }

      return true;

    }

    public static boolean checkPhoneNumber(ArrayList<User> userList,String phoneNumber){

      for (int i = 0; i < userList.size(); i++) {

        if(userList.get(i).getPhoneNumber().equals(phoneNumber)){

          System.out.println("手机号已存在,请重新输入");

          return false;

        }

      }

      if(phoneNumber.length()!=11){

        System.out.println("手机号长度不合法,请重新输入");

        return false;

      }

      if(phoneNumber.startsWith("0")){

        System.out.println("手机号不合法,请重新输入");

        return false;

      }

      for (int i = 0; i < phoneNumber.length(); i++) {

        if(!(phoneNumber.charAt(i)>='0'&&phoneNumber.charAt(i)<='9')){

          System.out.println("手机号含非法字符,请重新输入");

          return false;

        }

      }

      return true;

    }

    public static int getUserIndex(ArrayList<User> userList,String username){

      for (int i = 0; i < userList.size(); i++) {

        if(userList.get(i).getUsername().equals(username)){

          return i;

        }

      }

      return -1;

    }

    public static String getCode(){

      Random r = new Random();

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < 4; i++) {

          sb.append((char)(r.nextInt(26)+'a'));

        }

        sb.insert(r.nextInt(4), (char)(r.nextInt(10)+'0'));

        String code = sb.toString();

        System.out.println("验证码为:"+code);

      return sb.toString();

    }

    public static void StudentSystem(ArrayList<Student> studentList){

      while(true){

        menu_2();

        Scanner sc = new Scanner(System.in);

        String choose = sc.next();

        switch (choose){

          case "1" -> addStudent(studentList);

          case "2" -> delStudent(studentList);

          case "3" -> changeStudent(studentList);

          case "4" -> show(studentList);

          case "5" -> {System.out.println("退出"); return;}

          default -> System.out.println("没有这个选项");

        }

      }

    }

    public static void menu_1(){

      System.out.println("欢迎来到学生管理系统");

      System.out.println("1.登录");

      System.out.println("2.注册");

      System.out.println("3.忘记密码");

      System.out.println("请输入你的选择:");

    }

    public static void menu_2(){

      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("请输入你的选择:");

    }

    public static void addStudent(ArrayList<Student> studentList){

      Scanner sc = new Scanner(System.in);

      System.out.println("请输入id:");

      String id = sc.next();

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

      studentList.add(student);

      System.out.println("添加成功");

    }

    public static void delStudent(ArrayList<Student> studentList){

      Scanner sc = new Scanner(System.in);

      System.out.println("请输入要删除的id");

      String id = sc.next();

      int index = getStudentIndex(studentList, id);

      if(index==-1){

        System.out.println("id不存在,删除失败");

      }

      else{

        studentList.remove(index);

        System.out.println("id为:" + id + "的学生删除成功");

      }

    }

    public static void changeStudent(ArrayList<Student> studentList){

      Scanner sc = new Scanner(System.in);

      System.out.println("请输入要修改的id");

      String id = sc.next();

      int index = getStudentIndex(studentList, id);

      if(index==-1){

        System.out.println("id不存在,修改失败");

      }

      else{

        Student student = studentList.get(index);

        System.out.println("请输入姓名");

        String name = sc.next();

        System.out.println("请输入年龄");

        int age = sc.nextInt();

        System.out.println("请输入住址");

        String address = sc.next();

        student.setName(name);

        student.setAge(age);

        student.setAddress(address);

        System.out.println("id为:" + id + "的学生修改成功");

      }

    }

    public static void show(ArrayList<Student> studentList) {

      if(studentList.size()==0){

        System.out.println("当前无学生信息,请添加后再查询");

        return;

      }

      else{

        System.out.println("id\t\t姓名\t年龄\t家庭住址");

        for (int i = 0; i < studentList.size(); i++) {

          Student student = studentList.get(i);

          System.out.println(student.getId()+"\t\t"+student.getName()+"\t"+

          student.getAge()+"\t"+student.getAddress());

        }

        return;

      }

    }

    public static int getStudentIndex(ArrayList<Student> studentList, String id){

      for (int i = 0; i < studentList.size(); i++) {

        Student student = studentList.get(i);

        if(id.equals(student.getId())){

          return i;

        }

      }

      return -1;

    }

}

Student.java

package Java;


public class Student {

    private String id;

    private String name;

    private int age;

    private String address;

    public void setId(String id) {

        this.id = id;

    }

    public void setName(String name) {

        this.name = name;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public Student() {

    }

    public void setAddress(String address) {

        this.address = address;

    }

    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 String getName() {

        return name;

    }

    public int getAge() {

        return age;

    }

    public String getAddress() {

        return address;

    }

}

User.java

package Java;


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 String getPassword() {

        return password;

    }

    public String getPersonID() {

        return personID;

    }

    public String getPhoneNumber() {

        return phoneNumber;

    }

    public void setUsername(String username) {

        this.username = username;

    }

    public void setPassword(String password) {

        this.password = password;

    }

    public void setPersonID(String personID) {

        this.personID = personID;

    }

    public void setPhoneNumber(String phoneNumber) {

        this.phoneNumber = phoneNumber;

    }  

}




Java——学生管理系统的评论 (共 条)

分享到微博请遵守国家法律