日程安排管理Java

发布时间:2025-09-23 19:11

使用日程管理应用辅助安排 #生活乐趣# #生活日常# #个人时间管理#

内容

  随着生活节奏的加快,人们每天都面临的事务比较多样化,有时候可能会忘记一些重要的日程安排,例如会议,采访等。为了更好地管理和组织日常安排,要求编写一个日程安排管理程序,具体要求如下。

  用户可以多次创建日程,但是最多只能创建20个,创建日程时包括日程的标题、日期和时间。要求日程的时间不能在当前时间之前。

  创建完成后,程序按照日程时间由近及远,展示用户的所有日程信息,包括标题、日期、时间、目前距离这个日程还有多久(格式:x天x小时x分钟),以及日程的创建时间。

功能如下:

源代码如下:

package schedule;

import java.time.LocalDateTime;

import java.time.format.DateTimeFormatter;

import java.time.Duration;

import java.util.ArrayList;

import java.util.List;

import java.util.Collections;

import java.util.Comparator;

import java.util.Scanner;

class Schedule {

private int id;

private String title;

private LocalDateTime dateTime;

private LocalDateTime createTime;

public Schedule(int id, String title, LocalDateTime dateTime) {

this.id = id;

this.title = title;

this.dateTime = dateTime;

this.createTime = LocalDateTime.now();

}

public int getId() { return id; }

public String getTitle() { return title; }

public LocalDateTime getDateTime() { return dateTime; }

public LocalDateTime getCreateTime() { return createTime; }

public void setTitle(String title) { this.title = title; }

public void setDateTime(LocalDateTime dateTime) { this.dateTime = dateTime; }

}

public class ScheduleManager {

private static int nextId = 1;

private static final int MAX_SCHEDULES = 20;

private static List<Schedule> schedules = new ArrayList<>();

private static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {

boolean running = true;

while (running) {

System.out.println("--------日程安排管理程序--------");

System.out.println("1. 创建日程安排 2. 查看日程安排 3.编辑日程安排 4.删除日程安排");

System.out.print("请输入操作编号:");

int choice = scanner.nextInt();

switch (choice) {

case 1:

createSchedule();

break;

case 2:

viewSchedules();

break;

case 3:

editSchedule();

break;

case 4:

deleteSchedule();

break;

default:

System.out.println("无效操作编号,请重新输入!");

}

System.out.print("您是否继续操作?(y/n): ");

String cont = scanner.next();

if (!cont.equalsIgnoreCase("y")) {

System.out.println("您已退出日程安排管理程序。");

running = false;

}

}

scanner.close();

}

private static void createSchedule() {

if (schedules.size() >= MAX_SCHEDULES) {

System.out.println("已达最大日程数(20个),不能再添加。");

return;

}

System.out.print("请输入标题:");

String title = scanner.next();

System.out.print("请输入日期(格式:yyyy-MM-dd):");

String dateStr = scanner.next();

System.out.print("请输入时间(格式:HH:mm):");

String timeStr = scanner.next();

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");

LocalDateTime dateTime;

try {

dateTime = LocalDateTime.parse(dateStr + " " + timeStr, dtf);

} catch (Exception e) {

System.out.println("日期或时间格式错误,请重新操作!");

return;

}

if (dateTime.isBefore(LocalDateTime.now())) {

System.out.println("日程时间不能在当前时间之前,请重新操作!");

return;

}

Schedule schedule = new Schedule(nextId++, title, dateTime);

schedules.add(schedule);

System.out.println("日程已添加!");

}

private static void viewSchedules() {

if (schedules.isEmpty()) {

System.out.println("当前没有任何日程,查看结果为空,请先添加日程安排。");

return;

}

Collections.sort(schedules, Comparator.comparing(Schedule::getDateTime));

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");

DateTimeFormatter createFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");

System.out.println("当前所有日程安排如下:");

System.out.printf("%-4s%-20s%-20s%-20s%-25s\n",

"编号","标题", " 日期 时间", "距离现在", "创建时间");

for (Schedule s : schedules) {

Duration duration = Duration.between(LocalDateTime.now(), s.getDateTime());

long seconds = duration.getSeconds();

String diffStr = null;

if (seconds >= 0) {

long days = seconds / (24 * 3600);

long hrs = (seconds % (24 * 3600)) / 3600;

long mins = (seconds % 3600) / 60;

diffStr = days + "天" + hrs + "小时" + mins + "分钟";

}

System.out.printf("%-6s%-20s%-20s%-20s%-25s\n",

s.getId(),

s.getTitle(),

dtf.format(s.getDateTime()),

diffStr,

createFormatter.format(s.getCreateTime())

);

}

}

private static void deleteSchedule() {

if (schedules.isEmpty()) {

System.out.println("当前没有日程可以删除,请先添加日程安排。");

return;

}

System.out.print("请输入要删除的日程编号:");

int id = scanner.nextInt();

boolean found = false;

for (int i = 0; i < schedules.size(); i++) {

if (schedules.get(i).getId() == id) {

schedules.remove(i);

System.out.println("编号 "+id+" 日程安排已删除。");

found = true;

break;

}

}

if (!found) {

System.out.println("未找到对应编号的日程安排,无法删除,请先添加日程安排。");

}

}

private static void editSchedule() {

if (schedules.isEmpty()) {

System.out.println("当前没有日程可以编辑,请先添加日程安排。");

return;

}

System.out.print("请输入要编辑的日程编号:");

int id = scanner.nextInt();

boolean found = false;

for (Schedule s : schedules) {

if (s.getId() == id) {

System.out.print("请输入新标题:");

String newTitle = scanner.next();

System.out.print("请输入新日期(格式:yyyy-MM-dd):");

String dateStr = scanner.next();

System.out.print("请输入新时间(格式:HH:mm):");

String timeStr = scanner.next();

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");

LocalDateTime newDateTime;

try {

newDateTime = LocalDateTime.parse(dateStr + " " + timeStr, dtf);

} catch (Exception e) {

System.out.println("日期或时间格式错误,编辑失败。");

return;

}

if (newDateTime.isBefore(LocalDateTime.now())) {

System.out.println("新时间不能在当前时间之前。");

return;

}

s.setTitle(newTitle);

s.setDateTime(newDateTime);

System.out.println("日程已更新,编辑完成。");

found = true;

break;

}

}

if (!found) {

System.out.println("未找到对应编号的日程安排,无法编辑,请先添加日程安排。");

}

}

}

java

运行

网址:日程安排管理Java https://www.yuejiaxmz.com/news/view/1328383

相关内容

基于Java的日程安排系统
Java、JSP个人日程管理系统
基于Java的日程管理系统的设计与实现.docx
基于Java的日程管理系统的设计与实现
基于ssm+vueapp日程管理系统(开题报告+程序+论文+java)
Java开发者必看:高效日程管理,提升编程效率的秘诀
毕设项目:日程管理系统(JSP+java+springmvc+mysql+MyBatis)
java+vue计算机毕设app日程管理系统【源码+程序+论文+开题】
【原创】java+springboot+mysql日程管理系统设计与实现
Java 安全管理器

随便看看