123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- /**
- * TicketMachine models a naive ticket machine that issues
- * flat-fare tickets.
- * The price of a ticket is specified via the constructor.
- * It is a naive machine in the sense that it trusts its users
- * to insert enough money before trying to print a ticket.
- * It also assumes that users enter sensible amounts.
- *
- * @author David J. Barnes and Michael Kolling
- * @version 2008.03.30
- */
- public class TicketMachine
- {
- // The price of a ticket from this machine.
- private int price;
- // The amount of money entered by a customer so far.
- private int balance;
- // The total amount of money collected by this machine.
- private int total;
- // Exercise 2.15
- private int status;
-
- /**
- * Create a machine that issues tickets of the given price.
- * Note that the price must be greater than zero, and there
- * are no checks to ensure this.
- */
- public TicketMachine()
- {
- //2.39 set price to 1000 and remove input parameter
- //2.42 constructor with parameter to specify price
- //2.58 Better ticket machine
- price = 0;
- balance = 0;
- total = 0;
- }
-
- //public TicketMachine()
- //{
- //2.42 constructor with default value of price
- //price = 500;
- //}
-
- /*
- * Exercise 2.30/2.41: Assign a value to the price field
- */
- public void setPrice(int ticketCost)
- {
- price = ticketCost;
- }
-
- /*
- * Exercise 2.31: Add a value to the score field
- */
- public void increase(int points)
- {
- int score = points;
- }
-
- /*
- * Exercise 2.32: Subtract a value from the price field
- */
- public void discount(int amount)
- {
- price = price - amount;
- }
-
- /**
- * Return the price of a ticket.
- */
- public int getPrice()
- {
- return price;
- }
-
- /**
- * Return the amount of money already inserted for the
- * next ticket.
- */
- public int getBalance()
- {
- return balance;
- }
-
- /**
- * Receive an amount of money in cents from a customer.
- */
- public void insertMoney(int amount)
- {
- if(amount >= 0){
- balance = balance + amount;
- }
- }
-
- /**
- * Return the total amount of money collected by this machine.
- */
- //Exercise 2.24
- public int getTotal()
- {
- return total;
- }
-
- /**
- * Print message when incorrect amount of money is inserted
- */
- //Exercise 2.33
- public void prompt()
- {
- System.out.println("Please insert the correct amount of money.");
- }
-
- /**
- * Print message showing price of a ticket
- */
- //Exercise 2.34
- public void showPrice()
- {
- System.out.println("The price of a ticket is " + price + " cents.");
- }
-
- /**
- * Print message showing price of a ticket
- */
- //Exercise 2.40
- public void empty()
- {
- total = 0;
- }
-
- /**
- * Print message showing price of a ticket
- */
- //Exercise 2.55
- public int emptyMachine()
- {
- return total;
- //total=0;
- }
-
- /**
- * Print a ticket.
- * Update the total collected and
- * reduce the balance to zero.
- */
- public void printTicket()
- {
- /*
- // Simulate the printing of a ticket.
- System.out.println("##################");
- System.out.println("# The BlueJ Line");
- System.out.println("# Ticket");
- System.out.println("# " + price + " cents.");
- System.out.println("##################");
- System.out.println();
-
- // Update the total collected with the balance.
- total = total + balance;
- // Clear the balance.
- balance = 0;
- */
-
- /*
- if(balance >= price) {
- System.out.println("##################");
- System.out.println("# The BlueJ Line");
- System.out.println("# Ticket");
- System.out.println("# " + price + " cents.");
- System.out.println("##################");
- System.out.println();
- // Update the total collected with the price.
- total = total + price;
- // Reduce the balance by the price.
- balance = balance - price;
- }
- else {
- System.out.println("You must insert at least: " +
- (price - balance) + " more cents.");
- }
- */
-
- int amountLeftToPay = price - balance;
-
- if(amountLeftToPay <=0){
- System.out.println("##################");
- System.out.println("# The BlueJ Line");
- System.out.println("# Ticket");
- System.out.println("# " + price + " cents.");
- System.out.println("##################");
- System.out.println();
- // Update the total collected with the price.
- total = total + price;
- // Reduce the balance by the price.
- balance = balance - price;
- } else {
- System.out.println("You must insert at least: " +
- (price - balance) + " more cents.");
- }
- }
-
- }
-
- /* EXERCISES
- * 2.1: call void printTicket()
- * 2.2: price that was entered
- * 2.3: The ticket prints regardless
- * 2.4: [practice ticket machine]
- * 2.5: Yes, price is different.
- * 2.6: public class Student; public class LabClass
- * 2.7: Order of statement matters
- * 2.8: It is possible to leave this out, the class will be assigned default access modifier
- * 2.9: fields: price, balance, total;
- * constructors: public TicketMachine(int ticketCost);
- * methods: getPrice, getBalance, insertMoney, printTicket
- * 2.10: no return type defined
- * 2.11: int, Student, Server
- * 2.12: alive, tutor, game
- * 2.13: Order of statement matters
- * 2.14: field declaration requires a semicolon
- * 2.15: Shown in code
- * 2.16: Student
- * 2.17: title of type String, and price of type double
- * 2.18: fields: title, price, author, publisher, publish date
- * types: string, double, string, string, date
- * 2.19: name = petsName;
- * 2.20: The problem when adding int is the ticketCost was not recognized as price
- * Assignments should not re-declare the field type. This needs to be done in fields section.
- * 2.21: getPrice returns a passed value and getBalance returns a set value.
- * 2.22: getBalance - "How much money do I owe or am I owed?"
- * 2.23: No, the variable does not need to have the same name as the method
- * 2.24: new getTotal method created above.
- * 2.25: error "missing return statement"
- * 2.26: getPrice returns an integer, printTicket does not return anything (void)
- * 2.27: They are actions and don't return anything.
- * 2.28: (Practicing methods)
- * 2.29: There is a return type included
- * 2.30-2.34: Shown in Code
- * 2.35: Different outputs because the price is variable
- * 2.36: "price" string would display instead of a variable
- * 2.37: Same output as 2.36
- * 2.38: No, they cannot show variable prices because they are outputing a string
- * 2.39: Objects cannot pass a parameter to the ticketmachine
- * 2.40: Mutator method
- * 2.41: Setter method
- * 2.42: Shown in code
- * 2.43: (Practicing methods)
- * 2.44: negative values do not affect balance
- * 2.45: Booleans are well suited to be controlled by a type with only two different values
- * 2.46: Shown in code
- * 2.47: No because there is a check to make sure price is not greater than balance
- * 2.48: +, -, /, *, %
- * 2.49: saving = price * discount;
- * 2.50: mean = total / count;
- * 2.51: if(price > budget){System.out.print("Too expensive")}else {System.out.print("Just right")}
- * 2.52: if(price > budget){System.out.print("Too expensive, your budget is only " + budget)}else {System.out.print("Just right")}
- * 2.53: it is setting balance as 0 before returning it.
- * 2.54: return statement ends the execution of a method
- * 2.55: Shown in code
- * 2.56: It is an accessor because method ends after return statement
- * 2.57: Shown in code
- * 2.58: setPrice method can be called to set price based on user selection
- */
-
-
|