package controller;
import java.util.Scanner;
import model.Invoice;
import model.Ticket;
public class InvoiceManager {
public static Invoice createInvoice() {
double totalPrice = 0;
double totalDiscount = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("Enter number of sectors : ");
int SECTOR_COUNT = scanner.nextInt();
Ticket[] tickets = new Ticket[SECTOR_COUNT];
int ticketCount = 0;
System.out.println("\nSelect from below SECTORS \n");
System.out.println("----------------------------------------------------------------------------------");
System.out.println("1: Tokyo -> New York, 2: New York -> Tokyo, 3: Tokyo -> London, 4: London -> Tokyo");
int choice = 0;
for (int i = 0; i < SECTOR_COUNT; i++) {
System.out.println("Sector # : ");
choice = scanner.nextInt();
Ticket ticket = TicketManager.createTicket(choice);
tickets[ticketCount] = ticket;
totalPrice = totalPrice + ticket.getPrice().getAmount();
totalDiscount = totalDiscount + ticket.getDiscount();
ticketCount++;
}
scanner.close();
Invoice invoice = new Invoice();
invoice.setTickets(tickets);
invoice.setTotalPrice(totalPrice);
invoice.setTotalDiscount(totalDiscount);
return invoice;
}
}
-----------------------------------------------------------------------
(TicketManager.java)
package controller;
import java.util.HashMap;
import model.Campaign;
import model.Ticket;
public class TicketManager {
static HashMap<String, Campaign> campaignMap = null;
public static double calculateDiscount(Ticket tkt, Campaign campaign) {
//Sector
//Price
//Discount
//local variable
double discount = 0;
double amount = tkt.getPrice().getAmount();
double perDiscount = campaign.getDiscountPercentage() / 100.0;
discount = amount * perDiscount;
return discount;
}
public static Ticket createTicket(int choice) {
//Load the campaign file
if (campaignMap == null) {
campaignMap = DataHandler.loadFile();
}
Campaign campaign = campaignMap.get(String.valueOf(choice));
Ticket ticket = new Ticket();
ticket.setSector(campaign.getSector());
System.out.println("SELECTED : " + campaign.getSector());
ticket.setPrice(campaign.getPrice());
double discountAmount = TicketManager.calculateDiscount(ticket, campaign);//campaign.getPrice().getAmount() * campaign.getDiscountPercentage() / 100;
ticket.setDiscount(discountAmount);
return ticket;
}
}
-----------------------------------------------------------------------
(Campaign.java)
package model;
public class Campaign {
private String id;
private Sector sector;
private Price price;
private double discountPercentage;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Sector getSector() {
return sector;
}
public void setSector(Sector sector) {
this.sector = sector;
}
public Price getPrice() {
return price;
}
public void setPrice(Price price) {
this.price = price;
}
public double getDiscountPercentage() {
return discountPercentage;
}
public void setDiscountPercentage(double discountPercentage) {
this.discountPercentage = discountPercentage;
}
}
-----------------------------------------------------------------------
(Invoice.java)
package model;
public class Invoice {
private Ticket[] tickets;
private double totalPrice;
private double totalDiscount;
public Ticket[] getTickets() {
return tickets;
}
public void setTickets(Ticket[] tickets) {
this.tickets = tickets;
}
public double getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(double totalPrice) {
this.totalPrice = totalPrice;
}
public double getTotalDiscount() {
return totalDiscount;
}
public void setTotalDiscount(double totalDiscount) {
this.totalDiscount = totalDiscount;
}
}
-----------------------------------------------------------------------
(Price.java)
package model;
public class Price {
private double amount;
private String currency;
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public String toString() {
return
"PRICE : " + amount + " " + currency;
}
}
-----------------------------------------------------------------------
(Sector.java)
package model;
public class Sector {
private String from;
private String to;
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String toString() {
return
from + " -> " +
to
;
}
}
-----------------------------------------------------------------------
(Ticket.java)
package model;
public class Ticket {
private Sector sector;
private double discount;
private Price price;
public Sector getSector() {
return sector;
}
public void setSector(Sector sector) {
this.sector = sector;
}
public double getDiscount() {
return discount;
}
public void setDiscount(double discount) {
this.discount = discount;
}
public Price getPrice() {
return price;
}
public void setPrice(Price price) {
this.price = price;
}
public String toString() {
return
sector + ", " +
price + ", " +
" DISCOUNT : " +
discount
;
}
}
----------------------------------------------------------------------- campaign.txt
1,TOKYO,NEW YORK,30000,15
2,NEW YORK,TOKYO,50000,10
3,TOKYO,LONDON,80000,15
4,LONDON,TOKYO,80000,5
-----------------------------------------------------------------------
Finally, run the application and provide values as shown in green colour below,
----------------------------------------------------------------------- Output
########## HANABI TRAVELS AIRLINE TICKETING ##########
Enter number of sectors :
2
Select from below SECTORS
----------------------------------------------------------------------------------
1: Tokyo -> New York, 2: New York -> Tokyo, 3: Tokyo -> London, 4: London -> Tokyo
Sector # :
1
SELECTED : TOKYO -> NEW YORK
Sector # :
2
SELECTED : NEW YORK -> TOKYO
************** INVOICE (JPY) *******
Sectors [From -> To]
TOKYO -> NEW YORK, PRICE : 30000.0 JPY, DISCOUNT : 4500.0
NEW YORK -> TOKYO, PRICE : 50000.0 JPY, DISCOUNT : 5000.0
-------------------------------------
TOTAL PRICE [A] 80000.0
TOTAL DISCOUNT[B] 9500.0
FINAL PRICE [A-B] 70500.0
*************************************
-->THANK YOU FOR USING HANABI TRAVELS !!!