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;
}