一聚教程网:一个值得你收藏的教程网站

热门教程

Java实现联系人管理系统代码示例

时间:2022-06-29 01:53:52 编辑:袖梨 来源:一聚教程网

本篇文章小编给大家分享一下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 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 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手机号ttQQtt邮箱");
        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手机号ttQQtt邮箱");
        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手机号ttQQtt邮箱");
        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手机号ttQQtt邮箱");
        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();
    }

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

热门栏目