List集合实例

通过一段小程序练习List集合
simulationUserLogin java 控制台应用程序主要完成用户的注册和登录功能的模拟,没有实际数据库访问, 数据库使用程序中DataSource类进行模仿, 其中成员静态属性List usersTable 表示是一个数据库用户表,里面存储Users(用户) 对象; UserDao 接口定义相关业务抽象方法, 任务中主要必需编写一个处理用户注册和登录功能业务实现UserDao 接口的具体类, 此类必需实现UserDao 接口中的抽象方法,添加功能实现;
TestUserRegister 和TestUserLogin 是测试用户注册和登录的主类.
请将simulationUserLogin应用导入的Eclipse 开发工具中并修改导入可能出现的错误, 根据程序中的代码注释及此文档说明,完成注册及登录功能并测试执行

DataSource

import java.util.ArrayList;
import java.util.List;

/***
 * 模拟数据库的类
 * @author lenovo
 *
 */
public class DataSource{
	
	static List<Users> usersTable = new ArrayList();
}

Users

/***
 * 用户实体类
 * @author lenovo
 *
 */
public class Users {

	private String name;
	private String password;
	
	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;
	}
	
}

UsersDao

/***
 * 访问数据的组件接口
 * @author lenovo
 *
 */
public interface UsersDao {
	
	public abstract void userRegister();//注册
	public abstract void userLogin();//登录
}

UsersRegist_Login

import java.util.Iterator;
import java.util.Scanner;

/***
 * 接口实现类
 * @author lenovo
 *
 */
public class UsersRegist_Login implements UsersDao{

	Scanner in = new Scanner(System.in);
	
	/**
	 * 用户选择登陆或注册
	 */
	public void select() {
		System.out.println("您需要注册还是登录?请输入相应代码,注册:1,登录:0");
		if(in.nextInt()==1) {
			userRegister();
		}else if(in.nextInt()==0){
			userLogin();
		}else {
			System.err.print("输个1和0还得我手把手教你?");
		}
			
	}
	/**
	 * 注册
	 */
	@Override
	public void userRegister() {
		
		/*
		 * 用户名规范判断
		 */
		System.out.println("请输入用户名");
		int flag = 0;//设置标志量
		String name;
		while(true) {
			name = in.next();
			flag = 0;//标志量初始化
			if(name.length()<6||name.length()>16) {
				System.err.println("用户名必须在6-16个字符之间,请重新输入");
				continue;
			}else {
				char []chs = name.toCharArray();
				for(char ch:chs) {
					if((ch<'1'||ch>'9')&&(ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')&&ch!='@') {
						System.err.println("用户名仅由数字,大小写字母,和@组成,请重新输入");
						flag = -1;
						break;
					}
				}
				if(flag==-1)
					continue;
			}
			break;
		}
		/*
		 * 密码规范判断
		 */
		System.out.println("请输入密码");
		String pwd;
		while(true) {
			flag = 0;
			pwd = in.next();
			if(pwd.length()<6||pwd.length()>16) {
				System.err.println("密码必须在6-16个字符之间,请重新输入");
				continue;
			}else {
				char []chs = pwd.toCharArray();
				for(char ch:chs) {
					if((ch<'1'||ch>'9')&&(ch<'a'||ch>'z')&&(ch<'A'||ch>'Z')) {
						System.err.println("用户名仅由数字和大小写字母组成,请重新输入");
						flag = -1;
						break;
					}
				}
				if(flag==-1)
					continue;
			}
			break;
		}
		
		/*将数据存入用户实体类 中*/
		Users user = new Users();
		user.setName(name);
		user.setPassword(pwd);
		
		/*将数据存入模拟数据库中*/
		DataSource.usersTable.add(user);
		
		System.out.println("注册成功!!!\n即将转至登录页面");
		userLogin();
		
	}

	/**
	 * 登录
	 */
	@Override
	public void userLogin() {
		System.out.println("请输入用户名");
		String name = in.next();
		Iterator it = DataSource.usersTable.iterator();
		if(!it.hasNext()) {
			System.err.println("暂无用户注册,是否需要注册,是:1,否:0");
			if(in.nextInt()==1) {
				userRegister();
			}else if(in.nextInt()==0) {
				System.out.print("即将退出系统...");
			}else {
				System.err.print("输个1和0还得我手把手教你?");
			}	
		}else {
			while(it.hasNext()) {
				Users user = (Users) it.next();
				if(name.equals(user.getName())) {//判断两字符串数据是否相等用equals全等号是判断两字符串对象是否是同一个对象
					System.out.println("请输入密码");
					String pwd = in.next();
					while(true) {
						if(!pwd.equals(user.getPassword())) {
							System.err.println("密码错误,请重新输入");
							in.next();
						}else {
							break;
						}
					}
					System.out.println("登录成功!!!");
				}else {
					System.err.println("该用户名未注册 ,是否注册?是:1,否:0");
					if(in.nextInt()==1) {
						userRegister();
					}else if(in.nextInt()==0){
						System.out.print("是否重新登录?是:1;否:0");
						if(in.nextInt()==1)
							userLogin();
						else
							System.out.println("即将退出系统...");
					}else {
						System.err.print("输个1和0还得我手把手教你?");
					}
				}
			
			}
		}
		
		
	}

}

Test

public class Test {

	public static void main(String []args) {
		
		UsersRegist_Login url = new UsersRegist_Login();
		url.select();
	}
}

过程中出现的问题

  1. 在判断用户名和密码是否正确是误用全等号“==”,改为equals方法
  2. 在注册用户名和密码时为考虑到while循环内部的for循环,于是设置了标志量flag,用以对外层循环是否继续执行进行判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值