Skocz do zawartości

Zapis do pliku i wyszukiwanie(cos nie tak)


gsmfun

Rekomendowane odpowiedzi

Mam problem z zapisem do pliku w ponizszym programie.......zamiast dopisac do pliku to program nadpisuje go....tzn po uruchomieniu programu ''dodamy abonenta'' zapiszemy i odczytamy to poprzedni abonenci nam znikną a zostana zapisani ci wpisanie ''przed chwila w programie''.....a drugie: ... jak uruchomimy program zczytamy z pliku i chcemy uruchomic wyszukiwarke to wywala polecenie ''lista jest pusta'' a w pliku txt mamy zapisanego abonenta.....

Prosilbym o pomoc w ten sprawie

 

#include <iomanip>

#include <iostream>

#include <cstdlib>

#include <cstring>

#include <cctype>

#include <fstream>

#include <conio.h>

#include <stdio.h>

#include <windows.h>

 

 

using namespace std;

const int MAX = 100;

const int STUD = 100;

const char* Nazwa = "osoby.txt";

int licz_abonent = 0;

extern "C" void __stdcall Sleep(DWORD dwMilliseconds);

 

 

 

struct abonent {

char nazwisko[MAX], imie[MAX];

int telefon;

};

abonent *tablica_ab[sTUD];

 

void Dodaj() {

abonent *nowy_abonent;

nowy_abonent = new abonent;

cout << "Podaj nazwisko: ";cin.getline(nowy_abonent->nazwisko, MAX);

cout << "Podaj imie: ";cin.getline(nowy_abonent->imie, MAX);

int i, dlug = strlen(nowy_abonent->nazwisko);

nowy_abonent->nazwisko[0] = toupper(nowy_abonent->nazwisko[0]);

for (i = 1;i < dlug;i++) nowy_abonent->nazwisko = tolower(nowy_abonent->nazwisko);

nowy_abonent->imie[0] = toupper(nowy_abonent->imie[0]);

dlug = strlen(nowy_abonent->imie);

for (i = 1;i < dlug;i++) nowy_abonent->imie = tolower(nowy_abonent->imie);

cout << "Podaj Nr.telefonu: ";

cin >> nowy_abonent->telefon;

cin.get();

tablica_ab[licz_abonent] = nowy_abonent;

licz_abonent++;

}

 

void Znajdz() {

 

char szukaj[MAX];

if (licz_abonent == 0) {cout << "Lista jest pusta" << endl;} else {

cout << "Podaj szukane nazwisko ";

cin >> szukaj;cin.get();

szukaj[0] = toupper(szukaj[0]);

cout << setw(10) << "Nazwisko" << setw(10) << "Imie" << setw(10) << "Telefon" << endl;

for (int i = 0; i < licz_abonent; i++) {

if (strcmp(tablica_ab->nazwisko, szukaj) == 0) {

cout << setw(10) << tablica_ab->nazwisko << setw(10) << tablica_ab->imie << setw(10) << tablica_ab->telefon << endl;

} else cout << "Nie ma takiego abonenta" << endl;

}

}

}

 

void Usun() {

 

char usun[MAX];

cout << "Podaj nazwisko do usuniecia" << endl;

cin >> usun; cin.get();

int i, dlug = strlen(usun);

usun[0] = toupper(usun[0]);

for (int i = 1;i < dlug;i++) usun = tolower(usun);

for (int i = 0; i < licz_abonent; i++) {

if (strcmp(tablica_ab->nazwisko, usun) == 0) {

delete tablica_ab; for (int j = i;j < licz_abonent;j++) tablica_ab[j] = tablica_ab[j+1];

licz_abonent--;

}

}

}

 

void fnZapisz(char* Nazwa = "osoby.txt") {

 

if (licz_abonent == 0) {

cout << "Nie ma czego zapisac" << endl;

return;

}

ofstream plik_zap(Nazwa);

if (!plik_zap) {

cerr << "\n\aPliku " << Nazwa << " nie udalo sie otworzyc\n" << endl;

} else {

cout << "zapisuje do pliku:\n";

for (int i = 0;i < licz_abonent;i++) {

plik_zap << tablica_ab->nazwisko << "," << tablica_ab->imie

<< "," << tablica_ab->telefon << endl;

cout << tablica_ab->nazwisko << ' ' << tablica_ab->imie

<< ' ' << tablica_ab->telefon << endl;

}

plik_zap.close();

}

}

 

void fnOdczyt(char *Nazwa = "osoby.txt") {

 

ifstream plik_odcz;

plik_odcz.open(Nazwa);

if (!plik_odcz) {

cerr << "\nBRAK PLIKU: " << Nazwa << endl;

} else {

cout << "Odczytuje z pliku:\n";

cout << plik_odcz.rdbuf();

plik_odcz.close();

}

}

 

int main() {

char z;

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);

 

 

while (1) {

cout << "\n==M===E===N===U===" << endl;

Sleep(100);

cout << "\n1 - Dodaj abonenta ksiazki" << endl;

Sleep(100);

cout << "\n2 - Znajdz abonenta" << endl;

Sleep(100);

cout << "\n3 - Usun abonenta ksiazki" << endl;

Sleep(100);

cout << "\n4 - Zapisz do pliku" << endl;

Sleep(100);

cout << "\n5 - Odczytytaj z pliku" << endl;

Sleep(100);

cout << "\nW - Wyjscie" << endl;

z = getch();

switch (z) {

case 'W': return EXIT_SUCCESS;

case 'w': return EXIT_SUCCESS;

case '1': Dodaj();break;

case '2': Znajdz();break;

case '3': Usun();break;

case '5': fnOdczyt(); break;

case '4': fnZapisz(); break;

}

}

 

system("PAUSE");

return EXIT_SUCCESS;

}

Odnośnik do komentarza
Udostępnij na innych stronach

dzieki append dziala;)) tylko teraz mam problem z ''znajdz'' w ogole nie dziala tylko ostatni element dopisany od pliku jest wyszukiwany a reszta nie wchodzi w gre......

 

a zmienilem to

 

 

ofstream plik_zap(Nazwa, std::ios::app);

 

 

moglby ktos to przebudowac albo podac wskazowki gdzie co zmienic(taka prosba:)).. bo juz sil nie mam ja kcos zmienie w jednym miejscu to drugie nie dziala;/ ..a to pilna sprawa!!

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...