3.电话簿管理系统(难度系数**) 3.1问题描述 设计并实现一个管理电话簿的管理系统,数据信息文本文件存储,也可以采 用数据库存储。 3.2基本要求 以联系人为单位,管理联系人姓名、单位名称、移动电话、固定电话、办公 电话、分组等信息。 提供便利的查询功能,输入联系人名称或单位名称或分组信息,能查找出相 应联系人的联络信息。 根据功能要求,设计数据结构和界面,完成程序设计。,用java写
时间: 2024-03-24 13:41:38 浏览: 30
好的,我明白了你的问题。这是一个电话簿管理系统的设计与实现,要求使用文本文件或数据库存储数据,并且提供便利的查询功能。以下是一个简单的Java代码示例,实现这个电话簿管理系统的基本要求:
```java
import java.io.*;
import java.util.*;
class Contact {
private String name;
private String company;
private String mobile;
private String home;
private String office;
private String group;
public Contact(String name, String company, String mobile, String home, String office, String group) {
this.name = name;
this.company = company;
this.mobile = mobile;
this.home = home;
this.office = office;
this.group = group;
}
public String getName() {
return name;
}
public String getCompany() {
return company;
}
public String getMobile() {
return mobile;
}
public String getHome() {
return home;
}
public String getOffice() {
return office;
}
public String getGroup() {
return group;
}
}
class Phonebook {
private ArrayList<Contact> contacts = new ArrayList<>();
public void addContact(Contact c) {
contacts.add(c);
}
public void removeContact(Contact c) {
contacts.remove(c);
}
public ArrayList<Contact> searchContacts(String query) {
ArrayList<Contact> results = new ArrayList<>();
for (Contact c : contacts) {
if (c.getName().toLowerCase().contains(query.toLowerCase()) ||
c.getCompany().toLowerCase().contains(query.toLowerCase()) ||
c.getGroup().toLowerCase().contains(query.toLowerCase())) {
results.add(c);
}
}
return results;
}
public static Phonebook loadFromFile(String filename) throws IOException {
Phonebook pb = new Phonebook();
BufferedReader br = new BufferedReader(new FileReader(filename));
String line;
while ((line = br.readLine()) != null) {
String[] parts = line.split(",");
pb.addContact(new Contact(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5]));
}
br.close();
return pb;
}
public void saveToFile(String filename) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter(filename));
for (Contact c : contacts) {
bw.write(c.getName() + "," + c.getCompany() + "," + c.getMobile() + "," + c.getHome() + "," + c.getOffice() + "," + c.getGroup());
bw.newLine();
}
bw.close();
}
}
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
Phonebook pb = Phonebook.loadFromFile("phonebook.txt");
while (true) {
System.out.println("1. Add contact");
System.out.println("2. Remove contact");
System.out.println("3. Search contacts");
System.out.println("4. Save and exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
System.out.print("Enter name: ");
String name = scanner.nextLine();
System.out.print("Enter company: ");
String company = scanner.nextLine();
System.out.print("Enter mobile phone: ");
String mobile = scanner.nextLine();
System.out.print("Enter home phone: ");
String home = scanner.nextLine();
System.out.print("Enter office phone: ");
String office = scanner.nextLine();
System.out.print("Enter group: ");
String group = scanner.nextLine();
pb.addContact(new Contact(name, company, mobile, home, office, group));
break;
case 2:
System.out.print("Enter name of contact to remove: ");
String nameToRemove = scanner.nextLine();
ArrayList<Contact> results = pb.searchContacts(nameToRemove);
if (results.size() == 0) {
System.out.println("Contact not found.");
} else if (results.size() == 1) {
pb.removeContact(results.get(0));
System.out.println("Contact removed.");
} else {
System.out.println("Multiple contacts found. Please choose one to remove:");
for (int i = 0; i < results.size(); i++) {
System.out.println((i+1) + ". " + results.get(i).getName());
}
int indexToRemove = scanner.nextInt() - 1;
pb.removeContact(results.get(indexToRemove));
System.out.println("Contact removed.");
scanner.nextLine();
}
break;
case 3:
System.out.print("Enter search query: ");
String query = scanner.nextLine();
ArrayList<Contact> searchResults = pb.searchContacts(query);
System.out.println(searchResults.size() + " results found:");
for (Contact c : searchResults) {
System.out.println(c.getName() + " (" + c.getCompany() + ")");
System.out.println("Mobile: " + c.getMobile());
System.out.println("Home: " + c.getHome());
System.out.println("Office: " + c.getOffice());
System.out.println("Group: " + c.getGroup());
System.out.println();
}
break;
case 4:
pb.saveToFile("phonebook.txt");
System.out.println("Phonebook saved. Goodbye!");
return;
default:
System.out.println("Invalid choice. Please try again.");
break;
}
}
}
}
```
这个程序使用了两个类,`Contact` 和 `Phonebook`。`Contact` 类表示一个联系人,包含姓名、单位名称、移动电话、固定电话、办公电话和分组等信息。`Phonebook` 类表示一个电话簿,包含多个联系人。它具有添加、删除、搜索和保存功能。程序的主要逻辑在 `main` 函数中,它使用一个循环来读取用户输入的选项,并执行相应的操作。其中,搜索功能是根据用户输入的查询字符串,从电话簿中查找匹配的联系人,并返回一个包含这些联系人的 `ArrayList` 对象。这个程序使用了文件 `phonebook.txt` 来存储联系人信息,它使用逗号分隔符来分隔不同的字段。你可以根据自己的需求修改这个文件格式,或者使用一个数据库来存储数据。