注意: 此通讯录使用姓名查找,故联系人姓名不能重复。
1)文件名要与类名相同。
2)三个文件要放在同一个文件夹下。
3)包名(package com.lianxi.test;)需要删除或更改。
4)Ui.java是主函数文件,运行这个文件即可。
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("请根据提示输入。。。");
}
}
}
}