Java实现联系人管理系统

 更新时间:2022年02月28日 12:15:40   作者:Tryci  
这篇文章主要为大家详细介绍了Java实现联系人管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

基于Java的联系人管理系统,供大家参考,具体内容如下

基于eclipse做的一个简单的联系人管理系统

对于联系人姓名首字母进行了一个排序,对于存入信息时手机号码与电子邮箱做了一个判断,只有在输入正确格式的手机号和电子邮箱才能成功存入数据

联系人基本属性类

此类包含联系人编号、姓名、手机号、QQ、电子邮箱等信息

/** 编号*/
private int sno;
/** 姓名*/
private String name;
/** 手机号*/
private String phone;
/** QQ*/
private String qq;
/** 电子邮箱*/
private String email;

快捷生成相应的方法与构造器

public User(int sno, String name, String phone, String qq, String email) {
        super();
        this.sno = sno;
        this.name = name;
        this.phone = phone;
        this.qq = qq;
        this.email = email;
    }
    public int getSno() {
        return sno;
    }
    public void setSno(int sno) {
        this.sno = sno;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getQq() {
        return qq;
    }
    public void setQq(String qq) {
        this.qq = qq;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    @Override
    public String toString() {
        return sno + "\t" + name + "\t" + phone + "\t" + qq + "\t" + email;
    }

由此完成联系人属性定义,再实现对联系人进行管理的功能

功能类

功能我在功能类与测试类中共同实现,因在测试类中反复调用方法
首先定义一个ArrayList数组来对信息进行存储

static ArrayList<User> list = new ArrayList<>();

添加联系人方法

/** 1-添加联系人 */
public void add(User u) {
        list.add(u);
}

联系人查询功能(根据不同信息进行查询:编号、姓名、手机号)

/** 2-联系人查询(根据编号查询) */
public User findBySno(int sno) {
        User us = null;
        for (User u : list) {
            if (u.getSno() == sno) {
                us = u;
                break;
            }
        }
        return us;
    }

    /** 3-联系人查询(根据姓名查询) */
    public User findByName(String name) {
        User us = null;
        for (User u : list) {
            if (u.getName().equals(name)) {
                us = u;
                break;
            }
        }
        return us;
    }
    
    /** 4-联系人查询(根据手机号查询) */
    public User findByPhone(String phone) {
        User us = null;
        for (User u : list) {
            if (u.getPhone().equals(phone)) {
                us = u;
                break;
            }
        }
        return us;
    }

联系人列表

/** 5-联系人列表 */
public ArrayList<User> findAll() {
        return list;
}

删除联系人

/** 6-删除联系人 */
    public boolean delete(int sno) {
        User user = findBySno(sno);
        if (user != null) {
            return list.remove(user);
        }
        return false;
}

此类完成

测试实现类

此类调用功能类中方法实现功能的运用
首先创建对象与控制台输入功能

private UserManage um = new UserManage();
private Scanner sc = new Scanner(System.in);

创建窗口指令界面提供用户提示消息

/** 输入窗口的指令界面 */
public void menu() {
        msg("===================================");
        msg("======SOFTEEM联系人管理系统============");
        msg("======【1】联系人添加==================");
        msg("======【2】根据编号查看联系人信息==========");
        msg("======【3】根据姓名查看联系人信息==========");
        msg("======【4】根据手机号查看联系人信息=========");
        msg("======【5】查看所有联系人===============");
        msg("======【6】根据标号删除联系人============");
        msg("======【0】退出系统===================");
        msg("请输入操作指令: ");
        start();
    }

按照提示消息来使用功能,在此方法中调用各个功能

/** 程序按键入口 */
private void start() {
        sc = new Scanner(System.in);
        int i = sc.nextInt();
        switch (i) {
        case 1:
            add();
            break;
        case 2:
            queryById();
            break;
        case 3:
            queryByname();
            break;
        case 4:
            queryByPhone();
            break;
        case 5:
            list();
            break;
        case 6:
            delete();
            break;
        case 0:
            exit();
            break;
        default:
            msg("请输入正确的操作指令!!!");
            break;
        }
        menu();
    }

联系人的增删改查功能,另外添加了对联系人姓名首字母进行排序的功能

/** 1-用户添加的客户端实现 */
private void add() {
        String regex = "^1[13456789]\\d{9}$";
        String email="\\w+@\\w+\\.\\w+";
        msg("请输入用户信息:((按以下格式:编号/姓名/手机号/QQ/邮箱))");
        sc = new Scanner(System.in);
        String s = sc.nextLine();
        // 根据"/"截取用户信息
        String[] info = s.split("/");
        if (um.findBySno(Integer.parseInt(info[0])) != null) {
            msg("该ID用户已存在,请重新输入!");
            add();
            return;
        } else {
            User u = new User(Integer.parseInt(info[0]), info[1], info[2], info[3], info[4]);
            if (info[2].matches(regex)) {
                
            }else{
                msg("格式错误,请输入正确的手机号!");
                add();
            }
            if (info[4].matches(email)) {
                
            }else{
                msg("格式错误,请输入正确的邮箱!");
                add();
            }
            um.add(u);
            msg("添加成功!");    
        }
    }

    /** 2-根据编号查询联系人 */
    private void queryById() {
        sc = new Scanner(System.in);
        msg("请输入联系人编号:");
        int sno = sc.nextInt();
        User u = um.findBySno(sno);
        if (u == null) {
            msg(sno + "号不存在,请重新输入!");
            queryById();
            return;
        }
        msg("编号\t姓名\t手机号\t\tQQ\t\t邮箱");
        msg(u);
    }

    /** 3-根据姓名查询联系人 */
    private void queryByname() {
        sc = new Scanner(System.in);
        msg("请输入联系人姓名:");
        String name = sc.next();
        User u = um.findByName(name);
        if (u == null) {
            msg(name + "不存在,请重新输入");
            queryByname();
            return;
        }
        msg("编号\t姓名\t手机号\t\tQQ\t\t邮箱");
        msg(u);
    }
    
    /** 4-根据手机号查询联系人*/
    private void queryByPhone() {
        sc = new Scanner(System.in);
        msg("请输入联系人手机号:");
        String phone = sc.next();
        User u = um.findByPhone(phone);
        if (u == null) {
            msg(phone + "不存在,请重新输入");
            queryByPhone();
            return;
        }
        msg("编号\t姓名\t手机号\t\tQQ\t\t邮箱");
        msg(u);
    }

    /** 5-显示所有联系人(按名字首拼音排序) */
    private void list() {
        (um.findAll()).sort((a, b) -> {
            //分别获取要比较的两个联系人的的姓名
            String name1 = a.getName();
            String name2 = b.getName();
            //声明变量存储转换之后的汉语拼音
            String p1 = "";
            String p2 = "";
            //将汉字转拼音
            for (int i = 0; i < name1.length(); i++) {
                p1 += PinyinHelper.toHanyuPinyinStringArray(name1.charAt(i))[0];
            }
            for (int i = 0; i < name2.length(); i++) {
                p2 += PinyinHelper.toHanyuPinyinStringArray(name2.charAt(i))[0];
            }
            
            return p1.compareTo(p2);
        });
        
        msg("编号\t姓名\t手机号\t\tQQ\t\t邮箱");
        for (User u : um.findAll()) {
            msg(u);
        }
    }

    /** 6-根据编号删除联系人 */
    private void delete() {
        sc = new Scanner(System.in);
        msg("请输入用户编号:");
        int sno = sc.nextInt();
        if (um.delete(sno)) {
            msg("删除成功!");
        } else {
            msg("删除失败!");
        }
    }
        public void msg(Object obj) {
        System.out.println(obj);
    }

程序的退出功能

/** 0-体统退出 */
private void exit() {
        sc = new Scanner(System.in);
        msg("是否确定退出?(Y/N)");
        String op = sc.next();
        if (op.equalsIgnoreCase("Y")) {
            msg("谢谢使用,再见!");
            System.exit(1);
        }
    }

联系人管理系统的程序入口

public static void main(String[] args) {
        TestUser tu = new TestUser();
        tu.menu();
    }

功能实现里没有什么技术难点,只要细心一点将对象方法调用和一些简单的判断语句使用灵活就能轻松的完成此系统。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • JAVA提高第七篇 类加载器解析

    JAVA提高第七篇 类加载器解析

    这篇文章主要为大家详细介绍了JAVA提高第七篇类加载器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 史上最全面的Spring Boot配置文件深入讲解

    史上最全面的Spring Boot配置文件深入讲解

    Springboot极大的简化了Spring框架的使用配置流程,在核心配置文件里,几乎可以完成所有的配置工作,下面这篇文章主要给大家介绍了关于Spring Boot配置文件的相关资料,文中介绍的非常全面,需要的朋友可以参考下
    2018-12-12
  • 详解spring cloud中使用Ribbon实现客户端的软负载均衡

    详解spring cloud中使用Ribbon实现客户端的软负载均衡

    这篇文章主要介绍了详解spring cloud中使用Ribbon实现客户端的软负载均衡,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 关于springboot 配置date字段返回时间戳的问题

    关于springboot 配置date字段返回时间戳的问题

    这篇文章主要介绍了springboot 配置date字段返回时间戳的问题,在springboot2.0后,spring会将Date字段自动给转成UTC字符串了(在没有配置的情况下),所以date需要转换成时间戳还是yyyy-MM-dd HH:mm:ss,具体解决方法跟随小编一起看看吧
    2021-07-07
  • Springboot项目删除项目同步target文件问题解决方案

    Springboot项目删除项目同步target文件问题解决方案

    这篇文章主要介绍了Springboot项目删除项目同步target文件问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Java并发编程必备之Future机制

    Java并发编程必备之Future机制

    今天给大家带来的是关于Java并发编程的相关知识,文章围绕着Java Future机制展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 基于SpringBoot加载Mybatis的TypeAlias问题

    基于SpringBoot加载Mybatis的TypeAlias问题

    这篇文章主要介绍了解决SpringBoot加载Mybatis的TypeAlias问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SLF4J报错解决:No SLF4J providers were found的问题

    SLF4J报错解决:No SLF4J providers were found的

    这篇文章主要介绍了SLF4J报错解决:No SLF4J providers were found的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • SpringBoot使用YML文件进行多环境配置的三种方法

    SpringBoot使用YML文件进行多环境配置的三种方法

    SpringBoot通过其灵活的配置机制,使得在不同环境中管理应用设置变得简单,尤其是使用YAML文件进行配置,它提供了一种简洁、易读的方式来定义应用的配置,本文将探讨在SpringBoot中使用YAML文件进行多环境配置的三种方法,需要的朋友可以参考下
    2024-04-04
  • Java中基于maven实现zxing二维码功能

    Java中基于maven实现zxing二维码功能

    这篇文章主要介绍了Java中基于maven实现zxing二维码功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02

最新评论