2016-05-28 11 views
-1

私はスイッチケースを使用していて、ケース内にループとif/elseを持っています。エラーが検出されない場合でも、ファイルに正しいタイプの車を表示しないのはなぜですか?明日は私の納期が寂しいです。コーディングはケース番号3にあります。これはcustomer_infoファイルに情報を書き込むことを目的としています。間違った詳細は、Cプログラミングのファイルに書かれています

コーディング:

#include<stdio.h> 

void display_cars(); 
float total_price_A(int); 
float total_price_B(int); 
float total_price_C(int); 
void readcustomerrent_info(); 

main() 
{ 

    int i,selection,answer; 
    int noofcustomer; 
    char car; 

    printf("Number of customers: "); 
    scanf("%d", &noofcustomer); 

    char fullname[noofcustomer][50], ic[noofcustomer][50], phonenum[noofcustomer][50], license[noofcustomer][50]; 
    int renthour[noofcustomer]; 
    float total_price[noofcustomer]; 

    printf("\t=================================================="); 
    printf("\n\t\t   CAR RENTAL SYSTEM\n"); 
    printf("\t==================================================\n\n"); 

    do 
    { 

    printf("\t\t  ----..Main Menu..----\n\n\t1 - Insert Customer Information \n\t2 - Select Car & Hour \n\t3 - Read Customer and Rent Information\n"); 

    printf("\nChoose your menu selection\n"); 
    scanf("%d", &selection); 

    switch(selection) 
    { 
    case 1: printf("----Please fill in the information below----\n\n"); 



      for(i=0;i<noofcustomer;i++) 
      { 
       printf("Your Name : "); 
       fflush(stdin); 
       gets(fullname[i]); 


       printf("Your IC : "); 
       fflush(stdin); 
       gets(ic[i]); 


       printf("Your Telephone Number : "); 
       fflush(stdin); 
       gets(phonenum[i]); 


       printf("Your License Number : "); 
       fflush(stdin); 
       gets(license[i]); 

       printf("\n\n"); 


      } 

      break; 


    case 2: printf("\n----Select Car & Hour----\n"); 

      display_cars(); 
      for(i=0;i<noofcustomer;i++) 
      { 
       printf("Choose the car\n"); 
       fflush(stdin); 
       scanf("%c", &car); 

       printf("Enter the rent hour : "); 
       scanf("%d", &renthour[i]); 

       if(car=='A') 
       { 
        total_price[i] = total_price_A(renthour[i]); 
        printf("\nTotal Price For The Rent: RM%.2f", total_price[i]); 
        printf("\n\n"); 

       } 
       else if(car=='B') 
       { 
        total_price[i] = total_price_B(renthour[i]); 
        printf("\nTotal Price For The Rent: RM%.2f", total_price[i]); 
        printf("\n\n"); 

       } 
       else if(car=='C') 
       { 
        total_price[i] = total_price_C(renthour[i]); 
        printf("\nTotal Price For The Rent: RM%.2f", total_price[i]); 
        printf("\n\n"); 
       } 
       else 
       { 
        printf("\nThere's no such thing in our system. Kindly please try another letter\n"); 
        printf("\n\n"); 
       } 
      } 


      break; 



    case 3: printf("\n---Receipt and Read Customer Information----\n"); 

      FILE *myfile; 
      myfile = fopen("customer_info.txt","w"); 

      for(i=0;i<noofcustomer;i++) 
      { 
       fprintf(myfile,"Name : %s",fullname[i]); 
       fprintf(myfile,"\nIC : %s",ic[i]); 
       fprintf(myfile,"\nTelephone Number : %s",phonenum[i]); 
       fprintf(myfile,"\nLicense Number : %s",license[i]); 

       if(car=='A') 
       { 
        fprintf(myfile,"\nCar : Audi"); 
        fprintf(myfile,"\nTotal Price : %.2f",total_price[i]); 
        fprintf(myfile,"\n\n"); 
       } 
       else 
        if(car=='B') 
        { 
        fprintf(myfile,"\nCar : Corolla"); 
        fprintf(myfile,"\nTotal Price : %.2f",total_price[i]); 
        fprintf(myfile,"\n\n"); 
        } 
        else 
        if(car=='C') 
        { 
         fprintf(myfile,"\nCar : Axia"); 
         fprintf(myfile,"\nTotal Price : %.2f",total_price[i]); 
         fprintf(myfile,"\n\n"); 
        } 
        else 
        { 
         fprintf(myfile,"\nCar : -"); 
         fprintf(myfile,"\nTotal Price : -"); 
         fprintf(myfile,"\n\n"); 
        } 
      } 

       fclose(myfile); 

      //readcustomerrent_info(); 

      break; 


    default: printf("Your entered invalid selection."); 

    } 

    printf("\n\nDo you like to continue? (Yes-1/No-0): "); 
    scanf("%d", &answer); 

    }while(answer == 1); 

    printf("\nExit the system..... THANK YOU FOR USING THE SYSTEM\n\n\n"); 
} 

enter image description here

それはすべての顧客のための第2のループ情報に車の種類を示したが、計算がうまく動作します:(願う君たちここで私のコーディングおよび出力です

答えて

0

すべてのお客様のために車種情報を配列に保存する必要があります。それ以外の場合、すべてのお客様の車種は車種と同じになります。最後の顧客。

あなたはこれらの変更を行う必要があります。

... 

printf("Number of customers: "); 
scanf("%d", &noofcustomer); 

... 

char car[noofcustomer];//holds the car type for each customer 

... 

case 2: printf("\n----Select Car & Hour----\n"); 
     display_cars(); 
     for(i=0;i<noofcustomer;i++) 
     { 
      printf("Choose the car\n"); 
      fflush(stdin); 
      scanf("%c", &car[i]);//save the car type for each customer 

      ... 

      if(car[i]=='A')//use an index 
      { 
      ... 

case 3: printf("\n---Receipt and Read Customer Information----\n"); 

     FILE *myfile; 
     myfile = fopen("customer_info.txt","w"); 

     for(i=0;i<noofcustomer;i++) 
     { 
      if(car[i]=='A')//use the previously populated array of car types for each customer 
      { 
       ... 
+1

はあなたの助けをとても感謝し、それは本当に便利です! :) – husnatasnim

関連する問題