⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 studenttypeimp.cpp

📁 data+structures+using+c的源码
💻 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 + -