Advertisement
elena_gjorgjioska

[NP]Пицерија

Nov 16th, 2018
361
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.67 KB | None | 0 0
  1. Пицерија Problem 1 (0 / 0)
  2. Треба да се развие систем за електронска нарачка од пицерија. Менито на пицеријата се состои од следново:
  3.  
  4. Pizza:
  5.  
  6. Standard: 10$
  7. Pepperoni: 12$
  8. Vegetarian: 8$
  9. Extra
  10.  
  11. Ketchup 3$
  12. Coke 5$
  13. За да го претставите менито, секоја ставка треба да имплементира interface Item која опишува една ставка од менито и ги дефинира следниве методи:
  14.  
  15. getPrice():int - ја дава цената за конкретната ставка
  16. Следно, дефинирајте две класи ExtraItem и PizzaItem за да може да правите разлика меѓу пици и останатите работи во нарачката. И двете класи треба да имаат еден конструктор кој прима еден String аргумент.
  17.  
  18. ExtraItem(String type) - валидни вредности за type се { "Coke", "Ketchup" }
  19. PizzaItem(String type) - валидни вредности за type се { Standard , Pepperoni , Vegetarian }
  20. Ако за type се проследи некоја невалидна вредност (која ја нема на менито) треба да се фрли исклучок InvalidExtraTypeException, односно InvalidPizzaTypeException.
  21.  
  22. Последно имплементирајте ја класата Order. Таа треба да ги нуди следните функционалности:
  23.  
  24. Order() - креира нова празна нарачка
  25. addItem(Item item, int count) - соодветната ставка се додава во нарачката (count означува колку примероци сакаме од дадената ставка). Aко count е поголем од 10 се фрла исклучок ItemOutOfStockException(item). Доколку во нарачката веќе ја има соодветната ставка Item тогаш истата се заменува со нова. Следниот код резултира со нарачка со една стандардна пица:
  26.  
  27. Order order = new Order(); order.addItem(new PizzaItem("Standard"), 2); order.addItem(new PizzaItem("Standard"), 1);
  28.  
  29. getPrice():int - ја враќа вкупната цена на нарачката
  30.  
  31. displayOrder() - ја печати содржината на нарачката со соодветни редни броеви пред секоја ставка, името, количината и збирна сума на ставката, како и вкупна сума за целата нарачка. За редниот број се резервирани 3 места порамнети во десно, за имињата на ставките се резервирани 15 места со порамнување од лево, за кардиналноста две места порамнети во десно и за цената на една ставка 5 места порамнети во десно. За "Total:" се резервирани 22 места со порамнување од лево и за вкупната цена 5 места порамнети во десно. Пример:
  32.   1.Standard       x 2   20$
  33.   2.Vegetarian     x 1    8$
  34.   3.Coke           x 3   15$
  35. Total:                   43$
  36. Редоследот по кој се печатат ставките е оној по кој тие се внесувани во нарачката. Доколку некоја ставка се внесе повторно нејзиното место не се менува.
  37.  
  38. removeItem(int idx) - се отстранува нарачката со даден индекс (сите нарачки со поголеми индекси се поместуваат во лево). Доколку не постои нарачка со таков индекс треба да се фрли исклучок ArrayIndexOutOfBоundsException(idx)
  39. lock() - ја заклучува нарачката. За да може нарачката да се заклучи треба истата да има барем една ставка, во спротивно фрлете исклучок EmptyOrderException.
  40. Откако ќе се заклучи нарачката треба веќе да не може да се менува со методите removeItem, addItem. Повикот на овие методи резултира со исклучок од типот OrderLockedException.
  41.  
  42.  
  43. import java.util.Scanner;
  44.  
  45. public class PizzaOrderTest {
  46.  
  47.     public static void main(String[] args) {
  48.         Scanner jin = new Scanner(System.in);
  49.         int k = jin.nextInt();
  50.         if (k == 0) { //test Item
  51.             try {
  52.                 String type = jin.next();
  53.                 String name = jin.next();
  54.                 Item item = null;
  55.                 if (type.equals("Pizza")) item = new PizzaItem(name);
  56.                 else item = new ExtraItem(name);
  57.                 System.out.println(item.getPrice());
  58.             } catch (Exception e) {
  59.                 System.out.println(e.getClass().getSimpleName());
  60.             }
  61.         }
  62.         if (k == 1) { // test simple order
  63.             Order order = new Order();
  64.             while (true) {
  65.                 try {
  66.                     String type = jin.next();
  67.                     String name = jin.next();
  68.                     Item item = null;
  69.                     if (type.equals("Pizza")) item = new PizzaItem(name);
  70.                     else item = new ExtraItem(name);
  71.                     if (!jin.hasNextInt()) break;
  72.                     order.addItem(item, jin.nextInt());
  73.                 } catch (Exception e) {
  74.                     System.out.println(e.getClass().getSimpleName());
  75.                 }
  76.             }
  77.             jin.next();
  78.             System.out.println(order.getPrice());
  79.             order.displayOrder();
  80.             while (true) {
  81.                 try {
  82.                     String type = jin.next();
  83.                     String name = jin.next();
  84.                     Item item = null;
  85.                     if (type.equals("Pizza")) item = new PizzaItem(name);
  86.                     else item = new ExtraItem(name);
  87.                     if (!jin.hasNextInt()) break;
  88.                     order.addItem(item, jin.nextInt());
  89.                 } catch (Exception e) {
  90.                     System.out.println(e.getClass().getSimpleName());
  91.                 }
  92.             }
  93.             System.out.println(order.getPrice());
  94.             order.displayOrder();
  95.         }
  96.         if (k == 2) { // test order with removing
  97.             Order order = new Order();
  98.             while (true) {
  99.                 try {
  100.                     String type = jin.next();
  101.                     String name = jin.next();
  102.                     Item item = null;
  103.                     if (type.equals("Pizza")) item = new PizzaItem(name);
  104.                     else item = new ExtraItem(name);
  105.                     if (!jin.hasNextInt()) break;
  106.                     order.addItem(item, jin.nextInt());
  107.                 } catch (Exception e) {
  108.                     System.out.println(e.getClass().getSimpleName());
  109.                 }
  110.             }
  111.             jin.next();
  112.             System.out.println(order.getPrice());
  113.             order.displayOrder();
  114.             while (jin.hasNextInt()) {
  115.                 try {
  116.                     int idx = jin.nextInt();
  117.                     order.removeItem(idx);
  118.                 } catch (Exception e) {
  119.                     System.out.println(e.getClass().getSimpleName());
  120.                 }
  121.             }
  122.             System.out.println(order.getPrice());
  123.             order.displayOrder();
  124.         }
  125.         if (k == 3) { //test locking & exceptions
  126.             Order order = new Order();
  127.             try {
  128.                 order.lock();
  129.             } catch (Exception e) {
  130.                 System.out.println(e.getClass().getSimpleName());
  131.             }
  132.             try {
  133.                 order.addItem(new ExtraItem("Coke"), 1);
  134.             } catch (Exception e) {
  135.                 System.out.println(e.getClass().getSimpleName());
  136.             }
  137.             try {
  138.                 order.lock();
  139.             } catch (Exception e) {
  140.                 System.out.println(e.getClass().getSimpleName());
  141.             }
  142.             try {
  143.                 order.removeItem(0);
  144.             } catch (Exception e) {
  145.                 System.out.println(e.getClass().getSimpleName());
  146.             }
  147.         }
  148.     }
  149.  
  150. }
  151.  
  152. Program output
  153. Sample input
  154. 0 Extra Ketchup
  155. Sample output
  156. 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement