Advertisement
Guest User

Untitled

a guest
Nov 5th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 32.64 KB | None | 0 0
  1. public class Main {
  2.  
  3.     public static void main(String[] args) {
  4.  
  5.         Controller controller = new Controller();
  6.  
  7.         controller.velkommen();
  8.  
  9.  
  10.     }
  11.  
  12. }
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. import java.util.ArrayList;
  22.  
  23. public class Cyklist {
  24.  
  25.     private String username;
  26.     private int pincode;
  27.     private String hold;
  28.     private int antalKilometerCyklet;
  29.     public ArrayList<Milepael> milepaele = new ArrayList<>();
  30.  
  31.  
  32.  
  33.     public Cyklist(String username, int pincode, Teams hold) {
  34.         this.username = username;
  35.         this.pincode = pincode;
  36.         this.hold = hold.name;
  37.         this.milepaele = milepaele;
  38.     }
  39.  
  40.     public ArrayList<Milepael> getMilepaele() {
  41.         return milepaele;
  42.     }
  43.  
  44.     public void setMilepaele(ArrayList<Milepael> milepaele) {
  45.         this.milepaele = milepaele;
  46.     }
  47.  
  48.     public String getUsername() {
  49.         return username;
  50.     }
  51.  
  52.     public void setUsername(String username) {
  53.         this.username = username;
  54.     }
  55.  
  56.     public int getPincode() {
  57.         return pincode;
  58.     }
  59.  
  60.     public void setPincode(int pincode) {
  61.         this.pincode = pincode;
  62.     }
  63.  
  64.     public String getHold() {
  65.         return hold;
  66.     }
  67.  
  68.     public void setHold(String hold) {
  69.         this.hold = hold;
  70.     }
  71.  
  72.     public int getAntalKilometerCyklet() {
  73.         return antalKilometerCyklet;
  74.     }
  75.  
  76.     public void setAntalKilometerCyklet(int antalKilometerCyklet) {
  77.         this.antalKilometerCyklet += antalKilometerCyklet;
  78.     }
  79. }
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89. import java.util.ArrayList;
  90.  
  91. public class Teams {
  92.  
  93.     public String name;
  94.     public int antalKmSamlet;
  95.  
  96.     public ArrayList<Cyklist> cyklister = new ArrayList<>();
  97.     public ArrayList<Milepael> holdMilepaele = new ArrayList<>();
  98.  
  99.  
  100.     public ArrayList<Milepael> getHoldMilepaele() {
  101.         return holdMilepaele;
  102.     }
  103.  
  104.     public void setHoldMilepaele(ArrayList<Milepael> holdMilepaele) {
  105.         this.holdMilepaele = holdMilepaele;
  106.     }
  107.  
  108.     public int getAntalKmSamlet() {
  109.         return antalKmSamlet;
  110.     }
  111.  
  112.     public void setAntalKmSamlet(int antalKmSamlet) {
  113.         this.antalKmSamlet = antalKmSamlet;
  114.     }
  115.  
  116.     public Teams() {
  117.         this.cyklister = cyklister;
  118.         this.holdMilepaele = holdMilepaele;
  119.         this.antalKmSamlet = antalKmSamlet;
  120.  
  121.     }
  122.  
  123.     public Teams(String name) {
  124.         this.name = name;
  125.     }
  126.  
  127.     public String getName() {
  128.         return name;
  129.     }
  130.  
  131.     public void setName(String name) {
  132.         this.name = name;
  133.     }
  134.  
  135.     public ArrayList<Cyklist> getCyklister() {
  136.         return cyklister;
  137.     }
  138.  
  139.     public void setCyklister(ArrayList<Cyklist> cyklister) {
  140.         this.cyklister = cyklister;
  141.     }
  142. }
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154. import java.util.ArrayList;
  155.  
  156. public class Data {
  157.  
  158.     public ArrayList<Teams> hold = new ArrayList<>();
  159.     public ArrayList<Cyklist> alleCyklister = new ArrayList<>();
  160.     public ArrayList<Milepael> milepaele = new ArrayList<>();
  161.  
  162.  
  163.     public void generateData() {
  164.  
  165.         Teams teamSjaelland = new Teams("Team Sjælland");
  166.         Teams teamJylland = new Teams("Team Jylland");
  167.         Teams teamFyn = new Teams("Team Fyn");
  168.  
  169.         hold.add(teamJylland);
  170.         hold.add(teamSjaelland);
  171.         hold.add(teamFyn);
  172.  
  173.        /* Cyklist admin = new Cyklist("Mathias",1234,teamSjaelland);
  174.         Cyklist admin1 = new Cyklist("Peter",1234,teamSjaelland);
  175.         Cyklist admin2 = new Cyklist("Anna",1234,teamSjaelland);
  176.         Cyklist admin3 = new Cyklist("Niels",1234,teamSjaelland);*/
  177.  
  178.        /* teamSjaelland.cyklister.add(admin);
  179.         teamSjaelland.cyklister.add(admin1);
  180.         teamSjaelland.cyklister.add(admin2);
  181.         teamSjaelland.cyklister.add(admin3);
  182.  
  183.         alleCyklister.add(admin);
  184.         alleCyklister.add(admin1);
  185.         alleCyklister.add(admin2);
  186.         alleCyklister.add(admin3);
  187.  
  188.         admin1.setAntalKilometerCyklet(100);
  189.         admin2.setAntalKilometerCyklet(757);
  190.         admin3.setAntalKilometerCyklet(754);
  191. */
  192.     }
  193.  
  194.     public void generateMilepaele(int holdNummer) {
  195.  
  196.         Milepael milepael1 = new Milepael("Roskilde",30);
  197.         Milepael milepael2 = new Milepael("Odense",160);
  198.         Milepael milepael3 = new Milepael("Aabenraa",290);
  199.         Milepael milepael4 = new Milepael("Hamburg",380);
  200.         Milepael milepael5 = new Milepael("Hannover",530);
  201.  
  202.         milepaele.add(milepael1);
  203.         milepaele.add(milepael2);
  204.         milepaele.add(milepael3);
  205.         milepaele.add(milepael4);
  206.         milepaele.add(milepael5);
  207.  
  208.         Milepael holdMilepael1 = new Milepael("Hamburg",380);
  209.         Milepael holdMilepael2 = new Milepael("Berlin",670);
  210.         Milepael holdMilepael3 = new Milepael("Frankfurt",1270);
  211.         Milepael holdMilepael4 = new Milepael("Luxembourg",1510);
  212.         Milepael holdMilepael5 = new Milepael("Paris",1880);
  213.  
  214.         hold.get(holdNummer).holdMilepaele.add(holdMilepael1);
  215.         hold.get(holdNummer).holdMilepaele.add(holdMilepael2);
  216.         hold.get(holdNummer).holdMilepaele.add(holdMilepael3);
  217.         hold.get(holdNummer).holdMilepaele.add(holdMilepael4);
  218.         hold.get(holdNummer).holdMilepaele.add(holdMilepael5);
  219.  
  220.     }
  221.  
  222.     public ArrayList<Cyklist> getAlleCyklister() {
  223.         return alleCyklister;
  224.     }
  225.  
  226.     public void setAlleCyklister(ArrayList<Cyklist> alleCyklister) {
  227.         this.alleCyklister = alleCyklister;
  228.     }
  229.  
  230.     public ArrayList<Milepael> getMilepaele() {
  231.         return milepaele;
  232.     }
  233.  
  234.     public void setMilepaele(ArrayList<Milepael> milepaele) {
  235.         this.milepaele = milepaele;
  236.     }
  237.  
  238.     public Data() {
  239.         this.hold = hold;
  240.     }
  241.  
  242.     public ArrayList<Teams> getHold() {
  243.         return hold;
  244.     }
  245.  
  246.     public void setHold(ArrayList<Teams> hold) {
  247.         this.hold = hold;
  248.     }
  249. }
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261. import java.util.*;
  262.  
  263. public class Controller {
  264.     int userChoice;
  265.     Scanner input = new Scanner(System.in);
  266.  
  267.     Cyklist currentCyklist; // sættes senere så vi kender den nuværende cyklist
  268.  
  269.     Data db = new Data(); // opretter en instans af vores data.
  270.  
  271.     public void velkommen() {
  272.  
  273.         db.generateData(); //opretter de tre hold og tilføjer dem til arraylisten
  274.         startside();
  275.  
  276.     }
  277.  
  278.  
  279.     public void startside() {
  280.  
  281.  
  282.         System.out.println("Velkommen til 'Vi cykler på arbejde'. Vælg venligst din ønskede funktion: ");
  283.  
  284.         System.out.println("1. Opret cyklist");
  285.         System.out.println("2. Login");
  286.         userChoice = input.nextInt();
  287.  
  288.         switch (userChoice) {
  289.             case 1:
  290.                 opretCyklistMenu();
  291.                 break;
  292.             case 2:
  293.                 login();
  294.                 break;
  295.             default:
  296.                 break;
  297.         }
  298.     }
  299.  
  300.     public void opretCyklistMenu() {
  301.  
  302.         String brugernavn;
  303.         int pincode;
  304.         int holdValg;
  305.         String hold;
  306.  
  307.         System.out.println("Indtast dit ønskede brugernavn");
  308.         brugernavn = input.next();
  309.  
  310.         for (int i = 0; i < db.alleCyklister.size(); i++) { //tjekker om brugernavnet allerede findes i arraylisten over alle cyklister
  311.             if (db.alleCyklister.get(i).getUsername().equalsIgnoreCase(brugernavn)) { //hvis det findes, skal brugeren indtaste et nyt.
  312.                 do {
  313.                     System.out.println("Brugernavnet eksisterer allerede. Vælg venligst et andet. ");
  314.                     brugernavn = input.next();
  315.                     i = 0;
  316.                 } while (db.alleCyklister.get(i).getUsername().equalsIgnoreCase(brugernavn));
  317.             }
  318.  
  319.         }
  320.  
  321.  
  322.         System.out.println("Indtast din ønskede pinkode (4 tal): ");
  323.         pincode = input.nextInt();
  324.  
  325.  
  326.         System.out.println("Du er nu oprettet. Brugernavn: "+brugernavn+". Pinkode: "+pincode);
  327.         System.out.println("Hvilket hold vil du gerne cykle for?");
  328.  
  329.         System.out.println("1. Team Jylland");
  330.         System.out.println("2. Team Sjælland");
  331.         System.out.println("3. Team Fyn");
  332.  
  333.         holdValg = input.nextInt();
  334.  
  335.         if (holdValg == 1) {
  336.             hold = "Team Jylland";
  337.         } else if (holdValg == 2) {
  338.             hold = "Team Sjælland";
  339.         } else {
  340.             hold = "Team Fyn";
  341.         }
  342.  
  343.  
  344.         opretCyklist(brugernavn,pincode,holdValg); // kalder funktionen opretCyklist() med de tre parametre
  345.  
  346.         System.out.println("Du valgte "+hold+". Du bliver nu ført tilbage til login. \n");
  347.  
  348.         startside(); //fører tilbage til startsiden. Brugeren kan her logge ind eller oprette en ny bruger.
  349.  
  350.     }
  351.  
  352.  
  353.  
  354.     public void opretCyklist(String brugernavn, int pinkode, int hold) {
  355.  
  356.         Teams holdValg; //sætter brugerens hold til det korrekte. Tager et hold fra arraylisten med hold.
  357.  
  358.         if (hold == 1) {
  359.             holdValg = db.hold.get(0); //Jylland er på indeks 0
  360.         } else if (hold == 2) {
  361.             holdValg = db.hold.get(1); //Sjælland er på indeks 1
  362.         } else {
  363.             holdValg = db.hold.get(2); //Fyn er på indeks 2
  364.         }
  365.  
  366.         Cyklist nyCyklist = new Cyklist(brugernavn,pinkode,holdValg); //opretter en ny cyklist og sætter deres hold.
  367.  
  368.         db.hold.get(hold-1).cyklister.add(nyCyklist); //tilføjer til brugeren til den respektive arrayliste.trækker en fra da arraylisten starter ved indeks 0.
  369.         db.alleCyklister.add(nyCyklist); //tilføjer cyklisten til en arrayliste over alle cyklister.
  370.  
  371.  
  372.     }
  373.  
  374.     public void login() {
  375.  
  376.         while (currentCyklist == null) { //når brugeren ikke er logget ind vises login menuen.
  377.  
  378.             String brugernavn;
  379.             int password;
  380.  
  381.  
  382.             System.out.println("Indtast venligst dit brugernavn:");
  383.             brugernavn = input.next();
  384.             System.out.println("Indtast venligst din pinkode");
  385.             password = input.nextInt();
  386.  
  387.             authUser(brugernavn,password); //tjekker om brugeren findes i en af de tre arraylister
  388.  
  389.             if (currentCyklist != null) {
  390.                 System.out.println("Du er nu logget ind. \n");
  391.                 menu();
  392.             } else {
  393.                 System.out.println("Du indtasede et forkert brugernavn eller pinkode. Prøv igen \n");
  394.             }
  395.  
  396.         }
  397.  
  398.  
  399.     }
  400.  
  401.     public Cyklist authUser(String brugernavn, int password) {
  402.  
  403.  
  404.         for (Cyklist cyklist : db.alleCyklister) { //tjekker i arraylisten over alle brugere om brugeren findes.
  405.             if (cyklist.getUsername().equalsIgnoreCase(brugernavn) && cyklist.getPincode() == password) {
  406.                 currentCyklist = cyklist; //hvis brugeren findes sættes brugeren til currentCyklist og programmet kan fortsætte
  407.                 return cyklist;
  408.             }
  409.         }
  410.  
  411.  
  412.         return null;
  413.     }
  414.  
  415.     public void menu() {
  416.  
  417.         boolean loggetInd = true; //bruges senere til at forlade menuen
  418.         int brugerValg;
  419.  
  420.         while (loggetInd == true) {
  421.  
  422.             System.out.println("Velkommen til programmet "+currentCyklist.getUsername()+". Vælg din ønskede funktion:");
  423.  
  424.             System.out.println("1. Indtast antal kilometer cyklet");
  425.             System.out.println("2. Se rangliste individuelt");
  426.             System.out.println("3. Se rangliste for holdene");
  427.             System.out.println("4. Log ud");
  428.             System.out.println("5. Slet din bruger");
  429.  
  430.             brugerValg = input.nextInt();
  431.  
  432.             switch (brugerValg) {
  433.                 case 1:
  434.                     indtastKilometer();
  435.                     break;
  436.                 case 2:
  437.                     individuelRangliste();
  438.                     break;
  439.                 case 3:
  440.                     holdRanglisteMenu();
  441.                     break;
  442.                 case 4:
  443.                     logUd();
  444.                     loggetInd = false;
  445.                     break;
  446.                 case 5:
  447.                     sletBruger();
  448.             }
  449.  
  450.         }
  451.  
  452.  
  453.  
  454.     }
  455.  
  456.  
  457.     public void logUd() {
  458.         System.out.println("Du er nu logget ud. \n");
  459.         currentCyklist = null;
  460.         startside();
  461.     }
  462.  
  463.     public void indtastKilometer() {
  464.         int antalKm;
  465.         int valg;
  466.  
  467.         System.out.println("Hvor langt har du cyklet? Skriv i antal kilometer");
  468.         antalKm = input.nextInt();
  469.  
  470.         System.out.println("Godt gået! Du har cyklet "+antalKm+"km. Du har nu 2 muligheder:");
  471.         System.out.println("1. Indsend normalt");
  472.         System.out.println("2. Prøve lykken (vinde eller miste km).");
  473.         valg = input.nextInt();
  474.         if (valg == 1) {
  475.             currentCyklist.setAntalKilometerCyklet(antalKm); //tjek setteren. Den tilføjer til original værdi.
  476.             System.out.println("Der blevet tilføjet "+antalKm+"km til din profil! \n");
  477.         } else {
  478.  
  479.             int nyAntalKm;
  480.             Random ran = new Random();
  481.             int x = ran.nextInt(4)+1; //x bliver enten 1,2,3 eller 4.
  482.             System.out.println(x);
  483.  
  484.             if (x > 2) { // hvis x bliver 3 eller 4, mister 5km.
  485.                 nyAntalKm = antalKm - 5;
  486.                 currentCyklist.setAntalKilometerCyklet(nyAntalKm);
  487.                 System.out.println("Desværre! Der er blevet tilføjet "+nyAntalKm+"km til din profil. (5km trukket fra) \n");
  488.             } else if (x <= 2) { // hvis x bliver 1 eller 2, tilføjes cyklisten + 5km.
  489.                 nyAntalKm = antalKm + 5;
  490.                 currentCyklist.setAntalKilometerCyklet(nyAntalKm);
  491.                 System.out.println("Sådan! Der er blevet tilføjet "+nyAntalKm+"km til din profil. (5km tilføjet) \n");
  492.             }
  493.  
  494.  
  495.         }
  496.  
  497.     }
  498.  
  499.     public void individuelRangliste() {
  500.  
  501.         boolean seRangliste = true;
  502.         int brugerValg;
  503.  
  504.         while (seRangliste = true) {
  505.  
  506.             System.out.println("Hvad ønsker du at se?");
  507.             System.out.println("1. Hvor langt du har kørt.");
  508.             System.out.println("2. Dine nærmeste konkurrenter.");
  509.             System.out.println("3. Dine milepæle.");
  510.             System.out.println("4. Gå tilbage til menuen.");
  511.  
  512.             brugerValg = input.nextInt();
  513.             input.nextLine();
  514.  
  515.             switch (brugerValg) {
  516.                 case 1:
  517.                     antalKilometerCyklet();
  518.                     break;
  519.                 case 2:
  520.                     rangeringMenu();
  521.                     break;
  522.                 case 3:
  523.                     milepaele();
  524.                     break;
  525.                 case 4:
  526.                     seRangliste = false;
  527.                     menu();
  528.                     break;
  529.  
  530.                 default:
  531.                     break;
  532.             }
  533.  
  534.         }
  535.  
  536.  
  537.  
  538.     }
  539.  
  540.     public void antalKilometerCyklet() {
  541.  
  542.         System.out.println("Du har kørt "+currentCyklist.getAntalKilometerCyklet()+"km i alt! \n");
  543.     }
  544.  
  545.     public void rankPåHold(int holdNummer) {
  546.  
  547.         int placering;
  548.         int kilometerForskel;
  549.         int kilometerForskel2;
  550.  
  551.         ArrayList<Cyklist> kopiListe = new ArrayList<>(db.hold.get(holdNummer).cyklister); //opretter en kopiliste til at rangere cyklisterne.
  552.  
  553.  
  554.         Collections.sort(kopiListe,new MyComparator()); //sorterer arraylisten så personen med højeste scorer er først
  555.  
  556.         placering = kopiListe.indexOf(currentCyklist);
  557.         placering = placering + 1; // lægger en til pga. arraylisten starter ved indeks 0
  558.  
  559.         System.out.println("I forhold til alle på dit hold ("+currentCyklist.getHold()+") er din nuværende placering nr. "+placering+" ud af i alt "+kopiListe.size()+" personer på dit hold.\n");
  560.  
  561.         if (placering == 1) {
  562.  
  563.  
  564.             if (kopiListe.size() > 1) {
  565.                 kilometerForskel = currentCyklist.getAntalKilometerCyklet() - kopiListe.get(placering).getAntalKilometerCyklet();
  566.                 System.out.println("Sådan! Du er nummer 1, men pas på, "+kopiListe.get(placering).getUsername()+" er ved at indhente dig. Personen mangler kun "+kilometerForskel+"km.");
  567.             } else {
  568.                 System.out.println("Du er den eneste på dit hold! Skynd dig at få nogle flere med!");
  569.             }
  570.  
  571.         } else if (placering == kopiListe.size()) {
  572.             kilometerForskel = kopiListe.get(placering-2).getAntalKilometerCyklet() - currentCyklist.getAntalKilometerCyklet();
  573.             System.out.println("Du er på sidste pladsen på dit hold.. Men ikke lad dig slå ud, du mangler kun "+kilometerForskel+"km for at indhente "+kopiListe.get(placering-2).getUsername()+".");
  574.         } else {
  575.             kilometerForskel = kopiListe.get(placering-2).getAntalKilometerCyklet() - currentCyklist.getAntalKilometerCyklet(); //antal af km til personen der er foran på ranglisten
  576.             kilometerForskel2 = currentCyklist.getAntalKilometerCyklet() - kopiListe.get(placering).getAntalKilometerCyklet(); //antal af km til personen der er bagved på ranglisten
  577.             System.out.println("Du mangler kun at cykle "+kilometerForskel+"km for at indhente "+kopiListe.get(placering-2).getUsername()+" - go for it!");
  578.             System.out.println("Men pas på, "+kopiListe.get(placering).getUsername()+" er ved at indhente dig. Personen mangler kun "+kilometerForskel2+"km.");
  579.         }
  580.  
  581.         int i = 0;
  582.  
  583.         System.out.println("\nRanglisten er som følger: ");
  584.  
  585.         for (Cyklist cyklist : kopiListe) {
  586.             i++;
  587.             System.out.println(+i+". "+cyklist.getUsername()+", "+cyklist.getAntalKilometerCyklet()+"km");
  588.         }
  589.         System.out.println("\n");
  590.  
  591.  
  592.     }
  593.  
  594.     private int holdNummer() {
  595.  
  596.         int holdNr;
  597.  
  598.         if (currentCyklist.getHold().equalsIgnoreCase("Team Sjælland")) {
  599.             holdNr = 1;
  600.         } else if (currentCyklist.getHold().equalsIgnoreCase("Team Jylland")) {
  601.             holdNr = 0;
  602.         } else {
  603.             holdNr = 2;
  604.         }
  605.  
  606.         return holdNr;
  607.     }
  608.  
  609.     public void rangeringMenu() {
  610.         int choice;
  611.  
  612.         System.out.println("Vælg hvilken rangliste du ønsker at se:");
  613.         System.out.println("1. Din rangering i forhold til dit hold");
  614.         System.out.println("2. Din rangering i forhold til alle tilmeldte cyklister");
  615.         choice = input.nextInt();
  616.  
  617.         if (choice == 1) {
  618.             rankPåHold(holdNummer());
  619.         } else {
  620.             rankSamlet();
  621.         }
  622.     }
  623.  
  624.     public void rankSamlet() {
  625.  
  626.         int placering;
  627.         int kilometerForskel;
  628.         int kilometerForskel2;
  629.  
  630.         ArrayList<Cyklist> kopiListeSamlet = new ArrayList<>(db.alleCyklister); //opretter en kopiliste til at rangere alle cyklisterne.
  631.  
  632.  
  633.         Collections.sort(kopiListeSamlet,new MyComparator()); //sorterer arraylisten så personen med højeste scorer er først
  634.  
  635.         placering = kopiListeSamlet.indexOf(currentCyklist);
  636.         placering = placering + 1; // lægger en til pga. arraylisten starter ved indeks 0
  637.  
  638.         System.out.println("I forhold til alle der er oprettet som bruger i programmet, er din nuværende placering nr. "+placering+" ud af i alt "+kopiListeSamlet.size()+" personer.\n");
  639.  
  640.         if (placering == 1) {
  641.  
  642.  
  643.             if (kopiListeSamlet.size() > 1) {
  644.                 kilometerForskel = currentCyklist.getAntalKilometerCyklet() - kopiListeSamlet.get(placering).getAntalKilometerCyklet(); //antal kilometer til personen på plads nr. 2
  645.                 System.out.println("Sådan! Du er nummer 1, men pas på, "+kopiListeSamlet.get(placering).getUsername()+" er ved at indhente dig. Personen mangler kun "+kilometerForskel+"km.");
  646.             } else {
  647.                 System.out.println("Du er den der er tilmeldt! Skynd dig at få nogle flere med!");
  648.             }
  649.  
  650.         } else if (placering == kopiListeSamlet.size()) {
  651.             kilometerForskel = kopiListeSamlet.get(placering-2).getAntalKilometerCyklet() - currentCyklist.getAntalKilometerCyklet(); //antal kilometer til personen der er foran
  652.             System.out.println("Du er på sidste pladsen af alle deltagere... Men ikke lad dig slå ud, du mangler kun "+kilometerForskel+"km for at indhente "+kopiListeSamlet.get(placering-2).getUsername()+".");
  653.         } else {
  654.             kilometerForskel = kopiListeSamlet.get(placering-2).getAntalKilometerCyklet() - currentCyklist.getAntalKilometerCyklet(); //antal af km til personen der er foran på ranglisten
  655.             kilometerForskel2 = currentCyklist.getAntalKilometerCyklet() - kopiListeSamlet.get(placering).getAntalKilometerCyklet(); //antal af km til personen der er bagved på ranglisten
  656.             System.out.println("Du mangler kun at cykle "+kilometerForskel+"km for at indhente "+kopiListeSamlet.get(placering-2).getUsername()+" - go for it!");
  657.             System.out.println("Men pas på, "+kopiListeSamlet.get(placering).getUsername()+" er ved at indhente dig. Personen mangler kun "+kilometerForskel2+"km.");
  658.         }
  659.  
  660.         int i = 0;
  661.  
  662.         System.out.println("\nRanglisten er som følger: ");
  663.  
  664.         for (Cyklist cyklist : kopiListeSamlet) {
  665.             i++;
  666.             System.out.println(+i+". "+cyklist.getUsername()+", "+cyklist.getAntalKilometerCyklet()+"km");
  667.         }
  668.         System.out.println("\n");
  669.  
  670.     }
  671.  
  672.     public void milepaele() {
  673.  
  674.         db.generateMilepaele(holdNummer());
  675.  
  676.         if (currentCyklist.getAntalKilometerCyklet() > 530) {
  677.             System.out.println("Du har opnået milepælen: "+db.milepaele.get(4).navn+"\n");
  678.             currentCyklist.milepaele.add(db.milepaele.get(4));
  679.         }
  680.         else if (currentCyklist.getAntalKilometerCyklet() > 380) {
  681.             System.out.println("Du har opnået milepælen: "+db.milepaele.get(3).navn+"\n");
  682.             currentCyklist.milepaele.add(db.milepaele.get(3));
  683.         }
  684.         else if (currentCyklist.getAntalKilometerCyklet() > 290) {
  685.             System.out.println("Du har opnået milepælen: "+db.milepaele.get(2).navn+"\n");
  686.             currentCyklist.milepaele.add(db.milepaele.get(2));
  687.         }
  688.         else if (currentCyklist.getAntalKilometerCyklet() > 160) {
  689.             System.out.println("Du har opnået milepælen: "+db.milepaele.get(1).navn+"\n");
  690.             currentCyklist.milepaele.add(db.milepaele.get(1));
  691.         } else if (currentCyklist.getAntalKilometerCyklet() > 30) {
  692.             System.out.println("Du har opnået milepælen: "+db.milepaele.get(0).navn+"\n");
  693.             currentCyklist.milepaele.add(db.milepaele.get(1));
  694.         } else if (currentCyklist.getAntalKilometerCyklet() < 30) {
  695.             System.out.println("Du har endnu ikke opnået nogen milepæl.. Keep going!\n");
  696.  
  697.         }
  698.  
  699.     }
  700.  
  701.     public void holdRanglisteMenu() {
  702.         int choice;
  703.  
  704.         System.out.println("Hvad vil du gerne se?");
  705.         System.out.println("1. Holdets medlemmer");
  706.         System.out.println("2. Holdets rangliste");
  707.         System.out.println("3. Holdets milepæle");
  708.         System.out.println("4. Rangliste for alle hold");
  709.  
  710.         choice = input.nextInt();
  711.  
  712.         switch (choice) {
  713.             case 1:
  714.                 holdetsMedlemmer(holdNummer());
  715.                 break;
  716.             case 2:
  717.                 holdRangliste(holdNummer());
  718.                 break;
  719.             case 3:
  720.                 holdMilepaele(holdNummer());
  721.                 break;
  722.             case 4:
  723.                 rangListeForHold();
  724.             default:
  725.                 break;
  726.         }
  727.     }
  728.  
  729.     public void holdetsMedlemmer(int holdnummer) {
  730.  
  731.         System.out.println("Følgende er med på dit hold ("+currentCyklist.getHold()+"):");
  732.         for (Cyklist cyklist : db.hold.get(holdnummer).cyklister) {
  733.             System.out.println(cyklist.getUsername());
  734.         }
  735.         System.out.println("\n");
  736.  
  737.     }
  738.  
  739.     public void holdRangliste(int holdNummer) {
  740.         ArrayList<Cyklist> kopiListe = new ArrayList<>(db.hold.get(holdNummer).cyklister); //opretter en kopiliste til at rangere cyklisterne.
  741.         Collections.sort(kopiListe,new MyComparator()); //sorterer arraylisten så personen med højeste scorer er først
  742.  
  743.         int i = 0;
  744.  
  745.         System.out.println("\nRanglisten er som følger: ");
  746.  
  747.         for (Cyklist cyklist : kopiListe) {
  748.             i++;
  749.             System.out.println(+i+". "+cyklist.getUsername()+", "+cyklist.getAntalKilometerCyklet()+"km");
  750.         }
  751.         System.out.println("\n");
  752.  
  753.  
  754.     }
  755.  
  756.     public void holdMilepaele(int holdNummer) {
  757.  
  758.         db.generateMilepaele(holdNummer);
  759.  
  760.         int samletAntalKm = 0;
  761.         int antalKmTilNæsteMilepael;
  762.  
  763.         for (int i = 0; i < db.hold.get(holdNummer).cyklister.size(); i++) {
  764.             samletAntalKm = db.hold.get(holdNummer).cyklister.get(i).getAntalKilometerCyklet() + samletAntalKm; //sammenlægger alle cyklister på holds antal kilometet
  765.         }
  766.  
  767.         db.hold.get(holdNummer).setAntalKmSamlet(samletAntalKm);
  768.  
  769.         System.out.println("\n");
  770.  
  771.         if (samletAntalKm > 1880) {
  772.             System.out.println("Jeres hold har opnået milepælen: "+db.hold.get(holdNummer).holdMilepaele.get(4).getNavn()+"\n");
  773.             System.out.println("I har opnået den sidste milepæl! Tillykke!");
  774.             db.hold.get(holdNummer).holdMilepaele.add(db.hold.get(holdNummer).holdMilepaele.get(4));
  775.         }
  776.         else if (samletAntalKm > 1510) {
  777.             System.out.println("Jeres hold har opnået milepælen: "+db.hold.get(holdNummer).holdMilepaele.get(3).getNavn()+"\n");
  778.             antalKmTilNæsteMilepael = db.hold.get(holdNummer).holdMilepaele.get(4).antalKm - samletAntalKm;
  779.             System.out.println("I mangler "+antalKmTilNæsteMilepael+"km til næste milepæl: "+db.hold.get(holdNummer).holdMilepaele.get(4).navn);
  780.             db.hold.get(holdNummer).holdMilepaele.add(db.hold.get(holdNummer).holdMilepaele.get(3));
  781.         }
  782.         else if (samletAntalKm > 1270) {
  783.             System.out.println("Jeres hold har opnået milepælen: "+db.hold.get(holdNummer).holdMilepaele.get(2).getNavn()+"\n");
  784.             antalKmTilNæsteMilepael = db.hold.get(holdNummer).holdMilepaele.get(3).antalKm - samletAntalKm;
  785.             System.out.println("I mangler "+antalKmTilNæsteMilepael+"km til næste milepæl: "+db.hold.get(holdNummer).holdMilepaele.get(3).navn);
  786.             db.hold.get(holdNummer).holdMilepaele.add(db.hold.get(holdNummer).holdMilepaele.get(2));
  787.         }
  788.         else if (samletAntalKm > 670) {
  789.             System.out.println("Jeres hold har opnået milepælen: "+db.hold.get(holdNummer).holdMilepaele.get(1).getNavn()+"\n");
  790.             antalKmTilNæsteMilepael = db.hold.get(holdNummer).holdMilepaele.get(2).antalKm - samletAntalKm;
  791.             System.out.println("I mangler "+antalKmTilNæsteMilepael+"km til næste milepæl: "+db.hold.get(holdNummer).holdMilepaele.get(2).navn);
  792.             db.hold.get(holdNummer).holdMilepaele.add(db.hold.get(holdNummer).holdMilepaele.get(1));
  793.         } else if (samletAntalKm > 380) {
  794.             System.out.println("Jeres hold har opnået milepælen: "+db.hold.get(holdNummer).holdMilepaele.get(0).getNavn()+"\n");
  795.             antalKmTilNæsteMilepael = db.hold.get(holdNummer).holdMilepaele.get(1).antalKm - samletAntalKm;
  796.             System.out.println("I mangler "+antalKmTilNæsteMilepael+"km til næste milepæl: "+db.hold.get(holdNummer).holdMilepaele.get(1).navn);
  797.             db.hold.get(holdNummer).holdMilepaele.add(db.hold.get(holdNummer).holdMilepaele.get(0));
  798.         } else if (samletAntalKm < 379) {
  799.             antalKmTilNæsteMilepael = db.hold.get(holdNummer).holdMilepaele.get(0).antalKm - samletAntalKm;
  800.             System.out.println("I har endnu ikke opnået nogen milepæl.. Men I mangler kun "+antalKmTilNæsteMilepael+"km til milepælen: "+db.hold.get(holdNummer).holdMilepaele.get(0).navn+". Keep going!\n");
  801.  
  802.         }
  803.         System.out.println("\n");
  804.     }
  805.  
  806.         public void rangListeForHold() {
  807.  
  808.             int samletAntalKm = 0;
  809.             int antalKmTilNæsteMilepael;
  810.  
  811.             for (int i = 0; i < db.hold.get(holdNummer()).cyklister.size(); i++) {
  812.                 samletAntalKm = db.hold.get(holdNummer()).cyklister.get(i).getAntalKilometerCyklet() + samletAntalKm; //sammenlægger alle cyklister på holds antal kilometet
  813.             }
  814.  
  815.             db.hold.get(holdNummer()).setAntalKmSamlet(samletAntalKm);
  816.  
  817.             System.out.println("Ranglisten for holdene er som følger:");
  818.  
  819.             if (db.hold.get(0).getAntalKmSamlet() > db.hold.get(1).getAntalKmSamlet() && db.hold.get(0).getAntalKmSamlet() > db.hold.get(2).getAntalKmSamlet()) {
  820.                 System.out.println("1. "+db.hold.get(0).name+", "+db.hold.get(0).getAntalKmSamlet()+"km");
  821.                 if (db.hold.get(1).getAntalKmSamlet() > db.hold.get(2).getAntalKmSamlet()) {
  822.                     System.out.println("2. "+db.hold.get(1).name+", "+db.hold.get(1).getAntalKmSamlet()+"km");
  823.                     System.out.println("3. "+db.hold.get(2).name+", "+db.hold.get(2).getAntalKmSamlet()+"km");
  824.                 } else {
  825.                     System.out.println("2. "+db.hold.get(2).name+", "+db.hold.get(2).getAntalKmSamlet()+"km");
  826.                     System.out.println("3. "+db.hold.get(1).name+", "+db.hold.get(1).getAntalKmSamlet()+"km");
  827.                 }
  828.             }
  829.  
  830.             if (db.hold.get(1).getAntalKmSamlet() > db.hold.get(0).getAntalKmSamlet() && db.hold.get(1).getAntalKmSamlet() > db.hold.get(2).getAntalKmSamlet()) {
  831.                 System.out.println("1. "+db.hold.get(1).name+", "+db.hold.get(1).getAntalKmSamlet()+"km");
  832.                 if (db.hold.get(0).getAntalKmSamlet() > db.hold.get(2).getAntalKmSamlet()) {
  833.                     System.out.println("2. "+db.hold.get(0).name+", "+db.hold.get(0).getAntalKmSamlet()+"km");
  834.                     System.out.println("3. "+db.hold.get(2).name+", "+db.hold.get(2).getAntalKmSamlet()+"km");
  835.                 } else {
  836.                     System.out.println("2. "+db.hold.get(2).name+", "+db.hold.get(2).getAntalKmSamlet()+"km");
  837.                     System.out.println("3. "+db.hold.get(0).name+", "+db.hold.get(0).getAntalKmSamlet()+"km");
  838.                 }
  839.             }
  840.  
  841.             if (db.hold.get(2).getAntalKmSamlet() > db.hold.get(1).getAntalKmSamlet() && db.hold.get(2).getAntalKmSamlet() > db.hold.get(0).getAntalKmSamlet()) {
  842.                 System.out.println("1. "+db.hold.get(2).name+", "+db.hold.get(2).getAntalKmSamlet()+"km");
  843.                 if (db.hold.get(1).getAntalKmSamlet() > db.hold.get(0).getAntalKmSamlet()) {
  844.                     System.out.println("2. "+db.hold.get(1).name+", "+db.hold.get(1).getAntalKmSamlet()+"km");
  845.                     System.out.println("3. "+db.hold.get(0).name+", "+db.hold.get(0).getAntalKmSamlet()+"km");
  846.                 } else {
  847.                     System.out.println("2. "+db.hold.get(0).name+", "+db.hold.get(0).getAntalKmSamlet()+"km");
  848.                     System.out.println("3. "+db.hold.get(1).name+", "+db.hold.get(1).getAntalKmSamlet()+"km");
  849.                 }
  850.             }
  851.  
  852.             System.out.println("\n");
  853.  
  854.  
  855.  
  856.         }
  857.  
  858.  
  859.         public void sletBruger() {
  860.             int choice;
  861.  
  862.             System.out.println("Er du sikker på du vil slette din bruger?");
  863.             System.out.println("1. Ja, slet min bruger..  (Dit hold vil miste det antal kilometer du har cyklet)");
  864.             System.out.println("2. Nej, jeg har ombestemt mig!");
  865.  
  866.             choice = input.nextInt();
  867.  
  868.             switch (choice) {
  869.                 case 1:
  870.                     db.hold.get(holdNummer()).setAntalKmSamlet(db.hold.get(holdNummer()).getAntalKmSamlet() - currentCyklist.getAntalKilometerCyklet());
  871.                     System.out.println("Din bruger er nu slettet. Du føres tilbage til start. \n");
  872.                     db.hold.get(holdNummer()).cyklister.remove(currentCyklist);
  873.                     db.alleCyklister.remove(currentCyklist);
  874.                     currentCyklist = null;
  875.                     startside();
  876.  
  877.                     break;
  878.                 case 2:
  879.                     System.out.println("Godt valg! Kom op på jernhesten igen!\n");
  880.                     break;
  881.                 default:
  882.                     break;
  883.             }
  884.  
  885.         }
  886.  
  887.     }
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896. public class Milepael {
  897.     String navn;
  898.     int antalKm;
  899.  
  900.     public Milepael(String navn, int antalKm) {
  901.         this.navn = navn;
  902.         this.antalKm = antalKm;
  903.     }
  904.  
  905.     public String getNavn() {
  906.         return navn;
  907.     }
  908.  
  909.     public void setNavn(String navn) {
  910.         this.navn = navn;
  911.     }
  912.  
  913.     public int getAntalKm() {
  914.         return antalKm;
  915.     }
  916.  
  917.     public void setAntalKm(int antalKm) {
  918.         this.antalKm = antalKm;
  919.     }
  920. }
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929. import java.util.Comparator;
  930.  
  931. public class MyComparator implements Comparator<Cyklist> {
  932.  
  933.     @Override
  934.     public int compare(Cyklist o1, Cyklist o2) { //sammenligner cyklisternes samlede antal kilometercyklet
  935.         if (o1.getAntalKilometerCyklet() > o2.getAntalKilometerCyklet()) {
  936.             return -1;
  937.         } else if (o1.getAntalKilometerCyklet() < o2.getAntalKilometerCyklet()) {
  938.             return 1;
  939.         }
  940.         return 0;
  941.     }
  942. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement