完成这个题目需要创建两个class文件
一个存放用户类一个测试类
用户类
package com.bili.demo2;
/*** 用户类* @author 21434**/
public class User {private String userName;private String userPassWord;private boolean state;public User() {super();}public User(String userName, String userPassWord) {super();this.userName = userName;this.userPassWord = userPassWord;this.state = state;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPassWord() {return userPassWord;}public void setUserPassWord(String userPassWord) {this.userPassWord = userPassWord;}public boolean isState() {return state;}public void setState(boolean state) {this.state = state;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((userName == null) ? 0 : userName.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;User other = (User) obj;if (userName == null) {if (other.userName != null)return false;} else if (!userName.equals(other.userName))return false;return true;}}
测试类
package com.bili.demo2;import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;/*** 2、登录:输入用户名和密码后进行校验,通过才放行。并提示:欢迎xxx[管理员]登录(普通用户不显示管理员三个字)* @author 21434* 3、如果登录的是管理员,则显示如下菜单1、查看用户2、管理用户显示用户列表(按年龄从小到大排序)显示操作:1、添加;2、删除、3、修改如果选添加-->让用户输入相关内容并保存到数组中如果选删除-->输入序号删除对应的用户如果选修改-->输入序号提示用户输入要修改的信息,提交后并更新3、退出系统退出
4、如果是普通用户,则显示如下菜单1、查看用户2、修改个人信息3、退出系统*/
public class Demo2 {static Scanner sc = new Scanner(System.in);static HashSet<User> set = new HashSet<>();public static void main(String[] args) {while(true) {showMenu("****欢迎使用用户注册系统****","1.注册","2.登录","3.退出","请选择您的操作:");String i = sc.next();switch(i) {case "1":UserRegister();break;case "2":userLog();break;case "3":System.out.println("正在退出系统,请稍后》》》");System.out.println("功成退出");System.exit(0);break;default:System.out.println("暂时没有您选择的功能呢,请重新输入:");break;}}}/*** 显示菜单*/private static void showMenu(String...menus) {for(String menu :menus) {System.out.println(menu);}}/*** 注册*/private static void UserRegister() {System.out.println("*****欢迎新用户注册*****");boolean sr = false;System.out.println("请输入您要注册用户名:");String userName = sc.next();System.out.println("请输入您的密码:");String userPassWord = sc.next();//将用户名和密码存储到 变量中sr = set.add(new User(userName,userPassWord));// sr 的初始化赋值就是false ! 不等于的意思 负负得正 if(!sr)这个条件就是判断用户名是否相同if(!sr) {System.out.println("用户名已经被注册!!!请重新输入");}else {System.out.println("恭喜您,注册成功!!!");}operation();}/*** 登录*/private static void userLog() {System.out.println("*****欢迎登录本系统****");User user3 = new User();while(true) {System.out.println("请输入您的登录用户名:");String userNameLog = sc.next();System.out.println("请输入您的登录密码:");String userPassWordLog = sc.next();//在User类中 已经创建了一个有参的构造方法 new 对象的实质就是在调用他的构造方法User user = new User(userNameLog,userPassWordLog);//contains 如果此映射包含指定键的映射 就返回true 判断用户名是否存在boolean sr = set.contains(user);if(!sr) {System.out.println("用户名不存在,请重新输出");}else {//iterator 迭代器Iterator<User> iterator = set.iterator();while(iterator.hasNext()) {User user2 = iterator.next();// 判断输入的控制台与登录时的用户名与密码相等if(user2.getUserName().equals(userNameLog) && user2.getUserPassWord().equals(userPassWordLog)) {System.out.println("登录成功,欢迎"+userNameLog+"使用本系统");operation();}}System.out.println("登录失败,密码错误");}}}/*** 判断是否继续操作*/private static void operation() {System.out.println("是否继续操作? \t是:否");String bool = sc.next();if(bool.equals("是")) {// 继续操作就进入登录循环userLog();}else if(bool.equals("否")){System.out.println("正在退出请稍后》》》");System.out.println("成功退出");System.exit(0);}else{System.out.println("暂时还未开通此功能,请重新输入:");}}
}
效果图