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;
}