java202302java学习笔记第十九天-升级学生管理系统10和验证代码

简介: java202302java学习笔记第十九天-升级学生管理系统10和验证代码

image.png

package StudentSys;
import java.util.ArrayList;
import java.util.Scanner;
public class App {
    public static void main(String[] args) {
        ArrayList<User> list=new ArrayList<>();
        while (true){
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作:1登录 2注册 3忘记密码");
            Scanner sc = new Scanner(System.in);
            String choose = sc.next();
            switch (choose) {
                case "1": {
                    login(list);
                    break;
                }
                case "2": {
                    register(list);
                    break;
                }
                case "3": {
                    forgetPassWord(list);
                    break;
                }
                case "4": {
                    System.out.println("谢谢使用");
                    System.exit(0);
                }
                default:
                    System.out.println("没有这个选项");
            }
        }
    }
    private  static void register(ArrayList<User> list) {
        System.out.println("注册");
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入用户名");
            String username = sc.next();
            //用户名必须是3-15位之间
            boolean flag1 = checkUsername(username);
            if (!flag1) {
                System.out.println("当前格式不满足要求,请重新输入");
                continue;
            }
            boolean flag2 = contains(list, username);
            if (flag2) {
                System.out.println("用户名" + username + "已存在");
                continue;
            } else {
                System.out.println("用户名" + username + "可用");
                break;
            }
        }
        while (true) {
            System.out.println("请输入密码");
            String password = sc.next();
            System.out.println("请再次输入密码");
            String againPassword = sc.next();
            if (!password.equals(againPassword)) {
                System.out.println("两次密码不一致,请重新输入");
                continue;
            } else {
                System.out.println("两次密码一致,请继续输入");
                break;
            }
        }
        //键盘输入身份证号码
        while (true) {
            System.out.println("请输入身份证号码");
            String personId = sc.next();
            boolean flag = checkPersonId(personId);
            if (flag) {
                System.out.println("身份证信息满足条件");
                break;
            } else {
                System.out.println("身份证信息不满足条件");
                continue;
            }
        }
        while (true) {
            System.out.println("请输入手机号码");
            String phoneNumber = sc.next();
            boolean flag=checkNumber(phoneNumber);
            if (flag) {
                System.out.println("手机信息满足条件");
                break;
            } else {
                System.out.println("手机信息不满足条件");
                continue;
            }
        }
    }
    private static boolean checkNumber(String phoneNumber) {
        if(phoneNumber.length()!=11){
            System.out.println("手机号必须是18位数字");
            return false;
        }
        if(phoneNumber.startsWith("0")){
            System.out.println("手机号不能是0开头");
            return false;
        }
        for (int i = 0; i < phoneNumber.length()-1; i++) {
            char c=phoneNumber.charAt(i);
            if(!(c>='0'&&c<='9')){
                return false;
            }
        }
        return true;
    }
    private  static  void login(ArrayList<User> list){
        System.out.println("登录");
    }
    private  static  void forgetPassWord(ArrayList<User> list){
        System.out.println("忘记密码");
    }
    private  static  boolean checkUsername(String username){
        int len=username.length();
        if(len<3||len>15){
            return  false;
        }
        for (int i = 0; i < username.length(); i++) {
            char c=username.charAt(i);
            if(!((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))) {
                return false;
            }
        }
        //用户满足内容要求
        //不能是纯数字
        int count=0;
        for (int i = 0; i < username.length(); i++) {
            char c = username.charAt(i);
            if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) {
                count++;
                break;
            }
        }
        return  count>0;
    }
    private static  boolean checkPersonId(String personId){
        if(personId.length()!=18){
            System.out.println("身份证号必须是18位数字");
            return false;
        }
        if(personId.startsWith("0")){
            System.out.println("身份证号不能是0开头");
            return false;
        }
        for (int i = 0; i < personId.length()-1; i++) {
            char c=personId.charAt(i);
            if(!(c>='0'&&c<='9')){
                return false;
            }
        }
        char endChar=personId.charAt(personId.length()-1);
        if((endChar>='0'&&endChar<='9')||(endChar=='x')||(endChar=='X')){
            return true;
        }else{
            return  false;
        }
    }
    private static  boolean contains(ArrayList<User> list,String username){
        for (int i = 0; i <list.size() ; i++) {
            User user=list.get(i);
           String rightUsername=user.getUsername();
           if(rightUsername.equals(username)){
               return  true;
           }else{
               return false;
           }
        }
        return  false;
    }
}
相关文章
|
8天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
|
30天前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
57 2
|
30天前
|
存储 Java API
键值对魔法:如何优雅地使用Java Map,让代码更简洁?
键值对魔法:如何优雅地使用Java Map,让代码更简洁?
116 2
|
1月前
|
安全 Java API
Java 17新特性让你的代码起飞!
【10月更文挑战第4天】自Java 8发布以来,Java语言经历了多次重大更新,每一次都引入了令人兴奋的新特性,极大地提升了开发效率和代码质量。本文将带你从Java 8一路走到Java 17,探索那些能让你的代码起飞的关键特性。
80 1
|
23天前
|
XML 安全 Java
Java反射机制:解锁代码的无限可能
Java 反射(Reflection)是Java 的特征之一,它允许程序在运行时动态地访问和操作类的信息,包括类的属性、方法和构造函数。 反射机制能够使程序具备更大的灵活性和扩展性
35 5
Java反射机制:解锁代码的无限可能
|
19天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
53 3
|
24天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
68 10
|
20天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
18天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
21天前
|
SQL Java OLAP
java实现“数据平滑升级”
java实现“数据平滑升级”
39 2
下一篇
无影云桌面