第一步:建立一個對應的用戶模型類java
用戶的對應模型類:User數組
屬性:帳號:usernamedom
屬性:密碼:password函數
屬性:聯繫方式:phoneNumber工具
屬性:郵箱:email測試
1 package cn.aurn.demo02; 2 /* 3 * 用戶模型類 4 */ 5 public class User { 6 //屬性 7 private String username;//帳號 8 private String password;//密碼 9 private String phoneNumber;//手機號 10 private String email;//郵件 11 12 //有參構造方法 13 public User(String username, String password, String phoneNumber, String email) { 14 this.username = username; 15 this.password = password; 16 this.phoneNumber = phoneNumber; 17 this.email = email; 18 } 19 20 //set和get方法 21 public String getUsername() { 22 return username; 23 } 24 25 public void setUsername(String username) { 26 this.username = username; 27 } 28 29 public String getPassword() { 30 return password; 31 } 32 33 public void setPassword(String password) { 34 this.password = password; 35 } 36 37 public String getPhoneNumber() { 38 return phoneNumber; 39 } 40 41 public void setPhoneNumber(String phoneNumber) { 42 this.phoneNumber = phoneNumber; 43 } 44 45 public String getEmail() { 46 return email; 47 } 48 49 public void setEmail(String email) { 50 this.email = email; 51 } 52 53 54 }
第二步:測試類:UserTestthis
提示用戶選擇操做,登陸以前要判斷存儲用戶信息的集合若是爲空,那就提示用戶當前沒有帳戶,須要先註冊。spa
1 package cn.aurn.demo02; 2 /** 3 * 用戶操做測試類 4 */ 5 import java.util.ArrayList; 6 import java.util.Scanner; 7 8 public class UserTest { 9 10 //用戶輸入對象 11 public static Scanner scanner = new Scanner(System.in); 12 13 //集合存儲用戶信息 14 public static ArrayList<User> users = new ArrayList<User>(); 15 16 //驗證碼工具對象 17 public static CodeUtils codes = new CodeUtils(); 18 19 //主函數 20 public static void main(String[] args) { 21 //用戶提示 22 System.out.println("*****歡迎來到打死你戰隊****** "); 23 24 while(true) { 25 System.out.println("請進行以下操做:一、登陸 二、註冊"); 26 //用戶輸入操做 27 String flag = scanner.nextLine(); 28 //判斷用戶操做 29 if (flag.equals("1")) { 30 //登陸,判斷集合中是否有用戶 31 if (users.isEmpty()) { 32 System.out.println("當前沒有用戶信息,請先註冊!"); 33 }else { 34 login(); 35 } 36 }else if (flag.equals("2")) { 37 regist(); 38 } 39 } 40 }
第三步:驗證碼工具類:CodeUtilscode
利用隨機數生成6位驗證碼(註冊時用)和4位驗證碼(登陸時用)。對象
1 package cn.aurn.demo02; 2 3 import java.util.Random; 4 5 /** 6 * 驗證碼生成工具類 7 */ 8 public class CodeUtils { 9 10 //建立一個數組對象 11 private char[] codes = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', 12 '0','1','2','3','4','5','6','7','8','9', 13 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; 14 15 //建立一個隨機數對象 16 private Random random = new Random(); 17 18 /* 19 * 隨機生成4位驗證碼 20 */ 21 public String getStringCode4() { 22 //空字符串 23 String code = ""; 24 //循環生成4位數驗證碼 25 for(int i = 0; i < 4; i++) { 26 //每循環一次,隨機拿一個驗證碼 27 int index = random.nextInt(codes.length); 28 //每拿到一個,就添加到空的字符串中拼接 29 code += codes[index]; 30 } 31 return code; 32 } 33 34 /* 35 * 隨機生成6位數驗證碼 36 */ 37 public String getStringCode6() { 38 //空字符串 39 String code = ""; 40 //循環生成4位數驗證碼 41 for(int i = 0; i < 6; i++) { 42 //每循環一次,我就隨機拿一個驗證碼 43 int index = random.nextInt(codes.length); 44 //每拿到一個,就添加到空的字符串中拼接 45 code += codes[index]; 46 } 47 return code; 48 } 49 }
第四步:註冊方法:regist()
一、提示用戶,輸入帳號,密碼,確認密碼,註冊手機號,驗證碼。
二、設置兩個開關:帳號是否重複:isFlag(默認是關的false,即帳號不重複);
註冊是否經過:isRegist(默認是開的true,即註冊經過)。
三、先判斷用戶驗證碼輸入的是否正確,不正確就關閉isRegist開關,不進行後面的,提醒用戶從新再來。
四、再判斷用戶輸入的密碼與確認密碼是否同樣,不同就關閉isRegist開關,不註冊,提示用戶從新再來。
五、for循環存儲用戶信息的集合,判斷用戶輸入的帳號是否已經存在在集合中,若是存在打開isFlag開關,關閉isRegist開關,提示用戶當前帳號已存在,從新輸入,
跳出循環; 若是不存在,就直接註冊,將用戶輸入的信息存儲在集合中。
1 /* 2 * 註冊方法 3 */ 4 private static void regist() { 5 //提示用戶 6 //帳號 7 System.out.println("請輸入您要註冊的帳號:"); 8 String username = scanner.nextLine(); 9 10 //密碼 11 System.out.println("請輸入您要註冊的密碼:"); 12 String password = scanner.nextLine(); 13 14 //確認密碼 15 System.out.println("請輸入您要註冊的確認密碼:"); 16 String repassword = scanner.nextLine(); 17 18 //手機號 19 System.out.println("請輸入您要註冊的手機號:"); 20 String phoneNumber = scanner.nextLine(); 21 22 //郵箱 23 System.out.println("請輸入您要註冊的郵箱:"); 24 String email = scanner.nextLine(); 25 26 //生成6位驗證碼 27 String code = codes.getStringCode6(); 28 System.out.println("請輸入驗證碼信息(區分大小寫):"+code); 29 String code1 = scanner.nextLine(); 30 31 //帳戶是否重複開關 32 boolean isFlag = false;//默認是關閉的,即帳號不重複 33 34 //是否經過註冊開關 35 boolean isRegist = true;//默認是打開的,即經過註冊 36 37 //判斷 38 if (code1.equals(code)) { 39 //驗證碼正確 40 if (password.equals(repassword)) { 41 //密碼與確認密碼正確 42 //循環遍歷帳戶信息存儲集合 43 for (User user : users) { 44 //判斷是否已經註冊過了 45 if (user.getUsername().equals(username)) { 46 //用戶輸入帳號已註冊存在 47 //打開重複開關 48 isFlag = true; 49 //關閉註冊 50 isRegist = false; 51 //跳出循環 52 break; 53 } 54 } 55 }else { 56 System.out.println("確認密碼與密碼不一致,請從新操做!"); 57 //關閉註冊按鈕 58 isRegist = false; 59 } 60 }else { 61 System.out.println("驗證碼輸入錯誤,請從新操做!"); 62 //關閉註冊按鈕 63 isRegist = false; 64 } 65 //帳號已註冊存在 66 if (isFlag) { 67 System.out.println("很遺憾,您輸入的帳號已註冊過,請從新輸入!"); 68 }else { 69 //帳號不存在,註冊 70 if (isRegist) { 71 User user = new User(username, repassword, phoneNumber, email); 72 //添加信息進集合 73 users.add(user); 74 //提示用戶 75 System.out.println("恭喜您,註冊成功!"); 76 } 77 } 78 }
第五步:登陸方法:login()
一、提示用戶,輸入帳號,密碼,驗證碼。
二、設置一個開關:是否登陸成功:isLogin(默認是關閉的false)。
三、先判斷用戶輸入的驗證碼是否正確,若是不正確,提示用戶驗證碼輸入錯誤,請從新操做。
四、for循環遍歷用戶信息集合,而後判斷用戶輸入的帳號和密碼與集合中的帳號與密碼是否同樣,若是同樣,打開IsLogin開關,提示用戶登陸成功,退出循環;
不然,提示用戶的帳號或密碼輸入錯誤,請從新操做。
1 /* 2 * 登陸方法 3 */ 4 private static void login() { 5 //提示用戶 6 // 帳號 7 System.out.println("請輸入登陸的帳號:"); 8 String username = scanner.nextLine(); 9 10 // 密碼 11 System.out.println("請輸入登陸的密碼:"); 12 String password = scanner.nextLine(); 13 14 // 生成4位驗證碼 15 String code = codes.getStringCode4(); 16 System.out.println("請輸入驗證碼信息(區分大小寫):" + code); 17 String code1 = scanner.nextLine(); 18 19 //設置登陸成功開關 20 boolean isLogin = false;//默認關閉的,即登錄失敗 21 22 //判斷驗證碼 23 if (code1.equals(code)) { 24 //驗證碼正確 25 //遍歷集合 26 for (User user : users) { 27 //判斷輸入的帳號與密碼與註冊的信息進行匹配 28 if (user.getUsername().equals(username) && user.getPassword().equals(password)) { 29 //登陸成功 30 isLogin = true; 31 System.out.println("登錄成功!"); 32 //退出循環 33 break; 34 } 35 } 36 //帳戶密碼輸入錯誤 37 if (!isLogin) { 38 System.out.println("帳號或密碼輸入錯誤,請從新登陸"); 39 } 40 }else { 41 System.out.println("驗證碼輸入錯誤,請從新操做!"); 42 } 43 }