Java编写一个记事本小程序,实现录入记录的事件,用数据文件的方式保存每天的事情安排,实现按天查询并显示记事列表的功能,数据保存用文本文件实现

时间: 2023-09-13 19:05:53 浏览: 70
### 回答1: 下面是一个简单的 Java 程序,实现了记事本小程序的基本功能: ``` import java.io.*; import java.util.Scanner; public class Notebook { public static void main(String[] args) throws IOException { // 创建 Scanner 用于获取用户输入 Scanner scanner = new Scanner(System.in); // 循环读取用户输入 while (true) { // 打印菜单 System.out.println("1. 输入事件"); System.out.println("2. 查询事件"); System.out.println("3. 退出程序"); System.out.print("请输入选项:"); // 读取用户选择的选项 int option = scanner.nextInt(); // 根据用户选择的选项执行相应的操作 if (option == 1) { // 输入事件 inputEvent(scanner); } else if (option == 2) { // 查询事件 queryEvent(scanner); } else if (option == 3) { // 退出程序 break; } else { // 输入无效,提示用户重新输入 System.out.println("输入无效,请重新输入。"); } } } // 输入事件 public static void inputEvent(Scanner scanner) throws IOException { // 读取用户输入的日期 System.out.print("请输入日期(格式:YYYY-MM-DD):"); String date = scanner.next(); // 读取用户输入的事件 System.out.print("请输入事件:"); String event = scanner.next(); // 将事件写入文件 File file = new File(date + ".txt"); if (!file.exists()) { file.createNewFile(); } BufferedWriter bw = new BufferedWriter(new FileWriter(file, true)); bw.write(event); bw.newLine(); bw.close(); System.out ### 回答2: Java编写记事本小程序可以使用Java的GUI库(例如Swing或JavaFX)来创建图形界面,并实现以下功能: 1. 创建一个主窗口,包含一个文本框用于输入事件记录和一个按钮用于保存记录。 2. 当用户在文本框中输入记录并点击保存按钮时,将记录保存到数据文件中。可以使用文件输入输出流来实现。 3. 创建一个查询窗口,包含一个日期选择器和一个按钮用于查询记录。 4. 当用户选择日期并点击查询按钮时,程序会从数据文件中读取相应日期的事件记录,并在新窗口中显示记事列表。可以使用文件输入流来读取数据,并在列表中显示。 5. 可以为主窗口和查询窗口添加菜单栏,包括文件(打开/保存)、编辑(复制/粘贴)、帮助等功能。 以下是一个简单的示例代码: ``` import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextArea; public class NotePadApp { private JFrame mainFrame; private JTextArea inputArea; public NotePadApp() { prepareGUI(); } public static void main(String[] args) { NotePadApp notePadApp = new NotePadApp(); notePadApp.showNotePad(); } private void prepareGUI() { mainFrame = new JFrame("记事本"); mainFrame.setSize(400, 300); inputArea = new JTextArea(); JPanel inputPanel = new JPanel(); inputPanel.setLayout(new BorderLayout()); inputPanel.add(inputArea, BorderLayout.CENTER); JButton saveButton = new JButton("保存"); saveButton.addActionListener(new SaveButtonListener()); inputPanel.add(saveButton, BorderLayout.SOUTH); mainFrame.add(inputPanel); mainFrame.setVisible(true); } private void showNotePad() { JFrame queryFrame = new JFrame("查询"); queryFrame.setSize(400, 300); JButton queryButton = new JButton("查询"); queryButton.addActionListener(new QueryButtonListener()); queryFrame.add(queryButton); queryFrame.setVisible(true); } private class SaveButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String note = inputArea.getText(); LocalDate currentDate = LocalDate.now(); String fileName = currentDate.format(DateTimeFormatter.ISO_DATE) + ".txt"; try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))) { writer.write(note); JOptionPane.showMessageDialog(mainFrame, "保存成功!"); } catch (IOException ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(mainFrame, "保存失败!"); } } } private class QueryButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { LocalDate selectedDate = LocalDate.now(); // get selected date from date picker String fileName = selectedDate.format(DateTimeFormatter.ISO_DATE) + ".txt"; StringBuilder noteList = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String line; while ((line = reader.readLine()) != null) { noteList.append(line).append("\n"); } JOptionPane.showMessageDialog(mainFrame, noteList.toString()); } catch (IOException ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(mainFrame, "查询失败!"); } } } } ``` 注意,这只是一个简单的示例,可能需要根据实际需求进行修改和完善。另外,为了简化示例,没有实现日期选择器和菜单栏等部分,需要根据需要自行添加。 ### 回答3: 这是一个简单的Java记事本小程序实现的基本思路: 1. 首先,需要创建一个Main类作为程序的入口。 2. 使用Scanner类从用户输入获取日期(以字符串形式),以及要记录的事情(以字符串形式)。 3. 创建一个Note类,用于表示每一条记事记录。Note类包含日期和事情两个属性,并提供相应的getter和setter方法。 4. 创建一个NoteList类,用于管理所有的记事记录。NoteList类需要有以下功能: - 添加一条新的记事记录:将日期和事情作为参数传入NoteList类的方法,并创建一个新的Note对象存储在一个ArrayList中。 - 从文件中读取记事记录:将之前保存的文本文件读取,解析其中的日期和事情,创建相应的Note对象,并存储在ArrayList中。 - 将所有的记事记录保存到文件中:将ArrayList中的所有Note对象按照一定的格式保存到文本文件中。 5. 创建一个Menu类,用于显示菜单选项,并根据用户选择执行相应操作: - 添加一条新的记事记录:调用NoteList类的添加方法。 - 查询并显示记事列表:根据用户输入的日期查询NoteList中相应日期的记事记录,并通过控制台打印出来。 6. 在Main类中创建菜单实例,并通过调用相应的方法来实现记事本的功能。 7. 最后,编译并运行程序,按照提示进行操作即可完成记事的录入和查询。 总结:通过上述步骤,我们可以实现一个简单的Java记事本小程序,能够实现记录事件、保存到文本文件以及按天查询和显示记事列表的功能。

相关推荐

最新推荐

recommend-type

java记事本的设计与实现

本组课程设计的课题是“记事本的设计与实现”,设计的记事本系统应具有新建、打开、保存、剪切、复制、粘贴、查找、字体设置等基本功能,满足用户对文件的处理,文本文档的编辑和字体的设置等要求。
recommend-type

JAVA简单记事本程序设计实验报告(带源码)

JAVA简单记事本程序设计实验报告(带源码) ...4.功能要求: 编写一个简单记事本程序,要求包含以下菜单项 文件 新建、打开、保存、退出 编辑 剪切、拷贝、粘贴、查找 帮助 关于 5.实现文件和编辑菜单里的功能
recommend-type

钢桁架结构振动特性渐变分析工具

钢桁架结构振动特性渐变分析工具
recommend-type

数据库实战-收集一些常见的 MySQL 死锁案例.zip

数据库实战-收集一些常见的 MySQL 死锁案例.zip 数据库实战-收集一些常见的 MySQL 死锁案例.zip 在工作过程中偶尔会遇到死锁问题,虽然这种问题遇到的概率不大,但每次遇到的时候要想彻底弄懂其原理并找到解决方案却并不容易。这个项目收集了一些常见的 MySQL 死锁案例,大多数案例都来源于网络,并对其进行分类汇总,试图通过死锁日志分析出每种死锁的原因,还原出死锁现场。 实际上,我们在定位死锁问题时,不仅应该对死锁日志进行分析,还应该结合具体的业务代码,或者根据 binlog,理出每个事务执行的 SQL 语句。
recommend-type

Android的移动应用与php服务器交互实例源码.rar

Android的移动应用与php服务器交互实例源码.rar
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

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

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