Advertisement
MaksNew

Untitled

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