package itheima.Student;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作1登录 2注册 3忘记密码 4退出");
ArrayList<User> list = new ArrayList<>();
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的选择");
loop:
while (true) {
String choose = sc.next();
switch (choose) {
case "1" -> logon(list);
case "2" -> register(list);
case "3" -> forgetPassword(list);
case "4" -> {
System.out.println("退出");
break loop;
}
default -> System.out.println("没有该选项");
}
}
}
//忘记密码
private static void forgetPassword(ArrayList<User> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的用户名");
String name = sc.next();
int pointer = getIndenx(list, name);
if (pointer < 0) {
System.out.println("您输入的用户名未注册,请先注册");
return;
}
System.out.println("请输入您的手机号码");
String ID = sc.next();
System.out.println("请输入您的身份证号");
String phone = sc.next();
if (verifyPhoneNumberID(list, ID, phone, pointer)) {
//true
//一致就提示输出密码,进行修改
System.out.println("请输入您的新密码");
String newpassword = sc.next();
list.get(pointer).setPassword(newpassword);
System.out.println("修改成功");
} else {
//false
System.out.println("账户信息不匹配,修改失败");
}
}
//注册
private static void register(ArrayList<User> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的用户名");
String name;
loop:
while (true) {
name = sc.next();
int count = getIndenx(list, name);
boolean b = getLong(name);
boolean b1 = getShuZi(name);
if ((count < 0) && (b == true) && (b1 == true)) {
System.out.println("验证成功");
break loop;
} else {
System.out.println("验证失败,请重新注册");
}
}
//验证密码
String password = " ";
ArrayList<String> list1 = new ArrayList<>();
while (true) {
for (int i = 1; i < 3; i++) {
System.out.println("请输入" + i + "次" + "密码");
password = sc.next();
list1.add(password);
}
if (list1.get(0).equals(list1.get(1))) {
System.out.println("密码一致,验证成功");
break;
} else {
System.out.println("两次密码不一致,请重新输入");
}
}
//验证身份证
System.out.println("请输入您的身份证");
String id;
while (true) {
id = sc.next();
boolean b = verifyId(id);
if (b) {
break;
} else {
System.out.println("身份证不符合,请重新输入");
}
}
//验证手机号
System.out.println("请输入您的手机号");
String phone;
while (true) {
phone = sc.next();
boolean b2 = verifyPhoneNumber(phone);
if (b2) {
System.out.println("手机号验证成功");
break;
}
}
//当上面的验证全部执行完毕后,就赋值给对象
User user = new User(name, password, id, phone);
//当赋值完后就添加进集合当中
list.add(user);
System.out.println("添加成功");
}
//登陆2
public static void logon(ArrayList<User> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的用户名");
String name = sc.next();
int pointer = getIndenx(list, name);
if (pointer < 0) {
System.out.println("您输入的用户名未注册,请先注册");
return;
}
//获取验证码
while (true) {
String code = getCode();
System.out.println("请输入验证码," + "验证码为" + code);
String newcode = sc.next();
if (newcode.equals(code)) {
break;
} else {
System.out.println("验证码输入错误");
}
}
//验证登陆密码
for (int i = 3; i > 0; i--) {
System.out.println("请输入您的密码");
String password = sc.next();
int indenx = getIndenx(list, name);
if (list.get(indenx).getPassword().equals(password)) {
break;
} else {
System.out.println("密码输入错误,请重新输入,您还有" + (i - 1) + "次机会");
}
if ((i == 1) && (list.get(indenx).equals(password) == false)) {
System.out.println("三次密码错误,用户被冻结5分钟");
}
}
}
//判断唯一
public static int getIndenx(ArrayList<User> list, String name) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getName().equals(name)) {
return i;
}
}
return -1;
}
//判断长度
public static boolean getLong(String name) {
if ((name.length() >= 3) && (name.length() <= 15)) {
return true;
}
return false;
}
//是否纯数字
public static boolean getShuZi(String name) {
int count = 0;
int capitalization = 0;
int letter = 0;
for (int i = 0; i < name.length(); i++) {
if (((name.charAt(i)) >= 48) && ((name.charAt(i)) <= 57)) {
count++;
}
if (((name.charAt(i)) >= 65) && ((name.charAt(i)) <= 90)) {
capitalization++;
}
if (((name.charAt(i)) >= 97) && ((name.charAt(i)) <= 122)) {
letter++;
}
}
if ((capitalization > 0 || letter > 0) && (count > 0)) {
return true;
}
return false;
}
//密码输入
public static boolean verifyPassword(String password) {
return false;
}
//身份证号码验证
public static boolean verifyId(String id) {
boolean b = getChangDu(id);
if (b) {
System.out.println("身份证符合要求");
return true;
}
return false;
}
//判断长度是否为18
private static boolean getChangDu(String id) {
//changdu
if (id.length() != 18) {
return false;
}
if (id.charAt(0) == '0') {
return false;
}
for (int i = 0; i < id.length() - 1; i++) {
if (!(id.charAt(i) >= '0' && id.charAt(i) <= '9')) {
return false;
}
}
if ((id.charAt(id.length() - 1) >= '0' && id.charAt(id.length() - 1) <= '9') || (id.charAt(id.length() - 1) == 'X') || (id.charAt(id.length() - 1) == 'x')) {
return true;
} else {
return false;
}
}
//手机号码验证
public static boolean verifyPhoneNumber(String phoneNumber) {
boolean b = phoneLong(phoneNumber);
if (b) {
return true;
}
return false;
}
public static boolean phoneLong(String a) {
if (a.length() != 11) {
return false;
}
if (a.charAt(0) == '0') {
return false;
}
for (int i = 0; i < a.length(); i++) {
if (!(a.charAt(i) >= '0' && a.charAt(i) <= '9')) {
return false;
}
}
return true;
}
public static String getCode() {
//创建一个容器,把4个字母和1个数字随机放入
StringBuilder sb = new StringBuilder();
//随机一个数字
Random r = new Random();
int number = r.nextInt(10);
sb.append(number);
//随机字母
String letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
//获取四个随机字母
for (int i = 0; i < 4; i++) {
int number1 = r.nextInt(letter.length());
char c = letter.charAt(number1);
sb.append(c);
}
String code = sb.toString();
char[] codeArr = code.toCharArray();
for (int i = 0; i < codeArr.length; i++) {
int count = r.nextInt(5);
char c = codeArr[count];
codeArr[count] = codeArr[i];
codeArr[i] = c;
}
String s = "";
for (int i = 0; i < codeArr.length; i++) {
s = s + codeArr[i];
}
return s;
}
public static boolean verifyPhoneNumberID(ArrayList<User> list, String id, String phone, int index) {
if (list.get(index).getId().equalsIgnoreCase(id) && list.get(index).getPhoneNumber().equals(phone)) {
return true;
}
return false;
}
}
为什么我键盘录入的和我注册时候输入的明明是一样的,方法却判定是false呢?
最新推荐文章于 2024-05-23 11:36:03 发布