package StudentManageSystemEvolve;
import com.sun.javafx.geom.transform.Identity;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
while (true) {
System.out.println("1.用户注册");
System.out.println("2.用户登录");
System.out.println("3.退出");
System.out.print("请输入你要执行的操作:");
String index;
Scanner sc = new Scanner(System.in);
index = sc.next();
switch (index){
case "1":
userEnroll(list);
System.out.println(list.size());
print(list);
break;
case "2":
userLogin(list);
break;
case "3":
System.exit(0);
default:
System.out.println("没有这个选项,请重新输入!");
}
}
}
//用户注册
public static ArrayList<User> userEnroll(ArrayList<User> list){
String identity;
String phone;
System.out.print("请输入你要注册的用户名:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
//判断用户名
boolean b = userFormat(str);
if (!b){
return list;
}
//判断用户名是否唯一
String str1;
int index = ifId(list,str);
if (index>=0){
System.out.println("用户名已经被注册,请重新输入");
return list;
}else {
while (true) {
//判断密码是否正确
System.out.print("请输入密码:");
str1 = sc.next();
System.out.print("请确认密码:");
String str2 = sc.next();
if (!str1.equals(str2)){
System.out.println("两次密码输入部一致,请重新输入!");
}else {
break;
}
}
//输入身份证号码
System.out.println("请输入身份证号码:");
identity = sc.next();
//判断身份证号码是否输入正确
boolean b1 = identityNumber(identity);
if (!b1){
return list;
}
//输入手机号码
System.out.println("请输入手机号码");
phone = sc.next();
//手机号验证
boolean b2 = phoneNUmber(phone);
if (!b2){
while (true){
identityNumber(identity);
if (b2){
break;
}
}
}
}
User u = new User(str,str1, identity, phone);
list.add(u);
return list;
}
//判断用户名是否唯一
public static int ifId(ArrayList<User> list, String id){
User u = new User();
for (int i = 0; i < list.size(); i++) {
u = list.get(i);
if (u!=null){
if (u.getId().equals(id)){
return i;
}
}
}
return -1;
}
//判断用户名格式是否输入正确
public static boolean userFormat(String id){
if (id.length()<3||id.length()>15){
System.out.println("用户名格式输入错误!");
return true;
}
char c;
int count = 0;
int index = 0;
for (int i = 0; i < id.length(); i++) {
if (count!=0&&index!=0){
break;
}
c = id.charAt(i);
if (c>='0'&&c<='9'){
count++;
}
if ((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
index++;
}
}
if (count==0||index==0){
System.out.println("用户名格式输入错误");
return false;
}
return true;
}
//判断身份证号码是否输入正确
public static boolean identityNumber(String identity){
if (identity.length()!=18){
System.out.println("身份证长度不正确!");
return false;
}
char c = identity.charAt(0);
if (c=='0'){
System.out.println("身份证不能以0开头");
return false;
}
for (int i = 0; i < identity.length(); i++) {
c = identity.charAt(i);
if (c!=identity.length()-1){
if (c<'0'||c>'9'){
System.out.println("身份证前17位必须以数字开头");
return false;
}
}else {
if (c<'0'||c>'9'||c!='X'||c!='x'){
System.out.println("身份证第18位必须是数字或者大写X或者小写x");
return false;
}
}
}
return true;
}
//手机号验证
public static boolean phoneNUmber(String phone){
if (phone.length()!=11){
System.out.println("手机号长度不正确!");
return false;
}
char c = phone.charAt(0);
if (c=='0'){
System.out.println("手机号开头不能是0!");
return false;
}
for (int i = 0; i < phone.length(); i++) {
c = phone.charAt(i);
if (c<'0'||c>'9'){
System.out.println("手机号必须是数字!");
return false;
}
}
return true;
}
//输出打印学生信息
public static void print(ArrayList<User> list){
User u;
String s1;
for (int i = 0; i < list.size(); i++) {
u = list.get(i);
System.out.println(u.getId()+" "+u.getPassword()+" "+u.getIdentity()+" "+u.getPhone());
}
}
//登录功能
public static ArrayList<User> userLogin(ArrayList<User> list){
String id = " ";
String password = " ";
ArrayList<User> list1 = new ArrayList<>();
//判断用户有没有注册
if (list.size()==0){
System.out.println("你还没有注册,请注册后登录");
return list1;
}
//键盘录入用名名
int k = 0;
int count = 0;
while (k<3) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入用户名:");
id = sc.next();
System.out.print("请输入密码:");
password = sc.next();
//生成验证码
String str = captcha();
System.out.println("验证码:"+str);
System.out.print("请输入验证码:");
String captcha = sc.next();
User u;
//判断用户验证码输入是否正确
if (captcha.equals(str)){
}else {
System.out.println("输入错误,请重新输入!");
}
for (int i = 0; i < list.size(); i++) {
u = list.get(i);
if (u.getId().equals(id)&&u.getPassword().equals(password)){
count++;
}else{
System.out.println("用户名或者密码输入错误,请重新输入!");
}
}
k++;
}
Scanner sc = new Scanner(System.in);
String passwork;
if (count!=0){
System.out.println("登录成功!");
}else {
for (int i = 0; i < list.size(); i++) {
System.out.println("登录失败,通过身份证和手机号修改密码!");
User u = list.get(i);
if (u.getId().equals(id)){
System.out.println("请输入身份证信息:");
String identity = sc.next();
System.out.println("请输入手机号码:");
String phone = sc.next();
if (identity.equals(u.getIdentity())&&phone.equals(u.getPassword())){
System.out.println("请输入修改后的密码:");
passwork = sc.next();
User u1 = new User(id,password,identity,phone);
list.set(i,u);
}else{
System.out.println("信息匹配不成功,修改失败!");
}
}else {
System.out.println("未注册!");
}
}
}
return list;
}
//生成验证码
public static String captcha(){
//定义数组存储a-z和A-z和0-9组成
char []arr = {'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','A','B','C'
,'D','E','F','G','H','I','G','K','L','M'
,'N','O','P','Q','R','S','T','U','V','W'
,'X','Y','Z'};
char []arr1 = {'0','1','2','3','4','5','6','7','8','9'};
//采用随机方法生成四个随机的大小写字母
Random r = new Random();
char [] arr3 = new char[5];
int index;
for (int i = 0; i < arr3.length-1; i++) {
index = r.nextInt(52);
arr3[i] = arr[index];
}
index = r.nextInt(9);
arr3[arr3.length-1] = arr1[index];
//将随机字符串中的类内容打乱
index = r.nextInt(5);
char c = arr3[arr3.length-1];
arr3[arr3.length-1] = arr3[index];
arr3[index] = c;
String str = "";
for (int i = 0; i < arr3.length; i++) {
str+=arr3[i];
}
return str;
}
}
package StudentManageSystemEvolve;
public class User {
//用户名 密码 身份证号码 手机号码
private String id;
private String password;
private String Identity;
private String Phone;
public User() {
}
public User(String id, String password, String identity, String phone) {
this.id = id;
this.password = password;
Identity = identity;
Phone = phone;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getIdentity() {
return Identity;
}
public void setIdentity(String identity) {
Identity = identity;
}
public String getPhone() {
return Phone;
}
public void setPhone(String phone) {
Phone = phone;
}
}