/
ket12werw
/
Cinema
Обзор
Документация
Войти
/
ket12werw
/
Cinema
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
GradeBook.java
179 строк
7 KB
ket12werw
zadanie2
23 июл 2026, 19:45
Верифицирован
23 июл 2026, 19:45
158814f
Код
Авторство
О чём код?
package task2; import java.util.ArrayList; import java.util.Scanner; public class GradeBook { private static ArrayList<String> studentNames = new ArrayList<>(); private static ArrayList<Integer> studentGrades = new ArrayList<>(); private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { while (true) { printMenu(); int choice = getUserChoice(); switch (choice) { case 1 -> addStudent(); case 2 -> showAllStudents(); case 3 -> findStudent(); // Теперь работает независимо от регистра case 4 -> showStatistics(); case 5 -> deleteStudentByName(); // Удаление по имени согласно ТЗ case 0 -> { System.out.println("Программа завершена."); return; } default -> System.out.println("Неверный пункт меню. Попробуйте снова."); } System.out.println(); } } private static void printMenu() { System.out.println("Выберите действие:"); System.out.println("1 — Добавить ученика"); System.out.println("2 — Показать всех учеников"); System.out.println("3 — Найти ученика"); System.out.println("4 — Показать статистику"); System.out.println("5 — Удалить ученика"); System.out.println("0 — Завершить программу"); } private static int getUserChoice() { while (!scanner.hasNextInt()) { System.out.println("Введите число от 0 до 5."); scanner.next(); } return scanner.nextInt(); } private static void addStudent() { System.out.print("Введите имя ученика: "); // Очищаем невидимый символ переноса строки после предыдущего nextInt() if (scanner.hasNextLine()) { scanner.nextLine(); } String name = scanner.nextLine(); System.out.print("Введите оценку (от 1 до 5): "); int grade = -1; while (grade < 1 || grade > 5) { if (scanner.hasNextInt()) { grade = scanner.nextInt(); if (grade >= 1 && grade <= 5) { break; } else { System.out.print("Оценка должна быть от 1 до 5. Попробуйте еще раз: "); } } else { System.out.print("Нужно ввести число. Попробуйте еще раз: "); scanner.next(); // Сброс неверного ввода } } studentNames.add(name); studentGrades.add(grade); System.out.println("Ученик добавлен"); } private static void showAllStudents() { if (studentNames.isEmpty()) { System.out.println("Журнал пуст."); return; } for (int i = 0; i < studentNames.size(); i++) { System.out.printf("%d. %s — оценка %d%n", i + 1, studentNames.get(i), studentGrades.get(i)); } } private static void findStudent() { if (studentNames.isEmpty()) { System.out.println("Журнал пуст."); return; } System.out.print("Введите имя ученика: "); if (scanner.hasNextLine()) { scanner.nextLine(); } String searchName = scanner.nextLine(); boolean found = false; // Перебираем список вручную, чтобы игнорировать регистр for (int i = 0; i < studentNames.size(); i++) { if (studentNames.get(i).equalsIgnoreCase(searchName)) { System.out.println("\nУченик найден"); System.out.println("Имя: " + studentNames.get(i)); System.out.println("Оценка: " + studentGrades.get(i)); found = true; break; // Нашли первого подходящего и вышли } } if (!found) { System.out.println("Ученик не найден"); // Явное сообщение по условию задачи } } private static void showStatistics() { if (studentNames.isEmpty()) { System.out.println("Нет данных для статистики."); return; } double sum = 0; int successfulCount = 0; for (int grade : studentGrades) { sum += grade; if (grade >= 3) { successfulCount++; } } double averageGrade = sum / studentGrades.size(); int failedCount = studentGrades.size() - successfulCount; System.out.printf("Средняя оценка: %.1f%n", averageGrade); System.out.println("Успешно выполнили работу: " + successfulCount); System.out.println("Не выполнили работу: " + failedCount); } // Метод удаления строго по имени, как того требует условие "удалить ученика" private static void deleteStudentByName() { if (studentNames.isEmpty()) { System.out.println("Журнал пуст."); return; } System.out.print("Введите имя ученика для удаления: "); if (scanner.hasNextLine()) { scanner.nextLine(); } String nameToDelete = scanner.nextLine(); int index = -1; for (int i = 0; i < studentNames.size(); i++) { if (studentNames.get(i).equalsIgnoreCase(nameToDelete)) { index = i; break; } } if (index != -1) { String removedName = studentNames.remove(index); studentGrades.remove(index); System.out.println("Ученик " + removedName + " удален"); } else { System.out.println("Ученик не найден"); } } }