Advertisement
Guest User

Untitled

a guest
Dec 16th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.22 KB | None | 0 0
  1. #include<iostream>
  2. #include<iomanip>
  3. using namespace std;
  4.  
  5. class Student{
  6. public:
  7. //default Constructor
  8. Student():Student("First Name","Last Name") { }
  9. Student(string fname, string lname){
  10. first_name = fname;
  11. last_name = lname;
  12. for(int i=0;i<10;i++)
  13. arr[i]=0;
  14. }
  15. //Destructor
  16. ~Student();
  17.  
  18. //Copy Constructor
  19. Student (const Student &s);
  20.  
  21. //Assignment Overload
  22. Student& operator=(const Student &s);
  23.  
  24. //Set first name
  25. void setFirstName(string s);
  26.  
  27. //Set last name
  28. void setLastName(string s);
  29.  
  30. //Get first name
  31. string getFirstName();
  32.  
  33. //Get last name
  34. string getLastName();
  35.  
  36. //Get full name
  37. string getFullName();
  38.  
  39. //Add grade
  40. void addGrade (int position, int grade);
  41.  
  42. //Remove grade
  43. void removeGrade(int index);
  44.  
  45. //Update grade
  46. void updateGrade(int index, int newGrade);
  47.  
  48. //Outputs one grade
  49. void displayGrade(int index);
  50.  
  51. //Calculate GPA
  52. float GPA();
  53.  
  54. //Outputs all grades + GPA
  55. void displayGrades();
  56.  
  57. //Outputs Full name + Grades + GPA
  58. void display();
  59.  
  60. private:
  61. string first_name;
  62. string last_name;
  63. int *arr=new int[10];
  64. };
  65. //Destructor
  66. Student::~Student(){
  67. //cout << "Destructor called." << endl << endl;
  68. }
  69.  
  70. //Copy Constructor
  71. Student::Student(const Student &s){
  72. //cout << "Copy constructor called" << endl;
  73. first_name = s.first_name;
  74. last_name = s.last_name;
  75. for(int i=0; i<10; i++){
  76. arr[i] = s.arr[i];
  77. }
  78. }
  79.  
  80. //Assignment overload
  81. Student& Student::operator=(const Student &s){
  82. //cout << "Assignment overload called." << endl;
  83. first_name = s.first_name;
  84. last_name = s.last_name;
  85. for(int i=0; i<10; i++){
  86. arr[i] = s.arr[i];
  87. }
  88. }
  89. //setting first name
  90. void Student::setFirstName(string s){
  91. first_name = s;
  92. }
  93.  
  94. //setting last name
  95. void Student::setLastName(string s){
  96. last_name = s;
  97. }
  98.  
  99. //getting firstName
  100. string Student::getFirstName(){
  101. return(first_name);
  102. }
  103.  
  104. //getting lastName
  105. string Student::getLastName(){
  106. return(last_name);
  107. }
  108.  
  109. //getting fullName
  110. string Student::getFullName(){
  111. return(first_name+last_name);
  112. }
  113.  
  114. //adding grade
  115. void Student::addGrade(int position,int grade){
  116. arr[position]=grade;
  117. }
  118.  
  119. //removing grade
  120. void Student::removeGrade(int index){
  121. index = 0;
  122. }
  123.  
  124. //updating grade
  125. void Student::updateGrade(int index,int newGrade){
  126. arr[index]=newGrade;
  127. }
  128.  
  129. //displaying grade
  130. void Student::displayGrade(int index){
  131. cout << arr[index] << endl;
  132. }
  133.  
  134. //calculating GPA
  135. float Student::GPA(){
  136. int sum=0;
  137. int count = 0;
  138. for(int i=0;i<10;i++){
  139. if(arr[i]!=0){
  140. sum += arr[i];
  141. count++;
  142. }
  143. }
  144. if(count==0){
  145. return 0;
  146. }
  147. return (sum*1.0/count);
  148. }
  149.  
  150. //displaying Grades
  151. void Student::displayGrades(){
  152. for(int i=0;i<10;i++){
  153. if(arr[i]!=0)
  154. cout <<i+1<<" : "<<arr[i]<<endl;
  155. }
  156. cout << "GPA : " << setprecision(2) << fixed << GPA() << endl;
  157. }
  158.  
  159. //displaying display
  160. void Student::display(){
  161. cout << first_name << " " << last_name << endl;
  162. displayGrades();
  163. cout << endl;
  164. }
  165.  
  166. class Instructor{
  167. private:
  168. string name;
  169. string department;
  170. public:
  171. Instructor(){ }
  172. Instructor(string n,string d){
  173. name=n;
  174. department=d;
  175. }
  176. void setName(string n);
  177. string getName();
  178. void setDept(string d);
  179. string getDept();
  180. };
  181.  
  182. void Instructor::setName(string n){
  183. name=n;
  184. }
  185.  
  186. void Instructor::setDept(string d){
  187. department=d;
  188. }
  189.  
  190. string Instructor::getName(){
  191. return name;
  192. }
  193. string Instructor::getDept(){
  194. return department;
  195. }
  196.  
  197. class Course{
  198. private:
  199. string name;
  200. Instructor i;
  201. int size = 5;
  202. Student *students = new Student[size];
  203.  
  204. public:
  205. Course();
  206. Course(string c,Instructor a);
  207. void setName(string n);
  208. string getName();
  209. void setInstructor(Instructor a);
  210. string getInstructor();
  211. void output();
  212. void grow();
  213. ~Course();
  214. Course(const Course &c);
  215. Course& operator=(const Course &c);
  216. void addStudent(int position, Student &s);
  217. void listStudents();
  218. void display();
  219. };
  220.  
  221. Course::Course(){}
  222. Course::Course(string c,Instructor a){
  223. name=c;
  224. i.setName(a.getName());
  225. i.setDept(a.getDept());
  226. }
  227.  
  228. Course::~Course(){ cout << "(Course) Destructor called"; }
  229.  
  230. Course::Course(const Course &c){
  231. cout << "(Course) Copy constructor called" << endl;
  232. name = c.name;
  233. i = c.i;
  234. for(int i=0;i<size;i++) {
  235. students[i] = c.students[i];
  236. }
  237. }
  238.  
  239. Course& Course::operator=(const Course &c){
  240. cout << "(Course) Assignment Overload called" << endl;
  241. name = c.name;
  242. i = c.i;
  243. for(int i=0;i<size;i++) {
  244. students[i] = c.students[i];
  245. }
  246. }
  247.  
  248. void Course::setName(string n){
  249. name=n;
  250. }
  251.  
  252. string Course::getName(){
  253. return name;
  254. }
  255. void Course::setInstructor(Instructor a){
  256. i.setName(a.getName());
  257. i.setDept(a.getDept());
  258. }
  259. string Course::getInstructor(){
  260. return "Instructor: " + i.getName() + "\tDepartment: " + i.getDept();
  261. }
  262. void Course::output(){
  263. cout << "Course: " << getName() << " ";
  264. cout << "\t" << getInstructor() <<" " << endl;
  265. cout << "===============================================================================" << endl;
  266. }
  267.  
  268. void Course::grow(){
  269. int new_size = size * 2;
  270. Student* newArray = new Student[new_size];
  271. for(int i = 0; i < size; i++) {
  272. newArray[i] = students[i];
  273. }
  274. delete [] students;
  275. students = newArray;
  276. new_size = size;
  277. }
  278.  
  279. void Course::addStudent(int position, Student &s){
  280. students[position] = s;
  281. }
  282.  
  283. void Course::listStudents(){
  284. for(int i=0;i<size;i++){
  285. students[i].display();
  286. }
  287. }
  288.  
  289. void Course::display(){
  290. output();
  291. listStudents();
  292. }
  293.  
  294. int main(){
  295. Student *s1 = new Student ("Miles", "Morales");
  296. s1->addGrade(0,80);
  297. s1->addGrade(1,84);
  298. s1->addGrade(2,65);
  299.  
  300. Student *s2 = new Student("Peter", "Parker");
  301. s2->addGrade(0,50);
  302. s2->addGrade(1,60);
  303. s2->addGrade(2,70);
  304.  
  305. Instructor *i1 = new Instructor ("Kevin Morea", "Computer Sciences");
  306. Course *c1 = new Course ("ET575", *i1);
  307. c1->addStudent(0,*s1);
  308. c1->addStudent(1,*s2);
  309. c1->display();
  310.  
  311. Course *c2 = new Course {*c1};
  312. c2->display();
  313.  
  314. Course *c3 = new Course;
  315. *c3 = *c2;
  316. c3->display();
  317. delete [] c1;
  318. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement