注意: 此通讯录使用姓名查找,故联系人姓名不能重复。

1)文件名要与类名相同。

2)三个文件要放在同一个文件夹下。

3)包名(package com.lianxi.test;)需要删除或更改。

4)Ui.java是主函数文件,运行这个文件即可。

java 软件 通讯录 java个人通讯录_数组

 

java 软件 通讯录 java个人通讯录_java_02

 

1、Contacts.java

package com.lianxi.test;
public class Contacts {
    //联系人类
    private String name;
    private String gender;
    private int age;
    private String tel;
    private String qq;
    private String addr;
    //无参构造函数
    public Contacts() {
    }
    //有参构造函数
    public Contacts(String name, String gender, int age, String tel, String qq, String addr) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.tel = tel;
        this.qq = qq;
        this.addr = addr;
    }
    //get和set方法
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getGender() {
        return gender;
    }
 
    public void setGender(String gender) {
        this.gender = gender;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public String getTel() {
        return tel;
    }
 
    public void setTel(String tel) {
        this.tel = tel;
    }
 
    public String getQq() {
        return qq;
    }
 
    public void setQq(String qq) {
        this.qq = qq;
    }
 
    public String getAddr() {
        return addr;
    }
 
    public void setAddr(String addr) {
        this.addr = addr;
    }
    //返回字符串
    @Override //重写方法
    public String toString() {
        return "联系人 [" +
                "姓名:" + name +
                "\t性别:" + gender +
                "\t年龄:" + age +
                "\t电话:" + tel +
                "\tQQ:" + qq +
                "\t地址:" + addr +
                ']';
    }
}

2、PhoneBook.java

package com.lianxi.test;
 
public class PhoneBook {
    //电话薄类,用于存放联系人并设置增删改查功能
    private Contacts[] contacts; //用联系人类创建一个数组 //contacts为一个存放联系人的数组
    //电话薄 构造方法
    public PhoneBook(){
        this.contacts = new Contacts[100]; //数组长度为100
    }
    //添加
    public boolean add(Contacts person){ //person为单个联系人的信息。包括姓名,性别,年龄等。。。
        for (int i = 0; i < contacts.length; i++) {
            if(contacts[i] == null ){ //数组为空,存放联系人信息
                contacts[i] = person;
                return true; //添加成功
            }
        }
        return false; //添加失败,数组没有位置
    }
    //删除
    public boolean del(String name){ //传入姓名,用来确定要删除的人
        for (int i = 0; i < contacts.length; i++) {
            if(contacts[i] != null && contacts[i].getName().equals(name)){ //此次数组不为空,姓名相同。
                contacts[i] = null;
                return true;
            }
        }
        return false;
    }
    //修改 name: 被修改者的姓名 person: 修改之后的信息
    public boolean chg(String name,Contacts person){
        for (int i = 0; i < contacts.length; i++) {
            if(contacts != null && contacts[i].getName().equals(name)){
                contacts[i] = person;
                return true;
            }
        }
        return false;
    }
    //查询所有
    public Contacts[] findAll(){
        return contacts;
    }
    //根据姓名查询
    public Contacts findByName(String name){
        for (int i = 0; i < contacts.length; i++) {
            if(contacts[i] != null && contacts[i].getName().equals(name)){
               return contacts[i]; //找到,返回联系人信息
            }
        }
        return null; //找不到,返回空
    }
}

3、Ui.java

package com.lianxi.test;
 
import java.util.Scanner;
public class Ui {
     public static void help() {   //帮助界面 方法
         System.out.println("\n");
         System.out.println("--------------------------------通讯录管理系统--------------------------------");
         System.out.println("1.添加\t2.删除\t3.修改\t4.查询所有\t5.根据姓名查询\t0.退出");
         System.out.println("--------------------------------通讯录管理系统--------------------------------");
         System.out.print("请选择业务:");
     }    public static void main(String[] args) {    //主函数
         Scanner sc = new Scanner(System.in);  //调用用来输入的方法
         PhoneBook phoneBook = new PhoneBook();  //给电话薄的类创建对象        while(true){
             help();
             int choose = sc.nextInt();   //获取用户输入
             if(choose == 1){  //1.添加
                 System.out.println("-----添加通讯录-----");
                 System.out.print("姓名:");
                 String name = sc.next();   //获取输入的姓名
                 if(phoneBook.findByName(name) != null){   //判断姓名是否存在
                     System.out.println("用户已经存在");
                     continue;  //进入下一次的循环
                 }
                 System.out.print("性别:");
                 String gender = sc.next();
                 System.out.print("年龄:");
                 int age = sc.nextInt();
                 System.out.print("电话:");
                 String tel = sc.next();
                 System.out.print("QQ:");
                 String qq = sc.next();
                 System.out.print("地址:");
                 String addr = sc.next();
                 Contacts person = new Contacts(name, gender, age, tel, qq, addr);  //创建单条信息的对象
                 //添加
                 boolean result =phoneBook.add(person);
                 if(result == true) {
                     System.out.println(person);
                     System.out.println("添加成功");
                 } else {
                     System.out.println("通讯录没有空间,添加失败");
                 }            }else if(choose == 2){  //2.删除
                 System.out.println("-----删除通讯录-----");
                 System.out.print("请输入要删除的姓名:");
                 String name = sc.next();
                 if(phoneBook.findByName(name) != null) {
                     System.out.print("确定要删除吗?y-确定 n-取消:");
                     String confirm = sc.next();
                     if(confirm.equals("y")) {
                         phoneBook.del(name);
                         System.out.println("删除成功");
                     } else if(confirm.equals("n")) {
                         System.out.println("取消删除...");
                         continue;
                     } else {
                         System.out.println("请根据提示输入...");
                         continue;
                     }
                 } else {
                     System.out.println("该用户不存在...");
                 } 
            }else if(choose == 3){ //3.修改
                System.out.println("-----修改通讯录-----");
                System.out.print("请输入要修改的姓名:");
                String oldName = sc.next(); //想要修改的通讯录的姓名
                //根据姓名查询该通讯录是否存在
                Contacts oldItem = phoneBook.findByName(oldName);
                if(oldItem == null) {
                    //不存在
                    System.out.println("无信息...");
                    continue;
                } else {
                    System.out.println(oldItem);
                }
                //修改流程
                System.out.print("姓名:");
                String name = sc.next(); //修改之后的名字
                if(phoneBook.findByName(name) != null && !oldName.equals(name)) { //修改之后的名字和其他项名字重复
                    System.out.println("修改之后的名字和其他项名字重复,不允许修改");
                    continue;
                }
                System.out.print("性别:");
                String gender = sc.next();
                System.out.print("年龄:");
                int age = sc.nextInt();
                System.out.print("电话:");
                String tel = sc.next();
                System.out.print("QQ:");
                String qq = sc.next();
                System.out.print("地址:");
                String addr = sc.next();
                //修改之后的对象
                Contacts person = new Contacts(name, gender, age, tel, qq, addr);
                //修改
                phoneBook.chg(oldName, person);
                System.out.println("修改成功");
 
            }else if(choose == 4){ //4.查询所有
                Contacts[] person = phoneBook.findAll();
                System.out.println("-----打印所有通讯录-----");
                for (int i = 0; i < person.length; i++) {
                    if(person[i] != null) {
                        System.out.println(person[i]);
                    }
                }
 
            }else if(choose == 5){ //5.根据姓名查询
                System.out.println("-----根据姓名查询-----");
                System.out.print("姓名:");
                String name = sc.next();
                Contacts item = phoneBook.findByName(name);
                if(item != null) {
                    System.out.println(item);
                } else {
                    System.out.println("该条信息不存在...");
                }
            }else if(choose == 0){ //0.退出
                return; //退出
            }else{
                System.out.println("请根据提示输入。。。");
            }
        }
    }
}