Advertisement
Guest User

Untitled

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