java通过日历预约并设置预约人数代码实现

时间: 2023-09-06 20:08:20 浏览: 58
以下是Java日历预约并设置预约人数的示例代码: ```java import java.util.*; public class CalendarBooking { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Calendar calendar = Calendar.getInstance(); int year, month, day, hour, minute, duration, maxAttendees; System.out.print("请输入预约的年份:"); year = scanner.nextInt(); System.out.print("请输入预约的月份:"); month = scanner.nextInt() - 1; // Calendar.MONTH的范围是0~11 System.out.print("请输入预约的日期:"); day = scanner.nextInt(); System.out.print("请输入预约的小时:"); hour = scanner.nextInt(); System.out.print("请输入预约的分钟:"); minute = scanner.nextInt(); System.out.print("请输入预约的时长(分钟):"); duration = scanner.nextInt(); System.out.print("请输入最大的参与人数:"); maxAttendees = scanner.nextInt(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month); calendar.set(Calendar.DAY_OF_MONTH, day); calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minute); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); System.out.println("开始时间:" + calendar.getTime()); // 创建事件 Event event = new Event(calendar, duration, maxAttendees); // 预约 boolean success = event.book(); if (success) { System.out.println("预约成功!"); } else { System.out.println("预约失败!"); } } } class Event { private final Calendar startTime; private final int duration; // 单位:分钟 private final int maxAttendees; private final Set<String> attendees = new HashSet<>(); // 已经参加的人员 public Event(Calendar startTime, int duration, int maxAttendees) { this.startTime = startTime; this.duration = duration; this.maxAttendees = maxAttendees; } // 预约 public boolean book() { // 先检查是否能够参加 if (attendees.size() < maxAttendees) { long startMillis = startTime.getTimeInMillis(); long endMillis = startMillis + duration * 60 * 1000; // 检查时间是否冲突 for (String attendee : attendees) { Set<Event> events = Attendee.getEvents(attendee); for (Event event : events) { long eventStartMillis = event.startTime.getTimeInMillis(); long eventEndMillis = eventStartMillis + event.duration * 60 * 1000; if (startMillis < eventEndMillis && endMillis > eventStartMillis) { return false; // 时间冲突 } } } attendees.add("预约人"); // 预约人默认参加 return true; } else { // 人数已满 return false; } } } class Attendee { // 用来存储某人参加了哪些事件 private static final Map<String, Set<Event>> ATTENDEE_EVENTS_MAP = new HashMap<>(); // 获取某人参加的所有事件 public static Set<Event> getEvents(String attendee) { return ATTENDEE_EVENTS_MAP.getOrDefault(attendee, new HashSet<>()); } } ``` 在这段代码中,我们先创建了一个 `Calendar` 实例来表示预约的开始时间,然后输入预约的时长和最大参与人数。接下来,我们使用这些信息来创建一个 `Event` 实例,并调用 `book` 方法进行预约。如果预约成功,就会添加预约人的名字到参与名单里,否则返回错误信息。 注意,这段代码只是一个简单的示例,没有进行实际的持久化和数据校验。在实际应用中,需要根据具体需求进行设计和改进。

相关推荐

最新推荐

recommend-type

Java实现的日历功能完整示例

主要介绍了Java实现的日历功能,结合完整实例形式分析了Java日历功能相关的日期时间获取、计算、显示等操作技巧,需要的朋友可以参考下
recommend-type

Java实现简单日历小程序 Java图形界面小日历开发

主要介绍了Java实现简单日历小程序,如何用Java swing开发一款简单的小日历,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Java实现按年月打印日历功能【基于Calendar】

主要介绍了Java实现按年月打印日历功能,涉及java基于Calendar进行日期运算的相关操作技巧,需要的朋友可以参考下
recommend-type

java利用Calendar类打印日历

主要为大家详细介绍了java利用Calendar类打印日历,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

微信小程序实现打卡日历功能

主要介为大家详细绍了微信小程序实现打卡日历功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
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

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

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