Advertisement
MaksNew

Untitled

Feb 2nd, 2021
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 28.42 KB | None | 0 0
  1. package BLOCK41DEMO;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Scanner;
  5. import java.io.*;
  6. import java.io.File;
  7. import java.io.IOException;
  8. public class Main {
  9.     record Worker(String name, int detailsInMonday, int detailsInTuesday, int detailsInWednesday, int detailsInThursday, int detailsInFriday, int detailsInSaturday) implements Serializable{}
  10.     static Scanner scan = new Scanner(System.in);
  11.     static int bufIndex;
  12.  
  13.     static String getName(){
  14.         System.out.println("Введи имя рабочего:");
  15.         return scan.nextLine();
  16.     }
  17.  
  18.     static int getDetailsInSomeDay(String day){
  19.         boolean isIncorrect;
  20.         int detailsInDay;
  21.         detailsInDay = 0;
  22.         do {
  23.             System.out.println("Введи количество деталей за " + day + " :");
  24.             isIncorrect = false;
  25.             try {
  26.                 detailsInDay = Integer.parseInt(scan.nextLine());
  27.             } catch (Exception e) {
  28.                 isIncorrect = true;
  29.                 System.out.println("Введите число!.");
  30.             }
  31.             if ((((detailsInDay < 0) || (detailsInDay > 1000000000))) && !isIncorrect) {
  32.                 System.out.println("Количество деталей должно быть в диапазоне от 0 до 1000000000");
  33.                 isIncorrect = true;
  34.             }
  35.         } while (isIncorrect);
  36.         return detailsInDay;
  37.     }
  38.  
  39.     static int enterSizeOfArray(){
  40.         int sizeOfArray;
  41.         sizeOfArray = 0;
  42.         boolean isIncorrect;
  43.         do {
  44.             System.out.println("Введите количество рабочих: ");
  45.             isIncorrect = false;
  46.             try {
  47.                 sizeOfArray = Integer.parseInt(scan.nextLine());
  48.             } catch (Exception e) {
  49.                 isIncorrect = true;
  50.                 System.out.println("Количество рабочих должно быть числом.");
  51.             }
  52.             if ((((sizeOfArray < 1) || (sizeOfArray > 10000))) && !isIncorrect) {
  53.                 System.out.println("Количество рабочих должно быть в диапазоне от 1 до 10000");
  54.                 isIncorrect = true;
  55.             }
  56.         } while (isIncorrect);
  57.         return sizeOfArray;
  58.     }
  59.  
  60.     static void createArrayOfRecordsFromConsole() throws IOException, ClassNotFoundException {
  61.         int sizeOfArray;
  62.         sizeOfArray = enterSizeOfArray();
  63.         Worker[] worker = new Worker[sizeOfArray];
  64.         for(int i = 0; i < sizeOfArray; ++i){
  65.             worker[i] = new Worker (getName(), getDetailsInSomeDay("понедельник"), getDetailsInSomeDay("вторник"), getDetailsInSomeDay("среду"), getDetailsInSomeDay("четверг"), getDetailsInSomeDay("пятницу"), getDetailsInSomeDay("субботу"));
  66.         }
  67.         writeArrayOfRecords(worker);
  68.     }
  69.  
  70.     static void writeArrayOfRecordsToFile(Worker[] worker) throws IOException, ClassNotFoundException {
  71.         String path;
  72.         path = readPath();
  73.         FileOutputStream fos = new FileOutputStream(path);
  74.         ObjectOutputStream oos = new ObjectOutputStream(fos);
  75.         oos.writeObject(worker);
  76.         System.out.println("Файл успешно сохранён!");
  77.         oos.close();
  78.         fos.close();
  79.         writeArrayOfRecords(worker);
  80.     }
  81.  
  82.     static String readPath(){
  83.         String path;
  84.         boolean isIncorrect;
  85.         isIncorrect = true;
  86.         do {
  87.             System.out.println("Введите абсолютный путь к файлу ");
  88.             path = scan.nextLine();
  89.             File fileOfRecords = new File(path);
  90.             if (!fileOfRecords.exists()) {
  91.                 System.out.println("Файл не найден");
  92.             }
  93.             else {
  94.                 isIncorrect = false;
  95.             }
  96.         } while (isIncorrect);
  97.         return path;
  98.     }
  99.  
  100.     static void readArrayOfRecordsFromFile() throws IOException, ClassNotFoundException {
  101.         boolean isIncorrect;
  102.         String path;
  103.         FileInputStream fis = null;
  104.         ObjectInputStream ois = null;
  105.         do {
  106.             isIncorrect = false;
  107.             try {
  108.                 path = readPath();
  109.                 fis = new FileInputStream(path);
  110.                 ois = new ObjectInputStream(fis);
  111.             }catch (Exception e){
  112.                 System.out.println("Ошибка! Проверьте файл!");
  113.                 isIncorrect = true;
  114.             }
  115.         }while(isIncorrect);
  116.         Worker[] worker = (Worker[])ois.readObject();
  117.         fis.close();
  118.         ois.close();
  119.         writeArrayOfRecords(worker);
  120.     }
  121.  
  122.     static int readMenuOf3Item() {
  123.         int menuItem;
  124.         menuItem = 0;
  125.         boolean isIncorrect;
  126.         do {
  127.             isIncorrect = false;
  128.             try{
  129.                 menuItem = Integer.parseInt(scan.nextLine());
  130.             } catch (Exception e) {
  131.                 System.out.println("Введите число!");
  132.                 isIncorrect = true;
  133.             }
  134.             if ((menuItem != 1) && (menuItem != 2) && (menuItem != 3)) {
  135.                 System.out.println("Введите одно из предложенных чисел!");
  136.                 isIncorrect = true;
  137.             }
  138.         }while(isIncorrect);
  139.         return menuItem;
  140.     }
  141.  
  142.     static void showWorkerAndDetailsOnWeek(Worker[] worker) throws IOException, ClassNotFoundException {
  143.         searchingWorker(worker);
  144.         int sum;
  145.         sum = worker[bufIndex].detailsInMonday + worker[bufIndex].detailsInTuesday + worker[bufIndex].detailsInWednesday + worker[bufIndex].detailsInThursday + worker[bufIndex].detailsInFriday + worker[bufIndex].detailsInSaturday;
  146.         System.out.println(worker[bufIndex].name + " собрал " + sum + " деталей за шестидневную неделю.");
  147.         writeArrayOfRecords(worker);
  148.     }
  149.  
  150.     static void searchingWorker(Worker[] worker) {
  151.         boolean isNotFind;
  152.         int i;
  153.         String userWorker;
  154.         System.out.println("Введите фамилию рабочего:");
  155.         do{
  156.             isNotFind = true;
  157.             userWorker = scan.nextLine();
  158.             i = 0;
  159.             while((i < worker.length) && (isNotFind)){
  160.                 if (userWorker.equals(worker[i].name)) {
  161.                     bufIndex = i;
  162.                     isNotFind = false;
  163.                 }
  164.                 ++i;
  165.             }
  166.             if (isNotFind)
  167.                 System.out.println("Рабочий с такой фамилией не найден! Введите другую фамилию!");
  168.         }while(isNotFind);
  169.     }
  170.  
  171.     static int[] calculateSumOfProducts(int[] arrayOfSumOfProducts, Worker[] worker){
  172.         for (int i = 0; i < worker.length; ++i){
  173.             arrayOfSumOfProducts[i] = worker[i].detailsInMonday + worker[i].detailsInTuesday + worker[i].detailsInWednesday + worker[i].detailsInThursday + worker[i].detailsInFriday + worker[i].detailsInSaturday;
  174.         }
  175.         return arrayOfSumOfProducts;
  176.     }
  177.  
  178.     static String calculateBestDay(Worker[] worker, int bufIndex){
  179.         int index;
  180.         String bestDay;
  181.         if (worker[bufIndex].detailsInMonday > worker[bufIndex].detailsInTuesday){
  182.             bestDay = "Понедельник";
  183.             index = worker[bufIndex].detailsInMonday;
  184.         }else{
  185.             bestDay = "Вторник";
  186.             index = worker[bufIndex].detailsInTuesday;
  187.         }
  188.         if (index < worker[bufIndex].detailsInWednesday){
  189.             bestDay = "Среда";
  190.             index = worker[bufIndex].detailsInTuesday;
  191.         }
  192.         if (index < worker[bufIndex].detailsInThursday){
  193.             bestDay = "Четверг";
  194.             index = worker[bufIndex].detailsInThursday;
  195.         }
  196.         if (index < worker[bufIndex].detailsInFriday) {
  197.             bestDay = "Пятница";
  198.             index = worker[bufIndex].detailsInFriday;
  199.         }
  200.         if (index < worker[bufIndex].detailsInSaturday) {
  201.             bestDay = "Суббота";
  202.         }
  203.         return bestDay;
  204.     }
  205.  
  206.  
  207.     static void showBestWorker(Worker[] worker) throws IOException, ClassNotFoundException {
  208.         int maxPerformance;
  209.         String bestDay;
  210.         String bestWorkman;
  211.         int bufIndex;
  212.         maxPerformance = 0;
  213.         bufIndex = 0;
  214.         bestWorkman = "";
  215.         int[] arrayOfSumOfProducts = new int[worker.length];
  216.         arrayOfSumOfProducts = calculateSumOfProducts(arrayOfSumOfProducts, worker);
  217.         for (int i = 1; i < worker.length; ++i){
  218.             if ((arrayOfSumOfProducts[i-1] > arrayOfSumOfProducts[i]) && (arrayOfSumOfProducts[i-1] > maxPerformance)){
  219.                 bestWorkman = worker[i-1].name;
  220.                 maxPerformance = arrayOfSumOfProducts[i-1];
  221.                 bufIndex = i - 1;
  222.             }
  223.         }
  224.         bestDay = calculateBestDay(worker, bufIndex);
  225.         System.out.println("Сборщик-рекордсмен - " + bestWorkman + ". Он собрал " + maxPerformance + " деталей за неделю! День высшей производительности: "+ bestDay);
  226.         writeArrayOfRecords(worker);
  227.     }
  228.  
  229.     static void selectMenuOfOutputItem(int menuItem, Worker[] worker) throws IOException, ClassNotFoundException {
  230.         switch (menuItem) {
  231.             case 1 -> showWorkerAndDetailsOnWeek(worker);
  232.             case 2 -> showBestWorker(worker);
  233.             case 3 -> showMenu(worker);
  234.         }
  235.     }
  236.  
  237.     static void showMenuOfOutput(Worker[] worker) throws IOException, ClassNotFoundException {
  238.         System.out.println("Выберете один из пунктов меню для продолжения:");
  239.         System.out.println("1. Сборщик и детали за неделю.");
  240.         System.out.println("2. Сборщик-рекордсмен.");
  241.         System.out.println("3. Назад.");
  242.         int menuItem;
  243.         menuItem = readMenuOf4Item();
  244.         selectMenuOfOutputItem(menuItem, worker);
  245.     }
  246.  
  247.     static int readIndex(int maxIndex)
  248.     {
  249.         int index;
  250.         index = 0;
  251.         boolean IsNotCorrect;
  252.         do {
  253.             System.out.println("Введите индекс поля, с которым нужно совершить выбранное действие: ");
  254.             IsNotCorrect = false;
  255.             try {
  256.                 index = Integer.parseInt(scan.nextLine());
  257.             } catch (Exception e) {
  258.                 IsNotCorrect = true;
  259.                 System.out.println("Введите целое число!");
  260.             }
  261.             if ((((index < 1) || (index > maxIndex+1))) && !IsNotCorrect) {
  262.                 System.out.println("Индекс должен находится в преедлах от 0 до количество элементов записи!");
  263.                 IsNotCorrect = true;
  264.             }
  265.         } while (IsNotCorrect);
  266.         return index-1;
  267.     }
  268.  
  269.     static void changeRecordField(Worker[] worker) throws IOException, ClassNotFoundException {
  270.         int index;
  271.         index = readIndex(worker.length);
  272.         worker[index] = new Worker (getName(), getDetailsInSomeDay("понедельник"), getDetailsInSomeDay("вторник"), getDetailsInSomeDay("среду"), getDetailsInSomeDay("четверг"), getDetailsInSomeDay("пятницу"), getDetailsInSomeDay("субботу"));
  273.         writeArrayOfRecords(worker);
  274.     }
  275.  
  276.     static void addRecordField(Worker[] worker) throws IOException, ClassNotFoundException {
  277.         ArrayList<Worker> workerArrayList = new ArrayList<>();
  278.         Collections.addAll(workerArrayList, worker);
  279.         Worker workman = new Worker (getName(), getDetailsInSomeDay("понедельник"), getDetailsInSomeDay("вторник"), getDetailsInSomeDay("среду"), getDetailsInSomeDay("четверг"), getDetailsInSomeDay("пятницу"), getDetailsInSomeDay("субботу"));
  280.         workerArrayList.add(workman);
  281.         worker = workerArrayList.toArray(new Worker[workerArrayList.size()]);
  282.         writeArrayOfRecords(worker);
  283.     }
  284.  
  285.     static void deleteRecordField(Worker[] worker) throws IOException, ClassNotFoundException {
  286.         ArrayList<Worker> workerArrayList = new ArrayList<>();
  287.         Collections.addAll(workerArrayList, worker);
  288.         int index = readIndex(worker.length);
  289.         workerArrayList.remove(index);
  290.         worker = workerArrayList.toArray(new Worker[workerArrayList.size()]);
  291.         writeArrayOfRecords(worker);
  292.     }
  293.  
  294.     static boolean isChangeDataCorrect(int maxIndex, String path) throws IOException {
  295.         int index;
  296.         index = 0;
  297.         boolean isCorrect;
  298.         FileReader fread = new FileReader(path);
  299.         Scanner fscan = new Scanner(fread);
  300.         isCorrect = true;
  301.         while(fscan.hasNextLine() && isCorrect) {
  302.             try {
  303.                 index = Integer.parseInt(fscan.nextLine());
  304.             } catch (Exception e) {
  305.                 isCorrect = false;
  306.             }
  307.             if ((((index < 1) || (index > maxIndex + 1))) && isCorrect) {
  308.                 isCorrect = false;
  309.             }
  310.             fscan.nextLine();
  311.             int i = 0;
  312.             while (i < 6 && isCorrect) {
  313.                 try {
  314.                     index = Integer.parseInt(fscan.nextLine());
  315.                 } catch (Exception e) {
  316.                     isCorrect = false;
  317.                 }
  318.                 ++i;
  319.             }
  320.         }
  321.         fread.close();
  322.         return isCorrect;
  323.     }
  324.  
  325.     static void changeRecordFieldByFile(Worker[] worker) throws IOException, ClassNotFoundException {
  326.         int index;
  327.         String path = readPath();
  328.         if (isChangeDataCorrect(worker.length, path)) {
  329.             String nameOfWorker;
  330.             int quantityOfDetailsOnMonday;
  331.             int quantityOfDetailsOnTuesday;
  332.             int quantityOfDetailsOnWednesday;
  333.             int quantityOfDetailsOnThursday;
  334.             int quantityOfDetailsOnFriday;
  335.             int quantityOfDetailsOnSaturday;
  336.             FileReader fread = new FileReader(path);
  337.             Scanner fscan = new Scanner(fread);
  338.             while(fscan.hasNextLine()) {
  339.                 index = Integer.parseInt(fscan.nextLine());
  340.                 --index;
  341.                 nameOfWorker = fscan.nextLine();
  342.                 quantityOfDetailsOnMonday = Integer.parseInt(fscan.nextLine());
  343.                 quantityOfDetailsOnTuesday = Integer.parseInt(fscan.nextLine());
  344.                 quantityOfDetailsOnWednesday = Integer.parseInt(fscan.nextLine());
  345.                 quantityOfDetailsOnThursday = Integer.parseInt(fscan.nextLine());
  346.                 quantityOfDetailsOnFriday = Integer.parseInt(fscan.nextLine());
  347.                 quantityOfDetailsOnSaturday = Integer.parseInt(fscan.nextLine());
  348.                 worker[index] = new Worker(nameOfWorker, quantityOfDetailsOnMonday, quantityOfDetailsOnTuesday, quantityOfDetailsOnWednesday, quantityOfDetailsOnThursday, quantityOfDetailsOnFriday, quantityOfDetailsOnSaturday);
  349.             }
  350.             writeArrayOfRecords(worker);
  351.         }else{
  352.             System.out.println("Ошибка чтения! Проверьте файл!");
  353.         }
  354.         writeArrayOfRecords(worker);
  355.     }
  356.  
  357.     static boolean isAddDataCorrect(String path) throws IOException {
  358.         boolean isCorrect;
  359.         int i;
  360.         FileReader fread = new FileReader(path);
  361.         Scanner fscan = new Scanner(fread);
  362.         isCorrect = true;
  363.         while(fscan.hasNextLine() && isCorrect) {
  364.             fscan.nextLine();
  365.             i = 0;
  366.             while (i < 6 && isCorrect) {
  367.                 try {
  368.                     Integer.parseInt(fscan.nextLine());
  369.                 }catch (Exception e) {
  370.                     isCorrect = false;
  371.                 }
  372.                 ++i;
  373.             }
  374.         }
  375.         fread.close();
  376.         return isCorrect;
  377.     }
  378.  
  379.     static void addRecordFieldByFile(Worker[] worker) throws IOException, ClassNotFoundException {
  380.         String path = readPath();
  381.         if (isAddDataCorrect(path)) {
  382.             String nameOfWorker;
  383.             int quantityOfDetailsOnMonday;
  384.             int quantityOfDetailsOnTuesday;
  385.             int quantityOfDetailsOnWednesday;
  386.             int quantityOfDetailsOnThursday;
  387.             int quantityOfDetailsOnFriday;
  388.             int quantityOfDetailsOnSaturday;
  389.             FileReader fread = new FileReader(path);
  390.             Scanner fscan = new Scanner(fread);
  391.             ArrayList<Worker> workerArrayList = new ArrayList<>();
  392.             Collections.addAll(workerArrayList, worker);
  393.             while(fscan.hasNextLine()) {
  394.                 nameOfWorker = fscan.nextLine();
  395.                 quantityOfDetailsOnMonday = Integer.parseInt(fscan.nextLine());
  396.                 quantityOfDetailsOnTuesday = Integer.parseInt(fscan.nextLine());
  397.                 quantityOfDetailsOnWednesday = Integer.parseInt(fscan.nextLine());
  398.                 quantityOfDetailsOnThursday = Integer.parseInt(fscan.nextLine());
  399.                 quantityOfDetailsOnFriday = Integer.parseInt(fscan.nextLine());
  400.                 quantityOfDetailsOnSaturday = Integer.parseInt(fscan.nextLine());
  401.                 Worker workman = new Worker(nameOfWorker, quantityOfDetailsOnMonday, quantityOfDetailsOnTuesday, quantityOfDetailsOnWednesday, quantityOfDetailsOnThursday, quantityOfDetailsOnFriday, quantityOfDetailsOnSaturday);
  402.                 workerArrayList.add(workman);
  403.                 worker = workerArrayList.toArray(new Worker[workerArrayList.size()]);
  404.             }
  405.         }else{
  406.             System.out.println("Ошибка чтения! Проверьте файл!");
  407.         }
  408.             writeArrayOfRecords(worker);
  409.     }
  410.  
  411.     static boolean isDeleteDataCorrect(int maxIndex, String path) throws IOException {
  412.         boolean isCorrect;
  413.         int deleteIndex;
  414.         FileReader fread = new FileReader(path);
  415.         Scanner fscan = new Scanner(fread);
  416.         isCorrect = true;
  417.         deleteIndex = 0;
  418.         while(fscan.hasNextLine() && isCorrect) {
  419.             try {
  420.                 deleteIndex = Integer.parseInt(fscan.nextLine());
  421.             } catch (Exception e) {
  422.                 isCorrect = false;
  423.             }
  424.             if ((((deleteIndex < 1) || (deleteIndex > maxIndex+1))) && isCorrect)
  425.                 isCorrect = false;
  426.         }
  427.         fread.close();
  428.         return isCorrect;
  429.     }
  430.  
  431.     static void deleteRecordFieldByFile(Worker[] worker) throws IOException, ClassNotFoundException {
  432.         String path = readPath();
  433.         if (isDeleteDataCorrect(worker.length, path)) {
  434.             FileReader fread = new FileReader(path);
  435.             Scanner fscan = new Scanner(fread);
  436.             int deleteIndex;
  437.             int i;
  438.             ArrayList<Worker> workerArrayList = new ArrayList<>();
  439.             Collections.addAll(workerArrayList, worker);
  440.             i = 0;
  441.             while(fscan.hasNextLine()) {
  442.                 deleteIndex = Integer.parseInt(fscan.nextLine());
  443.                 if (i>0)
  444.                     deleteIndex = deleteIndex - i;
  445.                 workerArrayList.remove(deleteIndex-1);
  446.                 worker = workerArrayList.toArray(new Worker[workerArrayList.size()]);
  447.                 ++i;
  448.             }
  449.         }else {
  450.             System.out.println("Ошибка чтения! Проверьте файл!");
  451.         }
  452.         writeArrayOfRecords(worker);
  453.     }
  454.  
  455.     static void selectMenuOfChangingManuallyItem(int menuItem, Worker[] worker) throws IOException, ClassNotFoundException {
  456.         switch (menuItem) {
  457.             case 1 -> changeRecordField(worker);
  458.             case 2 -> addRecordField(worker);
  459.             case 3 -> deleteRecordField(worker);
  460.             case 4 -> showMenuOfChanging(worker);
  461.         }
  462.     }
  463.  
  464.     static void showMenuOfChangingManually(Worker[] worker) throws IOException, ClassNotFoundException {
  465.         int menuItem;
  466.         System.out.println("Выберете один из пунктов меню для продолжения:");
  467.         System.out.println("1. Изменить.");
  468.         System.out.println("2. Добавить.");
  469.         System.out.println("3. Удалить.");
  470.         System.out.println("4. Назад.");
  471.         menuItem = readMenuOf3Item();
  472.         selectMenuOfChangingManuallyItem(menuItem, worker);
  473.     }
  474.  
  475.     static void selectMenuOfChangingByFileItem(int menuItem, Worker[] worker) throws IOException, ClassNotFoundException {
  476.         switch (menuItem) {
  477.             case 1 -> changeRecordFieldByFile(worker);
  478.             case 2 -> addRecordFieldByFile(worker);
  479.             case 3 -> deleteRecordFieldByFile(worker);
  480.             case 4 -> showMenuOfChanging(worker);
  481.         }
  482.     }
  483.  
  484.     static void showMenuOfChangingByFile(Worker[] worker) throws IOException, ClassNotFoundException {
  485.         int menuItem;
  486.         System.out.println("Выберете один из пунктов меню для продолжения:");
  487.         System.out.println("1. Изменить.");
  488.         System.out.println("2. Добавить.");
  489.         System.out.println("3. Удалить.");
  490.         System.out.println("4. Назад.");
  491.         menuItem = readMenuOf4Item();
  492.         selectMenuOfChangingByFileItem(menuItem, worker);
  493.     }
  494.  
  495.     static void selectMenuOfChangingItem(int menuItem, Worker[] worker) throws IOException, ClassNotFoundException {
  496.         switch (menuItem) {
  497.             case 1 -> showMenuOfChangingManually(worker);
  498.             case 2 -> showMenuOfChangingByFile(worker);
  499.             case 3 -> showMenu(worker);
  500.         }
  501.     }
  502.  
  503.     static void showMenuOfChanging(Worker[] worker) throws IOException, ClassNotFoundException {
  504.         int menuItem;
  505.         System.out.println("Выберете один из пунктов меню для продолжения:");
  506.         System.out.println("1. Вручную.");
  507.         System.out.println("2. С помощью файла.");
  508.         System.out.println("3. Назад.");
  509.         menuItem = readMenuOf4Item();
  510.         selectMenuOfChangingItem(menuItem, worker);
  511.     }
  512.  
  513.     static void selectMenuItem(int menuItem, Worker[] worker) throws IOException, ClassNotFoundException {
  514.         switch (menuItem) {
  515.             case 1 -> showMenuOfOutput(worker);
  516.             case 2 -> showMenuOfChanging(worker);
  517.             case 3 -> writeArrayOfRecordsToFile(worker);
  518.             case 4 -> showMainMenu();
  519.         }
  520.     }
  521.  
  522.     static void showMenu(Worker[] bufRecord) throws IOException, ClassNotFoundException {
  523.         int menuItem;
  524.         System.out.println("Выберете один из пунктов меню для продолжения:");
  525.         System.out.println("1. Вывести.");
  526.         System.out.println("2. Корректировка записей.");
  527.         System.out.println("3. Сохранить таблицу в файл.");
  528.         System.out.println("4. Назад.");
  529.         menuItem = readMenuOf4Item();
  530.         selectMenuItem(menuItem, bufRecord);
  531.     }
  532.  
  533.     static void writeArrayOfRecords(Worker[] bufRecord) throws IOException, ClassNotFoundException {
  534.         System.out.println("№"+" "+"Фамилия"+" "+"Понедельник"+" "+"Вторник"+" "+"Среда"+" "+"Четверг"+" "+"Пятница"+" "+"Суббота");
  535.         for (int i = 0; i < bufRecord.length; ++i) {
  536.             System.out.println((i+1) +" "+bufRecord[i].name +"\t\t"+ bufRecord[i].detailsInMonday +"\t\t\t"+ bufRecord[i].detailsInTuesday +"\t\t"+ bufRecord[i].detailsInWednesday +"\t\t"+ bufRecord[i].detailsInThursday +"\t\t"+ bufRecord[i].detailsInFriday +"\t\t"+ bufRecord[i].detailsInSaturday);
  537.         }
  538.         showMenu(bufRecord);
  539.     }
  540.  
  541.     static int readMenuOf4Item() {
  542.         int menuItem;
  543.         boolean isNotCorrect;
  544.         menuItem = 0;
  545.         do {
  546.             isNotCorrect = false;
  547.             try {
  548.                 menuItem = Integer.parseInt(scan.nextLine());
  549.             } catch (Exception e) {
  550.                 System.out.println("Введите число!");
  551.                 isNotCorrect = true;
  552.             }
  553.             if ((menuItem != 1) && (menuItem != 2) && (menuItem != 3)&& (menuItem != 4)) {
  554.                 System.out.println("Введите одно из предложенных чисел!");
  555.                 isNotCorrect = true;
  556.             }
  557.         }while(isNotCorrect);
  558.         return menuItem;
  559.     }
  560.  
  561.     static void showMainMenu() throws IOException, ClassNotFoundException {
  562.         int menuItem;
  563.         do {
  564.             System.out.println("Выберете один из пунктов меню для продолжения:");
  565.             System.out.println("1. Загрузить запись из файла.");
  566.             System.out.println("2. Создать новую запись.");
  567.             System.out.println("3. О программе.");
  568.             System.out.println("4. Помощь.");
  569.             menuItem = readMenuOf4Item();
  570.             selectMainMenuItem(menuItem);
  571.         }while(menuItem == 3 || menuItem == 4);
  572.     }
  573.  
  574.     static void showInformationAboutProgram() {
  575.         System.out.println("Сведения о количестве изделий, собранных сборщиками цеха за неделю:");
  576.         System.out.println("- фамилия сборщика;");
  577.         System.out.println("- количество изделий, собираемых им ежедневно в течение шестидневной недели,");
  578.         System.out.println("т.е. раздельно - в понедельник, вторник и т.д.");
  579.         System.out.println("Вывести фамилию сборщика и общее количество деталей,");
  580.         System.out.println("собранное им за неделю,");
  581.         System.out.println("фамилию сборщика, собравшего наибольшее число изделий, и день,");
  582.         System.out.println("когда он достиг наивысшей производительности труда.");
  583.         System.out.println("В программе также реализованы следующие функции:");
  584.         System.out.println("•ввод записей;");
  585.         System.out.println("•корректировка записей;");
  586.         System.out.println("•удаление записей;");
  587.         System.out.println("•просмотр записей на экране.");
  588.         System.out.println();
  589.     }
  590.  
  591.     static void showHelpInfo(){
  592.         System.out.println("!Открывать можно только сохранённые ранее данной программой таблцы записей!");
  593.         System.out.println("Корректировка таблицы с помощью файла:");
  594.         System.out.println("Для изменения содержимого ячеек: Корректировка записей -> С помощью файла -> Изменить.");
  595.         System.out.println("(в файле должны содержаться(на каждой новой строчке):");
  596.         System.out.println("индекс изменяемой ячейки, новая фамилия и кол-во деталей за каждый день);");
  597.         System.out.println("Для добавления ячеек: Корректировка записей -> С помощью файла -> Добавить.");
  598.         System.out.println("(в файле должны содержаться(на каждой новой строчке): фамилия и кол-во деталей за каждый день);");
  599.         System.out.println("Для удаления(функция доступна для 2+ сборщиков) ячеек: Корректировка записей -> С помощью файла -> Удалить.");
  600.         System.out.println("(в файле должны содержаться(на каждой новой строчке):индекс удаляемой ячейки).");
  601.         System.out.println();
  602.     }
  603.  
  604.     static void selectMainMenuItem(int menuItem) throws IOException, ClassNotFoundException {
  605.         switch (menuItem) {
  606.             case 1 -> readArrayOfRecordsFromFile();
  607.             case 2 -> createArrayOfRecordsFromConsole();
  608.             case 3 -> showInformationAboutProgram();
  609.             case 4 -> showHelpInfo();
  610.         }
  611.     }
  612.  
  613.     public static void main(String[] args) throws IOException, ClassNotFoundException {
  614.         showMainMenu();
  615.     }
  616. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement