用java来实现利用文件构建用户电话号码本。(需实现增、删、查(按指定属性排序并查询)、改、显示的功能)。
时间: 2023-12-16 10:05:11 浏览: 78
实现用户电话号码本可以使用Java中的文件I/O操作和集合类。以下是一个简单的实现:
首先定义一个Contact类表示每个联系人:
```java
public class Contact {
private String name;
private String phone;
public Contact(String name, String phone) {
this.name = name;
this.phone = phone;
}
// getters and setters
@Override
public String toString() {
return name + ": " + phone;
}
}
```
然后定义一个ContactList类,它包含一个List<Contact>来存储所有联系人,以及实现增、删、查、改、显示等功能:
```java
import java.io.*;
import java.util.*;
public class ContactList {
private List<Contact> contacts;
private File file;
public ContactList(String fileName) throws IOException, ClassNotFoundException {
file = new File(fileName);
if (file.exists()) {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
contacts = (List<Contact>) ois.readObject();
ois.close();
fis.close();
} else {
contacts = new ArrayList<>();
}
}
public void addContact(String name, String phone) {
Contact contact = new Contact(name, phone);
contacts.add(contact);
}
public void removeContact(int index) {
contacts.remove(index);
}
public List<Contact> searchContacts(String keyword) {
List<Contact> results = new ArrayList<>();
for (Contact contact : contacts) {
if (contact.getName().contains(keyword) || contact.getPhone().contains(keyword)) {
results.add(contact);
}
}
return results;
}
public void sortContacts(Comparator<Contact> comparator) {
Collections.sort(contacts, comparator);
}
public void saveToFile() throws IOException {
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(contacts);
oos.close();
fos.close();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < contacts.size(); i++) {
sb.append(i + 1).append(". ").append(contacts.get(i)).append("\n");
}
return sb.toString();
}
}
```
使用示例:
```java
public static void main(String[] args) throws IOException, ClassNotFoundException {
ContactList contactList = new ContactList("contacts.dat");
// 添加联系人
contactList.addContact("张三", "123456");
contactList.addContact("李四", "234567");
contactList.addContact("王五", "345678");
// 搜索联系人
List<Contact> results = contactList.searchContacts("四");
System.out.println("搜索结果:");
for (Contact contact : results) {
System.out.println(contact);
}
// 按名称排序并显示
contactList.sortContacts(Comparator.comparing(Contact::getName));
System.out.println("按名称排序:");
System.out.println(contactList);
// 保存到文件
contactList.saveToFile();
}
```
这个程序会在当前目录下创建一个名为“contacts.dat”的文件来保存联系人信息。每次运行程序时,它会从文件中读取之前保存的联系人信息并加载到内存中,然后可以对联系人进行增、删、查、改、排序和显示等操作,最后再将联系人信息保存回文件中。
阅读全文