【实验四】多态

1、完成第133页实验题目2

import java.util.Scanner;

public class Application

 {

    private UserDao dao;

    public Application(UserDao dao)

    {

        this.dao=dao;

    }

    public void setDao(UserDao dao)

    {

        this.dao = dao;

    }

    public void registe()//注册函数

    {

        Scanner scn=new Scanner(System.in);//获取输入打类容

        System.out.print("请输入用户名:");

        String userName=scn.next();//将输入类容存入username

        System.out.print("请输入密码:");

        String password1=scn.next();

        System.out.print("请重新输入密码:");

        String password2=scn.next();

       

        if(!(password1.equals(password2)))//将第一次输入的密码与第二次输入的密码比较

        {

            System.out.println("两次输入的密码不相符,请重新输入!");

            return;//不同时直接结束

        }

        User user=new User(userName,password1);//两次输入相同时,存入user



        if(dao.addUser(user))//将用adduser类函数进行比较查找,如果没有相同类容,则加入

        {

            System.out.println(userName+",注册成功!");

        }

        else//如果有相同类容。则报错

        {

            System.out.println(userName+",注册失败,可能存在同名用户!");

        }      

    }

   

    public void login()//登录函数

    {

        Scanner scn = new Scanner(System.in); {

            System.out.print("请输入用户名:");

            String userName=scn.next();

            System.out.print("请输入密码:");

            String password=scn.next();

           

            User user=dao.getUser(userName,password);//将登录时输入的类容用getuser函数进行判断

            if(user==null){//根据判断结果输出

                System.out.println("登录失败,用户名或密码不正确");

               

            }else{

                System.out.println(user.getName()+"已登录");

            }

        }

    }

   

   

}

 

import java.util.Scanner;

public class Test {

    public static void main(String[] args){    

        UserDao dao = new UserDaoForArray();

       

        Application app=new Application(dao);

        for(int i=0;i<=100;i++){

            System.out.println("请选择要使用的功能:  1:注册   2:登录   3:退出");

            Scanner scn=new Scanner(System.in);//获取输入的类容

            int s=scn.nextInt();

            if(s==1||s==2){

                switch(s){

                    case 1: System.out.println("******注册******");

                    app.registe();

                    break;

                    case 2: System.out.println("******登录******");

                    app.login();

                    break;

                }

            }

            else if(s==3){

                System.out.println("已经退出");

                break;

            }

            else{

                System.out.println("输错了,没有这个选项");

            }

        }

    }

}

public class User {//user类

    public static final String INIT_PASSWORD="8888";//进行数据操作的

    private String name;

    private String password;//定义形参

   

    public User(String name){

        this.name = name;//参数name的值赋值给 本对象的成员变量this.name

        this.password = INIT_PASSWORD;  

    }

   

    public User(String name,String password){

        this.name=name;

        this.password=password;

    }



    public String getName() {

        return name;//获取对应的注册名

    }



    public String getPassword() {

        return password;//获取对应的注册密码

    }



    public void setPassword(String password) {

        this.password = password;//将输入的注册密码放入user

    }



}

 

public interface UserDao {//接口,dao类进行数据操作的增删,查改

    public User getUser(String userName,String password);//获取信息的类

   

    public boolean addUser(User user);//增加信息的类



}

 

public class UserDaoForArray implements UserDao{//继承类  

    private User[] data;//建立数组

    private int count=0;//建立变量



    public UserDaoForArray(){

        data=new User[100];//将数组data的大小设为100

    }



    public boolean addUser(User user)

    {

        if(count==data.length){//判断储存的注册数量是否大于data的最大储存数量

            return false;

        }

   

       

        for(int i=0;i<count;i++){

            if(data[i].getName().equals(user.getName())){//判断第i个加入的注册是否与之前的有重复

                return false;//如果有则直接结束

            }

        }

       

        data[count]=user;//将输入的注册类容放入对应的数组号中

        count++;//每存入一个注册类容,则count作为计数器应当+1

        return true;

    }



    public User getUser(String userName, String password)

    {

        for(int i=0;i<count;i++){

            if(data[i].getName().equals(userName) && data[i].getPassword().equals(password) ){//查找登录的信息是否存在

                return new User(userName, password);//若存在,则返回信息

            }

        }

        return null;

    }



}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellenionia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值