Ex8_6.cpp
上传用户:wuzhousb
上传日期:2022-07-12
资源大小:380k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. //【例8.6】计算学分。可由本科生类派生出研究生类,但它们各自的从课程学时数折算为学分数的
  2. //算法是不同的,本科生是16个学时一学分,而研究生是20个学时一学分。
  3. #include<iostream>
  4. #include<string>
  5. using namespace std;
  6. class Student{
  7. string coursename; //课程名
  8. int classhour; //学时
  9. int credit; //学分,未考虑0.5学分
  10. public:
  11. Student(){coursename="#";classhour=0;credit=0;}
  12. virtual void Calculate(){credit=classhour/16;}
  13. void SetCourse(string str,int hour){
  14. coursename=str;
  15. classhour=hour;
  16. }
  17. int GetHour(){return classhour;}
  18. void SetCredit(int cred){credit=cred;} 
  19. void Print(){cout<<coursename<<'t'<<classhour<<"学时"<<'t'<<credit<<"学分"<<endl;}
  20. };
  21. class GradeStudent:public Student{
  22. public:
  23. GradeStudent(){};
  24. void Calculate(){SetCredit(GetHour()/20);}
  25. };
  26. int main(){
  27. Student s,*ps;
  28. GradeStudent g;
  29. s.SetCourse("物理",80);
  30. s.Calculate();
  31. g.SetCourse("物理",80);
  32. g.Calculate();
  33. cout<<"本科生:"<<'t';
  34. s.Print();
  35. cout<<"研究生:"<<'t';
  36. g.Print();
  37. s.SetCourse("数学",160);
  38. g.SetCourse("数学",160);
  39. ps=&s;
  40. ps->Calculate();
  41. cout<<"本科生:"<<'t';
  42. ps->Print();
  43. ps=&g;
  44. ps->Calculate();
  45. cout<<"研究生:"<<'t';
  46. ps->Print();
  47. return 0;
  48. }