展开全部

import java.util.Arrays;

public class AddressBook

{

private int totalContacts; // 现在通讯录中的总数

private int maxContacts; // 通讯录的最大值

private Contact[] contacts; // 通讯录的array

/**

* Constructor. 设定这个通讯录最初的大32313133353236313431303231363533e58685e5aeb931333337626165小为10人上限.

*/

public AddressBook()

{

totalContacts = 0;

maxContacts = 10;

contacts = new Contact[totalContacts];

}

/**

* 得到一个联系通过通讯录中的名字

*

* @param name

* 要去得到的联系人名字

* @return 这个联系人, 没有的话为null

*/

public Contact getContactByName(String name)

{

for(int i = 0; i < totalContacts; i++)

{

Contact c = contacts[i];

if(name.equals(c.getName()))

{

return c;

}

}

return null;

}

/**

* 在这个contacts array的最后给这个通讯录添加联系人.

* 如果联系人已经存在且号码参数不为0的话,联系人的号码会更新或者地址参数不是null的话,地址会更新。.

* 如果totalContacts达到maxContacts的值的话,在新的联系人被添加前,这个contacts

* array的size会乘以双倍并且maxContacts也乘以双倍。

*

* @param contact

* 要加到这个通讯录的联系人

* @return true 如果这个联系人添加成功, 否则 false;

*/

public boolean addContact(Contact contact)

{

for(int i = 0; i < contacts.length; i++)

{

Contact ct = contacts[i];

if(ct.equals(contact))

{

if(ct.getNumber() != 0)

{

ct.setNumber(contact.getNumber());

}

if(null != ct.getAddress())

{

ct.setAddress(contact.getAddress());

}

return true;

}

}

if(totalContacts == maxContacts)

{

totalContacts *= 2;

maxContacts *= 2;

}

Contact[] cs = new Contact[totalContacts + 1];

System.arraycopy(contacts, 0, cs, 0, totalContacts);

cs[cs.length - 1] = contact;

contacts = cs;

totalContacts++;

return true;

}

/**

* 检查是否联系人已经存在

*

* @param contact

* 要去检查的contact

* @return true 如果这个联系人被找到,否则false

*/

public boolean contains(Contact contact)

{

for(int i = 0; i < totalContacts; i++)

{

if(contacts[i].equals(contact))

{

return true;

}

}

return false;

}

public void printAddressBook()

{

for(int i = 0; i < totalContacts; i++)

{

System.out.println(contacts[i]);

}

}

/**

* 在AddressBook中还有一个方法!

* 从通讯录中移除一个指定的联系人,之后把其他的入口左移,这样在联系人间就没有空隙了,

* For example:

* before -> {C1, C2, C3, C4, C5, C6, C7, C8, C9, null} remove C6

* after -> {C1, C2, C3, C4, C5, C7, C8, C9, null, null}

*

* @param contact

* 要移除的联系人,

* @return true 如果这个联系人被成功移除了,否则false;

*/

public boolean removeContact(Contact contact)

{

if(totalContacts == 0)

{

return false;

}

for(int i = 0; i < totalContacts; i++)

{

Contact ct = contacts[i];

if(ct.equals(contact))

{

Contact[] cs = new Contact[totalContacts];

System.arraycopy(contacts, 0, cs, 0, i);

System.arraycopy(contacts, i + 1, cs, i, cs.length - i - 1);

contacts = cs;

totalContacts--;

return true;

}

}

return false;

}

@Override

public String toString()

{

return String.format("AddressBook [totalContacts=%s, maxContacts=%s, contacts=%s]", totalContacts, maxContacts,

Arrays.toString(contacts));

}

}

//--------------------------------------------------

public class Contact

{

private String name;

private long number;

private String address;

public String getName()

{

return name;

}

public void setName(String name)

{

this.name = name;

}

public long getNumber()

{

return number;

}

public void setNumber(long number)

{

this.number = number;

}

public String getAddress()

{

return address;

}

public void setAddress(String address)

{

this.address = address;

}

@Override

public boolean equals(Object obj)

{

if(!(obj instanceof Contact))

{

return false;

}

Contact contact = (Contact) obj;

if(this.getName().equals(contact.getName())

&&

this.getAddress().equals(contact.getAddress())

&&

this.getNumber() == contact.getNumber())

{

return true;

}

return false;

}

@Override

public String toString()

{

return String.format("Contact [name=%s, number=%s, address=%s]", name, number, address);

}

}

//---------------------------------------------

public class Test

{

public static void main(String[] args)

{

AddressBook ab = new AddressBook();

for(int i = 0; i < 10; i++)

{

Contact contact = new Contact();

int x = i + 1;

contact.setName("C" + x);

contact.setAddress("china");

contact.setNumber(x);

ab.addContact(contact);

}

System.out.println(ab);

Contact c = new Contact();

c.setName("C6");

c.setAddress("china");

c.setNumber(6);

ab.removeContact(c);

System.out.println(ab);

}

}

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

java 个人通讯录_java个人通讯录管理系统相关推荐

  1. java宠物医院_java宠物医院管理系统

    今天和一个朋友共同完成了一个基于java的宠物医院管理系统项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架.我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他.和往常一样选用简单又便 ...

  2. java简单系统_Java简单学生管理系统

    Java简单学生管理系统 这个不需要手动输入,笔记记录 //student` public class student(){ private String id;//学号 private String ...

  3. 学生宿舍管理系统java课设_JAVA学生宿舍管理系统

    需要的工具 1.SQL Server 2.Eclipse 3.JDBC连接数据库驱动 https://download.microsoft.com/download/A/F/B/AFB381FF-70 ...

  4. java物业管理系统设计_JAVA版物业管理系统论文+设计源码

    内容介绍 原文档由会员 从头再来 发布 (内含完整源代码) 1.2万字 28页 [摘要] 物业管理系统是紧随当今时代发展的需要,目的在于实现不同的人员对物业系统的不同的需要,有利于社会的稳定和顺利发展 ...

  5. java 购买电影票_java电影票预售管理系统

    每天记录学习,每天会有好心情.*^_^* 今天和一个朋友共同完成了一个基于web的java电影票预售管理系统项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架.我这个朋友知识有限,只会这个 ...

  6. java编程运动会_java田径运动会管理系统

    [实例简介] java实现的田径运动会管理系统,内有源码(可直接用eclipse打开)和可执行文件,还有sql脚本,对程序的使用有详细说明,还附带一份完整的实验报告,对系统有详细说明. [实例截图] ...

  7. java 电子发票_java电子发票管理系统-Go语言中文社区

    目录 引言 这是当时学完SpringBoot后写的一个小项目,当时EasyUI学了一点,而且个人感觉EasyUI用起来是挺好用的,但页面感觉不是很好看,所以这个项目表格用的是EasyUI的,页面用的B ...

  8. java 皮肤包_Java swing图书管理系统无注释美化皮肤包版1:含SQL部分和效果图

    SQL: select ts_shuliang,jnum from tushu t join jieyue j on t.ts_id=j.ts_id where j.ts_id='1' j.ts_id ...

  9. java财务管理源代码_java 个人财务管理系统 入门级源码

    [实例简介]管理日常支出 [实例截图] [核心代码] @RequestMapping(value = "/recordselectBydate") public String se ...

最新文章

  1. 的不定积分_不定积分练习_09/11/2020
  2. VMware安装Win7虚拟机
  3. python 小波去噪,用Pywavelet去噪信号?
  4. JavaScript实现的水珠动画效果
  5. Django 之 权限系统(组件)
  6. 你需要了解操作系统发展历程
  7. MySQL外键命名规范
  8. 数据脱敏和加密_Apache ShardingSphere数据脱敏全解决方案详解
  9. 序列化与反序列化存储、updatepanel
  10. Makefile 中all:的作用
  11. RK3399触摸不准,修改drivers中gt9xx.h的cfg
  12. 自然语言处理国内外著名会议、期刊
  13. RESTful API入门学习笔记
  14. 《远见》的读后感作文1000字范文
  15. android CircleIndicator 实现引导页
  16. rxjava背压_RxJava背压
  17. 社招两年半10个公司28轮面试面经
  18. 品读《你不努力,谁也给不了你想要的生活》
  19. vaild-palindrome
  20. 淘宝店适合什么样引流方法?淘宝店应该如何引流?

热门文章

  1. 提高团队合作的六个方法
  2. AJAX和JSON介绍
  3. tornado 自定义WEB框架 、与Tyrion组件做表单验证
  4. 是非人生 — 一个菜鸟程序员的5年职场路 第9节
  5. 智慧工地管理平台系统赋能建筑企业数字化管理
  6. Delphi 下的Base64编码和解码
  7. afm原子力分析软件_【干货】原子力显微镜(AFM)的使用和成像技巧
  8. 干货,分布式数据库在金融核心场景的落地实践|腾讯云数据库
  9. 计算机专业的学生买什么电脑,设计类学生买什么电脑
  10. 怎么使用漫画脸制作软件