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;
}
}