vendredi 5 mai 2017

OOP Ticket Price Program.

So this one is a bit lengthy. I'm trying to finish off a program where ticket price varies depending on purchase date. I need the Tester.Java to take the info from the objects, and output the proper price depending on the ticket type. I have already set a set of if statements in the Tester, but I am now at an impass on how to finish this program off. I will paste my code below.

Tester (contains the main method):

package tester;
import java.util.Scanner;

/**
 *
 * @author dylan
 */
public class Tester extends Ticket{
/**
 * @param args the command line arguments
 */
public static void main(String[] args){
    Scanner db = new Scanner(System.in);
    Ticket firstTicket = new Ticket();
    System.out.println("The first ticket: "+firstTicket.toString());
    int x = 0;
    while(x!=2){
        if(x==2){
            System.out.println("Goodbye.");
        }
        else{
           System.out.println("What type of ticket are you purchasing?");
           System.out.println("1.Walk Up");
           System.out.println("2.Advance");
           System.out.println("3.Student Advance");
           int t = db.nextInt();
           if(t==1){

           }
           if(t==2){

           }
           if(t==3){

           }

        }
     System.out.println("Do you need another ticket?");
     x= db.nextInt();

    }

}

}

Ticket (Super class):

package tester;

import java.util.Scanner;

/**
 *
 * @author dylan
 */
public class Ticket {
    public int ticket;
    public double price;


/**
 * holds default values for ticket number and price
 */
public Ticket(){
    super();
    this.ticket=1;
    this.price=15.0;

}

/**
 * Stores the values for ticket number and the price, based upon ticket type
 * @param ticket
 * @param price 
 */
public Ticket(int ticket, double price){
    this.ticket=ticket;
    this.price=price;   
}

/**
 * returns the value of price
 * @return price
 */
public double getPrice(){
    return price;
}

@Override
public String toString(){
    return "Ticket #" + ticket + " Ticket price: $"+ price; 
}
}

Walkup Ticket:

package tester;

/**
 *
 * @author dylan
 */
public class WalkupTicket extends Ticket{

/**
 * holds the price of a walkup ticket 50$
 */
public WalkupTicket(){
    this.price=50;
    ticket++;
}


}

Advance Ticket:

package tester;

import java.util.Scanner;

/**
 *
 * @author dylan
 */
public class AdvanceTicket extends Ticket {


/**
 * stores the values of an advance ticket, depending on how many days before
 * the event it is purchased
 */
public AdvanceTicket(){
    Scanner db = new Scanner(System.in);
    System.out.println("How many days before the event are you purchasing your ticket?");
    int days = db.nextInt();
    // days before is 10 or less days
    if(days >= 10){
      price=30;
      ticket++;
    }
    // days before is more than 10
    else{
        this.price=40;
        ticket++;
    }
}
}

Student Advance Ticket:

package tester;

import java.util.Scanner;


/**
 *
 * @author dylan
 */
public class StudentAdvanceTicket extends AdvanceTicket{


/**
 * stores the values of an advance ticket, depending on how many days before
 * the event it is purchased, with student discount.
 */
public StudentAdvanceTicket(){
   Scanner db = new Scanner(System.in);
    System.out.println("How many days before the event are you purchasing your ticket?");
    int days = db.nextInt();
    System.out.println("Are you a student?");
    System.out.println("1. Yes");
    System.out.println("2. No");
    int stud = db.nextInt();
    // days before is 10 or less days
    if(days >= 10 && stud == 1){
      price=15;
      ticket++;
    }
    // days before is more than 10
    if(days <= 10 && stud == 1){
        this.price=20;
        ticket++;
    }

}

}

I feel like I'm making a simple mistake, but I am new to OOP so I'm having bit of trouble with this. Thanks for any help you can give.

Aucun commentaire:

Enregistrer un commentaire