Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

rad s datotekama

[es] :: C/C++ programiranje :: rad s datotekama

[ Pregleda: 1616 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nessoken
Nedodjija

Član broj: 68910
Poruke: 1
*.adsl.net.t-com.hr.



Profil

icon rad s datotekama09.11.2006. u 23:13 - pre 212 meseci
pozdrav!!
trebam pomoc oko zadatka koji glasi ovako:
Jednostavna datoteka s podacima o studentima (s fiksnom veličinom zapisa; zapis sadrži matični broj, prezime i ime studenta i broj položenih ispita). Ponuditi korisniku izbornik s osnovnim operacijama (kreiranje datoteke, unos podataka, ispis podataka, pretraživanje zapisa, ispis vremena pretraživanja). Kod pretraživanja izmjeriti vrijeme pronalaženja podatka u datoteci i smjestiti podatak o tome u odgovarajuće polje (svaki element polja odnosi se na odgovarajući zapis u datoteci; prije ulaska u glavni izbornik svi elementi polja trebaju se inicijalizirati nulama).
Kod ispisa vremena pretraživanja uz svako izmjereno vrijeme ispisati odgovarajući zapis u datoteci (ispisuju se samo izmjerena vremena; ne početne nule). Koristiti biblioteku za mjerenje vremena proširenu funkcijom za unos znakovnih nizova.

napravio sam nest, sluzeci se primjerima s predavanja, iako mi neki postupci nisu jasni.
treba mi preinaka programa, koja ce nakon kreiranja datoteke koristiti istu tu datoteku za citanje/upis podataka. isto tako treba mi i petlja koja provjerava da li je datoteka kreirana, a ako nije, ne izbacuje error, vec daje obavijest da datoteka nije kreirana...

Code:
#include <iostream>
#include <fstream>
#include "vrijeme.cpp"
using namespace std;
struct tstudent{   
   int mat_br;
   char prez_ime[35];
   int g_stu;
   int brispita;
};
tstudent student;
fstream dat;
char naziv_datoteke[40];
void kreiranje_datoteke(){
   cout << "Unesite naziv datoteke u koju cete spremati podatke:";
   cin >> naziv_datoteke;
   dat.open(naziv_datoteke,ios::in | ios::binary);
   if (!dat){
      dat.open(naziv_datoteke,ios::out | ios::binary);
      dat.close();
   } else {
      cout << "Datoteka " << naziv_datoteke << " vec postoji na disku."<<endl;
      dat.close();
   }
   dat.clear();
   
};
void unos_podataka(){
   char dalje;
   dat.open(naziv_datoteke, ios::out | ios::app | ios::binary);
        do{
                          dat.seekg(0,ios::end);
         cout << "Maticni broj:";
         cin >> student.mat_br;
         cout << "Prezime i ime:";
         unos (student.prez_ime);
         cout << "Godina studija:";
         cin >> student.g_stu;
         cout << "Broj polozenih ispita:";
         cin >> student.brispita;
         dat.write((char *) &student,sizeof(student));
         cout << "Dalje? (d/n)";
         cin >> dalje;
      } while (dalje=='d');
      dat.close();
      dat.clear();
};
void ispis_podataka(){
      dat.open(naziv_datoteke,ios::in | ios::binary);
         while (1){
            dat.read((char *) &student,sizeof(student));
            if (dat.eof()) break;
            cout << "Maticni broj: " << student.mat_br << endl;
            cout << "Prezime i ime: " << student.prez_ime << endl;
            cout << "Godina studija: " << student.g_stu << endl;
            cout << "Broj polozenih ispita: " << student.brispita << endl;
         }
      dat.close();
      dat.clear();

};

void trazi(double *polje){
      int mb=0;
      int brojac=0;
      cout <<"Maticni broj studenta: "; cin >> mb;
      vrijeme_pocetak();
      dat.open(naziv_datoteke, ios::in | ios::binary);
         while (1){
            dat.read((char *) &student,sizeof(student));
            if (dat.eof()) break;
            if (student.mat_br==mb){
               cout << "Maticni broj: " << student.mat_br << endl;
               cout << "Prezime i ime: " << student.prez_ime << endl;
               cout << "Godina studija: " << student.g_stu << endl;
               cout << "Broj polozenih ispita: " << student.brispita << endl;
               vrijeme_kraj();
               polje[brojac]= vrijeme_proteklo();
            }
            brojac++;
         }
      if (brojac==0)
         cout << "Student s maticnim brojem " << mb << " nije nadjen u datoteci."<<endl;
      dat.close();
      dat.clear();
};
void ispis_vremena(double *polje){
      int brojac=0;
      dat.open(naziv_datoteke,ios::in | ios::binary);
         while (1){
            dat.read((char *) &student,sizeof(student));
            if (dat.eof()) break;
            if (polje[brojac] != -1) {
               cout << "Maticni broj: " << student.mat_br << endl;
               cout << "Prezime i ime: " << student.prez_ime << endl;
               cout << "Godina studija: " << student.g_stu << endl;
                cout << "Broj polozenih ispita: " << student.brispita << endl;
               cout << "Vremena proslo: " << polje[brojac] << endl;
            }
            brojac++;
         }
      dat.close();
      dat.clear();

};
int main(){
int izbor;
  int n = 9999;
  double *polje = new double[n];
  for (int i=0; i<=n; i++) polje[i] = -1;

do{ cout <<"Izaberite :" <<endl<<endl;
   cout <<"1. Kreiranje datoteke"<<endl;
   cout <<"2. Unos podataka u datoteku"<<endl;
   cout <<"3. Ispis svih zapisa iz datoteke"<<endl;
   cout <<"4. Ispis podataka o zadanom studentu"<<endl;
   cout <<"5. Ispis o vremenu"<<endl;
   cout <<"9. Izlaz iz programa"<<endl;
   cin >> izbor;
   switch (izbor){
      case 1:kreiranje_datoteke();break;
      case 2:unos_podataka();break;
      case 3:ispis_podataka();break;
      case 4:trazi(polje); break;
      case 5:ispis_vremena(polje);break;
  }
 } while (izbor != 9);
 return 1;
}


hvala unaprijed na pomoci
Prikačeni fajlovi
 
Odgovor na temu

[es] :: C/C++ programiranje :: rad s datotekama

[ Pregleda: 1616 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.