Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Program 24 \"Sorting Students\" Write a C++ program that will open a file named

ID: 3775995 • Letter: P

Question

Program 24 "Sorting Students" Write a C++ program that will open a file named stDATA.txt. This file contains an unknown number of student records, one per line. The total number of records will be less than or equal to 100. Your program should print a list of students sorted by GPA. If two students have the same GPA they should be sub-sorted by classification (SR, JR, SO, FR). If two students have the same GPA and the same classification, they should be sub-sorted by last name. If two students have the same GPA, classification, and last name they should be sub-sorted by first name. If two students have the same GPA, classification, last name and first name, the second student's record should not be printed; instead the message: "I THINK THIS IS A DUPLICATE RECORD" should be printed. [edit]Deliverables main.cpp prog24Functions.h prog24Functions.cpp Sample data file: FirstName LastName CLASS ZIP AGE HomeTown GPA Hailee Ferrel FR 72275 20 Layton 3.63 Perry Caldwell-Reed SO 4164 19 Racine 2.96 Andrew Dawson JR 39123 21 Huntington 2.29 William Senser SR 15886 25 Fontana 2.14 Shelby Santiago FR 57021 23 Winter 3.15 Matthew Brannon SO 54064 18 Santa 3.35 Christopher Kou JR 31907 22 Monroe 2.36 Cassidy Monjaras SR 41928 24 Jefferson 2.13 Lauren Shah FR 65008 23 Visalia 2.66 Jonathan Quintanilla SO 79343 16 Howell 3.69 Andrew Chen JR 86176 18 Brownsville 3.32 Brendel Unruh SR 37743 20 Lansing 2.48 Christopher Royse FR 8095 22 Anchorage 3.98 Jose Harrison SO 33128 17 Greenville 2.09 Alexander Seiford JR 96517 16 Greenville 2.88 Quinton Johnson SR 56102 20 Winston 3.89 Tristan Gardner FR 74489 21 Brighton 2.22 Alexander Motz SO 49195 24 Cathedral 3.13 Molly Atkins JR 27698 15 Des 3.54 William Savells SR 17951 19 Shreveport 3.16 Shawn Wilcoxen FR 86284 21 Syracuse 3.11 Austin Hardy SO 73491 15 Birmingham 2.52 Jason Ammons JR 94515 22 Atlanta 2.86 Phillip Dutta SR 19503 19 Milwaukee 2.34 Wesley Elliott FR 8885 17 Eugene 2.64 Alexander Childers SO 55503 17 Thornton 2.76 Cameron Jones JR 77131 20 New 2.56 Jessica Louis SR 66868 24 Asheville 3.41 Ryan Kliphon FR 6054 16 Kissimmee 3.26 Zachariah Qureshi SO 18845 19 Harlingen 2.65 Ryan Cadenas JR 35181 16 Olathe 3.45 Chandrima Bryant SR 64898 18 Chicago 3.74 Doraliz Hansen FR 30588 23 Boston 2.61 Alonso Greer SO 94115 20 Victorville 3.19 David Llamas JR 84133 19 Hesperia 2.54 Caleb Dylag SR 35101 15 Sebastian 3.91 Rachel Zust FR 42196 16 Westminster 2.74 Tyler DeRosa SO 14421 19 Westminster 3.21 Kendall Sedate JR 43036 22 Moreno 2.29 Matthew Ortiz-Vitali SR 14801 22 Cary 2.03 Ryan Al-Nimri FR 53238 16 Mission 3.75 Daniel Dratz SO 59534 22 Mission 2.83 Weston Gage JR 56011 18 Macon 2.43 Asad Riggins SR 67131 25 Macon 2.06 John Thompson FR 15386 21 Olympia 3.82 James Seunsom SO 42143 21 Richmond 3.58 Corbin Bodden JR 32787 16 Provo 2.96 Allison Veselka SR 99047 21 Wilmington 3.35 Shawn Renton FR 74027 24 Fort 2.21 Michael Martin SO 74146 16 Bryan 2.82 Austin Huizinga JR 49494 15 Leominster 3.35 Caleb Berkovsky SR 3711 24 Leominster 3.51 Taylor Brown FR 69305 24 Kailua 2.18 Elizabeth Taylor SO 54950 17 Tempe 2.95 Alexandra Itskin JR 35943 16 Denver 3.12 Reagan Zipoy SR 3892 16 Pomona 2.70 Edgar Leblanc FR 52703 22 Riverside 3.12 Brian Stevens SO 93293 23 Nashua 3.26 Sam Pearson JR 69161 17 Danbury 3.14 Colin Peterson SR 77027 24 Gulfport-Biloxi 2.72 Diana Sharpe FR 65253 22 Palmdale 3.35 Ching-Jung Labrada SO 48635 20 Aberdeen 3.93 Roberto Haddad JR 69486 19 Escondido 2.70 Mahlet Shifflet SR 82554 15 Appleton 3.32 Parker Miller FR 93219 20 South 2.32 Matthew Leake SO 49468 19 Mesa 3.55 Corey McBrayer JR 71592 18 Santa 2.45 David Tramontano SR 38229 24 Murrieta 3.51 John Rundquist FR 78321 16 Clarke 2.42 Caroline Christenberry SO 42590 24 Poughkeepsie 3.04 Ashley Thomas JR 86691 17 Louisville 2.95 Kyle Andras SR 43291 25 Bakersfield 2.62 Trey Bolling FR 74843 16 Muskegon 3.79 Adam Brown SO 76537 21 Fort 3.89 Michael Handley JR 58339 19 Lancaster 2.29 Andrew Zinah SR 88135 22 Odessa 3.55 Shawn Wilcoxen FR 86284 21 Syracuse 3.11 Austin Hardy SO 73491 15 Birmingham 2.52 Jason Ammons JR 94515 22 Atlanta 2.86 Phillip Dutta SR 19503 19 Milwaukee 2.34 Wesley Elliott FR 8885 17 Eugene 2.64 Phillip Dutta SR 19503 19 Milwaukee 2.34 Wesley Elliott FR 8885 17 Eugene 2.64 Diana Sharpe FR 65253 22 Palmdale 3.35 Diana Sharpe FR 65253 22 Palmdale 3.35 Diana Sharpe FR 65253 22 Palmdale 3.35 Sample Output: First Name Last Name Class Zip Age HomeTown GPA Matthew Ortiz-Vitali SR 14801 22 Cary 2.03 Asad Riggins SR 67131 25 Macon 2.06 Jose Harrison SO 33128 17 Greenville 2.09 Cassidy Monjaras SR 41928 24 Jefferson 2.13 William Senser SR 15886 25 Fontana 2.14 Taylor Brown FR 69305 24 Kailua 2.18 Shawn Renton FR 74027 24 Fort 2.21 Tristan Gardner FR 74489 21 Brighton 2.22 Andrew Dawson JR 39123 21 Huntington 2.29 Michael Handley JR 58339 19 Lancaster 2.29 Kendall Sedate JR 43036 22 Moreno 2.29 Parker Miller FR 93219 20 South 2.32 Phillip Dutta SR 19503 19 Milwaukee 2.34 I THINK THIS IS A DUPLICATE RECORD I THINK THIS IS A DUPLICATE RECORD Christopher Kou JR 31907 22 Monroe 2.36 John Rundquist FR 78321 16 Clarke 2.42 Weston Gage JR 56011 18 Macon 2.43 Corey McBrayer JR 71592 18 Santa 2.45 Brendel Unruh SR 37743 20 Lansing 2.48 Austin Hardy SO 73491 15 Birmingham 2.52 I THINK THIS IS A DUPLICATE RECORD David Llamas JR 84133 19 Hesperia 2.54 Cameron Jones JR 77131 20 New 2.56 Doraliz Hansen FR 30588 23 Boston 2.61 Kyle Andras SR 43291 25 Bakersfield 2.62 Wesley Elliott FR 8885 17 Eugene 2.64 I THINK THIS IS A DUPLICATE RECORD I THINK THIS IS A DUPLICATE RECORD Zachariah Qureshi SO 18845 19 Harlingen 2.65 Lauren Shah FR 65008 23 Visalia 2.66 Roberto Haddad JR 69486 19 Escondido 2.70 Reagan Zipoy SR 3892 16 Pomona 2.70 Colin Peterson SR 77027 24 Gulfport-Biloxi 2.72 Rachel Zust FR 42196 16 Westminster 2.74 Alexander Childers SO 55503 17 Thornton 2.76 Michael Martin SO 74146 16 Bryan 2.82 Daniel Dratz SO 59534 22 Mission 2.83 Jason Ammons JR 94515 22 Atlanta 2.86 I THINK THIS IS A DUPLICATE RECORD Alexander Seiford JR 96517 16 Greenville 2.88 Ashley Thomas JR 86691 17 Louisville 2.95 Elizabeth Taylor SO 54950 17 Tempe 2.95 Corbin Bodden JR 32787 16 Provo 2.96 Perry Caldwell-Reed SO 4164 19 Racine 2.96 Caroline Christenberry SO 42590 24 Poughkeepsie 3.04 Shawn Wilcoxen FR 86284 21 Syracuse 3.11 I THINK THIS IS A DUPLICATE RECORD Edgar Leblanc FR 52703 22 Riverside 3.12 Alexandra Itskin JR 35943 16 Denver 3.12 Alexander Motz SO 49195 24 Cathedral 3.13 Sam Pearson JR 69161 17 Danbury 3.14 Shelby Santiago FR 57021 23 Winter 3.15 William Savells SR 17951 19 Shreveport 3.16 Alonso Greer SO 94115 20 Victorville 3.19 Tyler DeRosa SO 14421 19 Westminster 3.21 Ryan Kliphon FR 6054 16 Kissimmee 3.26 Brian Stevens SO 93293 23 Nashua 3.26 Andrew Chen JR 86176 18 Brownsville 3.32 Mahlet Shifflet SR 82554 15 Appleton 3.32 Diana Sharpe FR 65253 22 Palmdale 3.35 I THINK THIS IS A DUPLICATE RECORD I THINK THIS IS A DUPLICATE RECORD I THINK THIS IS A DUPLICATE RECORD Austin Huizinga JR 49494 15 Leominster 3.35 Matthew Brannon SO 54064 18 Santa 3.35 Allison Veselka SR 99047 21 Wilmington 3.35 Jessica Louis SR 66868 24 Asheville 3.41 Ryan Cadenas JR 35181 16 Olathe 3.45 Caleb Berkovsky SR 3711 24 Leominster 3.51 David Tramontano SR 38229 24 Murrieta 3.51 Molly Atkins JR 27698 15 Des 3.54 Matthew Leake SO 49468 19 Mesa 3.55 Andrew Zinah SR 88135 22 Odessa 3.55 James Seunsom SO 42143 21 Richmond 3.58 Hailee Ferrel FR 72275 20 Layton 3.63 Jonathan Quintanilla SO 79343 16 Howell 3.69 Chandrima Bryant SR 64898 18 Chicago 3.74 Ryan Al-Nimri FR 53238 16 Mission 3.75 Trey Bolling FR 74843 16 Muskegon 3.79 John Thompson FR 15386 21 Olympia 3.82 Adam Brown SO 76537 21 Fort 3.89 Quinton Johnson SR 56102 20 Winston 3.89 Caleb Dylag SR 35101 15 Sebastian 3.91 Ching-Jung Labrada SO 48635 20 Aberdeen 3.93 Christopher Royse FR 8095 22 Anchorage 3.98

Explanation / Answer

#include <iostream>
#include <fstream>
using namespace std;


//student class to capture students data
class Student
{
  
    //instance c=variables for students
    public:
string fname;
string lname;
string classs;
int zip;
int age;
string town;
float gpa;

//constructor
Student(string fn,string ln,string c,int z,int a,string h,float g)
{
      fname=fn;
      lname=ln;
      classs=c;
      zip=z;
      age=a;
      town=h;
      gpa=g;
}

//default constructor
Student()
{
    
}
};


//function to read data frm file
//returns no of records read
int readFromFile(Student students[100])
{
    int size=0;
    string fname,lname,town,classs;
    int zip,age;
    float gpa;
ifstream myfile ("stDATA.txt");
if (myfile.is_open())
{
      getline(myfile,fname);
    while ( myfile>>fname )
    {
        myfile>>lname;
        myfile>>classs;
        myfile>>zip;
        myfile>>age;
        myfile>>town;
        myfile>>gpa;
      students[size]=Student(fname,lname,classs,zip,age,town,gpa);
      size++;
    }
    myfile.close();
}

else cout << "Unable to open file";
return size;

}

//display student read
void display(Student students[],int size)
{
    cout<<" Name CLASS ZIP AGE HomeTown GPA";
     for(int i=0;i<size;i++)
    {
        if(students[i].fname=="Duplicate")
        cout<<" I THINK THIS IS A DUPLICATE RECORD";
        else
        cout<<" "<<students[i].fname<< " " <<students[i].lname<< " "<<students[i].classs<< " "<<students[i].zip<< " "<<students[i].age<< " "<<students[i].town<< " "<<students[i].gpa;
    }
}
///fucntion to sort students based on gpa,name,classifictaion
void sort(Student students[],int size)
{
  
    //loop throigh students array and sort it
    Student tmp;
    for (int i = 0; i < size; ++i)
    {
        for (int j = i + 1; j < size; ++j)
        {
          
            //first iteration compare gpa of students
            if (students[i].gpa > students[j].gpa)
            {
                tmp = students[i];
                students[i] = students[j];
                students[j] = tmp;
            }
          
            //if students gpa match,then compare classifictaion
            else
            if(students[i].gpa==students[j].gpa)
            {
                if(students[i].classs >students[j].classs)
                {
                    tmp = students[i];
                students[i] = students[j];
                students[j] = tmp;
                }
              
                //if students gpa and classfictaion match, compare lname
                else
                if(students[i].classs == students[j].classs)
                {
                    if(students[i].lname >students[j].lname)
                    {
                        tmp = students[i];
                        students[i] = students[j];
                        students[j] = tmp;
                    }
                    // f students gpa and classfictaion and lname match, compare fname
                    else
                    if(students[i].lname == students[j].lname)
                    {
                         if(students[i].fname >students[j].fname)
                         {
                             tmp = students[i];
                             students[i] = students[j];
                             students[j] = tmp;
                        }
                         // if students gpa and classfictaion and lname and fname match it emans it's a duplkictae record
                         //set a flag to identify it
                        else
                         if(students[i].fname ==students[j].fname)
                         {
                            students[j].fname="Duplicate";
                         }
                    }
                }
              
            }
        }
    }
  
    //sort
  
}

//main fucntion which triggers
int main()
{
    Student students[100];
   int size=readFromFile(students);
   sort(students,size);
   display(students,size);
   cout<<endl;
   return 0;
}

Sample Output:

Ryan Kliphon    FR       6054    16     Kissimmee       3.26                                                                                                                                                                                   

Brian Stevens   SO       93293   23     Nashua  3.26                                                                                                                                                                                           

Andrew Chen     JR       86176   18     Brownsville     3.32                                                                                                                                                                                   

Mahlet Shifflet SR       82554   15     Appleton        3.32                                                                                                                                                                                   

Diana Sharpe    FR       65253   22     Palmdale        3.35                                                                                                                                                                                   

I THINK THIS IS A DUPLICATE RECORD                                                                                                                                                                                                             

I THINK THIS IS A DUPLICATE RECORD                                                                                                                                                                                                             

I THINK THIS IS A DUPLICATE RECORD                                                                                                                                                                                                             

Austin Huizinga JR       49494   15     Leominster      3.35                                                                                                                                                                                   

Matthew Brannon SO       54064   18     Santa   3.35                                                                                                                                                                                           

Allison Veselka SR       99047   21     Wilmington      3.35                                                                                                                                                                                   

Jessica Louis   SR       66868   24     Asheville       3.41                                                                                                                                                                                   

Ryan Cadenas    JR       35181   16     Olathe  3.45                                                                                                                                                                                           

Caleb Berkovsky SR       3711    24     Leominster      3.51                                                                                                                                                                                   

David Tramontano        SR       38229   24     Murrieta        3.51                                                                                                                                                                           

Molly Atkins    JR       27698   15     Des     3.54                                                                                                                                                                                           

Matthew Leake   SO       49468   19     Mesa    3.55                                                                                                                                                                                           

Andrew Zinah    SR       88135   22     Odessa  3.55                                                                                                                                                                                           

James Seunsom   SO       42143   21     Richmond        3.58                                                                                                                                                                                   

Hailee Ferrel   FR       72275   20     Layton  3.63                                                                                                                                                                                           

Jonathan Quintanilla    SO       79343   16     Howell  3.69                                                                                                                                                                                   

Chandrima Bryant        SR       64898   18     Chicago 3.74                                                                                                                                                                                   

Ryan Al-Nimri   FR       53238   16     Mission 3.75                                                                                                                                                                                           

Trey Bolling    FR       74843   16     Muskegon        3.79                                                                                                                                                                                   

John Thompson   FR       15386   21     Olympia 3.82                                                                                                                                                                                           

Adam Brown      SO       76537   21     Fort    3.89                                                                                                                                                                                           

Quinton Johnson SR       56102   20     Winston 3.89                                                                                                                                                                                           

Caleb Dylag     SR       35101   15     Sebastian       3.91                                                                                                                                                                                   

Ching-Jung Labrada      SO       48635   20     Aberdeen        3.93                                                                                                                                                                           

Christopher Royse       FR       8095    22     Anchorage       3.98  

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote