需求:
为学生管理系统书写一个登陆、注册、忘记密码的功能。
只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。
代码实现:
main方法:
public static void main(String[] args) {
// 新建集合存放管理员信息
ArrayList<LoginRegister> list = new ArrayList<>();
// 新建管理员信息
LoginRegister manger1 = new LoginRegister("manger1", "reyF4HD4Yh0yQY8V", "410505201006200289", "15253614139");
LoginRegister manger2 = new LoginRegister("manger2", "4pMg2kBlzbIUOYPb", "230407192201272095", "14689569413");
LoginRegister manger3 = new LoginRegister("manger3", "DmXvIunxgi3AXlHx", "513423199007065318", "15709183373");
LoginRegister manger4 = new LoginRegister("manger4", "ozegkXS7dElCNCf6", "430523194911158694", "13173130728");
LoginRegister manger5 = new LoginRegister("manger5", "V4GpwnkfoXMmWeWl", "632725197811024206", "15088666544");
//添加管理员信息
list.add(manger1);
list.add(manger2);
list.add(manger3);
list.add(manger4);
list.add(manger5);
int chose;
Scanner sc = new Scanner(System.in);
System.out.println("欢迎来到学生管理系统");
while (true) {
while (true) {
System.out.println("请选择操作 1登录 2注册 3忘记密码");
String input = sc.next();
chose = choseCheck(input);
if (chose != -1) {
break;
} else {
System.out.println("输入有误,请重新输入:");
}
}
switch (chose) {
case 1: {
login(list);
continue;
}
case 2: {
register(list);
continue;
}
case 3: {
forget(list);
}
}
}
}
方法函数:
public static int choseCheck(String chose) {
if (chose.equals("1")) {
return 1;
}
if (chose.equals("2")) {
return 2;
}
if (chose.equals("3")) {
return 3;
}
return -1;
}
public static boolean usernameCheck(String username) {
int count = 0;
if (username.length() < 3 || username.length() > 15) {
System.out.println("用户名长度必须在3~15位之间,请重新输入用户名:");
return false;
}
for (int i = 0; i < username.length(); i++) {
char c = username.charAt(i);
if (c > '9' || c < '0') {
count++;
}
}
if (count == 0) {
System.out.println("用户名不合法,请重新输入用户名:");
return false;
}
return true;
}
public static boolean usernameRepeated(ArrayList<LoginRegister> list, String username) {
for (int i = 0; i < list.size(); i++) {
String str = list.get(i).getUsername();
if (username.equals(str)) {
System.out.println("用户名重复,请重新输入用户名:");
return false;
}
}
return true;
}
public static boolean usernameExist(ArrayList<LoginRegister> list, String username) {
for (int i = 0; i < list.size(); i++) {
String str = list.get(i).getUsername();
if (username.equals(str)) {
return true;
}
}
return false;
}
public static boolean idCardCheck(String idCard) {
int len = idCard.length();
int count = 0;
String index = idCard.substring(0, 1);
if (len != 18 || index.equals("0")) {
System.out.println("身份证输入有误,请重新输入:");
return false;
}
for (int i = 0; i < len - 1; i++) {
char c = idCard.charAt(i);
if (c > '9' || c < '0') {
count++;
}
}
if (count != 0) {
System.out.println("身份证输入有误,请重新输入:");
return false;
}
String Index = idCard.substring(17);
char c = idCard.charAt(len - 1);
boolean flag;
if (c >= '0' && c <= '9') {
flag = true;
} else {
flag = false;
}
if (Index.equals("X") || idCard.substring(17).equals("x") || flag) {
return true;
} else {
return false;
}
}
public static boolean phoneNumCheck(String phoneNum) {
int len = phoneNum.length();
int count = 0;
String index = phoneNum.substring(0, 1);
if (len != 11) {
System.out.println("手机号输入有误,请重新输入:");
return false;
}
if (index.equals("0")) {
System.out.println("手机号输入有误,请重新输入:");
return false;
}
for (int i = 0; i < len; i++) {
char c = phoneNum.charAt(i);
if (c > '9' || c < '0') {
count++;
}
}
if (count != 0) {
System.out.println("手机号输入有误,请重新输入:");
return false;
}
return true;
}
public static String verify() {
char chara[] = new char[52];
for (int i = 0; i < chara.length; i++) {
if (i <= 25) {
//添加小写字母
chara[i] = (char) (97 + i);
} else {
//添加大写字母
chara[i] = (char) (65 + i - 26);
}
}
Random randomIndex = new Random();
String result = "";
for (int i = 0; i < 4; i++) {
int cap = randomIndex.nextInt(52);
result = result + chara[cap];
}
int num = randomIndex.nextInt(10);
result = result + num;
char[] c = result.toCharArray();
Random random = new Random();
for (int i = 0; i < c.length; i++) {
int ran = random.nextInt(result.length());
char temp = c[i];
c[i] = c[ran];
c[ran] = temp;
}
result = new String(c);
return result;
}
public static void login(ArrayList<LoginRegister> list) {
Scanner sc = new Scanner(System.in);
String username, password2, rightVerify, verify, name, pass;
System.out.println("请输入需要登录的用户名:");
while (true) {
username = sc.next();
boolean input = usernameCheck(username);
if (input) {
break;
}
}
boolean exist = usernameExist(list, username);
if (!exist) {
System.out.println("用户名未注册,请先注册");
return;
}
rightVerify = verify();
System.out.println("当前正确验证码为:" + rightVerify);
System.out.println("请输入验证码:");
while (true) {
verify = sc.next();
if (verify.equals(rightVerify)) {
break;
} else {
System.out.println("输入有误,请重新输入:");
}
}
int count = 3;
System.out.println("请输入密码:");
while (true) {
password2 = sc.next();
for (int i = 0; i < list.size(); i++) {
name = list.get(i).getUsername();
pass = list.get(i).getPassword();
if (username.equals(name) && password2.equals(pass)) {
System.out.println("登录成功");
return;
} else {
if (count == 0) {
System.out.println("您的错误次数已用完");
return;
}
System.out.println("密码错误," + "还剩余" + count + "次机会,请重新输入:");
break;
}
}
count--;
}
}
public static void register(ArrayList<LoginRegister> list) {
Scanner sc = new Scanner(System.in);
String username, password, idCard, phoneNum;
// 注册用户名
System.out.println("请输入需要注册的用户名:");
while (true) {
username = sc.next();
boolean input = usernameCheck(username);
boolean repeated = usernameRepeated(list, username);
if (input && repeated) {
break;
}
}
// 注册密码
System.out.println("请输入需要注册的密码:");
while (true) {
password = sc.next();
System.out.println("请再次输入需要注册的密码:");
String password1 = sc.next();
if (password1.equals(password)) {
break;
} else {
System.out.println("两次密码输入不一致,请重新输入密码:");
}
}
// 注册身份证
System.out.println("请输入身份证号:");
while (true) {
idCard = sc.next();
boolean flag = idCardCheck(idCard);
if (flag) {
break;
}
}
public static void forget(ArrayList<LoginRegister> list) {
String name, idCard, phoneNum, infoName, infoIdCard, infoPhoneNum, password, infoPassword;
System.out.println("请输入您的用户名:");
Scanner sc = new Scanner(System.in);
name = sc.next();
boolean flag = usernameExist(list, name);
if (!flag) {
System.out.println("用户名未注册,请先注册");
return;
}
System.out.println("请输入身份证号码:");
while (true) {
idCard = sc.next();
boolean flagId = idCardCheck(idCard);
if (flagId) {
break;
}
}
System.out.println("请输入手机号码:");
while (true) {
phoneNum = sc.next();
boolean flagPhone = phoneNumCheck(phoneNum);
if (flagPhone) {
break;
}
}
for (int i = 0; i < list.size(); i++) {
infoName = list.get(i).getUsername();
if (name.equals(infoName)) {
infoIdCard = list.get(i).getIdCard();
infoPhoneNum = list.get(i).getPhoneNum();
if (!idCard.equals(infoIdCard) || !infoPhoneNum.equals(phoneNum)) {
System.out.println("账号信息不匹配,修改失败");
return;
} else {
break;
}
}
}
System.out.println("请输入需要修改的密码:");
while (true) {
password = sc.next();
System.out.println("请再次输入需要修改的密码:");
String password1 = sc.next();
if (password1.equals(password)) {
for (int i = 0; i < list.size(); i++) {
infoName = list.get(i).getUsername();
if (name.equals(infoName)) {
list.get(i).setPassword(password);
}
}
break;
} else {
System.out.println("两次密码输入不一致,请重新输入密码:");
}
}
}
JavaBean:
public class LoginRegister {
private String username;
private String password;
private String idCard;
private String phoneNum;
public LoginRegister() {
}
public LoginRegister(String username, String password, String idCard, String phoneNum) {
this.username = username;
this.password = password;
this.idCard = idCard;
this.phoneNum = phoneNum;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
}