Kyaria

Praktikum 2 - The Playlist V1.3

May 20th, 2019
755
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 6.04 KB | None | 0 0
  1. import java.util.*
  2.  
  3. fun main(args: Array<String>) {
  4.  
  5.     val verwaltung = Musikverwaltung()
  6.  
  7.     val song1 = Song("Led Zeppelin", "Led Zeppelin", 180, 90)
  8.     val song2 = Song("Led Zeppelin II", "Led Zeppelin", 147, 80)
  9.     val song3 = Song("Led Zeppelin III", "Led Zeppelin", 260, 72)
  10.     val song4 = Song("[Led Zeppelin IV]", "Led Zeppelin", 451, 85)
  11.     val song5 = Song("Houses of the Holy", "Led Zeppelin", 332, 94)
  12.     val song6 = Song("Physical Graffiti", "Led Zeppelin", 174, 100)
  13.     val song7 = Song("Presence", "Led Zeppelin", 80, 67)
  14.     val song8 = Song("In Through the Out Door", "Led Zeppelin", 270, 93)
  15.     val song9 = Song("Coda", "Led Zeppelin", 130, 91)
  16.     val song10 = Song("Taylor Swift", "Taylor Swift", 165, 87)
  17.     val song11 = Song("Fearless", "Taylor Swift", 75, 67)
  18.     val song12 = Song("Speak Now", "Taylor Swift", 157, 53)
  19.     val song13 = Song("Red", "Taylor Swift", 170, 85)
  20.     val song14 = Song("1989", "Taylor Swift", 230, 96)
  21.     val song15 = Song("reputation", "Taylor Swift", 90, 68)
  22.     val song16 = Song("One of the Boys", "Katy Perry", 170, 67)
  23.     val song17 = Song("Teenage Dream", "Katy Perry", 155, 87)
  24.     val song18 = Song("PRISM", "Katy Perry", 93, 99)
  25.     val song19 = Song("Witness", "Katy Perry", 162, 48)
  26.     val song20 = Song("Ur So Gay", "Katy Perry", 113, 59)
  27.  
  28.     println("Die Bewerung von: ${song1.titel} by ${song1.interpret} (Bewertung: ${song1.bewertung} Punkte)")
  29.     song1.change(50)
  30.     println("Die Bewerung von: ${song1.titel} by ${song1.interpret} (Bewertung: ${song1.bewertung} Punkte)")
  31.     song1.change(90)
  32.  
  33.     verwaltung.hinzufuegen(song1)
  34.     verwaltung.hinzufuegen(song2)
  35.     verwaltung.hinzufuegen(song3)
  36.     verwaltung.hinzufuegen(song4)
  37.     verwaltung.hinzufuegen(song5)
  38.     verwaltung.hinzufuegen(song6)
  39.     verwaltung.hinzufuegen(song7)
  40.     verwaltung.hinzufuegen(song8)
  41.     verwaltung.hinzufuegen(song9)
  42.     verwaltung.hinzufuegen(song10)
  43.     verwaltung.hinzufuegen(song11)
  44.     verwaltung.hinzufuegen(song12)
  45.     verwaltung.hinzufuegen(song13)
  46.     verwaltung.hinzufuegen(song14)
  47.     verwaltung.hinzufuegen(song15)
  48.     verwaltung.hinzufuegen(song16)
  49.     verwaltung.hinzufuegen(song17)
  50.     verwaltung.hinzufuegen(song18)
  51.     verwaltung.hinzufuegen(song19)
  52.     verwaltung.hinzufuegen(song20)
  53.  
  54.     val newPlaylist = Playlist(mutableListOf<Song>(song1, song2, song3))
  55.     val zufallPlaylist: Playlist = verwaltung.zufallPlaylist()
  56.  
  57.     newPlaylist.alleAbspielen()
  58.     println("Spieldauer von newPlaylist: ${newPlaylist.gesamteSpieldauer()} Sekunden, ${String.format("%.2f",newPlaylist.gesamteSpieldauer() / 60.0)} Minuten")
  59.  
  60.     println("-----SEPERATOR-----")
  61.  
  62.     zufallPlaylist.alleAbspielen()
  63.     println("Spieldauer von zufallPlaylist: ${zufallPlaylist.gesamteSpieldauer()} Sekunden, ${String.format("%.2f",zufallPlaylist.gesamteSpieldauer() / 60.0)} Minuten")
  64.  
  65.     val besterSong: Song = verwaltung.besterSong()
  66.  
  67.     println("Der beste Song in der Datenbank ist: ${besterSong.titel}, ${besterSong.interpret}, ${besterSong.spieldauer / 60.0}, ${besterSong.bewertung}")
  68.  
  69.     do{
  70.  
  71.         println("Bitte geben Sie einen Suchbegriff ein!")
  72.         val eingabe = readLine().toString()
  73.  
  74.         if(eingabe != "stopp") {
  75.             val seekSong = verwaltung.suchen(eingabe)
  76.             seekSong.abspielen()
  77.         }
  78.     }
  79.     while(eingabe != "stopp")
  80.  
  81. }
  82.  
  83. class Song(val titel: String, val interpret: String, val spieldauer: Int, _bewertung: Int) {
  84.  
  85.     var bewertung = _bewertung
  86.         set(value) {
  87.             if (value < 0)
  88.                 field = 0
  89.             else if (value > 100)
  90.                 field = 100
  91.             else
  92.                 field = value
  93.         }
  94.  
  95.     fun abspielen() {
  96.  
  97.         var decke: Int
  98.  
  99.         if (spieldauer % 60 == 0)
  100.             decke = spieldauer / 60
  101.         else
  102.             decke = spieldauer / 60 + 1
  103.  
  104.         for (i in 1..decke)
  105.             println("Spiele: $titel von $interpret (Bewertung: $bewertung Punkte)")
  106.     }
  107.  
  108.     fun change(newValue: Int) {
  109.  
  110.         if (newValue < 0)
  111.             bewertung = 0
  112.         else if (newValue > 100)
  113.             bewertung = 100
  114.         else
  115.             bewertung = newValue
  116.     }
  117.  
  118.     fun search(searchString: String): Boolean {
  119.  
  120.         var istDrin = false
  121.  
  122.         if (titel.contains(searchString))
  123.             istDrin = true
  124.  
  125.         if (interpret.contains(searchString))
  126.             istDrin = true
  127.  
  128.         return istDrin
  129.     }
  130.  
  131. }
  132.  
  133. class Musikverwaltung() {
  134.  
  135.     val songliste: MutableList<Song> = mutableListOf<Song>()
  136.  
  137.     fun hinzufuegen(song: Song) {
  138.  
  139.         songliste.add(song)
  140.     }
  141.  
  142.     fun suchen(begriff: String): Song{
  143.  
  144.         for(s in songliste){
  145.  
  146.             if(s.titel.contains(begriff) || s.interpret.contains(begriff)) {
  147.  
  148.                 return s
  149.             }
  150.         }
  151.  
  152.         return songliste.get(0)
  153.     }
  154.  
  155.     fun besterSong(): Song{
  156.  
  157.         var tmp = songliste.get(0)
  158.  
  159.         for(s in songliste){
  160.  
  161.             if(s.bewertung > tmp.bewertung)
  162.                 tmp = s
  163.         }
  164.  
  165.         return tmp
  166.     }
  167.  
  168.     fun zufallPlaylist(): Playlist{
  169.  
  170.         val zufallGen = Random()
  171.  
  172.         val newSongliste: MutableList<Song> = mutableListOf<Song>()
  173.         var laengePlaylist = zufallGen.nextInt(songliste.size)
  174.  
  175.         var istVorhanden = false
  176.  
  177.         for(i in 0..laengePlaylist){
  178.  
  179.             for (s in newSongliste){
  180.  
  181.                 if(songliste.get(zufallGen.nextInt(songliste.size)) == s)
  182.                     istVorhanden = true
  183.             }
  184.  
  185.             if(!istVorhanden)
  186.                 newSongliste.add(songliste.get(zufallGen.nextInt(songliste.size)))
  187.             else
  188.                 laengePlaylist++
  189.         }
  190.  
  191.         return Playlist(newSongliste)
  192.     }
  193. }
  194.  
  195. class Playlist(val songliste: MutableList<Song>) {
  196.  
  197.     fun gesamteSpieldauer(): Int {
  198.  
  199.         var temp = 0
  200.  
  201.         for (s in songliste) {
  202.  
  203.             temp += s.spieldauer
  204.         }
  205.  
  206.         return temp
  207.     }
  208.  
  209.     fun alleAbspielen() {
  210.  
  211.         for (s in songliste) {
  212.  
  213.             s.abspielen()
  214.         }
  215.     }
  216. }
Advertisement