⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lager2.c

📁 verschiedene beispiele
💻 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 + -