用户管理系统–JAVA
【题目来源-------黑马程序员Java零基础视频教程_上部】
具体要求:
为学生管理系统书写一个登陆、注册、忘记密码的功能。
只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。
分析:
登录界面:
System.out.println(“欢迎来到学生管理系统”);
System.out.println(“请选择操作1登录 2注册 3忘记密码”);
用户类:
属性:用户名、密码、身份证号码、手机号码
注册功能:
1,用户名需要满足以下要求:
验证要求:
用户名唯一
用户名长度必须在3~15位之间
只能是字母加数字的组合,但是不能是纯数字
2,密码键盘输入两次,两次一致才可以进行注册。
3,身份证号码需要验证。
验证要求:
长度为18位
不能以0为开头
前17位,必须都是数字
最为一位可以是数字,也可以是大写X或小写x
4,手机号验证。
验证要求:
长度为11位
不能以0为开头
必须都是数字
登录功能:
1,键盘录入用户名
2,键盘录入密码
3,键盘录入验证码
验证要求:
用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
判断验证码是否正确,如不正确,重新输入
再判断用户名和密码是否正确,有3次机会
忘记密码:
1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
2,键盘录入身份证号码和手机号码
3,判断当前用户的身份证号码和手机号码是否一致,
如果一致,则提示输入密码,进行修改。
如果不一致,则提示:账号信息不匹配,修改失败。
验证码规则:
长度为5
由4位大写或者小写字母和1位数字组成,同一个字母可重复
数字可以出现在任意位置
比如:
aQa1K
完整代码:
(如有错误,请各位大佬指教(●’◡’●))
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class UserSystem {
public static void main(String[] args) {
ArrayList<User>list=new ArrayList<>();
loop: while(true){
System.out.println("--------------------------------------------");
System.out.println("欢迎来到用户管理系统");
System.out.println("请选择操作 1登录 2注册 3忘记密码 (任意键)退出管理系统");
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(ArrayList<User>list){
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(){
//把大写字母,小写字母放到一个数组中
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 四位是字母,一位是数字
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);
//其中数字只有一维,位置随机
//把字符串转换为字符数组,把最后一个数字元素与其他随机位置交换
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);//从字符数组转换为字符
return res;
}
public static void ZhuCe(ArrayList<User>list){
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(ArrayList<User>list){
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("手机号码不全为数字,请重新输入!");
}
}else{
System.out.println("手机号码第一位为0,不符合要求,请重新输入!");
}
}else{
System.out.println("手机号码长度不符合要求(长度不为11),请重新输入!");
}
}
return phoneNumber;
}
public static String ZhuCeIdNumber(ArrayList<User>list){
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为不全为数字,不符合要求,请重新输入!");
}
}else {
System.out.println("身份证首位为0,不符合要求,请重新输入!");
}
}else{
System.out.println("身份证长度不符合要求,请重新输入!");
}
}
return idNumber;
}
public static String ZhuCePassword(ArrayList<User>list){
Scanner sc=new Scanner(System.in);
String password="";
while(true){
System.out.println("请设置您的密码:");
String password1=sc.next();
System.out.println("请再次输入您的密码:");
String password2=sc.next();
if(password1.equals(password2)){
System.out.println("密码设置成功!" );
password=password1;
break;
}
else{
System.out.println("两次密码设置不一致,请重新设置密码:");
}
}
return password;
}
public static String ZhuCeUserName(ArrayList<User>list){
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("用户名设置成功!");
user.setUserName(username);
break loop;
}
}
System.out.println("用户名不能是纯数字,请重新输入用户名进行注册!");
}else{
System.out.println("用户名长度不符合要求,请重新注册!");
}
}else{
System.out.println("该用户名已存在,请重新注册!");
}
}
return username;
}
public static void forgetPassword(ArrayList<User>list){
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(ArrayList<User>list,String userName){
return getIndex(list,userName)>=0;
}
public static int getIndex(ArrayList<User>list,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(ArrayList<User>list,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(ArrayList<User>list,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(ArrayList<User>list,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;
}
}