登录注册界面

news2024/9/21 0:52:28

T1、编程设计理工超市功能菜单并完成注册和登录功能的实现。      

显示完菜单后,提示用户输入菜单项序号。当用户输入<注册>和<登录>菜单序号时模拟完成注册和登录功能,最后提示注册/登录成功并显示注册信息/欢迎XXX登录。当用户输入其他菜单项序号时,这输出“该功能暂未实现,请期待...”。要求利用无限循环让用户可以不断选择功能菜单,只有当用户输入<退出>菜单序号时才退出循环结束程序。

package com.cx.encap;
import java.util.Scanner;
public class Login {
    public static void main(String[] args) {
        //创建Scanner对象,用于输入
        Scanner input = new Scanner(System.in);
        String userName = "";//用户名
        String pwd = "";//密码
        boolean isRegister = false;//是否注册,false表示未注册

        while (true) {
            System.out.println("===================欢迎来到理工超市管理系统===================");
            System.out.println("1.用户注册    2.用户登录    3.浏览商品   4.查看商品详情");
            System.out.println("5.加入购物车  6.查看购物车  7.结算       8.退出");
            System.out.println("==============================================================");

            System.out.print("请输入菜单项序号:");
            int choice = input.nextInt();

            switch (choice) {
                case 1:  //注册
                    //用户注册提示信息
                    System.out.println("用户注册");
                    //输入用户名
                    System.out.print("请输入用户名:");
                    userName = input.next();
                    //输入密码
                    System.out.print("请输入密码:");
                    pwd = input.next();
                    //再次输入密码
                    System.out.print("请再次输入密码:");
                    String cfmPwd = input.next();
                    //判断两次输入的密码是否一致,如不一致需重新输入
                    while (!cfmPwd.equals(pwd)) {
                        //提示信息:两次输入的密码不一致
                        System.out.println("两次密码输入不同,请重新输入:");
                        //重新输入密码
                        System.out.print("请输入密码:");
                        pwd = input.next();
                        System.out.print("请再次输入密码:");
                        cfmPwd = input.next();
                    }
                    //checkNumber为验证码  一个随机四位数
                    //0=<Math.random()<1  double类型
                    //0=<Math.random()*9000<9000  double类型
                    //0=<(int)(Math.random()*9000)=<8999  int类型
                    //1000=<(int)(Math.random()*9000)+1000=<9999  int类型
                    int checkNumber = (int) (Math.random() * 9000) + 1000;
                    //提示信息:请输入验证码
                    System.out.println("请输入验证码:" + checkNumber);
                    //输入验证码
                    int checkedNum = input.nextInt();
                    //判断验证码是否正确
                    //若验证码错误,需重新输入验证码
                    while (checkNumber != checkedNum) {
                        //提示信息:验证码输入错误,请重新输入验证码
                        System.out.println("验证码输入错误,请重新输入验证码");
                        //提示信息:请输入验证码
                        checkNumber = (int) (Math.random() * 9000) + 1000;
                        System.out.println("请输入验证码:" + checkNumber);
                        //输入验证码
                        checkedNum = input.nextInt();
                    }
                    System.out.println("注册成功!");
                    isRegister = true;
                    continue;
                case 2:  //登录
                    System.out.println("用户登录");
                    //判断是否注册,如果未注册,请先注册再登录
                    //未注册时,isRegister=false
                    //!isRegister=true
                    if (!isRegister) {
                        System.out.println("请先注册再登录");
                    }
                    //isRegister=true时,表示已经注册
                    //三次验证登录
                    for (int i = 0; i < 3; i++) {
                        //提示信息:请输入登录的用户名
                        System.out.print("请输入登录的用户名:");
                        String uName = input.next();
                        //提示信息:请输入登录的密码
                        System.out.print("请输入登录的密码:");
                        String uPwd = input.next();
                        //判断用户名和密码是否正确
                        if (uName.equals(userName) && uPwd.equals(pwd)) {
                            System.out.println("登录成功!欢迎" + userName + "登录!");
                            break;//登录成功,则跳出for循环
                        } else {
                            if (i < 2) {
                                System.out.println("用户名或者密码错误,您还有" +
                                        (2 - i) + "次机会,请重新输入");
                            } else {
                                System.out.println("三次均输入错误用户名或密码");
                            }
                        }
                    }
                    continue;
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                    System.out.println("该功能暂未实现,请期待...");
                    continue;
                case 8:  //退出
                    System.out.println("退出");
                    System.exit(0);//退出程序
                default:
                    System.out.println("输入错误,请重新输入...");
                    continue;
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1546433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝牙信标定位精度

蓝牙信标定位精度受到多种因素的影响&#xff0c;包括设备硬件、环境因素以及信号干扰等。因此&#xff0c;蓝牙信标的精度并不是固定的&#xff0c;而是会在一定范围内波动。 在我们实际应用过程中&#xff0c;蓝牙信标的精度通常可以做到2-5米。本文重点介绍下影响蓝牙信标精…

NVIDIA A100 NVLink 和 NVIDIA A100 PCIe的区别?

NVIDIA A100 NVLink 和 NVIDIA A100 PCIe 是两种不同连接方式的 NVIDIA A100 GPU。 NVIDIA A100 NVLink: 这种版本的 A100 GPU 使用 NVLink 连接方式&#xff0c;可以实现更高的带宽和更低的延迟。NVLink 是 NVIDIA 的一种专有连接技术&#xff0c;用于连接多个 GPU&#xff0c…

深度学习的发展历史(深度学习入门、学习指导)

目录 &#x1f3c0;前言 ⚽历史 第一代神经网络&#xff08;1958-1969&#xff09; 第二代神经网络&#xff08;1986-1998&#xff09; 统计学习方法的春天&#xff08;1986-2006&#xff09; 第三代神经网络——DL&#xff08;2006-至今&#xff09; &#x1f3d0;总结…

【实战】服务隐藏与排查 | Windows 应急响应

0x00 简介 攻击者通过创建服务进行权限维持过程中&#xff0c;常常会通过一些手段隐藏服务&#xff0c;本文主要演示通过配置访问控制策略来实现隐藏的方式以及排查方法的探索 不包含通过修改内存中链表进行隐藏的方式 0x01 创建服务 直接选择默认的 XblGameSave 服务&…

JDK8中ArrayList扩容机制

前言 这是基于JDK8的源码分析&#xff0c;在JDK6之前以及JDK11之后细节均有变动&#xff01;&#xff01; 首先来看ArrayList的构造方法 public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Seriali…

C语言-如何判断当前环境是大端存储还是小端存储

编写一个代码&#xff0c;判断当前环境是大端存储还是小端存储。 代码一&#xff1a; #include<stdio.h> int hanshu(int x) {int *p;p&x;return *(char*)p; } int main() {int a1; //00000001或者01000000if(hanshu(a)1){printf("小端存储");}else …

Spring设计模式-实战篇之单例模式

实现案例&#xff0c;饿汉式 Double-Check机制 synchronized锁 /*** 以饿汉式为例* 使用Double-Check保证线程安全*/ public class Singleton {// 使用volatile保证多线程同一属性的可见性和指令重排序private static volatile Singleton instance;public static Singleton …

Ubuntu20.04修改屏幕分辨率

Ubuntu20.04修改屏幕分辨率 使用命令行语句修改屏幕分辨率,并解决"xrandr: Configure crtc 0 failed"报错。 方法一 打开终端,输入xrandr,找到你当前使用的分辨率,比如1920x1080输入cvt 1920 1080,获取该分辨率的有效扫描频率输入sudo xrandr --newmode "…

秋招刷题2

1.字符串分割 public static void main(String[] args) {Scanner scnew Scanner(System.in);while(sc.hasNext()){String strsc.nextLine();StringBuilder sbnew StringBuilder();sb.append(str);int sizestr.length();int addZero8-size%8;while((addZero>0&&(addZ…

黑马鸿蒙学习(3):滑动条

1&#xff09; 滑动条slidebar属性&#xff1a;

安踏与耐克的赛场,不止在中国

安踏与耐克的赛场&#xff0c;不止在中国 文 | 螳螂观察 作者 | 易不二 2024年以来安踏集团喜讯不断。 继2月初亚玛芬登陆纽交所&#xff0c;成为北美资本市场2023年9月以来规模最大的IPO之后&#xff0c;安踏在近日又提交了一份再创历史新高的年报。从具体的财报数据来看&…

算法笔记~—位运算

目录 常见位运算&#xff1a; 1、基础位运算 2、对于一个数n。确定、修改这个数n二进制x位。 3、提取&#xff08;确定&#xff09;一个数n最右侧的1&#xff08;bit&#xff09;与干掉最右侧的1&#xff08;bit&#xff09; 4、异或运算律 5、位运算的优先级&#xff1a…

Focal Modulation Networks聚焦调制网络

摘要 我们提出了 焦点调制网络 &#xff08;简称 FocalNets) &#xff0c;其中 自注意&#xff08; SA &#xff09;被 Focal Modulation 替换&#xff0c;这种机制 包括三个组件&#xff1a;&#xff08; 1 &#xff09;通过 depth-wise Conv 提取分级的上下文信息&#xff0…

latex报错Undefined control sequence.

这里写目录标题 1. 错误原因2. 进行改正3. 爱思唯尔期刊与施普林格期刊对于算法的格式不太一样&#xff0c;不能直接套用总结---在LaTeX中&#xff0c;使用algorithm环境排版算法时&#xff0c;有一些格式注意事项 1. 错误原因 我在算法中使用\Require 2. 进行改正 换成\REQ…

YOLOv9改进策略:注意力机制 | 动态稀疏注意力的双层路由方法BiLevelRoutingAttention | CVPR2023

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a; CVPR2023 动态稀疏注意力的双层路由方法BiLevelRoutingAttention&#xff0c;强烈推荐&#xff0c;涨点很不错&#xff0c;同时被各个领域的魔改次数甚多&#xff0c;侧面验证了性能。 &#x1f4a1;&#x1…

vue项目在本地源码方式启动和打包之后在nginx中代理有什么不同

Vue项目在本地源码方式启动和打包之后在Nginx中代理的主要区别在于开发环境与生产环境的配置、性能优化、安全性和部署流程等方面。以下是一些具体的差异点&#xff1a; 开发环境与生产环境&#xff1a; 本地源码启动通常是在开发环境中&#xff0c;使用Vue CLI的vue-cli-servi…

C++基础之继承续(十六)

一.基类与派生类之间的转换 可以把派生类赋值给基类可以把基类引用绑定派生类对象可以把基类指针指向派生类对象 #include <iostream>using std::cin; using std::cout; using std::endl;//基类与派生类相互转化 class Base { private:int _x; public:Base(int x0):_x(…

【Java多线程(2)】Thread常见方法和线程状态

目录 一、Thread类及常见方法 1. join() 等待一个线程 2. currentThread() 获取当前线程引用 3. sleep() 休眠当前线程 二、线程的状态 1. 线程的所有状态 2. 状态转移 一、Thread类及常见方法 接上文&#xff1a;多线程&#xff08;1&#xff09;http://t.csdnimg.cn/…

Docker 【安装MongoDB】

文章目录 前言一、安装二、使用1. 通过权限认证的方式登入2. 基础操作 前言 MongoDB是一个非关系型数据库&#xff0c;它主要的应用场景有这些 相比mysql&#xff0c;MongoDB没有事务&#xff0c;索引之类的东西。最小单位是文档。 可能有人说&#xff0c;为什么这个场景我要…

【无标题】如何使用 MuLogin 设置代理

如何使用 MuLogin 设置代理 使用 MuLogin 浏览器设置我们的代理&#xff0c;轻松管理多个社交媒体或电子商务帐户。 什么是MuLogin&#xff1f; MuLogin 是一款虚拟反检测浏览器&#xff0c;使用户能够管理多个电子商务、社交媒体和广告帐户&#xff0c;而无需验证码或 IP 禁…