Stwórz Baze danych struktur zawierających imię, nazwisko,wiek,pesel.Baza ma być przechowywana w pliku. Ma posiadać dodawanie do bazy, usuwanie, wypisywanie, sortowanie. Program ma Być napisany w Code Blocks! Błagam o pomoc !!:)
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Prosze :D
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct dane
{
string nazwisko;
string imie;
int wiek;
int pesel;
};
void dodaj_do_bazy(char *in,dane *s,int n)
{
ofstream plik;
plik.open(in);
for(int i=0;i<n;++i)
{
s[i].numer = i+1;
plik<<s[i].numer<<endl;
cout<<"Podaj nazwisko :\n";
cin>>s[i].nazwisko;
plik<<s[i].nazwisko<<endl;
cout<<"Podaj imie :\n";
cin>>s[i].imie;
plik<<s[i].imie<<endl;
cout<<"Podaj wiek :\n";
cin>>s[i].wiek;
plik<<s[i].wiek<<endl;
cout<<"Podaj pesel :\n";
cin>>s[i].pesel;
plik<<s[i].pesel<<endl;
plik<<"\n\n";
}
plik.close();
}
///funkcja liczaca rozmiar tablicy struktur
int rozmiar(char *in)
{
string imie , nazwisko;
int wiek , numer;
long long int pesel;
ifstream plik;
plik.open(in);
int rozm = 0;
while(!plik.eof())
{
plik>>numer;
plik>>nazwisko;
plik>>imie;
plik>>wiek;
plik>>pesel;
rozm += 1;
}
plik.close();
return rozm;
}
///funkcja wyciagajaca z pliku osobowe do tablicy struktur
void zpliku(char *in,dane *s,int n)
{
ifstream plik;
plik.open(in);
for(int i=0;i<n;++i)
{
plik>>s[i].numer;
plik>>s[i].nazwisko;
plik>>s[i].imie;
plik>>s[i].wiek;
plik>>s[i].pesel;
}
}
/// funkja wypisujaca wszystkie dane na ekran
void wypisz(dane *s,int n)
{
for(int i=0;i<n;++i)
{
cout<<"Nr."<<s[i].numer<<endl;
cout<<"Nazwisko : "<<s[i].nazwisko<<endl;
cout<<"Imie : "<<s[i].imie<<endl;
cout<<"Wiek : "<<s[i].wiek<<endl;
cout<<"Pesel : "<<s[i].pesel<<endl;
cout<<"- - - - - - - - - - - - -\n";
}
}
/// funkcja sortuje po peslu
void sort(dane *s,int n)
{
dane tmp;
for(int i=0;i<n;++i)
{
for(int j=0;j<n-1;++j)
{
if(s[j].pesel > s[j+1].pesel)
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
}
}
}
/// funkcja sortuje po nazwisku
void sort2(dane *s,int n)
{
dane 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;
}
if(s[j].nazwisko == s[j+1].nazwisko)
{
if(s[j].imie > s[j+1].imie)
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
}
}
}
}
///funkcja wyszukuje po nr pesel
void szukaj_po_peselu(dane *s,int n,long long int szukany_pesel)
{
int licznik = 0;
for(int i=0;i<n;++i)
{
if(s[i].pesel == szukany_pesel)
{
cout<<"Nr."<<s[i].numer<<endl;
cout<<"Nazwiko : "<<s[i].nazwisko<<endl;
cout<<"Imie : "<<s[i].imie<<endl;
cout<<"Wiek : "<<s[i].wiek<<endl;
cout<<"Pesel : "<<s[i].pesel<<endl;
cout<<"- - - - - - - - - - - - -\n";
licznik = licznik + 1;
}
}
if(licznik == 0)
{
cout<<"W bazie nie znaleziono takiego peselu. \n\n";
}
}
///funkcja wyszukuje po nazwisku
void szukaj_po_nazwisku(dane *s,int n,string szukane_nazwisko)
{
int licznik = 0;
for(int i=0;i<n;++i)
{
if(s[i].nazwisko == szukane_nazwisko)
{
cout<<"Nr."<<s[i].numer<<endl;
cout<<"Nazwiko : "<<s[i].nazwisko<<endl;
cout<<"Imie : "<<s[i].imie<<endl;
cout<<"Wiek : "<<s[i].wiek<<endl;
cout<<"Pesel : "<<s[i].pesel<<endl;
cout<<"- - - - - - - - - - - - -\n";
licznik = licznik + 1;
}
}
if(licznik == 0)
{
cout<<"W bazie nie znaleziono takiego nazwiska. \n\n";
}
}
/// funkcja usuwajaca danych z bazy
void usun(dane *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] = s[i+1];
s[i].nazwisko = s[i+1].nazwisko;
s[i].imie = s[i+1].imie;
s[i].wiek = s[i+1].wiek;
s[i].pesel = s[i+1].pesel;
}
}
/**------------------------- funkcja main --------------------------**/
int main(int argc,char **argv)
{
int znak;
argv[1] = "baza.txt";
do
{
cout<<"Utworz baze danych (plik) wcisnij - 1\n";
cout<<"Dodawanie i zapisywanie danych osobowych wcisnij - 2\n";
cout<<"Wypisanie wszystkich danych osobowych wcisnij - 3\n";
cout<<"Wyszukanie danych osobowych po nr. pesel wcisnij - 4\n";
cout<<"Wyszukanie danych osobowych po nazwisku wcisnij - 5\n";
cout<<"Usuwanie danych osobowych z bazy wcisnij - 6\n";
cout<<"Sortowanie danych osobowych po nr. pesel wcisnij - 7\n";
cout<<"Sortowanie danych osobowych po nazwisku wcisnij - 8\n";
cout<<"Wyjscie z programu wcisnij - 0\n";
cout<<"Co chcesz uczynic \n";
cin>>znak;
switch(znak)
{
case 1:
{
int n;
cout<<"Ilu osobnikow chcesz dodac ?\n";
cin>>n;
dane *s = new dane [n];
dodaj_do_bazy(argv[1],s,n);
delete [] s;
break;
}
case 2:
{
int ile;
cout<<"Ilu osobnikow chcesz dodac ?\n";
cin>>ile;
int roz = rozmiar(argv[1])+ile-1;
int rozm = rozmiar(argv[1])-1;
dane *s = new dane [roz];
zpliku(argv[1],s,rozm);
for(int i=rozm;i<roz;++i)
{
s[i].numer = i+1;
cout<<"Podaj nazwisko :\n";
cin>>s[i].nazwisko;
cout<<"Podaj imie :\n";
cin>>s[i].imie;
cout<<"Podaj wiek :\n";
cin>>s[i].wiek;
cout<<"Podaj pesel :\n";
cin>>s[i].pesel;
}
ofstream plik;
plik.open(argv[1]);
for(int i=0;i<roz;++i)
{
plik<<s[i].numer<<endl;
plik<<s[i].nazwisko<<endl;
plik<<s[i].imie<<endl;
plik<<s[i].wiek<<endl;
plik<<s[i].pesel<<endl;
plik<<"\n\n";
}
plik.close();
delete [] s;
break;
}
case 3:
{
cout<<"Dane w bazie :\n\n";
int n = rozmiar(argv[1])-1;
dane *s = new dane [n];
zpliku(argv[1],s,n);
wypisz(s,n);
delete [] s;
break;
}
case 4:
{
long long int szukany_pesel;
cout<<"Podaj pesel ktory chcesz znalesc \n";
cin>>szukany_pesel;
int n = rozmiar(argv[1])-1;
dane *s = new dane [n];
zpliku(argv[1],s,n);
szukaj_po_peselu(s,n,szukany_pesel);
delete [] s;
break;
}
case 5:
{
string szukane_nazwisko;
cout<<"Podaj nazwisko ktory chcesz znalesc \n";
cin>>szukane_nazwisko;
int n = rozmiar(argv[1])-1;
dane *s = new dane [n];
zpliku(argv[1],s,n);
szukaj_po_nazwisku(s,n,szukane_nazwisko);
delete [] s;
break;
}
case 6:
{
int n = rozmiar(argv[1])-1;
dane *s = new dane [n];
zpliku(argv[1],s,n);
int ktory;
cout<<"Ktory dane osobowe usunac z bazy ?\n";
cin>>ktory;
usun(s,n,ktory);
ofstream plik;
plik.open(argv[1]);
for(int i=0;i<n-1;++i)
{
plik<<s[i].numer<<endl;
plik<<s[i].nazwisko<<endl;
plik<<s[i].imie<<endl;
plik<<s[i].wiek<<endl;
plik<<s[i].pesel<<endl;
plik<<"\n\n";
}
plik.close();
delete [] s;
break;
}
case 7:
{
cout<<"Dane z bazy posortowane po nr. pesel \n";
int n = rozmiar(argv[1])-1;
dane *s = new dane [n];
zpliku(argv[1],s,n);
sort(s,n);
wypisz(s,n);
delete [] s;
break;
}
case 8:
{
cout<<"Dane z bazy posortowane po nazwisku \n";
int n = rozmiar(argv[1])-1;
dane *s = new dane [n];
zpliku(argv[1],s,n);
sort2(s,n);
wypisz(s,n);
delete [] s;
break;
}
case 0:
{
cout<<"Koniec\n";
}
}
}while(znak != 0);
return 0;
}