提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 使用java完成一个通讯录
  • 一、添加联系人
  • 二、联系人查询
  • 三、显示联系人列表
  • 四、根据编号删除指定编号的联系人
  • 总结:用户的使用界面的设计

使用java完成一个通讯录

(1)添加联系人(联系人:编号,姓名,手机号,QQ,邮箱地址) 添加时需要检查手机号 和邮箱地址格式是否正确,若不正确,不允许添加
(2)联系人查询(输入姓名或电话查询)
(3)显示联系人列表
(4)根据编号删除指定编号的联系人


一、添加联系人

创建一个ArrayList的动态数组,添加数据,判断手机号和邮箱地址的格式是否正确

 ArrayList<Contact> list = new ArrayList<>();public boolean add(People p){String number= p.getNumber();String mailbox= p.getMailbox();if(!number.matches("^1\\d{10}")){System.out.println("手机号的格式不正确");return false;}if(!mailbox.matches("^[1-9]\\d{4,10}[@][qq]+\\.com")){System.out.println("邮箱地址不正确");return false;}list.add(p);return true;}

二、联系人查询

分两种查询,一种是手机号查询,一种是姓名查询

public List<Contact> findByCondition(int flag, String key) {// 声明临时变量存储查询到符合条件的数据ArrayList<Contact> temp = new ArrayList<Contact>();// 对联系人遍历for (Contact c : list) {if (flag == 1) {// 按姓名(判断联系人姓名中是否包含指定的查询关键字)if (c.getName().contains(key)) {temp.add(c);}} else if (flag == 2) {// 按手机号if (c.getPhone().contains(key)) {temp.add(c);}} else {temp = list;break;}}return temp;}

三、显示联系人列表

public List<Contact> findAll(int pageNow, int pageSize) {//计算起始位置int from = (pageNow - 1) * pageSize;int to = pageNow * pageSize;//如果集合中没有数据时返回nullif(list.size() < 1) {return null;}//开始位置不能等于总数据条数(越界)if(from >= list.size()) {return null;}//结尾的位置不能超过数据总条数if(to > list.size()) {to = list.size();}return list.subList(from, to);}

四、根据编号删除指定编号的联系人

public boolean del(int num) {Contact target = null;for(Contact c:list) {if(c.getNum() == num) {target = c;break;}}if(Objects.isNull(target)) {System.out.println("未找到目标联系人");return false;}return list.remove(target);}

总结:用户的使用界面的设计

Scanner input = new Scanner(System.in);ContactManager cm = new ContactManager();public void mainMenu() {p("**********欢迎使用SOFTEEM-SMART通信录*******");p("*\t[1]添加联系人\t\t\t*");p("*\t[2]联系人列表\t\t\t*");p("*\t[3]根据姓名查询联系人\t\t*");p("*\t[4]根据手机号查询联系人\t\t*");p("*\t[5]删除联系人\t\t\t*");p("*\t[0]退出\t\t\t\t*");p("*****************************************");p("请输入正确的操作指令:");//开始start();}public void start() {String s = input.next();if(!s.matches("^[0-5]$")) {p("请输入合法的操作指令");start();}switch(s) {case "1"://添加联系人addContact();break;case "2"://联系人列表listContact();break;case "3"://查询联系人(by 姓名)queryByCondition(1);break;case "4"://查询联系人(by 手机号)queryByCondition(2);break;case "5"://删除联系人delByNum();break;case "0"://退出p("谢谢使用,再见!");System.exit(0);break;}}/*** 删除联系人*/private void delByNum() {p("请输入联系人的编号:");String num = input.next();if(!num.matches("^\\d+$")) {p("请输入正确的编号");delByNum();}else {boolean f = cm.del(Integer.parseInt(num));if(f) {p("删除成功");}mainMenu();}}/*** 条件查询* @param flag*/private void queryByCondition(int flag) {p("请输入查询关键字");String key = input.next();List<Contact> list = cm.findByCondition(flag, key);//判断集合是否为空if(list.isEmpty()) {p("未查询到匹配的联系人!");}else {for(Contact c:list) {p(c);}}mainMenu();}/*** 联系人列表*/private void listContact() {p("请输入需要显示的联系人页码数和每页条数(按:页码/数据条数):");String s = input.next();if(!s.matches("\\d{1,3}/\\d{1,3}")) {System.out.println("输入的页码或每页条数格式不正确");listContact();}else {String[] nums = s.split("/");List<Contact> list = cm.findAll(Integer.parseInt(nums[0]), Integer.parseInt(nums[1]));if(Objects.isNull(list)) {p("没有更多数据可显示!");mainMenu();}else {for (Contact c : list) {p(c); }listContact();}} }/*** 添加*/private void addContact() {p("请输入联系人信息(按:编号/姓名/手机号/qq/邮箱)");String s = input.next();if(!s.matches("\\d+/.+/1\\d{10}/[1-9]\\d{4,11}/\\w+?@.+?\\.\\w+")) {System.out.println("输入信息有误,请重新输入");addContact();}else {           String[] info = s.split("/");//根据输入的信息构建联系人对象Contact c = new Contact(Integer.parseInt(info[0]), info[1], info[2], info[3], info[4]);if(cm.add(c)) {p("添加成功!");mainMenu();}else {addContact();}}}public void p(Object msg) {System.out.println(msg);}public static void main(String[] args) {new Client().mainMenu();}

这是我们学集合的时候,老师布置的作业,我觉得还挺难的。

使用java完成一个通讯录相关推荐

  1. 用Java设计一个通讯录,保存读者的信息。

    用Java设计一个通讯录,保存读者的信息. 一class Address package p3;import java.io.Serializable;public class Address imp ...

  2. java编写一个通讯录_java写的通讯录(小玩意)

    上次有发个超级菜鸟级别的连接access的小程序 受兄弟委托,如今表妹期末了,要写个通讯录 于是草草的给写了个,毕竟有一个学期了,所以这次的代码会比较合理些-- 使用说明: 实现技术:java语言,界 ...

  3. java开发一个简单的通讯录

    java开发一个简单的通讯录 ArrayList的综合应用 import java.util.*; public class ContactNote{static Scanner sc=new Sca ...

  4. [内附完整源码和文档] 基于Java的个人通讯录管理系统

    摘 要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理 ...

  5. 基于JAVA的电子通讯录+源码+毕业设计+课程设计

    源码地址:JAVA+SQL+电子通讯录+源码+毕业设计 随着信息时代的到来,人们越来越注重通讯方式的快捷性和高效性.在这样的背景下,电子通讯录应运而生,成为人们生活中不可或缺的工具.在这篇文章中,我们 ...

  6. python手机通讯录管理系统代码_[内附完整源码和文档] 基于Java的个人通讯录管理系统...

    摘 要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理 ...

  7. 【Android】Java多功能通讯录APP项目设计

    ❥ 每每学习一门课程,都少不了一门课设布置下来 ❥<移动互联开发>课开了8天,要设计一款App,果然大学即自学,而且一学期好几个 (555 ❥ 下面把最近开发的Android Studio ...

  8. java类名可以是数字吗_在 Java 中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为( )。_学小易找答案...

    [简答题]Java 支持多继承吗 ? [单选题]以下关于继承的叙述正确的是( ). [单选题]在 Java 中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数.类型或顺序各不相同,传回的值也 ...

  9. java课设通讯录制作,JAVA课程设计--个人通讯录管理系统

    JAVA课程设计--个人通讯录管理系统 JAVAJAVA 课程设计课程设计 课题个人通讯录管理系统课题个人通讯录管理系统 课程名称 java 课程设计 院 系 计算机科学与技术学院 班 级 09 计本 ...

最新文章

  1. ssh,FTP到远程服务器时,显示自定义的警告信息
  2. Razor master page
  3. 性能翻倍 IBM借DS3500拓中低端存储市场
  4. spring 整合 mybatis 中数据源的几种配置方式
  5. jooq_jOOQ与Hibernate:何时选择哪个
  6. Angular Redux
  7. 台式电脑键盘按键错乱_收藏篇:电脑键盘上的每个按键的作用和命令你都会用么...
  8. 数组重复次数最多的元素递归_使用递归计算链接列表中元素的出现次数
  9. 关于Windows XP SP3 的 FAQ
  10. OpenSLR 中国镜像背后的数据存储服务商,原来是这样一家公司!
  11. 如何在 Safari 下载 ZIP 文件后不自动解压?
  12. STM32——HAL库函数版——AD7656驱动程序
  13. 软件单元测试数据分析模板,单元测试报告模板
  14. go日志收集系统项目简介
  15. JavaSSM接入支付宝当面付(扫码支付)
  16. Elasticsearch-SERVICE_UNAVAILABLE/1/state not recovered
  17. 大数据都应用在哪些领域?
  18. 插件启动so库加载原理及实现
  19. 在一家公司待久了没有目标,没有动力,我该怎么办?
  20. 将要到来的三大技术革命与联系

热门文章

  1. 任正非签发2019年001号文件:把网络安全和隐私保护作为公司的最高纲领
  2. tab weui 页面切换_weui tabbar 切换
  3. c语言 编译器关键字,C语言关键字 restrict
  4. 辐射神经场算法——Wild-NeRF / Mipi-NeRF / BARF / NSVF / Semantic-NeRF / DSNeRF
  5. 源代码阅读利器 Source Insight使用指导
  6. R 语言 中的Bootstrapping
  7. 快速记忆HTTP状态码
  8. Latex数学公式基本使用格式
  9. 计算机毕业设计ssm哈尔滨市合欢婚庆公司管理588fz系统+程序+源码+lw+远程部署
  10. 大促突围:京东到家基于Canal的数据异构设计