úprava záznamu v Javě – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

úprava záznamu v Javě – Java – Fórum – Programujte.comúprava záznamu v Javě – Java – Fórum – Programujte.com

 

Pírko0
Duch
25. 6. 2013   #1
-
0
-

Ahoj, ve škole jsme dostali za úkol udělat menší projekt. Mám ho skoro hotov, jen nemůžu přijít na to, jak upravit záznam. Mohl by mi někdo prosím poradit?

Zadání bylo: Požadovaná funkčnost z pohledu uživatele:
                   přidání, úprava, smazání a zobrazení záznamu,
                   vyhledávání a řazení dat,
                   ukládání a načítání dat ze souboru.
 

package cz.uhk.fim.formy.app;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;

import cz.uhk.fim.formy.data.Forma;
import cz.uhk.fim.formy.data.SkladForem;
import fim.utils.Application;

public class SkladApp extends Application{

private SkladForem sklad = new SkladForem();
@Override
public void start() {
  out.setTitle("S.K.L.A.D. F.O.R.E.M");
  buttons.add("Pridat", 1000);
  buttons.add("Smazat", 1001);
  buttons.add("Vypsat", 1002);
  buttons.add("Ulozit", 1003);
  buttons.add("Nacist", 1004);
  buttons.add("Najit", 1005);
  buttons.add("Seradit", 1006);
  buttons.add("upravit", 1007);  
}
@Override
public void handleMenu(int zkratka){
   switch (zkratka) {
   case 1000:
    pridej();
    out.clearScreen();
    vypis(sklad.getFormy());
    break;

   case 1001:
    smaz();
    out.clearScreen();
    vypis(sklad.getFormy());
    break;
   case 1002:
    vypis(sklad.getFormy());
    break;
   case 1003:
    ulozit();
    break;
   case 1004:
    nacist();
    break;
   case 1005:
    hledat();
    break;
   case 1006:
    out.clearScreen();
    sklad.seraditDleOznaceni();
    vypis(sklad.getFormy());
    break;  
   }  
}
private void hledat() {
  String oznaceni = in.readString("Zadej zacatek oznaceni");
  out.clearScreen();
  out.println("Nalezene oznaceni");
  vypis(sklad.najdiDleOznaceni(oznaceni)); 
}
private void nacist() {
  ObjectInputStream input = null;
  try {
     input = new ObjectInputStream(new FileInputStream("sklad.dat"));
    } catch (FileNotFoundException e) {
     out.println("Chyba: soubor neexistuje");
     e.printStackTrace();
    } catch (IOException e) {
     out.println("Chyba: Nacteni se nepodarilo");
     e.printStackTrace();   
    } finally {
     if (input!=null){
      try {
        input.close();
      } catch (IOException e) {
       e.printStackTrace();
      }
     }
    } 
}
private void ulozit() {
  ObjectOutputStream output = null;
  try {
    output = new ObjectOutputStream(new FileOutputStream("sklad.dat"));   
     output.writeObject(sklad);
    } catch (IOException e) {
     out.println("Chyba: Ulozeni se nepodarilo");
     e.printStackTrace();
  }finally { 
     try{
       if (output!=null){output.close();
       }
     }catch (IOException e) {
      e.printStackTrace();
     }    
  }
}
private void smaz() {
  int poradi = in.readInt("Zadej poradi formy",1);
  sklad.smazat(poradi-1);
}
private void vypis(List<Forma> formy) {
  for (Forma f : formy){
   out.println(
     String.format("%d, %s, %d, %d",
       f.getArticle(),f.getOznaceni(),f.getVnejsiPruper(),f.getVyska()
       )
      );
  } 
}
private void pridej() {
  int article = in.readInt("Zadej article");
  String oznaceni = in.readString("Zadej oznaceni");
  int vnejsiPrumer = in.readInt("Zadej vnejsi prumer");
  int vyska = in.readInt("Zadej vysku"); 
   {
     Forma f = new Forma(article, oznaceni, vnejsiPrumer, vyska);
     sklad.pridej(f);
    }
}
public static void main(String[] args) {
  new SkladApp().start();
}

}

package cz.uhk.fim.formy.data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SkladForem implements Serializable {

private static final long serialVersionUID = -5851240750228722731L;
private List<Forma> formy = new ArrayList<>();
 
public List<Forma> getFormy() {
   return formy;
}
public void seraditDleOznaceni() {
  Comparator<Forma> c = new Comparator<Forma>() {
  
   @Override
   public int compare(Forma o1, Forma o2) {
    return o1.getOznaceni().compareTo(o2.getOznaceni());
   }
  };
  Collections.sort(formy, c);
}
public void pridej(Forma f) {
  formy.add(f); 
}
public void smazat(int poradi) {
  formy.remove(poradi); 
}
public List<Forma> najdiDleOznaceni(String oznaceni) {
  List<Forma> vysledek = new ArrayList<>();
  for (Forma forma : formy){
   if (forma.getOznaceni().toLowerCase()
     .startsWith(oznaceni.toLowerCase())){
    vysledek.add(forma);
   }      
  }
  return vysledek;
}
}

package cz.uhk.fim.formy.data;

import java.io.Serializable;

public class Forma implements Serializable{

private static final long serialVersionUID = 5427565051961981956L;
private int article;
private String oznaceni;
private int vnejsiPruper;
private int vyska;

public Forma(){}

public Forma(int article, String oznaceni, int vnejsiPrumer, int vyska){
  super();
  this.article = article;
  this.oznaceni = oznaceni;
  this.vnejsiPruper = vnejsiPrumer;
  this.vyska = vyska; 
}
public int getArticle() {
  return article;
}
public void setArticle(int article) {
  this.article = article;
}
public String getOznaceni() {
  return oznaceni;
}
public void setOznaceni(String oznaceni) {
  this.oznaceni = oznaceni;
}
public int getVnejsiPruper() {
  return vnejsiPruper;
}
public void setVnejsiPruper(int vnejsiPruper) {
  this.vnejsiPruper = vnejsiPruper;
}
public int getVyska() {
  return vyska;
}
public void setVyska(int vyska) {
  this.vyska = vyska;
}
}

Nahlásit jako SPAM
IP: 178.77.232.–
zlz
~ Anonymní uživatel
634 příspěvků
25. 6. 2013   #2
-
0
-

jak upravit záznam

No, najdeš ho a upravíš hodnoty, nebo ho smažeš a přidáš nový. Potřebné/podobné metody už tam máš. Nepochopil jsem s čím potřebuješ poradit.

Nahlásit jako SPAM
IP: 78.156.159.–
Pírko0
Duch
26. 6. 2013   #3
-
0
-

#2 zlz



Chtěl jsem to udělat podobně jako mám řešené tlačítko smazat.
Takže abych vybral pořadí, které upravím. Začali mi tam ale vyskakovat chyby, tak sem to zas vrátil do původního stavu.

Není nějakej příkaz na úpravu podobně jako je remove při smazání.
Asi v tom hledám zbytečný složitost.

Nahlásit jako SPAM
IP: 178.77.232.–
zlz
~ Anonymní uživatel
634 příspěvků
26. 6. 2013   #4
-
0
-

Nahradit položku listu můžeš metodou .set(poradi, novahodnota).

Nahlásit jako SPAM
IP: 78.156.159.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

O Jave — založil echo112

Vyber od zaznamu +- 2 — založil Pilot

Vlákna v Jave? — založil wokena

Ukol v Javě — založil Frantisek

Příklady v JAVĚ — založil Petrr

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý