java collection 之用法,登陆注册功能的实现

import java.io.InputStream;
import java.net.PasswordAuthentication;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Scanner;

/*第一步: 提示用户选择功能, A(注册)  B(登陆) 。 要求: 功能选择 的时候要忽略大小写。


注册:
	1. 提示用户输入注册的账号(数字)与密码,如果输入的id号已经存在集合中,提示用户重新输入。 
注册完毕之后,把集合中的所有用户信息打印出来。(使用:toArrry()方法)	

登陆: 
	提示用户输入登陆的账号与密码,如果账号与密码这个用户已经存在集合中,那么登陆成功,否则登陆失败。
 * 
 * 
 * 
 * 
 */
class User{//创建一个用户类
	int name;
	String password;
	public User(int name,String password){
		this.name=name;
		this.password=password;
	}

}
class Registered extends User implements Runnable//创建一个注册类
{
	public Registered(int name, String password) {
		super(name, password);
		// TODO Auto-generated constructor stub
	}

	User user=new User(00000,"lzk147258");
@Override
public String toString() {
	// TODO Auto-generated method stub
	return "[  账号    "+this.name+"  密码    "  +this.password+"  ]";    
}
@Override
    public boolean equals(Object obj){
	Registered p=(Registered) obj;
	return this.name==p.name;
	
	
};
	@Override
	public void run() {//多线程实现方法
		// TODO Auto-generated method stub
		
	}
	


}
class loagin extends User implements Runnable{
	public loagin(int name, String password) {//构造方法
		super(name, password);
		// TODO Auto-generated constructor stub
	}
	// TODO Auto-generated constructor stub

//创建一个登陆类
	public String toString() {
		// TODO Auto-generated method stub
		return "[  账号    "+this.name+"  密码    "  +this.password+"  ]";    
	}
	@Override
	    public boolean equals(Object obj){
		loagin p=((loagin) obj);
		return this.name==p.name;
		
		
	};
	@Override
	public void run() {
	}//创建一个登陆类
	
	
	
	
}
public class demo8 {//创建一个主类
	
	public static void main(String[] args) {
		//while(true){事实证明位置不一样,效果就是不一样
		String a; //用于接受输入流
		Collection c=new ArrayList();
		Collection c1=new ArrayList();
		//Registered r=new Registered(1111,"sg");
		//loagin l =new loagin(1111,"sg");
		Scanner b= new Scanner(System.in);
		while(true){//可以用if语句代替,更容易退出
		//boolean flag=true;//设置一个布尔变量,判断while的循环条件
		System.out.println("请选择功能,A(注册)  B(登陆)。");
		System.out.println("请输入:");
		a=b.next();//请输入
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if(a.equals("A")|a.equals("B")){//判断是否需要重新输入

		if(a.equals("A")){
			System.out.println("欢迎使用 注册 功能!");
			
			System.out.println("请输入账号:");
			int name=b.nextInt();
			System.out.println("请输入密码:");
			 String password=b.next();
			 Registered r=new Registered(name,password);
			if(c.contains(r)){
				System.out.println("这个账号已存在");
			}else{
				c.add(r);
				System.out.println("注册成功!");
				Object[] arr=c.toArray();
				for(int i=0;i<arr.length;i++){
					Registered p=(Registered) arr[i];
					if(p.name==r.name){
						
						System.out.println("当前用户名和密码是"+p);
					}
					
				}
			}
			
		}
		else{
			Registered l =new Registered(1111,"sg");
			System.out.println("欢迎使用 登陆 功能!");
			System.out.println("请输入账号:");
			l.name=b.nextInt();
			System.out.println("请输入密码:");
			l.password=b.next();
			c1.addAll(c);
			if(c.contains(l)){
				Object[] arr=c1.toArray();
				for(int i=0;i<arr.length;i++){
					Registered p=(Registered) arr[i];
					if(p.password.equals(l.password)){//必须用equals,不知道为什么
						
						System.out.println("登陆成功!");
					}else{ 	
						System.out.println("密码错误");}
						
						

					
				}
				
				
			}else 
				System.out.println("账户名不存在!");
			
		}}
		else {
			System.out.println("输入错误!请重新输入!");/*
Java中equals和==的区别 

java中的数据类型,可分为两类: 
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
  他们之间的比较,应用双等号(==),比较的是他们的值。 
2.复合数据类型(类) 
  当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,
  他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,
  在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,
  如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

			 *
			 *
			 *
			 */
			}
		}
	

}//一个登陆注册类就能解决问题
}//简单的登陆注册 代码段能保存数据,但不能保证不同集合中元素互存。。
<img src="https://img-blog.csdn.net/20150731181723645?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值