C++ Menu Lista wyświetlania z pliku zapisu i odczytu

0

Witam mam problem czy ktoś mógł by mi pomóc z programem . Mianowicie chciałbym aby w moim programie powstało menu wyboru w którym będą opcje 1.Dodawanie studenta do bazy 2. usuwanie . 3.Zapis do pliku. 4.Odczyt z pliku. Czy ktoś mógł by mi wytłumaczyć ewentualnie pokazać jak to zrobić oto kod programu

#include <cstdlib>
#include <cstdio>
#include <clocale>
#include <windows.h>


using namespace std;

struct TlistElmnt

{

    int ID;
    char Nazwisko[30];
    char Imie[30];
    TlistElmnt* Next;
    TlistElmnt* Prev;

};

TlistElmnt* First= NULL;
TlistElmnt* Last= NULL;




void AddElmnt(TlistElmnt* newElmnt)
{
 newElmnt= new TlistElmnt;
 printf("\n\tNowy Student\n");
 printf("\nPodaj Imie ");
 gets(newElmnt->Imie);

 printf("\nPodaj Nazwisko ");
 gets(newElmnt->Nazwisko);

 printf("\nPodaj ID ");
 scanf("%d",&newElmnt->ID);
 fflush(stdin);



 if(Last!= NULL) // lista nie jest pusta

 {
     newElmnt-> Next = NULL;
     newElmnt->Prev = Last;
     newElmnt->Prev->Next=newElmnt;
     Last = newElmnt;
 }

 else //lista jest pusta
 {
     newElmnt->Next = NULL;
     newElmnt->Prev = NULL;
     First = newElmnt;
     Last = newElmnt;
 }
}


void InsertElmnt(TlistElmnt* newElmnt,TlistElmnt* aBeforeElmnt)
{


 printf("\n\tNowy Student- Insert\n");

 newElmnt= new TlistElmnt;

 printf("\nPodaj Imie ");
 gets(newElmnt->Imie);

 printf("\nPodaj Nazwisko ");
 gets(newElmnt->Nazwisko);

 printf("\nPodaj ID ");
 scanf("%d",&newElmnt->ID);
 fflush(stdin);


 //zabezpiecznie przed abefore== null

 if (aBeforeElmnt==NULL)
    return AddElmnt(newElmnt);

 if(aBeforeElmnt->Prev != NULL) // wstawienie w srodek listy element

 {
     newElmnt-> Next = aBeforeElmnt ;
     newElmnt->Prev = aBeforeElmnt->Prev ;
     newElmnt->Prev->Next = newElmnt;
     newElmnt->Next->Prev = newElmnt;


 }

 else //wstawienie na poczatek listy
 {


     newElmnt->Next = aBeforeElmnt;
     newElmnt->Prev = NULL;
     newElmnt->Next->Prev = newElmnt;
     First = newElmnt;

 }
}

void DeleteElmnt (TlistElmnt* aElmnt)

{
    printf("\n\tUsuń Studenta\n");

    if(aElmnt== NULL)
      return;

    if (aElmnt->Prev != NULL)

          aElmnt->Prev->Next = aElmnt->Next;

    else //usuwamy pierwszy elemnt listy
        First = aElmnt->Next;


    if(aElmnt->Next != NULL)
        aElmnt->Next->Prev = aElmnt->Prev;
    else //usuwamy ostania elemnt
      Last = aElmnt->Prev;

    delete aElmnt;
}

void PrintList()

{
    printf("\n\t\t Studenci\n\n");
    TlistElmnt * elmnt;

    elmnt = First;

    while (elmnt != NULL)

      {
        printf("\t%d \t| %s \t | %s \t \n ", elmnt->ID, elmnt->Imie, elmnt->Nazwisko);
        elmnt = elmnt->Next;
      };
}


TlistElmnt* FindElmnt(int aID)

{


    TlistElmnt * elmnt;

    elmnt = First;

    while (elmnt != NULL)

    {
        if (elmnt->ID == aID)
            return elmnt;
        elmnt = elmnt->Next;
    };

return 0;
}




 void MovElmnt(TlistElmnt* aElmnt,TlistElmnt* aBeforeElmnt )
{

 //zabezpiecznie przed abefore== null

 printf("\n\tZmieniono pozycje\n");

 if (aBeforeElmnt==NULL)
   {

       aElmnt->Prev->Next = aElmnt->Next;
       aElmnt->Next->Prev = aElmnt->Prev;

       aElmnt->Next = First->Next;
       First=aElmnt;
   }


 if(aBeforeElmnt->Prev != NULL) // wstawienie w srodek listy element
   {

        if (aElmnt->Next != NULL)// zabezpiecznie przed przenoszenie ostatniej pozycji
         {

            aElmnt->Prev-> Next = aElmnt->Next;
            aElmnt->Next-> Prev = aElmnt->Prev;

            aElmnt->Next = aBeforeElmnt;
            aElmnt->Prev = aBeforeElmnt->Prev;
            aBeforeElmnt->Prev->Next = aElmnt;
            aBeforeElmnt->Prev = aElmnt;
        }

        else
        {
            aElmnt->Prev-> Next = NULL;
            Last=aElmnt->Prev;

            aElmnt->Next = aBeforeElmnt;
            aElmnt->Prev = aBeforeElmnt->Prev;
            aBeforeElmnt->Prev->Next = aElmnt;
            aBeforeElmnt->Prev = aElmnt;

        };

   }
 else //wstawienie na poczatek listy
  {

     aElmnt->Prev->Next = aElmnt->Next;
     aElmnt->Next->Prev = aElmnt->Prev;


     aElmnt->Next = aBeforeElmnt;
     aElmnt->Prev = NULL;
     aBeforeElmnt->Prev = aElmnt;
     First = aElmnt;

 }
}

void PrintList1()

{
    printf("\n\t\t Wywietlenie od dołu\n\n");
    TlistElmnt * elmnt;

    elmnt = Last;

    while (elmnt != NULL)

    {
        printf("\t%d \t| %s \t | %s \t \n ", elmnt->ID, elmnt->Imie, elmnt->Nazwisko);
        elmnt = elmnt->Prev;
    };
}

int main()
{
SetConsoleCP(1250);
SetConsoleOutputCP(1250);
setlocale(LC_ALL, "1250");

TlistElmnt* std;

std = new TlistElmnt;

// Mozna tu wstawic jeszcze menu np. na Case/switch;

int s,i;
printf("\n\tPodaj iloć studentów których chcesa dodać\n");
scanf("%d",&s);

fflush(stdin);

for (i=0; i<s; i++)
      AddElmnt(std);

printf("\n\n");

PrintList();
PrintList1();

printf("\n\n\tPodaj ID studenta którego chcesz usunšć\n");
scanf("%d",&s);
fflush(stdin);
DeleteElmnt(FindElmnt(s));
printf("\n\n");
PrintList();


printf("\n\n\tPodaj ID studenta przed którego chcesz wstwic Nowego\n");
scanf("%d",&s);
fflush(stdin);
InsertElmnt(std,FindElmnt(s));
printf("\n\n");
PrintList();

printf("\n\n");

printf("\n\n\tPodaj ID studenta przed którego chcesz wstwic oraz którego chesz zmienic miejsce\n");
scanf("%d %d",&s, &i);

MovElmnt(FindElmnt(i),FindElmnt(s));

PrintList();

delete std;

    return 0;
}
0
for(;;)
  {
   printf("1. Dodawanie\n2. Usuwanie.\n3. Zapis do pliku.\n4. Odczyt z pliku.\nWybierasz: ");
   if(scanf("%d",&n)!=1) n=5;
   switch(n)
     {
      1: .... break;
      2: .... break;
      3: .... break;
      4: .... break;
      5: printf("nie ma takiej opcji"); break;
     }
  while(getchar()!='\n') {}
  }

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