当前位置: 首页 > news >正文

第1关:简易考试系统之用户注册

任务描述
本关任务:实现简易考试系统中新用户注册的功能。

编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现简易考试系统中新用户注册的功能,具体要求如下:

User.java 提供了用户的基本信息,该类已经定义完成,请仔细阅读该类;

在 MenuExam.java 中有 3 个选项,实现第一个和第三个选项的功能;

获取键盘输入的值,如果为 1,首先输出“请输入你要注册的用户名:”,获取键盘输入的用户名,再输出“请输入你要注册的密码:”,获取键盘输入的密码,然后调用 ExamManage.java 文件中的 register(String name, String pwd, User[] users) 方法,将该方法所需参数传入;

register 方法携带三个参数,分别为:用户名、密码和用户数组,该方法实现注册新用户的功能;

首先判断用户名是否规范:要求用户名必须是 6-10 位字母、数字、下划线(这里字母、数字、下划线是指任意组合,没有必须三类均包含),不能以数字开头,如果不规范,输出:“用户名不合规范!”,返回主菜单;

再判断该用户名是否已存在(也就是已经在 users 数组中存在),如果存在,输出:“用户名已存在!”,返回主菜单;

判断密码是否规范:要求密码必须是 6-10 位字母、数字、下划线(这里字母、数字、下划线是指任意组合,没有必须三类均包含)如果不规范,输出:“密码不合规范!”,返回主菜单;

如果用户名和密码没有问题,创建该用户,并存入用户数组中;

如果键盘输入的值为 3 ,退出程序,并输出:“退出成功!”;

如果输入的是其它值时,输出:“选择错误!”,返回主菜单。

测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
可在右侧“测试结果”区查看具体的测试集详情。

测试输入:

1
5sunfeng
123456
1
sunfeng
1234
3
预期输出:

线上考试系统
**********
1. 新用户注册
2. 用户登录
3. 退出系统
**********
请输入选择的操作:
请输入你要注册的用户名:
请输入你要注册的密码:
用户名不合规范!
线上考试系统
**********
1. 新用户注册
2. 用户登录
3. 退出系统
**********
请输入选择的操作:
请输入你要注册的用户名:
请输入你要注册的密码:
密码不合规范!
线上考试系统
**********
1. 新用户注册
2. 用户登录
3. 退出系统
**********
请输入选择的操作:
退出成功!

import java.util.Scanner;class User {private String username;private String password;public User(String username, String password) {this.username = username;this.password = password;}public String getUsername() {return username;}public String getPassword() {return password;}
}class ExamManage {public void register(String name, String pwd, User[] users) {// 判断用户名是否规范if (!isValidUsername(name)) {System.out.println("用户名不合规范!");return;}// 判断用户名是否已存在if (isUsernameExists(name, users)) {System.out.println("用户名已存在!");return;}// 判断密码是否规范if (!isValidPassword(pwd)) {System.out.println("密码不合规范!");return;}// 找到一个空位置存储新用户for (int i = 0; i < users.length; i++) {if (users[i] == null) {users[i] = new User(name, pwd);//   System.out.println("注册成功!");return;}}System.out.println("用户数组已满,无法注册新用户!");}private boolean isValidUsername(String username) {if (username.length() < 6 || username.length() > 10) {return false;}if (Character.isDigit(username.charAt(0))) {return false;}for (char c : username.toCharArray()) {if (!Character.isLetterOrDigit(c) && c!= '_') {return false;}}return true;}private boolean isUsernameExists(String username, User[] users) {for (User user : users) {if (user!= null && user.getUsername().equals(username)) {return true;}}return false;}private boolean isValidPassword(String password) {if (password.length() < 6 || password.length() > 10) {return false;}for (char c : password.toCharArray()) {if (!Character.isLetterOrDigit(c) && c!= '_') {return false;}}return true;}
}// 此类为整个通讯录的总控制,负责启动
public class MenuExam {public static void main(String[] args) {User[] users = new User[50]; // 创建一个对象数组,用于存放所有的用户信息// 实例化 Scanner 对象Scanner sc = new Scanner(System.in);// 实例化 ExamManage 对象ExamManage examManage = new ExamManage();while (true) {System.out.println("线上考试系统");System.out.println("**********");System.out.println("1. 新用户注册");System.out.println("2. 用户登录");System.out.println("3. 退出系统");System.out.println("**********");System.out.println("请输入选择的操作:");// 获取键盘输入String str = sc.next();// 实现注册功能if ("1".equals(str)) {// 获取键盘输入的用户名System.out.println("请输入你要注册的用户名:");String name = sc.next();// 获取键盘输入的密码System.out.println("请输入你要注册的密码:");String pwd = sc.next();// 将参数传入 register 方法中examManage.register(name, pwd, users);} else if ("2".equals(str)) {// 此处可根据需求补充用户登录功能} else if ("3".equals(str)) {// 退出操作System.out.println("退出成功!");break;} else {System.out.println("选择错误!");}}sc.close();}
}

相关文章:

第1关:简易考试系统之用户注册

任务描述 本关任务&#xff1a;实现简易考试系统中新用户注册的功能。 编程要求 仔细阅读右侧编辑区内给出的代码框架及注释&#xff0c;在 Begin-End 中实现简易考试系统中新用户注册的功能&#xff0c;具体要求如下&#xff1a; User.java 提供了用户的基本信息&#xff0c…...

VMware的三种网络模式——在NAT模式下开放接口为局域网内其他主机提供服务

众所周知 VMware 有三种常用的网络通讯模式&#xff0c;分别是&#xff1a;Bridged&#xff08;桥接模式&#xff09;、NAT&#xff08;网络地址转换模式&#xff09;、Host-Only&#xff08;仅主机模式&#xff09;&#xff0c;它们各有不同的用法。 Bridged 桥接模式是与主机…...

智慧地下采矿:可视化引领未来矿业管理

图扑智慧地下采矿可视化平台通过整合多源数据&#xff0c;提供实时 3D 矿井地图及分析&#xff0c;提升了矿产开采的安全性与效率&#xff0c;为矿业管理提供数据驱动的智能决策支持&#xff0c;推动行业数字化转型。...

流量主微信小程序工具类去水印

工具类微信小程序流量主带后台管理&#xff0c;可开通广告&#xff0c;带自有后台管理&#xff0c;不借助第三方接口 介绍 支持抖音&#xff0c;小红书&#xff0c;哔哩哔哩视频水印去除&#xff0c;功能实现不借助第三方平台。可实现微信小程序流量主广告变现功能&#xff0c…...

代码随想录算法【Day5】

DAY5 1.熟悉哈希表的数据结构&#xff1a;数组、map和set&#xff0c;使用方法、使用场景 2.哈希表应用场景&#xff1a;解决给你一个元素&#xff0c;判断它在集合里是否出现过。 242.有效的字母异位词 本题用数组解决的。 class Solution { public:bool isAnagram(strin…...

Leetcode 3403. Find the Lexicographically Largest String From the Box I

Leetcode 3403. Find the Lexicographically Largest String From the Box I 1. 解题思路2. 代码实现 题目链接&#xff1a;3403. Find the Lexicographically Largest String From the Box I 1. 解题思路 这一题我一开始的思路是想用动态规划&#xff0c;结果发现想复杂了&…...

【游戏设计原理】36 - 环境叙事

一、 分析并总结 核心要点 环境叙事的本质&#xff1a;将游戏的设定视为叙事的一部分&#xff0c;利用环境元素&#xff08;如物品、对话、视觉效果等&#xff09;传递故事和信息。世界设定的重要性&#xff1a;一个强大的世界设定可以像角色一样&#xff0c;驱动叙事并增强玩…...

Python 中的 lambda 函数和嵌套函数

Python 中的 lambda 函数和嵌套函数 Python 中的 lambda 函数和嵌套函数Python 中的 lambda 函数嵌套函数&#xff08;内部函数&#xff09;封装辅助函数闭包和工厂函数 Python 中的 lambda 函数和嵌套函数 Python 中的 lambda 函数 Lambda 函数是基于单行表达式的匿名函数。…...

语言模型评价指标

1. BLEU&#xff08;Bilingual Evaluation Understudy&#xff09; 目标&#xff1a;衡量生成文本和参考文本之间的词汇相似性。 计算步骤&#xff1a; N-gram 匹配&#xff1a; 将生成文本和参考文本分解成 1-gram、2-gram、…、N-gram&#xff08;通常取到 4-gram&#xff…...

工程师 - MSYS2介绍

https://www.msys2.org/ MSYS2 是一系列工具和库&#xff0c;为您提供了一个易于使用的环境&#xff0c;用于构建、安装和运行本地 Windows 软件。 MSYS2 is a collection of tools and libraries providing you with an easy-to-use environment for building, installing an…...

算法基础三:插入排序

定义 插入排序&#xff08;英语&#xff1a;Insertion Sort&#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常采用…...

小米汽车加速出海,官网建设引领海外市场布局!

面对国内市场的饱和态势&#xff0c;中国企业出海步伐纷纷加速&#xff0c;小米也是其中的一员。Canalys数据显示&#xff0c;2024年第三季度&#xff0c;小米以13.8%的市场份额占比&#xff0c;实现了连续17个季度位居全球前三的成绩。 据“36 氪汽车”报道&#xff0c;小米汽…...

Python Polars快速入门指南:LazyFrames

前文已经介绍了Polars的Dataframe, Contexts 和 Expressions&#xff0c;本文继续介绍Polars的惰性API。惰性API是该库最强大的功能之一&#xff0c;使用惰性API可以设定一系列操作&#xff0c;而无需立即运行它们。相反&#xff0c;这些操作被保存为计算图&#xff0c;只在必要…...

什么是网络安全(Cybersecurity)?

不同组织机构对网络安全&#xff08;Cybersecurity或Cyber Security&#xff09;的定义不尽相同。从目标上来说&#xff0c;网络安全主要用于保护网络、计算机、移动设备、应用程序及数据等资产免受网络攻击&#xff0c;避免造成数据泄露、业务中断等安全问题。 网络钓鱼、勒索…...

VBA批量插入图片到PPT,一页一图

Sub InsertPicturesIntoSlides()Dim pptApp As ObjectDim pptPres As ObjectDim pptSlide As ObjectDim strFolderPath As StringDim strFileName As StringDim i As Integer 设置图片文件夹路径strFolderPath "C:\您的图片文件夹路径\" 请替换为您的图片文件夹路径…...

Pandas-DataFrame入门

文章目录 一. Pandas DataFrame简介二. 加载数据集1. 目的2. 步骤① 导包② 加载csv③ 查看数据类型及属性④ Pandas与Python常用数据类型对照 三. 查看部分数据1. 根据列名加载部分列数据① 加载一列数据&#xff0c;通过df[列名]方式获取② 加载多列数据&#xff0c;通过df[[…...

爬虫 - 爬取王者荣耀所有皮肤图片

结果展示 安装 pip install requests logger代码 import json import os import re from concurrent.futures import ThreadPoolExecutorimport requests from loguru import loggerdef parse_url(url, bFalse):try:headers {"User-Agent": "Mozilla/5.0 (Wi…...

【畅购商城】购物车模块之查看购物车

目录 分析 接口 后端实现 前端实现&#xff1a;显示页面 前端实现&#xff1a;显示购物车信息 分析 用户如果没有登录&#xff0c;购物车存放在浏览器端的localStorage处&#xff0c;且以数组的方式进行存储。用户如果登录了&#xff0c;购物车存放在redis中&#xff0c…...

Spring Boot 学习笔记

学习代码第一步&#xff1a;如何写 Hello world &#xff1f; 1、新建项目 新建一个 Maven Java 工程&#xff0c;在 pom.xml 文件中添加 Spring Boot Maven 依赖&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spri…...

快速打造智能应用:从设计到上线的全流程指南

随着人工智能技术的快速发展&#xff0c;如何将大模型技术转化为实际应用成为了各行业关注的焦点。本文将以一个经典的 RAG&#xff08;检索增强生成&#xff09;知识问答系统为例&#xff0c;详细介绍从智能体设计到最终应用部署的全流程。通过结合阿里云的魔笔低代码平台和丰…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...