Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package receipt;
- import java.time.ZonedDateTime;
- import java.util.ArrayList;
- import java.util.Collections;
- import javax.swing.JOptionPane;
- import static javax.swing.JOptionPane.showMessageDialog;
- import static oracle.jrockit.jfr.events.Bits.intValue;
- public class Receipt {
- public static int ypol = -1;
- ArrayList l;
- Receipt(){l = RandomList();}
- public static double checkDouble() { //Συνάρτηση η οποια ελέγχει τον τύπο της εισόδου (σε παράθυρο) μέχρις ότου ο τύπος να είναι double
- double userInput = 0;
- while (true) {
- String s;
- s = JOptionPane.showInputDialog("Enter amount: ");
- try {
- userInput = Double.parseDouble(s);//μετατρέπει την είσοδο απο String σε double
- break;
- } catch (NumberFormatException ignore) {
- showMessageDialog(null, "is not a double. Please enter an amount as a double");//αν η είσοδος που δίνεται δεν είναι double εμφανίζεται το σχετικό μήνυμα
- }
- }
- return userInput;//Επιστρέφει την είσοδο του χρήστη
- }
- private static ArrayList RandomList() {
- ArrayList<Integer> lista;
- lista = new ArrayList<>();
- for (int i = 1; i < 100001; i++) {
- lista.add(i);
- }
- Collections.shuffle(lista);
- return lista;
- }
- public static int createReceiptNumber(ArrayList lista) {//Συνάρτηση για την δημιουργία μιας τυχαίας απόδειξης
- ypol++;//Αυξάνεται κάθε φορά
- return (int) lista.get(ypol);//Επιστρέφει το στοιχείο της λίστας με θέση όσο το ypol
- }
- public static String numberToWord(double number) {
- 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"
- };//Δημιουργία ενός πίνακα String με τα νούμερα απο 1 μέχρι 19
- String dekades[] = {"miden", "deka", "eikosi", "trianta", "saranta", "penhnta", "eksinta", "evdominta", "ogdonta", "enenhnta"};//Δημιουργία ενός πίνακα String με τα νούμερα των δεκάδων 10,20,30,...,90
- int val = intValue(number);//Δημιουργία της μεταβλητής val που κρατάει το ακέραιο μέρος της τιμής
- Double dval = number - val;//Δημιουργία της μεταβλητής dval που κρατάει το δεκαδικό μέρος της τιμής
- boolean check = false;//Χρησιμοποιώ το check για να γλυτώσω κάποιους ελέγχους
- if (val == 0) {
- if ((dval * 100) == 0) {//Ελέγχει αν το ποσό ειναι 0.0 και βγάζει το αντίστοιχο μήνυμα
- check = true;
- return ("Your cost is miden eyrw and miden lepta");
- } else {
- if ((dval * 100) < 20) {//Αν το δεκαδικό μέρος δεν ειναι μηδέν και ειναι μικρότερο απο το 20 βγάζει το αντίστοιχο μήνυμα με την χρήση του πίνακα των μονάδων
- check = true;
- return ("Your cost is " + monades[intValue(dval * 100)] + " lepta");
- } else if (!((dval * 100) < 20)) {//Αν το δεκαδικό μερος ειναι μεγαλύτερο του 20 χρησιμοποιείται ο πίνακας και των μονάδων και των δεκάδων
- check = true;
- return ("Your cost is " + dekades[intValue(dval * 100) / 10] + " " + monades[intValue(dval * 100) % 10] + " lepta");
- }
- }
- } else if (val != 0) {
- if ((dval * 100) == 0) {
- if (val < 20) {//Αν το ακεραιο μέρος είναι μικρότερο του 20 χρησιμοποιείται ο πίνακας με τις μονάδες
- check = true;
- return ("Your cost is " + monades[val]
- + " eyrw kai miden lepta");
- } else {//Αλλιώς μέσω του div 10 και %10 τυπώνουμε τις δεκάδες και τις μονάδες αντίστοιχα
- check = true;
- return ("Your cost is " + dekades[val / 10] + " " + monades[val % 10]
- + " eyrw kai miden lepta");
- }
- }
- }
- if (check == false) {//Έστω ότι στο ακέραιο και στο δεκαδικό μέρος ΔΕΝ υπάρχουν δύο μηδενικά απλώς ελέγχουμε αν είναι μικρότερο του 20
- if ((val < 20 && ((dval * 100) < 20))) {
- return ("Your cost is " + monades[val]
- + " eyrw kai " + monades[intValue(dval * 100)] + " lepta");
- } else if (!(val < 20) && ((dval * 100) < 20)) {
- return ("Your cost is " + dekades[val / 10] + " " + monades[val % 10]
- + " eyrw kai " + monades[intValue(dval * 100)] + " lepta");
- } else if (val < 20 && !(((dval * 100) < 20))) {
- return ("Your cost is " + monades[val]
- + " eyrw kai " + dekades[intValue(dval * 100) / 10] + " " + monades[intValue(dval * 100) % 10] + " lepta");
- } else if (!(val < 20) && !(((dval * 100) < 20))) {
- return ("Your cost is " + dekades[val / 10] + " " + monades[val % 10]
- + " eyrw kai " + dekades[intValue(dval * 100) / 10] + " " + monades[intValue(dval * 100) % 10] + " lepta");
- }
- }
- return null;
- }
- public static String CheckOut(double pos, int in) {//Συνάρτηση με είσοδο το συνολικο ποσό και τις διελεύσεις και επιστρέφει το κατάλληλο μήνυμα
- int sum = in;
- double sunoliko_poso = 0;
- sunoliko_poso = sunoliko_poso + pos;
- JOptionPane.showMessageDialog(null, "Oi sunolikes dieleuseis einai " + sum + " kai oi sunolikes eispraxeis einai " + sunoliko_poso);
- return null;
- }
- public static double OutputCost() {//Συνάρτηση που εμφανίζει το τελικό μήνυμα
- double poso = checkDouble();//Δημιουργία μεταβλητής στην οποία θα εκχωρείται η είσοδος αφου γίνεται ο έλεγχος απο την συνάρτηση
- JOptionPane.showMessageDialog(null, "Your amount: " + poso + "\nReceipNum:" + createReceiptNumber(l)//Εμφάνισει του μηνύματος σε παράθυρο
- + "\non " + ZonedDateTime.now().getMonth() + " "//χρησιμοποιώντας τις παραπάνω συναρτήσεις και της συνάρτησης ZonedDataTime
- + ZonedDateTime.now().getDayOfMonth() + " "
- + ZonedDateTime.now().toLocalTime() + " "
- + ZonedDateTime.now().getZone() + " "
- + ZonedDateTime.now().getYear() + "\n" + numberToWord(poso));
- return poso;//Επιστρέφω το ποσό διότι θα το χρησιμοποιήσω στην συνάρτηση CheckOut
- }
- public static void main(String[] args) {
- int sum = 0;//Δήλωση μετρήτη για τις διελεύσεις και αρχικοποιήση του
- double synol = 0;//Δήλωση μετρητή για το συνολικό ποσό και αρχικοποιήση του
- int option = 0;
- do {
- if (JOptionPane.showConfirmDialog(null, "Thelete na dwsete nea eggrafh?", "WARNING",
- JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {//Εμφανίζει παράθυρο προς τον χρήστη για το αν θέλει να δώσει άλλη εγγραφή ή όχι
- double y = OutputCost();//Δήλωση μεταβλητής και εκχώρησει της συνάρτησης OutputCost
- // yes option
- sum = sum + 1;//Αυξάνει τον μετρητή διελεύσεων
- synol = synol + y;//Αυξάνει τον μετρητή τον χρημάτων
- } else {
- //no option
- break;
- }
- } while (option == JOptionPane.YES_OPTION);//Η επανάληψη θα γίνετε όσο ο χρήστης απαντάει ΝΑΙ στην ερώτηση νέας εγγραφής
- CheckOut(synol, sum);//Καλείται η συνάρτηση Checkout με είσοδο το συνολικό ποσό και το άθροισμα τον διελεύσεων
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement