Программа запускается с одним из следующих наборов параметров: -u id productName price quantity -d id


Download 16.86 Kb.
Sana30.04.2023
Hajmi16.86 Kb.
#1407025
TuriПрограмма
Bog'liq
CRUD


МИНИСТЕРСТВО ПО РАЗВИТИЮ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И КОММУНИКАЦИЙ РЕСПУБЛИКИ УЗБЕКИСТАН

ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
ИМЕНИ МУХАММАД АЛ-ХОРАЗМИЙ

Введение в web-программирование


Тема: CRUD

Группа 230-21


Выполнил: Собиров С
Проверил: Арипова З


CRUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD

Программа запускается с одним из следующих наборов параметров:


-u id productName price quantity
-d id

Значения параметров:


где id - 8 символов

productName - название товара, 30 символов


price - цена, 8 символов
quantity - количество, 4 символа
-u - обновляет данные товара с заданным id
-d - производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):


id productName price quantity
Данные дополнены пробелами до их длины

Пример:
19847 Шорты пляжные синие 159.00 12


198479 Шорты пляжные черные с рисунко173.00 17
19847983 Куртка для сноубордистов, разм10173.991234

Требования:


1. Программа должна считать имя файла для операций CrUD с консоли.
2. При запуске программы без параметров список товаров должен остаться неизменным.
3. При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле.
4. При запуске программы с параметрами "-d id" строка товара с заданным id должна быть удалена из файла.
5. Созданные для файлов потоки должны быть закрыты.

Мое решение



public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
ArrayList<String> list = new ArrayList<>();
BufferedReader input = new BufferedReader(new FileReader(fileName));
while (input.ready()) {
list.add(input.readLine());
}
input.close();
Pattern pattern = Pattern.compile("\\d{1,8}");
switch (args[0]) {
case "-u":
int id = Integer.parseInt(args[1]);
for (String s : list) {
Matcher matcher = pattern.matcher(s.substring(0, 8));
matcher.find();
int listId = Integer.parseInt(matcher.group());
if (id == listId) {
int index = list.indexOf(s);
String newLine = String.format("%-8d%-30.30s%-8.8s%-4.4s", id, args[2], args[3], args[4]);
list.set(index, newLine);
break;
}
}
break;
case "-d":
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String product = iter.next();
if (product.startsWith(args[1]))
iter.remove();
}
break;
}
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (String s : list) {
System.out.println(s);
writer.write(s);
writer.newLine();
}
writer.close();
}
}
Download 16.86 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling