0

Can anyone help me fix these?Program displaying and writing symbols to my file... And also after calculating GPA , when choose function read or display all it is illustrated as null....help plz

# include <stdio.h>
# include <string.h>
# include <iostream>
# include <fstream>
#include <stdlib.h>

using namespace std;

typedef struct {
        char fname[20];
        char lname[20];
        char IDNum[20];
        char DOB [20];
        float Mark1;
        float Mark2;
        float Mark3;
        float Mark4;
        float GPA;       
} student;



const int num_of_students=10;

int stu_num=0;

//*************************************************************
void writetofile(student temp_array[]) {
      ofstream studentfile ("studentfile.txt", ios::app|ios::out);
      if (studentfile.is_open()){
         
         studentfile << temp_array[stu_num-1].fname << endl;
         studentfile << temp_array[stu_num-1].lname << endl; 
         studentfile << temp_array[stu_num-1].IDNum << endl;   
         studentfile << temp_array[stu_num-1].DOB << endl;     
         studentfile << temp_array[stu_num-1].Mark1 << endl;
         studentfile << temp_array[stu_num-1].Mark2<< endl;
         studentfile << temp_array[stu_num-1].Mark3 << endl;
         studentfile << temp_array[stu_num-1].Mark4 << endl;
        studentfile << temp_array[stu_num-1].GPA<< endl;
         }
      else cout << "Error opening file.";
      }//writing to a file
      
//*************************************************************

void readfromfile (student temp_array[]) {

string line;

 ifstream studentfile ("studentfile.txt");
 if (studentfile.is_open())
 {
 while (! studentfile.eof() )
 {
 getline (studentfile,line);
 cout << line << endl;
 }    
 studentfile.close();
 }
 else cout << "Unable to open file";


}
//*************************************************
void addStudent(student temp_array[]) {
     
     string tempValue;
     char ok;
     float total  ;

     
     if (stu_num<num_of_students){
         
         printf("\nAdd Student %d",stu_num+1,"\n");
         
         	   do{//validation to check field length
         printf("\nEnter First Name: ");
		 cin>>tempValue; //input
		 if(tempValue.length()>20){
			 ok='F';
			 printf("\nFirst Name Too Long!");
		 }else{
			 ok='T';
		 }
	   }while(ok!='T');

         
//************** 
        
        do{ //validation to check field length
         printf("\nEnter Last Name: ");
         cin>>tempValue;
         if(tempValue.length()>20){
			 ok='F';
			 printf("\nLast Name Too Long!");
		 }else{
			 ok='T';
		 }
	   }while(ok!='T');

        
//**************
         
                do{//validation to check field length
         printf("\nEnter ID Number: ");
         cin>>tempValue;
         if(tempValue.length()>20){
			 ok='F';
			 printf("\nID Number Too Long!");
		 }else{
			 ok='T';
		 }
	   }while(ok!='T');

         
//**************
         
                do{//validation to check field length
         printf("\nEnter DOB: ");
         cin>>tempValue;
         if(tempValue.length()>20){
			 ok='F';
			 printf("\nDOB Number Too Long!");
		 }else{
			 ok='T';
		 }
	   }while(ok!='T');

         
//**************   
         
      do{  // validation to verify input is a numerical
       printf("\nEnter 1st Mark which is out of 100: ");           
       cin>>tempValue;
       temp_array[num_of_students].Mark1 = atof(tempValue.c_str());
       if (temp_array[num_of_students].Mark1 = atof(tempValue.c_str())){
           ok = 'T';
       }else{
             ok='F';
             printf("\nInvalid Numeric Value!");
             }
       }while (ok!= 'T');
       
//**************     
      
      do{  // validation to verify input is a numerical
       printf("\nEnter 2nd Mark which is out of 100: ");           
       cin>>tempValue;
       temp_array[num_of_students].Mark2 = atof(tempValue.c_str());
       if (temp_array[num_of_students].Mark2 = atof(tempValue.c_str())){
           ok = 'T';
       }else{
             ok='F';
             printf("\nInvalid Numeric Value!");
             }
       }while (ok!= 'T');
       
//**************
     
      do{  // validation to verify input is a numerical
       printf("\nEnter 3rd Mark which is out of 100: ");           
       cin>>tempValue;
       temp_array[num_of_students].Mark3 = atof(tempValue.c_str());
       if (temp_array[num_of_students].Mark3 = atof(tempValue.c_str())){
           ok = 'T';
       }else{
             ok='F';
             printf("\nInvalid Numeric Value!");
             }
       }while (ok!= 'T');
      
//**************      
      
      do{  // validation to verify input is a numerical
       printf("\nEnter 4th Mark which is out of 100: ");           
       cin>>tempValue;
       temp_array[num_of_students].Mark4 = atof(tempValue.c_str());
       if (temp_array[num_of_students].Mark4 = atof(tempValue.c_str())){
           ok = 'T';
       }else{
             ok='F';
             printf("\nInvalid Numeric Value!");
             }
       }while (ok!= 'T');
       
//**************
       do{  // validation to verify input is a numerical
       total = temp_array[num_of_students].Mark1 + temp_array[num_of_students].Mark2 +temp_array[num_of_students]. Mark3 +temp_array[num_of_students]. Mark4;
       temp_array[num_of_students].GPA = total / 100.00;
       
       

       printf("\nHence the GPA is: %.2f. " ,temp_array[num_of_students].GPA );
                
       cin>>tempValue;
       temp_array[num_of_students].GPA = atof(tempValue.c_str());
       if (temp_array[num_of_students].GPA = atof(tempValue.c_str())){
           ok = 'T';
       }else{
             ok='F';
             printf("\nInvalid Numeric Value!");
             }
       }while (ok!= 'T');                
//**************
         stu_num +=  1;
         writetofile(temp_array);

}
     else 
     {
                  
     
         printf("Array is full. No more records can be added.");
     }
}

//*************************************************
void findStudent (student temp_array[])
{
     char searchlname[20];
     bool found;
     int diff;
     int i;
     
     printf("\n**********FIND STUDENT**********") ;
     printf("\nEnter Students Last Name:");
     scanf( "%s", searchlname);
     found = false;
     
     for(i=0; i<num_of_students; i++) {
              diff = strcmp(searchlname,temp_array[i].lname);
              if ( diff == 0) {
                   found = true;
                   printf("\nFirts Name: %s", temp_array[i].fname);
                   printf("\nLast Name: %s",temp_array[i].lname);
                   printf("\nID Number: %s", temp_array[i].IDNum);
                   printf("\nDOB: %s", temp_array[i].DOB);
                   printf("\n1st Mark: %.2f", temp_array[i].Mark1);
                   printf("\n2nd Mark: %.2f", temp_array[i].Mark2);
                   printf("\n3rd Mark: %.2f", temp_array[i].Mark3);
                   printf("\n4th Mark: %.2f", temp_array[i].Mark4);
                   printf("\nGPA: %.2f", temp_array[i].GPA);
              }
     }
     
     if (found == false) {
               printf("\nNo Matches Found.");
     }
     
}//end of findStudent

//*************************************************

void displayAll (student temp_array[]) {
     int i;
     printf("\n******DISPLAY ALL******");
     printf("\n");
     for(i=0; i<stu_num; i++){
              printf("\nFirts Name: %s", temp_array[i].fname);
              printf("\nLast Name: %s", temp_array[i].lname);
              printf("\nID Number: %s", temp_array[i].IDNum);
              printf("\nDOB: %s", temp_array[i].DOB);
              printf("\n1st Mark: %.2f", temp_array[i].Mark1);
              printf("\n2nd Mark: %.2f", temp_array[i].Mark2);
              printf("\n3rd Mark: %.2f", temp_array[i].Mark3);
              printf("\n4th Mark: %.2f", temp_array[i].Mark4);
               printf("\nGPA: %.2f", temp_array[i].GPA);
              printf("\n*******************");
     }
}//end of displayAll

//*************************************************
void bubble_sort(student temp_array[num_of_students]) {

int i, j, flag = 1; 
      char tempfname[20];
      char templname[20];
      char tempIDNum[20];
      char tempDOB [20];
      float tempGPA;             

      for(i = 1; (i <= num_of_students) && flag; i++)
     {
          flag = 0;
          for (j=0; j < (num_of_students -1); j++)
         {
               if (temp_array[j+1].GPA > temp_array[j].GPA)      
              { 
                    strcpy(tempfname, temp_array[j].fname);             
                    strcpy(temp_array[j].fname, temp_array[j+1].fname);
                    strcpy(temp_array[j+1].fname, tempfname);
                    
                    strcpy(templname, temp_array[j].lname);             
                    strcpy(temp_array[j].lname, temp_array[j+1].lname);
                    strcpy(temp_array[j+1].lname, templname);
                    
                    strcpy(tempIDNum, temp_array[j].IDNum);             
                    strcpy(temp_array[j].IDNum, temp_array[j+1].IDNum);
                    strcpy(temp_array[j+1].IDNum, tempIDNum);
                    
                    strcpy(tempDOB, temp_array[j].DOB);             
                    strcpy(temp_array[j].DOB, temp_array[j+1].DOB);
                    strcpy(temp_array[j+1].DOB, tempDOB);
                    
                                      
                    tempGPA = temp_array[j].GPA;             
                    temp_array[j].GPA = temp_array[j+1].GPA;
                    temp_array[j+1].GPA = tempGPA;
                    flag = 1;              
               }
          }
     }
     return;   
}
//*************************************************


//*************************************************
int main (void){
    student student_array[num_of_students];
    char choice;
         
    printf("\n");
    printf("\n******MAIN MENU******");
    printf("\n Choose One of the Following:");
    printf("\n (1) Add Student");
    printf("\n (2) Find Student");
    printf("\n (3) Display All");
    printf("\n (4) Read saved data");
    printf("\n (5) Sort students by marks");
    printf("\n (6) Exit\n");
    
    scanf("%c", &choice);
    
    if (choice=='6'){
       exit(0);
    }
    
    while(choice != '6') {
                 switch (choice) {
                        
                 case '1':
                          addStudent (student_array);
                          break;
                 
                 case '2':
                          findStudent (student_array);
                          break;
                
                 case '3':
                          displayAll (student_array);
                          break;
                 
                 case '4':
                          readfromfile (student_array);
                                                                  
                 case '5':
                          bubble_sort (student_array);
                          break;
                          
                 case '6':
                          exit (0);
                          break;
                 
                 }
                 printf("\n******MAIN MENU******");
                 printf("\n Choose One of the Following:");
                 printf("\n (1) Add Student");
                 printf("\n (2) Find Student");
                 printf("\n (3) Display All");
                 printf("\n (4) Read saved data");
                 printf("\n (5) Sort students by marks");
                 printf("\n (6) Exit\n");
                 cin >> choice;
                 
    }
    return 0;
    
}//end of main
2
Contributors
2
Replies
3
Views
7 Years
Discussion Span
Last Post by K'rul
0

Your readfromfile( ) does nothing but read through the file, it does not store anything to your array of students.

In the addStudent, what's wrong with the following bit?

cin>>tempValue;
temp_array[num_of_students].Mark1 = atof(tempValue.c_str());

Where are you attempting to store data?

0

It is writing to file but can you tell me how to read and insert into the temp array?

This article has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.