我正在嘗試創建日曆和日程安排應用程序。我們有一個由短期交付約會組成的數據集。開始時間,持續時間,截止日期/時間等。我們的目的是創建一個應用程序,該應用程序將生成一個給定工作塊的開始和結束時間的任務列表。我需要幫助設計日曆和日程安排應用程序
職位按優先級順序如下:
- 由於在特定的時間,在沒有具體的時間
- 由於在未來某一日期,按升序排序
- 沒有截止日期
- 未來開始日期(不包括報告)
當應用程序運行時,輸入工作班次的開始和結束時間。該時間塊按照優先順序自動填充作業。
考慮:
Job01; Duration 10; Start 01/01; Due 01/02 1500;
Job02; Duration 60; Start 01/01; Due 01/02;
Job03; Duration 45; Start 01/08; Due 01/08 1500;
Job04; Duration 30; Start 01/09; Due 01/09 1500;
Job05; Duration 30; Start 12/31; ;
Job06; Duration 60; Start 12/28; ;
Job07; Duration 60; Start 01/04; ;
Job08; Duration 60; Start 01/04; ;
Job09; Duration 30; Start 01/01; Due 01/03 1200;
Job10; Duration 10; Start 01/01; Due 01/05 1700;
在01/02,這十個就業機會將在這個順序優先:01-02-09-10-05-06
。由於未來的開始日期,職位03-04-07-08
將被排除。
考慮:在01/02,我接觸到了辦公室四小時輪班,1200-1600
,並輸入該數據到調度。
從那裏,我需要以下魔法發生:
- 在我的開始時間開始,添加重中之重的工作。
- 如果作業是一項專門計劃的作業,請保持該時間,以免其他作業覆蓋該作業。
- 一旦具有特定時間的所有作業都在日曆中,請繼續填寫以第一個emply插槽開始的約會,直到日曆填滿爲止,然後停止。
此之後的邏輯,這裏的數據是如何填寫的時間表。
Job01 - 1500-1510
Job02 - cannot fit in the 1510-1500 slot, so it populates 1200-1300
Job05 - 1300-1330
Job06 - 1330-1430
Job09 - 1430-1500
Job10 - 1510-1520
到目前爲止,我的優先級邏輯工作得很好。我可以正確地捕捉到第一條記錄。但隨後,我迷失在這個饒有趣味的作品上,尤其是如何保持一定的時間段,以免重寫它,並且不會超過開始和結束時間。我正在努力構建填充日曆的方法的有效方法。當我重複執行我的任務清單時,是否會創建一個15-miunt桶的陣列並填寫預約?每次我安排一個事件並通過調度器傳遞另一個事件時,我是否會以某種方式將newStartTime
和newEndTime
返回頂部?記憶中是否有事件?或寫入數據庫,因爲他們填充特定的插槽? Java中是否有預定義的類已經這樣做了,我錯過了它?天哪...這將是尷尬......
我太接近這個,現在,我有麻煩形象化一個很好的策略。任何建議,意見和廣義僞代碼都會有所幫助。
你的問題似乎有一些哈希表碰撞的相似之處。你可以嘗試閱讀有序散列,並查看優先級顛倒的工作是否可行。 – 2013-02-13 18:14:57