Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

C++ Data Persistance Help I am trying to write a C++ program that has data persistence but the .txt file that I am using is

C++ Data Persistance Help

I am trying to write a C++ program that has data persistence but the .txt file that I am using is being overwritten each time the program is ran, and it is not allowing me to pick up previously stored data to prevent the user from using the same information. The program uses functions to prevent the main function from being bulky, but I tried to do the file storage and retrieval from main and I ran into the same problem. I then made it into a void function that should collect the data(student ID etc) the save the file into the file. Although, the file is picking up and saving garbage and not the entered numbers for student ID and overwriting the file.

See Code Below:

student.h */ #include using namespace std;

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

session.h */ #include using namespace std;

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

course.h */ #include using namespace std;

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

main.cpp

#include #include #include #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 #"<>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 #"<>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!"<

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!"<

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 #"<

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: "<

/** * 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!"<

//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: "<

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: "<

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

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Programming With Visual Basic .NET

Authors: Carsten Thomsen

2nd Edition

1590590325, 978-1590590324

More Books

Students also viewed these Databases questions