当前位置: 首页 > news >正文

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;
    }
}


 

相关文章:

  • tomcat搭建内网论坛
  • 【论信息系统项目的资源管理】
  • docker大镜像优化实战
  • 专题三:穷举vs暴搜vs深搜vs回溯vs剪枝(全排列)决策树与递归实现详解
  • 企业如何构建安全高效的数据合规体系?
  • python使用OpenCV 库将视频拆解为帧并保存为图片
  • 问题及解决02-处理后的图像在坐标轴外显示
  • 用自写的jQuery库+Ajax实现了省市联动
  • c++STL-list的模拟实现
  • MyBatis 批量新增与删除功能完整教程
  • python_竞态条件
  • windowsC++操作ADB
  • ansible进阶版01
  • js中的同步方法及异步方法
  • Unity引擎源码-物理系统详解-其一
  • 抗量子计算攻击的数据安全体系构建:从理论突破到工程实践
  • C# 通用OCR识别
  • 基于TI AM6442+FPGA解决方案,支持6网口,4路CAN,8个串口
  • CSS3 基础知识、原理及与CSS的区别
  • 洛谷 P3374 【模板】树状数组 1(树状数组解法)
  • 为惩戒“工贼”,美国编剧工会“痛下杀手”
  • 影子调查丨三名“淘金客”殒命雪峰山:千余废弃金矿洞的监管难题
  • 山东枣庄同一站点两名饿了么骑手先后猝死,当地热线:职能部门正调查
  • “饿了么”枣庄一站点两名连襟骑手先后猝死,软件显示生前3天每日工作超11小时
  • 学习时报头版:世界要公道不要霸道
  • 富家罹盗与财富迷思:《西游记》与《蜃楼志》中的强盗案