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;
    }
}
相关文章
|
2月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
2月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
2月前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
116 4
|
2月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
50 1
|
2月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
3月前
|
移动开发 前端开发 JavaScript
java家政系统成品源码的关键特点和技术应用
家政系统成品源码是已开发完成的家政服务管理软件,支持用户注册、登录、管理个人资料,家政人员信息管理,服务项目分类,订单与预约管理,支付集成,评价与反馈,地图定位等功能。适用于各种规模的家政服务公司,采用uniapp、SpringBoot、MySQL等技术栈,确保高效管理和优质用户体验。
|
3月前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
74 1
|
2月前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
52 0
|
8月前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
330 1
|
Java BI API
在Java代码中打日志需要注意什么?
日志是什么?日志是你在代码运行时打印出来的一些数据和记录,是快速排查问题的好帮手,是撕逼和甩锅的利器!
714 0