Skip to content

Commit 6ae1225

Browse files
committed
added unit 4
1 parent aaf4e65 commit 6ae1225

File tree

7 files changed

+370
-0
lines changed

7 files changed

+370
-0
lines changed

HomeWork/src/Work02/MainUnit04.java

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package Work02;
2+
3+
import java.io.IOException;
4+
import java.util.Scanner;
5+
6+
7+
import static Work02.Unit04.Main.*;
8+
9+
public class MainUnit04 {
10+
11+
private static int userIntegerInput(String msg) {
12+
Scanner sc = new Scanner(System.in);
13+
int inputStr;
14+
while (true) {
15+
System.out.print(msg);
16+
try {
17+
inputStr = Integer.parseInt(sc.next());
18+
break;
19+
} catch (NumberFormatException e) {
20+
System.out.println(red + "Неверный ввод! Введите целое число!" + reset);
21+
}
22+
}
23+
return inputStr;
24+
}
25+
26+
public static void itemSelect() throws IOException { // Метод выбора по параметрам
27+
System.out.println(yellow + """
28+
\n1) Команда - "1" запускает выполнение Урок 4, задача № 1;
29+
1) Команда - "2" запускает выполнение Урок ?, задача № ?;
30+
3) Команда - "0" запускает выхода в предыдущее меню.
31+
32+
Введите выбранную команду:""" + reset);
33+
34+
int checkExit = 3;
35+
while (checkExit != 0) {
36+
checkExit = userIntegerInput("\nВведите номер команды. Для выхода в предыдущее меню нажмите 0.\nВвод: ");
37+
switch (checkExit) {
38+
case 1 -> {
39+
System.out.println("\nВыполнение: Урок 4, Задание №1 ... ");
40+
mainTask04();
41+
}
42+
case 2 -> {
43+
//System.out.println("\nВыполнение: Урок 2, Задание №2 ... ");
44+
System.out.println("\nТут пусто. В уроке было только одна задача");
45+
46+
}
47+
}
48+
System.out.println(yellow + "\nВыполненеие завершено." + reset);
49+
}
50+
}
51+
52+
public static void getAllItems() { // Выводит текстом какие задачи есть
53+
System.out.println(red + "\n\tUnit 4, Задание 1.\n" + reset);
54+
System.out.println("""
55+
Урок 4. ООП: Обобщения. ч1
56+
С учетом информации полученной ранее знакомимся с параметрическим полиморфизмом и продолжаем погружаться в ООП.
57+
Спроектировать и реализовать планировщик дел для работы с задачами разных приоритетов.
58+
59+
Например:
60+
определить уровень приоритетов: низкий, средний, немедленное выполнение
61+
выделить компоненту для хранения данных
62+
выделить компоненту для организации импорта\\экспорта данных
63+
Файл должен содержать следующие данные: id, дату добавления записи, время добавления записи, дедлай задачи, ФИО автора,
64+
данные хранятся в файле csv/jsom/xml
65+
другие компоненты
66+
""");
67+
System.out.println(red + "\n\tUnit ?, Задание ?.\n" + reset);
68+
System.out.println("""
69+
Условие задачи пустое.
70+
""");
71+
}
72+
73+
public static void main(String[] args) throws IOException {
74+
int checkExit = 3;
75+
while (checkExit != 0) {
76+
System.out.println(cyan + """
77+
\n
78+
1) Команда - "1" запускает меню с выбором выполнения задач;
79+
2) Команда - "2" запускает отображение текста задач и их нумерацию;
80+
3) Команда - "0" запускает выход и завершение программы.
81+
""" + reset);
82+
checkExit = userIntegerInput("""
83+
Введите номер действия. Для выхода нажмите 0. \nВвод:\s
84+
""");
85+
switch (checkExit) {
86+
case 1 -> itemSelect();
87+
case 2 -> getAllItems();
88+
}
89+
}
90+
System.out.println("""
91+
1) Команда - "1" запускает меню с выбором выполнения задач;
92+
2) Команда - "2" запускает отображение текста задач и их нумерацию;
93+
3) Команда - "0" запускает выход и завершение программы.
94+
95+
Введите выбранную команду:""");
96+
97+
}
98+
99+
public static final String reset = "\u001B[0m";
100+
public static final String red = "\u001B[31m";
101+
public static final String yellow = "\u001B[33m";
102+
public static final String cyan = "\u001B[36m";
103+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package Work02.Unit04;
2+
3+
import java.io.FileWriter;
4+
import java.io.IOException;
5+
import java.nio.charset.StandardCharsets;
6+
import java.text.SimpleDateFormat;
7+
import java.util.ArrayList;
8+
import java.util.Date;
9+
import java.util.Scanner;
10+
11+
public class AddTask {
12+
13+
int maxID = 0;
14+
String addInfo = "";
15+
16+
public AddTask() {
17+
18+
}
19+
20+
// метод добавления строки в планер в файл csv
21+
public void writeInPlaner() throws IOException {
22+
23+
FileWriter addTask = new FileWriter("C:\\Users\\sivvi\\Java\\Example_Java\\HomeWork\\src\\Work02\\Unit04\\Data\\planer.csv", true);
24+
25+
String addInfo = addInfo();
26+
27+
addTask.append(addInfo);
28+
addTask.append("\n");
29+
addTask.close();
30+
31+
}
32+
33+
// метод формирования строки с задачей для добавления в csv файл
34+
public String addInfo() throws IOException {
35+
36+
int id = maxID();
37+
38+
// проставили ID, предварительно узнав крайний ID в планере
39+
addInfo = addInfo + (id + 1) + ";";
40+
41+
// добавили текущую дату и время
42+
Date date = new Date();
43+
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm");
44+
String nowDate = formatter.format(date);
45+
addInfo = addInfo + nowDate + ";";
46+
47+
Scanner in = new Scanner(System.in, StandardCharsets.UTF_8);
48+
49+
System.out.println("Введите фамилию автора проекта:");
50+
addInfo = addInfo + in.nextLine() + ";";
51+
52+
System.out.println("Введте дедлайн в формате дд-мм-гггг:");
53+
addInfo = addInfo + in.nextLine() + ";";
54+
55+
System.out.println("Кратко опишите задачу:");
56+
addInfo = addInfo + in.nextLine() + ";";
57+
58+
System.out.println("Введите приоритет задачи (1 - не срочная, 2 - средняя, 3 - срочная):");
59+
addInfo = addInfo + in.nextLine();
60+
61+
return addInfo;
62+
}
63+
64+
// метод поиска максимального ID в существующем планере
65+
public int maxID() throws IOException {
66+
PrintPlaner printPlaner = new PrintPlaner();
67+
ArrayList<String[]> planerSplite = printPlaner.planerSplite(printPlaner.planerArrayList());
68+
String[] temp0 = planerSplite.get(0);
69+
maxID = Integer.parseInt(temp0[0]);
70+
for (int i = 0; i < planerSplite.size(); i++) {
71+
String[] temp = planerSplite.get(i);
72+
73+
if (Integer.parseInt(temp[0]) > maxID) {
74+
maxID = Integer.parseInt(temp[0]);
75+
}
76+
}
77+
return maxID;
78+
}
79+
80+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
1;11-03-2023 12:00;Иванов;09-05-2023;Заплатить коммуналку;1
2+
2;11-03-2023 13:00;Иванович;03-07-2023;Купить подарок;3
3+
3;12-03-2023 14:00;ИванИван;01-01-2023;Встреча с друзьми;3
4+
4;12-03-2023 14:15;Тест;12-03-2023;Убраться дома;1
5+
5;13-03-2023 18:15;Виктор;24-01-2023;Позвонить заказчику;2
6+
6;13-03-2023 18:22;Тест2;15-12-2023;Сходить на каток;1
7+
7;13-03-2023 18:31;Проверка;14-03-2023;Съездить в отпуск;3
8+
8;14-03-2023 19:03;ДР;20-04-2023;Поздравить с др;
9+
9;14-03-2023 15:16;testing;20-02-2023;test padding;3
10+
10;14-03-2023 15:19;Testingtest;20-02-2023;test file;3
11+
11;14-03-2023 15:31;╨Я╨╡╤В╤А╨╛╨▓╨╕╤З;14-03-2023;╨Я╨╛╤А╨░ ╤Б╨┤╨░╨▓╨░╤В╤М ╨╖╨░╨┤╨░╤З╤Г;3
12+
12;14-03-2023 15:37;Тестим;14-03-2023;тестим кодировку;2
13+
13;14-03-2023 15:38;тестим;14-03-2023;тестим кодировку;3

HomeWork/src/Work02/Unit04/Main.java

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package Work02.Unit04;
2+
3+
import java.io.IOException;
4+
import java.util.ArrayList;
5+
import java.util.Scanner;
6+
7+
public class Main {
8+
/**
9+
* Задание 4
10+
* С учетом информации полученной ранее знакомимся с параметрическим полиморфизмом и продолжаем погружаться в ООП.
11+
* Спроектировать и реализовать планировщик дел для работы с задачами разных приоритетов.
12+
* <p>
13+
* Например:
14+
* определить уровень приоритетов: низкий, средний, немедленное выполнение
15+
* выделить компоненту для хранения данных
16+
* выделить компоненту для организации импорта\экспорта данных
17+
* Файл должен содержать следующие данные: id, дату добавления записи, время добавления записи, дедлай задачи, ФИО автора,
18+
* данные хранятся в файле csv/jsom/xml
19+
* другие компоненты
20+
**/
21+
public static void mainTask04() throws IOException {
22+
23+
// создал объект класса PrintPlaner
24+
// отвечает за форматирование файла csv и вывод в консоль планера
25+
PrintPlaner printPlaner = new PrintPlaner();
26+
ArrayList<String> planer = printPlaner.planerArrayList();
27+
ArrayList<String[]> planerSplite = printPlaner.planerSplite(planer);
28+
29+
// создал объект класса PrintTaskInPlaner
30+
// отвечает за вывод задач определенного уровня
31+
PrintTaskInPlaner printTaskInPlaner = new PrintTaskInPlaner(planerSplite);
32+
33+
// создал объект класса AddTask
34+
// отвечает за добавление задачи в csv файл
35+
AddTask addTask = new AddTask();
36+
37+
// создал объект класса Talking
38+
// отвечает за прием данных от пользователя
39+
Talking ask = new Talking();
40+
41+
Scanner in = new Scanner(System.in);
42+
43+
// вывел на экран первый диалог
44+
ask.firstQuestion();
45+
46+
// считал, что ввел пользователь
47+
int chois = in.nextInt();
48+
if (chois == 1) { // "1. Распечатать планер"
49+
printPlaner.printPlaner(planerSplite);
50+
} else if (chois == 2) { // "2. Вывести на экран задачи с определённым уровнем приоритета"
51+
52+
// вопрос о том, какого уровня задачи нужно вывести
53+
ask.choisTask();
54+
int choisTask = in.nextInt();
55+
// запустил метод в классе PrintTaskInPlaner,
56+
// отвечающий за вывод зада определенного уровня
57+
printTaskInPlaner.printTask(choisTask);
58+
59+
} else if (chois == 3) { // "3. Добавить задачу в планер"
60+
addTask.writeInPlaner();
61+
62+
} else
63+
System.out.println("Выш выбор непонятен");
64+
}
65+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package Work02.Unit04;
2+
3+
import java.io.FileReader;
4+
import java.io.IOException;
5+
import java.util.ArrayList;
6+
import java.util.Scanner;
7+
8+
public class PrintPlaner {
9+
10+
ArrayList<String> planer = new ArrayList<>();
11+
ArrayList<String[]> planerSplite = new ArrayList<>();
12+
private Scanner file;
13+
14+
public PrintPlaner() {
15+
16+
}
17+
18+
// метод переброса csv файла в ArrayList
19+
public ArrayList<String> planerArrayList() throws IOException {
20+
FileReader inFile = new FileReader("C:\\Users\\sivvi\\Java\\Example_Java\\HomeWork\\src\\Work02\\Unit04\\Data\\planer.csv");
21+
file = new Scanner(inFile);
22+
23+
while (file.hasNextLine()) {
24+
String line = file.nextLine();
25+
planer.add(line);
26+
}
27+
28+
return planer;
29+
30+
}
31+
32+
// метод преобразования базы из ArrayList<String> в ArrayList <String[]>
33+
public ArrayList<String[]> planerSplite(ArrayList<String> planer) {
34+
for (String element : planer) {
35+
36+
String[] lineTemp = element.split(";");
37+
planerSplite.add(lineTemp);
38+
39+
}
40+
return planerSplite;
41+
}
42+
43+
// метод печати планера
44+
public void printPlaner(ArrayList<String[]> planerSplite) {
45+
for (String[] element : planerSplite) {
46+
47+
for (int i = 0; i < element.length; i++) {
48+
System.out.print(element[i] + " ");
49+
}
50+
System.out.print("\n");
51+
}
52+
}
53+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package Work02.Unit04;
2+
3+
import java.util.ArrayList;
4+
5+
public class PrintTaskInPlaner {
6+
private ArrayList<String[]> planerSplite;
7+
8+
public PrintTaskInPlaner(ArrayList<String[]> planerSplite) {
9+
this.planerSplite = planerSplite;
10+
}
11+
12+
// метод печати задач с определенным приоритетом
13+
public void printTask(int prioritet) {
14+
15+
for (String[] element : planerSplite) {
16+
if (prioritet == 1 && element[5].equals("1")) {
17+
for (int i = 0; i < element.length; i++) {
18+
System.out.print(element[i] + " ");
19+
}
20+
System.out.print("\n");
21+
} else if (prioritet == 2 && element[5].equals("2")) {
22+
for (int i = 0; i < element.length; i++) {
23+
System.out.print(element[i] + " ");
24+
}
25+
System.out.print("\n");
26+
} else if (prioritet == 3 && element[5].equals("3")) {
27+
for (int i = 0; i < element.length; i++) {
28+
System.out.print(element[i] + " ");
29+
}
30+
System.out.print("\n");
31+
}
32+
}
33+
34+
}
35+
36+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package Work02.Unit04;
2+
3+
public class Talking {
4+
5+
public void firstQuestion() {
6+
System.out.println("Что вы хотите сделать?\n"
7+
+ "1. Распечатать планер\n"
8+
+ "2. Вывести на экран задачи с определнным уровнем приоритета\n"
9+
+ "3. Добавить задачу в планер\n"
10+
+ "Введите выбранное вами действие:");
11+
12+
}
13+
14+
public void choisTask() {
15+
System.out.println("Выберите, задачу какого приоритера вы хотите вывести на экран:\n"
16+
+ "1 - не срочная; 2 - средняя; 3 - срочная\n"
17+
+ "Введите выбранный параметр: ");
18+
}
19+
20+
}

0 commit comments

Comments
 (0)