Powrót   Forum CDRinfo.pl > Różne > Off topic

Off topic Forum poświęcone wszelkim innym tematom.



Witaj Nieznajomy! Zaloguj się lub Zarejestruj

Zarejestrowani użytkownicy mają dostęp do dodatkowych opcji, lepszej wyszukiwarki oraz mniejszej ilości reklam. Rejestracja jest całkowicie darmowa!

 
 
Opcje związane z dyskusją Tryby wyświetlania
Prev Poprzedni post   Następny post Next
Stary 12.05.2007, 12:01   #7
Kasprzak
...niepoprawny marzyciel.
 
Avatar użytkownika Kasprzak
 
Data rejestracji: 25.06.2002
Lokalizacja: Poznań
Posty: 4,752
Kasprzak zaczyna zdobywać reputację <1 - 49 pkt>
odswiezam troche stary temat, ale poszukuje programu, oparty na obiektowym (klasy i dziedziczenie jakies itp.), ktore zawiera jakies dane (np. ksiazka telefoniczna - imie, nazwisko, telefon i takie tam). Ktore by przy otwarciu programu wczytywalo plik (na samym poczatku funkcja zapisu w mainie by byla wywolywana, a na koncu zapisywalo zmiany (funkcja na koncu by byla wywolywana)
Glownie chodzi o zrobienie takiej bazy na klasach zeby cos dziedziczylo itp. Niby proste, ale nie moge sobie z tym poradzic

ps. i nie wiem jak napisac modyfikacje wpisu (np. wyswietla sie:
Edytujesz:
id[3] Jan, Kowalski, 232424324, cos tam
wpisz nowe Imie,Nazwisko,Nr,Cos tam. np.


napisalem cos takiego i nie dziala (narazie funkcje wstawilem tak zeby sprawdzic czy dziala wywolanie - takze nie robia sie na wstpie i koncu programu ale to pozniej... i ogolnie tak: w DevC++ nie wywala bledu, ale zapisuje plik w takiej formie ze nie do odczytu, Borland Personal 6 wywala blad debuggera jakis z alokacja pamieci chyba. Co to moze byc. :
Kod:
#include <cstdlib>
#include <iostream>
#include <fstream>

#define MAX_WPISOW 100

using namespace std;

class TKsiazka {
      private:
              struct SWpis { // struktura wpisu kazdego jednego :)
                     int id; // tutaj id do kasowania/zerowania
                     string imie, nazwisko;
                     long int nrtel;
              } Wpis[MAX_WPISOW]; // maksymalnie 11 bo liczac od 0
      public:
             TKsiazka(); // konstruktor
             void dodaj(string imie, string nazwisko, long int nr);
             void zapiszDoPliku(char *sciezka);
             void zaladuj(char *sciezka);
             int wolny(void);
             string pokaimie(int id);
};

// wyzerowanie calej tsblicy wpisow, zawczasu :)
TKsiazka::TKsiazka() {
                 for (int i=0;i<MAX_WPISOW;i++)
                     Wpis[i].nrtel = 0;
}

string TKsiazka::pokaimie(int id) {
       return Wpis[id].imie+"\n";
}

void TKsiazka::zaladuj(char *sciezka) {
     FILE *fd;
     
     fd = fopen(sciezka, "r");
     
     if (!fd) {
              cout << "Nie moge otworzyc pliku." << endl;
              return;
     }
     
     //fseek(fd, 0, SEEK_SET);
     //while (!feof(fd))
           fread(&Wpis, sizeof(Wpis), 1, fd);
}

void TKsiazka::dodaj(string imie, string nazwisko, long int nr) {
     int i = wolny(); // zmienna i ma id pierwszego wolnego wpisu, ktory zostanie zapisany pod tym id.
     
     Wpis[i].id = i;
     Wpis[i].imie = imie;
     Wpis[i].nazwisko = nazwisko;
     Wpis[i].nrtel = nr;
}

int TKsiazka::wolny(void) {
    for (int i=0;i<MAX_WPISOW;i++)
        if (!Wpis[i].imie.length())
           return i;
}

void TKsiazka::zapiszDoPliku(char *sciezka) {
     FILE *fd;
     
     fd = fopen(sciezka, "w+");
     
     for (int i=0;Wpis[i].nrtel;i++)
         fwrite(&Wpis, sizeof(Wpis), 1, fd);
     
     /*ofstream fd;
    
     fd.open(sciezka);
     
     for (int i=0;Wpis[i].nrtel;i++) {
         fd << Wpis[i].id << endl;
         fd << Wpis[i].imie << endl;
         fd << Wpis[i].nazwisko << endl;
         fd << Wpis[i].nrtel << endl;
     }
     
     fd.close();
     */
}

// otwieranie analogicznie tyle ze zmienna juz bedzie ifstream

int main(int argc, char *argv[])
{
    TKsiazka ktel;
    string i, n;
    long int nr;
    
    cout << "Podaj imie potem nazwisko i numer" << endl;
    cin >> i >> n >> nr;
    
    ktel.dodaj(i, n, nr);
    ktel.zapiszDoPliku("dupka.txt");
    ktel.zaladuj("dupka.txt");
    
    cout << ktel.pokaimie(0);
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
__________________
Pozdrawiam!
Kasprzak jest offline   Odpowiedz cytując ten post
 


Twoje uprawnienia:
Nie możesz rozpoczynać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz umieszczać załączników
Nie możesz edytować swoich postów

BB codeWłączone
EmotikonkiWłączone
Kody [IMG]Włączone
Kody HTML są Wyłączone

Teleport


Wszystkie czasy w strefie CET. Aktualna godzina: 16:58.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.