package usersystem;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class UserSystem {
public static void main(String[] args) {
// TODO code application logic here
UserDao dao = new UserDaoForArray();
Application app=new Application(dao);
System.out.println("******注册用户******");
app.registe();
System.out.println("******登录******");
app.login();
}
}
interface UserDao {
public User getUser(String userName,String password);
public boolean addUser(User user);
}
class UserDaoForArray implements UserDao{
private User[] data;
private int count=0;
public UserDaoForArray(){
data=new User[10];
}
public boolean addUser(User user) {
if(count==data.length){
return false;
}
for(int i=0;i<count;i++){
if(data[i].getName().equals(user.getName())){
return false;
}
}
data[count]=user;
count++;
return true;
}
public User getUser(String userName, String password) {
for(int i=0;i<count;i++){
if(data[i].getName().equals(userName) && data[i].getPassword().equals(password) ){
return data[i];
}
}
return null;
}
}
class User {
private String name;
private String password;
private String email;
private String qq;
private Date birthday;
private String phoneNumber;
public User(String name, String password, String email, String qq,
Date birthday, String phoneNumber) {
super();
this.name = name;
this.password = password;
this.email = email;
this.qq = qq;
this.birthday = birthday;
this.phoneNumber = phoneNumber;
}
/*public User() {
super();
// TODO Auto-generated constructor stub
}*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String toString(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
StringBuilder builder = new StringBuilder("");
builder.append("用户名:"+name+"\n");
builder.append("密码:"+password+"\n");
builder.append("email:"+email+"\n");
builder.append("QQ:"+qq+"\n");
builder.append("生日:"+sdf.format(birthday)+"\n");//format方法:Date数据转换成String
builder.append("手机:"+phoneNumber);
return builder.toString();
}
}
class Application {
private UserDao dao;
private String regex_name="\\w{6,8}";
private String regex_password="[a-zA-Z]{4,8}";
private String regex_email="[a-zA-Z0-9_+.-]+@([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9]{2,4}";
private String regex_qq="[1-9][0-9]{4,11}";
private String regex_birthday="(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)";
private String regex_phoneNumber="((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[05-9]))\\d{8}";
public Application(UserDao dao){
this.dao=dao;
}
public void setDao(UserDao dao) {
this.dao = dao;
}
public void login(){
Scanner scn=new Scanner(System.in);
System.out.print("请输入用户名:");
String userName=scn.next();
System.out.print("请输入密码:");
String password=scn.next();
User user=dao.getUser(userName,password);
if(user==null){
System.out.println("登录失败,用户名或密码不正确");
}else{
System.out.println(user.getName()+"已登录");
}
}
public void registe(){
Scanner scn=new Scanner(System.in);
System.out.print("请输入用户名:");
System.out.println("用户名(字母、数字和下划线)6-8个字符:");
while(!scn.hasNext(regex_name)){
scn.next();
System.out.println("输入不合要求,重新输入!");
}
String userName=scn.next();
System.out.print("请输入密码:");
System.out.println("密码(只能是字母)4-8个字符:");
String password=null;
while(true){
if(!scn.hasNext(regex_password)){
scn.next();
System.out.println("输入不合要求,重新输入!");
continue;
}
password=scn.next();
System.out.println("请再次输入密码:");
String password2=scn.next();
if(!(password.equals(password2))){
System.out.println("两次输入的密码不相符,请重新输入!");
}
else break;
}
System.out.println("请输入邮箱:");
while(!scn.hasNext(regex_email)){
System.out.println("输入的邮箱格式错误,请重新输入!");
scn.next();
}
String email=scn.next();
System.out.println("QQ:");
while(!scn.hasNext(regex_qq)){
System.out.println("输入的QQ格式错误,请重新输入!");
scn.next();
}
String qq=scn.next();
System.out.println("生日(yyyy-MM-dd):");
Date birthday=null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
//setLenient(boolean lenient):
//该方法是用来控制是否将正确格式的不正确时间转化成正确的时间,
//默认为true,设置为false时,如果时间不正确,不会自动转化,而是抛出java.text.ParseException异常。
while(birthday==null){
while(!scn.hasNext(regex_birthday)){
System.out.println("输入的生日格式有误,请重新输入!");
scn.next();
}
String birth=scn.next();
try{
birthday = sdf.parse(birth);//parse方法,将String日期变成Date
}catch (ParseException e) {
System.out.println("输入的生日格式有误,请重新输入!");
}
}
System.out.println("手机:");
while(!scn.hasNext(regex_phoneNumber)){
System.out.println("输入的手机格式有误,请重新输入!");
scn.next();
}
String phone=scn.next();
User user=new User(userName,password,email,qq,birthday,phone);
if(dao.addUser(user)){
System.out.println("注册成功!");
System.out.println(user);
}else{
System.out.println(userName+",注册失败,可能存在同名用户!");
}
}
}
Java用户注册程序(正则表达式;异常;日期类)
最新推荐文章于 2022-10-31 12:47:29 发布
本文将介绍如何使用Java编写用户注册程序,涵盖正则表达式进行邮箱和手机号验证,异常处理确保程序健壮性,以及日期类库的运用来记录用户注册时间。
683

被折叠的 条评论
为什么被折叠?



