第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关:简易考试系统之用户注册
任务描述 本关任务:实现简易考试系统中新用户注册的功能。 编程要求 仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现简易考试系统中新用户注册的功能,具体要求如下: User.java 提供了用户的基本信息,…...
VMware的三种网络模式——在NAT模式下开放接口为局域网内其他主机提供服务
众所周知 VMware 有三种常用的网络通讯模式,分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式),它们各有不同的用法。 Bridged 桥接模式是与主机…...
智慧地下采矿:可视化引领未来矿业管理
图扑智慧地下采矿可视化平台通过整合多源数据,提供实时 3D 矿井地图及分析,提升了矿产开采的安全性与效率,为矿业管理提供数据驱动的智能决策支持,推动行业数字化转型。...
流量主微信小程序工具类去水印
工具类微信小程序流量主带后台管理,可开通广告,带自有后台管理,不借助第三方接口 介绍 支持抖音,小红书,哔哩哔哩视频水印去除,功能实现不借助第三方平台。可实现微信小程序流量主广告变现功能,…...
代码随想录算法【Day5】
DAY5 1.熟悉哈希表的数据结构:数组、map和set,使用方法、使用场景 2.哈希表应用场景:解决给你一个元素,判断它在集合里是否出现过。 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. 代码实现 题目链接:3403. Find the Lexicographically Largest String From the Box I 1. 解题思路 这一题我一开始的思路是想用动态规划,结果发现想复杂了&…...
【游戏设计原理】36 - 环境叙事
一、 分析并总结 核心要点 环境叙事的本质:将游戏的设定视为叙事的一部分,利用环境元素(如物品、对话、视觉效果等)传递故事和信息。世界设定的重要性:一个强大的世界设定可以像角色一样,驱动叙事并增强玩…...
Python 中的 lambda 函数和嵌套函数
Python 中的 lambda 函数和嵌套函数 Python 中的 lambda 函数和嵌套函数Python 中的 lambda 函数嵌套函数(内部函数)封装辅助函数闭包和工厂函数 Python 中的 lambda 函数和嵌套函数 Python 中的 lambda 函数 Lambda 函数是基于单行表达式的匿名函数。…...
语言模型评价指标
1. BLEU(Bilingual Evaluation Understudy) 目标:衡量生成文本和参考文本之间的词汇相似性。 计算步骤: N-gram 匹配: 将生成文本和参考文本分解成 1-gram、2-gram、…、N-gram(通常取到 4-gramÿ…...
工程师 - MSYS2介绍
https://www.msys2.org/ MSYS2 是一系列工具和库,为您提供了一个易于使用的环境,用于构建、安装和运行本地 Windows 软件。 MSYS2 is a collection of tools and libraries providing you with an easy-to-use environment for building, installing an…...
算法基础三:插入排序
定义 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用…...
小米汽车加速出海,官网建设引领海外市场布局!
面对国内市场的饱和态势,中国企业出海步伐纷纷加速,小米也是其中的一员。Canalys数据显示,2024年第三季度,小米以13.8%的市场份额占比,实现了连续17个季度位居全球前三的成绩。 据“36 氪汽车”报道,小米汽…...
Python Polars快速入门指南:LazyFrames
前文已经介绍了Polars的Dataframe, Contexts 和 Expressions,本文继续介绍Polars的惰性API。惰性API是该库最强大的功能之一,使用惰性API可以设定一系列操作,而无需立即运行它们。相反,这些操作被保存为计算图,只在必要…...
什么是网络安全(Cybersecurity)?
不同组织机构对网络安全(Cybersecurity或Cyber Security)的定义不尽相同。从目标上来说,网络安全主要用于保护网络、计算机、移动设备、应用程序及数据等资产免受网络攻击,避免造成数据泄露、业务中断等安全问题。 网络钓鱼、勒索…...
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. 根据列名加载部分列数据① 加载一列数据,通过df[列名]方式获取② 加载多列数据,通过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…...
【畅购商城】购物车模块之查看购物车
目录 分析 接口 后端实现 前端实现:显示页面 前端实现:显示购物车信息 分析 用户如果没有登录,购物车存放在浏览器端的localStorage处,且以数组的方式进行存储。用户如果登录了,购物车存放在redis中,…...
Spring Boot 学习笔记
学习代码第一步:如何写 Hello world ? 1、新建项目 新建一个 Maven Java 工程,在 pom.xml 文件中添加 Spring Boot Maven 依赖: <parent><groupId>org.springframework.boot</groupId><artifactId>spri…...
快速打造智能应用:从设计到上线的全流程指南
随着人工智能技术的快速发展,如何将大模型技术转化为实际应用成为了各行业关注的焦点。本文将以一个经典的 RAG(检索增强生成)知识问答系统为例,详细介绍从智能体设计到最终应用部署的全流程。通过结合阿里云的魔笔低代码平台和丰…...
Leather Dress Collection 保姆级部署教程:Windows 系统下的完整指南
Leather Dress Collection 保姆级部署教程:Windows 系统下的完整指南 如果你是一名 Windows 用户,想体验最近很火的 Leather Dress Collection 这个 AI 模型,但看到一堆 Linux 命令就头疼,那这篇教程就是为你准备的。我知道&…...
和AI一起搞事情#:边剥龙虾边做个中医技能来起号道
1. 核心概念 在 Antigravity 中,技能系统分为两层: Skills (全局库):实际的代码、脚本和指南,存储在系统级目录(如 ~/.gemini/antigravity/skills)。它们是“能力”的本体。 Workflows (项目级):…...
G-Helper技术深度评测:轻量化华硕笔记本控制工具的革新之路
G-Helper技术深度评测:轻量化华硕笔记本控制工具的革新之路 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...
Java与C++:7大核心差异全解析
好的,Java 和 C 都是广泛使用的面向对象编程语言,但它们在设计哲学、特性和应用场景上存在显著区别。以下是它们的主要差异:1. 内存管理C:支持手动内存管理(通过 new/delete 操作符)。程序员需自行分配和释…...
HTTP接口设计进阶技巧:http-api-guide高级应用解析
HTTP接口设计进阶技巧:http-api-guide高级应用解析 【免费下载链接】http-api-guide 项目地址: https://gitcode.com/gh_mirrors/ht/http-api-guide 在API开发领域,设计一套规范、高效且易于维护的HTTP接口至关重要。http-api-guide作为一份全面…...
Qwen3.5-9B多场景落地:开发者写Python脚本、产品经理写PRD、教师出题批改
Qwen3.5-9B多场景落地:开发者写Python脚本、产品经理写PRD、教师出题批改 1. 开篇:认识Qwen3.5-9B大模型 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,在多个专业领域展现出强大的能力。不同于普通聊天机器人,它特别擅长逻辑…...
基于CNN的Android恶意软件检测
1 背景知识 1.1 传统恶意软件检测方式 基于签名的检测 比对应用的二进制代码与本地已知恶意签名库中的特征码 速度快、误报低、漏报高 只能识别已知威胁,无法检测零日攻击 恶意软件通过混淆或者变形技术容易绕过检测基于行为的检测 动态分析应用在运行时的行为 能…...
OpenClaw异常处理机制:千问3.5-27B任务失败自动回滚
OpenClaw异常处理机制:千问3.5-27B任务失败自动回滚 1. 为什么需要异常处理机制 上周我让OpenClaw执行一个复杂的文件处理任务:扫描2000多份PDF合同,提取关键条款并生成汇总表格。本以为可以喝着咖啡等结果,没想到半夜收到飞书报…...
OpenClaw更新策略:千问3.5-9B模型与框架的版本管理
OpenClaw更新策略:千问3.5-9B模型与框架的版本管理 1. 为什么需要版本管理 上周我在本地部署的OpenClaw突然罢工了——前一天还能正常处理文件整理任务,第二天就频繁报错"模型响应格式异常"。排查后发现是自动更新机制将千问3.5-9B模型升级到…...
OpenClaw学术研究流:Phi-3-mini-128k-instruct自动生成论文综述
OpenClaw学术研究流:Phi-3-mini-128k-instruct自动生成论文综述 1. 为什么需要自动化文献综述 每次开始新的研究课题时,最让我头疼的就是文献综述环节。作为独立研究者,我常常需要花费数周时间阅读上百篇论文,手动整理关键观点和…...
