重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
【题目来源-------黑马程序员Java零基础视频教程_上部】
具体要求:
为学生管理系统书写一个登陆、注册、忘记密码的功能。
只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。
分析:
登录界面:
System.out.println(“欢迎来到学生管理系统”);
System.out.println(“请选择操作1登录 2注册 3忘记密码”);
用户类:
属性:用户名、密码、身份证号码、手机号码
注册功能:
1,用户名需要满足以下要求:
验证要求:
用户名唯一
用户名长度必须在3~15位之间
只能是字母加数字的组合,但是不能是纯数字
2,密码键盘输入两次,两次一致才可以进行注册。
3,身份证号码需要验证。
验证要求:
长度为18位
不能以0为开头
前17位,必须都是数字
最为一位可以是数字,也可以是大写X或小写x
4,手机号验证。
验证要求:
长度为11位
不能以0为开头
必须都是数字
登录功能:
1,键盘录入用户名
2,键盘录入密码
3,键盘录入验证码
验证要求:
用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
判断验证码是否正确,如不正确,重新输入
再判断用户名和密码是否正确,有3次机会
忘记密码:
1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
2,键盘录入身份证号码和手机号码
3,判断当前用户的身份证号码和手机号码是否一致,
如果一致,则提示输入密码,进行修改。
如果不一致,则提示:账号信息不匹配,修改失败。
验证码规则:
长度为5
由4位大写或者小写字母和1位数字组成,同一个字母可重复
数字可以出现在任意位置
比如:
aQa1K
完整代码:
(如有错误,请各位大佬指教(●’◡’●))
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class UserSystem {public static void main(String[] args) {ArrayListlist=new ArrayList<>();
loop: while(true){System.out.println("--------------------------------------------");
System.out.println("欢迎来到用户管理系统");
System.out.println("请选择操作 1登录 2注册 3忘记密码 (任意键)退出管理系统");
Scanner sc=new Scanner(System.in);
String choose=sc.next();
switch(choose){case "1":{DengLu(list);
break;
}
case "2":{ZhuCe(list);
System.out.println("恭喜您,注册成功!");
break;
}
case "3":{forgetPassword(list);
break;
}
default:
break loop;
}
}
}
public static void DengLu(ArrayListlist){Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String username=sc.next();
boolean flag=isExist(list,username);
loop:for (int i = 0; i< 3; i++) {User u=new User();
if(flag){System.out.println("请输入密码");
String password=sc.next();
u.setPassword(password);
//生成一个验证码
String identifyNumber=DengLuYzm();
System.out.println("自动生成的验证码为:"+identifyNumber);
System.out.println("请输入验证码");
String idNum=sc.next();
if(identifyNumber.equals(idNum)){boolean flag1=passwordExist(list,u);
if(flag1){System.out.println("恭喜您,登录成功!");
break loop;
}else{System.out.println("密码不正确,您还有"+(3-i-1)+"次机会!" );
}
}else{System.out.println("验证码输入不正确,您还有"+(3-i-1)+"次机会!!");
}
}else{System.out.println("用户名未注册,请先注册!");
break loop;
}
}
}
public static String DengLuYzm(){//把大写字母,小写字母放到一个数组中
char []arr=new char[52];
for (int i = 0; i< arr.length; i++) {if(i<=25){//添加小写字母
arr[i]=(char)(97+i);
}else {//添加大写字母
arr[i]=(char)(65+i-26);
}
}
//长度为5 四位是字母,一位是数字
Random r=new Random();
String result="";
for (int i = 0; i< 4; i++) {int j=r.nextInt(52);
result=result+arr[j];
}
result=result+r.nextInt(10);
//其中数字只有一维,位置随机
//把字符串转换为字符数组,把最后一个数字元素与其他随机位置交换
char []arr1=result.toCharArray();
for (int i = 0; i< arr1.length; i++) {int j=r.nextInt(arr1.length-1);
char temp=arr1[j];
arr1[j]=arr1[arr1.length-1];
arr1[arr1.length-1]=temp;
}
String res=new String(arr1);//从字符数组转换为字符
return res;
}
public static void ZhuCe(ArrayListlist){User user=new User();
String username=ZhuCeUserName(list);
user.setUserName(username);
String password=ZhuCePassword(list);
user.setPassword(password);
String idNumber=ZhuCeIdNumber(list);
user.setIdNumber(idNumber);
String phoneNumber=ZhuCePhoneNumber(list);
user.setPhoneNumber(phoneNumber);
list.add(user);
}
public static String ZhuCePhoneNumber(ArrayListlist){Scanner sc=new Scanner(System.in);
String phoneNumber="";
loop:while(true){System.out.println("请输入手机号码:");
phoneNumber=sc.next();
char []charPhoneNumber=phoneNumber.toCharArray();
int count=0;
if(phoneNumber.length()==11){if(charPhoneNumber[0]!='0'){for (int i = 0; i< charPhoneNumber.length; i++) {if(charPhoneNumber[i]>='0'&&charPhoneNumber[i]<='9'){ count++;
}
}
if(count==phoneNumber.length()){System.out.println("手机号码验证成功!");
break loop;
}else{System.out.println("手机号码不全为数字,请重新输入!");
}
}else{System.out.println("手机号码第一位为0,不符合要求,请重新输入!");
}
}else{System.out.println("手机号码长度不符合要求(长度不为11),请重新输入!");
}
}
return phoneNumber;
}
public static String ZhuCeIdNumber(ArrayListlist){Scanner sc=new Scanner(System.in);
String idNumber="";
loop:while(true){int count=0;
System.out.println("请输入您的身份证号码:");
idNumber=sc.next();
if(idNumber.length()==18){ char []charIddNumber= idNumber.toCharArray();
if(charIddNumber[0]!='0'){ for (int i = 0; i< charIddNumber.length-1; i++) { if(charIddNumber[i]>='0'&& charIddNumber[i]<='9'){ count++;
}
}
if(count==charIddNumber.length-1){ if((charIddNumber[17]>='0'&&charIddNumber[17]<='9')||charIddNumber[17]=='x'||charIddNumber[17]=='X'){ System.out.println("身份证验证成功!");
break loop;
}
}else{ System.out.println("前17为不全为数字,不符合要求,请重新输入!");
}
}else { System.out.println("身份证首位为0,不符合要求,请重新输入!");
}
}else{System.out.println("身份证长度不符合要求,请重新输入!");
}
}
return idNumber;
}
public static String ZhuCePassword(ArrayListlist){Scanner sc=new Scanner(System.in);
String password="";
while(true){System.out.println("请设置您的密码:");
String password1=sc.next();
System.out.println("请再次输入您的密码:");
String password2=sc.next();
if(password1.equals(password2)){System.out.println("密码设置成功!" );
password=password1;
break;
}
else{System.out.println("两次密码设置不一致,请重新设置密码:");
}
}
return password;
}
public static String ZhuCeUserName(ArrayListlist){User user=new User();
Scanner sc=new Scanner(System.in);
String username="";
loop: while(true){System.out.println("=====注册开始=====");
System.out.println("请输入用户名:");
username=sc.next();
char []charUserName=username.toCharArray();
int count=0;
int countLength=0;
boolean flag=isExist(list,username);
if(!flag){if(username.length()>=3&&username.length()<=15){for (int i = 0; i< charUserName.length; i++) {if((charUserName[i]>='a'&&charUserName[i]<='z')||(charUserName[i]>='A'&&charUserName[i]<='Z')||(charUserName[i]>='0'&&charUserName[i]<='9')){countLength++;
}
if((charUserName[i]>='a'&&charUserName[i]<='z')||(charUserName[i]>='A'&&charUserName[i]<='Z')){count++;
}
if(count>0&&(countLength== username.length())){System.out.println("用户名设置成功!");
user.setUserName(username);
break loop;
}
}
System.out.println("用户名不能是纯数字,请重新输入用户名进行注册!");
}else{System.out.println("用户名长度不符合要求,请重新注册!");
}
}else{System.out.println("该用户名已存在,请重新注册!");
}
}
return username;
}
public static void forgetPassword(ArrayListlist){Scanner sc=new Scanner(System.in);
User u=new User();
System.out.println("请输入用户名:");
String username=sc.next();
int index=getIndex(list,username);
u.setUserName(username);
boolean flag=isExist(list,username);
if(flag){System.out.println("请输入身份证号码:");
String idNumber=sc.next();
u.setIdNumber(idNumber);
System.out.println("请输入手机号码:");
String phoneNumber=sc.next();
u.setPhoneNumber(phoneNumber);
boolean flag1=idNumberExist(list,u);
boolean flag2=phoneNumberExist(list,u);
if(flag1&&flag2){System.out.println("请输入密码,进行修改:");
String newPassword=sc.next();
u.setPassword(newPassword);
list.set(index,u);
System.out.println("密码修改成功!");
}else{System.out.println("账号信息不匹配,修改失败!");
}
}else{System.out.println("用户名未注册!");
}
}
public static boolean isExist(ArrayListlist,String userName){ return getIndex(list,userName)>=0;
}
public static int getIndex(ArrayListlist,String userName){for (int i = 0; i< list.size(); i++) {User user=list.get(i);
String name=user.getUserName();
if(name.equals(userName)){return i;
}
}
return -1;
}
public static boolean passwordExist(ArrayListlist,User user){for (int i = 0; i< list.size(); i++) {User u=list.get(i);
String password=u.getPassword();
if(password.equals(user.getPassword())){return true;
}
}
return false;
}
public static boolean idNumberExist(ArrayListlist,User user){for (int i = 0; i< list.size(); i++) {User u=list.get(i);
String idNumber=u.getIdNumber();
if(idNumber.equals(user.getIdNumber())){return true;
}
}
return false;
}
public static boolean phoneNumberExist(ArrayListlist,User user){for (int i = 0; i< list.size(); i++) {User u=list.get(i);
String phoneNumber=u.getPhoneNumber();
if(phoneNumber.equals(user.getPhoneNumber())){return true;
}
}
return false;
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧