import java.io.
*;
public class BusReservationAndTicketingSystem {
public static void main(String args[]) throws IOException {
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
String user,password,yn,search,again,choice;
int to=0,y=1,z=0,end=0,r=1;
int available[] = new int[6];
int ticketI[][] = new int [100][3];
String ticketS[][] = new String[100][3];
double ticketD[][] = new double [100][3];
double pay[] = new double[20];
double change[] = new double[20];
for(int i=1;i<4;){
System.out.print("Enter Username: ");
user = in.readLine();
System.out.print("Enter Password: ");
password = in.readLine();
//"available[]" is the SEAT AVAILABLE//
//store 20 seats every destination [1-5]//
for(int o=1; o<=5; o++){
available[o]=20;
}
//if user and password are correct proceed to MAIN MENU//
if(user.equals("1") && password.equals("1")){
for(int x=1; x==1;){
//the MAIN MENU//
System.out.println("********************************************"
);
System.out.println("** BUS RESERVATION AND TICKETING
SYSTEM **");
System.out.println("********************************************"
);
System.out.println("** [1] Destination
**");
System.out.println("** [2] Passengers
**");
System.out.println("** [3] Billing
**");
System.out.println("** [4] View
**");
System.out.println("** [5] Exit
**");
System.out.println("***************************************");
System.out.println("***************************************\n");
for(x=1; x==1;){
System.out.print("ENTER CHOICE: ");
choice=in.readLine();
//if CHOICE is "1" display the
DESTINATION//
if (choice.equals("1")){
//the DESTINATION DETAILS//
//display the "Destination", every
destination "Fare", and the "Seat" available//
System.out.println("***************************************");
System.out.println("** DESTINATION |
FARE | SEAT **");
System.out.println("***************************************");
System.out.println("** 1.)DAVAO CITY
| Php600 | "+available[1]+" **");
System.out.println("** 2.)BUTUAN CITY |
Php170 | "+available[2]+" **");
System.out.println("** 3.)CABADBARAN |
Php150 | "+available[3]+" **");
System.out.println("** 4.)TANDAG |
Php200 | "+available[4]+" **");
System.out.println("** 5.)CAGAYAN |
Php250 | "+available[5]+" **");
System.out.println("***************************************");
System.out.println("***************************************\n");
System.out.println("PWD, STUDENT, & SENIOR
CITIZEN with 20% DISCOUNT!!!\n");
x=0;
}
//if CHOICE is "2" proceed to Ticket
Booking//
else if (choice.equals("2")){
int print=1;
//display first the Destination
Details//
System.out.println("***************************************");
System.out.println("** DESTINATION |
FARE | SEAT **");
System.out.println("***************************************");
System.out.println("** 1.)DAVAO CITY |
Php600 | "+available[1]+" **");
System.out.println("** 2.)BUTUAN CITY |
Php170 | "+available[2]+" **");
System.out.println("** 3.)CABADBARAN |
Php150 | "+available[3]+" **");
System.out.println("** 4.)TANDAG |
Php200 | "+available[4]+" **");
System.out.println("** 5.)CAGAYAN |
Php250 | "+available[5]+" **");
System.out.println("***************************************");
System.out.println("***************************************\n");
System.out.println("PWD, STUDENT, & SENIOR
CITIZEN with 20% DISCOUNT!!!\n");
if((available[1]==0)&&(available[2]==0)&&(available[3]==0)&&(avai
lable[4]==0)&&(available[5]==0)){
System.out.println("Sorry, We don't
have available seats for all Destination!");
x=0;
//inputing of Passenger's Name//
else{
for(x=1; x==1;){
System.out.print("\nENTER PASSENGER'S
NAME: ");
ticketS[z][0] = in.readLine();
x=0;
//if Passenger's Name already
used, display error and go back to Inputing//
for(int l=0; l<z; l++){
if(ticketS[l][0].equalsIgnoreCase(ticketS[z][0])){
System.out.println("Sorry,
Passenger's name have already used!");
x=1;
}
}
}
//inputing of Destination//
//integers Only [1-5]//
for(x=1; x==1;){
System.out.print("ENTER DESTINATION
[number]: ");
to = Integer.parseInt(in.readLine());
//if Inputed integers are "<1" or
">5", display error and go back to Inputing//
if(to<1 || to>5){
System.out.println("Invalid
Input!");
x=1;
}
//if available seat is eqaul to
"Zero", display error and go back to Inputing//
for(int d=1; d<=5; d++){
if(to==d){
if(available[to]==0){
System.out.println("Sorry, We don't have available seat!");
x=1;
}
x=0;
}
}
}
//convert the integer to string//
String dest[] = { " ", "DAVAO CITY",
"BUTUAN CITY", "CABADBARAN", "TANDAG", "CAGAYAN"};
double fare[] = { 0,600,170,150,200,250};
//converted integer to string, transfer to
storage array//
ticketS[z][1] = dest[to];
ticketD[z][0] = fare[to];
//inputing for Number of Passenger's//
for(x=1; x==1;){
System.out.print("HOW MANY PASSENGERS ARE
YOU?: ");
ticketI[z][0] =
Integer.parseInt(in.readLine());
//subtract the available seat by the
the number inputed//
for(int p=1; p<=5; p++){
if(to==p){
print=1;
available[to] =
available[to]-ticketI[z][0];
//if the subtracted
available seat is "<0", display error//
//add the inputed number to
the subtracted seat, to back the original seat//
//display the available
seat and back to the inputing//
if(available[to]<0){
System.out.print("Sorry, We don't have seat available for "
+ticketI[z][0] +" person\n");
available[to] =
available[to]+ticketI[z][0];
System.out.print("We
only have " +available[to] +" seat available\n");
x=1;
print=0;
}
else{
x=0;
}
}
}
//inputing for Number of Discounted
Passenger's//
for(x=1;x==1;){
System.out.print("HOW MANY PASSENGERS
HAVE DISCOUNT?: ");
ticketI[z][1] =
Integer.parseInt(in.readLine());
if(ticketI[z][1]>ticketI[z][0]){
System.out.println("Invalid
Input!");
System.out.println("No. of
Passengers are only " +ticketI[z][0] +"!");
x=1;
}
else{
break;
}
}
//print out of passengers details....
if(print==1){
System.out.println("\n***************************************");
System.out.println("**
PASSENGER'S DETAILS **");
System.out.println("***************************************");
System.out.println("PASSENGER'S NAME:
" + ticketS[z][0]);
System.out.println("PASSENGER'S
DESTINATION : " + ticketS[z][1]);
System.out.println("FARE PRICE: Php "
+ ticketD[z][0]);
System.out.println("NO. OF PASSENGERS:
" + ticketI[z][0]);
System.out.println("NO. OF PASSENGERS
WITH DISCOUNT: " + ticketI[z][1]);
System.out.println("***************************************");
System.out.println("***************************************\n");
ticketS[z][2]="0";
double discount=(ticketD[z][0]-
(ticketD[z][0]*0.2))*ticketI[z][1];
ticketD[z][2]= ((ticketI[z][0]-
ticketI[z][1])*ticketD[z][0])+discount;
x=0;
}
z++;
}
}
else if (choice.equals("3")){
for(x=1; x==1;){
System.out.print("ENTER
PASSENGER'S NAME: ");
search = in.readLine();
int s=1;
for(int b=0;b<z;b++){
if(search.equalsIgnoreCase(ticketS[b][0])){
System.out.println("***************************************");
System.out.println("** PASSENGER'S DETAILS **");
System.out.println("***************************************");
System.out.println("PASSENGER'S NAME: " + ticketS[b][0]);
System.out.println("PASSENGER'S DESTINATION : " + ticketS[b][1]);
System.out.println("FARE PRICE: Php" + ticketD[b][0]);
System.out.println("NO. OF PASSENGERS: " + ticketI[b][0]);
System.out.println("NO. OF PASSENGERS WITH DISCOUNT: " +
ticketI[b][1]);
System.out.println("***************************************");
System.out.println("***************************************");
s=0;
x=0;
if(ticketS[b][2].equals("x")){
System.out.println("Passenger's Already Paid!");
x=0;
}
else{
ticketS[b][2]="x";
for(x=1; x==1;){
System.out.println("\nPASSENGER'S TOTAL FARE: Php
"+ticketD[b][2]);
System.out.print("ENTER AMOUNT TO PAY: ");
pay[b] =
Double.parseDouble(in.readLine());
change[b]=pay[b]-ticketD[b][2];
if(change[b]<0){
System.out.println("Invalid Input!");
x=1;
}
else{
System.out.println("CHANGE: Php "+change[b]);
System.out.println("");
x=0;
}
}
}
}
}
if (s==1){
System.out.println("\nPASSENGER'S NAME NOT FOUND!\n");
for(int q=1; q==1;){
System.out.print("Do
you wish to continue with this transaction? [Y/N]: ");
again=in.readLine();
if(again.equalsIgnoreCase("y")){
q=0;
}
else if
(again.equalsIgnoreCase("n")){
q=0;
x=0;
}
else{
System.out.println("\nInvalid input!\n");
}
}
}
}
else if (choice.equals("4")){
for(int sx=1; sx<=3;){
System.out.print("SEARCH PASSENGER'S
NAME: ");
search = in.readLine();
int s=1;
for(x=0; x<=z; x++){
if(search.equalsIgnoreCase(ticketS[x][0])){
System.out.println("***************************************");
System.out.println("**
PASSENGER'S DETAILS **");
System.out.println("***************************************");
System.out.println("PASSENGER'S NAME: " + ticketS[x][0]);
System.out.println("PASSENGER'S DESTINATION : " + ticketS[x][1]);
System.out.println("FARE
PRICE: Php" + ticketD[x][0]);
System.out.println("NO. OF
PASSENGERS: " + ticketI[x][0]);
System.out.println("NO. OF
PASSENGERS WITH DISCOUNT: " + ticketI[x][1]);
System.out.println("TOTAL
FARE PRICE: Php " + ticketD[x][2]);
if(ticketS[x][2].equals("x")){
System.out.println("PAY: Php " +pay[x]);
System.out.println("CHANGE: Php " +change[x]);
System.out.println("STATUS: PAID");
}
else{
System.out.println("STATUS: NOT PAID");
}
System.out.println("***************************************");
System.out.println("***************************************");
s=0;
sx=4;
}
}
if (s==1){
System.out.println("Passenger's Name not found!");
sx++;
}
}
}
else if(choice.equals("5")){
end=1;
x=0;
System.out.println("Thank You!");
}
else{
System.out.println("Invalid Input!");
x=1;
}
}
for(y=1; y==1;){
if(end==1){
break;
}
System.out.print("Do you want another
transaction? [Y/N]: ");
yn = in.readLine();
if (yn.equalsIgnoreCase("y")){
x=1;
y=0;
}
else if (yn.equalsIgnoreCase("n")){
System.out.println("\nThank You!!!");
break;
}
else{
System.out.println("Invalid Input!!!");
y=1;
}
}
}
i=4;
}
else{
System.out.println("\nInvalid user or password!\n");
i++;
}