Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company.starter;
- import com.company.struct.LinkList;
- import com.company.struct.Student;
- import java.io.*;
- import java.util.Scanner;
- public class Main {
- static Scanner scannerConsole;
- static LinkList listInt;
- static final int CREATE_LIST = 1;
- static final int OPEN_LIST = 2;
- static final int ADD_ELEMENT = 1;
- static final int DELETE_ELEMENT = 2;
- static final int VIEW_LIST = 3;
- static final int MAIN_TASK = 4;
- static final int SAVE_LIST_OF_MENU = 5;
- static final int OPEN_LIST_OF_MENU = 6;
- static final int EXIT_PROGRAM = 0;
- static final int MIN_INDEX = 1;
- static int date;
- static int coursesCol = 4;
- static int enterValue() {
- int num;
- boolean isCorrect = true;
- num = 0;
- do {
- try {
- num = Integer.parseInt(scannerConsole.nextLine());
- isCorrect = false;
- } catch (Exception E) {
- System.out.print("Ошибка, повторите ввод: ");
- }
- } while (isCorrect);
- return num;
- }
- static int enterIndex(int size) {
- int index;
- boolean isInCorrect;
- do {
- isInCorrect = false;
- index = enterValue();
- if (index < MIN_INDEX || index > size) {
- System.out.println("Данное значение должно быть больше нуля и меньше длины списка. Повторите ввод: ");
- isInCorrect = true;
- }
- } while (isInCorrect);
- return index;
- }
- static int enterColCount() {
- int index;
- boolean isCorrect;
- do {
- isCorrect = false;
- index = enterValue();
- if (index < 1 || index > 6) {
- System.out.println("Количество курсов колледжа не может быть меньше 1 или больше 6 ");
- isCorrect = true;
- }
- } while (isCorrect);
- return index;
- }
- static boolean isCorrectChoice(int choice) {
- boolean isInCorrect;
- isInCorrect = choice != CREATE_LIST && choice != OPEN_LIST;
- return isInCorrect;
- }
- static void printSelection(boolean isInCorrect, int choice) {
- if (!isInCorrect) {
- System.out.println("Вы выбрали вариант " + choice);
- System.out.println("---------------------------------------------");
- } else {
- System.out.print("Пожалуйста, выберите указанные варианты: ");
- }
- }
- static int getTheChoice() {
- int choice;
- boolean isInCorrect;
- do {
- choice = enterValue();
- isInCorrect = isCorrectChoice(choice);
- printSelection(isInCorrect, choice);
- } while (isInCorrect);
- return choice;
- }
- static void printMainMenu() {
- System.out.println("\nПрограмма работы с списком студентов");
- System.out.println("---------------------------------------");
- System.out.print("Создать новый список(1) \nОткрыть список из файла(2)\n\nВвод: ");
- }
- static boolean IsFileExist(String path) {
- boolean isCorrect;
- File inputFile = new File(path);
- if (inputFile.exists()) {
- isCorrect = true;
- } else {
- isCorrect = false;
- System.out.print("Указанного файла не существует. Повторите ввод: ");
- }
- return isCorrect;
- }
- static boolean isCorrectSizeFile(String path) {
- boolean isCorrect = true;
- File inputFile = new File(path);
- if (inputFile.length() == 0) {
- System.out.print("Файл пустой, повторите ввод: ");
- isCorrect = false;
- }
- return isCorrect;
- }
- static boolean isFileCorrect(String path) throws IOException {
- Scanner scannerFile = new Scanner(new File(path));
- boolean isCorrect = true;
- while (scannerFile.hasNextLine() && isCorrect) {
- try {
- scannerFile.nextLine();
- } catch (Exception E) {
- System.out.println("Данные в указанном файле не соответсвуют условию");
- isCorrect = false;
- }
- }
- scannerFile.close();
- return isCorrect;
- }
- static String enterPath() throws IOException {
- String path;
- boolean isCorrect;
- System.out.print("Введите адрес файла: ");
- do {
- path = scannerConsole.nextLine();
- isCorrect = (IsFileExist(path) && isCorrectSizeFile(path) && isFileCorrect(path));
- } while (!isCorrect);
- return path;
- }
- private static boolean checkData(String name, String group) {
- boolean isCorrect = true;
- try {
- if (name.equals("")) {
- isCorrect = false;
- }
- String namePattern = "^[а-яА-Я]+ [А-Я]\\.[А-Я]\\.$";
- if (isCorrect && name.length() > 20) {
- isCorrect = false;
- }
- if (isCorrect && !name.matches(namePattern)) {
- isCorrect = false;
- }
- String groupPattern = "^\\d{6}$";
- if (group.equals("")) {
- isCorrect = false;
- }
- if (isCorrect && !group.matches(groupPattern)) {
- isCorrect = false;
- }
- } catch (Exception var9) {
- isCorrect = false;
- }
- return isCorrect;
- }
- static void fillListFromFile(String path) throws IOException, ClassNotFoundException {
- File fileOfRecords = new File(path);
- try {
- BufferedReader reader = new BufferedReader(new FileReader(fileOfRecords));
- try {
- String buff;
- if (fileOfRecords.length() != 0L && !(buff = reader.readLine()).equals("")) {
- int amount = Integer.parseInt(buff);
- int i = 0;
- boolean isCorrectData = true;
- while (isCorrectData && i < amount) {
- String name = reader.readLine();
- String group = reader.readLine();
- String course = reader.readLine();
- isCorrectData = checkData(name, group);
- if (isCorrectData) {
- Student comp = new Student(name, group, course);
- listInt.insertLast(comp);
- ++i;
- } else {
- System.err.println("Данные в файле некорректны.\n");
- selectionMenu();
- }
- }
- }
- } catch (Throwable var15) {
- try {
- reader.close();
- } catch (Throwable var14) {
- var15.addSuppressed(var14);
- }
- }
- reader.close();
- } catch (FileNotFoundException var16) {
- System.out.println("Файл не найден.\n");
- selectionMenu();
- } catch (IOException var17) {
- System.out.println("Доступ к файлу закрыт.\n");
- selectionMenu();
- }
- }
- static void openListFromFile() throws IOException, ClassNotFoundException {
- listInt.clear();
- System.out.println("Открытие списка");
- System.out.println("---------------------------------------------");
- String path = enterPath();
- fillListFromFile(path);
- }
- static void openList(int choice) throws IOException, ClassNotFoundException {
- if (choice == OPEN_LIST) {
- openListFromFile();
- }
- }
- static boolean isCorrectChoiceForMenu(int choice) {
- boolean isCorrect;
- isCorrect = choice != ADD_ELEMENT && choice != DELETE_ELEMENT && choice != VIEW_LIST
- && choice != SAVE_LIST_OF_MENU && choice != OPEN_LIST_OF_MENU && choice != MAIN_TASK
- && choice != EXIT_PROGRAM;
- return isCorrect;
- }
- static int inputTheChoiceForMenu() {
- int choice;
- boolean isCorrect;
- do {
- choice = enterValue();
- isCorrect = isCorrectChoiceForMenu(choice);
- printSelection(isCorrect, choice);
- } while (isCorrect);
- return choice;
- }
- static void printInfoMenu() {
- System.out.println("---------------------------------------------");
- System.out.println("\t\t\tОдносвязный список студентов");
- System.out.println("---------------------------------------------");
- 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("(6)Открыть список");
- System.out.println("(0)Выход");
- System.out.print("Ввод: ");
- }
- static void addElements() {
- Student Student = new Student();
- Student.create(date, coursesCol);
- listInt.insertLast(Student);
- }
- static void addElementsMenu() throws IOException, ClassNotFoundException {
- System.out.println("Добавление студента в список");
- System.out.println("----------------------------------");
- addElements();
- selectionMenu();
- }
- static void viewList() {
- if (listInt.getSize() > 0) {
- listInt.outputList();
- } else {
- System.out.println("Список пуст");
- }
- }
- static void delStudentByIndex() {
- System.out.print("Введите номер студента, который хотите удалить: ");
- int num = enterIndex(listInt.getSize());
- listInt.deleteByIndex(num);
- }
- static void getCoursesCol(){
- System.out.println("Введите количество курсов колледжа");
- System.out.print("Ввод: ");
- coursesCol = enterColCount();
- }
- static void deleteElementMenu() {
- if (listInt.getSize() > 0) {
- delStudentByIndex();
- } else {
- System.out.println("Список пуст");
- }
- }
- private static int enterTheMonth() {
- boolean isInCorrect;
- int month;
- do {
- isInCorrect = false;
- System.out.println("Введите месяц");
- System.out.println("Пример: 06");
- System.out.print("Ввод: ");
- month = enterValue();
- if ((month < 1) || (month > 12)) {
- System.err.println("\nВведите номер месяца (от 01 до 12)");
- isInCorrect = true;
- }
- }while (isInCorrect);
- return month;
- }
- private static int enterTheYear() {
- boolean isInCorrect;
- int year;
- do {
- isInCorrect = false;
- System.out.println("Введите год");
- System.out.println("Пример: 2020");
- System.out.print("Ввод: ");
- year = enterValue();
- if (String.valueOf(year).length() != 4) {
- System.err.println("\nПовторите ввод. Дата введена некорректно");
- isInCorrect = true;
- }
- if ((year < 2000) | (year > 2030)) {
- System.err.println("\nВведите год (в диапозоне от 2000 до 2030)");
- isInCorrect = true;
- }
- }while (isInCorrect);
- return year;
- }
- private static void enterTheDate() {
- int month = enterTheMonth();
- int year = enterTheYear();
- if (month > 8) {
- year--;
- }
- date = year;
- }
- static void saveList() throws IOException {
- System.out.println("\t\t\tСохранение списка");
- System.out.println("---------------------------------------------");
- System.out.print("Введите адрес: ");
- String path = scannerConsole.nextLine();
- FileWriter writer = new FileWriter(path);
- writer.append(String.valueOf(listInt.getSize())).append("\n");
- for (int i = 0; i < listInt.getSize(); i++) {
- writer.append(listInt.getLinkByIndex(i + 1).info.name()).append("\n");
- writer.append(listInt.getLinkByIndex(i + 1).info.group()).append("\n");
- writer.append(listInt.getLinkByIndex(i + 1).info.course()).append("\n");
- }
- writer.flush();
- System.out.println("Данные записаны в файл с адресом: " + path);
- }
- static void checkSizeListForSave() throws IOException {
- if (listInt.getSize() == 0) {
- System.out.println("Список пуст");
- } else {
- saveList();
- }
- }
- static void mainTaskMenu() {
- int choice = 0;
- if (listInt.getSize() > 0) {
- boolean isInCorrect;
- do {
- isInCorrect = false;
- System.out.println("Вы уверены , что хотите удалить последний курс?");
- System.out.println("1 - Да, 2 - Нет");
- System.out.print("Ваш выбор: ");
- try {
- choice = Integer.parseInt(scannerConsole.nextLine());
- } catch (Exception E) {
- System.err.print("\nОшибка, повторите ввод: ");
- isInCorrect = true;
- }
- if (!((choice == 1) | (choice == 2))) {
- isInCorrect = true;
- System.err.println("\nНеверный выбор");
- }
- } while (isInCorrect);
- if (choice == 1) {
- listInt.deleteLastCourse(coursesCol);
- }
- } else {
- System.out.println("\nСписок пуст");
- }
- System.out.println();
- }
- static void selectionMenu() throws IOException, ClassNotFoundException {
- printInfoMenu();
- switch (inputTheChoiceForMenu()) {
- case ADD_ELEMENT:
- addElementsMenu();
- selectionMenu();
- case DELETE_ELEMENT:
- deleteElementMenu();
- selectionMenu();
- case VIEW_LIST:
- viewList();
- selectionMenu();
- case MAIN_TASK:
- mainTaskMenu();
- selectionMenu();
- case SAVE_LIST_OF_MENU:
- checkSizeListForSave();
- selectionMenu();
- case OPEN_LIST_OF_MENU:
- openListFromFile();
- selectionMenu();
- case EXIT_PROGRAM:
- System.out.println("Конец программы");
- System.exit(0);
- }
- }
- public static void main(String[] args) throws IOException, ClassNotFoundException {
- scannerConsole = new Scanner(System.in);
- listInt = new LinkList();
- printMainMenu();
- openList(getTheChoice());
- enterTheDate();
- getCoursesCol();
- selectionMenu();
- scannerConsole.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement