0
点赞
收藏
分享

微信扫一扫

java利用文件构建用户电话号码本。(需实现增、删、查(按指定属性排序并查询)、改

weipeng2k 2023-07-26 阅读 57

Java利用文件构建用户电话号码本

1. 简介

电话号码本是一个存储电话号码和相关信息的工具。Java提供了丰富的API和功能,使我们能够轻松地使用文件来构建和管理电话号码本。本文将介绍如何使用Java进行电话号码本的增加、删除、查询和修改操作,并按照指定属性排序和查询。

2. 创建电话号码本类

首先,我们需要创建一个电话号码本类来管理用户的电话号码和相关信息。我们可以使用一个文件来存储这些信息,每行表示一个用户的电话号码和信息。下面是电话号码本类的代码示例:

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class PhoneBook {
    private String fileName;

    public PhoneBook(String fileName) {
        this.fileName = fileName;
    }

    public void addPhone(String phoneNumber, String info) {
        try {
            FileWriter fileWriter = new FileWriter(fileName, true);
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
            bufferedWriter.write(phoneNumber + "," + info);
            bufferedWriter.newLine();
            bufferedWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void deletePhone(String phoneNumber) {
        try {
            File inputFile = new File(fileName);
            File tempFile = new File("temp.txt");

            BufferedReader reader = new BufferedReader(new FileReader(inputFile));
            BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

            String currentLine;

            while ((currentLine = reader.readLine()) != null) {
                if (currentLine.startsWith(phoneNumber + ",")) continue;
                writer.write(currentLine + System.getProperty("line.separator"));
            }

            writer.close();
            reader.close();

            inputFile.delete();
            tempFile.renameTo(inputFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public List<String> searchPhone(String keyword) {
        List<String> result = new ArrayList<>();

        try {
            BufferedReader reader = new BufferedReader(new FileReader(fileName));

            String currentLine;

            while ((currentLine = reader.readLine()) != null) {
                if (currentLine.contains(keyword)) {
                    result.add(currentLine);
                }
            }

            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return result;
    }

    public void modifyPhone(String phoneNumber, String newInfo) {
        try {
            File inputFile = new File(fileName);
            File tempFile = new File("temp.txt");

            BufferedReader reader = new BufferedReader(new FileReader(inputFile));
            BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

            String currentLine;

            while ((currentLine = reader.readLine()) != null) {
                if (currentLine.startsWith(phoneNumber + ",")) {
                    writer.write(phoneNumber + "," + newInfo);
                } else {
                    writer.write(currentLine);
                }
                writer.newLine();
            }

            writer.close();
            reader.close();

            inputFile.delete();
            tempFile.renameTo(inputFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void sortPhoneBook() {
        List<String> phoneNumbers = new ArrayList<>();

        try {
            BufferedReader reader = new BufferedReader(new FileReader(fileName));

            String currentLine;

            while ((currentLine = reader.readLine()) != null) {
                phoneNumbers.add(currentLine);
            }

            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        Collections.sort(phoneNumbers, Comparator.comparing(s -> s.split(",")[1]));

        try {
            FileWriter fileWriter = new FileWriter(fileName);
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

            for (String phoneNumber : phoneNumbers) {
                bufferedWriter.write(phoneNumber);
                bufferedWriter.newLine();
            }

            bufferedWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 使用电话号码本类

使用电话号码本类很简单。我们可以通过创建一个实例来调用它的方法,如下所示:

public class Main {
    public static void main(String[] args) {
        PhoneBook phoneBook = new PhoneBook("phonebook.txt");

        // 添加电话号码
        phoneBook.addPhone("1234567890", "John Doe");
        phoneBook.addPhone("2345678901", "Jane Smith");

        // 删除电话号码
        phoneBook.deletePhone("1234567890");

        // 查询电话号码
        List<String> searchResult = phoneBook.searchPhone("Jane");

        for (String result : searchResult) {
            System.out.println(result);
        }

        // 修改电话号码信息
        phoneBook.modifyPhone("2345678901", "Jane Smith, Address: 123 Main St");

        // 按属性排序电话号码本
        phoneBook.sortPhoneBook();
    }
}

4. 总结

在本文中,我们介绍了如何使用Java利用文件构

举报

相关推荐

0 条评论