大数据学习--day08

hnapp 后台系统开发、面向对象

利用前面所学的知识,写一个控制台登陆注册后台界面

package sy180918.hnapp.array;

import java.util.Arrays;
import java.util.Scanner;

public class HnApp {
    static Scanner sc = new Scanner(System.in); // 成员变量  提高作用域
    
    static int[] users = new int[2]; // 存储 用户名
    static int[] pswds = new int[2]; // 存储密码
    static int count; // 默认是 0 记录真实的用户个数
    
    static boolean userState ;// 默认是 false 用来记录登录状态
    static int userName ; // 当前登录用户的用户名
    
    
    public static void main(String[] args) {
        test: while(true){
                mainHtml();
                int next = sc.nextInt();
                switch (next) {
                    case 1:    zhuce();break;
                    case 2:    logon(); break;
                    case 3:    setPswd();break;
                    case 4:    System.out.println("退出");break test;
                    default:
                        System.out.println("非法字符");break;
                }
            }
        
    }
    
    
    /**
     * 修改密码
     */
    private static void setPswd() {
        if(!userState){
            System.out.println("请先登录 之后再来改密码");
            return ;
        }
        
        int i = 0;
        for( ; i < count ; i++){
            if(userName == users[i])
                break;
            
        }
        
        
        System.out.println("请输入新密码");
        int newPswd = sc.nextInt();
        
        pswds[i] = newPswd;
        System.out.println("密码修改成功 你已下线 请重新登录");
        userName = 0;
        userState = false;
        
    }


    /**
     * 登录方法
     */
    private static void logon() {
        if(userState){
            System.out.println("不能重复登录");
            return ;
        }
        
        System.out.println("欢迎来到登录页面");
        System.out.println("请输入登录的用户名");
        int user = sc.nextInt();
        System.out.println("请输入登录的密码");
        int pswd = sc.nextInt();
        
        
        // 判断用户在不在
        boolean flag = selectUser(user);
        
        if(flag){// 此时有用户
            
            // 判断密码是否对应  
            
            // 1. 找到 在数组中  user 的索引
            int i = 0;
            for( ; i < count ; i++){
                if(users[i] == user)
                    break;
            }
            
            if( pswds[i] == pswd){
                System.out.println("欢迎登录");
                userState = true; // 修改登录状态
                userName = user;
            }else{
                System.out.println("密码错误");
            }
            
        }else{// 此时没有该用户
            System.out.println("用户 "+user+" 不存在");
        }
    }


    /**
     * 注册的方法
     */
    private static void zhuce() {
        // 键盘录入 用户
        System.out.println("欢迎来到注册页面");
        System.out.println("请输入注册的用户名");
        int user = sc.nextInt();
        System.out.println("请输入注册的密码");
        int pswd = sc.nextInt();
        
        
        // 查看用户是否已经存在
        boolean flag = selectUser(user);
        if(flag){
            System.out.println("用户 "+user+" 已经存在 , 请更换其他用户");
            return ;
        }
        
        
        // 增加存储介质的 容量
        if( count == users.length ){
            System.out.println("正在扩容");
            int oldLength = users.length ;
            int newLength = oldLength + (oldLength>>1);
            System.out.println(oldLength+"->"+newLength);
            users = Arrays.copyOf(users, newLength); // 1.5 倍扩容
            pswds = Arrays.copyOf(pswds, newLength);
        }
        
        
        // 写入 存储介质
        users[count] = user;
        pswds[count] = pswd;
        count++;
        System.out.println("用户 "+user+" 注册成功");
    }
    
    
    /**
     * 查看 存储介质中  是否有指定的 user
     * @return 规定 : 有该用户返回 true 
     */
    public static boolean selectUser(int user){
        // 查看用户是否已经存在
        for(int i = 0 ; i < count ; i++){
            if(users[i] == user)
                return true;
        }    
        return false;
    }
    
    
    /**
     * 主菜单页面
     */
    public static void mainHtml(){
        System.out.println("=====欢迎来到    HnApp 后台系统========");
        System.out.println("=================================");
        System.out.println("----请按照提示进行操作----");
        
        System.out.println("输入1 : 注册用户");
        System.out.println("输入2 : 登录用户");
        System.out.println("输入3 : 修改密码");
        System.out.println("输入4 : 退出系统\n\n\n");
    }
}

这些逻辑就当复习了,注意算术运算符优先级大于位运算符。

每次操作之后立即更新状态,全局变量。

面向对象

面向对象 三大特性 
    1. 封装
    2. 继承
    3. 多态
合理的封装 定义一个类  ?
合理的封装一个类 需要5个部分 
1. 属性 (成员变量)
2. 构造器
3. 访问器
4. 设定器
5. 功能方法
基本写法同c#,就是get、set没有简写。

猜你喜欢

转载自www.cnblogs.com/symkmk123/p/9671676.html