Java【10_1】用户注册登录(面向过程与面向对象)
测试题
1、基于文本界面实现登录注册的需求(要求可以满足多个用户的注册和登录) 通过工具去完成
公共类:
public class User {
private int id;//用户编号
private int username;//用户名
private int password;//密码
private String name;//真实姓名
//该类的下面代码,可以通过:在空白位置,快捷键(Alt+Insert)-> Getter and Setter 【让idea自动生成】-> 全选生成
public void setId(int i){
id=i;
}
public int getId(){
return id;
}
public void setUsername(int u){
username=u;
}
public int getUsername(){
return username;
}
public void setPassword(int p){
password=p;
}
public int getPassword(){
return password;
}
public void setName(String n){
name=n;
}
public String getName(){
return name;
}
}
示例:面向过程代码(全能人,干就是)
public class Test1 {
public static void main(String[] args) {
//文本界面(所有的输入入口和信息展示都在界面内)
java.util.Scanner input=new java.util.Scanner(System.in);
//保存用户的数组
User[] users=new User[5];
int count=0;//记录用户个数
do{
System.out.println("欢迎来到欢乐谷! 1. 注册 2. 登录 3. 退出");
int num=input.nextInt();
if(num==1){
System.out.println("欢迎来到注册界面\n请输入用户名和密码");
int username=input.nextInt();
int password=input.nextInt();
System.out.println("请输入您的真实姓名:");
String name=input.next();
//用户信息的保存,将注册的用户信息,封装到一个对象内,将对象存储在数组中
//1. 判断容量是否充足 (用户名重复-->做一个验证)
if(count==users.length){
//需要扩容
User[] newUser=new User[users.length*2];
for (int i = 0; i < users.length; i++) {
newUser[i]=users[i];
}
users=newUser;
}
//2. 保存用户
User user=new User();
user.setId(count+1);//id会是数据库自动生成,不需要我们设置
user.setUsername(username);
user.setPassword(password);
user.setName(name);
users[count++]=user;
}else if(num==2){
System.out.println("欢迎来到登录界面\n请输入用户名和密码");
int username=input.nextInt();
int password=input.nextInt();
//登录检查
User user=null;
for (int i = 0; i < count; i++) {
if(username==users[i].getUsername()&&password==users[i].getPassword()){
//找到登录人
user=users[i];//将当前登陆人的对象提取出来
break;
}
}
if(user==null){
System.out.println("用户名或密码错误");
}else{
System.out.println("登录成功,欢迎:"+user.getName());
}
}else if(num==3){
System.out.println("确认退出吗?0/1");
int flag=input.nextInt();
if(flag==0)
break;
}
}while(true);
}
}
D:\javademo\day10_am>java Test1
欢迎来到欢乐谷! 1. 注册 2. 登录 3. 退出
1
欢迎来到注册界面
请输入用户名和密码
10
11
请输入您的真实姓名:
keke
欢迎来到欢乐谷! 1. 注册 2. 登录 3. 退出
2
欢迎来到登录界面
请输入用户名和密码
10
20
用户名或密码错误
欢迎来到欢乐谷! 1. 注册 2. 登录 3. 退出
2
欢迎来到登录界面
请输入用户名和密码
10
11
登录成功,欢迎:keke
欢迎来到欢乐谷! 1. 注册 2. 登录 3. 退出
3
确认退出吗?0/1
1
欢迎来到欢乐谷! 1. 注册 2. 登录 3. 退出
3
确认退出吗?0/1
0
示例:面向对象代码(找人做,或创造业务对象)
public class Test2 {
public static void main(String[] args) {
//文本界面(所有的输入入口和信息展示都在界面内)
java.util.Scanner input=new java.util.Scanner(System.in);
//管家
UserService userService=new UserService();
do{
System.out.println("欢迎来到欢乐谷! 1. 注册 2. 登录 3. 退出");
int num=input.nextInt();
if(num==1){
System.out.println("欢迎来到注册界面\n请输入用户名和密码");
int username=input.nextInt();
int password=input.nextInt();
System.out.println("请输入您的真实姓名:");
String name=input.next();
//用户信息的保存(注册、后台都是可以添加客户的)
//是不是遇到功能了,面向过程(自己实现),面向对象(找人实现)
User user=new User();
user.setId(1);
user.setUsername(username);
user.setPassword(password);
user.setName(name);
userService.saveUser(user);
}else if(num==2){
System.out.println("欢迎来到登录界面\n请输入用户名和密码");
int username=input.nextInt();
int password=input.nextInt();
//登录检查
//是不是遇到功能了,面向过程(自己实现),面向对象(找人实现)
User login = userService.login(username, password);
if(login==null){
System.out.println("用户名或密码错误");
}else{
System.out.println("登录成功,欢迎:"+login.getName());
}
}else if(num==3){
System.out.println("确认退出吗?0/1");
int flag=input.nextInt();
if(flag==0)
break;
}
}while(true);
}
}
/*
类是专门处理User的业务的,User的保存、User的修改、User的删除、User的查询
发现:这个类中的方法,都是功能,没有任何的输入输出
*/
public class UserService {
//保存用户的数组
private User[] users=new User[5];
//记录用户个数
private int count=0;
/*
保存用户,需要外界传进来一个User对象
*/
public void saveUser(User user){//形参设置为User类型!形式参数(当做是有值的)
if(count==users.length){
User[] newUser=new User[users.length*2];
for (int i = 0; i < users.length; i++) {
newUser[i]=users[i];
}
users=newUser;
}
users[count++]=user;
}
/*
功能:登录
*/
public User login(int username,int password){
User user=null;
for (int i = 0; i < count; i++) {
if(username==users[i].getUsername()&&password==users[i].getPassword()){
user=users[i];
}
}
return user;
}
}