Advertisement
Vladislav8653

4.1 java

Mar 30th, 2023 (edited)
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 27.07 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.util.Calendar;
  5. import java.util.GregorianCalendar;
  6. import java.util.Objects;
  7. import java.util.Scanner;
  8. record Student (String name, int group, int number, int day, int month, int year, String sex) {}
  9. public class College {
  10.     static Scanner scanner = new Scanner(System.in);
  11.     public static int n = 0;
  12.     public static boolean exit = false;
  13.     public static Student[] arrayOfRecords = new Student[0];
  14.     // тут костыльно реализовано, потому я дебил и не знал,
  15.     // что динамических массивов в jave, как это устроено в delphi, не существует
  16.     // надо было юзать arraylist, но тогда надо переписывать много кода(
  17.     public static Student[] tempArray = new Student[0];
  18.  
  19.     public static void main (String[] args) throws IOException {
  20.         System.out.println("The program is a college student database.");
  21.         while (!exit) {
  22.             showInfo();
  23.             chooseAction();
  24.         }
  25.     }
  26.     public static void showInfo () {
  27.         System.out.println("1 - add record");
  28.         System.out.println("2 - show sorted records");
  29.         System.out.println("3 - show all records");
  30.         System.out.println("4 - delete record");
  31.         System.out.println("5 - edit record");
  32.         System.out.println("6 - open record from file");
  33.         System.out.println("7 - save record in file");
  34.         System.out.println("8 - exit");
  35.     }
  36.  
  37.     public static void chooseAction () throws IOException {
  38.         int chose;
  39.         boolean isIncorrect;
  40.         final int MAX = 8;
  41.         System.out.println("Please, choose:");
  42.         do {
  43.             chose = inputData();
  44.             isIncorrect = false;
  45.             if ((chose > MAX) || (chose < 1)) {
  46.                 isIncorrect = true;
  47.                 System.out.println("Please enter the correct function number.");
  48.             }
  49.         } while (isIncorrect);
  50.  
  51.         switch (chose) {
  52.             case 1 -> addRecord();
  53.             case 2 -> sortRecords();
  54.             case 3 -> showRecords();
  55.             case 4 -> deleteRecord();
  56.             case 5 -> editRecord();
  57.             case 6 -> openFile();
  58.             case 7 -> saveData();
  59.             case 8 -> exit = true;
  60.         }
  61.     }
  62.  
  63.     public static void editRecord () {
  64.         System.out.println("Specify the number of the student you want to edit:");
  65.         int number;
  66.         boolean isIncorrect;
  67.         do {
  68.             number = inputData();
  69.             isIncorrect = false;
  70.             if ((number > n) || (number < 1)){
  71.                 isIncorrect = true;
  72.                 System.out.println("Please enter the number of an existing student:");
  73.             }
  74.         } while (isIncorrect);
  75.  
  76.         int data; // что мы хотим редактировать, какую позицию
  77.         final int MAX = 7;
  78.         System.out.println("Select what you want to edit:");
  79.         System.out.println("1 - surname");
  80.         System.out.println("2 - group");
  81.         System.out.println("3 - number in logbook");
  82.         System.out.println("4 - day (of birthday)");
  83.         System.out.println("5 - month (of birthday)");
  84.         System.out.println("6 - year (of birthday)");
  85.         System.out.println("7 - sex");
  86.         do {
  87.             data = inputData();
  88.             isIncorrect = false;
  89.             if ((data > MAX) || (data < 1)){
  90.                 isIncorrect = true;
  91.                 System.out.println("Please enter the number of an existing position.");
  92.             }
  93.         } while (isIncorrect);
  94.         number--;
  95.         String name = arrayOfRecords[number].name();
  96.         int group = arrayOfRecords[number].group();
  97.         int numberInList = arrayOfRecords[number].number();
  98.         int day = arrayOfRecords[number].day();
  99.         int month = arrayOfRecords[number].month();
  100.         int year = arrayOfRecords[number].year();
  101.         String sex = arrayOfRecords[number].sex();
  102.  
  103.         switch (data) {
  104.             case 1 -> name = inputName();
  105.             case 2 -> group = inputGroup();
  106.             case 3 -> numberInList = inputNumber();
  107.             case 4 -> day = inputDay();
  108.             case 5 -> month = inputMonth();
  109.             case 6 -> year = inputYear();
  110.             case 7 -> sex = inputSex();
  111.         }
  112.         arrayOfRecords[number] = new Student(name, group, numberInList, day, month, year, sex);
  113.         System.out.println("Ready!");
  114.         System.out.println();
  115.     }
  116.  
  117.     public static void addRecord () {
  118.         String name, sex;
  119.         int group, number, day, month, year;
  120.         name = inputName();
  121.         sex = inputSex();
  122.         group = inputGroup();
  123.         number = inputNumber();
  124.         day = inputDay();
  125.         month = inputMonth();
  126.         year = inputYear();
  127.         if (checkRepeats(name, group, number, day, month, year, sex)) {
  128.             tempArray = arrayOfRecords;
  129.             arrayOfRecords = new Student[n + 1];
  130.             System.arraycopy(tempArray, 0, arrayOfRecords, 0, tempArray.length);
  131.             arrayOfRecords[n] = new Student(name, group, number, day, month, year, sex);
  132.             n++;
  133.             System.out.println("Ready!");
  134.             System.out.println();
  135.         }
  136.     }
  137.  
  138.     public static void showRecords () {
  139.         String ANSI_YELLOW = "\u001B[33m";
  140.         String ANSI_RESET = "\u001B[0m";
  141.         if (n > 0) {
  142.             for (int i = 0; i < arrayOfRecords.length; i++) {
  143.                 System.out.println(ANSI_YELLOW + "Student " + (i + 1) + ":");
  144.                 System.out.println("Surname: " + arrayOfRecords[i].name());
  145.                 System.out.println("Sex: " + arrayOfRecords[i].sex());
  146.                 System.out.println("Group: " + arrayOfRecords[i].group());
  147.                 System.out.println("Number in logbook: " + arrayOfRecords[i].number());
  148.                 System.out.println("Birthday: " + arrayOfRecords[i].day() + "." + arrayOfRecords[i].month() + "." + arrayOfRecords[i].year() + ANSI_RESET);
  149.                 System.out.println();
  150.             }
  151.             System.out.println();
  152.         }
  153.         else {
  154.             System.out.println(ANSI_YELLOW + "The list of students is empty..." + ANSI_RESET);
  155.         }
  156.     }
  157.  
  158.     public static void deleteRecord () {
  159.         if (!(arrayOfRecords.length == 0)) {
  160.             String ANSI_RED = "\u001B[31m";
  161.             String ANSI_RESET = "\u001B[0m";
  162.             System.out.println("Specify the number of the student you want to delete:");
  163.             int number;
  164.             boolean isIncorrect;
  165.             do {
  166.                 number = inputData();
  167.                 isIncorrect = false;
  168.                 if ((number > n) || (number < 1)) {
  169.                     isIncorrect = true;
  170.                     System.out.println("Please enter the number of an existing student");
  171.                 }
  172.             } while (isIncorrect);
  173.             number--;
  174.             System.out.println(ANSI_RED + "Do you want to remove the student " + arrayOfRecords[number].name() + " ?");
  175.             System.out.println("Write \"yes\" if yes. Write \"no\" if no." + ANSI_RESET);
  176.             String answer;
  177.             do {
  178.                 isIncorrect = false;
  179.                 answer = scanner.nextLine();
  180.                 if (answer.equals("yes") || answer.equals("Yes")) {
  181.                     if (number < (arrayOfRecords.length - 1)) {
  182.                         for (int i = number; i < (arrayOfRecords.length - 1); i++) {   // вот тут может быть что-то не так
  183.                             arrayOfRecords[i] = arrayOfRecords[i + 1];
  184.                         }
  185.                     }
  186.                     tempArray = arrayOfRecords;
  187.                     arrayOfRecords = new Student[n - 1];
  188.                     System.arraycopy(tempArray, 0, arrayOfRecords, 0, arrayOfRecords.length);
  189.                     n--;
  190.                 } else if (answer.equals("no") || answer.equals("No")) {
  191.                     deleteRecord();
  192.                 } else {
  193.                     isIncorrect = true;
  194.                     System.out.println("Please enter \"yes\" or \"no.\"");
  195.                 }
  196.             } while (isIncorrect);
  197.             System.out.println("Ready!" + ANSI_RESET);
  198.             System.out.println();
  199.         } else {
  200.             System.out.println("List is empty, impossible to delete someone.");
  201.         }
  202.     }
  203.  
  204.     public static boolean isAdult (int i) {
  205.         boolean isYoung = true;
  206.         GregorianCalendar gcalendar = new GregorianCalendar();
  207.         int currYear = gcalendar.get(Calendar.YEAR);
  208.         int currMonth = gcalendar.get(Calendar.MONTH);
  209.         int currDay = gcalendar.get(Calendar.DAY_OF_MONTH);
  210.         if (arrayOfRecords[i].year() < (currYear - 18))
  211.             isYoung = false;
  212.         if (arrayOfRecords[i].year() == (currYear - 18) && (arrayOfRecords[i].month() < (currMonth)))
  213.             isYoung = false;
  214.         if ((arrayOfRecords[i].year() == (currYear - 18)) && (arrayOfRecords[i].month() == currMonth) && (arrayOfRecords[i].day() <= currDay))
  215.             isYoung = false;
  216.         return isYoung;
  217.     }
  218.  
  219.     public static void sortRecords () {
  220.         Student min;
  221.         if (arrayOfRecords.length > 1) {  //сортиро4ка по номерам группы (по возрастанию)
  222.             Student[] arrayForSort = arrayOfRecords;
  223.  
  224.             for (int i = 0; i < (arrayForSort.length - 1); i++) {
  225.                 if (isAdult(i)) {
  226.                     for (int j = i + 1; j < (arrayForSort.length); j++) {
  227.                         if (arrayForSort[j].group() < arrayForSort[i].group()) {
  228.                             min = arrayForSort[j];
  229.                             arrayForSort[j] = arrayForSort[i];
  230.                             arrayForSort[i] = min;
  231.                         }
  232.                     }
  233.                 }
  234.             }
  235.  
  236.             for (int i = 0; i < (arrayForSort.length - 1); i++) {
  237.                 if (isAdult(i)) {
  238.                     for (int j = i + 1; j < (arrayForSort.length); j++) {
  239.                         if ((arrayForSort[j].number() < arrayForSort[i].number()) && (arrayForSort[j].group() == arrayForSort[i].group())) {
  240.                             min = arrayForSort[j];
  241.                             arrayForSort[j] = arrayForSort[i];
  242.                             arrayForSort[i] = min;
  243.                         }
  244.                     }
  245.                 }
  246.             }
  247.  
  248.             String ANSI_YELLOW = "\u001B[33m";
  249.             String ANSI_RESET = "\u001B[0m";
  250.             int k = 0;
  251.             for (int i = 0; i < arrayForSort.length; i++) {
  252.                 if (isAdult(i)) {
  253.                     System.out.println(ANSI_YELLOW + "Student " + (k + 1) + ":");
  254.                     System.out.println("Surname: " + arrayForSort[i].name());
  255.                     System.out.println("Sex: " + arrayForSort[i].sex());
  256.                     System.out.println("Group: " + arrayForSort[i].group());
  257.                     System.out.println("Number in logbook: " + arrayForSort[i].number());
  258.                     System.out.println("Birthday: " + arrayForSort[i].day() + "." + arrayForSort[i].month() + "." + arrayForSort[i].year() + ANSI_RESET);
  259.                     System.out.println();
  260.                     k++;
  261.                 }
  262.             }
  263.             System.out.println();
  264.         }else{
  265.             System.out.println("Sorting needs in at least 2 students.");
  266.         }
  267.     }
  268.  
  269.     public static String inputName () {
  270.         System.out.println("Enter a student's surname:");
  271.         boolean isIncorrect;
  272.         String str;
  273.         do {
  274.             isIncorrect = false;
  275.             str = inputString();
  276.             if (!checkName(str))
  277.                 isIncorrect = true;
  278.         }while (isIncorrect);
  279.         return str;
  280.     }
  281.  
  282.     public static boolean checkName (String str) {
  283.         final int MAX = 30;
  284.         boolean isOK = true;
  285.         if ((str.length() < 1) || (str.length() > MAX)) {
  286.             isOK = false;
  287.             System.out.println("The length of the surname should not exceed " + MAX + " characters");
  288.         }
  289.         return isOK;
  290.     }
  291.  
  292.     private static String inputSex() {
  293.         int sex = 0;
  294.         boolean isIncorrect;
  295.         final int MIN_NUM = 1;
  296.         final int MAX_NUM = 3;
  297.         System.out.println("Enter 1, if the student is male.");
  298.         System.out.println("Enter 2, if the student is female.");
  299.         System.out.println("Enter 3, if the student is non-binary person.");
  300.         do {
  301.             isIncorrect = false;
  302.             try {
  303.                 sex = Integer.parseInt(scanner.nextLine());
  304.             } catch (Exception e) {
  305.                 isIncorrect = true;
  306.                 System.out.println("Please, enter a number.");
  307.             }
  308.             if (!isIncorrect && (sex < MIN_NUM || sex > MAX_NUM)) {
  309.                 System.out.println("Enter a valid value. Repeat the entry.");
  310.                 isIncorrect = true;
  311.             }
  312.             if (!isIncorrect && (sex == 3)) {
  313.                 isIncorrect = true;
  314.                 System.out.println("Once all the genders came into the bar and said: \"We'll have a table for two\"");
  315.                 System.out.println("P.S. There are only two genders at our college. Repeat the entry.");
  316.             }
  317.         } while (isIncorrect);
  318.         switch (sex) {
  319.             case 1 -> {
  320.                 return "Male";
  321.             }
  322.             case 2 -> {
  323.                 return "Female";
  324.             }
  325.         }
  326.         return "";
  327.     }
  328.  
  329.     public static boolean checkSex (String str) { // это только для файлов, в консоли - своя проверка
  330.         boolean isCorrect = str.equals("Female") || str.equals("Male") || str.equals("female") || str.equals("male");
  331.         if (!isCorrect) {
  332.             System.out.println("Incorrect data. Field \"sex\" should contain either \"Male\" or \"Female\"");
  333.         }
  334.         return isCorrect;
  335.     }
  336.  
  337.     public static String inputString () {
  338.         String str;
  339.         boolean isIncorrect;
  340.         do {
  341.             isIncorrect = false;
  342.             str = scanner.nextLine();
  343.             for (int i = 0; i < str.length(); i++) {
  344.                 if ((str.charAt(i) < (int)'A') || (str.charAt(i) > (int)'z')) {
  345.                     if (str.charAt(i) != (int)' ') {
  346.                         isIncorrect = true;
  347.                         System.out.println("Please enter a string consisting of Latin characters");
  348.                         break;
  349.                     }
  350.                 }
  351.             }
  352.         } while (isIncorrect);
  353.         return str;
  354.     }
  355.  
  356.     public static int inputGroup () {
  357.         boolean isIncorrect;
  358.         int group;
  359.         System.out.println("Enter the student's group number. Length - no more than 8 digits.");
  360.         final int MAX = 99999999;
  361.         do {
  362.             isIncorrect = false;
  363.             group = inputData();
  364.             if (group > MAX) {
  365.                 System.out.println("Group number - no more than 8 digits.");
  366.                 isIncorrect = true;
  367.             }
  368.         }while (isIncorrect);
  369.         return group;
  370.     }
  371.  
  372.     public static boolean checkGroup (String strGroup) {
  373.         boolean isIncorrect;
  374.         int group = 0;
  375.         final int MIN_SIZE = 1;
  376.         final int MAX_SIZE = 99999999;
  377.         isIncorrect = false;
  378.         try {
  379.             group = Integer.parseInt(strGroup);
  380.         } catch (Exception e) {
  381.             isIncorrect = true;
  382.             System.out.println("Please enter an integer number");
  383.         }
  384.         if ((group < MIN_SIZE || group > MAX_SIZE) && !isIncorrect) {
  385.             System.out.println("Please enter a positive number (no longer than 8) symbols");
  386.             isIncorrect = true;
  387.         }
  388.         return !isIncorrect;
  389.     }
  390.  
  391.     private static int inputData() {
  392.         int n = 0;
  393.         boolean isIncorrect;
  394.         final int MIN_SIZE = 1;
  395.         do {
  396.             isIncorrect = false;
  397.             try {
  398.                 n = Integer.parseInt(scanner.nextLine());
  399.             } catch (Exception e) {
  400.                 isIncorrect = true;
  401.                 System.out.println("Please enter an integer number");
  402.             }
  403.             if (n < MIN_SIZE && !isIncorrect) {
  404.                 System.out.println("Please enter a positive number");
  405.                 isIncorrect = true;
  406.             }
  407.         } while (isIncorrect);
  408.         return n;
  409.     }
  410.  
  411.     public static int inputNumber () {
  412.         boolean isIncorrect;
  413.         int number;
  414.         System.out.println("Enter the number of the student in the log list (not more than 40).");
  415.         final int MAX = 40;
  416.         do {
  417.             isIncorrect = false;
  418.             number = inputData();
  419.             if (number > MAX) {
  420.                 System.out.println("Student number - a number not to exceed 40");
  421.                 isIncorrect = true;
  422.             }
  423.         }while (isIncorrect);
  424.         return number;
  425.     }
  426.  
  427.     public static boolean checkNumber (String strNum) {
  428.         boolean isIncorrect;
  429.         int number = 0;
  430.         final int MIN_SIZE = 1;
  431.         final int MAX_SIZE = 40;
  432.         isIncorrect = false;
  433.         try {
  434.             number = Integer.parseInt(strNum);
  435.         } catch (Exception e) {
  436.             isIncorrect = true;
  437.             System.out.println("Please enter an integer number");
  438.         }
  439.         if ((number < MIN_SIZE || number > MAX_SIZE) && !isIncorrect) {
  440.             System.out.println("Please enter a number in range [1..40]");
  441.             isIncorrect = true;
  442.         }
  443.         return !isIncorrect;
  444.     }
  445.  
  446.  
  447.     public static int inputDay () {
  448.         boolean isIncorrect;
  449.         int day;
  450.         System.out.println("Enter day of birthday:");
  451.         final int MAX = 31;
  452.         do {
  453.             isIncorrect = false;
  454.             day = inputData();
  455.             if (day > MAX) {
  456.                 System.out.println("Range: 1..31");
  457.                 isIncorrect = true;
  458.             }
  459.         }while (isIncorrect);
  460.         return day;
  461.     }
  462.  
  463.     public static boolean checkDay (String strDay) {
  464.         boolean isIncorrect;
  465.         int day = 0;
  466.         final int MIN_SIZE = 1;
  467.         final int MAX_SIZE = 31;
  468.         isIncorrect = false;
  469.         try {
  470.             day = Integer.parseInt(strDay);
  471.         } catch (Exception e) {
  472.             isIncorrect = true;
  473.             System.out.println("Please enter an integer number");
  474.         }
  475.         if ((day < MIN_SIZE || day > MAX_SIZE) && !isIncorrect) {
  476.             System.out.println("Please enter a number in range [1..31]");
  477.             isIncorrect = true;
  478.         }
  479.         return !isIncorrect;
  480.     }
  481.  
  482.  
  483.     public static int inputMonth () {
  484.         boolean isIncorrect;
  485.         int month;
  486.         System.out.println("Enter month of birthday:");
  487.         final int MAX = 12;
  488.         do {
  489.             isIncorrect = false;
  490.             month = inputData();
  491.             if (month > MAX) {
  492.                 System.out.println("Range: 1..12");
  493.                 isIncorrect = true;
  494.             }
  495.         }while (isIncorrect);
  496.         return month;
  497.     }
  498.  
  499.     public static boolean checkMonth (String strMonth) {
  500.         boolean isIncorrect;
  501.         int month = 0;
  502.         final int MIN_SIZE = 1;
  503.         final int MAX_SIZE = 12;
  504.         isIncorrect = false;
  505.         try {
  506.             month = Integer.parseInt(strMonth);
  507.         } catch (Exception e) {
  508.             isIncorrect = true;
  509.             System.out.println("Please enter an integer number");
  510.         }
  511.         if ((month < MIN_SIZE || month > MAX_SIZE) && !isIncorrect) {
  512.             System.out.println("Please enter a number in range [1..12]");
  513.             isIncorrect = true;
  514.         }
  515.         return !isIncorrect;
  516.     }
  517.  
  518.     public static int inputYear () {
  519.         boolean isIncorrect;
  520.         int year;
  521.         GregorianCalendar gcalendar = new GregorianCalendar();
  522.         int currYear = gcalendar.get(Calendar.YEAR);
  523.         System.out.println("Enter year of birthday:");
  524.         final int MIN_YEAR = 1900;
  525.         do {
  526.             isIncorrect = false;
  527.             year = inputData();
  528.             if (year > currYear || year < MIN_YEAR) {
  529.                 System.out.println("Range: 1900..current year");
  530.                 isIncorrect = true;
  531.             }
  532.         }while (isIncorrect);
  533.         return year;
  534.     }
  535.  
  536.     public static boolean checkYear (String strYear) {
  537.         boolean isIncorrect;
  538.         int year = 0;
  539.         GregorianCalendar gcalendar = new GregorianCalendar();
  540.         int currYear = gcalendar.get(Calendar.YEAR);
  541.         final int MIN_SIZE = 1900;
  542.         isIncorrect = false;
  543.         try {
  544.             year = Integer.parseInt(strYear);
  545.         } catch (Exception e) {
  546.             isIncorrect = true;
  547.             System.out.println("Please enter an integer number");
  548.         }
  549.         if ((year < MIN_SIZE || year > currYear) && !isIncorrect) {
  550.             System.out.println("Please enter a number in range [1900..current year]");
  551.             isIncorrect = true;
  552.         }
  553.         return !isIncorrect;
  554.     }
  555.  
  556.  
  557.     private static String inputFilePath() {
  558.         String path;
  559.         boolean isIncorrect;
  560.         do {
  561.             isIncorrect = false;
  562.             System.out.println("Input file path:");
  563.             path = scanner.nextLine();
  564.             File file = new File(path);
  565.             if (!file.exists()) {
  566.                 System.out.println("Wrong way to file.");
  567.                 isIncorrect = true;
  568.             }
  569.             if (!file.canRead() && file.exists()) {
  570.                 System.out.println("Impossible to read a file.");
  571.                 isIncorrect = true;
  572.             }
  573.             if (!file.canWrite() && file.canRead()) {
  574.                 System.out.println("Impossible to write a file.");
  575.                 isIncorrect = true;
  576.             }
  577.         } while (isIncorrect);
  578.         return path;
  579.     }
  580.  
  581.     public static boolean checkRepeats(String name, int group, int number, int day, int month, int year, String sex) {
  582.         boolean isCorrect = true;
  583.         if (Objects.equals(sex, "male"))
  584.             sex = "Male";
  585.         if (Objects.equals(sex, "female"))
  586.             sex = "Female";
  587.         if(arrayOfRecords.length > 0) {
  588.             for (Student arrayOfRecord : arrayOfRecords) {
  589.                 if ((name.equals(arrayOfRecord.name())) && (group == arrayOfRecord.group()) &&
  590.                         (number == (arrayOfRecord.number())) && (day == arrayOfRecord.day()) &&
  591.                         (month == arrayOfRecord.month()) && (year == arrayOfRecord.year()) &&
  592.                         (sex.equals(arrayOfRecord.sex()))) {
  593.                     isCorrect = false;
  594.                     System.out.println("Such an entry already exists.");
  595.                     break;
  596.                 }
  597.             }
  598.         }
  599.         return isCorrect;
  600.     }
  601.  
  602.      private static boolean checkDataCorrectness(String str) {
  603.         boolean isCorrect = true;
  604.         boolean isCorrectName, isCorrectGroup, isCorrectNumber, isCorrectSex, isCorrectDay, isCorrectMonth, isCorrectYear;
  605.         String[] chr;
  606.          chr = str.split(" ");
  607.          if (chr.length > 7) {
  608.              System.out.println("Too many characteristics in string.");
  609.              isCorrect = false;
  610.          } else {
  611.              isCorrectName = checkName(chr[0]);
  612.              if (!isCorrectName) {
  613.                  isCorrect = false;
  614.              }
  615.              isCorrectSex = checkSex(chr[6]);
  616.              if (!isCorrectSex) {
  617.                  isCorrect = false;
  618.              }
  619.              isCorrectGroup = checkGroup(chr[1]);
  620.              if (!isCorrectGroup) {
  621.                  isCorrect = false;
  622.              }
  623.              isCorrectNumber = checkNumber(chr[2]);
  624.              if (!isCorrectNumber) {
  625.                  isCorrect = false;
  626.              }
  627.              isCorrectDay = checkDay(chr[3]);
  628.              if (!isCorrectDay) {
  629.                  isCorrect = false;
  630.              }
  631.              isCorrectMonth = checkMonth(chr[4]);
  632.              if (!isCorrectMonth) {
  633.                  isCorrect = false;
  634.              }
  635.              isCorrectYear = checkYear(chr[5]);
  636.              if (!isCorrectYear) {
  637.                  isCorrect = false;
  638.              }
  639.          }
  640.         return isCorrect;
  641.     }
  642.  
  643.  
  644.     public static void openFile () {
  645.         System.out.println("Example of string with info about student:");
  646.         System.out.println("Name - Group - Number in list - Day (of birthday) - Month (of birthday) - Year (of birthday) - Sex");
  647.         System.out.println("P.S. after every position expected only space ");
  648.         String path = inputFilePath();
  649.         String str;
  650.         boolean isIncorrect = true;
  651.         String[] mas;
  652.         try {
  653.             Scanner fileReader = new Scanner(new File(path));
  654.             while((fileReader.hasNext()) && isIncorrect) {
  655.                 str = fileReader.nextLine();
  656.                 isIncorrect = checkDataCorrectness(str);
  657.                 if (isIncorrect) {
  658.                     mas = str.split(" ");
  659.                     int group = Integer.parseInt(mas[1]);
  660.                     int number = Integer.parseInt(mas[2]);
  661.                     int day = Integer.parseInt(mas[3]);
  662.                     int month = Integer.parseInt(mas[4]);
  663.                     int year = Integer.parseInt(mas[5]);
  664.                     if (Objects.equals(mas[6], "male"))
  665.                         mas[6] = "Male";
  666.                     if (Objects.equals(mas[6], "female"))
  667.                         mas[6] = "Female";
  668.                     if (Objects.equals(mas[6], "male"))
  669.                         mas[6] = "Male";
  670.                     isIncorrect = checkRepeats(mas[0], group, number, day, month, year, mas[6]);
  671.                     if (isIncorrect){
  672.                         tempArray = arrayOfRecords;
  673.                         arrayOfRecords = new Student[n + 1];
  674.                         System.arraycopy(tempArray, 0, arrayOfRecords, 0, tempArray.length);
  675.                         arrayOfRecords[n] = new Student(mas[0], group, number, day, month, year, mas[6]);
  676.                         n++;
  677.                     }
  678.                 } else {
  679.                     System.out.println("Such a record already exists.");
  680.                 }
  681.             }
  682.             if (isIncorrect)
  683.                 System.out.println("Ready!");
  684.         } catch (Exception q) {
  685.             System.out.println("Something went wrong, check file.");
  686.         }
  687.     }
  688.  
  689.     private static void saveData() throws IOException {
  690.         if (arrayOfRecords.length > 0) {
  691.             String path = inputFilePath();
  692.             FileWriter writer = new FileWriter(path);
  693.             for (Student arrayOfRecord : arrayOfRecords) {
  694.                 writer.write(arrayOfRecord.name() + " " + arrayOfRecord.group() + " " +
  695.                         arrayOfRecord.number() + " " + arrayOfRecord.day() + " " + arrayOfRecord.month()
  696.                         + " " + arrayOfRecord.year() + " " + arrayOfRecord.sex());
  697.                 writer.write("\n");
  698.             }
  699.             writer.close();
  700.             System.out.println("Ready!");
  701.         } else
  702.             System.out.println("There is nothing to save, bro.");
  703.     }
  704. }
  705.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement