📄 studenttypeimp.cpp
字号:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <algorithm>
#include <vector>
#include <iterator>
#include "personType.h"
#include "courseType.h"
#include "studentType.h"
using namespace std;
void studentType::setInfo(string fName, string lName, int ID,
bool isTPaid,
vector<courseType> courses)
{
personType::setName(fName,lName); //set the name
sId = ID; //set the student ID
isTuitionPaid = isTPaid; //set isTuitionPaid
numberOfCourses = courses.size(); //set the number of courses
coursesEnrolled = courses; //set the vector coursesEnrolled
//sort the array coursesEnrolled
sort(coursesEnrolled.begin(), coursesEnrolled.end());
}
studentType::studentType()
{
numberOfCourses = 0;
sId = 0;
isTuitionPaid = false;
}
void studentType::print(double tuitionRate)
{
int i;
cout<<"Student Name: "; //Step 1
personType::print(); //Step 1
cout<<endl;
cout<<"Student ID: "<<sId<<endl; //Step 2
cout<<"Number of courses enrolled: "
<<numberOfCourses<<endl; //Step 3
cout<<endl;
cout<<left; //set output left-justified
cout<<"Course No"<<setw(15)<<" Course Name"
<<setw(8)<<"Credits"
<<setw(6)<<"Grade"<<endl; //Step 4
cout.unsetf(ios::left);
for(i = 0; i < numberOfCourses; i++) //Step 5
coursesEnrolled[i].print(isTuitionPaid);
cout<<endl;
cout<<"Total number of credit hours: "
<<getHoursEnrolled()<<endl; //Step 6
cout<<fixed<<showpoint<<setprecision(2); //Step 7
if(isTuitionPaid) //Step 8
cout<<"Midsemester GPA: "<<getGpa()<<endl;
else
{
cout<<"*** Grades are being held for not paying "
<<"the tuition. ***"<<endl;
cout<<"Amount Due: $"<<billingAmount(tuitionRate)
<<endl;
}
cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
<<"-*-*-*-*-*-*-"<<endl<<endl;
}
void studentType::print(ofstream& outp, double tuitionRate)
{
int i;
string first;
string last;
personType::getName(first,last);
outp<<"Student Name: "<<first<<" "<<last<<endl;
outp<<"Student ID: "<<sId<<endl;
outp<<"Number of courses enrolled: "
<<numberOfCourses<<endl;
outp<<endl;
outp<<left;
outp<<"Course No"<<setw(15)<<" Course Name"
<<setw(8)<<"Credits"
<<setw(6)<<"Grade"<<endl;
outp.unsetf(ios::left);
for(i = 0; i < numberOfCourses; i++)
coursesEnrolled[i].print(outp,isTuitionPaid);
outp<<endl;
outp<<"Total number of credit hours: "
<<getHoursEnrolled()<<endl;
outp<<fixed<<showpoint<<setprecision(2);
if(isTuitionPaid)
outp<<"Midsemester GPA: "<<getGpa()<<endl;
else
{
outp<<"*** Grades are being held for not paying "
<<"the tuition. ***"<<endl;
outp<<"Amount Due: $"<<billingAmount(tuitionRate)
<<endl;
}
outp<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
<<"-*-*-*-*-"<<endl<<endl;
}
int studentType::getHoursEnrolled()
{
int totalCredits = 0;
int i;
for(i = 0; i < numberOfCourses; i++)
totalCredits += coursesEnrolled[i].getCredits();
return totalCredits;
}
double studentType::billingAmount(double tuitionRate)
{
return tuitionRate * getHoursEnrolled();
}
double studentType::getGpa()
{
int i;
double sum = 0.0;
for(i = 0; i < numberOfCourses; i++)
{
switch(coursesEnrolled[i].getGrade())
{
case 'A': sum += coursesEnrolled[i].getCredits() * 4;
break;
case 'B': sum += coursesEnrolled[i].getCredits() * 3;
break;
case 'C': sum += coursesEnrolled[i].getCredits() * 2;
break;
case 'D': sum += coursesEnrolled[i].getCredits() * 1;
break;
case 'F': sum += coursesEnrolled[i].getCredits() * 0;
break;
default: cout<<"Invalid Course Grade"<<endl;
}
}
return sum / getHoursEnrolled();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -