Java aplikacija su meniu

Sudėtinga Java aplikacija su tekstinio failo nuskaitymu, meniu punktais ir 6 skirtingomis veikimo funkcijomis.

Duomenų failo turinys

DARE Gorrilaz Electronic 324
White_Days Gorrilaz Electronic 329
White_flag Dido Pop 322
Paris Dido Pop 204
Angels_fly Reamonn Pop_Rock 276
Jeanny Reamonn Pop_Rock 266
Seven_Nation_Army White_Stripes Rock 232
Blue_Orchid White_Stripes Rock 168
Hypnotize White_Stripes Rock 108

Užduotis

  1. Duomenų įvedimas: pradiniai duomenys įvedami iš tekstinio failo (ne mažiau 8 įrašų).
  2. Veiksmai:
    • įterpti naują įrašą į nurodytą vietą;
    • pašalinti įrašą pagal nurodytą eilės numerį.
  3. Pradiniai duomenys ir rezultatai parodomi ekrane ir išsaugomi tekstiniame faile lentelės forma.
  4. Duomenys ir rezultatai saugomi masyvuose (kolekcijų nenaudoti).
  5. Programos rašomos Java programavimo kalba.
  6. Sąrašą sudaro dainos aprašo elementai: pavadinimas, autorius, stilius, trukmė. Surasti visų nurodyto autoriaus dainų bendrą trukmę.

 

Pirma dalis

Programoje sukuriamas meniu, kuris bus paleidžiamas po kiekvieno atlikto veiksmo su programa.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package grotuvasmenu;

import java.io.*;
import java.util.StringTokenizer;

class Grotuvas {
    
        private String pavadinimas, autorius, stilius;
        private int trukme;
        
  Grotuvas() { }
  Grotuvas(String pav, String aut, String stil, int truk) {
    pavadinimas = pav;
    autorius = aut;
                stilius = stil;
                trukme = truk;
  }
  public String gautiPavadinima() {
    return pavadinimas;
  }
  
  public String gautiAutorius() {
    return autorius;
  }
  
  public String gautiStilius() {
    return stilius;
  }
  
  public int gautiTrukme() {
    return trukme;
  }
  
}



public class GrotuvasMenu {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int nr = 0; //meniu veiksmo numeris
        BufferedReader in = new BufferedReader (new InputStreamReader (System.in)); //skaitymo iš komandinės eilutės konstruktorius
        
        
        
        while (true){
      meniu();
      try {
        nr = Integer.parseInt(in.readLine());
      }
      catch(IOException e){System.out.println("Ivedimo klaida!");}
      catch(NumberFormatException e){System.out.println("Ivedete ne sveika skaiciu!");}
      switch (nr) {
      case 1://skaitymas is failo
        System.out.println("Pasirinkote pirma meniu punkta!");
                                System.out.println();
        break;
      
      case 2://rezultatu isvedimas i faila
        
        break;
        
      case 3://naujo iraso iterpimas
        
        break;
        
      case 4://iraso salinimas
        
        break;
        
      case 5://paieskos veiksmai
        
        break;
        
      case 6://pabaiga
        
        System.out.println("Programa baigė darbą.");
        System.exit(0);
        break;
  
      default://veiksmai kitais atvejais
        System.out.println("Nėra tokio menu punkto. Pakartokite!");
        break;
      }
        }
    }
    
    
    public static void meniu () {
    
    
    System.out.println();
                System.out.println("_____________________________");
                System.out.println("Programos Grotuvas veiksmų meniu");
    System.out.println();
    System.out.println("1. Skaityti duomenis.");
    System.out.println("2. Spausdinti i faila.");
    System.out.println("3. Įterpti.");
    System.out.println("4. Ištrinti.");
    System.out.println("5. Surasti.");
    System.out.println("6. Baigti darbą.");
    System.out.println();
    System.out.println("Iveskite meniu nr.:");
  }
    
}

 

Antra dalis

Sukuriamas failo skaitymo mechanizmas ir tuo pačiu duomenų išvedimas į ekraną su jų gražiu formatavimu.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package grotuvasmenu;

import java.io.*;
import java.util.StringTokenizer;

class Grotuvas {
    
        private String pavadinimas, autorius, stilius;
        private int trukme;
        
  Grotuvas() { }
  Grotuvas(String pav, String aut, String stil, int truk) {
    pavadinimas = pav;
    autorius = aut;
                stilius = stil;
                trukme = truk;
  }
  public String gautiPavadinima() {
    return pavadinimas;
  }
  
  public String gautiAutorius() {
    return autorius;
  }
  
  public String gautiStilius() {
    return stilius;
  }
  
  public int gautiTrukme() {
    return trukme;
  }
  
}

class Gyvunas {
  private String pavadinimas;
  private int amzius;
  private double svoris;
  private String k_salis;
  
  Gyvunas() {}
  Gyvunas (String pav, int amzius, double svoris, String salis) {
    pavadinimas = pav;
    this.amzius = amzius;
    this.svoris = svoris;
    k_salis = salis;
  }
  
  public String gautiPav () {
    return pavadinimas;
  } 
  
  public int gautiAmziu () {
    return amzius;
  }
  
  public double gautiSvori () {
    return svoris;
  }
  
  public String gautiSali () {
    return k_salis;
  }
}

public class GrotuvasMenu {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int nr = 0; //meniu veiksmo numeris
        int n = 0; //masyvo A elementu sk.
        Grotuvas A[] = null;
        BufferedReader in = new BufferedReader (new InputStreamReader (System.in)); //skaitymo iš komandinės eilutės konstruktorius
        File fd = new File ("grotuvas_duom.txt"); //duomenu failas
        
        
        while (true){
      meniu();
      try {
        nr = Integer.parseInt(in.readLine());
      }
      catch(IOException e){System.out.println("Ivedimo klaida!");}
      catch(NumberFormatException e){System.out.println("Ivedete ne sveika skaiciu!");}
      switch (nr) {
      case 1://skaitymas is failo
                                        n = skaiciuotiEilutes(fd);
                                        System.out.println();
          System.out.println("Skaitome duomenis iš failo...");
                                        System.out.println();
                                        System.out.println("Nuskaitytos: " + n + " eilutės.");
                                        System.out.println();
          A = new Grotuvas[n];
          
          A = skaityti_sar(fd, n);
          System.out.println("Duomenys nuskaityti.");
                                        System.out.println();
          spausdinti_sar_ekrane(A, n);
          
        break;
      
      case 2://rezultatu isvedimas i faila
        
        break;
        
      case 3://naujo iraso iterpimas
        
        break;
        
      case 4://iraso salinimas
        
        break;
        
      case 5://paieskos veiksmai
        
        break;
        
      case 6://pabaiga
        
        System.out.println("Programa baigė darbą.");
        System.exit(0);
        break;
  
      default://veiksmai kitais atvejais
        System.out.println("Nėra tokio menu punkto. Pakartokite!");
        break;
      }
        }
    }
    
    //metodas suskaiciuoja kiek faile yra irasu eiluciu 
    public static int skaiciuotiEilutes (File file) {
    int sk = 0;
    try {
      BufferedReader file_in = new BufferedReader (new FileReader (file));
      while (true){
          if ((file_in.readLine()) == null){
            file_in.close();
            return sk;}
          sk++;
      }
    }
    catch (IOException e) {System.out.println("Skaitymo is failo klaida");}
    return sk;
  }
    
    //metodas skaito duomenis is failo
  public static Grotuvas[] skaityti_sar (File file, int n){
    Grotuvas A[] = new Grotuvas [n]; //sukuriamas masyvo objektas
    String eilute;	// kintamasis 1 eilutei skaityti
    int sk = 0; //rasymo i masyva skaitliukas
    String pav, autorius, stilius;
    int trukme;
    
    try {
      BufferedReader file_in = new BufferedReader (new FileReader (file));
      while (true){
      
        if ((eilute = file_in.readLine()) == null) break; 
        StringTokenizer st = new StringTokenizer(eilute);
        
        pav = st.nextToken();
        autorius = st.nextToken();
        stilius = st.nextToken();
        trukme = Integer.parseInt(st.nextToken());
        
        A[sk]= new Grotuvas (pav, autorius, stilius, trukme);
        sk ++;
        if (sk==n) break;
      }
    }
    catch (IOException e) {System.out.println("Ivedimo klaida");}
    catch (IndexOutOfBoundsException e) {System.out.println("Masyvo ribu klaida");}
    
    return A;
  }
        
        public static void spausdinti_sar_ekrane ( Grotuvas [] A, int n) {
    if (n > 0) {
      spausdinti_antraste_ekrane ();
      System.out.println("*************************************************************");
      for (int i=0; i<n; i++) {
        System.out.println("* " + prailginti((i+1)+"", 3) +" * "+prailginti(A[i].gautiPavadinima(),17)+ " * "+ prailginti(A[i].gautiAutorius(),14)+ " * " +
              prailginti(A[i].gautiStilius()+"", 10) + " * " + prailginti(A[i].gautiTrukme()+"", 4) + " * ");
      }
      System.out.println("*************************************************************");
    }
    else System.out.println("Masyvas tuscias!");
  }
        
        public static void spausdinti_antraste_ekrane (){
    System.out.println("*************************************************************");
    System.out.println("* Nr. * Pavadinimas       * Autorius       * Stilius    * Trukmė *");
  }
        
        
        public static String prailginti (String reiksme, int ilgis){
    for (int i=reiksme.length(); i<ilgis; i++)
      reiksme += " ";
    return reiksme;
  }
    
    public static void meniu () {
    
    
    System.out.println();
                System.out.println("_____________________________");
                System.out.println("Programos Grotuvas veiksmų meniu");
    System.out.println();
    System.out.println("1. Skaityti duomenis.");
    System.out.println("2. Spausdinti i faila.");
    System.out.println("3. Įterpti.");
    System.out.println("4. Ištrinti.");
    System.out.println("5. Surasti.");
    System.out.println("6. Baigti darbą.");
    System.out.println();
    System.out.println("Iveskite meniu nr.:");
  }
    
}

 

Trečia dalis

Pridedame dar vieną funkciją, kai jau įvykdome pirmą programos funkciją ir duomenys jau yra nuskaityti ir jie jau masyve, tuomet galime juos spausdinti į failą. Meniu punktas numeris 2.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package grotuvasmenu;

import java.io.*;
import java.util.StringTokenizer;

class Grotuvas {
    
        private String pavadinimas, autorius, stilius;
        private int trukme;
        
  Grotuvas() { }
  Grotuvas(String pav, String aut, String stil, int truk) {
    pavadinimas = pav;
    autorius = aut;
                stilius = stil;
                trukme = truk;
  }
  public String gautiPavadinima() {
    return pavadinimas;
  }
  
  public String gautiAutorius() {
    return autorius;
  }
  
  public String gautiStilius() {
    return stilius;
  }
  
  public int gautiTrukme() {
    return trukme;
  }
  
}

class Gyvunas {
  private String pavadinimas;
  private int amzius;
  private double svoris;
  private String k_salis;
  
  Gyvunas() {}
  Gyvunas (String pav, int amzius, double svoris, String salis) {
    pavadinimas = pav;
    this.amzius = amzius;
    this.svoris = svoris;
    k_salis = salis;
  }
  
  public String gautiPav () {
    return pavadinimas;
  } 
  
  public int gautiAmziu () {
    return amzius;
  }
  
  public double gautiSvori () {
    return svoris;
  }
  
  public String gautiSali () {
    return k_salis;
  }
}

public class GrotuvasMenu {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int nr = 0; //meniu veiksmo numeris
        int n = 0; //masyvo A elementu sk.
        
        Grotuvas A[] = null;
        Grotuvas B[] = null;
        BufferedReader in = new BufferedReader (new InputStreamReader (System.in)); //skaitymo iš komandinės eilutės konstruktorius
        File fd = new File ("grotuvas_duom.txt"); //duomenu failas
        File fr = new File (".", "grotuvas_rez.txt");  //rezultatu failas
        PrintWriter rasyti = null; //Duomenų išvedimo failo kintamasis
        
        //Atidarome rezultatu faila
    try {              
      rasyti = new PrintWriter (new FileWriter (fr));
    }
    catch (IOException e) {System.out.println("Nepavyko sukurti failo.");}
                
        while (true){
      meniu();                     
      try {
        nr = Integer.parseInt(in.readLine());
      }
      catch(IOException e){System.out.println("Ivedimo klaida!");}
      catch(NumberFormatException e){System.out.println("Ivedete ne sveika skaiciu!");}
      switch (nr) {
      case 1://skaitymas is failo
                                        n = skaiciuotiEilutes(fd);
                                        System.out.println();
          System.out.println("Skaitome duomenis iš failo...");
                                        System.out.println();
                                        System.out.println("Nuskaitytos: " + n + " eilutės.");
                                        System.out.println();
          A = new Grotuvas[n];
          
          A = skaityti_sar(fd, n);
          System.out.println("Duomenys nuskaityti.");
                                        System.out.println();
          spausdinti_sar_ekrane(A, n);
          
        break;
      
      case 2://rezultatu isvedimas i faila
        spausdinti_sar_faile(rasyti, A, n);            
                                System.out.println();
        System.out.println("Įrašome duomenis į failą...");
                                System.out.println();
        System.out.println("Duomenys sėkmingai įrašyti į failą: " + fr + ".");
                                System.out.println();
        break;
        
      case 3://naujo iraso iterpimas
        
        break;
        
      case 4://iraso salinimas
        
        break;
        
      case 5://paieskos veiksmai
        
        break;
        
      case 6://pabaiga
        
        System.out.println("Programa baigė darbą.");
        System.exit(0);
        break;
  
      default://veiksmai kitais atvejais
        System.out.println("Nėra tokio menu punkto. Pakartokite!");
        break;
      }
        }
    }
    
    
    
    //metodas suskaiciuoja kiek faile yra irasu eiluciu 
    public static int skaiciuotiEilutes (File file) {
    int sk = 0;
    try {
      BufferedReader file_in = new BufferedReader (new FileReader (file));
      while (true){
          if ((file_in.readLine()) == null){
            file_in.close();
            return sk;}
          sk++;
      }
    }
    catch (IOException e) {System.out.println("Skaitymo is failo klaida");}
    return sk;
  }
    
    //metodas skaito duomenis is failo
  public static Grotuvas[] skaityti_sar (File file, int n){
    Grotuvas A[] = new Grotuvas [n]; //sukuriamas masyvo objektas
    String eilute;	// kintamasis 1 eilutei skaityti
    int sk = 0; //rasymo i masyva skaitliukas
    String pav, autorius, stilius;
    int trukme;
    
    try {
      BufferedReader file_in = new BufferedReader (new FileReader (file));
      while (true){
      
        if ((eilute = file_in.readLine()) == null) break; 
        StringTokenizer st = new StringTokenizer(eilute);
        
        pav = st.nextToken();
        autorius = st.nextToken();
        stilius = st.nextToken();
        trukme = Integer.parseInt(st.nextToken());
        
        A[sk]= new Grotuvas (pav, autorius, stilius, trukme);
        sk ++;
        if (sk==n) break;
      }
    }
    catch (IOException e) {System.out.println("Ivedimo klaida");}
    catch (IndexOutOfBoundsException e) {System.out.println("Masyvo ribu klaida");}
    
    return A;
  }
        
        public static void spausdinti_sar_ekrane ( Grotuvas [] A, int n) {
    if (n > 0) {
      spausdinti_antraste_ekrane ();
      System.out.println("******************************************************************");
      for (int i=0; i<n; i++) {
        System.out.println("* " + prailginti((i+1)+"", 3) +" * "+prailginti(A[i].gautiPavadinima(),17)+ " * "+ prailginti(A[i].gautiAutorius(),14)+ " * " +
              prailginti(A[i].gautiStilius()+"", 10) + " * " + prailginti(A[i].gautiTrukme()+"", 4) + " * ");
      }
      System.out.println("******************************************************************");
    }
    else System.out.println("Masyvas tuscias!");
  }
        
        public static void spausdinti_antraste_ekrane (){
    System.out.println("******************************************************************");
    System.out.println("* Nr. * Pavadinimas       * Autorius       * Stilius    * Trukmė *");
  }
        
        
        public static String prailginti (String reiksme, int ilgis){
    for (int i=reiksme.length(); i<ilgis; i++)
      reiksme += " ";
    return reiksme;
  }
        
        
        public static void spausdinti_sar_faile (PrintWriter rasyti, Grotuvas [] A, int n) {
    if (n > 0) {
      spausdinti_antraste_faile (rasyti);
      rasyti.println("******************************************************************");
      for (int i=0; i<n; i++) {
        rasyti.println("* " + prailginti((i+1)+"", 3) +" * "+prailginti(A[i].gautiPavadinima(),17)+ " * "+ prailginti(A[i].gautiAutorius(),14)+ " * " +
              prailginti(A[i].gautiStilius()+"", 10) + " * " + prailginti(A[i].gautiTrukme()+"", 4) + " * ");

      }
      rasyti.println("******************************************************************");
    }
    else rasyti.println("Masyvas tuscias!");
                
                
        rasyti.close(); // klasei PrintWriter IOException nemeta
     
  }
        
        public static void spausdinti_antraste_faile (PrintWriter rasyti){
    rasyti.println("******************************************************************");
                rasyti.println("* Nr. * Pavadinimas       * Autorius       * Stilius    * Trukmė *");
  }
    
    public static void meniu () {
    
    
    System.out.println();
                System.out.println("_____________________________");
                System.out.println("Programos Grotuvas veiksmų meniu");
    System.out.println();
    System.out.println("1. Skaityti duomenis.");
    System.out.println("2. Spausdinti i faila.");
    System.out.println("3. Įterpti.");
    System.out.println("4. Ištrinti.");
    System.out.println("5. Surasti.");
    System.out.println("6. Baigti darbą.");
    System.out.println();
    System.out.println("Iveskite meniu nr.:");
  }
    
}

 

Ketvirta dalis

Dabar pridėsime du metodus. Pirmas įterps naują elementą į masyvą, o antras pašalins vieną eilutę iš masyvo. Meniu punktas trys ir keturi.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package grotuvasmenu;

import java.io.*;
import java.util.StringTokenizer;

class Grotuvas {
    
        private String pavadinimas, autorius, stilius;
        private int trukme;
        
  Grotuvas() { }
  Grotuvas(String pav, String aut, String stil, int truk) {
    pavadinimas = pav;
    autorius = aut;
                stilius = stil;
                trukme = truk;
  }
  public String gautiPavadinima() {
    return pavadinimas;
  }
  
  public String gautiAutorius() {
    return autorius;
  }
  
  public String gautiStilius() {
    return stilius;
  }
  
  public int gautiTrukme() {
    return trukme;
  }
  
}

public class GrotuvasMenu {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int nr = 0; //meniu veiksmo numeris
        int n = 0; //masyvo A elementu sk.
        int vieta = -1; //salinamo elemento numeris 
        Grotuvas A[] = null;
        Grotuvas B[] = null;
        BufferedReader in = new BufferedReader (new InputStreamReader (System.in)); //skaitymo iš komandinės eilutės konstruktorius
        File fd = new File ("grotuvas_duom.txt"); //duomenu failas
        File fr = new File (".", "grotuvas_rez.txt");  //rezultatu failas
        PrintWriter rasyti = null; //Duomenų išvedimo failo kintamasis
        
        //Atidarome rezultatu faila
    try {              
      rasyti = new PrintWriter (new FileWriter (fr));
    }
    catch (IOException e) {System.out.println("Nepavyko sukurti failo.");}
                
        while (true){
      meniu();                     
      try {
        nr = Integer.parseInt(in.readLine());
      }
      catch(IOException e){System.out.println("Ivedimo klaida!");}
      catch(NumberFormatException e){System.out.println("Ivedete ne sveika skaiciu!");}
      switch (nr) {
      case 1://skaitymas is failo
                                        n = skaiciuotiEilutes(fd);
                                        System.out.println();
          System.out.println("Skaitome duomenis iš failo...");
                                        System.out.println();
                                        System.out.println("Nuskaitytos: " + n + " eilutės.");
                                        System.out.println();
          A = new Grotuvas[n];
          
          A = skaityti_sar(fd, n);
          System.out.println("Duomenys nuskaityti.");
                                        System.out.println();
          spausdinti_sar_ekrane(A, n);
          
        break;
      
      case 2://rezultatu isvedimas i faila
        spausdinti_sar_faile(rasyti, A, n);            
                                System.out.println();
        System.out.println("Įrašome duomenis į failą...");
                                System.out.println();
        System.out.println("Duomenys sėkmingai įrašyti į failą: " + fr + ".");
                                System.out.println();
        break;
        
      case 3://naujo iraso iterpimas
        
        n++;
        A = kopijuotiMas(A, n);
        iterpti(A,n);
        spausdinti_sar_ekrane(A, n);
        break;
        
      case 4://iraso salinimas
        
        if (n==0) {System.out.println("Masyvas tuščias. Nėra ką šalinti.");}
        else {
          while (true){
            System.out.println("Iveskite šalinamo elemento eilutės nr.(1 - "+ n +" ):");
            try {
              vieta = Integer.parseInt(in.readLine());
              if (vieta <1 || vieta > n) System.out.println("Tokio elemento pašalinti negalima!");
              else {
                n--;
                A = salinti(A, n, vieta-1);
                spausdinti_sar_ekrane(A, n);
                break; 
              }
            }
            catch(IOException e){System.out.println("!Duomenų įvedimo klaida!");}
            catch(NumberFormatException e){System.out.println("Ivedėte ne sveiką skaičių!");}
          }
        }
        break;
        
      case 5://paieskos veiksmai
        
        break;
        
      case 6://pabaiga
        
        System.out.println("Programa baigė darbą.");
        System.exit(0);
        break;
  
      default://veiksmai kitais atvejais
        System.out.println("Nėra tokio menu punkto. Pakartokite!");
        break;
      }
        }
    }
    
    
    
    //metodas suskaiciuoja kiek faile yra irasu eiluciu 
    public static int skaiciuotiEilutes (File file) {
    int sk = 0;
    try {
      BufferedReader file_in = new BufferedReader (new FileReader (file));
      while (true){
          if ((file_in.readLine()) == null){
            file_in.close();
            return sk;}
          sk++;
      }
    }
    catch (IOException e) {System.out.println("Skaitymo is failo klaida");}
    return sk;
  }
    
    //metodas skaito duomenis is failo
  public static Grotuvas[] skaityti_sar (File file, int n){
    Grotuvas A[] = new Grotuvas [n]; //sukuriamas masyvo objektas
    String eilute;	// kintamasis 1 eilutei skaityti
    int sk = 0; //rasymo i masyva skaitliukas
    String pav, autorius, stilius;
    int trukme;
    
    try {
      BufferedReader file_in = new BufferedReader (new FileReader (file));
      while (true){
      
        if ((eilute = file_in.readLine()) == null) break; 
        StringTokenizer st = new StringTokenizer(eilute);
        
        pav = st.nextToken();
        autorius = st.nextToken();
        stilius = st.nextToken();
        trukme = Integer.parseInt(st.nextToken());
        
        A[sk]= new Grotuvas (pav, autorius, stilius, trukme);
        sk ++;
        if (sk==n) break;
      }
    }
    catch (IOException e) {System.out.println("Ivedimo klaida");}
    catch (IndexOutOfBoundsException e) {System.out.println("Masyvo ribu klaida");}
    
    return A;
  }
        
        public static void spausdinti_sar_ekrane ( Grotuvas [] A, int n) {
    if (n > 0) {
      spausdinti_antraste_ekrane ();
      System.out.println("******************************************************************");
      for (int i=0; i<n; i++) {
        System.out.println("* " + prailginti((i+1)+"", 3) +" * "+prailginti(A[i].gautiPavadinima(),17)+ " * "+ prailginti(A[i].gautiAutorius(),14)+ " * " +
              prailginti(A[i].gautiStilius()+"", 10) + " * " + prailginti(A[i].gautiTrukme()+"", 4) + " * ");
      }
      System.out.println("******************************************************************");
    }
    else System.out.println("Masyvas tuscias!");
  }
        
        public static void spausdinti_antraste_ekrane (){
    System.out.println("******************************************************************");
    System.out.println("* Nr. * Pavadinimas       * Autorius       * Stilius    * Trukmė *");
  }
        
        
        public static String prailginti (String reiksme, int ilgis){
    for (int i=reiksme.length(); i<ilgis; i++)
      reiksme += " ";
    return reiksme;
  }
        
        
        public static void spausdinti_sar_faile (PrintWriter rasyti, Grotuvas [] A, int n) {
    if (n > 0) {
      spausdinti_antraste_faile (rasyti);
      rasyti.println("******************************************************************");
      for (int i=0; i<n; i++) {
        rasyti.println("* " + prailginti((i+1)+"", 3) +" * "+prailginti(A[i].gautiPavadinima(),17)+ " * "+ prailginti(A[i].gautiAutorius(),14)+ " * " +
              prailginti(A[i].gautiStilius()+"", 10) + " * " + prailginti(A[i].gautiTrukme()+"", 4) + " * ");

      }
      rasyti.println("******************************************************************");
    }
    else rasyti.println("Masyvas tuscias!");
                
                
        rasyti.close(); // klasei PrintWriter IOException nemeta
     
  }
        
        public static void spausdinti_antraste_faile (PrintWriter rasyti){
    rasyti.println("******************************************************************");
                rasyti.println("* Nr. * Pavadinimas       * Autorius       * Stilius    * Trukmė *");
  }
        
    //metodas sukuria nauja, vienetu didesni masyva, nei buvo pries iterpima
    //ir i ji perkopijuoja pradinio masyvo duomenis   
        
    public static Grotuvas[] kopijuotiMas(Grotuvas A[], int n){
    Grotuvas A2[] = new Grotuvas[n];
    for (int i=0; i<n-1; i++ )
      A2[i]=A[i];
    return A2;
  }   
    
    // Įvedamas naujas masyvo elementas
    
    public static Grotuvas[] iterpti(Grotuvas G[], int n){
    BufferedReader in = new BufferedReader (new InputStreamReader (System.in));
    String pav, autorius, stilius;
    int trukme;
    int vieta;
    
    while (true){
      System.out.println("Įveskite dainos pavadinimą:");
      try {
        pav = in.readLine(); 
        break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
    }
    
    while (true){
      System.out.println("Įveskite dainos autorių:");
      try {
        autorius = in.readLine(); 
        break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
    }
    
    while (true){
      System.out.println("Iveskite dainos stilių. Pvz. Pop:");
      try {
        stilius = in.readLine(); 
        break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
    }
    
    while (true){
      System.out.println("Įveskite dainos trukmę sekundėmis:");
      try {
        trukme = Integer.parseInt(in.readLine());
        break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
                        catch (NumberFormatException e) {System.out.println("Ivedėte ne sveiką skaičių!");}
    }
    
    Grotuvas naujas = new Grotuvas(pav, autorius, stilius, trukme);
    
    while (true){
      System.out.println("Masyve yra " + (n-1) + " elementu. Įveskite į kurią eilutę įterpti naują įrašą(1 - "+ n +"):");
      try {
        vieta = Integer.parseInt(in.readLine()); 
        if (vieta > n) System.out.println("Įvedėte per didelį skaičių!");
        else if (vieta < 1) System.out.println("Įvedėte per mažą skaičių!");
        else break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
      catch (NumberFormatException e) {System.out.println("Įvedėte ne sveiką skaičių!");}
    }
    
    for (int i=n-1; i>vieta-1; i--)
      G[i]=G[i-1];
    G[vieta-1]=naujas;
    
    return G;
  }
    
    public static Grotuvas[] salinti(Grotuvas G[], int n, int vieta){
    for (int i=vieta; i<n; i++)
      G[i]=G[i+1];
    return G;
  }
    
    public static void meniu () {
    
    
    System.out.println();
                System.out.println("_____________________________");
                System.out.println("Programos Grotuvas veiksmų meniu");
    System.out.println();
    System.out.println("1. Skaityti duomenis.");
    System.out.println("2. Spausdinti masyvą į rezultatų failą.");
    System.out.println("3. Įterpti naują dainą.");
    System.out.println("4. Ištrinti dainą iš sąrašo.");
    System.out.println("5. Surasti.");
    System.out.println("6. Baigti darbą.");
    System.out.println();
    System.out.println("Iveskite meniu nr.:");
  }
    
}

 

Penkta dalis

Čia pridėsime pagal užduotį reikalinga papildomą metodą, kuris suskaičiuos visų pasirinkto autoriaus dainų trukmę.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package grotuvasmenu;

import java.io.*;
import java.util.StringTokenizer;

class Grotuvas {
    
        private String pavadinimas, autorius, stilius;
        private int trukme;
        
  Grotuvas() { }
  Grotuvas(String pav, String aut, String stil, int truk) {
    pavadinimas = pav;
    autorius = aut;
                stilius = stil;
                trukme = truk;
  }
  public String gautiPavadinima() {
    return pavadinimas;
  }
  
  public String gautiAutorius() {
    return autorius;
  }
  
  public String gautiStilius() {
    return stilius;
  }
  
  public int gautiTrukme() {
    return trukme;
  }
  
}

public class GrotuvasMenu {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int nr = 0; //meniu veiksmo numeris
        int n = 0; //masyvo A elementu sk.
        int vieta = -1; //salinamo elemento numeris 
        String autsum;
        Grotuvas A[] = null;
        Grotuvas B[] = null;
        BufferedReader in = new BufferedReader (new InputStreamReader (System.in)); //skaitymo iš komandinės eilutės konstruktorius
        File fd = new File ("grotuvas_duom.txt"); //duomenu failas
        File fr = new File (".", "grotuvas_rez.txt");  //rezultatu failas
        PrintWriter rasyti = null; //Duomenų išvedimo failo kintamasis
        
        //Atidarome rezultatu faila
    try {              
      rasyti = new PrintWriter (new FileWriter (fr));
    }
    catch (IOException e) {System.out.println("Nepavyko sukurti failo.");}
                
        while (true){
      meniu();                     
      try {
        nr = Integer.parseInt(in.readLine());
      }
      catch(IOException e){System.out.println("Ivedimo klaida!");}
      catch(NumberFormatException e){System.out.println("Ivedete ne sveika skaiciu!");}
      switch (nr) {
      case 1://skaitymas is failo
                                        n = skaiciuotiEilutes(fd);
                                        System.out.println();
          System.out.println("Skaitome duomenis iš failo...");
                                        System.out.println();
                                        System.out.println("Nuskaitytos: " + n + " eilutės.");
                                        System.out.println();
          A = new Grotuvas[n];
          
          A = skaityti_sar(fd, n);
          System.out.println("Duomenys nuskaityti.");
                                        System.out.println();
          spausdinti_sar_ekrane(A, n);
          
        break;
      
      case 2://rezultatu isvedimas i faila
        spausdinti_sar_faile(rasyti, A, n);            
                                System.out.println();
        System.out.println("Įrašome duomenis į failą...");
                                System.out.println();
        System.out.println("Duomenys sėkmingai įrašyti į failą: " + fr + ".");
                                System.out.println();
        break;
        
      case 3://naujo iraso iterpimas
        
        n++;
        A = kopijuotiMas(A, n);
        iterpti(A,n);
        spausdinti_sar_ekrane(A, n);
        break;
        
      case 4://iraso salinimas
        
        if (n==0) {System.out.println("Masyvas tuščias. Nėra ką šalinti.");}
        else {
          while (true){
            System.out.println("Iveskite šalinamo elemento eilutės nr.(1 - "+ n +" ):");
            try {
              vieta = Integer.parseInt(in.readLine());
              if (vieta <1 || vieta > n) System.out.println("Tokio elemento pašalinti negalima!");
              else {
                n--;
                A = salinti(A, n, vieta-1);
                spausdinti_sar_ekrane(A, n);
                break; 
              }
            }
            catch(IOException e){System.out.println("!Duomenų įvedimo klaida!");}
            catch(NumberFormatException e){System.out.println("Ivedėte ne sveiką skaičių!");}
          }
        }
        break;
        
      case 5://paieskos veiksmai
                            
                            
                            if (n==0) {System.out.println("Masyvas tuščias. Nėra ko sumuoti.");}
        else {
          while (true){
                                                System.out.println();
            System.out.println("Sumuosime pasirinkto autoriaus dainų trukmę. Iveskite autorių:");
            try {
              autsum = in.readLine();
              sumuoti_trukme(A, n, autsum);
                                                        
                                                        break; 
              
            }
            catch(IOException e){System.out.println("!Duomenų įvedimo klaida!");}
          }
        }              
                     
        break;
        
      case 6://pabaiga
        
        System.out.println("Programa baigė darbą.");
        System.exit(0);
        break;
  
      default://veiksmai kitais atvejais
        System.out.println("Nėra tokio menu punkto. Pakartokite!");
        break;
      }
        }
    }
    
    
    
    //metodas suskaiciuoja kiek faile yra irasu eiluciu 
    public static int skaiciuotiEilutes (File file) {
    int sk = 0;
    try {
      BufferedReader file_in = new BufferedReader (new FileReader (file));
      while (true){
          if ((file_in.readLine()) == null){
            file_in.close();
            return sk;}
          sk++;
      }
    }
    catch (IOException e) {System.out.println("Skaitymo is failo klaida");}
    return sk;
  }
    
    //metodas skaito duomenis is failo
  public static Grotuvas[] skaityti_sar (File file, int n){
    Grotuvas A[] = new Grotuvas [n]; //sukuriamas masyvo objektas
    String eilute;	// kintamasis 1 eilutei skaityti
    int sk = 0; //rasymo i masyva skaitliukas
    String pav, autorius, stilius;
    int trukme;
    
    try {
      BufferedReader file_in = new BufferedReader (new FileReader (file));
      while (true){
      
        if ((eilute = file_in.readLine()) == null) break; 
        StringTokenizer st = new StringTokenizer(eilute);
        
        pav = st.nextToken();
        autorius = st.nextToken();
        stilius = st.nextToken();
        trukme = Integer.parseInt(st.nextToken());
        
        A[sk]= new Grotuvas (pav, autorius, stilius, trukme);
        sk ++;
        if (sk==n) break;
      }
    }
    catch (IOException e) {System.out.println("Ivedimo klaida");}
    catch (IndexOutOfBoundsException e) {System.out.println("Masyvo ribu klaida");}
    
    return A;
  }
        
        public static void sumuoti_trukme ( Grotuvas [] A, int n, String autsum) {
            int suma = 0;
            int eilute = 0;
            if (n > 0) {
                for (int i=0; i<n; i++) {
                    
                    if (autsum.trim().equals(A[i].gautiAutorius().trim())) {
                       suma += Integer.valueOf( A[i].gautiTrukme() ); 
                       eilute = eilute + 1;
                    }
                }
                System.out.println();
                System.out.println("Visų rasta autoriaus " + autsum + " dainų: " + eilute + ". " + "Dainų trukmė: " + suma);    		  
            }
        
        }
        
           
        public static void spausdinti_sar_ekrane ( Grotuvas [] A, int n) {
    if (n > 0) {
      spausdinti_antraste_ekrane ();
      System.out.println("******************************************************************");
      for (int i=0; i<n; i++) {
        System.out.println("* " + prailginti((i+1)+"", 3) +" * "+prailginti(A[i].gautiPavadinima(),17)+ " * "+ prailginti(A[i].gautiAutorius(),14)+ " * " +
              prailginti(A[i].gautiStilius()+"", 10) + " * " + prailginti(A[i].gautiTrukme()+"", 4) + " * ");
      }
      System.out.println("******************************************************************");
    }
    else System.out.println("Masyvas tuscias!");
  }
        
        public static void spausdinti_antraste_ekrane (){
    System.out.println("******************************************************************");
    System.out.println("* Nr. * Pavadinimas       * Autorius       * Stilius    * Trukmė *");
  }
        
        
        public static String prailginti (String reiksme, int ilgis){
    for (int i=reiksme.length(); i<ilgis; i++)
      reiksme += " ";
    return reiksme;
  }
        
        
        public static void spausdinti_sar_faile (PrintWriter rasyti, Grotuvas [] A, int n) {
    if (n > 0) {
      spausdinti_antraste_faile (rasyti);
      rasyti.println("******************************************************************");
      for (int i=0; i<n; i++) {
        rasyti.println("* " + prailginti((i+1)+"", 3) +" * "+prailginti(A[i].gautiPavadinima(),17)+ " * "+ prailginti(A[i].gautiAutorius(),14)+ " * " +
              prailginti(A[i].gautiStilius()+"", 10) + " * " + prailginti(A[i].gautiTrukme()+"", 4) + " * ");

      }
      rasyti.println("******************************************************************");
    }
    else rasyti.println("Masyvas tuscias!");
                
                
        rasyti.close(); // klasei PrintWriter IOException nemeta
     
  }
        
        public static void spausdinti_antraste_faile (PrintWriter rasyti){
    rasyti.println("******************************************************************");
                rasyti.println("* Nr. * Pavadinimas       * Autorius       * Stilius    * Trukmė *");
  }
        
    //metodas sukuria nauja, vienetu didesni masyva, nei buvo pries iterpima
    //ir i ji perkopijuoja pradinio masyvo duomenis   
        
    public static Grotuvas[] kopijuotiMas(Grotuvas A[], int n){
    Grotuvas A2[] = new Grotuvas[n];
    for (int i=0; i<n-1; i++ )
      A2[i]=A[i];
    return A2;
  }   
    
    // Įvedamas naujas masyvo elementas
    
    public static Grotuvas[] iterpti(Grotuvas G[], int n){
    BufferedReader in = new BufferedReader (new InputStreamReader (System.in));
    String pav, autorius, stilius;
    int trukme;
    int vieta;
    
    while (true){
      System.out.println("Įveskite dainos pavadinimą:");
      try {
        pav = in.readLine(); 
        break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
    }
    
    while (true){
      System.out.println("Įveskite dainos autorių:");
      try {
        autorius = in.readLine(); 
        break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
    }
    
    while (true){
      System.out.println("Iveskite dainos stilių. Pvz. Pop:");
      try {
        stilius = in.readLine(); 
        break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
    }
    
    while (true){
      System.out.println("Įveskite dainos trukmę sekundėmis:");
      try {
        trukme = Integer.parseInt(in.readLine());
        break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
                        catch (NumberFormatException e) {System.out.println("Ivedėte ne sveiką skaičių!");}
    }
    
    Grotuvas naujas = new Grotuvas(pav, autorius, stilius, trukme);
    
    while (true){
      System.out.println("Masyve yra " + (n-1) + " elementu. Įveskite į kurią eilutę įterpti naują įrašą(1 - "+ n +"):");
      try {
        vieta = Integer.parseInt(in.readLine()); 
        if (vieta > n) System.out.println("Įvedėte per didelį skaičių!");
        else if (vieta < 1) System.out.println("Įvedėte per mažą skaičių!");
        else break;
        }
      catch (IOException e) {System.out.println("!Duomenų įvedimo klaida.");}
      catch (NumberFormatException e) {System.out.println("Įvedėte ne sveiką skaičių!");}
    }
    
    for (int i=n-1; i>vieta-1; i--)
      G[i]=G[i-1];
    G[vieta-1]=naujas;
    
    return G;
  }
    
    public static Grotuvas[] salinti(Grotuvas G[], int n, int vieta){
    for (int i=vieta; i<n; i++)
      G[i]=G[i+1];
    return G;
  }
    
    
  
    
    public static void meniu () {
    
    
    System.out.println();
                System.out.println("_____________________________");
                System.out.println("Programos Grotuvas veiksmų meniu");
    System.out.println();
    System.out.println("1. Skaityti duomenis.");
    System.out.println("2. Spausdinti masyvą į rezultatų failą.");
    System.out.println("3. Įterpti naują dainą.");
    System.out.println("4. Ištrinti dainą iš sąrašo.");
    System.out.println("5. Surasti.");
    System.out.println("6. Baigti darbą.");
    System.out.println();
    System.out.println("Iveskite meniu nr.:");
  }
    
}

 

Tags:,

Add a Comment

Your email address will not be published. Required fields are marked *