Prośba o pomoc. Baza danych studentów w C++

0

Witam,
Za półtorej tygodnia mam zaliczenie z C++ na studiach.
Jest to mój ostatni termin i proszę was o pomoc.
Potrzebuje program pt. "Baza Danych studentów"
Zacznę od początku. Prosiłbym, żeby program był pisany
jak najprościej, ponieważ dopiero zaczynam naukę C++, a
muszę opowiedzieć jak napisałem dany program oraz
edytować go przy nim ( on zada mi jakiś punkt, który
będę musiał zmienić wg. jego zaleceń ). Proszę również
by program zawierał liczne komentarze tłumaczące dane komendy.

Wytyczne programu:
-program musi zawierać kilka rekordów (np.student,rocznik, kierunek, wydział)
-możliwość dodawania do bazy danych: wydziałów,kierunków,roczników,studentów
-możliwość usuwania/edytowania. np. Mogę usunąć studenta z danego roku,
Mogę usunąć kierunek i po usunięciu kierunku, automatycznie usuną się wszyscy studenci
z danego kierunku. Sytuacja analogiczna do wydziału (usuwam wydział= wszystkie kierunki
oraz wszyscy studenci z wydziału zostaną usunięci), analogiczna sytuacja do rocznika.
-możliwość wyświetlenia bazy danych
-możliwość zapisania bazy danych (nie jestem pewny, ale chyba do pliku)

W skrócie : dodawanie/usuwanie/wyświetlanie/modyfikacja bazy danych + 3/4 rekordy.

Może podejde do sprawy troszke inaczej. Zobrazuje wam jakby miało to mniej więcej wyglądać.

Odpalam program. mamy do wyboru:

  1. Dodaj do bazy danych
  2. Usuń z bazy danych
  3. Wyświetl baze danych
  4. Zapisz baze danych

Po kliknięciu numeru 1. zmienia się menu i są opcje
1.Dodaj wydział
2.Dodaj kierunek ( po kliknieciu dodaj kierunek, musi być pod jaki wydział on ma podlegać,
np. wpisz wydział dodawanego kierunku. Jesli wpiszesz zły wydział program powinien wrócić
do punktu wyjsciowego, tzn. menu gdzie dodaje sie kierunek itd. )
3. Dodaj rocznik ( tu powinno byc analogicznie jak wyzej, "Proszę wpisać do jakiego kierunku
chcesz dodać rocznik, a następnie Proszę wpisać do jakiego wydziału chcesz dodać rocznik.
Jeśli wpiszesz zły kierunek lub wydział wraca nas do menu dodaj)
4. Dodaj studenta ( analogicznie - Prosze wpisać do jakiego rocznika.. , prosze wpisac
do jakiego kierunku chcesz dodac studenta, prosze wpisac na jaki wydział chcesz dodac studenta )
5. Wróć do menu głównego
6. Zamknij program

Po kliknieciu numeru 2 ( usun z bazy danych )
1.Usuń wydział (usuwa się wydział,Usuwaja sie wszystkie kierunki pod wydziałem, roczniki oraz studenci z danego wydziału)
2.Usuń kierunek (Usuwa sie kierunek , rocznik/i z danego kierunku oraz studenci na danym kierunku)
3.Usuń rocznik (usuwa sie rocznik i stu denci z danego rocznika)
4.Usuń studenta (usuwa się student)
5. Wróć do menu głównego
6. Zamknij program

Po kliknieciu numeru 3 ( wyswietl baze danych )
Wyswietla daną baze danych, którą utworzylismy (Jeśli nie ma bazy danych to wyskakuje
brak bazy danych do wyświetlenia, proszę dodać rekordy)

  1. Wróć do menu głównego
  2. Zamknij program.

Po kliknieciu numeru 4 ( Zapisz baze danych )
"Czy chcesz zapisać bazę danych"
1.Tak (jeśli klikne tak to wyswietl " Baza została zapisana " , a nastepnie zapytaj
"Czy chcesz wyłączyć program 1.Wyłącz program 2. Wroc do menu głównego)
2.Nie( jeśli klikne nie to wyświetl "Baza nie została zapisana" wróć do menu głównego )
3. Wróć do menu głównego
4. Zamknij Program

Mysle, ze to by było na tyle. Jeśli jest mi ktos w stanie to napisac i porobic komentarze,
zeby nawet laik to zrozumiał to będę bardzo wdzieczny. Dopiero zaczynam moja zabawe
z C++ i pewnie nie wszystkie moje pomysly sie wam podobaja, ale badzie wyrozumiali.
Chcialbym w tydzien się nauczyć tego. Jeśli mozecie to pomyslcie co kaze mi edytowac w
programie wg.was (ok.10-15 min sie u niego siedzi,właczając zapoznanie programu)

Pytanie z innej beczki , czy jest ktos w stanie być przy kompie 28 wrzesnia
w niedziele? Wtedy prawdopodobnie bede miec poprawke i prosilbym bardzo o pomoc w edytowaniu programu telefoniczny kontakt ewentualnie facebook(najwyzej bede pisac na forum jak bede juz u niego). Mysle, ze jak ktos z was by to zrobil to
jestem w stanie to ogarnac na tyle, zeby nie potrzebowac waszej pomocy.

Stawiam piwko za to wszystko
Pozdrawiam

@Edit:
wiem ,ze dostepne sa bazy danych studentow #google , aczkolwiek ten moj nauczyciel ostatnio jak sciagnalem czyjas baze danych doszedl do tego ,ze sam jej nie robilem( troche przez brak wiedzy lub po prostu zna te wszystkie bazy z neta)

@edit2:
Jeśli znacie łatwiejszy sposob piszcie po swojemu

0

Powiedz jakie to studia to pomożemy ci je skończyć ;)
Napisałeś coś sam? Z czym masz problem?

0

Informatyka. Teraz będę na drugim roku. Jeśli chodzi o specjalizacje to chciałem iść na grafikę , ale poznałem dziedzinę programowania w ostatnim momencie wybrałem programowanie. Bardzo mi się spodobało to, że w programowaniu można zrobić tak naprawdę wszystko - wystarczy mieć odrobinę wyobraźni i wiedzę. Niestety z wiedzą u mnie ciężko. Dopiero zacząłem się zagłębiać w całą dziedzinę( jestem pewny, że nauczę się tego w 100% , ale na ten moment potrzebuje pomocy ) . Uczę się z symfonii C++ dopiero skończyłem pętle, także sam początek. Dlatego nic jeszcze nie napisałem, bo nie wiem jak mam się zabrać do tematu. Niestety z powodów rodzinnych nie miałem czasu zacząć wcześniej uczyć się i nie zdążę dojść do etapu baz danych, jakoże ledwo zaraziłem się daną dziedziną. Wolę poświęcić te dwa tygodnie na zdobycie programu, opanowania danych komend w nim i ewentualnych zmian, które może mi zadać , a potem kontynuować naukę z książki . Nie chce przeskakiwać pewnych etapow w ksiazce, poniewaz wszystko jest tu prawie powiązane ze sobą, a wolę sobie od początku poukładać wiedzę.
Pozdrawiam

0

Nie ma to jak obijać się cały rok i później prosić o zrobienie całego programu na ostatni termin zaliczenia....
Myślę, że wykładowcy nie chodziło o łączenie z bazami danych jak np. MySQL, tylko o struktury/klasy i odczyt/zapis z pliku tekstowego. Poza tym myślę, że za głupie piwo nikomu(a przynajmniej większości) nie chciało by się tego robić....
Najlepiej będzie jeżeli sam się za to zabierzesz, tydzień to sporo czasu tym bardziej skoro masz przy wykładowcy coś dopisać(może Ci patrzyć cały czas na ręce i w tedy przyda się nabyta wiedza).

Kilka rzeczy, które będą ci niezbędne(a niektóre niekoniecznie) do napisania tego:

  • Struktury lub Klasy
  • Switch
  • Pętle: For/While/Do - While (znajdziesz sobie w google).
  • Funkcje
  • Obsługa plików
  • Vector ewentualnie Listy
    Więcej grzechów nie pamiętam, a podstawowe typy danych pomijam, gdyż jak napisałeś dotarłeś do pętl(pętli ? nie wiem jak się to odmienia), więc string/int/etc. znać powinieneś :).

Skleć coś sam, jak będziesz miał z czymś problem to w tedy pytaj Wujka Google, a w następnej kolejności Forum ;).

0

@unikalnystyl to ktora uczelnia taka wymagajaca?

6

Myślałem, że to dla kogoś z wiedzą taki program to 20/30 minut roboty.
Wyszło mi 3 godziny, widać głupi jestem :/

Jeśli jest mi ktos w stanie to napisac i porobic komentarze,
zeby nawet laik to zrozumiał to będę bardzo wdzieczny.

Jeśli znacie łatwiejszy sposob piszcie po swojemu
Niestety, albo dostaniesz kod używający prostych wyrażeń - czego raczej nikt za darmo nie zrobi bo to droga przez mękę - albo dostaniesz kod używający wyrażeń, których nie rozumiesz. Jako, że dziś dzień programisty, postanowiłem pyknąć własną wersję i jednocześnie zobaczyć jak Boost.PropertyTree sobie radzi jako prosty kontener (dobrze): https://gist.github.com/KrzaQ/10a035a905d6cfe1a458

0

Dwa pytania:

  1. Jak zrobic , zeby podczas pierwszej operacji wyboru [wczytywanie] (gdy nie mam pliku, a klikam opcje numer 1 - chce wczytac dane z pliku) cofalo mnie do menu glownego? tzn. zebym jeszcze raz mogl wybrac.
  2. Jak zrobic , zeby podczas pierwszej operacji wyboru , gdy klikne inny numer niz zadeklarowany( np.3) ma wyskakiwac "Blad , wybrales zly numer" i cofnie do menu glownego? (tego co wyzej)

pozdrawiam.
kod:

 #include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>

using namespace std;
int i;


struct baza
{
  string imie;
  string nazwisko;
  string kierunek;
  string rocznik;
  string wydzial;
};
baza dane[500];


void Dodaj();
void Modyfikacja();
void Baza();
void Zapisz();
void Usun();


int main()
{

int k;
short x;


cout<<"\n\tWczytanie danych ";
cout<<"\n\tWybierz nr 1 jesli chcesz wczytac baze danych z pliku bazadanych.txt";
cout<<"\n\tWybierz nr 2 jesli chcesz utworzyc pusty plik bazadanych.txt ";
cout<<"\n\tProsze wybrac numer: ";
cin>>x;
if(x==1)
{
ifstream plik("bazadanych.txt", ios::in);
plik >> i;
if (!plik)
        {
         cout << "\n\n\t\tBrak pliku - program zostanie zakonczony";
         cout<<"\n\n\t\t";
        system("pause");
        return 0; 
       
        
         }
   else
   {
  int j = 0;
  do
  {
    plik >>dane[j].imie;
    plik >>dane[j].nazwisko;
    plik >>dane[j].kierunek;
    plik >>dane[j].rocznik;
    plik >>dane[j].wydzial;
    j++;
  }
  while( !plik.eof() );
  cout <<"\n\n\tDane zostaly wczytane z pliku. Nacisnij ENTER aby kontynuowac!";
  getchar();
  getchar();
  } }

  system("cls");
  cout << "\n\n\t\t";

  do
  {
    cout <<"\n\t\t   Obecnie w bazie znajduja sie "<<i<<" rekordow\n\n";
    cout <<"\n\t\t1. Dodaj nowego studenta\n";
    cout <<"\n\t\t2. Zapis bazy do pliku\n";
    cout <<"\n\t\t3. Edycja danych\n";
    cout <<"\n\t\t4. Odtworz baze danych\n";
    cout <<"\n\t\t5. Usun wpis z bazy\n";
    cout <<"\n\n\n\t\t0. zakonczenie programu ";


    cout<<"\n\n\t\tOpcja nr: ";
    cin>>k;
    if(k>5 || k<0)
    {
      system("cls");
      cout<<"\n\n\n\t\tWystapil blad!";
      cout<<"\n\n\n\t\tDzialanie programu zakonczono!!!\n\n";
      system ("pause");
      return 0;
    };

    switch (k)
    {
      case 0: cout<<"Dzialanie programu zakonczono\n ";
              system("pause");
              return 0;
              break;

            case 1: Dodaj();break;
            case 2: Zapisz();break;
            case 3: Modyfikacja();break;
            case 4: Baza();break;
            case 5: Usun();break;

    }

    system("cls");
  }
  while (k!= 0);

   cin.ignore();
   getchar();
   return 0;
}


	
void Wczytaj()

{

ifstream plik("bazadanych.txt", ios::in);
plik >> i;
if (!plik)
        {
         cout << "\n\n\t\tBrak pliku - program zostanie zakonczony";
         cout<<"\n\n\t\t";
         goto menu;
         system("pause");
         }
   else
   {
  int j = 0;
  do
  {

    plik >>dane[j].imie;
    plik >>dane[j].nazwisko;
    plik >>dane[j].kierunek;
    plik >>dane[j].rocznik;
    plik >>dane[j].wydzial;
    j++;
  }
  while( !plik.eof() );
  cout <<"\n\n\tDane zostaly wczytane. Nacisnij ENTER!";
  getchar();
  getchar();
  } }


void Dodaj()
{
  system("cls");
  cout <<"\n\n\t\tWpisz imie studenta : ";
  cin >>dane[i].imie;
  cout <<"\n\n\t\tWpisz nazwisko studenta : ";
  cin >> dane[i].nazwisko; 
  cout <<"\n\n\t\tWpisz kierunek : ";
  cin >>dane[i].kierunek;
  cout <<"\n\n\t\tWpisz rocznik: ";
  cin >>dane[i].rocznik;
  cout <<"\n\n\t\tWpisz wydzial: ";
  cin >>dane[i].wydzial;
  i++;
  cin.ignore();
  cout <<"\n\n\t\tNacisnij enter";
  getchar();
}


void Zapisz()
{
  ofstream plik("bazadanych.txt",ios::trunc);
  plik <<i<<"\n";

  for (int j = 0; j < i; j++)
  {
    plik <<dane[j].imie<<endl;
    plik <<dane[j].nazwisko<<endl;
    plik <<dane[j].kierunek<<endl;
    plik <<dane[j].rocznik<<endl;
    plik <<dane[j].wydzial<<endl;
  }
  system("cls");
  cout <<"\n\n\t\tBaza zostala zapisana w pliku bazadanych.txt! \n\n\t\t";
  system("pause");

}


void Baza()
{
  int j;
  system("cls");
  if ( i != 0)
  {
    cout<<"\n\n";
    for (j = 0; j < i; j++)
    {
      cout
      <<"##########################################################################"<<endl;
      cout <<"s     Rekord nr "<<j+1<<": \n";
      cout <<"s     Imie: "<<dane[j].imie<<"\n" ;
      cout <<"s     Nazwisko: "<<dane[j].nazwisko<<"\n";
      cout <<"s     Kierunek: "<<dane[j].kierunek<<"\n";
      cout <<"s     Rocznik: "<<dane[j].rocznik<<"\n";
      cout <<"s     Wydzial: "<<dane[j].wydzial<<"\n";
      cout <<"#########################################################################"<<endl;
    }
  }
  else
  cout <<"\n\nNie znaleziono wybranego rekordu w bazie\n\n\t\t";
  system("pause");
}


void Modyfikacja()
{

  int nr;
  if (i != 0)
  {
    system("cls");
    cout <<"\n\n\t\tPodaj numer rekordu przeznaczonego do edycji: ";
    cin >>nr;
    nr=nr - 1;
    cin.ignore();

    if (nr<0 || nr > i)
    {
     system("cls");
     cout <<"\n\n\t\tNie mozna wykonac operacji - brak danych\n\n\t\t";
     system("pause");
    }
    else
    {
     system("cls");
     cout <<"\n\n\t\tWpisz imie :";
     cin>>dane[nr].imie;
     cout <<"\n\n\t\tWpisz nazwisko:";
     cin>>dane[nr].nazwisko;
     cout <<"\n\n\t\tWpisz kierunek :";
     cin>>dane[nr].kierunek;
     cout <<"\n\n\t\tWpisz rocznik :";
     cin>>dane[nr].rocznik;
     cout <<"\n\n\t\tWpisz wydzial : ";
     cin>>dane[nr].wydzial;
     cout <<"\n\n\t\tZmiane danych wykonano - rekord "<<nr +1 <<" zostal zmieniony!\n\n\t\t";
     cin.ignore();
     cout <<"\n\n\t\t Wcisnij ENTER!";
     getchar();
     Zapisz();
      }
     }
  else
  {
    system("cls");
    cout <<"\n\n\t\tNie ma rekordow w bazie. Nacisnij dowolny klawisz";
    system("pause");
  }
}

void Usun()
{
  int nr;


    cout <<"\n\n\t\tPodaj numer rekordu ktory chcesz usunac: ";
    cin >>nr;
    nr=nr-1;
    cin.ignore();

     if (i != 0)
     {
    if (nr > i)
    {
    cout <<"\n\n\t\tOperacja nie moze byc wykonana brak rekordu o takim numerze";
    cout <<"\n\n\t\t Wcisnij ENTER!";
    getchar();
    }
    else
    {
      for (short k = nr; k < i; k++)
      {
        dane[k-1].imie = dane[k].imie;
        dane[k-1].nazwisko = dane[k].nazwisko;
        dane[k-1].kierunek = dane[k].kierunek;
        dane[k-1].rocznik = dane[k].rocznik;
        dane[k-1].wydzial = dane[k].wydzial;
      }
      i--;

      system("cls");
      cout <<"\n\n\tOperacja zakonczyla sie sukcesem! rekord o numerze"<<nr<<" zostal usuniety!\n\n";
      getchar();
      Zapisz();
    }
  }
  else
  {
    cout <<"\n\n\t\tNie ma rekordu w bazie!! Wcisnij ENTER!";
    getchar();

  }
}
0

Ad 1. Nawet nie wiesz jaka u ciebie pierwsza operacja? Zwyczajnie nich funkcja się skończy.
Ad 2. case 1: ... case 2: ... default: ...

2

@unikalnystyl Skasuj kod. Przeczytaj dokładnie jakiś tutek odnośnie C++ i na kartce papieru napisz co chcesz zrobić. Potem jakiś maly pseudo-kodzik i zacznij pisać. Zobaczysz wyjdzie za pierwszym razem.

Ode mnie pomoc za free. Jak robisz w c++, a nie c to zrób to na klasach i umieść dodawanie, usuwanie itd. jako metody. Z tego co pamiętam, chyba i lista dwukierunkowa się przyda.

0

jak zrobic ,zebym w pierwszym menu (jak nie mam pliku baza.txt) wyswietlal sie napis "\n\n\t\tBrak pliku - Prosze wybrac opcje numer 2"; i cofalo sie do pierwszego menu wyboru? Prosze o szybka odpowiedz

//       Konrad Kuczma
//       Wyzsza Wroclawska Szola Informatyki Stosowanej
//       Baza danych studentow
//       II Semestr


#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>

using namespace std;
int i;


struct baza
{
  string imie;
  string nazwisko;
  string rocznik;
  string kierunek;
};
baza dane[500];


void Dodaj();
void Zapisz();
void Modyfikacja();
void Baza();
void Usun();



int main()
{
int k;
short x;

cout<<"\n\n\t Opcje wczytania ";
cout<<"\n\n\t kliknij 1 jesli chcesz wczytac dane z istniejacego juz pliku baza.txt";
cout<<"\n\t kliknij 2 jesli chcesz utworzyc nowy plik baza.txt";
cout<<"\n\n\tPodaj nr opcji: ";
cin>>x;
if(x==1)
{
     
ifstream plik("baza.txt", ios::in);
plik >> i;
if (!plik)
        {
         cout << "\n\n\t\tBrak pliku - Prosze wybrac opcje numer 2";
         cout<<"\n\n\t\t";
         system("pause");
         return 0; 
         }
   else
   {
  int j = 0;
  do
  {
    plik >>dane[j].imie;
    plik >>dane[j].nazwisko;
    plik >>dane[j].rocznik;
    plik >>dane[j].kierunek;
    j++;
  }
  while( !plik.eof() );
  cout <<"\n\n\tDane zostaly wczytane.Prosze nacisnac ENTER!";
  getchar();
  getchar();
  } }

  system("cls");
  cout << "\n\n\t\t";

  do
  {
    cout <<"\n\t\t   Obecnie w bazie znajduja sie "<<i<<" rekordow\n\n";
    cout <<"\n\t\t1. Dodaj nowego studenta\n";
    cout <<"\n\t\t2. Zapis bazy danych do pliku\n";
    cout <<"\n\t\t3. Modyfikacja danych\n";
    cout <<"\n\t\t4. Odtworz baze danych\n";
    cout <<"\n\t\t5. Usun wpis z bazy danych\n";
    cout <<"\n\n\n\t\t0. Wylacz program ";


    cout<<"\n\n\t\tOpcja nr: ";
    cin>>k;
    if(k>5 || k<0)
    {
      system("cls");
      cout<<"\n\n\n\t\tBlad danych !!";
      cout<<"\n\n\n\t\tDzialanie programu zakonczono!!!\n\n";
      system ("pause");
      return 0;
    };

    switch (k)
    {
      case 0: cout<<"Dzialanie programu zakonczono\n ";
              system("pause");
              return 0;
              break;

            case 1: Dodaj();break;
            case 2: Zapisz();break;
            case 3: Modyfikacja();break;
            case 4: Baza();break;
            case 5: Usun();break;

    }

    system("cls");
  }
  while (k!= 0);

   cin.ignore();
   getchar();
   return 0;
}


void Wczytaj()
{
ifstream plik("baza.txt", ios::in);
plik >> i;
if (!plik)
        {
         cout << "\n\n\t\tBrak pliku - program zostanie zakonczony";
         cout<<"\n\n\t\t";
         system("pause");
         }
   else
   {
  int j = 0;
  do
  {

    plik >>dane[j].imie;
    plik >>dane[j].nazwisko;
    plik >>dane[j].rocznik;
    plik >>dane[j].kierunek;
    j++;
  }
  while( !plik.eof() );
  cout <<"\n\n\tWczytano dane. Nacisnij ENTER!";
  getchar();
  getchar();
  } }


void Dodaj()
{
  system("cls");
  cout <<"\n\n\t\tWpisz imie studenta : ";
  cin >>dane[i].imie;
  cout <<"\n\n\t\tWpisz nazwisko studenta : ";
  cin >>dane[i].nazwisko;
  cout <<"\n\n\t\tWpisz rocznik studenta : ";
  cin >>dane[i].rocznik;
  cout <<"\n\n\t\tWpisz kierunek studenta: ";
  cin >>dane[i].kierunek;
  i++;
  cin.ignore();
  cout <<"\n\n\t\tNacisnij enter";
  getchar();
}


void Zapisz()
{
  ofstream plik("baza.txt",ios::trunc);
  plik <<i<<"\n";

  for (int j = 0; j < i; j++)
  {
    plik <<dane[j].imie<<"\n";
    plik <<dane[j].nazwisko<<"\n";
    plik <<dane[j].rocznik<<"\n";
    plik <<dane[j].kierunek<<"\n";
  }
  system("cls");
  cout <<"\n\n\t\tDane zostaly zapisane! \n\n\t\t";
  system("pause");

}


void Baza()
{
  int j;
  system("cls");
  if ( i != 0)
  {
    cout<<"\n\n\n";
    for (j = 0; j < i; j++)
    {
      cout
      <<"*-----------------------------------------------------------------------*"<<endl;
      cout <<"x     Rekord nr "<<j+1<<": \n";
      cout <<"x     Imie: "<<dane[j].imie<<"\n";
      cout <<"x     Nazwisko: "<<dane[j].nazwisko<<"\n";
      cout <<"x     Rocznik: "<<dane[j].rocznik<<"\n";
      cout <<"x     Kierunek: "<<dane[j].kierunek<<"\n";
      cout <<"x";
      cout
      <<"-------------------------------------------------------------------------"<<endl;
    }
  }
  else
  cout <<"\n\nNie ma wybrnaego rekordu w bazie\n\n\t\t";
  system("pause");
}


void Modyfikacja()
{

  int nr;
  if (i != 0)
  {
    system("cls");
    cout <<"\n\n\t\tPodaj numer rekordu przeznaczonego do edycji: ";
    cin >>nr;
    nr=nr - 1;
    cin.ignore();

    if (nr<0 || nr > i)
    {
     system("cls");
     cout <<"\n\n\t\tNie mozna wykonac operacji - brak danych\n\n\t\t";
     system("pause");
    }
    else
    {
     system("cls");
     cout <<"\n\n\t\tPodaj imie :";
     cin>>dane[nr].imie;
     cout <<"\n\n\t\tPodaj nazwisko :";
     cin>>dane[nr].nazwisko;
     cout <<"\n\n\t\tPodaj rocznik :";
     cin>>dane[nr].rocznik;
     cout <<"\n\n\t\tPodaj kierunek : ";
     cin>>dane[nr].kierunek;
     cout <<"\n\n\t\tZmiane danych wykonano - rekord "<<nr +1 <<" zostal zmieniony!\n\n\t\t";
     cin.ignore();
     cout <<"\n\n\t\t Wcisnij ENTER!";
     getchar();
     Zapisz();
      }
     }
  else
  {
    system("cls");
    cout <<"\n\n\t\tNie ma rekordow w bazie. Nacisnij dowolny klawisz";
    system("pause");
  }
}

void Usun()
{
  int nr;


    cout <<"\n\n\t\tPodaj numer rekordu ktory chcesz usunac: ";
    cin >>nr;
 //   nr=nr-1;
    cin.ignore();

     if (i != 0)
     {
    if (nr > i)
    {
    cout <<"\n\n\t\tOperacja nie moze byc wykonana brak rekordu o takim numerze";
    cout <<"\n\n\t\t Wcisnij ENTER!";
    getchar();
    }
    else
    {
      for (short k = nr; k < i; k++)
      {
        dane[k-1].imie = dane[k].imie;
        dane[k-1].nazwisko = dane[k].nazwisko;
        dane[k-1].rocznik = dane[k].rocznik;
        dane[k-1].kierunek = dane[k].kierunek;
      }
      i--;

      system("cls");
      cout <<"\n\n\tOperacja zakonczyla sie sukcesem! rekord o numerze "<<nr<<" zostal usuniety!\n\n";
      getchar();
      Zapisz();
    }
  }
  else
  {
    cout <<"\n\n\t\tNie ma rekordu w bazie!! Wcisnij ENTER!";
    getchar();

  }
}
 

Jesli moglby ktos to napisac w kodzie bylbym wdzieczny.

0

Zrób sobie menu główne w pętli, będzie najwygodniej.

Poniżej kod poglądowy, na jego podstawie spróbuj to zrobić u siebie.

 int main()
{
	bool bExit = false;

	while (!bExit)
	{
		cout << "opcja 1" << endl
			<< "opcja 2" << endl
			<< "opcja 3" << endl;

		if (!plik)
		{
			cout << "Błąd: brak pliku baza.txt. Wybierz opcję 2" << endl;
			continue;
		}

		// dalsze wykonywanie programu

		// na końcu
		cout << "Aby zakończyć program, wciśnij X. Wciśnij Y, aby wykonać program ponownie/" << endl;
		if (znak == X)
		{
			bExit = true;
		}
	}

}

continue przerywa wykonywanie aktualnego przebiegu pętli i zaczyna kolejny przebieg, czyli dokładnie to, czego oczekujesz.

0
 int main()
{
int k;
short x;
 
cout<<"\n\n\t Opcje wczytania ";
cout<<"\n\n\t kliknij 1 jesli chcesz wczytac dane z istniejacego juz pliku baza.txt";
cout<<"\n\t kliknij 2 jesli chcesz utworzyc nowy plik baza.txt";
cout<<"\n\n\tPodaj nr opcji: ";
cin>>x;
if(x==1)
{

@_13th_Dragon: hm ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1