Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

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.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/*
* 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.:");
}
}
/* * 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.:"); } }
/*
 * 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.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/*
* 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.:");
}
}
/* * 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.:"); } }
/*
 * 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.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/*
* 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.:");
}
}
/* * 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.:"); } }
/*
 * 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.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/*
* 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.:");
}
}
/* * 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.:"); } }
/*
 * 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ę.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/*
* 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.:");
}
}
/* * 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.:"); } }
/*
 * 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 *

Buy Me A Coffee
Thank you for visiting. You can now buy me a coffee!