代码如下:

Reminder.java

import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;

public class Reminder {
    private ArrayList<ReminderItem> reminders;

    public Reminder() {
        reminders = new ArrayList<ReminderItem>();
    }

    public void addReminder() {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter reminder message: ");
        String message = input.nextLine();

        System.out.print("Enter reminder date and time (yyyy-mm-dd HH:mm:ss): ");
        String dateStr = input.nextLine();
        Date date = ReminderItem.parseDate(dateStr);

        ReminderItem newReminder = new ReminderItem(message, date);
        reminders.add(newReminder);
        System.out.println("Reminder added: " + newReminder);
    }

    public void deleteReminder() {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter reminder index: ");
        int index = input.nextInt();
        if (index >= 0 && index < reminders.size()) {
            ReminderItem deletedReminder = reminders.remove(index);
            System.out.println("Reminder deleted: " + deletedReminder);
        } else {
            System.out.println("Invalid reminder index.");
        }
    }

    public void editReminder() {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter reminder index: ");
        int index = input.nextInt();
        if (index >= 0 && index < reminders.size()) {
            ReminderItem reminder = reminders.get(index);

            System.out.print("Enter new reminder message: ");
            String message = input.nextLine();
            if (message.equals("")) {
                message = input.nextLine();
            }
            reminder.setMessage(message);

            System.out.print("Enter new reminder date and time (yyyy-mm-dd HH:mm:ss): ");
            String dateStr = input.nextLine();
            if (!dateStr.equals("")) {
                Date date = ReminderItem.parseDate(dateStr);
                reminder.setDate(date);
            }

            System.out.println("Reminder updated: " + reminder);
        } else {
            System.out.println("Invalid reminder index.");
        }
    }

    public void listReminders() {
        if (reminders.isEmpty()) {
            System.out.println("No reminders.");
        } else {
            for (int i = 0; i < reminders.size(); i++) {
                System.out.println(i + ". " + reminders.get(i));
            }
        }
    }

    public void startReminder() {
        if (reminders.isEmpty()) {
            System.out.println("No reminders.");
            return;
        }

        Scanner input = new Scanner(System.in);
        System.out.print("Enter your email address: ");
        String from = input.nextLine();

        System.out.print("Enter your email password: ");
        String password = input.nextLine();

        System.out.print("Enter recipient email address: ");
        String to = input.nextLine();

        Timer timer = new Timer();
        for (ReminderItem reminder : reminders) {
            if (reminder.getDate().after(new Date())) {
                timer.schedule(new ReminderTask(reminder.getMessage(), from, password, to), reminder.getDate());
            }
        }
    }

    public static void main(String[] args) {
        Reminder reminder = new Reminder();

        Scanner input = new Scanner(System.in);
        while (true) {
            System.out.println("1. Add reminder");
            System.out.println("2. Delete reminder");
            System.out.println("3. Edit reminder");
            System.out.println("4. List reminders");
            System.out.println("5. Start reminder");
            System.out.println("6. Exit");
            System.out.print("Enter your choice: ");
            int choice = input.nextInt();

            switch (choice) {
                case 1:
                    reminder.addReminder();
                    break;
                case 2:
                    reminder.deleteReminder();
                    break;
                case 3:
                    reminder.editReminder();
                    break;
                case 4:
                    reminder.listReminders();
                    break;
                case 5:
                    reminder.startReminder();
                    break;
                case 6:
                    System.exit(0);
                default:
                    System.out.println("Invalid choice.");
            }
        }
    }
}

ReminderItem.java

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ReminderItem {
    private String message;
    private Date date;

    public ReminderItem(String message, Date date) {
        this.message = message;
        this.date = date;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public static Date parseDate(String dateStr) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            return dateFormat.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }

    @Override
    public String toString() {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return "[" + dateFormat.format(date) + "] " + message;
    }
}

ReminderTask.java

import java.awt.*;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class ReminderTask extends TimerTask {
    private String message;
    private String from;
    private String password;
    private String to;

    public ReminderTask(String message, String from, String password, String to) {
        this.message = message;
        this.from = from;
        this.password = password;
        this.to = to;
    }

    public void run() {
        // show reminder window
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JOptionPane.showMessageDialog(null, message, "Reminder", JOptionPane.INFORMATION_MESSAGE);
            }
        });

        // send email reminder
        String host = "smtp.gmail.com";
        int port = 587;
        Properties properties = new Properties();
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", port);
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true");
        Session session = Session.getInstance(properties, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(from, password);
            }
        });
        try {
            Message emailMessage = new MimeMessage(session);
            emailMessage.setFrom(new InternetAddress(from));
            emailMessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            emailMessage.setSubject("Reminder");
            emailMessage.setText(message);
            Transport.send(emailMessage);
            System.out.println("Email reminder sent to " + to);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

说明:

  1. Reminder类包含一个ArrayList来存储提醒。
  2. addReminder()方法让用户输入提醒消息和日期时间,创建ReminderItem对象并添加到reminders中。
  3. deleteReminder()方法让用户输入要删除的提醒的索引,从reminders中删除该提醒。
  4. editReminder()方法让用户输入要修改的提醒的索引,然后让用户输入新的提醒消息和日期时间,更新该提醒的信息。
  5. listReminders()方法列出所有的提醒。
  6. startReminder()方法让用户输入自己的邮箱账号、密码和收件人邮箱地址,然后使用Timer来定时执行ReminderTask来弹出提醒窗口和发送邮件提醒。
  7. main()方法包含一个循环,让用户选择要执行的操作。
  8. ReminderItem类表示一个提醒,包含提醒消息和日期时间。
  9. parseDate()方法将字符串形式的日期时间转换为Date对象。
  10. toString()方法返回该提醒的字符串表示。
  11. ReminderTask类是一个定时任务,继承自TimerTask,包含提醒消息、发件人邮箱账号、密码和收件人邮箱地址等信息。run()方法弹出提醒窗口并使用JavaMail发送邮件提醒
这个程序使用ArrayList来存储提醒可以添加、删除、修改提醒并且可以查看当前的提醒列表。在开始提醒时使用Timer来定时执行ReminderTaskReminderTask会弹出窗口提醒用户并使用JavaMail发送邮件提醒。用户需要在程序中输入自己的邮箱账号、密码和收件人邮箱地址才能使用邮件提醒功能。

原文地址: https://www.cveoy.top/t/topic/hh1H 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录