登陆注册案例分析:
我们现在写代码需要面向对象,我们必须先找到能完成某个功能的类,接着调用里面的方法完成它。
登陆注册案例中的类:
用户类
成员变量:用户名,密码
成员方法:登陆,注册功能
测试类
main
登陆注册案例中的类的详细分解:
用户类(User):用户名,密码,邮箱,电话,身份证号。。。。—- 标准的java描述类
我们应该把对用户的所有的操作抽取出来形成一个类:
用户操作类:注册,登陆
定义一个接口:就是定义的登陆和注册的功能,我们之前说过接口是是对类的功能的一种扩展,其实当时说的还不够完善,接口本质其实是用来定义规则的。
测试类:main
java中的分包:
com.edu.domain — 标准的java描述类
com.edu.dao – 存放的是接口
com.edu.dao.impl – 存放的是接口实现类
com.edu.util – 对对象进行操作的工具类
com.edu.test – 测试类
举例:
①com.edu.domain包下
package com.edu.domain;
public class User {
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;
}
}
②com.edu.dao包下:
package com.edu.dao;
import com.edu.domain.User;
public interface UserDao {
//定义注册的功能
public abstract void regist(User user);
//登陆功能
public abstract boolean isLogin(String userName,String password);
}
③com.edu.dao.impl包下:
package com.edu.dao.impl;
import java.util.ArrayList;
import com.edu.dao.UserDao;
import com.edu.domain.User;
//用户操作类
public class UserDaoImpl implements UserDao{
//在这里做一个基于集合的登录和注册,相当与接收到用户信息存储到集合,登陆的时候从集合中查找用户信息
static ArrayList<User> users = new ArrayList<User>();
@Override
public void regist(User user) {
//接收到的用户对象存储到集合中
users.add(user);
}
@Override
public boolean isLogin(String userName, String password) {
//登陆:遍历集合,看集合中是否存在前面传递过来的用户名和密码信息,如果存在返回true,如果不存在返回false
boolean flag = false;
for(User user:users){
if (userName.equals(user.getUserName())&&password.equals(user.getPassword())) {
flag = true;
break;
}
}
return flag;
}
}
④com.edu.game包下:
package com.edu.game;
import java.util.Scanner;
public class GuessNum {
public void guessNumGame(){
int r = (int) (Math.random()*100+1);
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入猜想数字");
int i = sc.nextInt();
if (r==i) {
System.out.println("答对了");
break;
}
if (i>r) {
System.out.println("大了");
}
if (i<r) {
System.out.println("小了");
}
}
}
}
⑤com.edu.test包下:
package com.edu.test;
import java.util.Scanner;
import com.edu.dao.impl.UserDaoImpl;
import com.edu.domain.User;
import com.edu.game.GuessNum;
public class Test {
public static void main(String[] args) {
while (true) {
//提示用户目前是需要登录还是需要注册还是需要退出呢
System.out.println("欢迎来到登录注册页面");
System.out.println("1:注册");
System.out.println("2:登陆");
System.out.println("3:退出系统");
//创建一个用户操作类对象
UserDaoImpl udi = new UserDaoImpl();
//创建键盘录入对象获取键盘录入信息
Scanner sc = new Scanner(System.in);
String choice = sc.nextLine();
//使用switch进行判断
switch (choice) {
case "1":
System.out.println("欢迎来到注册页面");
System.out.println("请输入你的用户名");
String userName = sc.nextLine();
System.out.println("请输入你的密码");
String password = sc.nextLine();
//将用户名和密码封装成一个user对象
User user = new User(userName, password);
//调用用户操作类对象的注册方法
udi.regist(user);
System.out.println("注册成功");
break;
case "2":
System.out.println("欢迎来到登陆页面");
System.out.println("请输入你的用户名");
String inputUserName = sc.nextLine();
System.out.println("请输入你的密码");
String inputpPassword = sc.nextLine();
//调用用户操作类对象的登陆方法
boolean flag = udi.isLogin(inputUserName, inputpPassword);
if (flag) {
System.out.println("登陆成功");
System.out.println("猜数字小游戏欢迎您");
System.out.println("是否进行游戏?请输入Y或N");
String next = sc.nextLine();
while (next.equalsIgnoreCase("Y")) {
GuessNum gs = new GuessNum();
gs.guessNumGame();
System.out.println("是否进行游戏?请输入Y或N");
next = sc.nextLine();
}
}else {
System.out.println("登录失败");
}
break;
case "3":
default:
//输入3或者其他的选项,全部退出系统
System.exit(0);
break;
}
}
}
}
//测试如下:
/**欢迎来到登录注册页面
1:注册
2:登陆
3:退出系统
1
欢迎来到注册页面
请输入你的用户名
admin
请输入你的密码
123456
注册成功
欢迎来到登录注册页面
1:注册
2:登陆
3:退出系统
2
欢迎来到登陆页面
请输入你的用户名
admin
请输入你的密码
123456
登陆成功
猜数字小游戏欢迎您
是否进行游戏?请输入Y或N
y
请输入猜想数字
23
大了
请输入猜想数字
15
大了
请输入猜想数字
10
小了
请输入猜想数字
13
小了
请输入猜想数字
14
答对了
是否进行游戏?请输入Y或N
n
欢迎来到登录注册页面
1:注册
2:登陆
3:退出系统
3
*/