📄 lager2.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct lagerverwaltung
{
long artikelnummer;
char artikelbezeichnung[100];
int anzahl_artikel;
struct lagerverwaltung *next;
};
struct lagerverwaltung *first = NULL;
void insert_lagerverwaltung(long art_nr, char art_tit[], int anz_art)
{
struct lagerverwaltung *lager_ptr;
if(first == NULL)
{
first = (struct lagerverwaltung *)malloc(sizeof(struct lagerverwaltung));
if(first == NULL)
{
printf("Speicherplatzmangel!!!\n");
exit(0); /* Programm beenden */
}
else
{
first->artikelnummer = art_nr;
strcpy(first->artikelbezeichnung, art_tit);
first->anzahl_artikel = anz_art;
first->next = NULL;
}
}
else
{
lager_ptr=first;
while(lager_ptr->next != NULL)
lager_ptr = lager_ptr->next;
lager_ptr->next = (struct lagerverwaltung *)malloc(sizeof(struct lagerverwaltung));
if(lager_ptr->next == NULL)
{
printf("Speicherplatzmangel!!!\n");
exit(0); /* Programm beenden */
}
else
{
lager_ptr = lager_ptr->next;
lager_ptr->artikelnummer = art_nr;
strcpy(lager_ptr->artikelbezeichnung, art_tit);
lager_ptr->anzahl_artikel = anz_art;
lager_ptr->next = NULL;
}
}
printf("\nNeuer Artikel hinzugefuegt\n\n");
}
void output_lagerverwaltung()
{
struct lagerverwaltung *lager_ptr;
if(first == NULL)
printf("Es sind kein Daten zum Ausgeben vorhanden!!\n");
else
{
lager_ptr = first;
while(lager_ptr != NULL)
{
printf("Artikelnummer : %ld\n",lager_ptr->artikelnummer);
printf("Artikelbezeichnung : %s",lager_ptr->artikelbezeichnung);
printf("Anzahl Artikel : %d\n\n",lager_ptr->anzahl_artikel);
lager_ptr = lager_ptr->next;
}
}
}
void read_lagerverwaltung(void)
{
long an;
char at[100];
int aa;
printf("Artikelnummer : ");
scanf("%ld",&an); fflush(stdin);
printf("Artikelbezeichnung : ");
fgets(at, sizeof(at), stdin);
printf("Anzahl d. Artikel : ");
scanf("%d",&aa);
insert_lagerverwaltung(an,at,aa);
}
void delete_lagerverwaltung(long art_nr)
{
struct lagerverwaltung *lager_ptr1;
struct lagerverwaltung *lager_ptr2;
/* Die logische erste 躡erpr黤ung ist ... */
if(first != NULL) /* 躡erhaupt etwas in der Liste ? */
{ /* Ist das erste Element gleich das gesuchte ? */
if(first->artikelnummer == art_nr)
{ /* Das erste Element ist das gesuchte ! */
lager_ptr1 = first->next;
free(first);
first=lager_ptr1;
printf("\nElement mit Art.-Nummer %ld wurde geloescht\n\n",art_nr);
}
else
{ /* Also nicht das erste Element .... */
lager_ptr1=first; /* Irgendwo muss man ja beginnen ... */
while(lager_ptr1->next != NULL)
{ /* So lange man nicht am Ende der Liste ist ... */
lager_ptr2=lager_ptr1->next;
if(lager_ptr2->artikelnummer == art_nr)
{ /* Das Element wurde schon gefunden */
lager_ptr1->next = lager_ptr2->next;
free(lager_ptr2);
printf("\nElement mit Art.-Nummer %ld wurde geloescht\n\n",art_nr);
break; /* Zum Abbrechen der while() - Schleife */
}
lager_ptr1=lager_ptr2; /* Das Element wurde noch nicht gefunden! */
}/*Ende while*/
} /*Ende else*/
} /*Ende if(first!= NULL)*/
else
printf("\nEs sind keine Daten zum Loeschen vorhanden!!!\n\n");
}
int main()
{
int abfrage;
long art_nr;
do{
printf("<1> Neue Daten einlesen\n");
printf("<2> Alle Daten ausgeben\n");
printf("<3> Element in Liste loeschen\n");
printf("<4> Ende\n\n");
printf("Ihre Auswahl : ");
scanf("%d",&abfrage);
fflush(stdin);
/* Bei Problemen mit scanf() die Funktion getchar()
anstatt fflush(stdin) verwenden !!! */
switch(abfrage)
{
case 1 : read_lagerverwaltung(); break;
case 2 : output_lagerverwaltung(); break;
case 3 : printf("Artikelnummer : ");
scanf("%ld",&art_nr);
delete_lagerverwaltung(art_nr);
break;
case 4 : printf("Bye\n"); break;
default : printf("Falsche Eingabe!!!\n");
}
}while(abfrage != 4);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -