mazur00015 Temat założony przez niniejszego użytkownika |
Baza Danych » 2011-02-02 19:38:56 Witam wszystkich użytkowników.
Dostałem zadanie napisania "Bazy Danych Pacjentów" zrobiłem wszystko co trzeba było "ale"....
Gdy wpisuje do bazy w miejscu opisu świadczenia więcej niż jeden wyraz, to kolejne pola odpowiednio ile wpisałem wyrazów tyle zostaje pustych ( wiem że to trochę niezrozumiałe dlatego zilustruje na przykładzie )
Ile ma być pacjentów : // podaj liczbę 12312 Imie Tadek Nazwisko Kowalski Data przyjecia 1997 Opis Bolala go glowa Imie Nazwisko } W miejscu opisu świadczenia wpisałem 3 wyrazy, i jak widać w kolejne 3 rekordy są puste :| Data przyjecia
Co zrobiłem nie tak ? Czy ktoś mógłby mi udzielić wskazówek, jak to obejść ?
Z góry dziękuje :}
|
|
WiecznyWem |
» 2011-02-02 19:42:59 Nie wiem czy bym wiedział, ale wiem, że bez kodu źródłowego ani rusz. ;) Chyba, że to MySQL to podaj budowę tabeli i skrypt wpisujący pacjenta. |
|
LukiPRO |
» 2011-02-02 19:43:18 hmm może byś pokazał kod?
UP hmm ale mi się wydaje że to temat o C/C++ a nie MySQL ? sry nie temat tylko dział :D |
|
mazur00015 Temat założony przez niniejszego użytkownika |
» 2011-02-02 19:50:28 #include <iostream> #include <string> #include <fstream> using namespace std;
struct Pacjent { int ID; string Imie; string Nazwisko; string Opis; int Data_przyjecia; };
void dodaj_do_bazy( char * in, Pacjent * s, int n ) { ofstream plik; plik.open( in ); for( int i = 0; i < n; ++i ) { s[ i ].ID = i + 1; plik << s[ i ].ID << endl; cout << "Podaj Imie :\n"; cin >> s[ i ].Imie; plik << s[ i ].Imie << endl; cout << "Podaj Nazwisko :\n"; cin >> s[ i ].Nazwisko; plik << s[ i ].Nazwisko << endl; cout << "Podaj Date przyjecia :\n"; cin >> s[ i ].Data_przyjecia; plik << s[ i ].Data_przyjecia << endl; cout << "Podaj Opis swiadczenia :\n"; cin >> s[ i ].Opis; plik << s[ i ].Opis << endl; plik << "\n\n"; } plik.close(); }
int rozmiar( char * in ) { string Nazwisko, Imie, Opis; int Data_przyjecia, ID; ifstream plik; plik.open( in ); int rozm = 0; while( !plik.eof() ) { plik >> ID; plik >> Imie; plik >> Nazwisko; plik >> Data_przyjecia; plik >> Opis; rozm += 1; } plik.close(); return rozm; }
void zpliku( char * in, Pacjent * s, int n ) { ifstream plik; plik.open( in ); for( int i = 0; i < n; ++i ) { plik >> s[ i ].ID; plik >> s[ i ].Imie; plik >> s[ i ].Nazwisko; plik >> s[ i ].Data_przyjecia; plik >> s[ i ].Opis; } }
void wypisz( Pacjent * s, int n ) { for( int i = 0; i < n; ++i ) { cout << "ID" << s[ i ].ID << endl; cout << "Imie : " << s[ i ].Imie << endl; cout << "Nazwisko : " << s[ i ].Nazwisko << endl; cout << "Data przyjecia : " << s[ i ].Data_przyjecia << endl; cout << "Opis : " << s[ i ].Opis << endl; cout << "- - - - - - - - - - - - -\n"; } }
void sort( Pacjent * s, int n ) { Pacjent tmp; for( int i = 0; i < n; ++i ) { for( int j = 0; j < n - 1; ++j ) { if( s[ j ].Nazwisko > s[ j + 1 ].Nazwisko ) { tmp = s[ j + 1 ]; s[ j + 1 ] = s[ j ]; s[ j ] = tmp; } } } }
void sort2( Pacjent * s, int n ) { Pacjent tmp; for( int i = 0; i < n; ++i ) { for( int j = 0; j < n - 1; ++j ) { if( s[ j ].Imie > s[ j + 1 ].Imie ) { tmp = s[ j + 1 ]; s[ j + 1 ] = s[ j ]; s[ j ] = tmp; } if( s[ j ].Imie == s[ j + 1 ].Imie ) { if( s[ j ].Nazwisko > s[ j + 1 ].Nazwisko ) { tmp = s[ j + 1 ]; s[ j + 1 ] = s[ j ]; s[ j ] = tmp; } } } } }
void usun( Pacjent * s, int n, int ktory ) { int tmp; for( int i = 0; i < n; ++i ) { if( i + 1 == ktory ) { tmp = i; } } for( int i = tmp; i < n; ++i ) { s[ i ].Imie = s[ i + 1 ].Imie; s[ i ].Nazwisko = s[ i + 1 ].Nazwisko; s[ i ].Data_przyjecia = s[ i + 1 ].Data_przyjecia; s[ i ].Opis = s[ i + 1 ].Opis; } }
void kopia( Pacjent * s, int n, char * out ) { ofstream plik; plik.open( out ); for( int i = 0; i < n; ++i ) { plik << s[ i ].ID << endl; plik << s[ i ].Imie << endl; plik << s[ i ].Nazwisko << endl; plik << s[ i ].Data_przyjecia << endl; plik << s[ i ].Opis << endl; plik << ". . . . . . \n"; } plik.close(); }
int main( int argc, char ** argv ) { cout << "************************************************************************\n"; cout << "**************************BAZA DANYCH PACJENTOW*************************\n"; cout << "************************************************************************\n"; int znak; argv[ 1 ] = "baza.txt"; do { cout << " Utworz baze danych (plik) wcisnij - 1\n"; cout << " Dopisanie nowego Pacjenta/Pacjentow wcisnij - 2\n"; cout << " Wypisanie wszystkich pacjentow wcisnij - 3\n"; cout << " Usuniecie Pacjenta z bazy wcisnij - 4\n"; cout << " Sortowanie Pacjentow po Dacie przyjecia wcisnij - 5\n"; cout << " Sortowanie Pacjentow po Nazwisku wcisnij - 6\n"; cout << " Tworzenie kopi bazy danych wcisnij - 7\n\n"; cout << " Wyjscie z programu wcisnij - 0\n\n"; cout << "\tCo chcesz robic ??\n"; cin >> znak; switch( znak ) { case 1: { int n; cout << "Ile Pacjentow zapisac w bazie ?\n"; cin >> n; Pacjent * s = new Pacjent[ n ]; dodaj_do_bazy( argv[ 1 ], s, n ); delete[] s; break; } case 2: { int ile; cout << "Ile pacjetnow chcesz dopisac do bazy ?\n"; cin >> ile; int roz = rozmiar( argv[ 1 ] ) + ile - 1; int rozm = rozmiar( argv[ 1 ] ) - 1; Pacjent * s = new Pacjent[ roz ]; zpliku( argv[ 1 ], s, rozm ); for( int i = rozm; i < roz; ++i ) { s[ i ].ID = i + 1; cout << "Podaj Imie :\n"; cin >> s[ i ].Imie; cout << "Podaj Nazwisko :\n"; cin >> s[ i ].Nazwisko; cout << "Podaj Data przyjecia :\n"; cin >> s[ i ].Data_przyjecia; cout << "Podaj Opis swiadczenia:\n"; cin >> s[ i ].Opis; } ofstream plik; plik.open( argv[ 1 ] ); for( int i = 0; i < roz; ++i ) { plik << s[ i ].ID << endl; plik << s[ i ].Imie << endl; plik << s[ i ].Nazwisko << endl; plik << s[ i ].Data_przyjecia << endl; plik << s[ i ].Opis << endl; plik << "\n\n"; } plik.close(); delete[] s; break; } case 3: { cout << "Pacjenci w bazie :\n\n"; int n = rozmiar( argv[ 1 ] ) - 1; Pacjent * s = new Pacjent[ n ]; zpliku( argv[ 1 ], s, n ); wypisz( s, n ); delete[] s; break; } case 4: { int n = rozmiar( argv[ 1 ] ) - 1; Pacjent * s = new Pacjent[ n ]; zpliku( argv[ 1 ], s, n ); int ID; cout << "Ktorego Pacjenta usunac z bazy ?\n"; cin >> ID; usun( s, n, ID ); ofstream plik; plik.open( argv[ 1 ] ); for( int i = 0; i < n - 1; ++i ) { plik << s[ i ].ID << endl; plik << s[ i ].Imie << endl; plik << s[ i ].Nazwisko << endl; plik << s[ i ].Data_przyjecia << endl; plik << s[ i ].Opis << endl; plik << "\n\n"; } plik.close(); delete[ ID ] s; break; } case 5: { cout << "Pacjenci z bazy posortowani po Dacie przyjecia \n"; int n = rozmiar( argv[ 1 ] ) - 1; Pacjent * s = new Pacjent[ n ]; zpliku( argv[ 1 ], s, n ); sort( s, n ); wypisz( s, n ); delete[] s; break; } case 6: { cout << "Pacjenci z bazy posortowani po Imieniu \n"; int n = rozmiar( argv[ 1 ] ) - 1; Pacjent * s = new Pacjent[ n ]; zpliku( argv[ 1 ], s, n ); sort2( s, n ); wypisz( s, n ); delete[] s; break; } case 7: { char nazwa[ 20 ]; cout << "Podaj nazwe jaka bedzie miala kopia bazy \n"; cin >> nazwa; int n = rozmiar( argv[ 1 ] ) - 1; Pacjent * s = new Pacjent[ n ]; zpliku( argv[ 1 ], s, n ); ofstream plik; plik.open( nazwa ); for( int i = 0; i < n; ++i ) { plik << s[ i ].ID << endl; plik << s[ i ].Imie << endl; plik << s[ i ].Nazwisko << endl; plik << s[ i ].Data_przyjecia << endl; plik << s[ i ].Opis << endl; plik << "\n\n"; } plik.close(); delete[] s; break; } case 0: { cout << "Dziekuje! Dowidzenia ;)\n"; } } } while( znak != 0 ); return 0; }
I dorzucę jeszcze coś ;( ... Opcja Usuwania pacjentów jest również zła wpisuję ID pacjenta i wyskakuje error , imie , error , nazwisko itd itp nie działa. |
|
szyx_yankez |
» 2011-02-02 19:53:20 Otaguj kod w [cpp] ... [/cpp]. |
|
LukiPRO |
» 2011-02-02 19:53:44 OMFG mam prośbę
zrób tak klik na edytuj i weź ten kod w [ cpp] [/cpp]
dzięki |
|
DejaVu |
» 2011-02-02 20:27:45 Uhm... masz na tyle dużo błędów, że nie chce mi się ich nawet wymieniać wszystkich. W skrócie: źle obsługujesz zapis/odczyt.
Wczytywanie danych
Opcja pierwsza
Opcja druga
Zapis danych
Opcja pierwsza
Opcja druga
Dopisywanie danych
Usuwanie danych
Edycja danych
Podsumowanie
Możesz napisać oczywiście po swojemu rozwiązanie, ale tylko życie sobie skomplikujesz. |
|
mazur00015 Temat założony przez niniejszego użytkownika |
» 2011-02-02 20:36:58 Czy ktoś mógłby to dla mnie z edytować ? Chodzi mi głównie o funkcje nr 4 "case4" usuwanie pacjentów. |
|
« 1 » 2 |