Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.25 KB | None | 0 0
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4.  
  5. void up_addlist(char *titel, char *autor, char *isbn);
  6. void up_show();
  7. void up_datensatz_eingeben();
  8. void up_delete_first();
  9. void up_delete_last();
  10. void up_delete_between();
  11. void up_delete();
  12. void up_insert();
  13.  
  14. typedef struct m_buch
  15. {
  16.         char titel[50+1];
  17.         char autor[50+1];
  18.         char isbn[25+1];
  19.        
  20.         struct m_buch *davor;
  21.         struct m_buch *danach;
  22. }t_buch;
  23.  
  24. t_buch *mom, *start = 0, *ende = 0;
  25.  
  26. int main()
  27. {
  28.     int auswahl;
  29.    
  30.     do
  31.     {
  32.        printf("Bitte Funktion ausw%chlen\n------------------------\n\n", 132);
  33.        printf("1: Datens%ctze eingeben\n\n", 132);
  34.        printf("2: Datens%ctze anzeigen\n\n", 132);
  35.        printf("3: Datensatz vor einem anderen einf%cgen\n\n", 129);
  36.        printf("4: Datensatz l%cschen\n\n", 148);
  37.        
  38.        printf("6: Abbrechen\n\n");
  39.        scanf("%i", &auswahl);
  40.        fflush(stdin);
  41.        
  42.        switch(auswahl)
  43.           {
  44.             case 1:
  45.                  up_datensatz_eingeben();
  46.                  break;
  47.             case 2:
  48.                  up_show();
  49.                  break;
  50.             case 3:
  51.                  up_insert();
  52.                  break;
  53.             case 4:
  54.                  up_delete();
  55.                  break;
  56.             case 6:
  57.                  return 0;
  58.           }
  59.        
  60.     }while(1);
  61.    
  62.     up_show();    
  63.     getch();  
  64. }
  65.  
  66. void up_datensatz_eingeben()
  67. {
  68.     char titel[50+1];
  69.     char autor[50+1];
  70.     char isbn[25+1];
  71.     char bu;
  72.    
  73.     bu='y';
  74.    
  75.     while(bu == 'y')
  76.     {
  77.         printf("\n\nBitte geben Sie den Name des Buches ein: ");
  78.         gets(titel);
  79.         fflush(stdin);
  80.        
  81.         printf("Bitte geben Sie den Autor des Buches ein: ");
  82.         gets(autor);
  83.         fflush(stdin);
  84.        
  85.         printf("Bitte geben Sie die ISBN des Buches ein: ");
  86.         gets(isbn);
  87.         fflush(stdin);
  88.        
  89.         up_addlist(titel, autor, isbn);
  90.        
  91.         printf("Wollen Sie noch einen Datensatz eingeben? (y/n)");
  92.         scanf("%c", &bu);
  93.         fflush(stdin);
  94.     }
  95. }                            
  96.  
  97. void up_addlist(char *titel, char *autor, char *isbn)
  98. {
  99.    mom = (t_buch *)malloc(sizeof(t_buch));
  100.    
  101.    strcpy(mom->titel, titel);
  102.    strcpy(mom->autor, autor);
  103.    strcpy(mom->isbn, isbn);
  104.    
  105.    if(start == 0){
  106.         start = mom;
  107.         mom->davor = 0;
  108.         mom->danach = 0;
  109.       }else{
  110.         ende->danach = mom;
  111.         mom->davor = ende;
  112.         mom->danach = 0;
  113.       }
  114.    
  115.    ende = mom;
  116. }
  117.  
  118. void up_show()
  119. {
  120.     if(start)
  121.     {
  122.         int i = 1;
  123.         mom = start;
  124.        
  125.         while(mom)
  126.         {
  127.             printf("\n%i. Buch\n-------\n\n", i);
  128.             printf("Titel: %s\n", mom->titel);
  129.             printf("Autor: %s\n", mom->autor);
  130.             printf("ISBN: %s\n", mom->isbn);
  131.            
  132.             i++;
  133.            
  134.             mom = mom->danach;
  135.         }
  136.     }else{
  137.           printf("\nEs sind keine Datensaetze vorhanden\n\n");
  138.     }
  139.     getch();
  140. }
  141.  
  142. void up_delete()
  143. {
  144.      int auswahl;
  145.      
  146.      if(start)
  147.      {
  148.         // Auflistung aller vorhandenen Datensätze
  149.         int i = 1;
  150.         mom = start;
  151.        
  152.         while(mom)
  153.         {
  154.          printf("%i. Buch\t Titel: %s, Autor: %s, ISBN: %s\n", i, mom->titel, mom->autor, mom->isbn);
  155.          i++;
  156.          mom = mom->danach;
  157.         }
  158.        
  159.         //Datensatz auswählen und eigentliches Löschen
  160.         printf("Bitte w%chlen Sie einen Datensatz aus. (Geben Sie daf%cr die Nummer ein!)", 132, 129);
  161.         scanf("%i", &auswahl);
  162.         fflush(stdin);
  163.        
  164.         mom = start;
  165.         int j;
  166.        
  167.         for(j=1;j<auswahl;j++)
  168.           {
  169.             mom = mom->danach;
  170.           }
  171.        
  172.         if(mom->davor == 0)
  173.           {        
  174.              up_delete_first();
  175.              printf("\nDer erste Datensatz wurde geloescht\n\n");        
  176.           }
  177.         else if(mom->danach == 0)
  178.           {
  179.              up_delete_last();
  180.              printf("\nDer letzte Datensatz wurde geloescht\n\n");              
  181.           }
  182.         else
  183.           {
  184.              up_delete_between();
  185.              printf("\nDer %i. Datensatz wurde geloescht\n\n", auswahl);              
  186.           }
  187.        
  188.     }else{
  189.           printf("\nEs sind keine Datensaetze vorhanden\n\n");
  190.     }
  191.    
  192.     getch();
  193. }
  194.  
  195. void up_delete_first()
  196. {
  197.       if(mom->danach)
  198.       {
  199.        start = mom->danach;
  200.        mom->danach->davor = 0;
  201.       }else{
  202.        start=0;
  203.       }
  204.      
  205.   free(mom);
  206. }
  207.  
  208. void up_delete_last()
  209. {
  210.       if(mom->davor)
  211.       {
  212.        mom->davor->danach = 0;
  213.        ende = mom->davor;
  214.       }else{
  215.        ende=0;
  216.       }
  217.      
  218.   free(mom);  
  219. }
  220.  
  221. void up_delete_between()
  222. {
  223.   mom->davor->danach = mom->danach;
  224.   mom->danach->davor = mom->davor;
  225.   free(mom);
  226. }
  227.  
  228. void up_insert()
  229. {
  230.     int auswahl;
  231.     t_buch *insert;
  232.    
  233.     insert = (t_buch *)malloc(sizeof(t_buch));
  234.      
  235.   // Auflistung aller vorhandenen Datensätze
  236.     int i = 1;
  237.     mom = start;
  238.    
  239.     while(mom)
  240.     {
  241.      printf("%i. Buch\t Titel: %s, Autor: %s, ISBN: %s\n", i, mom->titel, mom->autor, mom->isbn);
  242.      i++;
  243.      mom = mom->danach;
  244.     }
  245.    
  246.     //Datensatz auswählen vor dem eingefügt werden soll
  247.     printf("Bitte w%chlen Sie einen Datensatz aus vor dem Sie den neuen Datensatz einf%cgen wollen. (Geben Sie daf%cr die Nummer ein!)", 132, 129, 129);
  248.     scanf("%i", &auswahl);
  249.     fflush(stdin);
  250.    
  251.     mom = start;
  252.     int j;
  253.    
  254.     for(j=1;j<auswahl;j++)
  255.       {
  256.         mom = mom->danach;
  257.       }
  258.    
  259.     printf("\n\nBitte geben Sie den Name des Buches ein: ");
  260.     gets(insert->titel);
  261.     fflush(stdin);
  262.    
  263.     printf("Bitte geben Sie den Autor des Buches ein: ");
  264.     gets(insert->autor);
  265.     fflush(stdin);
  266.    
  267.     printf("Bitte geben Sie die ISBN des Buches ein: ");
  268.     gets(insert->isbn);
  269.     fflush(stdin);
  270.    
  271.     if(mom->davor == 0)
  272.     {
  273.       insert->davor = 0;
  274.       insert->danach = mom;
  275.       start = insert;
  276.       mom->davor = insert;
  277.     }else{
  278.       mom->davor->danach = insert;
  279.       insert->davor = mom->davor;
  280.       mom->davor = insert;
  281.       insert->danach = mom;      
  282.     }
  283. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement