Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.18 KB | None | 0 0
  1. package receipt;
  2.  
  3. import java.time.ZonedDateTime;
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6. import javax.swing.JOptionPane;
  7. import static javax.swing.JOptionPane.showMessageDialog;
  8. import static oracle.jrockit.jfr.events.Bits.intValue;
  9.  
  10. public class Receipt {
  11.  
  12.     public static int ypol = -1;
  13.     ArrayList l;
  14.  
  15.  
  16.  
  17.     public static double checkDouble() { //Συνάρτηση η οποια ελέγχει τον τύπο της εισόδου (σε παράθυρο) μέχρις ότου ο τύπος να είναι double
  18.         double userInput = 0;
  19.         while (true) {
  20.             String s;
  21.             s = JOptionPane.showInputDialog("Enter amount: ");
  22.             try {
  23.                 userInput = Double.parseDouble(s);//μετατρέπει την είσοδο απο String σε double
  24.                 break;
  25.             } catch (NumberFormatException ignore) {
  26.                 showMessageDialog(null, "is not a double. Please enter an amount as a double");//αν η είσοδος που δίνεται δεν είναι double εμφανίζεται το σχετικό μήνυμα
  27.             }
  28.         }
  29.         return userInput;//Επιστρέφει την είσοδο του χρήστη
  30.     }
  31.  
  32.     private static ArrayList RandomList() {
  33.         ArrayList<Integer> lista;
  34.         lista = new ArrayList<>();
  35.         for (int i = 1; i < 100001; i++) {
  36.             lista.add(i);
  37.         }
  38.         Collections.shuffle(lista);
  39.         return lista;
  40.     }
  41.  
  42.     public static int createReceiptNumber(ArrayList lista) {//Συνάρτηση για την δημιουργία μιας τυχαίας απόδειξης
  43.         if (ypol == -1) {
  44.             l=RandomList();
  45.         }
  46.         ypol++;//Αυξάνεται κάθε φορά
  47.         return (int) lista.get(ypol);//Επιστρέφει το στοιχείο της λίστας με θέση όσο το ypol
  48.  
  49.     }
  50.  
  51.     public static String numberToWord(double number) {
  52.         String monades[] = {"", "ena", "duo", "tria", "tessera", "pente", "eksi", "epta", "oktw", "ennea", "deka", "enteka", "dodeka", "deka tria", "deka tessera", "deka pente", "deka eksi", "deka epta", "deka oktw", "deka ennea"
  53.         };//Δημιουργία ενός πίνακα String με τα νούμερα απο 1 μέχρι 19
  54.         String dekades[] = {"miden", "deka", "eikosi", "trianta", "saranta", "penhnta", "eksinta", "evdominta", "ogdonta", "enenhnta"};//Δημιουργία ενός πίνακα String με τα νούμερα των δεκάδων 10,20,30,...,90
  55.         int val = intValue(number);//Δημιουργία της μεταβλητής val που κρατάει το ακέραιο μέρος της τιμής
  56.         Double dval = number - val;//Δημιουργία της μεταβλητής dval που κρατάει το δεκαδικό μέρος της τιμής
  57.         boolean check = false;//Χρησιμοποιώ το check για να γλυτώσω κάποιους ελέγχους
  58.         if (val == 0) {
  59.             if ((dval * 100) == 0) {//Ελέγχει αν το ποσό ειναι 0.0 και βγάζει το αντίστοιχο μήνυμα
  60.                 check = true;
  61.                 return ("Your cost is miden eyrw and miden lepta");
  62.  
  63.             } else {
  64.                 if ((dval * 100) < 20) {//Αν το δεκαδικό μέρος δεν ειναι μηδέν και ειναι μικρότερο απο το 20 βγάζει το αντίστοιχο μήνυμα με την χρήση του πίνακα των μονάδων
  65.                     check = true;
  66.                     return ("Your cost is " + monades[intValue(dval * 100)] + " lepta");
  67.  
  68.                 } else if (!((dval * 100) < 20)) {//Αν το δεκαδικό μερος ειναι μεγαλύτερο του 20 χρησιμοποιείται ο πίνακας και των μονάδων και των δεκάδων
  69.                     check = true;
  70.                     return ("Your cost is " + dekades[intValue(dval * 100) / 10] + " " + monades[intValue(dval * 100) % 10] + " lepta");
  71.                 }
  72.             }
  73.         } else if (val != 0) {
  74.             if ((dval * 100) == 0) {
  75.                 if (val < 20) {//Αν το ακεραιο μέρος είναι μικρότερο του 20 χρησιμοποιείται ο πίνακας με τις μονάδες
  76.                     check = true;
  77.                     return ("Your cost is " + monades[val]
  78.                             + " eyrw kai miden lepta");
  79.  
  80.                 } else {//Αλλιώς μέσω του div 10 και %10 τυπώνουμε τις δεκάδες και τις μονάδες αντίστοιχα
  81.                     check = true;
  82.                     return ("Your cost is " + dekades[val / 10] + " " + monades[val % 10]
  83.                             + " eyrw kai miden lepta");
  84.  
  85.                 }
  86.             }
  87.         }
  88.         if (check == false) {//Έστω ότι στο ακέραιο και στο δεκαδικό μέρος ΔΕΝ υπάρχουν δύο μηδενικά απλώς ελέγχουμε αν είναι μικρότερο του 20
  89.             if ((val < 20 && ((dval * 100) < 20))) {
  90.                 return ("Your cost is " + monades[val]
  91.                         + " eyrw kai " + monades[intValue(dval * 100)] + " lepta");
  92.             } else if (!(val < 20) && ((dval * 100) < 20)) {
  93.                 return ("Your cost is " + dekades[val / 10] + " " + monades[val % 10]
  94.                         + " eyrw kai " + monades[intValue(dval * 100)] + " lepta");
  95.             } else if (val < 20 && !(((dval * 100) < 20))) {
  96.                 return ("Your cost is " + monades[val]
  97.                         + " eyrw kai " + dekades[intValue(dval * 100) / 10] + " " + monades[intValue(dval * 100) % 10] + " lepta");
  98.             } else if (!(val < 20) && !(((dval * 100) < 20))) {
  99.                 return ("Your cost is " + dekades[val / 10] + " " + monades[val % 10]
  100.                         + " eyrw kai " + dekades[intValue(dval * 100) / 10] + " " + monades[intValue(dval * 100) % 10] + " lepta");
  101.             }
  102.         }
  103.         return null;
  104.     }
  105.  
  106.     public static String CheckOut(double pos, int in) {//Συνάρτηση με είσοδο το συνολικο ποσό και τις διελεύσεις και επιστρέφει το κατάλληλο μήνυμα
  107.         int sum = in;
  108.         double sunoliko_poso = 0;
  109.         sunoliko_poso = sunoliko_poso + pos;
  110.         JOptionPane.showMessageDialog(null, "Oi sunolikes dieleuseis einai " + sum + " kai oi sunolikes eispraxeis einai " + sunoliko_poso);
  111.         return null;
  112.  
  113.     }
  114.  
  115.     public static double OutputCost() {//Συνάρτηση που εμφανίζει το τελικό μήνυμα
  116.         double poso = checkDouble();//Δημιουργία μεταβλητής στην οποία θα εκχωρείται η είσοδος αφου γίνεται ο έλεγχος απο την συνάρτηση
  117.         JOptionPane.showMessageDialog(null, "Your amount: " + poso + "\nReceipNum:" + createReceiptNumber(l)//Εμφάνισει του μηνύματος σε παράθυρο
  118.                 + "\non " + ZonedDateTime.now().getMonth() + " "//χρησιμοποιώντας τις παραπάνω συναρτήσεις και της συνάρτησης ZonedDataTime
  119.                 + ZonedDateTime.now().getDayOfMonth() + " "
  120.                 + ZonedDateTime.now().toLocalTime() + " "
  121.                 + ZonedDateTime.now().getZone() + " "
  122.                 + ZonedDateTime.now().getYear() + "\n" + numberToWord(poso));
  123.         return poso;//Επιστρέφω το ποσό διότι θα το χρησιμοποιήσω στην συνάρτηση CheckOut
  124.     }
  125.  
  126.     public static void main(String[] args) {
  127.         int sum = 0;//Δήλωση μετρήτη για τις διελεύσεις και αρχικοποιήση του
  128.         double synol = 0;//Δήλωση μετρητή για το συνολικό ποσό και αρχικοποιήση του
  129.         int option = 0;
  130.         do {
  131.             if (JOptionPane.showConfirmDialog(null, "Thelete na dwsete nea eggrafh?", "WARNING",
  132.                     JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {//Εμφανίζει παράθυρο προς τον χρήστη για το αν θέλει να δώσει άλλη εγγραφή ή όχι
  133.                 double y = OutputCost();//Δήλωση μεταβλητής και εκχώρησει της συνάρτησης OutputCost
  134.                 // yes option
  135.                 sum = sum + 1;//Αυξάνει τον μετρητή διελεύσεων
  136.                 synol = synol + y;//Αυξάνει τον μετρητή τον χρημάτων
  137.  
  138.             } else {
  139.                 //no option
  140.                 break;
  141.             }
  142.         } while (option == JOptionPane.YES_OPTION);//Η επανάληψη θα γίνετε όσο ο χρήστης απαντάει ΝΑΙ στην ερώτηση νέας εγγραφής
  143.         CheckOut(synol, sum);//Καλείται η συνάρτηση Checkout με είσοδο το συνολικό ποσό και το άθροισμα τον διελεύσεων
  144.     }
  145.  
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement