209k views
5 votes
In this milestone we will create a Course class to represent a course and display its information on the screen. We will create two global functions that will validate the courses in a schedule file and store it in an array of Course objects, and display information from an array of Course objects.

User Jmz
by
4.4k points

1 Answer

2 votes

Answer:

Code is given below:

Step-by-step explanation:

Please enter the file name containing the list of classes: sched.txt

Schedule file loaded. Displaying contents ...

Course name: CPSC 131

Location: EC 109

Weekly schedule: MW

Start time: 16:00

End time: 17:15

Course name: CPSC 481

Location: CS 408

Weekly schedule: MW

Start time: 16:00

End time: 17:15

Course name: CPSC 362

Location: CS 101

Weekly schedule: MW

Start time: 8:00

End time: 9:50

Thank you for using Tuffy Scheduler.

Start time happens after end time

cources.txt

CPSC 131,EC 109,MW,16:00,17:15

CPSC 481,CS 408,MW,16:00,17:15

CPSC 362,CS 101,MW,8:00,9:50

#include <iostream>

#include <fstream>

#include <sstream>

#include<vector>

using namespace std;

class Course {

private:

std::string course_name_;

std::string location_;

std::string weekly_schedule_;

int start_time_;

int end_time_;

public:

const std::string& getCourseName() const {

return course_name_;

}

void setCourseName(const std::string& courseName) {

course_name_ = courseName;

}

const std::string getEndTime() const {

std::string st = to_string(end_time_);

std::string st2 = st.substr(st.length() - 2);

//cout << st2 << '\\';

size_t found = st.find(st2);

std::string st1 = st.substr(0, found);

std::string st3 = st1 + ":" + st2;

return st3;

}

void setEndTime(int endTime) {

end_time_ = endTime;

}

const std::string& getLocation() const {

return location_;

}

void setLocation(const std::string& location) {

location_ = location;

}

const std::string getStartTime() const {

std::string st = to_string(start_time_);

std::string st2 = st.substr(st.length() - 2);

//cout << st2 << '\\';

size_t found = st.find(st2);

std::string st1 = st.substr(0, found);

std::string st3 = st1 + ":" + st2;

return st3;

}

void setStartTime(int startTime) {

start_time_ = startTime;

}

const std::string& getWeeklySchedule() const {

return weekly_schedule_;

}

void setWeeklySchedule(const std::string& weeklySchedule) {

weekly_schedule_ = weeklySchedule;

}

void display() {

cout << "Course name: " << course_name_ << endl;

cout << "Location: " << location_ << endl;

cout << "Weekly schedule: " << weekly_schedule_ << endl;

cout << "Start time:" << getStartTime() << endl;

cout << "End time:" << getEndTime() << endl;

}

};

bool load_schedule(std::string fileName, Course (&courses)[100], int& curSize);

int main() {

cout << "Welcome to Tuffy Scheduler!" << endl;

cout << "Please enter the file name containing the list of classes:"

<< endl;

std::string fileName;

Course courses[100];

int curSize = 0;

cin >> fileName; // provide complete path ex D:\\Chegg\\CheggCpp\\src\\cources.txt

if (load_schedule(fileName, courses, curSize)) {

cout << "Schedule file loaded. Displaying contents ..." << endl<<endl;

int i;

//cout << curSize << '\\';

for (i = 0; i < curSize; i++) {

courses[i].display();

cout << endl;

}

cout << "Thank you for using Tuffy Scheduler."<< endl;

cout << "Start time happens after end time"<< endl;

} else {

cout << "Invalid file" << endl;

}

return 0;

}

bool load_schedule(std::string fileName, Course (&courses)[100], int& curSize) {

ifstream myfile(fileName);

string line;

//cout << fileName << '\\';

if (myfile.is_open()) {

while (getline(myfile, line)) {

stringstream ss(line);

vector<string> v;

while (ss.good()) {

string substr;

getline(ss, substr, ',');

v.push_back(substr);

}

Course c;

c.setCourseName(v[0]);

c.setLocation(v[1]);

c.setWeeklySchedule(v[2]);

if (v[2] != "MW") {

cout << "Error: Invalid weekly schedule symbol " << v[2]

<< '\\';

return false;

}

//set start time

string startTime = v[3];

size_t found = startTime.find(":");

startTime.erase(found, 1);

//cout << startTime << '\\';

stringstream st(startTime);

int startTimeInt = 0;

st >> startTimeInt;

c.setStartTime(startTimeInt);

//set end time

string endTime = v[4];

found = endTime.find(":");

endTime.erase(found, 1);

// cout << endTime << '\\';

stringstream st1(endTime);

int endTimeInt = 0;

st1 >> endTimeInt;

c.setEndTime(endTimeInt);

if (startTimeInt > endTimeInt) {

cout << "Error: The start time " << startTimeInt

<< "should happen before the end time " << endTimeInt

<< '\\';

return false;

}

courses[curSize] = c;

curSize++;

//cout << curSize << '\\';

}

myfile.close();

}

return true;

}

User Iunfixit
by
4.2k points