Documente Academic
Documente Profesional
Documente Cultură
4
Tema: Fișiere
Scopul: utilizarea fișierelor pentru scrierea programelor în limbajul de
programare C++.
Sarcini
Scrieți un program care permite utilizatorului să selecteze unul din punctele meniului
fișier; modificarea datelor din fișier; eliminarea datelor din fișier; căutarea datelor în
fișier conform căruiva criteriu; sortarea datelor din fișier; ieșirea din program ș.a.).
Tema, pe baza căreia trebuie să creați fișierul este aceiași ca și la lucrarea de laborator
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
struct TehnicaCalcul {
int nr;
std::string denumire;
std::string model;
float pret;
int anEditare;
std::string tara;
};
void afisareMeniu() {
std::cout << "1. Creare fisier din structuri" << std::endl;
std::cout << "2. Afisare continut fisier" << std::endl;
std::cout << "3. Adaugare date in fisier" << std::endl;
std::cout << "4. Modificare date in fisier" << std::endl;
std::cout << "5. Eliminare date din fisier" << std::endl;
std::cout << "6. Cautare date in fisier conform criteriului" <<
std::endl;
std::cout << "7. Sortare date in fisier" << std::endl;
std::cout << "8. Iesire din program" << std::endl;
}
if (fisier.is_open()) {
for (const auto &tehnica : vectorTehnicaCalcul) {
fisier.write(reinterpret_cast<const char*>(&tehnica),
sizeof(TehnicaCalcul));
}
fisier.close();
} else {
std::cerr << "Eroare la deschiderea fisierului pentru scriere." <<
std::endl;
}
}
if (fisier.is_open()) {
vectorTehnicaCalcul.clear();
while (!fisier.eof()) {
TehnicaCalcul tehnica;
fisier.read(reinterpret_cast<char*>(&tehnica),
sizeof(TehnicaCalcul));
if (!fisier.eof()) {
vectorTehnicaCalcul.push_back(tehnica);
}
}
fisier.close();
} else {
std::cerr << "Eroare la deschiderea fisierului pentru citire." <<
std::endl;
}
}
int main() {
std::vector<TehnicaCalcul> vectorTehnicaCalcul;
const std::string numeFisier = "tehnica.dat";
while (true) {
afisareMeniu();
int optiune;
std::cout << "Introduceti optiunea: ";
std::cin >> optiune;
switch (optiune) {
case 1: {
TehnicaCalcul tehnica;
std::cout << "Introduceti numarul: "; std::cin >>
tehnica.nr;
std::cout << "Introduceti denumirea: "; std::cin >>
tehnica.denumire;
std::cout << "Introduceti modelul: "; std::cin >>
tehnica.model;
std::cout << "Introduceti pretul: "; std::cin >>
tehnica.pret;
std::cout << "Introduceti anul editarii: "; std::cin >>
tehnica.anEditare;
std::cout << "Introduceti tara: "; std::cin >> tehnica.tara;
vectorTehnicaCalcul.push_back(tehnica);
scrieInFisier(numeFisier, vectorTehnicaCalcul);
std::cout << "Fisier creat cu succes." << std::endl;
break;
}
case 2: {
citesteDinFisier(numeFisier, vectorTehnicaCalcul);
if (vectorTehnicaCalcul.empty()) {
std::cout << "Fisierul este gol." << std::endl;
} else {
std::cout << "Continutul fisierului:" << std::endl;
for (const auto &tehnica : vectorTehnicaCalcul) {
afisareTehnica(tehnica);
}
}
break;
}
case 8: {
std::cout << "Programul s-a incheiat." << std::endl;
return 0;
}
default:
std::cout << "Optiune invalida. Va rugam sa introduceti o
optiune valida." << std::endl;
}
}
return 0;
}