Files
lab7/articles/static/js/students.js
2025-10-21 02:44:19 +03:00

104 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const groupmates = [
{ name: 'Егор', surname: 'Алексанов', exams: ['Информатика', 'ЭЭиС', 'Web'], marks: [4, 5, 3], group: СТ2202' },
{ name: 'Юрий', surname: 'Алексанов', exams: ['История', 'АиГ', 'КТП'], marks: [3, 4, 4], group: СТ2201' },
{ name: 'Виктор', surname: 'Аникин', exams: ['Философия', 'ИС', 'КТП'], marks: [5, 5, 4], group: СТ2204' },
{ name: 'Артём', surname: 'Бабушкин', exams: ['Информатика', 'Физика', 'Web'], marks: [4, 3, 5], group: СТ2203' },
{ name: 'Дарья', surname: 'Дорогань', exams: ['История', 'Философия', 'КТП'], marks: [5, 4, 4], group: СТ2202' },
{ name: 'Александра', surname: 'Дубровская', exams: ['ИС', 'ЭЭиС', 'Web'], marks: [4, 5, 5], group: СТ2201' },
{ name: 'Анна', surname: 'Кондракова', exams: ['Информатика', 'АиГ', 'Физика'], marks: [3, 4, 5], group: СТ2204' },
{ name: 'Ангелина', surname: 'Коренкова', exams: ['История', 'Философия', 'ИС'], marks: [4, 4, 5], group: СТ2203' },
{ name: 'Ильяс', surname: 'Крымгужин', exams: ['ЭЭиС', 'КТП', 'Физика'], marks: [5, 3, 4], group: СТ2202' },
{ name: 'Даниил', surname: 'Кудряшов', exams: ['Информатика', 'ИС', 'Web'], marks: [4, 5, 4], group: СТ2201' },
{ name: 'Анна', surname: 'Лобанова', exams: ['Философия', 'История', 'КТП'], marks: [5, 4, 4], group: СТ2204' },
{ name: 'Степан', surname: 'Логашов', exams: ['АиГ', 'ЭЭиС', 'Физика'], marks: [4, 4, 5], group: СТ2203' },
{ name: 'Данила', surname: 'Мокров', exams: ['Информатика', 'КТП', 'Web'], marks: [3, 5, 4], group: СТ2202' },
{ name: 'Никита', surname: 'Молоканов', exams: ['История', 'ИС', 'Философия'], marks: [5, 5, 4], group: СТ2201' },
{ name: 'Кристина', surname: 'Мясникова', exams: ['Философия', 'ЭЭиС', 'Web'], marks: [4, 5, 5], group: СТ2204' },
{ name: 'Алексей', surname: 'Обласов', exams: ['КТП', 'Информатика', 'АиГ'], marks: [4, 3, 5], group: СТ2203' },
{ name: 'Илья', surname: 'Образумов', exams: ['Физика', 'История', 'ИС'], marks: [5, 4, 4], group: СТ2202' },
{ name: 'Павел', surname: 'Овчинников', exams: ['Информатика', 'Web', 'ЭЭиС'], marks: [4, 4, 5], group: СТ2201' },
{ name: 'Валерия', surname: 'Сикидина', exams: ['АиГ', 'КТП', 'Философия'], marks: [5, 3, 4], group: СТ2204' },
{ name: 'Дмитрий', surname: 'Смирнов', exams: ['Информатика', 'История', 'ИС'], marks: [4, 5, 4], group: СТ2203' },
{ name: 'Максим', surname: 'Соловьёв', exams: ['Философия', 'ЭЭиС', 'Физика'], marks: [5, 4, 5], group: СТ2202' },
{ name: 'Глеб', surname: 'Степанов', exams: ['КТП', 'Web', 'Информатика'], marks: [3, 5, 4], group: СТ2201' },
{ name: 'Серафим', surname: 'Сухарев', exams: ['Философия', 'История', 'ИС'], marks: [4, 5, 5], group: СТ2204' },
{ name: 'Анна', surname: 'Харченко', exams: ['Информатика', 'ЭЭиС', 'АиГ'], marks: [5, 3, 4], group: СТ2203' },
{ name: 'Олег', surname: 'Хорун', exams: ['Физика', 'КТП', 'Философия'], marks: [4, 5, 4], group: СТ2202' },
{ name: 'Павел', surname: 'Черниговский', exams: ['История', 'ИС', 'Web'], marks: [3, 4, 5], group: СТ2201' },
{ name: 'Дмитрий', surname: 'Шагаров', exams: ['Философия', 'Информатика', 'ЭЭиС'], marks: [4, 4, 5], group: СТ2204' },
{ name: 'Александр', surname: 'Шалавасов', exams: ['КТП', 'АиГ', 'Web'], marks: [5, 3, 4], group: СТ2203' },
{ name: 'Михаил', surname: 'Шестерин', exams: ['История', 'ИС', 'Философия'], marks: [4, 5, 5], group: СТ2202' },
{ name: 'Никита', surname: 'Шулапов', exams: ['Информатика', 'ЭЭиС', 'Физика'], marks: [5, 4, 4], group: СТ2201' }
]
const groups = Array.from(new Set(groupmates.map(mate => mate.group))).sort();
function printStudents(students, filters = {}) {
const { targetScore = null, group = null } = filters
console.log(
'Имя'.padEnd(15),
'Фамилия'.padEnd(15),
'Группа'.padEnd(10),
'Экзамены'.padEnd(40),
'Оценки'.padEnd(20),
'Средняя оценка'
)
students.forEach(student => {
const avg = student.marks.reduce((a, b) => a + b, 0) / student.marks.length
const isScoreOk = targetScore === null || avg > targetScore
const isGroupOk = group === null || group === student.group
if (isScoreOk && isGroupOk) {
console.log(
student.name.padEnd(15),
student.surname.padEnd(15),
student.group.padEnd(10),
JSON.stringify(student.exams).padEnd(40),
JSON.stringify(student.marks).padEnd(20),
avg.toFixed(2)
)
}
})
console.log('\n')
}
function promptFilters() {
let group
while (true) {
group = prompt(`Введите группу для фильтрации (${groups.join(', ')}):`)
if (group === '') {
group = null
break
}
if (groups.includes(group)) {
break
}
}
let targetScore
while (true) {
targetScore = prompt('Введите среднюю оценку для фильтрации:')
if (targetScore === '') {
targetScore = null
break
}
targetScore = Number(targetScore)
if (!isNaN(targetScore) && targetScore >= 0 && targetScore <= 5) {
break
}
}
printStudents(groupmates, { group })
}
// promptFilters()