2017-10-14 45 views
0

我迷失於案件3部分 - 通過瀏覽結構並檢查輸入是否匹配來更新員工信息。如何顯示和替換員工數據?

問題:

「提示用於使用 do-while循環的僱員標識號的用戶雖然僱員陣列中沒有發現的數量, 保持提示用戶。」。

「找到號碼後,顯示帶有該識別號碼的員工 的當前工資,並提示用戶輸入新的工資 。將舊工資替換爲輸入值。

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h> 
#define SIZE 4 

struct employee_data{ 
    int Age; 
    int Int_Num; 
    double Salary; 
}; 

int main(void){ 

    int option = 0; 
    int NOE = 0; 
    printf("---=== EMPLOYEE DATA ===---\n");`enter code here` 

    struct employee_data emp[SIZE]; 
     // Employee_ID 
    int i; 
    do { 
     // Print the option list 
     printf("\n1. Display Employee Information\n"); 
     printf("2. Add Employee\n"); 

     printf("3. Update Employee Salary\n"); 
     printf("4. Remove Employee\n"); 
     printf("0. Exit\n\n"); 
     printf("Please select from the above options: "); 

     // Capture input to option variable 
     scanf("%d",&option); 
     printf("\n"); 

     switch (option) { 
      case 0: // Exit the program 
        printf("Exiting Employee Data Program. Good Bye!!!\n"); 
        break; 
      case 1: // Display Employee Data 
          // @IN-LAB 

        printf("EMP ID EMP AGE EMP SALARY\n"); 
        printf("====== ======= ==========\n"); 
        for (i=0; i<SIZE; i++){ 
         printf("%6d%9d%11.2lf\n", emp[i].Int_Num, emp[i].Age,emp[i] 
        // /printf("\n"); 
        } 
        // printf("%6d%9d%11.2lf", emp[1].Age, emp[1].Int_Num,emp[1] 
        // Use "%6d%9d%11.2lf" formatting in a 
        // printf statement to display 
        // employee id, age and salary of 
        // all employees using a loop construct 

        // The loop construct will be run for SIZE times 
        // and will only display Employee data 
        // where the EmployeeID is > 0 
        // printf("\n"); 
        break; 
      case 2: // Adding Employee 

        // @IN-LAB 

        // for (i = 0; i < SIZE; i++) 
        printf("Adding Employee\n"); 
        printf("===============\n"); 
        if(NOE < SIZE){ 
         // printf("ERROR!!! Maximum Number of Employees Reached\n" 
         printf("Enter Employee ID: "); 
         scanf("%d", &emp[NOE].Int_Num); 
         printf("Enter Employee Age: "); 
         scanf("%d", &emp[NOE].Age); 
         printf("Enter Employee Salary: "); 
         scanf("%11lf", &emp[NOE].Salary); 

         NOE++; 
        } 
        else{ 
         printf("ERROR!!! Maximum Number of Employees Reached\n"); 
        } 
        // Check for limits on the array and add employee 
        // data accordingly.} 
        break; 

        int number = 0; 
      case 3: printf("Update Employee Salary\n"); 
        printf("======================\n"); 
        do { 

         printf("Enter Employee ID: "); 
         scanf("%d", &number); 
         if(number == emp[NOE].Int_Num){ 
          printf("The current salary is %11lf", emp[NOE].Salary); 

          } 
          // else{ 
        }while (number != emp[NOE].Int_Num); 
        break; 
+0

'if(number == emp [NOE] .Int_Num){':'NOE'不能用於此。 – BLUEPIXY

+0

還有'printf(「%6d%9d%11.2lf \ n」,emp [i] .Int_Num,emp [i] .Age,emp [i]':代碼丟失。 – BLUEPIXY

+0

int number = 0; 情況3:' - >'情況3:; int number = 0;' – BLUEPIXY

回答

0

你需要做以下修改。首先將所有當前員工與給定輸入進行比較。如果沒有匹配,則提示用戶再次請求員工識別碼。

case 3: printf("Update Employee Salary\n"); 
       printf("======================\n"); 
       int flag = 0; 
       do{ 
        printf("Enter Employee ID: "); 
        scanf("%d", &number); 
        int i; 
        for(i =0; i<NOE ; i++) //checking for each current employee 
        { 
         if(number == emp[i].Int_Num) 
         { 
          printf("The current salary is %11lf", emp[i].Salary); 
          printf("\nInput new salary"); 
          scanf("%11lf", &emp[i].Salary); 
          flag = 1; 
          break; 
         } 

        } 
       } while (flag == 0); 
       break;