KarolLNS Temat założony przez niniejszego użytkownika |
C++ Zamykanie programu ESC, sprawdzenie czy plik zapisany. Baza Danych » 2020-01-31 21:42:49 Cześć Pisałem dzisiaj program na zaliczenie semestru, Prosta baza danych z możliwością dodania, edycji, usunięcia użytkowników. Wszystko idzie w miarę ok (chociaż jest to bardzo amatorki program), jednak jednym z punktów jest: Zamykanie programu. Przed zamknięciem program ma sprawdzić czy plik został zapisany. Jeśli tak program kończy pracę, jeśli nie wyświetla komunikat, że nie zapisano zmian. Wtedy program pyta czy zapisać i wybieramy opcje tak albo nie. Nie program sie zamyka, tak zapisuje daje i się zamyka. Zawile napisane. W sumie nie wiem tylko jak napisać kod aby sprawdził czy plik był zapisany w tej sesji. Mogę liczyć na pomoc? case '7': if( tu chcialbym zeby program sprawdzil czy plik byl zapisany ) { return 0; cout << "Zamykanie programu" << endl; } else { char wyj; wyj = getch(); cout << "Nie zapisales pliku." << endl; cout << "Czy chcesz zapisac??" << endl; cout << "1. Zapisz zmiany." << endl; cout << "2. Zamknij bez zapisywania." << endl; cout << endl; switch( wyj ) { case '1': Zapisz(); break; case '2': system( "exit" ); break; } }
Nie wiem na ile to dobrze napisane. mogę wkleić cały kod jaki mam. kod na zapisanie pliku: void Zapisz() { ofstream plik( "uzytkownicy.txt", ios::out | ios::trunc ); plik << i; for( short j = 0; j < i; j++ ) { plik << uzytkownik[ j ].imie << endl; plik << uzytkownik[ j ].nazwisko << endl; plik << uzytkownik[ j ].wiek << endl; plik << uzytkownik[ j ].prawko << endl; plik << uzytkownik[ j ].kasa << endl; } cout << "Dane zostały zapisne w Bazie Danych. Wcisnij ENTER aby wrocic do MENU" << endl; getchar(); }
|
|
pekfos |
» 2020-01-31 22:12:21 Dodaj zmienną na to. bool czy_plik_byl_zapisany;
Ustaw na true przy zapisywaniu pliku i na false przy modyfikowaniu danych które zapisujesz. |
|
KarolLNS Temat założony przez niniejszego użytkownika |
» 2020-01-31 22:38:09 Nie do końca rozumiem jak to dokładnie napisać. Cały kod do końca main wygląda tak: #include <iostream> #include <conio.h> #include <fstream>
using namespace std;
struct uzytkownicy { string imie; string nazwisko; string prawko; float wiek; int kasa; };
short i; uzytkownicy uzytkownik[ 200 ];
void Dodaj(); void Wyswietl(); void Wyswietl_u(); void Wyswietl_e(); void Zapisz(); void Usun(); void Edytuj(); void Wczytaj(); void Wybor();
bool CPZ = Zapisz; bool PE = Edytuj;
main() { cout << "***************" << endl; cout << "**Baza danych**" << endl; cout << "***************" << endl; cout << "Karol Mync, Bartosz Myszkiewicz, ..." << endl; cout << "***************" << endl; cout << endl; cout << endl; char wybor; Wczytaj(); do { cout << "***************************" << endl; cout << "********** MENU ***********" << endl; cout << "***************************" << endl; cout << "1. Wyswietl Uzytkownikow " << endl; cout << "2. Wyszukaj Uzytkownika" << endl; cout << "3. Dodaj Uzytkownika" << endl; cout << "4. Usun Uzytkownika" << endl; cout << "5. Zmien dane Uzytkownika" << endl; cout << "6. Zapisz zmiany" << endl; cout << endl; cout << "ESC. Zamknij Aplikacje" << endl; cout << "***************************" << endl; cout << "***************************" << endl; cout << endl; wybor = getch(); switch( wybor ) { case '1': Wyswietl(); break; case '2': cout << "Wyszukaj ();" << endl; break; case '3': Dodaj(); break; case '4': Usun(); break; case '5': Edytuj(); break; case '6': Zapisz(); break; case '7': if( CPZ == true ) { return 0; cout << "Zamykanie programu" << endl; } if( PE == false ) { Wybor(); break; } } system( "cls" ); } while( wybor != 27 ); return 0; }
obecnie po wyborze 7 po prostu zamyka program. |
|
pekfos |
» 2020-01-31 23:01:25 Musisz modyfikować wartość zmiennej zgodnie z tym, jakie ma mieć znaczenie. Samo się to nie zrobi. Masz utrzymywać informację, czy są jakieś zmiany do zapisania. Zaraz po zapisaniu pliku, z definicji takich zmian nie ma, więc tam ustaw tą zmienną na "nie ma zmian do zapisania". Gdy zmieniasz jakieś dane, z tych które trafiają do pliku, ustaw tą zmienną na "są zmiany do zapisania". |
|
KarolLNS Temat założony przez niniejszego użytkownika |
» 2020-01-31 23:21:15 Niestety jestem początkujący i nie wiem jak to zrobić. Tego z zajęć nie pamiętam, może i nie było. Z resztą wiele rzeczy nie było, program zrobiłem z pomocą internetu i wyszukiwałem funkcję po funkcji jak ją napisać i na tym forum i na innych. Wiele przydatnych lekcji wziąłem z tego forum i to pomogło mi zrobić to co mam z czego jestem zadowolony.
Czy może ktoś napisać jak mniej więcej ma to wyglądać na podstawie mojego kodu?
Naprawdę nie rozumiem jak dodać bool do mojego kodu.
|
|
pekfos |
» 2020-02-01 00:09:02 No ale jak to na zajęciach nie było? To co było..? Chodzi tylko o dodanie jednej zmiennej i zaktualizowane jej w dwóch miejscach. Jeśli bool nie jest ci znane, to użyj dowolnego innego typu. Wymyśl sobie po jednej wartości na każdy z dwóch stanów o których pisałem i przypisz te wartości do tej zmiennej w odpowiednich momentach. |
|
KarolLNS Temat założony przez niniejszego użytkownika |
» 2020-02-01 15:03:17 Ok dzięki. Dużo pomogłem i myślałem o tym od rana, zrobiłem jak napisałeś, w każdej punkcji która miała odpowiadać na false albo true zdefiniowałem bool CPZ // czy program zapisany. w Zapisz dałem CPZ=true, w edytuj i usun CPZ=false. Na konie przy zamknij if(CPZ == true) to zamyka program w przeciwnym wypadku pisze czy zapisać czy zamknąć. Rzeczywiście było coś o zmiennej true false na zajęciach ale bardzo mało. Zaoczne studia i do tego na początku kilka zjazdów brak wykładowcy od programowania, później na szybko nauka wszystkiego i ciężko było ogarnąć.
Bardzo dziękuję za podpowiedź :) |
|
« 1 » |