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;}@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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 退出通讯录
结语
请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!
都看到这里啦!真棒(*^▽^*)
可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家
编程小白写作,如有纰漏或错误,欢迎指正
相关文章:

Java实现简单的通讯录
每日一言 泪眼问花花不语,乱红飞过秋千去。 —欧阳修- 简单的通讯录实现,跟写Java实现图书管理系统差不多,用到的知识也差不多,就当个小练习,练习一下写Java程序的手感。 Java实现图书管理系统 关于通讯录的代码都写…...

服务器数据恢复—raid5热备盘上线同步数据失败的如何恢复数据
服务器数据恢复环境&故障&分析: 一台存储上有一组由多块硬盘组建的raid5阵列,该raid5阵列中的一块硬盘掉线,热备盘自动上线同步数据的过程中,raid阵列中又有一块硬盘掉线,热备盘的数据同步被中断,r…...

探索C语言中的循环结构
循环结构是程序设计中一种重要的控制结构,它允许程序重复执行特定的代码块,直到满足某个条件为止。在C语言中,循环结构有多种形式,如for循环、while循环和do-while循环。本文将介绍C语言中的循环结构,并讨论它们的用法…...

数学建模-估计出租车的总数
文章目录 1、随机抽取的号码在总体的排序 1、随机抽取的号码在总体的排序 10个号码从小到大重新排列 [ x 0 , x ] [x_0, x] [x0,x] 区间内全部整数值 ~ 总体 x 1 , x 2 , … , x 10 总体的一个样本 x_1, x_2, … , x_{10} ~ 总体的一个样本 x1,x2,…,x10 总体的一个样…...

设计模式在芯片验证中的应用——装饰器
一、装饰器模式 装饰器模式(Decorator)是一种结构化软件设计模式,它提供了一种通过向类对象添加行为来修改类对象的方法,而不会影响同一类的其它对象行为。该模式允许在不修改抽象类的情况下添加类功能。它从本质上允许基类代码对不可预见的修改具有前瞻…...

Python 查找并高亮PDF中的指定文本
在处理大量PDF文档时,有时我们需要快速找到特定的文本信息。本文将提供以下三个Python示例来帮助你在PDF文件中快速查找并高亮指定的文本。 查找并高亮PDF中所有的指定文本查找并高亮PDF某个区域内的指定文本使用正则表达式搜索指定文本并高亮 本文将用到国产第三方…...

LEETCODE LCS 03. 主题空间
题目描述如上,这个题主要运用了DFS的思想,同时走过的路径标记为6,即可在后续的遍历中过滤掉重复的元素,其他则类似边界条件的判断和题目条件的判断,求最大值,只需要一次遍历中累加对比每一次得即可。 模板&…...

【Spring Boot 源码学习】深入应用上下文初始化器实现
《Spring Boot 源码学习系列》 深入应用上下文初始化器实现 一、引言二、往期内容三、主要内容3.1 spring-boot 子模块中内置的实现类3.1.1 ConfigurationWarningsApplicationContextInitializer3.1.2 ContextIdApplicationContextInitializer3.1.3 DelegatingApplicationConte…...

【Docker】一文趣谈Docker
🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 🛸学无止境,不骄不躁,知行合一 文章目录 …...

代码随想录day19(2)二叉树:二叉树的最大深度(leetcode104)
题目要求:求出二叉树的最大深度 思路:首先要区分二叉树的高度与深度。二叉树的高度是任一结点到叶子结点的距离,而二叉树的深度指的是任一节点到根节点的距离(从1开始)。所以求高度使用后序遍历(从下往上&…...
Lua中文语言编程源码-第五节,更改lcorolib.c协程库函数, 使Lua加载中文库关键词(与所有的基础库相关)
源码已经更新在CSDN的码库里: git clone https://gitcode.com/funsion/CLua.git 在src文件夹下的lcorolib.c协程库函数,Coroutine Library:表明这个C源文件实现了Lua的协程库(Coroutine Library),即提供了…...

Docker学习之数据管理(超详解析)
Docker存储资源类型: 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及到容器的数据管理: (1ÿ…...

FDTD液晶折射率各项异性表示方法
由于FDTD的数据都是沿坐标轴的,各向异性材料的参数也需要根据坐标轴来输入。 首先要了解坐标变换。 坐标变换 这里以二维坐标变化为例。 矢量下我们可以发现OP可在两个坐标系下分别表示 接下来将两个坐标相互关联,这里以Xb举例,Yb同理 注…...

RoketMQ主从搭建
vim /etc/hosts# IP与域名映射,端口看自己的#nameserver 192.168.126.132 rocketmq-nameserver1 192.168.126.133 rocketmq-nameserver2# 注意主从节点不在同一个主机上 #broker 192.168.126.132 rocketmq-master1 192.168.126.133 rocketmq-master2#broker 192.168…...
Linux网络瑞士军刀 nc(netcat)
1.命令简介 nc(netcat)是一个短小精悍、功能实用、简单可靠的网络工具,主要有如下作用: (1)端口侦听,nc 可以作为 server 以 TCP 或 UDP 方式侦听指定端口; (2&#x…...

1.Spring入门
1.1 Spring简介 Spring是一个轻量级Java 企业级应用程序开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。 Spring Fra…...

【JavaEE Spring 项目】消息队列的设计
消息队列的设计 一、消息队列的背景知识二、需求分析核心概念⼀个⽣产者, ⼀个消费者N 个⽣产者, N 个消费者Broker Server 中的相关概念核⼼ API交换机类型 (Exchange Type)持久化⽹络通信消息应答 三、 模块划分四、 项⽬创建五、创建核心类创建 Exchange创建 MSGQUeue创建 B…...

SpringFramework学习笔记(Spring IoC,aop,tx)
SpringFramework 本篇笔记是基于尚硅谷学习资料的整理,涉及到其笔记的简化,补充,以及我在学习中遇到的与无法理解的问题及解决,如果想看完整及后续的笔记,可以去https://www.wolai.com/v5Kuct5ZtPeVBk4NBUGBWF查看官方…...

口腔管理平台 |基于springboot框架+ Mysql+Java+B/S结构的口腔管理平台 设计与实现(可运行源码+数据库+lw文档)
推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 会员功能 系统功能设计 数据库E-R图设计 lunwen参考…...
【设计模式】Java 设计模式之工厂模式(Factory Pattern)
工厂模式(Factory Pattern)深入解析 一、工厂模式概述 工厂模式是一种创建型设计模式,它提供了一种封装对象创建过程的方式,将对象的创建与使用分离。工厂模式的核心思想是将“实例化对象”的操作与“使用对象”的操作分开&…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...