• 用户登录


      完成系统登录程序,从命令行输入用户名密码。如果没有输入用户名密码,则提示输入用户名和密码;如果输入了用户名提示用户输入密码,然后判断用户名是否为mldn,密码是否为hello,如果正确,则提示登录成功;如果错误显示登录失败信息,用户再次输入用户名和密码,连续3次输入错误后系统退出。

      对于此时的程序发现,可以将用户名和密码同时输入,也可以先输入用户名,后输入密码,如果超过3次就表示登录结束,对于用户名和密码的使用可以采用“用户名/密码”的形式完成,如果没有发现“/”表示没有输入密码。

     

     

    1.定义用户的操作接口

    1 package com.alibaba.demo.service;
    2 
    3 public interface IUserService {
    4     public boolean isExit();
    5     public boolean login(String username, String password);
    6 }

    2.定义用户操作接口的子类

     1 package com.alibaba.demo.service.impl;
     2 
     3 import com.alibaba.demo.service.IUserService;
     4 
     5 public class UserServiceImpl implements IUserService {
     6     private int count=0;
     7     @Override
     8     public boolean isExit() {
     9         return this.count>=3;
    10     }
    11     @Override
    12     public boolean login(String username, String password) {
    13         this.count++;
    14         return "mldn".equals(username) && "hello".equals(password);
    15     }
    16 }

    3.对于用户的登录失败检测处理操作,应该单独定义一个用户的代理操作类

     1 package com.alibaba.demo.service.proxy;
     2 import com.alibaba.demo.service.IUserService;
     3 import cn.com.sina.demo.util.InputUtil;
     4 
     5 public class UserServiceProxy implements IUserService {
     6     private IUserService userService;
     7     public UserServiceProxy(IUserService userService) {
     8         this.userService = userService;
     9     }
    10     @Override
    11     public boolean isExit() {
    12         return this.userService.isExit();
    13     }
    14     @Override
    15     public boolean login(String username,String password) {
    16         while (!this.isExit()) {
    17             String inputData = InputUtil.getString("请输入登录信息:");
    18             if(inputData.contains("/")) {
    19                 String tmp[] = inputData.split("/");
    20                 if(this.userService.login(tmp[0], tmp[1])) {
    21                     return true;
    22                 }else {
    23                     System.out.println("登录失败,错误的用户名或密码!");
    24                 }
    25             }else {
    26                 String pwd = InputUtil.getString("请输入密码:");
    27                 if(this.userService.login(inputData, pwd)) {
    28                     return true;
    29                 }else {
    30                     System.out.println("登录失败,错误的用户名或密码!");
    31                 }
    32             }
    33         }
    34         return false;
    35     }
    36 }

    4.定义工厂类

     1 package com.alibaba.demo.service.factory;
     2 
     3 import com.alibaba.demo.service.IUserService;
     4 import com.alibaba.demo.service.impl.UserServiceImpl;
     5 import com.alibaba.demo.service.proxy.UserServiceProxy;
     6 
     7 public class Factory {
     8     private Factory() {}
     9     public static IUserService getInstance() {
    10         return new UserServiceProxy(new UserServiceImpl());
    11     }
    12 }

    5.信息输入处理类

     1 package cn.com.sina.demo.util;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.InputStreamReader;
     5 
     6 public class InputUtil {
     7     private static final BufferedReader INPUT = new BufferedReader(new InputStreamReader(System.in));
     8     private InputUtil() {}
     9     public static String getString(String prompt) {
    10         String str = null;
    11         boolean flag = true;
    12         while(flag) {
    13             System.out.println(prompt);
    14             try {
    15                 str = INPUT.readLine().trim();
    16                 if(!"".equals(str)) {
    17                     flag = false;
    18                 }else {
    19                     System.out.println("输入的内容不能为空!");
    20                 }    
    21             } catch (Exception e) {
    22                 System.out.println("输入的内容不能为空!");
    23             }
    24         }
    25         return str;
    26     }
    27 }

    6.定义测试处理类

    1 package com.alibaba.demo;
    2 
    3 import com.alibaba.demo.service.factory.Factory;
    4 
    5 public class IOCaseDemo {
    6     public static void main(String[] args) {
    7         System.out.println(Factory.getInstance().login(null, null));
    8     }
    9 }
  • 相关阅读:
    怎样运用Oracle的BFILE
    第一个博客
    返回引用的函数
    c++之SQLite的增删改查
    sqlite命令行程序说明
    CreateProcess函数详解
    注册窗口类
    radio button的用法
    跨线程使用CSocket
    关于socket的connect超时的问题
  • 原文地址:https://www.cnblogs.com/sunzhongyu008/p/11214483.html
Copyright © 2020-2023  润新知