Java超简易命令行版通讯录

引言

这是很久之前的一个练习题,非常简单。网站里没什么内容,所以发上来充充数。

代码

import java.io.*;
import java.util.*;

public class Main {
    static Set<Person> list = new TreeSet<Person>();// 通讯录,保证姓名无重复
    static Scanner in = new Scanner(System.in);

    public static void main(String[] args) {
        while (true) {
            System.out.println("\t\t\t简易通讯录");
            System.out.println("\t\t1\t\t\t添加个人信息");
            System.out.println("\t\t2\t\t\t删除个人信息");
            System.out.println("\t\t3\t\t\t修改个人信息");
            System.out.println("\t\t4\t\t\t查找个人信息");
            System.out.println("\t\t5\t\t\t保存通讯录到文件");
            System.out.println("\t\t6\t\t\t查看当前所有人的信息");
            System.out.println("\t\t0\t\t\t退出程序");
            int i = -1;
            while (i < 0 || i > 6)
                i = in.nextInt();
            switch (i) {
            case 1:
                addPerson();
                break;
            case 2:
                delPerson();
                break;
            case 3:
                modPerson();
                break;
            case 4:
                findPerson();
                break;
            case 5:
                WriteToFile();
                break;
            case 6:
                Show();
                break;
            case 0:
                System.exit(0);
                break;
            }
        }
    }

    // 添加人员信息
    public static void addPerson() {
        String name;// 姓名
        String phone;// 电话号码
        String email;// 邮箱
        String address;// 地址
        Person h;
        System.out.print("请输入姓名:");
        name = in.next();
        while (findName(name) != null) {
            System.out.println("该人物已存在,请重新输入姓名!");
            System.out.print("请输入姓名:");
            name = in.next();
        }
        h = new Person(name);
        while (true) {
            System.out.print("请输入电话号码(0表示结束):");
            phone = in.next();
            if (phone.equals("0"))
                break;
            h.addPhoneNum(phone);
        }
        System.out.print("请输入电子邮箱:");
        email = in.next();
        h.setEmail(email);
        System.out.print("请输入住址:");
        address = in.next();
        h.setAddress(address);
        list.add(h);
        System.out.println("成功添加!");
    }

    // 删除人员信息
    public static void delPerson() {
        Person h;
        String name;
        System.out.print("请输入要删除的姓名:");
        name = in.next();
        h = findName(name);
        if (h == null)
            System.out.println("该姓名不存在!");
        else {
            list.remove(h);
            System.out.println("成功删除!");
        }
    }

    // 修改人员信息
    public static void modPerson() {
        String name;// 姓名
        String phone;// 电话号码
        String email;// 邮箱
        String address;// 地址
        Person h;
        System.out.print("请输入要进行修改的姓名:");
        name = in.next();
        h = findName(name);
        if (h == null)
            System.out.println("该姓名不存在!");
        else {
            System.out.println("个人信息如下:");
            System.out.println(h);
            System.out.print("删除某个电话号码请输入1:");
            if (in.nextInt() == 1) {
                System.out.print("请输入要删除的电话号码:");
                phone = in.next();
                if (h.getPhoneNum().remove(phone))
                    System.out.println("成功删除!");
                else
                    System.out.println("不存在该号码!");
            }
            System.out.print("请输入新的电话号码(输入0表示不添加):");
            phone = in.next();
            if (!phone.equals("0")) {
                h.addPhoneNum(phone);
            }
            System.out.print("请输入新的电子邮箱(输入0表示不修改):");
            email = in.next();
            if (!email.equals("0")) {
                h.setEmail(email);
            }
            System.out.print("请输入新的住址(输入0表示不修改):");
            address = in.next();
            if (!address.equals("0")) {
                h.setEmail(address);
            }
        }
    }

    // 查找人员信息
    public static void findPerson() {
        String name;
        Person h;
        System.out.print("请输入要查找的姓名:");
        name = in.next();
        h = findName(name);
        if (h == null)
            System.out.println("该姓名不存在!");
        else {
            System.out.println("个人信息如下:");
            System.out.println(h);
        }
    }

    // 将通讯录写入txt文件
    public static void WriteToFile() {
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter("out.txt"));
            for (Person h : list) {
                bw.write(h.toString() + "\n");
            }
            bw.close();
            System.out.println("成功写入文件:out.txt");
        } catch (IOException e) {
            System.out.println("写入文件失败!");
        }
    }

    // 按姓名查找
    public static Person findName(String name) {
        for (Person h : list) {
            if (h.getName().equals(name))
                return h;
            if (h.getName().compareTo(name) > 0)// list是按照姓名从小到大排序的,这时就可以断定查无此人了
                return null;
        }
        return null;
    }

    // 按电话查找
    public static Person findPhone(String phone) {
        for (Person h : list) {
            if (h.getPhoneNum().indexOf(phone) != -1)
                return h;
        }
        return null;
    }

    // 显示当前所有人的信息
    public static void Show() {
        for (Person h : list) {
            System.out.println(h);
        }
    }
}

class Person implements Comparable<Person> {
    private String name;// 姓名
    private ArrayList<String> phoneNum = new ArrayList<String>();// 电话号码
    private String email;// 邮箱
    private String address;// 地址

    // 构造函数
    public Person(String name) {
        super();
        this.name = name;
    }

    // 构造函数
    public Person() {
        super();
    }

    // 添加电话号码
    public void addPhoneNum(String s) {
        phoneNum.add(s);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ArrayList<String> getPhoneNum() {
        return phoneNum;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public int compareTo(Person o) {
        return name.compareTo(o.name);
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", phoneNum=" + phoneNum + ", email=" + email + ", address=" + address + "]";
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部