Im doing some labs at school and cant compile my code at home.. it workes at uni but not at home.. :/ Im using visual studio 6.0 (c++).. the comments might be abit off cause we got some code from the tutor and was told to change it.. there are 5 files:
// MAIN.CPP - Case Study, Student Registration
// Count the number of courses taken by the student, calculate total credits
// author KRI
//
#include <iostream>
#include <fstream>
#include "unit.h"
#include "regist.h" // Registration class declaration
using namespace std;
// Main program:
// Open an input file stream, read a Registration object,
// including its list of courses. Redisplay all information,
// and calculate the total credits taken. Write the results
// to a file stream.
int main()
{
ifstream infile( "rinput.txt" );
if( !infile ) return -1;
Registration R;
infile >> R;
ofstream ofile( "routput.txt" );
ofile << R
<< "Number of courses = " << R.GetCount() << '\n'
<< "Total credits = " << R.GetCredits() << '\n';
// Declare and initialize a Unit, and modify
// its credits.
Unit aUnit( "Data Structures and Abstractions", "ICT209", 4 );
aUnit.SetCredits( 5 );
cout << aUnit << endl;
return 0;
}
// REGIST.CPP - Registration class implementation.
#include "regist.h"
Registration::Registration()
{
count = 0;
}
unsigned Registration::GetCredits() const
{
unsigned sum = 0;
for(unsigned i = 0; i < count; i++)
sum += units.GetCredits();
return sum;
}
istream & operator >>( istream & input, Registration & R )
{
input >> R.studentId >> R.semester >> R.count;
for(unsigned i = 0; i < R.count; i++)
input >> R.units;
return input;
}
ostream & operator <<( ostream & os, const Registration & R )
{
os << "Student ID: " << R.studentId << '\n'
<< "Semester: " << R.semester << '\n';
for(unsigned i = 0; i < R.count; i++)
os << R.units << '\n';
return os;
}
// UNIT.CPP - Unit class implementation
#include "unit.h"
Unit::Unit( const string &nam, const string &id, unsigned cred )
{
name = nam;
uId = id;
credits = cred;
}
istream & operator >>( istream & input, Unit & U )
{
input >> U.name >> U.uId >> U.credits;
return input;
}
ostream & operator <<( ostream & os, const Unit & U )
{
os << " Unit: " << U.name << '\n'
<< " Id: " << U.uId << '\n'
<< " Credits: " << U.credits << '\n';
return os;
}
// REGIST.H - Registration class definition
// author KRI
// modified smr
#ifndef REGIST_H
#define REGIST_H
#include <iostream>
#include "unit.h"
using namespace std;
const unsigned MaxUnits = 10;
class Registration {
public:
Registration();
unsigned GetCredits() const;
unsigned GetCount() const;
friend ostream & operator <<( ostream & os, const Registration & R);
friend istream & operator >>( istream & input, Registration & R );
private:
long studentId; // student ID number
unsigned semester; // semester year, number
unsigned count; // number of units
Unit units[MaxUnits]; // array of units
};
inline unsigned Registration::GetCount() const
{
return count;
}
#endif
// UNIT.H - Course class defintion
// author KRI
// modified smr
#ifndef UNIT_H
#define UNIT_H
#include <iostream>
#include <string>
using namespace std;
class Unit {
public:
Unit(){};
Unit( const string &nam, const string &id, unsigned cred );
// Construct a course from a name, section letter,
// and number of credits.
unsigned GetCredits() const;
// Get the number of credits.
void SetCredits( unsigned cred );
// Set the number of credits.
friend ostream & operator <<( ostream & os, const Unit & U );
friend istream & operator >>( istream & input, Unit & U);
private:
string name;
string uId;
int credits; // number of credits
};
inline unsigned Unit::GetCredits() const
{
return credits;
}
inline void Unit::SetCredits( unsigned cred )
{
credits = cred;
}
#endif