ulvis.paste.net

Paste Search Dynamic
Recent pastes
employee
  1. #include <stdio.h>
  2. #include <stdlib.h>   /* for malloc */
  3. #include <ctype.h>
  4.  
  5. /* constants */
  6. #define OVERTIME_RATE 1.5
  7. #define STD_WORK_WEEK 40.0
  8.  
  9.  
  10. struct employee
  11. {
  12.     char emplName[20];
  13.         long int idNumber;
  14.     float wage;
  15.     float hours;
  16.     float overtime;
  17.     float gross;
  18.         struct employee *next;
  19. };
  20.  
  21.  
  22.  
  23.  
  24. /*  Function Prototypes */
  25. void print_list(struct employee *emp1);
  26.  
  27. /* TODO - Add Functions here as needed */
  28.  
  29. /* Optional - Add Challenge Functions here as needed */
  30.  
  31. /*-----------------------------------------------------------------------------*/
  32. /*                                                                             */
  33. /* FUNCTION:  print_list                                                       */
  34. /*                                                                             */
  35. /* DESCRIPTION:  This function will print the contents of a linked             */
  36. /*               list.  It will traverse the list from beginning to the        */
  37. /*               end, printing the contents at each node.                      */
  38. /*                                                                             */
  39. /* PARAMETERS:   emp1 - pointer to a linked list                               */
  40. /*                                                                             */
  41. /* OUTPUTS:      None                                                          */
  42. /*                                                                             */
  43. /* CALLS:        None                                                          */
  44. /*                                                                             */
  45. /*-----------------------------------------------------------------------------*/
  46. void print_list(struct employee *emp1)
  47. {
  48.         struct employee *tmp;   /* tmp pointer value to current node */
  49.         int i = 0;              /* counts the nodes printed          */
  50.  
  51.         /* Start a beginning of list and print out each value               */
  52.         /* loop until tmp points to null (remember null is 0 or false)      */
  53.         for(tmp = emp1; tmp ; tmp = tmp->next)
  54.         {
  55.             i++;
  56.  
  57.             /* TODO - print other members as well */
  58.             printf("\nEmployee Name: %s,Employee ID: %6d, Wage: %8.2f,Hours: %10.2f\n",tmp->emplName,tmp->idNumber,tmp->wage,tmp->hours);
  59.         }
  60.  
  61.         printf("\n\nTotal Number of Employees = %d\n", i);
  62.  
  63. }
  64.  
  65. /*----------------------------------------------------------------------------*/
  66. /*                                                                            */
  67. /* FUNCTION:  main                                                            */
  68. /*                                                                            */
  69. /* DESCRIPTION:  This function will prompt the user for an employee           */
  70. /*               id and wage until the user indicates they are finished.      */
  71. /*               At that point, a list of id and wages will be                */
  72. /*               generated.                                                   */
  73. /*                                                                            */
  74. /* PARAMETERS:   None                                                         */
  75. /*                                                                            */
  76. /* OUTPUTS:      None                                                         */
  77. /*                                                                            */
  78. /* CALLS:        print_list                                                   */
  79. /*                                                                            */
  80. /*----------------------------------------------------------------------------*/
  81. int main ()
  82. {
  83.  
  84.     char   answer[80];       /* to see if the user wants to add more employees */
  85.     int    more_data = 1;    /* flag to check if another employee is to be processed */
  86.     char   value;            /* gets the first character of answer */
  87.  
  88.     struct employee *current_ptr,   /* pointer to current node */
  89.                     *head_ptr;      /* always points to first node */
  90.  
  91.    /* Set up storage for first node */
  92.     head_ptr = (struct employee *) malloc (sizeof(struct employee));
  93.     current_ptr = head_ptr;
  94.  
  95.     while (more_data)
  96.     {
  97.        
  98.  
  99.         /* Prompt for Employee Name and Hours as well here */
  100.                 printf("\nEnter employee Name: ");
  101.         scanf("%s", & current_ptr -> emplName);
  102.  
  103.        /* Read in Employee ID and Hourly Wage */
  104.         printf("\nEnter employee ID: ");
  105.         scanf("%ld", & current_ptr -> idNumber);
  106.  
  107.                 printf("\nEnter employee hours: ");
  108.         scanf("%f", & current_ptr -> hours);
  109.  
  110.         printf("\nEnter employee hourly wage: ");
  111.         scanf("%f", & current_ptr -> wage);
  112.  
  113.         /* TODO - Call Function(s) to calculate Overtime and Gross */
  114.  
  115.         printf("Would you like to add another employee? (y/n): ");
  116.         scanf("%s", answer);
  117.  
  118.         /* Ask user if they want to add another employee */
  119.         if ((value = toupper(answer[0])) != 'Y')
  120.         {
  121.            current_ptr->next = (struct employee *) null;
  122.            more_data = 0;
  123.         }
  124.         else
  125.         {
  126.            /* set the next pointer of the current node to point to the new node */
  127.            current_ptr->next = (struct employee *) malloc (sizeof(struct employee));
  128.           /* move the current node pointer to the new node */
  129.            current_ptr = current_ptr->next;
  130.          }
  131.     } /* while */
  132.  
  133.     /* Optional - Call Challenge Functions to determine totals, min, max, and averages */
  134.  
  135.     /* print out listing of all employee id's and wages that were entered */
  136.     print_list(head_ptr);
  137.  
  138.     printf("\n\nEnd of program\n");
  139.     return (0);
  140. }
Parsed in 0.016 seconds