利用Java集合类和文件类实现一个简易的通讯录程序,实现基本的增删改查,要求: 考虑并选择合适的集合类; 利用文件实现通信录数据的存储和载入; 要求有简单的功能菜单,通过键盘输入调用对应增删改查及载入和储存功能; 通信录类的属性和方法可自行定义; 给出编写的代码;
时间: 2024-10-11 22:18:12 浏览: 43
在Java中,我们可以创建一个通讯录程序,使用`ArrayList`或`HashMap`作为数据结构来存储联系人信息,因为它们分别适合存储顺序依赖的数据(如列表)和键值对数据(如姓名和电话号码)。这里我们选用`HashMap`,因为它能提供更快的查找速度。
首先,我们需要定义一个`Contact`类表示每个联系人,包含姓名和电话号码:
```java
public class Contact {
private String name;
private String phoneNumber;
public Contact(String name, String phoneNumber) {
this.name = name;
this.phoneNumber = phoneNumber;
}
// getters and setters for name and phoneNumber
}
```
接着,我们创建一个`AddressBook`类用于管理通讯录,并处理读取和保存数据到文件的功能:
```java
import java.io.*;
import java.util.*;
public class AddressBook {
private Map<String, Contact> contacts;
public AddressBook() {
contacts = new HashMap<>();
}
// Methods to add, delete, update, and read from file
public void addContact(Contact contact) {
contacts.put(contact.getName(), contact);
}
public void deleteContact(String name) {
contacts.remove(name);
}
public void updateContact(Contact updatedContact) {
if (contacts.containsKey(updatedContact.getName())) {
contacts.put(updatedContact.getName(), updatedContact);
}
}
private void saveToDisk() {
try (PrintWriter writer = new PrintWriter(new FileWriter("address_book.txt"))) {
for (Contact contact : contacts.values()) {
writer.println(contact.getName() + "," + contact.getPhoneNumber());
}
} catch (IOException e) {
System.out.println("Error saving to file.");
e.printStackTrace();
}
}
private void loadFromDisk() {
try (BufferedReader reader = new BufferedReader(new FileReader("address_book.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
contacts.put(parts[0], new Contact(parts[0], parts[1]));
}
} catch (IOException e) {
System.out.println("Error loading from file.");
e.printStackTrace();
}
}
}
```
现在我们可以编写主函数,提供菜单选项让用户操作通讯录:
```java
public static void main(String[] args) {
AddressBook addressBook = new AddressBook();
addressBook.loadFromDisk();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("\n1. Add contact");
System.out.println("2. Delete contact");
System.out.println("3. Update contact");
System.out.println("4. View all contacts");
System.out.println("5. Save to file");
System.out.println("6. Load from file");
System.out.println("7. Exit");
int choice = scanner.nextInt();
switch (choice) {
case 1:
// Add contact logic
break;
case 2:
// Delete contact logic
break;
// ... other cases for update, view, save, and exit
default:
System.out.println("Invalid choice. Please try again.");
break;
}
}
scanner.close();
}
```
请注意,上述代码省略了具体的增删改查逻辑,你需要根据实际需求在每个case块内添加相应的函数调用。在主函数结束后,别忘了调用`saveToDisk()`来保存当前的通讯录数据。运行此程序时,用户可以根据提示操作通讯录数据。
阅读全文