实现思路
按照包名划分:
实体层:com.cn.entity/domain/pojo
User类
1)该类是一个具体类
2)提供私有字段
3)提供公共访问方法setXXX()/getXXX()
4)实现接口:serializable 序列化接口(目前不用)
业务接口层:serivce层 com.cn.service
登录:login()
注册:regist()
业务接口实现层:com.cn.service.impl
调用dao层的功能访问数据库
实现登录和注册功能(访问数据)
接口层(数据库访问层) dao层 :com.cn.dao
登录:login()
注册:regist()
数据库访问实现层:com.cn.dao.impl
登录:查询数据库的用户表:是否存在用户
注册:给数据库中的用户表:增加一条数据(用户名和密码)
暂时:去掉service层,直接来实现实体类:com.cn.entity
User类
private String username;
private String password
xxx
xxx
com.cn.user.dao
数据库访问接口层:UserDao Dao(Data Access Object)
login(String username,String password) ;//登录
regist(User user) ;//注册
com.cn.user.dao.impl
dao接口实现层: UserDaoImpl
成员位置://创建一个集合ArrayList集合对象
重写login和regist方法
在注册功能
public void regist(User user){
集合对象.add(user) ;
}
//登录功能
public boolean isLogin(String username,String password){
//假设:登录失败
boolean flag = false ;
//遍历集合
for(User u :集合对象){
if(u!=null){
//加入判断:判断
if(u.getUsername().equals(username) && u.getPassword().equals(password)){
flag = true ;
break ;
}
}
return falg ;
}
}
测试类:com.cn.user.test
UserTest
键盘录入数据
选择结构语句:switch
package com.cn.user.test;
import java.util.Scanner;
import com.cn.entity.User;
import com.cn.user.dao.UserDao;
import com.cn.user.dao.impl.UserDaoImpl;
//测试类
public class UserTest {
public static void main(String[] args) {
while(true) {
//创建键盘录入对象
Scanner sc=new Scanner(System.in);
System.out.println("---------欢迎进入------------");
System.out.println("---------------------------");
System.out.println("1 注册");
System.out.println("2 登录");
System.out.println("3 退出");
//录入数据
//需要注册功能
UserDao ud=new UserDaoImpl();
String choiceNum=sc.nextLine();
switch (choiceNum) {
case "1":
//注册界面
System.out.println("-----欢迎使用注册功能----");
System.out.println("请您输入用户名");
String username=sc.nextLine();
System.out.println("请您输入密码");
String password=sc.nextLine();
//创建User对象:封装数据
User user=new User();
user.setUsername(username);
user.setPassword(password);
// //需要注册功能
//注册和登录都需要创建接口对象(通过子实例化)
// UserDao ud=new UserDaoImpl();
ud.register(user);
System.out.println("注册成功");
break;
case "2":
//登陆界面
System.out.println("-----欢迎使用登录功能----");
System.out.println("请您输入用户名");
String name=sc.nextLine();
System.out.println("请您输入密码");
String word=sc.nextLine();
//调用isLogin方法
boolean flag=ud.isLogin(name, word);
if(flag) {
System.out.println("登录成功");
// break;//结束switch语句,不能结束循环语句
System.exit(0);
}else {
System.out.println("您输入的用户名和密码有误,请重新输入");
}
break;
case "3"://退出
System.out.println("谢谢使用,欢迎下次再来");
System.exit(0);
default:
}
}
}
}
package com.cn.user.dao.impl;
import java.util.ArrayList;
import com.cn.entity.User;
import com.cn.user.dao.UserDao;
/**
* 用户数据库的接口实现
* */
public class UserDaoImpl implements UserDao {
private static ArrayList<User>array=new ArrayList<User>();
//注册
@Override
public void register(User user) {
// //需要ArrayList集合对象
// ArrayList<User>array=new ArrayList<User>();
//一旦录入数据后,将信息添加到集合中
array.add(user);
}
//登录
@Override
public boolean isLogin(String username, String password) {
//遍历集合:登录和注册所有的集合是同一个对象
//假设登陆失败
boolean flag=false;
//遍历集合
for(User u:array) {
//获取用户名和密码,非空判断,防止空指针异常
if(u!=null) {
//键盘录入的用户名、密码和集合中存在的用户名、密码一致登录成功
if(u.getUsername().equals(username) && u.getPassword().equals(password)) {
//修改标记值
flag=true;
break;
}
}
}
return flag;
}
}
package com.cn.user.dao;
import com.cn.entity.User;
/**
* 用户数据库访问接口层
* @author zhangyang
*
*/
public interface UserDao {
//定义两个功能
/**
* 注册功能
* @param 接收的用户对象
*/
void register(User user) ;
/**
* 登录功能
* @param username 键盘录入的用户名
* @param password 键盘录入的密码
* @return 返回登录是否成功,ture,表示登录成功;
*/
public abstract boolean isLogin(String username ,String password);
}
package com.cn.entity;
import java.io.Serializable;
//实体类
public class User implements Serializable { //实体类网络中/流中传输:实现序列化接口
private String username ;
private String password ;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
}