Java 用户注册登录系统实现 - 用户名验证与重复注册问题解决方案
本文将介绍一个使用Java语言实现的简单用户注册登录系统,并重点分析如何解决重复注册的问题。
package zy2;
import java.util.Scanner;
public class UserDaoImpl implements IUserDao {
public String UserName1;//定义用户名变量
public String UserPassword1;//密码变量
public int count1 = 0;//密码设置次数
public int count2 = 0;//登录次数
public int count3 = 0;//密码错误次数
public int count4 = 0;//重置密码次数
public int count5 = 0;//成功登录
public void AddUser() { //添加用户(注册功能)
System.out.println('^^^^^^^^^^^^^^^^注册界面^^^^^^^^^^^^^^^^');
System.out.println('您还未注册,请先进行注册');
Scanner scanner1 = new Scanner(System.in);
System.out.print('请输入您的用户名称:');
User.User = scanner1.nextLine();
System.out.print('请输入您的用户生日:');
User.Birthday = scanner1.nextLine();
while (count1 <= 3) {
System.out.print('请输入用户密码:');
User.Password = scanner1.nextLine();
System.out.print('请确认用户密码:');
User.ConfirmPassword = scanner1.nextLine();
//确认二次输入密码
if (User.ConfirmPassword.equals(User.Password)) {
System.out.println('
密码设置成功,请重新登录!');
System.out.println('正在跳转中,请稍后!');
FindUser();//跳转登录界面
} else {
System.out.println('密码前后设置不一致,请重新设置!');
count1 = count1 + 1;
}
}
}
public void FindUser() { //查找用户(登录功能)
while (count2 <= 3) {
System.out.println('****************登录界面*****************');
System.out.print('用户登录名:');
Scanner scanner2 = new Scanner(System.in);
String UserName2 = scanner2.nextLine();//获取用户输入的用户名
if (UserName2.equals(User.User)) {//判断用户名是否存在
System.out.println('✔');
System.out.print('用户密码:');
String UserPassword2 = scanner2.nextLine(); //获取用户输入的密码
if (User.Password.equals(UserPassword2)) {//判断密码是否正确
System.out.println('✔');
System.out.println('登陆成功!');
System.out.println('++++++++++++++++用户信息++++++++++++++++');
System.out.println(' 用户名:'+User.User);
System.out.println(' 生 日:'+User.Birthday);
System.out.println('+++++++++++++++++++++++++++++++++++++++');
count2=4;//跳出循环
count1=4;
} else {
System.out.println('密码错误!请重新输入');
count2 = count2 + 1;
count3 = count3 + 1;
}
if(count3==4){
System.out.println('输入次数过多,请稍后再试');
}
} else {
System.out.print('查无此用户!请重新输入,注册账号请输入1,重新登录按任意键>>>');
Scanner Again=new Scanner(System.in);
String AgainNumber=Again.nextLine();
if(AgainNumber.equals('1')){
AddUser();//跳转到注册界面
}else {
FindUser(); //重新跳转到登录界面
}
}
System.out.println('
');
}
}
public void ResetPassword(){ //用户(重置密码)
while (count4 <= 3) {
System.out.println('================密码重置===============');
System.out.print('用户登录名:');
Scanner scanner3 = new Scanner(System.in); //获取用户输入的用户名
String UserName3 = scanner3.nextLine();//判断用户名是否存在
if (UserName3.equals(User.User)) {
System.out.print('请输入旧的密码:');
String UserPassword3 = scanner3.nextLine();//获取用户输入的旧密码
if (UserPassword3.equals(User.Password)) {//判断旧密码是否正确
System.out.print('验证通过,请输入新的密码:');
String UserPassword4 = scanner3.nextLine();//获取用户输入的新密码
System.out.print('请确认用户新的密码:');
String UserPassword4Confirm = scanner3.nextLine();//获取用户确认的新密码
if (UserPassword4Confirm.equals(UserPassword4)) {//二次确认密码
User.Password=UserPassword4Confirm;
System.out.println('已更换为新的密码!请重新登录!');
count2 =0; //重置计数器2
count3 =0; //重置计数器3
count4 =4; //跳出循环
while (count2 <= 3) {
System.out.println('****************登录界面*****************');
System.out.print('用户登录名:');
Scanner scanner2 = new Scanner(System.in);
String UserName2 = scanner2.nextLine();
if (UserName2.equals(User.User)) {
System.out.println('✔');
System.out.print('用户密码:');
String UserPassword2 = scanner2.nextLine();
if (User.Password.equals(UserPassword2)) {
System.out.println('✔');
System.out.println('登陆成功!');
System.out.println('++++++++++++++++用户信息++++++++++++++++');
System.out.println(' 用户名:'+User.User);
System.out.println(' 生 日:'+User.Birthday);
System.out.println('+++++++++++++++++++++++++++++++++++++++');
count2=4;
count1=4;
count5=1;//记录重置密码成功后登录次数
} else {
System.out.println('密码错误!请重新输入');
count2 = count2 + 1; //计数器加1
count3 = count3 + 1; //计数器加1
}
if(count3==4){
System.out.println('输入次数过多,请稍后再试');
}
} else {
System.out.print('查无此用户!请重新输入,注册账号请输入1,重新登录按任意键>>>');
Scanner Again=new Scanner(System.in);
String AgainNumber=Again.nextLine();
if(AgainNumber.equals('1')){
AddUser(); //跳转到注册界面
}else {
FindUser(); //重新跳转到登录界面
}
}
System.out.println('
');
}
}else {
System.out.println('密码前后设置不一致,请重新设置!');
count4 = count4 + 1;
}
if(count4==4 && count5==0){
System.out.println('输入次数过多,请稍后再试');
}
}else{
System.out.println('旧密码验证不通过!请重新输入!');
}
}else {
System.out.print('查无此用户!请重新输入,注册账号请输入1,重新登录按任意键>>>');
Scanner Again=new Scanner(System.in);
String AgainNumber=Again.nextLine();
if(AgainNumber.equals('1')){
AddUser();//跳转到注册界面
ResetPassword();//重新跳转到重置密码界面
}else {
count2=0; //重置计数器2
count3=0; //重置计数器3
FindUser(); //重新跳转到登录界面
}
}
}
}
}
代码分析:
- FindUser() 方法 中判断用户输入的用户名是否与已注册用户一致,若一致则进行密码验证,否则提示用户输入或注册账号。
- AddUser() 方法 实现注册功能,在注册成功后调用 FindUser() 方法跳转到登录界面。
解决重复注册问题:
在 FindUser() 方法中,当输入的用户名不存在时,会提示用户重新输入或者注册账号。如果用户选择注册账号,则调用 AddUser() 方法跳转到注册界面,避免了重复注册的问题。
需要注意的是,以上代码只是演示代码,实际应用中需要完善以下内容:
- 数据持久化:将用户数据存储到数据库或文件中。
- 错误处理:对用户输入进行验证和处理,防止输入错误导致程序异常。
- 安全性:对密码进行加密,防止密码被盗取。
- 界面设计:可以使用图形界面库,设计更加友好、易用的用户界面。
通过以上分析和改进,可以实现一个基本的用户注册登录系统,并有效避免重复注册的问题。
原文地址: https://www.cveoy.top/t/topic/nXK9 著作权归作者所有。请勿转载和采集!