【題目來源-------黑馬程序員Java零基礎(chǔ)視頻教程_上部】
具體要求:
? 為學(xué)生管理系統(tǒng)書寫一個登陸、注冊、忘記密碼的功能。
? 只有用戶登錄成功之后,才能進入到學(xué)生管理系統(tǒng)中進行增刪改查操作。
分析:
登錄界面:
System.out.println(“歡迎來到學(xué)生管理系統(tǒng)”);
System.out.println(“請選擇操作1登錄 2注冊 3忘記密碼”);
用戶類:
? 屬性:用戶名、密碼、身份證號碼、手機號碼
注冊功能:
? 1,用戶名需要滿足以下要求:
? 驗證要求:
? 用戶名唯一
? 用戶名長度必須在3~15位之間
? 只能是字母加數(shù)字的組合,但是不能是純數(shù)字
? 2,密碼鍵盤輸入兩次,兩次一致才可以進行注冊。
? 3,身份證號碼需要驗證。
? 驗證要求:
? 長度為18位
? 不能以0為開頭
? 前17位,必須都是數(shù)字
? 最為一位可以是數(shù)字,也可以是大寫X或小寫x
? 4,手機號驗證。
? 驗證要求:
? 長度為11位
? 不能以0為開頭
? 必須都是數(shù)字
登錄功能:
? 1,鍵盤錄入用戶名
? 2,鍵盤錄入密碼
? 3,鍵盤錄入驗證碼
驗證要求:
? 用戶名如果未注冊,直接結(jié)束方法,并提示:用戶名未注冊,請先注冊
? 判斷驗證碼是否正確,如不正確,重新輸入
? 再判斷用戶名和密碼是否正確,有3次機會
忘記密碼:
? 1,鍵盤錄入用戶名,判斷當前用戶名是否存在,如不存在,直接結(jié)束方法,并提示:未注冊
? 2,鍵盤錄入身份證號碼和手機號碼
? 3,判斷當前用戶的身份證號碼和手機號碼是否一致,
? 如果一致,則提示輸入密碼,進行修改。
? 如果不一致,則提示:賬號信息不匹配,修改失敗。
驗證碼規(guī)則:
? 長度為5
? 由4位大寫或者小寫字母和1位數(shù)字組成,同一個字母可重復(fù)
? 數(shù)字可以出現(xiàn)在任意位置
比如:
? 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("歡迎來到用戶管理系統(tǒng)");
System.out.println("請選擇操作 1登錄 2注冊 3忘記密碼 (任意鍵)退出管理系統(tǒng)");
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(){//把大寫字母,小寫字母放到一個數(shù)組中
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 四位是字母,一位是數(shù)字
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);
//其中數(shù)字只有一維,位置隨機
//把字符串轉(zhuǎn)換為字符數(shù)組,把最后一個數(shù)字元素與其他隨機位置交換
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);//從字符數(shù)組轉(zhuǎn)換為字符
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("手機號碼不全為數(shù)字,請重新輸入!");
}
}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為不全為數(shù)字,不符合要求,請重新輸入!");
}
}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("請設(shè)置您的密碼:");
String password1=sc.next();
System.out.println("請再次輸入您的密碼:");
String password2=sc.next();
if(password1.equals(password2)){System.out.println("密碼設(shè)置成功!" );
password=password1;
break;
}
else{System.out.println("兩次密碼設(shè)置不一致,請重新設(shè)置密碼:");
}
}
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("用戶名設(shè)置成功!");
user.setUserName(username);
break loop;
}
}
System.out.println("用戶名不能是純數(shù)字,請重新輸入用戶名進行注冊!");
}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;
}
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧