日程安排管理Java
使用日程管理应用辅助安排 #生活乐趣# #生活日常# #个人时间管理#
内容
随着生活节奏的加快,人们每天都面临的事务比较多样化,有时候可能会忘记一些重要的日程安排,例如会议,采访等。为了更好地管理和组织日常安排,要求编写一个日程安排管理程序,具体要求如下。
用户可以多次创建日程,但是最多只能创建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 安全管理器