大数据学习——javaEE

今天学了接口,感觉挺好,还用了Junit测试框架来测试,写完这些代码,你的能力会提升的很大。

1.用接口做了个用户登录和注册模块:内容详解都在代码块中有注释

再补充一个小知识点:静态方法用类名直接就可以调用。在java代码块中,先执行静态代码块再执行普通代码块,最后执行构造方法

(1)定义一个UserService接口;里面包含(登录和注册两个功能)

package interface1;

public interface UserService {
	//接口不能写方法  登录
	public  boolean login(String name,String pwd);
	
	
	/*
	 * 如果密码不一致,则返回"1"
	 * 如果用户已存在,则返回“2”
	 * 如果注册成功。则返回"3"
	 * 
	 */
	public String regist(String name,String pwd1,String pwd2);

}

(2)根据接口写界面层代码UserMenu

package interface1;

import java.util.Scanner;

public class UserMenu {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		UserService userManage = new UserServiceImpl();
		//利用while循环,注册完成后用户和密码都保存直接就可以登录
		boolean flag = true;
		while (flag) {
			System.out.println("1.登录,2.注册");
			String nextLine = sc.nextLine();

			switch (nextLine) {
			case "1":
				System.out.println("请输入账号:");
				String username = sc.nextLine();
				System.out.println("请输入密码:");
				String pwd = sc.nextLine();
				// 调用业务逻辑组件的登录方法
				boolean login = userManage.login(username, pwd);
				if (login) {
					System.out.println("恭喜登录成功");
				} else {
					System.out.println("登陆失败");
				}
				break;
			case "2":
				System.out.println("请输入用户名:");
				String name = sc.nextLine();
				System.out.println("请输入密码:");
				String pwd1 = sc.nextLine();
				System.out.println("请确认密码:");
				String pwd2 = sc.nextLine();

				// 调用逻辑组件的注册方法
				String regist = userManage.regist(name, pwd1, pwd2);

				switch (regist) {
				case "1":
					System.out.println("您两次密码不一致");
					break;

				case "2":
					System.out.println("您输入的账号已存在");
					break;

				case "3":
					System.out.println("注册成功");
					break;
				default:
					break;
				}
				break;

			case "quit":
				System.out.println("bye...........");
				flag = false;
				break;

			}
		}
	}

}

(3)实现UserService接口,并添加UserDao接口

package interface1;

public class UserServiceImpl implements UserService {

	UserDao userDao = new UserDaoImpl();
	
	@Override
	public boolean login(String name, String pwd) {
		// TODO Auto-generated method stub
		
		//调用Dao层的功能去查询该用户是否存在
		User user = userDao.findUserByName(name);
		
		if(user == null) {
			return false;
		}
		if(user.getPassWord().equals(pwd)) {
			return true;
		}
		
		return false;
	}

	@Override
	public String regist(String name, String pwd1, String pwd2) {
		// TODO Auto-generated method stub
		
		// 检查两次密码是否一致,如果不一致,则返回1
		
		if(!pwd1.endsWith(pwd2)) {
			return "1";
		}
		
		//调Dao层的功能去检查用户名是否存在
		boolean ifExist = userDao.checkUserIfExsit(name);
		
		if(ifExist) {
			return "2";
		}
		
		//将用户信息存储到数据库中
		User u =new User();
		u.set(name, pwd1);
		userDao.addUser(u);
		
		return "3";
	}

}

package interface1;

public interface UserDao {
	public User findUserByName(String userName);
	
	public boolean checkUserIfExsit(String userName);
	
	public void addUser(User user);
	

}


(4)实现UserDao接口代码

package interface1;

public class UserDaoImpl implements UserDao {

@Override
public User findUserByName(String userName) {
	// TODO Auto-generated method stub
	User user = UserDatabase.usermap.get(userName);
	
	return user;
}

@Override
public boolean checkUserIfExsit(String userName) {
	// TODO Auto-generated method stub
	boolean containsKey = UserDatabase.usermap.containsKey(userName);
	return containsKey;
}

@Override
public void addUser(User user) {
	// TODO Auto-generated method stub
	UserDatabase.usermap.put(user.getUserName(), user);
	
}

}



(5)因缺少缺数据,所以自己需要造一个静态数据库即可

package interface1;

import java.util.HashMap;

public class UserDatabase {
	
	public static HashMap<String,User> usermap = new HashMap<>();

}

(6)junit测试部分代码块

package interface1;

import org.junit.Test;

public class UserDaoImplJuintTest {
	
	@Test
	public void testAdd() {
		UserDaoImpl userDaoImpl = new UserDaoImpl();
		User u2 = new User();
		u2.set("zhangsan"," 123");
		
		userDaoImpl.addUser(u2);
		boolean ex = userDaoImpl.checkUserIfExsit("zhangsan");
		System.out.println(ex);
	}
	
	@Test
	public void testFind() {
		UserDaoImpl userDaoImpl = new UserDaoImpl();
		
		User xx = userDaoImpl.findUserByName("ccc");
		System.out.println(xx.getPassWord());
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值