Tehnici avansate de programare - tema 3
Temă „la cerere” :
Cerințe:
- Scrieți o aplicație care să gestioneze angajatii unei companii. Informațiile care vor descrie „obiectele” de tip angajat sînt: cod, nume, salariu.
Programul trebuie sa permită:- actualizarea mulțimii angajatilor (cel puțin adăugare)
- listarea angajatilor curenți
- salvarea acestora într-un fișier (text, binar sau xml) cu posibilitatea de restaurare
- generarea unui raport în format HTML (sau PDF, EXCEL etc) cu angajații companiei
Raportul HTML va fi de forma:
- Scrieți un program care să permită căutarea unui fișier cu un anumit nume sau care conține o anumită expresie regulată, într-un director specificat și recursiv, în subdirectoarele acestuia.
Rezolvări:
-
Clasa angajat:
-
-
package tema3;
-
-
import java.util.*;
-
import java.io.*;
-
-
{
-
private long cod;
-
private String nume;
-
private long salariu;
-
public Angajat ()
-
{
-
nume = "";
-
salariu = 0;
-
cod = 0;
-
}
-
{
-
this.cod = cod;
-
this.nume = nume;
-
this.salariu = salariu;
-
}
-
public void setCod (long cod)
-
{
-
this.cod = cod;
-
}
-
public long getCod ()
-
{
-
return this.cod;
-
}
-
{
-
this.nume = nume;
-
}
-
{
-
return this.nume;
-
}
-
public void setSalariu (long salariu)
-
{
-
this.salariu = salariu;
-
}
-
public long getSalariu ()
-
{
-
return this.salariu;
-
}
-
@Override
-
{
-
return cod + "\n~~~~\n" + "Nume: " + nume + "\n" + "Salariu: " + salariu +"\n\n";
-
}
-
}
Clasa angajați:
-
-
package tema3;
-
-
import java.util.*;
-
import java.io.*;
-
-
{
-
public Angajati ()
-
{
-
}
-
public void adauga (Angajat a)
-
{
-
int n = lista.size ();
-
for (int i = 0; i < n; i ++)
-
{
-
Angajat s = (Angajat) lista.get (i);
-
if (a.getCod () == s.getCod ())
-
{
-
return;
-
}
-
}
-
lista.add (a);
-
}
-
public void stergeAngajat (long cod_sters)
-
{
-
int n = lista.size ();
-
for (int i = 0; i < n; i ++)
-
{
-
Angajat s = (Angajat) lista.get (i);
-
if (s.getCod () == cod_sters)
-
{
-
lista.remove (i);
-
return;
-
}
-
}
-
}
-
public void modificaSalariu (long cod_sters, long sal)
-
{
-
int n = lista.size ();
-
for (int i = 0; i < n; i++)
-
{
-
Angajat s = (Angajat) lista.get (i);
-
if (s.getCod () == cod_sters)
-
{
-
s.setSalariu (sal);
-
return;
-
}
-
}
-
}
-
@Override
-
{
-
String s = "";
-
while (it.hasNext ())
-
{
-
Angajat a = (Angajat) it.next ();
-
s = s + a + "————————————————-"+"\n";
-
}
-
return s;
-
}
-
}
Clasa Main:
-
-
package tema3;
-
import java.io.*;
-
import java.util.*;
-
-
public class Main
-
{
-
{
-
Angajati lista = new Angajati ();
-
int OPT = 0;
-
do
-
{
-
try
-
{
-
}
-
{
-
}
-
switch (OPT)
-
{
-
case 0: break;
-
case 1: long cod, salariu;
-
String nume;
-
try
-
{
-
nume = stdin.readLine ();
-
Angajat angajat_nou = new Angajat (cod, nume, salariu);
-
lista.adauga (angajat_nou);
-
}
-
}
-
break;
-
case 2:
-
String lin;
-
try{
-
lin = stdin.readLine();
-
lista.stergeAngajat(cod_sters);
-
}
-
}
-
break;
-
case 3:
-
String lin4,lin5;
-
try{
-
lin4 = stdin.readLine();
-
lin5 = stdin.readLine();
-
lista.modificaSalariu(cod_mod, sal);
-
}
-
}
-
break;
-
case 4:
-
if(lista.lista.size () > 0){
-
}
-
else
-
{
-
}
-
break;
-
case 5:
-
try{
-
sout.writeObject(lista);
-
sout.flush();
-
sout.close();
-
fout.close();
-
}
-
}
-
break;
-
case 6:
-
try{
-
try {
-
lista = (Angajati) sin.readObject();
-
}
-
}
-
sin.close();
-
fin.close();
-
}
-
{
-
}
-
break;
-
case 7:
-
try{
-
if(file!= null)
-
{
-
file.write("<head>\n<title>\nAngajati\n</title>\n</head>\n<body>\n<table border=’2′ cellpading=’2′>\n<tr bgcolor=’yellow’>\n<th>\nCod</th>\n<th>\nNume\n</th>\n<th>\nSalariu\n</th>\n</tr>");
-
for (int i=0; i < lista .lista.size (); i ++) {
-
file.write("<tr>\n");
-
Angajat s = (Angajat) lista.lista.get (i);
-
file.write("<td>" + s.getCod () + "</td>\n");
-
file.write("<td>" + s.getNume () + "</td>\n");
-
file.write("<td>" + s.getSalariu () + "</td>\n");
-
file.write("\n");
-
}
-
file.close();
-
}
-
}
-
{
-
}
-
break;
-
default:
-
break;
-
}
-
}while(!(OPT==0));
-
}
-
}
-
-
-
-
package tema3_2;
-
-
import java.util.*;
-
import java.io.*;
-
import java.util.regex.*;
-
-
public class Main
-
{
-
{
-
try
-
{
-
String line;
-
if (dir.isFile ())
-
{
-
if (dir.getName ().equals (nfile))
-
{
-
}
-
Pattern pattern = Pattern.compile(exp);
-
try
-
{
-
while ((line = in.readLine ()) != null)
-
{
-
Matcher matcher = pattern.matcher (line);
-
if (matcher.find ())
-
{
-
System.out.println("Expresia a fost gasita in fiserul "+dir.getName()+", folderul "+dir.getParent());
-
break;
-
}
-
}
-
in.close();
-
}
-
{
-
}
-
}
-
else
-
{
-
list = dir.listFiles ();
-
for (int i = 0; i < list.length; i ++)
-
{
-
search (exp, list [i], nfile);
-
}
-
}
-
}
-
{
-
}
-
}
-
-
{
-
String fdir="test1";
-
String nfile="abcd.txt";
-
String exp="a*b";
-
search (exp, dir, nfile);
-
}
-
}
-
NOTĂ:
Rezolvările de mai sus îmi aparțin și nu voi face alte comentarii în cadrul lor…
Martie 24, 2008 | Filed Under Java, Programare
Comments
5 Responses to “Tehnici avansate de programare - tema 3”
Leave a Reply

mersi de cod
N-ai pentru ce și cred că e penultima temă pe care o fac publică. Motivele cred că sînt evidente!
ar fi sanse k ultima tema p kre o postezi sa fie tema 2 la haskell? m-ai ajuta mult dak ai face asta…..ms mult
da
, atunci o asteptam pe ultima 
andrei: comentariul tău a fost prins în filtrul de spam (nu știu de ce). Voi încerca să rezolv tema 2 la PF și să ajut pe cine are nevoie de ajutor. De aici înțelege fiecare ce vrea.