Bài tập

Bạn hãy tạo hai lớp SubjectStudent với các thông tin như sau: 

Giải thích:

Lớp Subject:

  • nameSub, point, numberCredit, money lần lượt là các thuộc tính có phạm vi truy cập private chỉ chỉ tên môn học, điểm, số tín chỉ và số tiền một tín chỉ.
  • Subject() là phương thức khởi tạo không tham số.
  • Subject(nameSub: string, point: double, numberCredit: int, money: long) là phương thức khởi tạo 4 tham số.
  • display(): void là phương thức hiển thị thông tin Subject ra màn hình. Ví dụ nameSub="OOP", point = 9.9, numberCredit = 3, money = 300, thì sau khi gọi phương thức display() màn hình sẽ hiển thị:
Name Subject: OOP
Point: 9.9
Number Credit: 3
Money Of One Credit: 300
  • Các phương thức còn lại là gettersetter.

Lớp Student:

  • id, name, s lần lượt là các thuộc tính chỉ id, tên, danh sách các môn học của sinh viên có phạm vi truy cập private.
  • Student() phương thức khởi tạo không tham số.
  • Student(id: string, name: string, s: vector<Subject>) là phương thức khởi tạo 3 tham số.
  • getSumMoney(): long là phương thức trả về tổng tiền phải trả được tính bằng tổng số tiền các môn học.
  • avgPoint(): double là phương thức trả về điểm trung bình của tất cả các môn học được tính bằng tổng(điểm từng môn*số tín từng môn)/(tổng số tín đăng kí).
  • display(): void là phương thức hiển thị thông tin Student ra màn hình. Ví dụ: id = "1", name = "Nguyen Minh Hieu", s = {Subject("OOP",9.9,3,300)} thì sau khi gọi display() màn hình sẽ hiển thị:
Id: 1
Name Student: Nguyen Minh Hieu
List Subject
Name Subject: a
Number Credit: 3
Money Of One Credit: 300
Sum Money Have To Pay: 900
Average Point: 9.9
  • Các phương thức còn lại là getter và setter.

Hướng dẫn

Lớp Subject.cpp

#pragma once
#include <iostream>
#include <vector>
using namespace std;

class Subject {
private:
	string nameSub;
	double point;
	int numberCredit;
	long money;
public:
	Subject() {}
	Subject(string name, double point, int n, long m) : nameSub(name), numberCredit(n), money(m), point(point) {}
	string getNameSub()
	{
		return nameSub;
	}
	int getNumberCredit()
	{
		return numberCredit;
	}
	long getMoney()
	{
		return money;
	}
	double getPoint()
	{
		return point;
	}
	void display()
	{
		cout << "Name Subject: " << nameSub << endl;
		cout << "Number Credit: " << numberCredit << endl;
		cout << "Money Of One Credit: " << money << endl;
	}
};

Lớp Student.cpp

#include "Subject.cpp"
class Student {
private:
	string id;
	string name;
	vector<Subject> s;
public:
	Student() {}
	Student(string id, string name, vector<Subject> s) : id(id), name(name), s(s) {}
	string getId()
	{
		return id;
	}
	string getName()
	{
		return name;
	}
	vector<Subject> getS()
	{
		return s;
	}
	long getSumMoney()
	{
		long sum = 0;
		for (int i = 0; i < s.size(); i++)
		{
			sum += s[i].getNumberCredit() * s[i].getMoney();
		}
		return sum;
	}
	double avgPoint()
	{
		double point = 0;
		int sum = 0;
		for (int i = 0; i < s.size(); i++)
		{
			point += s[i].getNumberCredit() * s[i].getPoint();
			sum += s[i].getNumberCredit();
		}
		return point / sum;
	}
	void display()
	{
		cout << "Id: " << id << endl;
		cout << "Name Student: " << name << endl;
		cout << "List Subject" << endl;
		for (int i = 0; i < s.size(); i++)
		{
			s[i].display();
		}
		cout << "Sum Money Have To Pay: " << getSumMoney() << endl;
		cout << "Average Point: " << avgPoint() << endl;
	}
};