java1、用顺序表方式实现在线通讯录的设计,可以对通讯录作插入、删除、显示、查找、修改等操作
时间: 2023-12-13 08:06:10 浏览: 57
顺序表实现插入,查找,删除等功能
以下是Java语言的顺序表实现在线通讯录的设计:
```
import java.util.Scanner;
public class OnlineAddressBook {
private static final int MAX_SIZE = 100; // 最大容量
private int size; // 当前大小
private Contact[] contacts; // 存储联系人信息的数组
public OnlineAddressBook() {
size = 0;
contacts = new Contact[MAX_SIZE];
}
// 插入联系人信息
public void insert(Contact contact) {
if (size >= MAX_SIZE) {
System.out.println("通讯录已满,无法插入!");
return;
}
contacts[size] = contact;
size++;
System.out.println("插入成功!");
}
// 删除联系人信息
public void delete(String name) {
int index = search(name);
if (index == -1) {
System.out.println("未找到该联系人,无法删除!");
return;
}
for (int i = index; i < size - 1; i++) {
contacts[i] = contacts[i + 1];
}
size--;
System.out.println("删除成功!");
}
// 显示联系人信息
public void display() {
if (size == 0) {
System.out.println("通讯录为空!");
return;
}
System.out.println("姓名\t电话\t邮箱");
for (int i = 0; i < size; i++) {
System.out.println(contacts[i].getName() + "\t" + contacts[i].getPhone() + "\t" + contacts[i].getEmail());
}
}
// 查找联系人信息
public int search(String name) {
for (int i = 0; i < size; i++) {
if (contacts[i].getName().equals(name)) {
return i;
}
}
return -1;
}
// 修改联系人信息
public void modify(String name) {
int index = search(name);
if (index == -1) {
System.out.println("未找到该联系人,无法修改!");
return;
}
Scanner input = new Scanner(System.in);
System.out.print("请输入新的电话号码:");
String phone = input.next();
System.out.print("请输入新的电子邮箱:");
String email = input.next();
contacts[index].setPhone(phone);
contacts[index].setEmail(email);
System.out.println("修改成功!");
}
public static void main(String[] args) {
OnlineAddressBook addressBook = new OnlineAddressBook();
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("请选择操作:");
System.out.println("1. 插入联系人信息");
System.out.println("2. 删除联系人信息");
System.out.println("3. 显示联系人信息");
System.out.println("4. 查找联系人信息");
System.out.println("5. 修改联系人信息");
System.out.println("6. 退出程序");
int choice = input.nextInt();
switch (choice) {
case 1:
System.out.print("请输入姓名:");
String name = input.next();
System.out.print("请输入电话号码:");
String phone = input.next();
System.out.print("请输入电子邮箱:");
String email = input.next();
Contact contact = new Contact(name, phone, email);
addressBook.insert(contact);
break;
case 2:
System.out.print("请输入要删除的联系人姓名:");
String delName = input.next();
addressBook.delete(delName);
break;
case 3:
addressBook.display();
break;
case 4:
System.out.print("请输入要查找的联系人姓名:");
String searchName = input.next();
int index = addressBook.search(searchName);
if (index == -1) {
System.out.println("未找到该联系人!");
} else {
System.out.println("姓名\t电话\t邮箱");
System.out.println(addressBook.contacts[index].getName() + "\t" +
addressBook.contacts[index].getPhone() + "\t" +
addressBook.contacts[index].getEmail());
}
break;
case 5:
System.out.print("请输入要修改的联系人姓名:");
String modifyName = input.next();
addressBook.modify(modifyName);
break;
case 6:
System.out.println("程序已退出!");
System.exit(0);
default:
System.out.println("输入有误,请重新输入!");
break;
}
}
}
}
class Contact {
private String name;
private String phone;
private String email;
public Contact(String name, String phone, String email) {
this.name = name;
this.phone = phone;
this.email = email;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public String getEmail() {
return email;
}
public void setPhone(String phone) {
this.phone = phone;
}
public void setEmail(String email) {
this.email = email;
}
}
```
在主函数中,使用一个无限循环来不断接收用户的操作选择,根据用户选择的不同,调用相应的函数来完成操作。使用一个Contact类来存储每个联系人的姓名、电话号码和电子邮箱。在每个操作函数中,通过遍历数组来查找对应的联系人信息。如果需要插入新的联系人信息,则需要检查数组是否已满。如果需要删除联系人信息,则需要将数组中该联系人后面的所有元素向前移动一个位置。如果需要修改联系人信息,则需要先查找该联系人的位置,然后再修改该位置上的联系人信息。
阅读全文