Java实现简单的通讯录

每日一言

泪眼问花花不语,乱红飞过秋千去。 —欧阳修-


简单的通讯录实现,跟写Java实现图书管理系统差不多,用到的知识也差不多,就当个小练习,练习一下写Java程序的手感。

Java实现图书管理系统

关于通讯录的代码都写在下面了

1. 代码

1.1 contact 包

1.1.1 Contact

package contact;

public class Contact {
    private int size;//当前占用容量
    private Person[] people = new Person[3];

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public Person getPerson(int pos) {
        return people[pos];
    }

    public void setPerson(Person person,int pos) {
        this.people[pos] = person;
    }

    public Boolean isFull(Contact contact) {
        return contact.getSize() == people.length;
    }
}

1.1.2 Person

package contact;

public class Person {
    private String name;
    private String sex;
    private int age;
    private String telephone;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "名字='" + name + '\'' +
                ", 性别='" + sex + '\'' +
                ", 年龄=" + age +
                ", 电话='" + telephone + '\'' +
                '}';
    }

    public Person(String name, String sex, int age, String telephone) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.telephone = telephone;
    }
}

1.2 option 包

1.2.1 AddContact

package option;

import contact.Contact;
import contact.Person;

import java.util.Scanner;

public class AddContact implements IOperation{
    @Override
    public void work(Contact contact) {
        if(contact.isFull(contact)) {
            System.out.println("通讯录已满,无法添加!");
            return;
        }else {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入联系人姓名:>");
            String name = scanner.nextLine();
            System.out.println("请输入联系人性别:>");
            String sex = scanner.nextLine();
            System.out.println("请输入联系人年龄:>");
            int age = scanner.nextInt();
            System.out.println("请输入联系人电话:>");
            String telephone = scanner.next();
            Person person = new Person(name,sex,age,telephone);

            int size = contact.getSize();
            contact.setPerson(person,size);
            contact.setSize(size+1);
            System.out.println("添加成功!");
        }
    }


}

1.2.2 DelContact

package option;

import contact.Contact;

import java.util.Scanner;

public class DelContact implements IOperation{
    @Override
    public void work(Contact contact) {
        int size = contact.getSize();
        if(0 == size) {
            System.out.println("通讯录为空,无法删除!");
            return;
        }else {
            System.out.println("请输入要删除的联系人姓名");
            Scanner scanner = new Scanner(System.in);
            String name = scanner.nextLine();

            for (int i = 0; i < size; i++) {
                if(name.equals(contact.getPerson(i).getName())) {
                    //删除
                    for (int j = i; j < size-1; j++) {
                        contact.setPerson(contact.getPerson(j+1),j);
                    }
                    contact.setSize(size-1);
                    System.out.println("删除成功!");
                    return;
                }
            }

            System.out.println("没有你要删除的联系人!");
        }
    }
}

1.2.3 ExitContact

package option;

import contact.Contact;

public class ExitContact implements IOperation{
    @Override
    public void work(Contact contact) {
        //释放占用内存
        for (int i = 0; i < contact.getSize(); i++) {
            contact.setPerson(null,i);
        }
        System.out.println("退出成功!");
        System.exit(0);
    }
}

1.2.4 FindContact

package option;

import contact.Contact;

import java.util.Scanner;

public class FindContact implements IOperation{
    @Override
    public void work(Contact contact) {
        int size = contact.getSize();
        System.out.println("请输入要查找的联系人姓名");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();

        for (int i = 0; i < size; i++) {
            if(name.equals(contact.getPerson(i).getName())) {
                System.out.println(contact.getPerson(i).toString());
                return;
            }
        }

        System.out.println("没有你要查找的联系人!");
    }
}

1.2.5 IOperation 接口

package option;

import contact.Contact;

public interface IOperation {
    void work(Contact contact);
}

1.2.6 ModifyContact

package option;

import contact.Contact;
import contact.Person;

import java.util.Scanner;

public class ModifyContact implements IOperation{
    @Override
    public void work(Contact contact) {
        int size = contact.getSize();
        System.out.println("请输入要修改的联系人姓名");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();

        for (int i = 0; i < size; i++) {
            if(name.equals(contact.getPerson(i).getName())) {
                //修改
                System.out.println("请输入联系人姓名:>");
                String name1 = scanner.nextLine();
                System.out.println("请输入联系人性别:>");
                String sex = scanner.nextLine();
                System.out.println("请输入联系人年龄:>");
                int age = scanner.nextInt();
                System.out.println("请输入联系人电话:>");
                String telephone = scanner.next();
                Person person = new Person(name1,sex,age,telephone);

                contact.setPerson(person,i);
                System.out.println("修改成功!");
                return;
            }
        }

        System.out.println("没有你要修改的联系人!");
    }
}

1.2.7 ShowContact

package option;

import contact.Contact;

public class ShowContact implements IOperation{
    @Override
    public void work(Contact contact) {
        if(0 == contact.getSize()) {
            System.out.println("通讯录为空");
            return;
        }else {
            for (int i = 0; i < contact.getSize(); i++) {
                System.out.println(contact.getPerson(i).toString());
            }
        }
    }
}

1.3 Main

import contact.Contact;
import option.AddContact;

import java.util.Scanner;

public class Main {
    public static int menu() {
        System.out.println("*********************");
        System.out.println("1.新增联系人");
        System.out.println("2.删除联系人");
        System.out.println("3.展示联系人");
        System.out.println("4.查找联系人");
        System.out.println("5.修改联系人");
        System.out.println("0.退出通讯录");
        System.out.println("*********************");
        System.out.println("请输入选项:>");

        Scanner scanner = new Scanner(System.in);
        return scanner.nextInt();
    }
    public static void main(String[] args) {
        int op;
        User user = new User();
        Contact contact = new Contact();
        do {
            op = menu();
            if(op > user.iOperation.length || op < 0) {
                System.out.println("输入错误!");
                continue;
            }
            user.doOperation(contact,op);
        }while (0 != op);
    }
}

1.4 User

import contact.Contact;
import option.*;

public class User {
    IOperation[] iOperation = new IOperation[]{
            new ExitContact(),
            new AddContact(),
            new DelContact(),
            new ShowContact(),
            new FindContact(),
            new ModifyContact(),
    };
    public void doOperation(Contact contact,int op) {
        this.iOperation[op].work(contact);
    }
}

2. 效果

2.1 添加联系人

在这里插入图片描述

2.2 展示联系人

在这里插入图片描述

2.3 删除联系人

在这里插入图片描述

2.4 查找联系人

在这里插入图片描述

2.5 修改联系人

在这里插入图片描述

2.6 退出通讯录

在这里插入图片描述


结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JVM】(内存区域划分 为什么要划分 具体如何分 类加载机制 类加载基本流程 双亲委派模型 类加载器 垃圾回收机制(GC))

文章目录 内存区域划分为什么要划分具体如何分 类加载机制类加载基本流程双亲委派模型类加载器 垃圾回收机制&#xff08;GC&#xff09; 内存区域划分 为什么要划分 JVM启动的时候会申请到一整个很大的内存区域,JVM是一个应用程序,要从操作系统这里申请内存,JVM就需要根据,把…

Android Studio字体大小调节

外观页面字体调节 settings->Appearance->User cunstom font 代码字体调节 Settings->Editor->Font此时logcat窗口、Build窗口和Ternimal窗口字体大小也会同步调节&#xff08;2023.2.1版本上验证&#xff09;

基于Springboot和Redis实现的快递代取系统

1.项目简介 本项目基于springboot框架开发而成&#xff0c;前端采用bootstrap和layer框架开发&#xff0c;系统功能完整&#xff0c;界面简洁大方&#xff0c;比较适合做毕业设计使用。 本项目主要实现了代取快递的信息管理功能&#xff0c;使用角色有三类&#xff1a;一是客…

Elasticsearch 主副分片切换过程中对业务写入有影响吗

&#x1f34a;&#x1f349;&#x1f34b; 先说下结论&#xff0c;只要集群中的工作节点过半&#xff0c;有候选的master节点&#xff0c;挂掉的节点中不同时包含索引的主分片和副分片&#xff0c;那么ES是可以做到让业务无感知的进行主副分片切换的。 蓝胖子会先讲解下ES集群写…

ARM_基础之RAS

Reliability, Availability, and Serviceability (RAS), for A-profile architecture 源自 https://developer.arm.com/documentation/102105/latest/ 1 Introduction to RAS 1.1 Faults,Errors,and failures 三个概念的区分&#xff1a; • A failure is the event of devia…

外包干了3天,技术明显进步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

16、技巧之九: 修改参数,如何让表格翻页滚动到底部?【Selenium+Python3网页自动化总结】

1、问题提出 在网页配置参数时&#xff0c;输入参数名称搜索&#xff0c;搜出来的同名参数结果有多个&#xff0c;分布在一个表格的不同行&#xff0c;表格是动态加载的&#xff0c;需要滚动鼠标才能把所出参数找出来。用selenium怎么实现这种参数修改&#xff1f; 2、网页元素…

JVM学习-JVM的自动优化

目录 1.语法糖 1.1默认构造器 1.2自动拆装箱 1.3泛型集合取值 1.4可变参数实现 1.5 foreach循环 1.6 switch配合String使用 1.7 switch配合枚举使用​编辑 1.8 try-with-resources 1.9方法重写的桥接方法 2.运行时优化 2.1分层优化以及逃逸分析 2.2方法内联 2.3字段优化 JVM会…

产品推荐 - 基于FPGA XC7K325T+DSP TMS320C6678的双目交汇视觉图像处理平台

一、产品概述 TES601是一款基于FPGA与DSP协同处理架构的双目交汇视觉图像处理系统平台&#xff0c;该平台采用1片TI的KeyStone系列多核浮点/定点DSP TMS320C6678作为核心处理单元&#xff0c;来完成视觉图像处理算法&#xff0c;采用1片Xilinx的Kintex-7系列FPGA XC7K325T作为视…

​​SQLiteC/C++接口详细介绍之sqlite3类(十)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;九&#xff09; 下一篇&#xff1a;​​SQLiteC/C接口详细介绍之sqlite3类&#xff08;十一&#xff09; 30.sqlite3_enable_load_extension&#x…

三、NLP中的句子关系判断

句子关系判断是指判断句子是否相似&#xff0c;是否包含&#xff0c;是否是问答关系等&#xff0c;常应用在文本去重、检索&#xff08;用户输入和文档的相关性&#xff09;、推荐&#xff08;和用户喜好文章是否相似&#xff09;等场景中。 3.0、文本相似度计算 3.0.0 传统机…

更改el-tabs默认样式,实现tab标签居中显示,标签对应内容使用另一个div显示

首先看效果图 如图所示&#xff0c;标签在浏览器窗口居中&#xff0c;但是下面的内容依然是默认从左到右&#xff0c;不会受到tab样式的影响 <template><div><div style"display: flex; justify-content: center; align-items: center;"><el-…

JVM学习-JVM简介以及其内部结构

目录 1.什么是JVM 2.JVM、JRE、JDK、JavaSE、JavaEE之间的联系 3.JVM的内部结构 4.各部分的作用 4.1 类加载器 4.2 方法区 4.3 堆 ​编辑 4.4 虚拟机栈 4.5 程序计数器 4.6 本地方法栈 4.7 解释器和JIT即时编译器 4.9 GC垃圾回收 5.拓展 5.1一些可能会遇到的问…

Mysql 死锁案例4-delete 相邻记录导致死锁

死锁复现 CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),KEY c (c) ) ENGINEInnoDB DEFAULT CHARSETutf8;/*Data for the table t */insert into t(id,c,d) values (0,0,0),(5,5,5),(10,10,10),(15,15,15) 事务1事…

C语言初学12:强制类型转换

一、强制数据类型转换举例 1.1 double赋值给int #include<stdio.h> int main() {double sum 18, count 5;int mean;mean sum / count;printf("Value of mean : %d\n", mean);} 执行结果&#xff1a; double赋值给int&#xff0c;小数部分会删除&#xff…

dp入门:从暴力dfs 到 dp

本篇为小金鱼大佬视频的学习笔记&#xff0c;原视频链接&#xff1a;https://www.bilibili.com/video/BV1r84y1379W?vd_source726e10ea5b787a300ceada715f64b4bf 基础概念 暴力dfs很多时候仅能过部分测试点&#xff0c;要想将其优化&#xff0c;一般以 dfs -> 记忆化搜索 …

汽车IVI中控开发入门及进阶(十三):语音识别

前言: IVI中控上的语音识别,在目前市场上也是非常显眼的一个创新,大幅改变了传统IVI的操作习惯。 语音识别Speech recognition,也称为自动语音识别(ASR)、计算机语音识别或语音到文本,是一种使程序能够将人类语音处理成书面格式的能力。 语音识别Speech recognition是计…

1.6w字数据库基础知识超详细解析~‍(进阶/复习版)

文章目录 前言一、数据库的操作1.登入数据库2.创建数据库3.显示当前数据库4.使用数据库5.删除数据库 二、常用数据类型三、数据库的约束1约束类型2NULL约束3UNIQUE:唯一约束4DEFAULT&#xff1a;默认值约束5 PRIMARY KEY&#xff1a;主键约束6 FOREIGN KEY&#xff1a;外键约束…

Calendar类 --java学习笔记

Calendar 代表的是系统此刻时间对应的日历通过它可以单独获取、修改时间中的年、月、日、时、分、秒等 常见方法&#xff1a; 创建Calendar对象&#xff1a; 用Calendar.getInStance&#xff08;&#xff09;方法&#xff0c;返回一个此时此刻的日历&#xff08;Calendar&am…

关于IP地址证书的申请

对于直接通过IP地址访问的服务器&#xff0c;为其配置SSL证书同样至关重要。以下是一份详尽的指南&#xff0c;教你如何为你的IP地址申请SSL证书。 IP地址证书目前有DV验证和OV验证两种主流的验证方式&#xff0c;DV验证只需验证IP的所有权&#xff0c;OV的在此基础上&#xff…