Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Struktura danych

Ostatnio zmodyfikowano 2016-01-17 17:45
Autor Wiadomość
Sonny
Temat założony przez niniejszego użytkownika
[C++] Struktura danych
» 2016-01-17 16:59:20
Witam! Mam do napisania bazę danych, która będzie zapisywać do pliku, odczytywać oraz sortować dowolnym algorytmem wedlug imienia, nazwiska i nr tel. Nie wiem kompletnie co jest nie tak, w moim kodzie a głównie w funkcji która usuwa, wczytuje oraz zapisuje. Bardzo proszę o pomoc. Pozdrawiam.
C/C++
#include <cstdlib>
#include <iostream>
#include <conio.h>
#define MAX 100
#include <fstream>
#include <string>
using namespace std;
struct osoba
{
    char imie[ 50 ];
    char nazwisko[ 50 ];
    char numer[ 15 ];
    char adres[ 50 ];
};
void wczytaj( struct osoba Baza[], int i )
{
    cout << "\n ID : " << i << endl;
   
    cout << "Imie : ";
    cin >> Baza[ i ].imie;
   
    cout << "Nazwisko : ";
    cin >> Baza[ i ].nazwisko;
   
    cout << "Nr tel : ";
    cin >> Baza[ i ].numer;
   
    cout << "Adres: ";
    cin >> Baza[ i ].adres;
}



void WypiszBaze( struct osoba Baza[], int n )
{
    int i;
   
    for( i = 0; i < n; i++ )
    if( Baza[ i ].imie[ 0 ] != 0 )
    {
        cout << "ID : " << i << endl;
       
        cout << "Imie : ";
        cout << Baza[ i ].imie << endl;
       
        cout << "Nazwisko : ";
        cout << Baza[ i ].nazwisko << endl;
       
        cout << "Nr tel : ";
        cout << Baza[ i ].numer << endl;
       
        cout << "Adres: ";
        cout << Baza[ i ].adres << endl << endl;
    }
    else
         cout << "Baza jest pusta";
   
}


void kasuj( struct osoba Baza[], int i )
{
   
    char w;
    int s;
   
    cout << "Czy chcesz wykasowac dane z bazy ? [T/N]";
   
    cin >> w;
   
   
    if( w == 'T' || w == 't' )
    {
       
        for( s = 0; s < i; s++ )
        {
           
            cout << Baza[ i ].imie << " ";
            Baza[ i ].nazwisko == " ";
            Baza[ i ].numer == " ";
            Baza[ i ].adres == " ";
           
        }
       
    }
   
}

void Zapisz( struct osoba Baza[], int i )
{
    int n;
    ofstream plik;
    plik.open( "baza.txt", ios::out | ios::app );
    if( plik.fail() )
    {
        plik.close();
        exit( 1 );
    }
   
    for( n = 0; n <= i; n++ )
    if( Baza[ i ].imie[ 0 ] != 0 )
    {
       
        plik << Baza[ i ].imie << endl;
        plik << Baza[ i ].nazwisko << endl;
        plik << Baza[ i ].numer << endl;
        plik << Baza[ i ].adres << endl;
       
    }
    plik.close();
}




void Wczytaj( struct osoba Baza[], int i )
{
   
    ifstream plik( "baza.txt", std::ios::in | std::ios::out );
    if( plik.good() == true )
    do
    {
        cin >> Baza[ i ].imie;
        cin >> Baza[ i ].nazwisko;
        cin >> Baza[ i ].numer;
        cin >> Baza[ i ].adres;
    } while( !plik.eof() );
   
    cout << "Wczytano dane. Nacisnij ENTER!";
   
    getchar();
}


int main( int argc, char * argv[] )
{
    struct osoba BazaOsob[ MAX ];
   
    int n = 0, wybor;
    int ile;
    cout << "Podaj wielkosc bazy danych : ";
    cin >> ile;
   
    if( ile > MAX )
         cout << "Podales zbyt duzy rozmiar bazy danych -max wynosi " << MAX;
   
    if( ile <= 49 )
         cout << "Podales zbyt maly rozmiar -min wynosi 50";
   
   
    else
    {
        do {
            cout << "*******************************" << endl;
            cout << "* 1. Dodaj osobe              *" << endl;
            cout << "* 2. Wypisz baze              *" << endl;
            cout << "* 3. Zapisz do pliku          *" << endl;
            cout << "* 4. Kasuj dane               *" << endl;
            cout << "* 5. Wyswietl zawartosc pliku *" << endl;
            cout << "* 6. Koniec                   *" << endl;
            cout << "*******************************" << endl;
            cin >> wybor;
           
           
            switch( wybor ) {
            case 1:
                wczytaj( BazaOsob, n );
                n++;
                system( "cls" );
                break;
            case 2:
                WypiszBaze( BazaOsob, n );
               
                break;
            case 3:
                Zapisz( BazaOsob, n );
                break;
               
            case 4:
                kasuj( BazaOsob, n );
                break;
            case 5:
                Wczytaj( BazaOsob, n );
                break;
            case 6: return EXIT_SUCCESS;;
               
                break;
            default:
                {
                    system( "cls" );
                    system( "color 17" );
                    cout << "\n WINDOWS FATAL ERROR \n BlueScreen \n";
                }
               
                system( "cls" );
               
               
            };
           
        }
       
        while( wybor = 1 );
       
    }
   
    getch();
    return EXIT_SUCCESS;
}
P-143646
carlosmay
» 2016-01-17 17:33:24
C/C++
if( ile > MAX ) // ten jest osobno
     cout << "Podales zbyt duzy rozmiar bazy danych -max wynosi " << MAX;

if( ile <= 49 ) // ten jest niezalezny od wczesniejszego
     cout << "Podales zbyt maly rozmiar -min wynosi 50";


else
{
    do {
dobrze byłoby powiązać ze sobą te if'y.

C/C++
Baza[ i ].nazwisko == " "; // te zabiegi sa bez zadnego efektu, nic nie daja
Baza[ i ].numer == " ";
Baza[ i ].adres == " ";
P-143651
Sonny
Temat założony przez niniejszego użytkownika
» 2016-01-17 17:37:41
W takim bądź razie, jak powinna wyglądać ta funkcja > kasuj
P-143652
carlosmay
» 2016-01-17 17:45:49
Zastanów się do czego służy ten operator ==.

Poza tym do takiej funkcjonalności jak kasowanie i dodawanie wpisów
przydałoby się zrobić listę jedno bądź dwukierunkową.
Alokowanie dynamiczne pamięci dla nowo dodawanych wpisów,
oraz zwalnianie pamięci po skasowaniu wpisu.
Wtedy lista nie ma pustych wpisów, tylko tyle ile jest w użyciu.
P-143657
« 1 »
  Strona 1 z 1