利用Java集合类和文件类实现一个简易的通讯录程序,实现基本的增删改查,要求: 考虑并选择合适的集合类; 利用文件实现通信录数据的存储和载入; 要求有简单的功能菜单,通过键盘输入调用对应增删改查及载入和储存功能; 通信录类的属性和方法可自行定义;
时间: 2024-10-08 12:00:53 浏览: 47
要实现一个简易的通讯录程序,我们可以采用Java的集合框架,比如`ArrayList`或`HashMap`来存储联系人信息,因为它们分别支持元素的动态添加和按键值对查找,适合存储用户数据。这里我们选用`HashMap`,因为它提供更快的查找速度。
首先,定义一个名为`Contact`的类,用于表示单个联系人,包含姓名、电话号码等属性:
```java
public class Contact {
private String name;
private String phoneNumber;
// 构造函数,getter和setter方法省略...
}
```
接着创建一个`AddressBook`类,用于管理通讯录,包括操作方法:
```java
import java.util.*;
public class AddressBook {
private Map<String, Contact> contacts = new HashMap<>();
// 添加联系人
public void addContact(String name, String phoneNumber) {
contacts.put(name, new Contact(name, phoneNumber));
}
// 删除联系人
public void removeContact(String name) {
if (contacts.containsKey(name)) {
contacts.remove(name);
}
}
// 更新联系人信息
public void updateContact(String oldName, String newName, String newPhoneNumber) {
if (contacts.containsKey(oldName)) {
Contact contact = contacts.get(oldName);
contact.setName(newName);
contact.setPhoneNumber(newPhoneNumber);
contacts.put(newName, contact);
contacts.remove(oldName);
}
}
// 读取联系人列表
public List<Contact> loadContacts() {
return new ArrayList<>(contacts.values());
}
// 存储联系人到文件
public void saveToFile(String filename) throws Exception {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) {
for (Contact contact : contacts.values()) {
writer.write("Name: " + contact.getName() + ", Phone: " + contact.getPhoneNumber() + "\n");
}
}
}
// 加载联系人从文件
public void loadFromFile(String filename) throws Exception {
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(", ");
addContact(parts[0], parts[1]);
}
} catch (IOException e) {
System.out.println("Error reading file.");
}
}
}
// 菜单驱动
public static void main(String[] args) {
AddressBook addressBook = new AddressBook();
// ... 实现功能菜单,例如:
int choice;
do {
choice = getUserChoice();
switch (choice) {
case 1:
// 添加联系人
break;
case 2:
// 删除联系人
break;
// 其他选项...
}
} while (choice != 4); // 退出标志
}
```
在这个示例中,我们实现了通讯录的基本增删改查操作,并通过文件IO操作来保存和加载数据。在主函数中,你可以添加一个简单循环来处理用户的命令输入,每个命令对应上述的`addContact`、`removeContact`、`updateContact`等方法。
阅读全文