一、需求分析:
通讯录主要用于储存联系人的信息,这里我们主要记录了联系人的姓名以及号码
在角色上我们只设计了用户。

二、概要设计:
想清楚程序应该分为几个模块,每个模块都是干啥的,模块之间是如何交互的?
由于当前的系统相对比较简单,暂且设为一个模块。

三、详细设计:
每个模块具体的一些细节再考虑清楚

四、开始编码:
将系统分为了三大部分:contact 包、operation 包、Main 类
(1)contact 包:包含了Contact 类(用于描述每个联系人的信息),ContactList 类(用于描述所有联系人的信息)
(2)operation 包: 包含了各种具体实现的操作
(3)Main 方法:程序的入口。

编码的整体结构:
contact 包:
Contact 类:描述每个联系人的信息
ContactList 类:描述所有联系人的信息,简单的顺序表

operation 包:
IOperation 接口:operation 包里面的每个类都需要重写IOperation 接口里面的 work 方法。
AddOperation 类:添加联系人以及进行通讯录的扩容
DelectOperation 类:删除联系人
SearchOperation 类:查找某个联系人
ShowOperation 类:打印所有联系人的信息
SortOperation 类:对联系人进行排序(按照首字母大小)
ClearOperation 类:清空联系人
ExitOperation 类:退出程序

Main 类:
整个程序的入口以及相关操作的菜单。

具体的代码实现:
1.contact 包:
(1)Contact 类:

public class Contact {private String name;private String id;public Contact(String name, String id) {this.name = name;this.id = id;}@Overridepublic String toString() {return "Contact{" +"name='" + name + '\'' +", id='" + id + '\'' +'}';}public String getName() {return name;}
}

(2)ContactList 类:

public class ContactList {public Contact[] contacts = new Contact[1];private int size;public Contact getContact(int index) {return contacts[index];}public void setSize(int size) {this.size = size;}public int getSize() {return size;}public void setContact(int index, Contact contact) {contacts[index] = contact;}
}

2.operation 包:
(1)IOperation 接口:

import contact.ContactList;public interface IOperation {void work(ContactList contactList);
}

(2)AddOperation 类:

public class AddOperation implements IOperation {@Overridepublic void work(ContactList contactList) {System.out.println("添加联系人");Scanner scanner = new Scanner(System.in);System.out.println("请输入添加联系人的姓名:");String name = scanner.next();System.out.println("请输入添加联系人的号码:");String id = scanner.next();Contact contact = new Contact(name,id);contactList.setContact(contactList.getSize(),contact);contactList.setSize(contactList.getSize() + 1);System.out.println("添加成功!");if (contactList.getSize() == contactList.contacts.length) {//进行扩容Contact[] newContacts = new Contact[contactList.contacts.length * 2];for (int i = 0; i < contactList.getSize(); i++) {newContacts[i] = contactList.contacts[i];}contactList.contacts = newContacts;System.out.println("扩容成功 !");}return;}
}

(3)SearchOperation 类:

public class SearchOperation implements IOperation {@Overridepublic void work(ContactList contactList) {System.out.println("查找联系人信息");Scanner scanner = new Scanner(System.in);System.out.println("请输入要查找联系人的姓名:");String name = scanner.next();for (int i = 0; i < contactList.getSize(); i++) {Contact contact = contactList.getContact(i);if (contact.getName().equals(name)) {System.out.println(contact);return;}}System.out.println("查无此人");return;}
}

(4)DelectOperation 类:

public class DelectOperation implements IOperation {@Overridepublic void work(ContactList contactList) {System.out.println("删除联系人");Scanner scanner = new Scanner(System.in);System.out.println("请输入删除联系人的姓名:");String name = scanner.next();//先查找for (int i = 0; i < contactList.getSize(); i++) {Contact contact = contactList.getContact(i);if (contact.getName().equals(name)) {//找到了,进行具体的删除contactList.setContact(i,contactList.getContact(contactList.getSize() -1));contactList.setSize(contactList.getSize() - 1);System.out.println("删除成功!");return;}}System.out.println("查无此人");return;}
}

(5)ShowOperation 类:

public class ShowOperation implements IOperation {@Overridepublic void work(ContactList contactList) {System.out.println("展示所有联系人信息");for (int i = 0; i < contactList.getSize(); i++) {Contact contact = contactList.getContact(i);System.out.println(contact);}return;}
}

(6)SortOperation 类:

public class SortOperation implements IOperation {@Overridepublic void work(ContactList contactList) {System.out.println("进行联系人排序(首字母大小)");for (int i = 0; i < contactList.getSize() - 1; i++) {contactList.contacts[i] = contactList.getContact(i);contactList.contacts[i + 1] = contactList.getContact(i + 1);if (contactList.contacts[i + 1].getName().compareTo(contactList.contacts[i].getName()) < 0) {//进行交换Contact tmp = contactList.contacts[i];contactList.contacts[i] = contactList.contacts[i + 1];contactList.contacts[i + 1] = tmp;}}new ShowOperation().work(contactList);return;}
}

(7)ClearOperation 类:

public class ClearOperation implements IOperation {@Overridepublic void work(ContactList contactList) {System.out.println("清空链表");contactList.setSize(0);System.out.println("清空成功!");return;}
}

(8)ExitOperation 类:

public class ExitOperation implements IOperation {@Overridepublic void work(ContactList contactList) {System.out.println("goodbye!");System.exit(0);}
}

3.Main 类:

public class Main {public static void main(String[] args) {ContactList contactList = new ContactList();IOperation[] operations = {new ExitOperation(),new AddOperation(),new SearchOperation(),new DelectOperation(),new ShowOperation(),new ClearOperation(),new SortOperation()};while (true) {int chioce = menu();operations[chioce].work(contactList);}}public static int menu() {System.out.println("-----------------------------");System.out.println("1.添加联系人     2.查找联系人");System.out.println("3.删除联系人     4.展示所有联系人信息");System.out.println("5.清空联系人     6.排序联系人");System.out.println("0.退出");System.out.println("-----------------------------");Scanner scanner = new Scanner(System.in);System.out.println("请输入您的选择:");int choice = scanner.nextInt();return choice;}}

效果展示:

项目源码:https://github.com/YTCfight/Address-book/tree/master/out/production/Test2

Java版手机通讯录相关推荐

  1. pc java版手机_《我的世界》PCJava版不限号开测 手机版首度曝光

    [17173独家专稿,转载请注明出处] 8月8日14点,<我的世界>中国版正式开启PC Java版不限号测试.对于这款风靡全球的沙盒游戏,国内玩家不必付费购买游戏,也无需邀请码,便可以直接 ...

  2. java获取手机通讯录权限_Android读取手机通讯录联系人到自己项目

    本文实例为大家分享了Android读取手机通讯录联系人到项目的具体代码,供大家参考,具体内容如下 一.主界面代码如下: android:layout_width="match_parent& ...

  3. 邮箱android版,网易邮箱Android版手机通讯录将同步

    不仅仅是将邮箱PC应用简单移植到移动终端上,而是根据移动端特性进行再创新.网易邮箱客户端产品经理楼君芳近日在接受媒体专访时称,网易邮箱Android客户端进行多种创新,可以满足用户个性化需求,并在安全 ...

  4. 手机人人java_人人网JAVA版手机客户端软件功能详解

    [IT168 软件频道]首先,安装好人人网的JAVA版本软件后,在手机的应用程序中可以找到人人2009(如图1). 图1 登录:运行人人2009软件,即会进入登录界面(如图2),点击登录,输入你的人人 ...

  5. java获取手机通讯录权限_android获取手机通讯录

    1:androidmanifest.xml的内容 package="cn.itcast.contacts" android:versionCode="1" an ...

  6. java获取手机通讯录权限_iOS6 中如何获得通讯录访问权限

    在iOS 6中,以前工作正常的访问通讯录的iPhone程序可能会出错,现象是程序启动时不提醒用户是否允许程序访问通讯录,同时在"设置->隐私->通讯录"中看不到你的程序 ...

  7. JAVA趣味课程:手机通讯录管理系统

    本篇博客的内容在之前python基础系列案例中有详细讲解,此次我将使用JAVA语言对手机通讯录管理系统进行重新编写.此案例适用于熟练掌握面向对象基础和List集合的基本操作. 需求分析: 能够循环接收 ...

  8. 我的世界java服核心下载_我的世界java版

    我的世界java版手机下载是一款高自由度的沙盒模拟建造游戏,这个版本是Java版本,增加了很多不同的游戏生物,还有超多好玩的游戏内容,感兴趣的玩家们千万不要错过了,快来下载这款我的世界java版1.1 ...

  9. java版我的世界下载_我的世界java版

    我的世界java版这个所谓的java版可能大家不是很熟悉,java版就是<我的世界>是整个游戏的初始版本,目前Java版本是全平台游戏版本中内容最多,更新速度最快的版本.此外,Java版本 ...

最新文章

  1. 19.04.02笔记
  2. 第四章 Controller接口控制器详解(5)——跟着开涛学SpringMVC
  3. 客制化键盘键位修改_干电池 支持5设备无线连接 - 高斯ALT71机械键盘拆解评测...
  4. 除了PS,原来这个也可以轻松实现图像处理!
  5. Codeforces Beta Round #97 (Div. 1) C. Zero-One 数学
  6. jmeter使用_jmeter概念及使用
  7. python 爬虫基础——淘宝评论
  8. php命令行生成文件,php命令行生成与读取配置文件
  9. 使用较广泛的安全测试工具有哪些?
  10. elasticsearch7.12 agg分组聚合分页同段同句查询
  11. idea使用docker-mave插件打包镜像并部署到harbor私服仓库
  12. html5 人在星空中,《在星空中》的教学设计
  13. BGA焊接开裂失效分析案例
  14. trifecta_ui安装
  15. android 短视频例子,Android短视频开发解析,什么才是开发的重点
  16. 年会抽奖 抽奖系统 抽奖软件 C# Winform
  17. Kafka: 异常知其所以然
  18. Vue.js_04_组件_Element组件库_组件通信_PropsDown_EventsUp
  19. Java+SSM旅游管理系统旅行管理(含源码+论文+答辩PPT等)
  20. [TFF学习]官方教程jupyter运行记录_联邦学习之图像分类任务_1

热门文章

  1. html5 css3鼠标滑过效果,Hover.css纯CSS3鼠标滑过特效动画库
  2. 2016年工作总结以及2017年工作计划
  3. javscript将时间转化为时辰输出
  4. 光脚丫思考Vue3与实战:第01章 初步认识Vue3
  5. 【机器学习|数学基础】Mathematics for Machine Learning系列之图论(9):匹配的概念
  6. ros建图时新建出来的图跟着车一起转如何解决
  7. 测试中被封ip和mac的解决办法
  8. 作为一款读书软件火了11年,书旗用更多免费小说内容赢得网络文学读者喜欢
  9. 【无标题】python从入门到实践练习12-2,游戏角色,找一副你喜欢的角色游戏位图..............
  10. 有哪些比较好用的wordpress白标后台的插件