-
Notifications
You must be signed in to change notification settings - Fork 6
/
student.ts
93 lines (74 loc) · 1.74 KB
/
student.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import {
Constant
} from 'Constant';
export interface Grade {
code: number;
marks: number;
grade: string;
isAbst: boolean;
}
/**
* Student Class
*/
export class Student {
name: string;
roll: number;
result: string;
gradeArr: Array < Grade > = [];
/**
* Creates a student instance
* @param roll Roll number of student
*/
constructor(roll: number) {
this.roll = roll;
}
setName(name: string) {
this.name = name;
}
getName() {
return this.name;
}
setResult(result: string) {
this.result = result;
}
getResult() {
return this.result;
}
setGradeArr(gradeArr: Array < Grade > ) {
this.gradeArr = gradeArr;
}
getGradeArr() {
return this.gradeArr;
}
getRoll() {
return this.roll;
}
getGradeObj(code: number) {
return this.gradeArr.filter(gradeObj => gradeObj.code === code)[0] || {
marks: '-',
grade: '-'
};
}
getMarks(code: number) {
return this.getGradeObj(code).marks;
}
getGrade(code: number): string {
return this.getGradeObj(code).grade;
}
getPercentage(): number {
return parseFloat(((this.getTotalMarks() / (this.gradeArr.filter(gradeObj => !gradeObj.isAbst).length * 100)) * 100).toFixed(2)) || 0;
}
getTotalMarks() {
// let totalMarks = 0;
// this.gradeArr.forEach(gradeObj => {
// totalMarks += gradeObj.marks;
// });
// return totalMarks;
return this.gradeArr.reduce((acc, gradeObj) => {
return acc + gradeObj.marks;
}, 0);
}
isAbst() {
return this.result === Constant.ABST;
}
}