import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { private static DataAccess da = new DataAccess(); private static Scanner in = new Scanner(System.in); //основний метод public static void main(String[] args) { da.getConnection();//підключитися до бази даних da.clear();//видалити таблицю da.prepare();//створити таблицю //створення двох учнів Student first = new Student("Ольга", "Салий", "23.07.1997", 5); Student second = new Student("Вера", "Салий", "23.07.1959", 3); //додавання їх до бд first.setId(da.insertStudent(first)); second.setId(da.insertStudent(second)); //користувацький інтерфейс while (true) { System.out.println("\nОберіть дію:\n * list - список учнів;\n * add - додати учня;\n * remove - вилучити учня;\n * edit - корегувати дату народження;\n * search - пошук по оцінці;\n * sort - впорядкувати по прізвищу;\n * exit - вихід." ); String action = in.nextLine(); switch (action) { case "list": taskList(); break; case "add": taskAdd(); break; case "remove": taskRemove(); break; case "edit": taskEdit(); break; case "search": taskSearch(); break; case "sort": taskSort(); break; case "exit": da.closeConn(); //закрити з'єднання System.exit(0); break; default: System.out.println("Оберіть існуючу дію!"); break; } } } private static void taskList(){ System.out.format("%2s%10s%15s%20s%10s", "ID", "Ім'я", "Прізвище", "Дата народження", "Оцінка"); //виведення форматованої «шапки» таблиці for (Student s: da.selectAll()) { System.out.println(); System.out.format("%2s%10s%15s%20s%10s", s.getId(), s.getFirstName(), s.getSecondName(), s.getBirthday(), s.getMark()); //отримання масиву учнів і виведення їх у вигляді таблиці } } private static void taskAdd(){ try{ System.out.println("Введіть ім'я: "); //зчитування даних String f = in.nextLine(); System.out.println("Введіть прізвище: "); String s = in.nextLine(); System.out.println("Введіть дату народження: "); String b = in.nextLine(); System.out.println("Введіть оцінку: "); int m = in.nextInt(); Student student = new Student(f, s, b, m); //створення об'єкта із зчитанними даними da.insertStudent(student); //додавання до бд System.out.println("Учень успішно додан!"); } catch (Exception ex){ System.out.println("Введені некоректні дані!"); } in.nextLine(); } private static void taskRemove(){ taskList(); System.out.println("\nВведіть ID учня для видалення: "); try{ da.deleteStudent(in.nextInt()); //видалення учня за його ID System.out.println("Учень успішно видалений!"); } catch (Exception e) { System.out.println("Введене некоректне значення!"); } in.nextLine(); } private static void taskSort(){ ArrayList sorted = da.selectAll(); //отримуємо масив студентів Collections.sort(sorted,(a, b) -> a.getSecondName().compareToIgnoreCase(b.getSecondName())); //сортуємо цей масив по прізвищу за допомогою лямбда виразу //виведення сортованого списку System.out.format("%2s%10s%15s%20s%10s", "ID", "Ім'я", "Прізвище", "Дата народження", "Оцінка"); for (Student s: sorted) { System.out.println(); System.out.format("%2s%10s%15s%20s%10s", s.getId(), s.getFirstName(), s.getSecondName(), s.getBirthday(), s.getMark()); } } private static void taskEdit(){ taskList(); System.out.println("\nВведіть ID учня, дату народження якого потрібно відкорегувати: "); Student student = da.getByID(in.nextInt()); in.nextLine(); System.out.println("Введіть нову дату народження: "); String b = in.nextLine(); da.updateBirthday(student, b); System.out.println("Дані успішно відкореговані!"); } private static void taskSearch(){ System.out.println("Введіть значення, для пошуку по оцінці (n, >n, =n, <=n): "); String str = in.nextLine(); System.out.format("%2s%10s%15s%20s%10s", "ID", "Ім'я", "Прізвище", "Дата народження", "Оцінка"); if (str.contains(">")) {//якщо зчитаний рядок містить ">" if (str.contains("=")){//якщо зчитаний рядок містить "=" int mark = Integer.parseInt(str.substring(2)); //то перетворити рядок, починаючи з третьої позиції, у число for (Student s: da.selectAll()) { if (s.getMark() >= mark) {//якщо оцінка поточного учня задовольняє умові, то вивести його System.out.println(); System.out.format("%2s%10s%15s%20s%10s", s.getId(), s.getFirstName(), s.getSecondName(), s.getBirthday(), s.getMark()); } } } else { int mark = Integer.parseInt(str.substring(1)); //то перетворити рядок, починаючи з другої позиції, у число for (Student s: da.selectAll()) { if (s.getMark() > mark) {//якщо оцінка поточного учня задовольняє умові, то вивести його System.out.println(); System.out.format("%2s%10s%15s%20s%10s", s.getId(), s.getFirstName(), s.getSecondName(), s.getBirthday(), s.getMark()); } } } } else if (str.contains("<")){//інакше, якщо зчитаний рядок містить "<" if (str.contains("=")){//якщо зчитаний рядок містить "=" int mark = Integer.parseInt(str.substring(2)); //то перетворити рядок, починаючи з третьої позиції, у число for (Student s: da.selectAll()) { if (s.getMark() <= mark) {//якщо оцінка поточного учня задовольняє умові, то вивести його System.out.println(); System.out.format("%2s%10s%15s%20s%10s", s.getId(), s.getFirstName(), s.getSecondName(), s.getBirthday(), s.getMark()); } } } else { int mark = Integer.parseInt(str.substring(1)); //то перетворити рядок, починаючи з другої позиції, у число for (Student s: da.selectAll()) { if (s.getMark() < mark) {//якщо оцінка поточного учня задовольняє умові, то вивести його System.out.println(); System.out.format("%2s%10s%15s%20s%10s", s.getId(), s.getFirstName(), s.getSecondName(), s.getBirthday(), s.getMark()); } } } } else {//інакше якщо введене просто число int mark = Integer.parseInt(str); //то перетворити введений рядок у число //вивести усіх учнів із заданої оцінкої for (Student s: da.getByMark(mark)) { System.out.println(); System.out.format("%2s%10s%15s%20s%10s", s.getId(), s.getFirstName(), s.getSecondName(), s.getBirthday(), s.getMark()); } } } }