当前位置: 首页 > news >正文

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 退出通讯录

在这里插入图片描述


结语

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


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

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

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


相关文章:

  • JavaWeb--HTML
  • 浏览器同源策略及跨域问题
  • 安卓UI面试题 45-50
  • zookeeper基础学习之六: zookeeper java客户端curator
  • Javascript抓取京东、淘宝商品数据(商品采集商品详情图片抓取)
  • 算法思想总结:滑动窗口算法
  • DeformableAttention的原理解读和源码实现
  • QML与C++通信
  • Python电梯楼层数字识别
  • STM32第九节(中级篇):RCC(第一节)——时钟树讲解
  • Tomcat的部署及调优,jvm调优
  • Java8 新特性
  • Java-并发编程--ThreadLocal、InheritableThreadLocal
  • 《LeetCode热题100》笔记题解思路技巧优化_Part_3
  • QT 状态机的使用
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • avalon2.2的VM生成过程
  • C# 免费离线人脸识别 2.0 Demo
  • input的行数自动增减
  • JS基础之数据类型、对象、原型、原型链、继承
  • Linux Process Manage
  • Nacos系列:Nacos的Java SDK使用
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • PHP 小技巧
  • Quartz初级教程
  • ViewService——一种保证客户端与服务端同步的方法
  • 从tcpdump抓包看TCP/IP协议
  • 对象引论
  • 观察者模式实现非直接耦合
  • 基于组件的设计工作流与界面抽象
  • 全栈开发——Linux
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 小程序开发中的那些坑
  • 用Python写一份独特的元宵节祝福
  • 昨天1024程序员节,我故意写了个死循环~
  • ​力扣解法汇总946-验证栈序列
  • ​批处理文件中的errorlevel用法
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (python)数据结构---字典
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (排序详解之 堆排序)
  • (三)终结任务
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (十六)串口UART
  • (小白学Java)Java简介和基本配置
  • (转载)利用webkit抓取动态网页和链接
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 发展历程
  • .net连接oracle数据库
  • @cacheable 是否缓存成功_Spring Cache缓存注解