2012-11-09 1 views
2

Amis,Comment désactiver les créneaux horaires réservés à partir d'une liste de créneaux horaires d'une heure d'affaires

Je travaille projet de réservation de rendez-vous, les détails sont les suivants: heures d'affaires commence à partir 9h00 à 7: 00 avec une durée par défaut de 30mins. Ainsi, les machines à sous commencent comme (9h00, 9h30, 10h00 .... 07h00).

Ici, pour afficher les emplacements disponibles, j'utilise la logique suivante.

  1. Stockage toutes les fentes avec 30 min durée dans une liste (LISTE A) comme [9:00, 9:30, 10:00, 10:30, ... 7:00]
  2. en boucle à travers les rendez-vous réservé (contient début et de fin), et si le temps de démarrage est mis en correspondance avec l'un des LISTE a éléments, I », en supprimant cet élément de cette liste. et boucle continue.

Ici, le problème est, Considérez si le rendez-vous est réservé 9: 30-10: 00. Basé sur ma logique, 9:30 est associé à l'élément LIST A, et il va supprimer 9:30 de cette liste. Par conséquent, les logements disponibles seront affichés comme [9:00, X, 10:00, 10:30, .... 07:00]. En fait, il devrait être [9:00, 9:30, 10:30, 11:00 ... 7:00]

Au lieu d'afficher les emplacements disponibles 9: 00-9: 30, 10: 30-11 : 00 il montre 9: 00-10: 00, 10:. 30-11 depuis 09h30 est retiré de la liste,

S'il vous plaît aider à résoudre ce problème, ou me suggérer des approches alternatives pour ce problème . Vraiment besoin.

Répondre

2

La chose que vous mélangez est la suivante: vous prenez l'heure de début du second emplacement comme heure de fin du premier emplacement. Donc, plutôt que de le faire, vous pouvez stocker l'heure de début et la durée.

Et pour calculer simplement l'heure de fin, vous

StartTime.AddMinutes(30); 

Et pour ajouter un commentaire à la fin; vous essayez de construire une structure très rigide. Et fera face à des problèmes si vous essayez d'étendre l'application, à mon humble avis.

2

Je suggère, au lieu d'utiliser tableau unique dimensions, utiliser le tableau Multidimensional comme

[[9:00][9:30],[9:30][10:00],[10:00][10:30], .... nth Item] 

Ici, la logique devrait être comme ça

var start=[start time] 
var end=[end time] 
var duration=[duration] 

for (i=start;i<end;i+=duration) 
{ 
    if(start==A[i][0]) 
    remove(A[i][0]); 
} 
A.sort(); 
return A; 
Questions connexes