• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Baza danych C++ (crosses initialization of)

Object Storage Arubacloud
0 głosów
315 wizyt
pytanie zadane 2 kwietnia 2019 w C i C++ przez nooby Nowicjusz (120 p.)
#include <iostream>
#include <conio.h>
#include <math.h>
#include <time.h>
#include <cstdlib>
#include <string.h>
#include <stdio.h>
#include <fstream> // biblioteka do obslugi plikow


using namespace std;

fstream plik_dane; //wprowadzenie klasy fstream do obsługi pliku

//-----------// deklaracja struktury -----------------------------------------------------------------------------------------------------

 struct Kartoteka 
 {
 string nr;
 string pesel;
 string imie;
 string ojca;
 string matki;
 string rodowe;
 string rok;
 string adres;
 string stan;
};
//prototypy funkcji------------------------------------------------------------------------------

void szukajWszystkichFraz( string szukanaFraza )
{
    ifstream plik_dane;
    plik_dane.open( "plik.txt", ios::in );
    string tekst;
    
    do {
        getline( plik_dane, tekst );
        
        if( tekst.find( szukanaFraza ) != std::string::npos )
        {
            for( int i = 0; i < 7; i++ )
            {
                cout << "\t" << tekst << endl;
                getline( plik_dane, tekst );
                
            }
            return;
        }
        
        
        
    } while( !plik_dane.eof() );
    
    plik_dane.close();
}
int main( int argc, char ** argv ) {
    
    
    cout << "\t**********************************************" << endl;
    cout << "\t*************** Baza danych ****************" << endl;
    cout << "\t**********************************************" << endl << endl;
    
    
    int wybor; //zmienna sterujaca menu
    int n, koniec; //n- liczba okreslonych wskaznikow, koniec - zmienna konczaca petle
    koniec = 1;
    string szukane, podane; //zmienne do wyszukiwania
    
    
    start: //etykieta do funkcji goto umożliwiajaca powót do menu wyboru po zakonczonej operacji
    
    cout << "--------------------------------------------------------------" << endl << endl;;
    cout << "\t*** MENU *** " << endl << endl;
    cout << "===> (1) Dodaj" << endl;
    cout << "===> (2) Usun" << endl;
    cout << "===> (3) Sortowanie bazy" << endl;
    cout << "===> (4) Wyszukiwanie" << endl;
    cout << "===> (5) Zamknij program" << endl << endl;
    
    
    cout << endl;
    
    do //petla do while służąca do zamykania programu
    {
        
        cout << "Wprowadz symbol operacji ktora chcesz wykonac " << endl << endl;
        cout << "===> ";
        cin >> wybor;
        cout << "--------------------------------------------------------------" << endl << endl;
        
        if( wybor > 5 )
        {
            cout << "\t------------------------------------" << endl;
            cout << "\t--  Symbol operacji niepoprawny   --" << endl;
            cout << "\t------------------------------------" << endl << endl;
            cout << "\t------------------------------------" << endl;
            cout << "\t--Wprowadz ponownie symbol operacji--" << endl;
            cout << "\t------------------------------------" << endl << endl;
        }
        else
        
        switch( wybor ) // instrukcja wyboru
        {
        case 1:
            
            cout << "Wybrales dodawanie " << endl << endl << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            Kartoteka urzad;
            cout << "Podaj nr " << endl;
            cout << "===>";
            cin >> urzad.nr;
            cout << endl;
            cout << "Podaj pesel " << endl;
            cout << "===>";
            cin >> urzad.pesel;
            cout << endl;
            cout << "Podaj imie i nazwisko " << endl;
            cout << "===>";
            cin >> urzad.imie;
            cout << endl;
            cout << "Podaj imie rodowe matki" << endl << endl;
            cin >> urzad.rodowe;
            cout << endl;
            cout << "Podaj imie ojca " << endl;
            cout << "===>";
            cin >> urzad.ojca;
            cout << endl;
            cout << "Podaj imie matki " << endl;
            cout << "===>";
            cin >> urzad.matki;
            cout<<"Podaj rok urodzenia"<<endl;
            cout << "===>";
            cin>> urzad.rok;
            cout<<"Podaj adres"<<endl;
            cout << "===>";
            cin>> urzad.adres;
            cout<<"Podaj stan cywilny"<<endl;
            cout << "===>";
            cin>>urzad.stan;
            
            
            system( "cls" ); //czyszczenia ekranu konsoli
            
            cout << "-------------------------------------------------------------------------------" << endl;
            cout << "\t <<<< Dodales osobe >>>>" << endl;
            cout << "\t| nr : " << urzad.nr << endl;
            cout << "\t| Pesel : " << urzad.pesel << endl;
            cout << "\t| Imie i nzawisko : " << urzad.imie << endl;
            cout << "\t| Imie rodowe : " << urzad.rodowe << endl;
            cout << "\t| Imie ojca : " << urzad.ojca << endl;
			cout << "\t| Imie matki :" <<urzad.matki << endl;
			cout << "\t| Rok urodzenia :" <<urzad.rok << endl;
			cout << "\t| Adres :" <<urzad.adres << endl;
			cout << "\t| Stan cywilny :" <<urzad.stan << endl;
            
            plik_dane.open( "plik.txt", ios::app | ios::ate ); //otwarcie pliku do odczytu i zapisu na jego koncu
            
            
            if( plik_dane.good() == true ) //sprawdzanie czy udało sie otworzyć  plik z danymi
            {
                ofstream plik_dane;
                plik_dane.open( "plik.txt", ios::app | ios::ate | ios::out );
                
                plik_dane << urzad.nr << "\r\n";
                plik_dane << urzad.pesel << "\r\n";
                plik_dane << urzad.imie << "\r\n";
                plik_dane << urzad.rodowe << "\r\n"; //każda struktura zajmuje 7 lini ( do odczyt bloku--- numer bloku *7lini
                plik_dane << urzad.ojca << "\r\n";
                plik_dane << urzad.matki << "\r\n";
                plik_dane << urzad.rodowe<<"\r\n";
                plik_dane << urzad.rok<<"\r\n";
                plik_dane << urzad.adres<<"\r\n";
                plik_dane << urzad.stan<<"\r\n";
                
                plik_dane.close();
            } else cout << "Blad odczytu pliku!" << endl;
            
            
            
            goto start; //powrot do poczatku programu
            break;
        case 2:
            cout << "Wybrales usuwanie " << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            break;
        case 3:
            cout << "Wybrales sortowanie " << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            break;
        case 4:
            cout << "Wybrales wyszukiwanie " << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            cout << "Podaj nr do wyszukania " << endl;
            cin >> podane;
            system( "cls" );
            cout << "--------------------------------------------------------------" << endl;
            cout << "===> Wyszukujesz pliku zawierajacego " << podane << " w nre" << endl;
            cout << "--------------------------------------------------------------" << endl << endl;
            cout << "\tZnalezione to: " << endl << endl;
            szukajWszystkichFraz( podane );
            goto start;
            break;
            
        case 5:
            system( "cls" );
            cout << endl;
            cout << "\t----------------------------------------------------------" << endl;
            cout << "\t----- Aby zakonczyc dzialanie programu nacisnij ENTER----- " << endl;
            cout << "\t----------------------------------------------------------" << endl << endl;
            koniec = 0;
            break;
            
        }
    } while( koniec != 0 );
    
    return 0;
}

 

Witam, mam problem z napisaniem bazy danych. Wyskakują następujące błędy:

183    14       [Error] jump to case label [-fpermissive]

109    23       [Error] crosses initialization of 'Kartoteka urzad'

Co zrobiłem źle prosił bym o pomoc!!!

komentarz 2 kwietnia 2019 przez DragonCoder Nałogowiec (36,500 p.)
goto start

Co to
komentarz 2 kwietnia 2019 przez manjaro Nałogowiec (37,390 p.)
A gdzie tu w ogóle jest baza danych?

Działasz na pliku tekstowym a nie na bazie danych.
komentarz 2 kwietnia 2019 przez adrian17 Ekspert (344,860 p.)

Co zrobiłem źle

Używasz goto.

2
komentarz 2 kwietnia 2019 przez adrian17 Ekspert (344,860 p.)
(tu akurat się czepiasz @manjaro, plik tekstowy może być bazą danych)
komentarz 2 kwietnia 2019 przez manjaro Nałogowiec (37,390 p.)
Baza danych to baza danych a plik to plik.

Nie dość że złamane standardy nazewnictwa to jeszcze złamane standardy składowania danych...
komentarz 2 kwietnia 2019 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
@manjaro: A baza danych to niby gdzie trzyma dane? Nie w plikach? :)
komentarz 2 kwietnia 2019 przez manjaro Nałogowiec (37,390 p.)
fejsbuk też pewnie trzyma dane w plik.txt ;)

bądźmy poważni
komentarz 2 kwietnia 2019 przez adrian17 Ekspert (344,860 p.)
(przeczytaj proszę moje PW, w którym byłem całkiem poważny)
komentarz 2 kwietnia 2019 przez manjaro Nałogowiec (37,390 p.)
adrian czytałem, ale nie chce mi się sprzeczać. Jesteś tutaj poważnym programistą i naprawdę zachęcasz do takiej partyzantki? Od tego mamy SQL. Wszyscy wiemy że nigdzie absolutnie na żadnym serwisie ani żadnej aplikacji nie praktykuje się podobnych głupot sprzed 20 lat albo i więcej.

1 odpowiedź

0 głosów
odpowiedź 2 kwietnia 2019 przez j23 Mędrzec (194,920 p.)
case 1:
        Kartoteka urzad;
        ...

W C/C++ tak nie można. Jeśli blok case'a ma definicje zmiennych, cały blok powinien być ujęty w {}.

"\r\n"

Dlaczego tak, a nie po prostu '\n'?

 

Pozbądź się tego goto.

Podobne pytania

–1 głos
0 odpowiedzi 644 wizyt
pytanie zadane 26 maja 2017 w C i C++ przez KrzysztofMoryson Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 3,379 wizyt
0 głosów
2 odpowiedzi 1,916 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...