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

C++ Data Persistance Help Redo the code below to make the data persistent. You w

ID: 3883938 • Letter: C

Question

C++ Data Persistance Help

Redo the code below to make the data persistent. You will have to save information in a file or files so that the application will pick up previously stored data and still operate as intended in Lab1 to

Write a program that allows the user to initially enter information on 4 students and 10 courses. Have the program associate each student to at least four courses for a semester session. The program will display a report showing the assigned courses for each students with the total number of credits.

The student information should include:

1. student ID

2. first name

3. last name

The course information should include:

1. Course ID

2. Course name

3. Number of credits

Design requirement:

A student will be assigned a course through a session. The session should include the following attributes:

1. session ID

2. student ID

3. course ID

4. start date

5. end date

.

See Code Below:

course.h

#include<iostream>
using namespace std;

struct course
   {
       string CourseName;
       string CourseID;
       int numberOfCredits;
   };

student.h

#include<iostream>
using namespace std;

struct student
   {
       string fname;
       string lname;
       string stuID;
   };

session.h

#include<iostream>
using namespace std;

struct session
   {
       int sessionID;
       string stuID;
       string courseID;
       string startDate;
       string endDate;
       int totalCredits;
   };

main.cpp

#include<iostream>
using namespace std;
#include "student.h"
#include "course.h"
#include "session.h"

void fillStudents(student arg[], int size)
{
     for (int i = 0; i < size; i++)
     {
         cout <<"Student #"<<i+1<<endl;
         cout <<"=========="<<endl;
         cout <<"Enter a student ID (i.e 97626): ";
         cin >>arg[i].stuID;
         cout <<"Enter the first name (i.e Ryan): ";
         cin >>arg[i].fname;
         cout <<"Enter the last name (i.e Brown): ";
         cin >>arg[i].lname;
         system("CLS");
     }
}

void fillCourses(course c[], int size)
{
     for (int i = 0; i < size; i++)
     {
         cout <<"Course #"<<i+1<<endl;
         cout <<"=========="<<endl;
         cout <<"Enter course name (i.e Data-Structures (put - instead of spaces)): ";
         cin >>c[i].CourseName;
         cout <<"Enter course ID (i.e CS-230 (put - instead of spaces)): ";
         cin >>c[i].CourseID;
         cout <<"Enter number of credits (i.e 3): ";
         cin >>c[i].numberOfCredits;
         system("CLS");
     }
}

string CourseN(int choice, course ch[])
{
   switch(choice)
   {
       case 1:
           return ch[0].CourseID+" "+ch[0].CourseName;
           break;
       case 2:
           return ch[1].CourseID+" "+ch[1].CourseName;
           break;
       case 3:
           return ch[2].CourseID+" "+ch[2].CourseName;
           break;
       case 4:
           return ch[3].CourseID+" "+ch[3].CourseName;
           break;
       case 5:
           return ch[4].CourseID+" "+ch[4].CourseName;
           break;      
       case 6:
           return ch[5].CourseID+" "+ch[5].CourseName;
           break;
       case 7:
           return ch[6].CourseID+" "+ch[6].CourseName;
           break;
       case 8:
           return ch[7].CourseID+" "+ch[7].CourseName;
           break;
       case 9:
           return ch[8].CourseID+" "+ch[8].CourseName;
           break;
       case 10:
           return ch[9].CourseID+" "+ch[9].CourseName;
           break;      
       default:
           cout<<"Invalid decison!! Good Bye!"<<endl;
           exit(0);
   }
}

int creditTotal(int sel, course ch[])
{
   switch(sel)
   {
       case 1:
           return ch[0].numberOfCredits;
           break;
       case 2:
           return ch[1].numberOfCredits;
           break;
       case 3:
           return ch[2].numberOfCredits;
           break;
       case 4:
           return ch[3].numberOfCredits;
           break;
       case 5:
           return ch[4].numberOfCredits;
           break;      
       case 6:
           return ch[5].numberOfCredits;
           break;
       case 7:
           return ch[6].numberOfCredits;
           break;
       case 8:
           return ch[7].numberOfCredits;
           break;
       case 9:
           return ch[8].numberOfCredits;
           break;
       case 10:
           return ch[9].numberOfCredits;
           break;      
       default:
           cout<<"Invalid Decision!! Good Bye!"<<endl;
           exit(0);
       }
}

void fillSession(student arg[], course c[], session s[])
{
   int c1, c2, c3, c4;
   string ch1, ch2, ch3, ch4;
   string startDate, endDate;
   int cr1, cr2, cr3, cr4;
  
   for (int i = 0; i < 4; i++)
   {
       for(int j = 0; j < 10; j++)
       {
           cout<<"class #"<<j+1<<" "<<c[j].CourseID<<" "<<c[j].CourseName<<" "<<"Credits: "<<c[j].numberOfCredits<<" ";
       }
      
       cout<<"Enter your 1st class choice: ";
       cin>>c1;
       ch1=CourseN(c1,c);
       cout<<"Enter your 2nd class choice: ";
       cin>>c2;
       ch2=CourseN(c2,c);
       cout<<"Enter your 3rd class choice: ";
       cin>>c3;
       ch3=CourseN(c3,c);
       cout<<"Enter your 4th class choice: ";
       cin>>c4;
       ch4=CourseN(c4,c);      
      
       s[i].courseID=ch1+" "+ch2+" "+ch3+" "+ch4;
       cout<<"Enter a start date for your classes (i.e mm/dd/yyyy): ";
       cin>>startDate;
       s[i].startDate=startDate;
       cout<<"Enter a end date for your classes (i.e mm/dd/yyyy): ";
       cin>>endDate;
       s[i].endDate=endDate;
      
       cr1=creditTotal(c1, c);
       cr2=creditTotal(c2, c);
       cr3=creditTotal(c3, c);
       cr4=creditTotal(c4, c);
      
       s[i].totalCredits=cr1+cr2+cr3+cr4;
      
       c1=0;
       c2=0;
       c3=0;
       c4=0;
      
       system("CLS");
   }  
}

void display_report(student s[], course c[], session se[])
{
   for (int i = 0; i < 4; i++)
   {
       cout<<"Student ID: "<<s[i].stuID<<" "<<endl;
       cout<<"Student Name: "<<s[i].lname<<", "<<s[i].fname<<" "<<endl;
       cout<<"Course IDs: "<<se[i].courseID<<" "<<endl;
       cout<<"Start Date: "<<se[i].startDate<<" "<<endl;
       cout<<"End Date: "<<se[i].endDate<<" "<<endl;
       cout<<"Total Credits: "<<se[i].totalCredits<<" "<<endl;
       cout<<" "<<endl;
   }
}


int main()
{
   cout<<"Welcome to the CS 230 Data Structures class add program!"<<endl;
   cout<<"Please follow the prompt to gain a report of your courses for the year: "<<endl<<endl;
    //declare and initialize 4 students
    student stu[4];
    fillStudents(stu, 4);
  
    //declare and initialize 10 courses
    course courses[10];
    fillCourses(courses, 10);
  
    //assign 4 courses for each student
    cout<<"Enter a class selection based on the chart above (1-10), please do not choose the same class twice: "<<endl;
    cout<<"Each student goes by how their information was added"<<endl<<endl;

   session sessions[4];
    fillSession(stu, courses, sessions);
  
    //display a report showing each student with his/her courses
    //show the total number of credits for each student
    cout<<"Please find your name and other important information below to see your classes and credit totals: "<<endl;
    cout <<"=========="<<endl;
    display_report(stu, courses, sessions);
    cout <<"=========="<<endl;
  
  
    system("PAUSE");
    return 0;
}

Explanation / Answer

//============================================================================
// Name        : main.cpp
// Author      : Ramachandra jr
// Version     :
// Copyright   : GNU GPL Licesnse
// Description : Hello World in C++, Ansi-style
//============================================================================

#include<iostream>
#include<fstream>
#include <cstdlib>
#include "student.h"
#include "course.h"
#include "session.h"
using namespace std;


void fillStudents(student arg[], int size)
{
     for (int i = 0; i < size; i++)
     {
         cout <<"Student #"<<i+1<<endl;
         cout <<"=========="<<endl;
         cout <<"Enter a student ID (i.e 97626): ";
         cin >>arg[i].stuID;
         cout <<"Enter the first name (i.e Ryan): ";
         cin >>arg[i].fname;
         cout <<"Enter the last name (i.e Brown): ";
         cin >>arg[i].lname;
         system("clear");
     }
}

void fillCourses(course c[], int size)
{
     for (int i = 0; i < size; i++)
     {
         cout <<"Course #"<<i+1<<endl;
         cout <<"=========="<<endl;
         cout <<"Enter course name (i.e Data-Structures (put - instead of spaces)): ";
         cin >>c[i].CourseName;
         cout <<"Enter course ID (i.e CS-230 (put - instead of spaces)): ";
         cin >>c[i].CourseID;
         cout <<"Enter number of credits (i.e 3): ";
         cin >>c[i].numberOfCredits;
         system("clear");
     }
}

string CourseN(int choice, course ch[])
{
    switch(choice)
    {
        case 1:
            return ch[0].CourseID+" "+ch[0].CourseName;
            break;
        case 2:
            return ch[1].CourseID+" "+ch[1].CourseName;
            break;
        case 3:
            return ch[2].CourseID+" "+ch[2].CourseName;
            break;
        case 4:
            return ch[3].CourseID+" "+ch[3].CourseName;
            break;
        case 5:
            return ch[4].CourseID+" "+ch[4].CourseName;
            break;
        case 6:
            return ch[5].CourseID+" "+ch[5].CourseName;
            break;
        case 7:
            return ch[6].CourseID+" "+ch[6].CourseName;
            break;
        case 8:
            return ch[7].CourseID+" "+ch[7].CourseName;
            break;
        case 9:
            return ch[8].CourseID+" "+ch[8].CourseName;
            break;
        case 10:
            return ch[9].CourseID+" "+ch[9].CourseName;
            break;
        default:
            cout<<"Invalid decison!! Good Bye!"<<endl;
            exit(0);
    }
}

int creditTotal(int sel, course ch[])
{
    switch(sel)
    {
        case 1:
            return ch[0].numberOfCredits;
            break;
        case 2:
            return ch[1].numberOfCredits;
            break;
        case 3:
            return ch[2].numberOfCredits;
            break;
        case 4:
            return ch[3].numberOfCredits;
            break;
        case 5:
            return ch[4].numberOfCredits;
            break;
        case 6:
            return ch[5].numberOfCredits;
            break;
        case 7:
            return ch[6].numberOfCredits;
            break;
        case 8:
            return ch[7].numberOfCredits;
            break;
        case 9:
            return ch[8].numberOfCredits;
            break;
        case 10:
            return ch[9].numberOfCredits;
            break;
        default:
            cout<<"Invalid Decision!! Good Bye!"<<endl;
            exit(0);
        }
}

void fillSession(student arg[], course c[], session s[])
{
    int c1, c2, c3, c4;
    string ch1, ch2, ch3, ch4;
    string startDate, endDate;
    int cr1, cr2, cr3, cr4;

    for (int i = 0; i < 4; i++)
    {
        for(int j = 0; j < 10; j++)
        {
            cout<<"class #"<<j+1<<" "<<c[j].CourseID<<" "<<c[j].CourseName<<" "<<"Credits: "<<c[j].numberOfCredits<<" ";
        }

        cout<<"Enter your 1st class choice: ";
        cin>>c1;
        ch1=CourseN(c1,c);
        cout<<"Enter your 2nd class choice: ";
        cin>>c2;
        ch2=CourseN(c2,c);
        cout<<"Enter your 3rd class choice: ";
        cin>>c3;
        ch3=CourseN(c3,c);
        cout<<"Enter your 4th class choice: ";
        cin>>c4;
        ch4=CourseN(c4,c);

        s[i].courseID=ch1+" "+ch2+" "+ch3+" "+ch4;
        cout<<"Enter a start date for your classes (i.e mm/dd/yyyy): ";
        cin>>startDate;
        s[i].startDate=startDate;
        cout<<"Enter a end date for your classes (i.e mm/dd/yyyy): ";
        cin>>endDate;
        s[i].endDate=endDate;

        cr1=creditTotal(c1, c);
        cr2=creditTotal(c2, c);
        cr3=creditTotal(c3, c);
        cr4=creditTotal(c4, c);

        s[i].totalCredits=cr1+cr2+cr3+cr4;

        c1=0;
        c2=0;
        c3=0;
        c4=0;

        system("clear");
    }
}

void display_report(student s[], course c[], session se[])
{
    for (int i = 0; i < 4; i++)
    {
        cout<<"Student ID: "<<s[i].stuID<<" "<<endl;
        cout<<"Student Name: "<<s[i].lname<<", "<<s[i].fname<<" "<<endl;
        cout<<"Course IDs: "<<se[i].courseID<<" "<<endl;
        cout<<"Start Date: "<<se[i].startDate<<" "<<endl;
        cout<<"End Date: "<<se[i].endDate<<" "<<endl;
        cout<<"Total Credits: "<<se[i].totalCredits<<" "<<endl;
        cout<<" "<<endl;
    }
}

/**
* Writes session data to file.
* @param   {session}   sess   sessions array.
*/
void writeSessionsToFile(session* sess)
{
   ofstream file_out("sessions.txt");
   // for now let us just assume there'll always be just 4 sessions.
   for (size_t i = 0; i < 4; ++i)
   {
       file_out << sess[i].sessionID << " ";
       file_out << sess[i].stuID << " ";
       file_out << sess[i].courseID << " ";
       file_out << sess[i].startDate << " ";
       file_out << sess[i].endDate << " ";
       file_out << sess[i].totalCredits << " ";
       // empty line in the end of each entry.
       file_out << endl;
   }
}


int main()
{
    cout<<"Welcome to the CS 230 Data Structures class add program!"<<endl;
    cout<<"Please follow the prompt to gain a report of your courses for the year: "<<endl<<endl;
    //declare and initialize 4 students
    student stu[4];
    fillStudents(stu, 4);

    //declare and initialize 10 courses
    course courses[10];
    fillCourses(courses, 10);

    //assign 4 courses for each student
    cout<<"Enter a class selection based on the chart above (1-10), please do not choose the same class twice: "<<endl;
    cout<<"Each student goes by how their information was added"<<endl<<endl;

    session sessions[4];
    fillSession(stu, courses, sessions);

    writeSessionsToFile(sessions);

    //display a report showing each student with his/her courses
    //show the total number of credits for each student
    cout<<"Please find your name and other important information below to see your classes and credit totals: "<<endl;
    cout <<"=========="<<endl;
    display_report(stu, courses, sessions);
    cout <<"=========="<<endl;


    // instead of system(pause), pause doesn't work on linux.
    cin.get();
    return 0;
}