编写的功能框架
项目二:
电话本
· 实现功能:
· 请输入要选择的功能:
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);
}
}