-
Notifications
You must be signed in to change notification settings - Fork 26
/
sharechat-irctc.java
87 lines (68 loc) · 1.66 KB
/
sharechat-irctc.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**Design IRCTC Ticket Booking System
Features:
Customer - User 1
Search Train for customer journey (Date, Source, Destination)
Book Ticket
See Booked Ticket History
Train- Tier? - Types of seat.
Admin
Change Train Schedules (Permanent recurring Change)
Add more seats to the Train
**/
abstract class Seat{
private int seatNo;
private bool isBooked;
public int getCost();
public bool isBooked();
}
class FirstClassSeat extends Seat{
}
class SecondClassSeat extends Seat{
}
class ThirdClassSeat extends Seat{
}
class Coach {
private List<Seat> seats;
private boogieNo;
}
class StationSchedule{
String stationName;
Date scheduleAt;
}
abstract class TrainMetaData{
private int trainNo;
private List<StationSchedule> StationSchedule;
private bool isAvailable;
//TODO:: Schedule???
}
class Train extends TrainMetaData{
private String scheduledAt;
private List<Coach> coaches;
private List<WeekDays> scheduleType;
}
abstract class User{
private String name;
private String id;
}
class Admin extends User{
public bool changeTrainSchedule(Train tain, String newSchedule)
public bool addTrainSeats(Train train, List<Seat> seats)
}
class Customer extends User{
private List<Ticket> bookedTickets;
public List<Ticket> getBookedTickets()
}
class Ticket{
private Customer bookedBy;
private List<Customer> passengers;
private int price;
private Train trainNo;
private String pnr;
}
class IRCTCManager{
private Map<Weekday, Train> trainMapper;
private Map<String, User> userMapper;
private Map<Pair<String,String>, List<Train>> routeTrainMapper;
public List<Train> searchTrain(String src, String dest, Date day);
public Ticket bookTicket(Train train, String seatNo)
}