用java来实现利用文件构建用户电话号码本。(需实现增、删、查(按指定属性排序并查询)、改、显示的功能)。 1. “添加”功能(addEntry):接收用户的输入,将新的记录添加到文件中 2. “删除”功能(removeEntry):接收用户输入的姓名或电话号码,搜索文件中相应的记录并将其删除。 3. “查询”功能(sortedSearch):接收用户输入的排序方式和查询关键词,对文件中的记录按照指定属性进行排序并进行查询。 4. “修改”功能(updateEntry):接收用户输入的姓名或电话号码,搜索文件中相应的记录并将其更新为新输入的信息。 5. “显示”功能(displayEntries):从文件中读取并展示所有已存储的记录。

时间: 2024-02-01 22:14:53 浏览: 22
以下是一个简单的示例代码: ```java import java.io.*; import java.util.*; public class PhoneBook { private static final String FILE_NAME = "phonebook.txt"; private static final String[] ATTRIBUTES = {"Name", "Phone Number"}; private static final String DELIMITER = ","; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("Please select an option:"); System.out.println("1. Add Entry"); System.out.println("2. Remove Entry"); System.out.println("3. Sorted Search"); System.out.println("4. Update Entry"); System.out.println("5. Display Entries"); System.out.println("6. Exit"); int option = scanner.nextInt(); scanner.nextLine(); // consume the \n character switch (option) { case 1: addEntry(scanner); break; case 2: removeEntry(scanner); break; case 3: sortedSearch(scanner); break; case 4: updateEntry(scanner); break; case 5: displayEntries(); break; case 6: System.exit(0); break; default: System.out.println("Invalid option!"); } } } private static void addEntry(Scanner scanner) { System.out.println("Please enter the name:"); String name = scanner.nextLine(); System.out.println("Please enter the phone number:"); String phoneNumber = scanner.nextLine(); try (PrintWriter writer = new PrintWriter(new FileWriter(FILE_NAME, true))) { writer.println(name + DELIMITER + phoneNumber); System.out.println("Entry added successfully!"); } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } } private static void removeEntry(Scanner scanner) { System.out.println("Please enter the name or phone number to remove:"); String query = scanner.nextLine(); List<String> lines = readAllLines(); boolean found = false; try (PrintWriter writer = new PrintWriter(new FileWriter(FILE_NAME))) { for (String line : lines) { String[] parts = line.split(DELIMITER); if (!parts[0].equals(query) && !parts[1].equals(query)) { writer.println(line); } else { found = true; } } } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } if (found) { System.out.println("Entry removed successfully!"); } else { System.out.println("Entry not found!"); } } private static void sortedSearch(Scanner scanner) { System.out.println("Please select an attribute to sort by:"); for (int i = 0; i < ATTRIBUTES.length; i++) { System.out.println((i + 1) + ". " + ATTRIBUTES[i]); } int attributeIndex = scanner.nextInt() - 1; scanner.nextLine(); // consume the \n character System.out.println("Please enter the search query:"); String query = scanner.nextLine(); List<String> lines = readAllLines(); List<String[]> entries = new ArrayList<>(); for (String line : lines) { String[] parts = line.split(DELIMITER); entries.add(parts); } Collections.sort(entries, new Comparator<String[]>() { @Override public int compare(String[] o1, String[] o2) { return o1[attributeIndex].compareTo(o2[attributeIndex]); } }); boolean found = false; for (String[] entry : entries) { if (entry[attributeIndex].contains(query)) { System.out.println(entry[0] + " " + entry[1]); found = true; } } if (!found) { System.out.println("No matching entries found!"); } } private static void updateEntry(Scanner scanner) { System.out.println("Please enter the name or phone number to update:"); String query = scanner.nextLine(); List<String> lines = readAllLines(); boolean found = false; try (PrintWriter writer = new PrintWriter(new FileWriter(FILE_NAME))) { for (String line : lines) { String[] parts = line.split(DELIMITER); if (!parts[0].equals(query) && !parts[1].equals(query)) { writer.println(line); } else { System.out.println("Please enter the new name:"); String name = scanner.nextLine(); System.out.println("Please enter the new phone number:"); String phoneNumber = scanner.nextLine(); writer.println(name + DELIMITER + phoneNumber); found = true; } } } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } if (found) { System.out.println("Entry updated successfully!"); } else { System.out.println("Entry not found!"); } } private static void displayEntries() { List<String> lines = readAllLines(); for (String line : lines) { String[] parts = line.split(DELIMITER); System.out.println(parts[0] + " " + parts[1]); } } private static List<String> readAllLines() { List<String> lines = new ArrayList<>(); try (BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME))) { String line; while ((line = reader.readLine()) != null) { lines.add(line); } } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } return lines; } } ``` 注意,这只是一个简单的示例代码,可能需要根据具体需求进行修改和优化。此外,文件格式和路径也需要根据实际情况进行设置。

相关推荐

最新推荐

recommend-type

Java编程通过list接口实现数据的增删改查代码示例

是介绍Java编程基础方面的内容,涉及list接口的操作,通过list接口实现对数据的增删改查的相关代码,具有一定参考价值,需要的朋友可以了解下。
recommend-type

AJAX实现数据的增删改查操作详解【java后台】

主要介绍了AJAX实现数据的增删改查操作,结合实例形式详细分析了ajax结合java后台实现数据库增删改查相关操作技巧,需要的朋友可以参考下
recommend-type

Java中SSM框架实现增删改查功能代码详解

主要介绍了Java中SSM框架实现增删改查功能代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

java连接mongoDB并进行增删改查操作实例详解

主要介绍了java连接mongoDB并进行增删改查操作,结合实例形式详细分析了java环境下MongoDB扩展包的下载、安装及操作MongoDB连接、增删改查等相关操作技巧,需要的朋友可以参考下
recommend-type

JAVA使用ElasticSearch查询in和not in的实现方式

今天小编就为大家分享一篇关于JAVA使用Elasticsearch查询in和not in的实现方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MySQL数据库性能提升秘籍:揭秘性能下降幕后真凶及解决策略

![MySQL数据库性能提升秘籍:揭秘性能下降幕后真凶及解决策略](http://xiaoyuge.work/explain-sql/index/2.png) # 1. MySQL数据库性能优化概述** MySQL数据库性能优化是一项至关重要的任务,可以显著提高应用程序的响应时间和整体用户体验。优化涉及识别和解决影响数据库性能的因素,包括硬件资源瓶颈、软件配置不当和数据库设计缺陷。通过采取适当的优化策略,可以显著提升数据库性能,满足业务需求并提高用户满意度。 # 2. MySQL数据库性能下降的幕后真凶 ### 2.1 硬件资源瓶颈 #### 2.1.1 CPU利用率过高 **症状:
recommend-type

如何在unity创建按钮

在 Unity 中创建按钮的步骤如下: 1. 在 Unity 中创建一个 UI Canvas,选择 GameObject -> UI -> Canvas。 2. 在 Canvas 中创建一个按钮,选择 GameObject -> UI -> Button。 3. 在场景视图中调整按钮的位置和大小。 4. 在 Inspector 中设置按钮的文本、颜色、字体等属性。 5. 添加按钮的响应事件,选择按钮,在 Inspector 的 On Click () 中添加相应的方法。 这样就可以创建一个按钮了,你可以在游戏中使用它来触发相应的操作。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。