【实验四】多态

news2024/11/28 12:35:35

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;

    }



}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/741727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10分钟理解RNN、LSTM、Transformer结构原理!

文章目录 一、RNN1.1 RNN基本架构1.2 RNN经典的三种结构1.2.1 vector-to-sequence结构1.2.2 sequence-to-vector结构1.2.3 Encoder-Decoder结构 1.3 RNN常用领域1.4 RNN的优缺点1.5 RNN中为什么会出现梯度消失 二、LSTM2.1 LSTM与RNN差异2.2 LSTM核心思想图解2.2.1 忘记层门2.2…

小程序上传头像功能

前台wxml代码 点击navigator&#xff0c;跳转到裁剪页面 <navigator url"/pages/cropper/cropper?userid{{user._id}}&&imgSrc{{user.img}}" hover-class"none"><view class"user-logo-section"><text class"user…

1亿条数据批量插入 MySQL,哪种方式最快?

利用JAVA向Mysql插入一亿数量级数据—效率测评 这几天研究mysql优化中查询效率时&#xff0c;发现测试的数据太少&#xff08;10万级别&#xff09;&#xff0c;利用 EXPLAIN 比较不同的 SQL 语句&#xff0c;不能够得到比较有效的测评数据&#xff0c;大多模棱两可&#xff0c…

深化校企合作,开源网安为软件安全人才培养按下“加速键”

开源网安一直以来十分重视网络安全人才的培养&#xff0c;已陆续与湖北大学、武汉工业大学、桂林电子科技大学等多所高校建立战略合作&#xff0c;打造产学研协同的多类型人才培养模式。6月29日&#xff0c;开源网安与桂林电子科技大学携手举办了软件安全开发与DevSecOps实训课…

简要介绍 | 心脏机械-电耦合理论:原理、研究现状与未来展望

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对心脏机械-电耦合理论进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 心脏机械-电耦合理论&#xff1a;原理、研究现状与未来展望 心脏中精密的血流局部调控机制&#xff1a;electro-metabolic…

使用ChatGPT进行个性化学习

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 在这篇文章中&#xff0c;您将发现 ChatGPT 作为机器学习和数据科学爱好者的个人导师的好处。特别是&#xff0c;您将学习 如何让ChatGPT引导你学习抽象代数如何让 ChatGPT 帮助您…

代码随想录day9

28. 找出字符串中第一个匹配项的下标 思路&#xff1a; 没有。。。。真不会。。。。下次再来吧 代码&#xff1a; def strStr(self, haystack: str, needle: str) -> int:if not needle:return 0next [0] * len(needle)self.getNext(next, needle)j -1for i in range(…

路径规划算法:基于猎食者优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于猎食者优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于猎食者优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法…

如何搭建自己的图床(GitHub版)

文章目录 1.图床的概念2.用GitHub创建图床服务器2.1.新建仓库2.2.生成Token令牌2.3.创建img分支和该分支下的img文件夹(可选) 3.使用PicGo软件上传图片3.1 下载PicGo软件3.2配置PicGo3.3用PicGo实现上传 4. Typora实现自动上传5.免费图片网站 前言&#xff1a; 如果没有自己的服…

暑假第六天打卡

离散&#xff1a; 极小项&#xff1a; &#xff08;1&#xff09;简单合取式 &#xff08;2&#xff09;每个字母只出现一次 &#xff08;3&#xff09;按字典顺序排列 &#xff08;4&#xff09;成真赋值&#xff0c;且化为十进制 极大项 &#xff08;1&#xff09;简单…

智能化客流系统-实时监测人流趋势,助力商场销售策略优化

随着人们对安全和便利性的要求不断提高&#xff0c;智慧客流人数管理系统的应用已经成为各类场所管理的必备工具。它可以帮助管理者实时监测人流情况&#xff0c;提供精准的服务和安全保障。 一、案例展示 智慧客流人数管理系统在图书馆的应用&#xff0c;通过实时监测和数据…

avue 表单绑定值;avue表单项根据某项的值去联动显隐或是联动下拉数据

效果&#xff1a;发布type为shp时 数据相关的都隐藏&#xff0c;当发布type为postgis时则显示 1.avue表单绑定值 html <avue-form :option"option" v-model"publishForm"></avue-form> js data中定义 data() {return {publishForm: {},optio…

移动端APP组件化架构实践 | 京东云技术团队

前言 对于中大型移动端APP开发来讲&#xff0c;组件化是一种常用的项目架构方式。个人最近几年在工作项目中也一直使用组件化的方式来开发&#xff0c;在这过程中也积累了一些经验和思考。主要是来自在日常开发中使用组件化开发遇到的问题以及和其他开发同学的交流探讨。 本文…

惊,全国快递/外卖员近1亿,程序员有多少?

最近有一组数据备受关注&#xff0c;中华全国总工会消息&#xff0c;目前&#xff0c;全国职工总数4.02亿人左右&#xff0c;新就业形态劳动者8400万人。 其中“新就业形态劳动者”主要指大家熟悉的外卖员、快递员、网约车司机、代驾司机等群体。也就是说&#xff0c;当前有近…

【Unity】 HTFramework框架(四十六)【进阶篇】运行时调试器+指令系统

更新日期&#xff1a;2023年7月10日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 运行时调试器使用运行时调试器Hierarchy窗口Inspector窗口 运行时调试器指令系统 运行时调试器 使用运行时调试器 传送门&#xff1a;【Unity】 HTFram…

如何自动生成测试用例方案,我来告诉你

目录 一、目的 二、parameters组合方法 一&#xff09;、组合分析法 二&#xff09;、正交实验设计法 三&#xff09;、两种方法的总结&#xff1a; 三、response判断 四、组装战车(自动生成用例) 一、目的 受体&#xff1a;测试经理&#xff0c;测试主管&#xff0c;质…

容器化背后的魔法之Docker底层逻辑解密

Docker内部工作原理是怎样的&#xff1f; 现在我们知道了Docker是什么以及它提供了哪些好处&#xff0c;让我们逐个重要的细节来了解。 什么是容器&#xff1f;它们是如何工作的&#xff1f; 在深入研究Docker的内部机制之前&#xff0c;我们首先要了解容器的概念。简单地说…

操作系统真象还原——第5章 保护模式进阶,向内核迈进

第5章 保护模式进阶&#xff0c;向内核迈进 BIOS中断利用0x15子功能0xe802获取内存 汇编语言子功能的调用 填写调用前相关寄存器进行int中断调用获取返回结果输出到对应寄存器的值 80286 拥有24 位地址线&#xff0c;其寻址空间是16MB 。有一些ISA 只使用15MB&#xff0c;剩下…

linux /var分区使用率高处理

某个数据库机器报/var分区使用率高 [roothydb2 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 95G 64K 95G 1% /dev tmpfs 95G 644M 94G 1% /dev/shm tmpfs …

黑马大数据学习笔记2-HDFS环境部署

目录 环境部署hadoop-3.3.4.tar.gz构建软链接配置workers文件夹配置hadoop-env.sh文件配置core-site.xml文件配置hdfs-site.xml文件准备数据目录分发Hadoop文件夹将Hadoop的一些脚本、程序配置到PATH中授权为hadoop用户格式化整个文件系统查看HDFS WEBUI保存快照 https://www.b…