1.使用面向对象编程思想设计实现用户注册,登录功能.
启动程序选择操作功能:1.注册,2.登录,3退出;
输入1进入注册流程,提示用户输入手机号,密码,手机号密码格式需要验证.
输入符合规则后将用户信息存储(存储到用户对象,将用户对象存储到数组假设数组长度为100),回到功能选择.
输入2进入用户登录流程,提示用户输入手机号,密码,手机号密码格式需要验证.
输入符合规则后 与之前保存的用户信息比较,手机号和密码是否存在.
判断登录能否成功.
3次输入错误,提示账号锁定,程序终止.
输入3 会退出操作
个人的思路:
将注册功能和登录功能分开写;然后再其中调用输入手机号和密码的格式判断;
启动类:
import java.util.Scanner;
/**
* @create 2021-05-17 16:51
*/
//把注册和登录方法分开写;
public class Demo{
//主方法;
public static void main(String[] args) {
opper();
}
//创建长度为100的数组;
static User[] users=new User[100];
//程序的操作启动方法;
public static void opper(){
//这里写一个outer1标签来指定操作符,输入错误而就会跳转回来;
outer:
for (int i = 0; i <1000; i++) {
System.out.println("选择操作功能:1.注册,2.登录,3退出");
Scanner scanner=new Scanner(System.in);
int opr = scanner.nextInt();
while(true){
switch (opr){
//注册:
case 1:
zhuce_ZH();
continue outer;
//登录:
case 2:
denglu_ZH();
break;
//退出系统:
case 3:
System.out.println("退出系统.");
return;
//默认操作:
default:
System.out.println("操作符错误,重新输入.");
continue outer;
}
}
}
}
//写注册方法;
public static void zhuce_ZH(){
Scanner scanner=new Scanner(System.in);
System.out.println("注册输入手机号:");
String phone=scanner.next();
System.out.println("注册输入密码:");
String password=scanner.next();
//判断格式;
boolean res3=panduan_GS(phone, password);
//格式正确则可以注册;
if(res3==true){
User user=new User(phone,password);
for (int i = 0; i < users.length; i++) {
users[i]=user;
}
System.out.println("注册完成,回到功能选择.");
}
else{
System.out.println("格式不对!");
}
}
//写登录方法;
public static void denglu_ZH(){
//设置返回点outer1:
outer1:
for (int number=0; number<4 ;number++) {
Scanner scanner = new Scanner(System.in);
System.out.println("登录输入手机号:");
String phone = scanner.next();
System.out.println("登录输入密码:");
String password = scanner.next();
//统计输入错误的次数;
//判断格式;
boolean res4 = panduan_GS(phone, password);
if (res4 == true) {
for (int i = 0; i < users.length; i++) {
while (users[i].getPassword() != null && users[i].getPhone() != null) {
if (users[i].getPhone().equals(phone) && users[i].getPassword().equals(password)) {
System.out.println("手机号,密码存在; 登录能成功");
number--;
//正常关闭系统;
System.exit(0);
} else {
//由于number从零开始,那么number为2时就是第三次了,终结程序;
while (number==2) {
System.out.println("写错了3次,程序终止!");
System.exit(1);
}
//输入错误,返回到outer1标签处;
continue outer1;
}
}
}
}
else {
System.out.println("格式不对!");
number--;
}
}
}
//手机号,密码的格式判断方法;
public static boolean panduan_GS(String phone,String password){
//对手机号进行检测
//11位数号码;第一位为1,第二位为3,5,6,7,9其中的一个;
boolean res1=phone.matches("[1][35679]\\d{9}");
//对密码进行检测
//6位数密码;
boolean res2=password.matches("\\w{6}");
//格式都正确,返回true;
if((res1==true)&&(res2==true)){
return true;
}
else {
return false;
}
}
}
用户信息类:
//用户信息类;
public class User {
//私有属性的phone和password;
private String phone;
private String password;
//重写toString方法
@Override
public String toString() {
return "User{"+"手机号phone="+phone+"密码password="+password+'}';
}
//构造方法;
//无参构造方法;
public User() {
}
//有参数构造方法;
public User(String phone, String password) {
this.phone = phone;
this.password = password;
}
//get,set获取设置私有属性的方法
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}