当前位置:   article > 正文

用JAVA实现一个学生管理系统和登录系统_java编写简单登录系统程序

java编写简单登录系统程序

目录

一、学生管理系统:

1.创建学生对象Student的javabean类:

2.创建出学生管理系统 StudentSystem类:

1.addStudent方法:添加学生

2.ifOne方法,用来判断我们输入的学生id是否唯一(如果存在学生就不用再添加此学生):

3.queryStudent方法,把我们表中的所有学生显示出来

4.getIndex()如果想修改或者删除特定的学生,先获取要获取学生的索引

5.deletStudent()删除指定学生:

6.updateStudent()修改指定学生

二、注册系统

1.首先创建出User的javabean类

2.注册功能

 2.contains()检查用户名是否存在:

 2.登录功能

1.验证码生成的实现,getcode()

2.checkUserInfo()检查学生的信息是否正确

3.忘记密码功能


 

一、学生管理系统:

1.创建学生对象Student的javabean类:

  1. public class Student {
  2. private String name;
  3. private int id;
  4. private String sex;
  5. private String adress;
  6. public Student() {
  7. }
  8. public Student(String name, int id, String sex, String adress) {
  9. this.name = name;
  10. this.id = id;
  11. this.sex = sex;
  12. this.adress = adress;
  13. }
  14. /**
  15. * 获取
  16. * @return name
  17. */
  18. public String getName() {
  19. return name;
  20. }
  21. /**
  22. * 设置
  23. * @param name
  24. */
  25. public void setName(String name) {
  26. this.name = name;
  27. }
  28. /**
  29. * 获取
  30. * @return id
  31. */
  32. public int getId() {
  33. return id;
  34. }
  35. /**
  36. * 设置
  37. * @param id
  38. */
  39. public void setId(int id) {
  40. this.id = id;
  41. }
  42. /**
  43. * 获取
  44. * @return sex
  45. */
  46. public String getSex() {
  47. return sex;
  48. }
  49. /**
  50. * 设置
  51. * @param sex
  52. */
  53. public void setSex(String sex) {
  54. this.sex = sex;
  55. }
  56. /**
  57. * 获取
  58. * @return adress
  59. */
  60. public String getAdress() {
  61. return adress;
  62. }
  63. /**
  64. * 设置
  65. * @param adress
  66. */
  67. public void setAdress(String adress) {
  68. this.adress = adress;
  69. }
  70. public String toString() {
  71. return "Student{name = " + name + ", id = " + id + ", sex = " + sex + ", adress = " + adress + "}";
  72. }
  73. }

2.创建出学生管理系统 StudentSystem类:

  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3. public class StudentSystem {
  4. public void StartSystem() {
  5. ArrayList<Student> list = new ArrayList<>();
  6. while (true) {
  7. System.out.println("-------欢迎来到学生管理系统-------");
  8. System.out.println("1.添加学生");
  9. System.out.println("2.删除学生");
  10. System.out.println("3.修改学生");
  11. System.out.println("4.查询学生");
  12. System.out.println("5.退出");
  13. System.out.println("请输入您的选择:");
  14. Scanner sc = new Scanner(System.in);
  15. String choose = sc.next();
  16. switch (choose) {
  17. case "1":
  18. addStudent(list);
  19. break;
  20. case "2":
  21. deleteStudent(list);
  22. break;
  23. case "3":
  24. updateStudent(list);
  25. break;
  26. case "4":
  27. queryStudent(list);
  28. break;
  29. case "5": {
  30. System.out.println("退出");
  31. System.exit(0);
  32. break;
  33. }
  34. default:
  35. System.out.println("没有这个选项");
  36. }
  37. }
  38. }

此处还是使用最基础的switch-case进行不同功能的选择,并且此处的储存学生对象的容器选择用Arraylist容器进行书写,此处也可以用Student[]数组进行储存Student的对象!! 

1.addStudent方法:添加学生

public static void addStudent(ArrayList<Student> list){//此处传入我们所创建出来的容器list
    Student s = new Student();
    Scanner sc = new Scanner(System.in);

    System.out.println("请输入学生的id");
    int id = 0;
    while(true) {
        id = sc.nextInt();
        boolean flag = ifOne(list, id);//学生对象是否唯一,用ifOne()方法进行判断
        if (flag) {
            System.out.println("id已经存在请重新录入");
        }else{
            s.setId(id);
            break;
        }
    }

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

    System.out.println("请输入学生的性别");
    String sex = sc.next();
    s.setSex(sex);

    System.out.println("请输入学生的家庭住址");
    String adress = sc.next();
    s.setAdress(adress);

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

}

2.ifOne方法,用来判断我们输入的学生id是否唯一(如果存在学生就不用再添加此学生):

public static boolean ifOne(ArrayList<Student> list,int id){
    for (int i = 0; i < list.size(); i++) {
        Student s = list.get(i);
        int sid = s.getId();
        if(sid==id){
            return true;
        }
    }
    return false;

}

3.queryStudent方法,把我们表中的所有学生显示出来

public static void queryStudent(ArrayList<Student> list){
    if(list.size()==0){
        System.out.println("当前无学生信息,请添加后查询");
        return;
    }

    System.out.println("id\t\t姓名\t年龄\t家庭住址");
    for (int i = 0; i < list.size(); i++) {
        Student stu = list.get(i);
        System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAdress());
    }
}

4.getIndex()如果想修改或者删除特定的学生,先获取要获取学生的索引

 public static int getIndex(ArrayList<Student> list,int id){
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            int sid = stu.getId();
            if (sid==id) {
                return i;
            }
        }
        return -1;
    }
}

这里我们通过id来获取我们所需要要的索引

5.deletStudent()删除指定学生:

public static void deleteStudent(ArrayList<Student> list){
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入您要删除的学生的id");
    int id = sc.nextInt();
    int index = getIndex(list,id);//我们通过getIndex方法来获取所需要删除的下标
    //直接删除:remove
    list.remove(index);
}

6.updateStudent()修改指定学生

public static void updateStudent(ArrayList<Student> list){
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入您要修改的学生的id");
    int id = sc.nextInt();
    //再次获取下标
    int index = getIndex(list,id);
    //开始修改学生的信息
    System.out.println("请输入学生姓名");
    list.get(index).setName(sc.next());
    System.out.println("请输入学生id");
    list.get(index).setId(sc.nextInt());
    System.out.println("请输入学生性别");
    list.get(index).setSex(sc.next());
    System.out.println("请输入学生地址");
    list.get(index).setAdress(sc.next());

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

学生管理系统制作完毕,接下来可以制作管理系统的登录系统。如果只需要学生管理系统,可以把 StudentSystem类中的的startSystem方法改成main方法,可以直接运行学生管理系统。

二、注册系统

1.首先创建出User的javabean类

  1. package StudentManagerSys;
  2. public class User {
  3. private String userName;
  4. private String passWord;
  5. private String personId;
  6. private String phoneNumber;
  7. public User() {}
  8. public User(String userName, String passWord, String personId, String phoneNumber) {
  9. this.userName = userName;
  10. this.passWord = passWord;
  11. this.personId = personId;
  12. this.phoneNumber = phoneNumber;
  13. }
  14. /**
  15. * 获取
  16. * @return userName
  17. */
  18. public String getUserName() {
  19. return userName;
  20. }
  21. /**
  22. * 设置
  23. * @param userName
  24. */
  25. public void setUserName(String userName) {
  26. this.userName = userName;
  27. }
  28. /**
  29. * 获取
  30. * @return passWord
  31. */
  32. public String getPassWord() {
  33. return passWord;
  34. }
  35. /**
  36. * 设置
  37. * @param passWord
  38. */
  39. public void setPassWord(String passWord) {
  40. this.passWord = passWord;
  41. }
  42. /**
  43. * 获取
  44. * @return personId
  45. */
  46. public String getPersonId() {
  47. return personId;
  48. }
  49. /**
  50. * 设置
  51. * @param personId
  52. */
  53. public void setPersonId(String personId) {
  54. this.personId = personId;
  55. }
  56. /**
  57. * 获取
  58. * @return phoneNumber
  59. */
  60. public String getPhoneNumber() {
  61. return phoneNumber;
  62. }
  63. /**
  64. * 设置
  65. * @param phoneNumber
  66. */
  67. public void setPhoneNumber(String phoneNumber) {
  68. this.phoneNumber = phoneNumber;
  69. }
  70. public String toString() {
  71. return "User{userName = " + userName + ", passWord = " + passWord + ", personId = " + personId + ", phoneNumber = " + phoneNumber + "}";
  72. }
  73. }

2.注册功能

注册所需要的具体要求:

1.用户名有以下要求:
  验证要求:
    用户名唯一。
    用户名长度必须在3-15位之间。
    只能是字母加数字的组合,不能是纯数字。
2.键盘输入两次,两次一致可以注册。
3.身份证号码需要验证。
     验证要求:
    长度为18位。
    不能以0开头。
    前17位必须是数字。
    最后一位可以是数字也可以是大写X或小写x
4.手机号验证:
    验证要求:
        长度为11位
        不能以0开头
        必须是纯数字

  1. private static void register(ArrayList<User> list) {
  2. Scanner sc = new Scanner(System.in);
  3. String username;
  4. while (true) {
  5. System.out.println("请输入用户名");
  6. username = sc.next();
  7. // 用户名唯一。
  8. // 用户名长度必须在3-15位之间。
  9. // 只能是字母加数字的组合,不能是纯数字。
  10. boolean flag = checkUsername (username);
  11. if(!flag) {
  12. System.out.println("用户名格式不满足请重新输入");
  13. continue;
  14. }
  15. //校验用户名是否唯一
  16. boolean flag1 = contains(list,username);
  17. if(flag1){
  18. System.out.println("用户名"+username+"重复,请重新输入");
  19. continue;
  20. }else
  21. break;
  22. }
  23. //键盘录入密码
  24. //两次输入的密码一致可成功注册
  25. String password;
  26. while (true) {
  27. System.out.println("请输入要注册的密码");
  28. password = sc.next();
  29. System.out.println("请再输入一遍您的密码");
  30. String aginPassword = sc.next();
  31. if(!password.equals(aginPassword)){
  32. System.out.println("两次密码输入不一致,请重新输入");
  33. continue;
  34. }else{
  35. System.out.println("两次密码一致,继续录入");
  36. break;
  37. }
  38. }
  39. //键盘录入身份证号码
  40. // 长度为18位。
  41. // 不能以0开头。
  42. // 前17位必须是数字。
  43. // 最后一位可以是数字也可以是大写X或小写x
  44. String personId;
  45. while (true) {
  46. System.out.println("请输入身份证号码");
  47. personId = sc.next();
  48. boolean flag2 = checkPersonId(personId);
  49. if(flag2){
  50. System.out.println("身份证号码满足要求");
  51. break;
  52. }else{
  53. System.out.println("请重新输入");
  54. continue;
  55. }
  56. }
  57. //键盘录入手机号码
  58. // 验证要求:
  59. // 长度为11位
  60. // 不能以0开头
  61. // 必须是纯数字
  62. String phoneNumber;
  63. while (true) {
  64. System.out.println("请输入手机号码");
  65. phoneNumber = sc.next();
  66. boolean flag3 = checkPhonenumber(phoneNumber);
  67. if(flag3){
  68. System.out.println("手机号满足要求");
  69. break;
  70. }else{
  71. System.out.println("不满足要求,请重新输入");
  72. continue;
  73. }
  74. }
  75. User u = new User(username,password,personId,phoneNumber);
  76. list.add(u);
  77. System.out.println("注册成功");
  78. }

1.checkUsername():检查用户名是否符合要求

  1. private static boolean checkUsername(String username) {
  2. int length = username.length();
  3. if(length<3||length>15){
  4. return false;
  5. }
  6. //只能是字母加数字的组合,不能是纯数字
  7. //循环得到每一个字符,如果有一个不是字母或者数字,return false
  8. for (int i = 0; i < username.length(); i++) {
  9. char c = username.charAt(i);
  10. if(!((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))) {
  11. return false;
  12. }
  13. }
  14. //用户名满足长度内容满足要求
  15. //统计再用户名中有多少个字母
  16. int cnt = 0;
  17. for (int i = 0; i <length; i++) {
  18. char c = username.charAt(i);
  19. if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) {
  20. cnt++;
  21. break;
  22. }
  23. }
  24. return cnt>0;
  25. }

 2.contains()检查用户名是否存在:

  1. private static boolean contains(ArrayList<User> list, String username) {
  2. for (int i = 0; i < list.size(); i++) {
  3. if(list.get(i).getUserName().equals(username)){
  4. return true;
  5. }
  6. }
  7. return false;
  8. }

3.checkPersonId()检查身份证号是否符合要求:

  1. private static boolean checkPersonId(String personId) {
  2. int length = personId.length();
  3. //不是0开头,并且18位
  4. if(length!=18||personId.charAt(0)==0){
  5. return false;
  6. }
  7. //判断前十七位
  8. for (int i = 0; i < personId.length()-1; i++) {
  9. if(!(personId.charAt(i)>='0'&&personId.charAt(i)<='9'))
  10. {
  11. return false;
  12. }
  13. }
  14. if(!((personId.charAt(length-1)>='0'&&personId.charAt(length-1)<='9')||(personId.charAt(length-1)=='X'||personId.charAt(length-1)=='x')))
  15. {
  16. return false;
  17. }
  18. return true;
  19. }

4.checkPhoneNumber()检查手机号是否符合要求:

  1. private static boolean checkPhonenumber(String phoneNumber) {
  2. int length = phoneNumber.length();
  3. //不是0开头,并且18位
  4. if(length!=11||phoneNumber.charAt(0)==0){
  5. return false;
  6. }
  7. for (int i = 0; i < phoneNumber.length(); i++) {
  8. if(!(phoneNumber.charAt(i)>='0'&&phoneNumber.charAt(i)<='9'))
  9. {
  10. return false;
  11. }
  12. }
  13. return true;
  14. }

 2.登录功能

1.键盘录入用户名
    2.键盘录入密码
    3.键盘录入验证码
    验证要求
    用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
    判断验证码是否正确,如果不正确,请重新输入。
    再判断用户名和密码是否正确,有3次机会
    忘记密码
    1.键盘录入用户名,判断当前用户名是否存在,如果不存在,直接结束,提示:未注册
    2.键盘录入身份证号码和手机号码
    3.判断当前用户的身份证号码和手机号码是否一致。
        如果一致,提示输入密码,进行修改
        如果不一致,账号信息不匹配,修改失败
    验证码规则:
        长度为5
        由4位大写或者小写字母和1位数字组成,同一个字母可重复。
        数字可以出现在任何位置
     比如
        aQa1k1

  1. private static void login(ArrayList<User> list) {
  2. Scanner sc = new Scanner(System.in);
  3. for (int i = 0; i < 3; i++) {
  4. System.out.println("请输入用户名");
  5. String username = sc.next();
  6. boolean flag = contains(list, username);
  7. if (!flag) {
  8. System.out.println("用户名" + username + "未注册,请先注册再登录");
  9. return;
  10. }
  11. System.out.println("请输入密码");
  12. String password = sc.next();
  13. while (true) {
  14. String rightcode = getCode();
  15. System.out.println("当前正确的验证码为" + rightcode);
  16. System.out.println("请输入验证码");
  17. String code = sc.next();
  18. if (code.equalsIgnoreCase(rightcode)) {
  19. System.out.println("验证码正确");
  20. break;
  21. } else {
  22. System.out.println("验证码错误");
  23. continue;
  24. }
  25. }
  26. //验证用户名密码是否正确
  27. //封装思想,把一些零散的数据,封装成一个对象
  28. //传递一个整体,不用传零散的数据
  29. User userInfo = new User(username, password, null, null);
  30. boolean flag1 = checkUserInfo(list, userInfo);
  31. if (flag1) {
  32. System.out.println("登录成功,可以开始使用学生管理系统");
  33. StudentSystem ss = new StudentSystem();
  34. ss.StartSystem();
  35. } else {
  36. if(i==2) {
  37. System.out.println("当前账号"+username+"被锁定,请联系客服人员");
  38. return;
  39. }else{
  40. System.out.println("用户名或密码错误,还剩下"+(2-i)+"次机会");
  41. }
  42. }
  43. }
  44. }

 总共有三次登陆的机会,机会用完退出程序:用for循环控制。

切记不能把getcode重复使用,这样会与前面的rightCode不一致,导致验证码无论如何都是错误的,写成上方的形式

while (true) {
    String rightcode = getCode();
    System.out.println("当前正确的验证码为" + getCode());
    System.out.println("请输入验证码");
    String code = sc.next();

    if (code.equalsIgnoreCase(rightcode)) {
        System.out.println("验证码正确");
        break;
    } else {

        System.out.println("验证码错误");
        continue;
    }
}

1.验证码生成的实现,getcode()

  1. private static String getCode(){
  2. ArrayList<Character> list=new ArrayList<>();
  3. for (int i = 0; i < 26; i++) {
  4. list.add((char)('a'+i));//小写
  5. list.add((char)('A'+i));//大写
  6. }
  7. StringBuilder sb = new StringBuilder();
  8. Random r = new Random();
  9. for (int i = 0; i < 4; i++) {
  10. int index = r.nextInt(list.size());
  11. char c = list.get(index);
  12. sb.append(c);
  13. }
  14. int number = r.nextInt(10);
  15. sb.append(number);
  16. char[] arr = sb.toString().toCharArray();
  17. int randomIndex = r.nextInt(arr.length);
  18. char temp = arr[randomIndex];
  19. arr[randomIndex] = arr[arr.length-1];
  20. arr[arr.length-1] = temp;
  21. return new String(arr);
  22. }
  23. }

先用Arraylist容器把所有的字母大小写存入list中,再通过StringBuilder将字母重新排序,单独的数字在进行交换,最后获得验证码字符串。

2.checkUserInfo()检查学生的信息是否正确

  1. private static boolean checkUserInfo(ArrayList<User> list,User userInfo) {
  2. for (int i = 0; i < list.size(); i++) {
  3. if(list.get(i).getUserName().equals(userInfo.getUserName())&&list.get(i).getPassWord().equals(userInfo.getPassWord())){
  4. return true;
  5. }
  6. }
  7. return false;
  8. }

登录成功就可以创建StudentSystem对象,调用startSystem方法,启动学生管理系统了!!

3.忘记密码功能

三、忘记密码
    1.键盘录入用户名,判断当前用户名是否存在,如果不存在,直接结束方法,并提示未注册。
    2.键盘录入身份证号和手机号码
    3.判断当前用户的身份证号和手机号是否一致。
        如果一致,提示输入密码,进行修改
        如果不一致,提示:账号信息不匹配,修改失败

  1. private static void forgetpassword(ArrayList<User> list) {
  2. Scanner sc = new Scanner(System.in);
  3. System.out.println("请输入用户名");
  4. String username = sc.next();
  5. boolean flag = contains(list,username);
  6. if (!flag){
  7. System.out.println("当前用户"+username+"未注册,请先注册");
  8. return;
  9. }
  10. //键盘录入身份证号码和手机号码
  11. System.out.println("请输入身份证号码");
  12. String personId = sc.next();
  13. System.out.println("请输入手机号码");
  14. String phoneNumber = sc.next();
  15. //判断是否和用户对象中的身份证号码和手机号码是否相同
  16. //用户对象通过索引获取出来
  17. int index = findIndex(list,username);
  18. User user = list.get(index);
  19. if(!(user.getPersonId().equalsIgnoreCase(personId)&&user.getPhoneNumber().equals(phoneNumber))){
  20. System.out.println("身份证号或手机号输入不正确");
  21. return;
  22. }
  23. //所有的数据验证成功,直接修改
  24. String passWord;
  25. while (true) {
  26. System.out.println("请输入新的密码");
  27. passWord =sc.next();
  28. System.out.println("请重新输入一遍");
  29. String aginPassword = sc.next();
  30. if(passWord.equals(aginPassword)){
  31. System.out.println("两次密码输入一致");
  32. break;
  33. }else{
  34. System.out.println("输入不一致");
  35. continue;
  36. }
  37. }
  38. user.setPassWord(passWord);
  39. System.out.println("密码修改成功!");
  40. }

完整的代码:

Student类javabean类:

  1. package StudentManagerSys;
  2. public class Student {
  3. private String name;
  4. private int id;
  5. private String sex;
  6. private String adress;
  7. public Student() {
  8. }
  9. public Student(String name, int id, String sex, String adress) {
  10. this.name = name;
  11. this.id = id;
  12. this.sex = sex;
  13. this.adress = adress;
  14. }
  15. /**
  16. * 获取
  17. * @return name
  18. */
  19. public String getName() {
  20. return name;
  21. }
  22. /**
  23. * 设置
  24. * @param name
  25. */
  26. public void setName(String name) {
  27. this.name = name;
  28. }
  29. /**
  30. * 获取
  31. * @return id
  32. */
  33. public int getId() {
  34. return id;
  35. }
  36. /**
  37. * 设置
  38. * @param id
  39. */
  40. public void setId(int id) {
  41. this.id = id;
  42. }
  43. /**
  44. * 获取
  45. * @return sex
  46. */
  47. public String getSex() {
  48. return sex;
  49. }
  50. /**
  51. * 设置
  52. * @param sex
  53. */
  54. public void setSex(String sex) {
  55. this.sex = sex;
  56. }
  57. /**
  58. * 获取
  59. * @return adress
  60. */
  61. public String getAdress() {
  62. return adress;
  63. }
  64. /**
  65. * 设置
  66. * @param adress
  67. */
  68. public void setAdress(String adress) {
  69. this.adress = adress;
  70. }
  71. public String toString() {
  72. return "Student{name = " + name + ", id = " + id + ", sex = " + sex + ", adress = " + adress + "}";
  73. }
  74. }

User类的javabean类:

  1. package StudentManagerSys;
  2. public class User {
  3. private String userName;
  4. private String passWord;
  5. private String personId;
  6. private String phoneNumber;
  7. public User() {}
  8. public User(String userName, String passWord, String personId, String phoneNumber) {
  9. this.userName = userName;
  10. this.passWord = passWord;
  11. this.personId = personId;
  12. this.phoneNumber = phoneNumber;
  13. }
  14. /**
  15. * 获取
  16. * @return userName
  17. */
  18. public String getUserName() {
  19. return userName;
  20. }
  21. /**
  22. * 设置
  23. * @param userName
  24. */
  25. public void setUserName(String userName) {
  26. this.userName = userName;
  27. }
  28. /**
  29. * 获取
  30. * @return passWord
  31. */
  32. public String getPassWord() {
  33. return passWord;
  34. }
  35. /**
  36. * 设置
  37. * @param passWord
  38. */
  39. public void setPassWord(String passWord) {
  40. this.passWord = passWord;
  41. }
  42. /**
  43. * 获取
  44. * @return personId
  45. */
  46. public String getPersonId() {
  47. return personId;
  48. }
  49. /**
  50. * 设置
  51. * @param personId
  52. */
  53. public void setPersonId(String personId) {
  54. this.personId = personId;
  55. }
  56. /**
  57. * 获取
  58. * @return phoneNumber
  59. */
  60. public String getPhoneNumber() {
  61. return phoneNumber;
  62. }
  63. /**
  64. * 设置
  65. * @param phoneNumber
  66. */
  67. public void setPhoneNumber(String phoneNumber) {
  68. this.phoneNumber = phoneNumber;
  69. }
  70. public String toString() {
  71. return "User{userName = " + userName + ", passWord = " + passWord + ", personId = " + personId + ", phoneNumber = " + phoneNumber + "}";
  72. }
  73. }
StudentSystem类:
  1. package StudentManagerSys;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4. public class StudentSystem {
  5. public void StartSystem() {
  6. ArrayList<Student> list = new ArrayList<>();
  7. while (true) {
  8. System.out.println("-------欢迎来到学生管理系统-------");
  9. System.out.println("1.添加学生");
  10. System.out.println("2.删除学生");
  11. System.out.println("3.修改学生");
  12. System.out.println("4.查询学生");
  13. System.out.println("5.退出");
  14. System.out.println("请输入您的选择:");
  15. Scanner sc = new Scanner(System.in);
  16. String choose = sc.next();
  17. switch (choose) {
  18. case "1":
  19. addStudent(list);
  20. break;
  21. case "2":
  22. deleteStudent(list);
  23. break;
  24. case "3":
  25. updateStudent(list);
  26. break;
  27. case "4":
  28. queryStudent(list);
  29. break;
  30. case "5": {
  31. System.out.println("退出");
  32. System.exit(0);
  33. break;
  34. }
  35. default:
  36. System.out.println("没有这个选项");
  37. }
  38. }
  39. }
  40. //添加学生
  41. public static void addStudent(ArrayList<Student> list){
  42. Student s = new Student();
  43. Scanner sc = new Scanner(System.in);
  44. System.out.println("请输入学生的id");
  45. int id = 0;
  46. while(true) {
  47. id = sc.nextInt();
  48. boolean flag = ifOne(list, id);
  49. if (flag) {
  50. System.out.println("id已经存在请重新录入");
  51. }else{
  52. s.setId(id);
  53. break;
  54. }
  55. }
  56. System.out.println("请输入学生的姓名");
  57. String name = sc.next();
  58. s.setName(name);
  59. System.out.println("请输入学生的性别");
  60. String sex = sc.next();
  61. s.setSex(sex);
  62. System.out.println("请输入学生的家庭住址");
  63. String adress = sc.next();
  64. s.setAdress(adress);
  65. list.add(s);
  66. System.out.println("添加成功");
  67. }
  68. public static void deleteStudent(ArrayList<Student> list){
  69. Scanner sc = new Scanner(System.in);
  70. System.out.println("请输入您要删除的学生的id");
  71. int id = sc.nextInt();
  72. int index = getIndex(list,id);//我们通过getIndex方法来获取所需要删除的下标
  73. //直接删除:remove
  74. list.remove(index);
  75. System.out.println("删除成功");
  76. }
  77. public static void updateStudent(ArrayList<Student> list){
  78. Scanner sc = new Scanner(System.in);
  79. System.out.println("请输入您要修改的学生的id");
  80. int id = sc.nextInt();
  81. //再次获取下标
  82. int index = getIndex(list,id);
  83. //开始修改学生的信息
  84. System.out.println("请输入学生姓名");
  85. list.get(index).setName(sc.next());
  86. System.out.println("请输入学生id");
  87. list.get(index).setId(sc.nextInt());
  88. System.out.println("请输入学生性别");
  89. list.get(index).setSex(sc.next());
  90. System.out.println("请输入学生地址");
  91. list.get(index).setAdress(sc.next());
  92. System.out.println("修改成功");
  93. }
  94. //查询学生
  95. public static void queryStudent(ArrayList<Student> list){
  96. if(list.size()==0){
  97. System.out.println("当前无学生信息,请添加后查询");
  98. return;
  99. }
  100. System.out.println("id\t\t姓名\t年龄\t家庭住址");
  101. for (int i = 0; i < list.size(); i++) {
  102. Student stu = list.get(i);
  103. System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAdress());
  104. }
  105. }
  106. public static boolean ifOne(ArrayList<Student> list,int id){
  107. for (int i = 0; i < list.size(); i++) {
  108. Student s = list.get(i);
  109. int sid = s.getId();
  110. if(sid==id){
  111. return true;
  112. }
  113. }
  114. return false;
  115. }
  116. public static int getIndex(ArrayList<Student> list,int id){
  117. for (int i = 0; i < list.size(); i++) {
  118. Student stu = list.get(i);
  119. int sid = stu.getId();
  120. if (sid==id) {
  121. return i;
  122. }
  123. }
  124. return -1;
  125. }
  126. }

App类:

  1. package StudentManagerSys;
  2. import java.util.ArrayList;
  3. import java.util.Random;
  4. import java.util.Scanner;
  5. public class App {
  6. public static void main(String[] args) {
  7. Scanner sc = new Scanner(System.in);
  8. ArrayList<User> list = new ArrayList<>();
  9. while (true) {
  10. System.out.println("欢迎来到学生管理系统");
  11. System.out.println("请选择:1登录 2.注册 3.忘记密码");
  12. String choose = sc.next();
  13. switch(choose){
  14. case "1":
  15. login(list);
  16. break;
  17. case "2":
  18. register(list);
  19. break;
  20. case "3":
  21. forgetpassword(list);
  22. break;
  23. case "4": {
  24. System.out.println("感谢使用");
  25. System.exit(0);
  26. }
  27. default:
  28. System.out.println("没有此选项");
  29. break;
  30. }
  31. }
  32. }
  33. private static void forgetpassword(ArrayList<User> list) {
  34. Scanner sc = new Scanner(System.in);
  35. System.out.println("请输入用户名");
  36. String username = sc.next();
  37. boolean flag = contains(list,username);
  38. if (!flag){
  39. System.out.println("当前用户"+username+"未注册,请先注册");
  40. return;
  41. }
  42. //键盘录入身份证号码和手机号码
  43. System.out.println("请输入身份证号码");
  44. String personId = sc.next();
  45. System.out.println("请输入手机号码");
  46. String phoneNumber = sc.next();
  47. //判断是否和用户对象中的身份证号码和手机号码是否相同
  48. //用户对象通过索引获取出来
  49. int index = findIndex(list,username);
  50. User user = list.get(index);
  51. if(!(user.getPersonId().equalsIgnoreCase(personId)&&user.getPhoneNumber().equals(phoneNumber))){
  52. System.out.println("身份证号或手机号输入不正确");
  53. return;
  54. }
  55. //所有的数据验证成功,直接修改
  56. String passWord;
  57. while (true) {
  58. System.out.println("请输入新的密码");
  59. passWord =sc.next();
  60. System.out.println("请重新输入一遍");
  61. String aginPassword = sc.next();
  62. if(passWord.equals(aginPassword)){
  63. System.out.println("两次密码输入一致");
  64. break;
  65. }else{
  66. System.out.println("输入不一致");
  67. continue;
  68. }
  69. }
  70. user.setPassWord(passWord);
  71. System.out.println("密码修改成功!");
  72. }
  73. private static int findIndex(ArrayList<User> list, String username) {
  74. for (int i = 0; i < list.size(); i++) {
  75. User u = list.get(i);
  76. if(u.getUserName().equals(username)){
  77. return i;
  78. }
  79. }
  80. return -1;
  81. }
  82. private static void register(ArrayList<User> list) {
  83. Scanner sc = new Scanner(System.in);
  84. String username;
  85. while (true) {
  86. System.out.println("请输入用户名");
  87. username = sc.next();
  88. // 用户名唯一。
  89. // 用户名长度必须在3-15位之间。
  90. // 只能是字母加数字的组合,不能是纯数字。
  91. boolean flag = checkUsername (username);
  92. if(!flag) {
  93. System.out.println("用户名格式不满足请重新输入");
  94. continue;
  95. }
  96. //校验用户名是否唯一
  97. boolean flag1 = contains(list,username);
  98. if(flag1){
  99. System.out.println("用户名"+username+"重复,请重新输入");
  100. continue;
  101. }else
  102. break;
  103. }
  104. //键盘录入密码
  105. //两次输入的密码一致可成功注册
  106. String password;
  107. while (true) {
  108. System.out.println("请输入要注册的密码");
  109. password = sc.next();
  110. System.out.println("请再输入一遍您的密码");
  111. String aginPassword = sc.next();
  112. if(!password.equals(aginPassword)){
  113. System.out.println("两次密码输入不一致,请重新输入");
  114. continue;
  115. }else{
  116. System.out.println("两次密码一致,继续录入");
  117. break;
  118. }
  119. }
  120. //键盘录入身份证号码
  121. // 长度为18位。
  122. // 不能以0开头。
  123. // 前17位必须是数字。
  124. // 最后一位可以是数字也可以是大写X或小写x
  125. String personId;
  126. while (true) {
  127. System.out.println("请输入身份证号码");
  128. personId = sc.next();
  129. boolean flag2 = checkPersonId(personId);
  130. if(flag2){
  131. System.out.println("身份证号码满足要求");
  132. break;
  133. }else{
  134. System.out.println("请重新输入");
  135. continue;
  136. }
  137. }
  138. //键盘录入手机号码
  139. // 验证要求:
  140. // 长度为11位
  141. // 不能以0开头
  142. // 必须是纯数字
  143. String phoneNumber;
  144. while (true) {
  145. System.out.println("请输入手机号码");
  146. phoneNumber = sc.next();
  147. boolean flag3 = checkPhonenumber(phoneNumber);
  148. if(flag3){
  149. System.out.println("手机号满足要求");
  150. break;
  151. }else{
  152. System.out.println("不满足要求,请重新输入");
  153. continue;
  154. }
  155. }
  156. User u = new User(username,password,personId,phoneNumber);
  157. list.add(u);
  158. System.out.println("注册成功");
  159. }
  160. private static boolean checkPhonenumber(String phoneNumber) {
  161. int length = phoneNumber.length();
  162. //不是0开头,并且18位
  163. if(length!=11||phoneNumber.charAt(0)==0){
  164. return false;
  165. }
  166. for (int i = 0; i < phoneNumber.length(); i++) {
  167. if(!(phoneNumber.charAt(i)>='0'&&phoneNumber.charAt(i)<='9'))
  168. {
  169. return false;
  170. }
  171. }
  172. return true;
  173. }
  174. private static boolean checkPersonId(String personId) {
  175. int length = personId.length();
  176. //不是0开头,并且18位
  177. if(length!=18||personId.charAt(0)==0){
  178. return false;
  179. }
  180. //判断前十七位
  181. for (int i = 0; i < personId.length()-1; i++) {
  182. if(!(personId.charAt(i)>='0'&&personId.charAt(i)<='9'))
  183. {
  184. return false;
  185. }
  186. }
  187. if(!((personId.charAt(length-1)>='0'&&personId.charAt(length-1)<='9')||(personId.charAt(length-1)=='X'||personId.charAt(length-1)=='x')))
  188. {
  189. return false;
  190. }
  191. return true;
  192. }
  193. private static boolean contains(ArrayList<User> list, String username) {
  194. for (int i = 0; i < list.size(); i++) {
  195. if(list.get(i).getUserName().equals(username)){
  196. return true;
  197. }
  198. }
  199. return false;
  200. }
  201. //判断用户名是否符合要求
  202. private static boolean checkUsername(String username) {
  203. int length = username.length();
  204. if(length<3||length>15){
  205. return false;
  206. }
  207. //只能是字母加数字的组合,不能是纯数字
  208. //循环得到每一个字符,如果有一个不是字母或者数字,return false
  209. for (int i = 0; i < username.length(); i++) {
  210. char c = username.charAt(i);
  211. if(!((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))) {
  212. return false;
  213. }
  214. }
  215. //用户名满足长度内容满足要求
  216. //统计再用户名中有多少个字母
  217. int cnt = 0;
  218. for (int i = 0; i <length; i++) {
  219. char c = username.charAt(i);
  220. if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) {
  221. cnt++;
  222. break;
  223. }
  224. }
  225. return cnt>0;
  226. }
  227. private static void login(ArrayList<User> list) {
  228. Scanner sc = new Scanner(System.in);
  229. for (int i = 0; i < 3; i++) {
  230. System.out.println("请输入用户名");
  231. String username = sc.next();
  232. boolean flag = contains(list, username);
  233. if (!flag) {
  234. System.out.println("用户名" + username + "未注册,请先注册再登录");
  235. return;
  236. }
  237. System.out.println("请输入密码");
  238. String password = sc.next();
  239. while (true) {
  240. String rightcode = getCode();
  241. System.out.println("当前正确的验证码为" + rightcode);
  242. System.out.println("请输入验证码");
  243. String code = sc.next();
  244. if (code.equalsIgnoreCase(rightcode)) {
  245. System.out.println("验证码正确");
  246. break;
  247. } else {
  248. System.out.println("验证码错误");
  249. continue;
  250. }
  251. }
  252. //验证用户名密码是否正确
  253. //封装思想,把一些零散的数据,封装成一个对象
  254. //传递一个整体,不用传零散的数据
  255. User userInfo = new User(username, password, null, null);
  256. boolean flag1 = checkUserInfo(list, userInfo);
  257. if (flag1) {
  258. System.out.println("登录成功,可以开始使用学生管理系统");
  259. StudentSystem ss = new StudentSystem();
  260. ss.StartSystem();
  261. } else {
  262. if(i==2) {
  263. System.out.println("当前账号"+username+"被锁定,请联系客服人员");
  264. return;
  265. }else{
  266. System.out.println("用户名或密码错误,还剩下"+(2-i)+"次机会");
  267. }
  268. }
  269. }
  270. }
  271. private static boolean checkUserInfo(ArrayList<User> list,User userInfo) {
  272. for (int i = 0; i < list.size(); i++) {
  273. if(list.get(i).getUserName().equals(userInfo.getUserName())&&list.get(i).getPassWord().equals(userInfo.getPassWord())){
  274. return true;
  275. }
  276. }
  277. return false;
  278. }
  279. //生成一个验证码
  280. // 验证码规则:
  281. // 长度为5
  282. // 由4位大写或者小写字母和1位数字组成,同一个字母可重复。
  283. // 数字可以出现在任何位置
  284. private static String getCode(){
  285. ArrayList<Character> list=new ArrayList<>();
  286. for (int i = 0; i < 26; i++) {
  287. list.add((char)('a'+i));//小写
  288. list.add((char)('A'+i));//大写
  289. }
  290. StringBuilder sb = new StringBuilder();
  291. Random r = new Random();
  292. for (int i = 0; i < 4; i++) {
  293. int index = r.nextInt(list.size());
  294. char c = list.get(index);
  295. sb.append(c);
  296. }
  297. int number = r.nextInt(10);
  298. sb.append(number);
  299. char[] arr = sb.toString().toCharArray();
  300. int randomIndex = r.nextInt(arr.length);
  301. char temp = arr[randomIndex];
  302. arr[randomIndex] = arr[arr.length-1];
  303. arr[arr.length-1] = temp;
  304. return new String(arr);
  305. }
  306. }

有帮助的话,大家可以点个赞鼓励一下,这也是我的第一个博客

                                        

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/67535
推荐阅读
相关标签
  

闽ICP备14008679号