Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.File;
- import java.io.PrintWriter;
- import java.util.Scanner;
- import java.util.ArrayList;
- import java.io.FileNotFoundException;
- public class Main {
- public static void main(String[] args) {
- ArrayList<Collector> collectors;
- boolean isNotCorrect;
- boolean isStart = true;
- boolean isEmpty;
- do {
- isNotCorrect = false;
- isEmpty = checkFileEmptiness();
- collectors = getDataFromFile();
- if ((collectors.size() == 0) && (!isEmpty)) {
- isNotCorrect = true;
- System.out.println("Исправьте ошибку и нажмите Enter для продолжения");
- sc.nextLine();
- }
- } while (isNotCorrect);
- userChoice(collectors);
- }
- static Scanner sc = new Scanner(System.in);
- static Scanner fileScan = null;
- static final String FILE_NAME = "labaDB.txt";
- static PrintWriter pWriter;
- static boolean checkFileEmptiness() {
- boolean isFileEmpty = false;
- File txtFile = new File(FILE_NAME);
- if (!txtFile.exists() || (txtFile.exists() && txtFile.length() == 0)) {
- try {
- if (txtFile.createNewFile()) {
- System.out.println("Файл \"" + FILE_NAME + "\" не найден.");
- System.out.println("Был создан новый пустой файл.");
- }
- try {
- pWriter = new PrintWriter(txtFile);
- pWriter.write("0");
- pWriter.println();
- pWriter.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- isFileEmpty = true;
- } catch (Exception e) {
- System.out.println("Ошибка! Что-то пошло не так.");
- }
- }
- try {
- fileScan = new Scanner(txtFile);
- int n = fileScan.nextInt();
- if (n == 0) {
- isFileEmpty = true;
- }
- fileScan = new Scanner(txtFile);
- } catch (FileNotFoundException e) {
- }
- return (isFileEmpty);
- }
- static void findNumber(ArrayList<Collector> collectors) {
- System.out.println("Введите фамилию клиента: ");
- String surname = sc.nextLine();
- boolean flag = true;
- for (int i = 0; i < collectors.size(); i++) {
- if (collectors.get(i).getSurname().toUpperCase().equals(surname.toUpperCase())) {
- System.out.println("Номер клиента " + collectors.get(i).getSurname() + " : " + collectors.get(i).getNumberInList());
- flag = false;
- }
- }
- if (flag) {
- System.out.println("Клиент с такой фамилией не найден!");
- }
- System.out.println("Нажмите Enter для продолжения");
- sc.nextLine();
- }
- static void findMaxProd(ArrayList<Collector> collectors) {
- int maxValue = Integer.MIN_VALUE;
- int index = 0;
- int indexOfDay = 0;
- String dayOfWeek = "";
- for (int i = 0; i < collectors.size(); i++) {
- if (collectors.get(i).getCollected() > maxValue) {
- maxValue = collectors.get(i).getCollected();
- index = i;
- }
- }
- maxValue = Integer.MIN_VALUE;
- for (int i = 0; i < 6; i++) {
- if (collectors.get(index).getDailyCollect(i) > maxValue) {
- maxValue = collectors.get(index).getDailyCollect(i);
- indexOfDay = i;
- }
- }
- switch (indexOfDay) {
- case 0:
- dayOfWeek = "понедельник";
- break;
- case 1:
- dayOfWeek = "вторник";
- break;
- case 2:
- dayOfWeek = "среду";
- break;
- case 3:
- dayOfWeek = "четверг";
- break;
- case 4:
- dayOfWeek = "пятницу";
- break;
- case 5:
- dayOfWeek = "субботу";
- break;
- }
- System.out.println("Фомилия сборщика: " + collectors.get(index).getSurname());
- System.out.println("В " + dayOfWeek + " он собрал наибольшее кол-во делаей = " + collectors.get(index).getDailyCollect(indexOfDay));
- System.out.println("Нажмите Enter для продолжения");
- sc.nextLine();
- }
- static void showInfo() {
- System.out.printf("Данная программа разработана студентом гр. 951007 Майским Владиславом\n" +
- "Чтобы загрузить в программу данные из файла, данные в файле должны бытьпредставлены в виде :\n" +
- "Кол-во записей\n" +
- "Фамилия\n" +
- "Ежедневный сбор за 6 рабочих дней через пробел\n");
- System.out.println("Нажмите Enter для продолжения");
- sc.nextLine();
- }
- static String getSurnameFromConsole() {
- String surname = "";
- boolean isCorrect;
- do {
- isCorrect = true;
- System.out.println("Введите фамилию:");
- surname = sc.nextLine();
- if (surname.length() > 15 || !Character.isUpperCase(surname.charAt(0))) {
- isCorrect = false;
- System.out.println("Некорректный ввод");
- } else {
- for (int j = 1; j < surname.length(); j++) {
- if (!Character.isLetter(surname.charAt(j))) {
- isCorrect = false;
- System.out.println("Некорректный ввод.");
- }
- }
- }
- } while (!isCorrect);
- return surname;
- }
- static int[] getDailyCollectFromConsole() {
- int[] dailyCollect = new int[6];
- boolean isCorrect;
- do {
- System.out.println("Введите ежедневный сбор за 6-ти рабочую неделю через пробел");
- isCorrect = true;
- String[] data = sc.nextLine().split(" ");
- if (data.length != 6) {
- isCorrect = false;
- } else {
- for (int j = 0; j < data.length && isCorrect; j++) {
- try {
- dailyCollect[j] = Integer.parseInt(data[j]);
- } catch (NumberFormatException e) {
- isCorrect = false;
- }
- if (dailyCollect[j] < 0 || dailyCollect[j] > 300) {
- isCorrect = false;
- }
- }
- }
- if (!isCorrect) {
- System.out.println("Некорректный ввод");
- }
- } while (!isCorrect);
- return dailyCollect;
- }
- static void editCollectorRecord(ArrayList<Collector> collectors) {
- showDataBase(collectors);
- int line = 0;
- boolean isCorrect;
- do {
- isCorrect = false;
- try {
- System.out.println("Введите номер сборщика, запись о котором вы хотите изменить: ");
- line = sc.nextInt();
- isCorrect = true;
- sc.nextLine();
- } catch (Exception e) {
- System.out.println("Некорректный ввод!");
- sc.nextLine();
- }
- if (isCorrect) {
- if ((line < 1) || (line > collectors.size())) {
- System.out.println("Сборщика с таким номер нет");
- isCorrect = false;
- }
- }
- } while (!isCorrect);
- isCorrect = false;
- System.out.println("Если Вы хотите изменить Фамилию - введите \"surname\".\n" +
- "Если Вы хотите изменить ежедневный сбор - введите \"collect\".\n" +
- "Если Вы хотите изменить все данные - введите \"all\".\n");
- do {
- isCorrect = true;
- String answer = sc.nextLine();
- switch (answer.toUpperCase()) {
- case "SURNAME":
- collectors.get(--line).setSurname(getSurnameFromConsole());
- break;
- case "COLLECT":
- collectors.get(--line).setDailyCollect(getDailyCollectFromConsole());
- break;
- case "ALL":
- collectors.get(--line).setSurname(getSurnameFromConsole());
- collectors.get(line).setDailyCollect(getDailyCollectFromConsole());
- break;
- default:
- System.out.println("Попробуйте еще раз");
- isCorrect = false;
- break;
- }
- } while (!isCorrect);
- System.out.println("Успешно отредактировано");
- System.out.println("Нажмите Enter для продолжения");
- sc.nextLine();
- }
- static void addCollector(ArrayList<Collector> collectors) {
- String surname = getSurnameFromConsole();
- int[] dailyCollecet = getDailyCollectFromConsole();
- collectors.add(new Collector(collectors.size() + 1, surname, dailyCollecet));
- System.out.println("Новый сборщик успешно добавлен\nНажмите Enter для проджолжения");
- sc.nextLine();
- }
- private static void saveDataToFile(ArrayList<Collector> collectors) {
- pWriter = null;
- File file = new File(FILE_NAME);
- try {
- pWriter = new PrintWriter(file);
- pWriter.write(Integer.toString(collectors.size()));
- pWriter.println();
- for (Collector collector : collectors) {
- pWriter.write(collector.getSurname());
- pWriter.println();
- for (int i = 0; i < 6; i++) {
- pWriter.write(collector.getDailyCollect(i) + " ");
- }
- pWriter.println();
- }
- } catch (Exception e) {
- System.out.println("Ошибка сохранения данных!");
- }
- pWriter.close();
- System.out.println("Данные были сохранены.");
- }
- static void userChoice(ArrayList<Collector> collectors) {
- boolean flag = true;
- String choice = "";
- do {
- System.out.println("Если Вы хотите добавить сборщика - введите \"add\".\n" +
- "Если Вы хотите редактировать данные - введите \"edit\".\n" +
- "Если Вы хотите удалить сборщика - введите \"delete\".\n" +
- "Если Вы хотите просмотреть базу данных - введите \"show\".\n" +
- "Если Вы хотите узнать номер сборщика по его фамилии - введите \"find\".\n" +
- "Если Вы хотите узнать фамилию сборщика, собравшего наибольшее число изделий- введите. \"max\".\n" +
- "Если Вы хотите получить справку о программе - введите \"info\".\n" +
- "Если Вы хотите выйти из программы - введите \"exit\".");
- choice = sc.nextLine();
- switch (choice.toUpperCase()) {
- case ("ADD"):
- addCollector(collectors);
- break;
- case ("SHOW"):
- showDataBase(collectors);
- System.out.println("Нажмите Enter чтобы продолжить");
- sc.nextLine();
- break;
- case ("EDIT"):
- editCollectorRecord(collectors);
- break;
- case ("DELETE"):
- removeCollector(collectors);
- break;
- case ("FIND"):
- findNumber(collectors);
- break;
- case ("MAX"):
- findMaxProd(collectors);
- break;
- case ("INFO"):
- showInfo();
- break;
- case ("EXIT"):
- saveDataToFile(collectors);
- flag = false;
- break;
- default:
- System.out.println("Попробуйте снова");
- }
- } while (flag);
- }
- static void showDataBase(ArrayList<Collector> dataBase) {
- System.out.printf("%4s | %15s | %20s | %5s | %5s | %5s | %5s | %5s | %5s", "№", "Фамилия", "Количество изделий", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat\n");
- for (Collector collector : dataBase) {
- System.out.printf("%4s | %15s | %20s | %5s | %5s | %5s | %5s | %5s | " +
- "%5s", collector.getNumberInList(), collector.getSurname(), collector.getCollected(), collector.getDailyCollect(0), collector.getDailyCollect(1), collector.getDailyCollect(2), collector.getDailyCollect(3), collector.getDailyCollect(4), collector.getDailyCollect(5));
- System.out.println();
- }
- System.out.println();
- }
- static ArrayList<Collector> getDataFromFile() {
- ArrayList<Collector> collectors = new ArrayList<>();
- int[] dailyCollect;
- int amountOfUsers = 0;
- boolean isCorrect;
- try {
- amountOfUsers = fileScan.nextInt();
- isCorrect = true;
- } catch (Exception e) {
- System.out.println("Файл содержит некорректные данные!");
- isCorrect = false;
- }
- fileScan.nextLine();
- if ((isCorrect) && (amountOfUsers != 0)) {
- try {
- for (int i = 0; i < amountOfUsers && isCorrect; i++) {
- dailyCollect = new int[6];
- String surname = fileScan.nextLine();
- if (surname.length() > 15 || !Character.isUpperCase(surname.charAt(0))) {
- isCorrect = false;
- } else {
- for (int j = 1; j < surname.length(); j++) {
- if (!Character.isLetter(surname.charAt(j))) {
- isCorrect = false;
- }
- }
- String[] fileData = fileScan.nextLine().split(" ");
- if (fileData.length != 6) {
- isCorrect = false;
- } else {
- for (int j = 0; j < fileData.length && isCorrect; j++) {
- try {
- dailyCollect[j] = Integer.parseInt(fileData[j]);
- } catch (NumberFormatException e) {
- isCorrect = false;
- }
- if (dailyCollect[j] < 0 || dailyCollect[j] > 300) {
- isCorrect = false;
- }
- }
- }
- }
- if (isCorrect) {
- collectors.add(new Collector((i + 1), surname, dailyCollect));
- } else {
- System.out.println("Файл содержит некорректные данные!");
- }
- }
- } catch (Exception e) {
- System.out.println("Файл содержит некорректные данные!");
- isCorrect = false;
- }
- }
- if (isCorrect) {
- System.out.println("Данные успешно загружены.");
- } else {
- collectors.clear();
- }
- return collectors;
- }
- static ArrayList<Collector> removeCollector(ArrayList<Collector> collectors) {
- showDataBase(collectors);
- int line = 0;
- boolean isNotCorrect;
- do {
- isNotCorrect = true;
- try {
- System.out.println("Введите номер сборщика, запись о котором хотите удалить: ");
- line = sc.nextInt();
- isNotCorrect = false;
- sc.nextLine();
- } catch (Exception e) {
- System.out.println("Некорректный ввод!");
- sc.nextLine();
- }
- if (!isNotCorrect) {
- if ((line < 1) || (line > collectors.size())) {
- System.out.println("Сборщика с таким номер нет");
- isNotCorrect = true;
- }
- }
- } while (isNotCorrect);
- collectors.remove(--line);
- for (int i = line; i < collectors.size(); i++) {
- collectors.get(i).setNumberInList(i + 1);
- }
- System.out.println("Запись удалена!\n");
- return (collectors);
- }
- }
- class Collector {
- private String surname;
- private int[] dailyCollect;
- private int collected;
- private int numberInList;
- Collector(int numberInList, String surname, int[] dailyCollect) {
- int sum = 0;
- for (int i : dailyCollect) {
- sum += i;
- }
- this.collected = sum;
- this.numberInList = numberInList;
- this.surname = surname;
- this.dailyCollect = dailyCollect;
- }
- public void setSurname(String surname) {
- this.surname = surname;
- }
- public void setDailyCollect(int[] dailyCollect) {
- int sum = 0;
- for (int i : dailyCollect) {
- sum += i;
- }
- collected = sum;
- this.dailyCollect = dailyCollect;
- }
- public void setNumberInList(int numberInList) {
- this.numberInList = numberInList;
- }
- public String getSurname() {
- return surname;
- }
- public int getDailyCollect(int i) {
- return dailyCollect[i];
- }
- public int getCollected() {
- return collected;
- }
- public int getNumberInList() {
- return numberInList;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement