Java_编写简单的电话簿

编写的功能框架

项目二:

电话本
	· 实现功能:
		· 请输入要选择的功能:
			1. 新增一个联系人
			2. 查找指定的联系人(根据姓名查找)
			3. 查找所有联系人  
			4. 通过id修改联系人信息  (给每个添加进来的联系人一个编号id 从1),修改姓名和电话即可
			5. 通过id删除联系人信息  
			6. 退出系统   
			
			功能要求:
				1、新增一个联系人,联系人的id ,姓名,性别,年龄,手机号,由用户从控制台录入
				2、按照姓名查找符合条件的所有的联系人
				3、查询所有的联系人
				4、该电话本只能存最多 10个联系人  (也可以自定义)
			涉及类:
				电话本  PhoneBook     有个存储联系人的 数组 
				联系人  Person
				测试类  Test

Person类

package telbook;

public class Person {
	private int id;
	private static int num = 1;
	private String name;
	private String sex;
	private int age;
	private String telnumber;

	public Person() {
		super();
	}

	public Person(String name, String sex, int age, String telnumber) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.telnumber = telnumber;
		this.id = num;
		num++;
	}

	public int getId() {
		return id;
	}

	public void setCount(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

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

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getTelnumber() {
		return telnumber;
	}

	public void setTelnumber(String telnumber) {
		this.telnumber = telnumber;
	}

	@Override
	public String toString() {
		return "Person" + "[id" + id + ",name=" + name + ", sex=" + sex + ", age=" + age + ", telnumber="
				+ telnumber + "]";
	}

}

PhoneBook

package telbook;

import java.util.Scanner;

public class PhoneBook {
	Scanner sc = new Scanner(System.in);

	// 输入1-6
	public static int input() {
		Scanner sc = new Scanner(System.in);
		int i = sc.nextInt();
		while (true) {
			if (i > 6 && i < 0) {
				System.out.println("请重新输入");
				i = sc.nextInt();
			} else
				break;
		}
		return i;
	}

	// 增加联系人 联系人的id ,姓名,性别,年龄,手机号,由用户从控制台录入
	int total;// 数组长度
	private Person[] arr;// 定义Person 数组
	int count;// 实际长度

	// 构造有参 初始化arr数组
	public PhoneBook(int total) {
		arr = new Person[total];
		this.total = total;
	}

	// 增加一个联系人
	public void add(Person p) {
		if (count < total) {
			arr[count] = p;
			count++;
		} else
			System.out.println("电话簿已存满!");
	}

	// 通过名字查找联系人
	public Person[] find(String name) {
		// 创建一个存储相同名字的数组
		Person[] p = new Person[count];
		// 遍历 ps数组,查找到名字相同的把对象返回

		int idx = 0;// 新数组下标
		// 在已保存的数组中查找相同名字的元素
		for (int i = 0; i < count; i++) {
			if (arr[i].getName().equals(name)) {

				p[idx] = arr[i];
				idx++;
			}
		}
		return p;
	}

	// 查找所有人-遍历一边数组
	public void findAll() {
		for (int i = 0; i < count; i++) {
			System.out.println(arr[i].toString());
		}
	}

	// 通过id修改
	/*
	 * 1. 通过id 找到对应的下标 2. 拿到下标所在对象
	 */
	public Person update(int id) {
		for (int i = 0; i < count; i++) {
			if (arr[i].getId() == id) {
				return arr[i];
			}
		}
		return null;
	}

	// 通过id删除联系人
	// public void delete(int id) {
	// for (int i = 0; i < count - 1; i++) {
	// // 找到这个id代表的数组
	// if (arr[i].getId() == id) {
	// // 后一项覆盖前一项
	// arr[i] = arr[i + 1];
	//
	// }
	// // 将最后一项设为空
	// arr[count-1] = null;
	// count--;
	// }
	// }
	public void delete(int id) {
		int idx = -1;
		for (int i = 0; i < count - 1; i++) {
			// 找到这个id代表的数组
			if (arr[i].getId() == id) {
				idx = i;
			}
		}
		if (idx != -1) {
			// 后一项覆盖前一项
			for (int i = idx; i < count - 1; i++) {
				arr[i] = arr[i + 1];
			}

		}
		arr[count - 1] = null;
		count--;

	}

}

Test类

package telbook;

import java.util.Scanner;

public class Test {

	private static final String Person = null;

	public static void main(String[] args) {
		showInfo();
	}
	
	public static void showInfo(){
		Scanner sc = new Scanner(System.in);
		PhoneBook pb = new PhoneBook(10);
		boolean flag = true;
		do{
			System.out.println("\t\t1.新增联系人");
			System.out.println("\t\t2.查找联系人");
			System.out.println("\t\t3.查找所有联系人");
			System.out.println("\t\t4.修改联系人信息");
			System.out.println("\t\t5.删除联系人信息");
			System.out.println("\t\t6.退出系统");
			System.out.print("\t\t请输入ID:");
			int i = PhoneBook.input();
		switch(i){
		case 1: System.out.println("请输入新增人姓名:");
    			String name = sc.next();
    			System.out.println("请输入新增人性别:");
    			String sex = sc.next();
    			System.out.println("请输入新增人年龄:");
    			int age = sc.nextInt();
    			System.out.println("请输入新增人电话:");
    			String tel = sc.next();
    			Person person = new Person(name,sex,age,tel);
    			pb.add(person);
    			break;
		case 2: System.out.println("请输入要查询的名字:");
				String name2 = sc.next();
				// 创建数组p接收相同名字的数组
				Person[] p = pb.find(name2);
				// 遍历相同名字的数组
				for (Person person2 : p) {
		    		//打印输出每个对象
		    		if(person2!=null){
		                 //null.   报空指针
						System.out.println(person2.toString());
		    		}else{
		    			System.out.println("没找到这个人!");
		    		}
				}
				break;
		case 3: pb.findAll();
				break;
		case 4: System.out.println("修改哪个:");
				int id = sc.nextInt();
				Person p4 = pb.update(id);
				System.out.println("请修改姓名:");
				String name4 = sc.next();
				System.out.println("请修改手机号:");
				String tel4 = sc.next();
				p4.setName(name4);
				p4.setTelnumber(tel4);
				break;
		case 5: System.out.println("看谁不顺眼?");
				int id1 = sc.nextInt();
				pb.delete(id1);
				break;
		case 6: flag = false;
		}
		}while(flag);
	}

}

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值