Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413

Пример работы кафе

15.02.2016, 01:51. Показов 7094. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, форумчане!
Помогите пожалуйста начинающему, как лучше описать работу кафе (консольное приложение), в частности момент приёма заказа и вывод его в консоль, т.е. пользователь вводит данные заказа в консоли (3-5 блюд и колличество), по окончании ввода выводится заказ в консоль.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.02.2016, 01:51
Ответы с готовыми решениями:

Покажите пример работы с хранимыми процедурами
Есть БД с процедурами. Покажите пару примеров по их вызову и получению от них данных. А то искать задолбался. Вызвать без проблем, а как...

Нужен пример работы JDB и JTable
Доброго дня! Есть два класса и одна GUI форма. Помощь нужна с примером. Как получить данные из класса, который получает данные из БД...

Пример работы с Oracle Database
Разрабатываю десктопное приложение на Java, которое работает с БД Oracle (Oracle Database 11g Express Edition). Скиньте, пожалуйста,...

11
53 / 53 / 39
Регистрация: 05.12.2010
Сообщений: 261
15.02.2016, 10:02
Что значит как? Ручками. Опиши класс кафе сначала, сделай gui, если надо.
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
15.02.2016, 10:49  [ТС]
Цитата Сообщение от megastriker Посмотреть сообщение
Что значит как? Ручками. Опиши класс кафе сначала, сделай gui, если надо.
GUI не требуется, просто ввод с консоли с сохранением в список, затем вывод этого списка в консоль, если можно пример кода
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
15.02.2016, 11:06
Надо ввести DONE, чтобы программа начала выводит всё то, что ввёл пользователь.
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class Cafe {
    Cafe() {
        List<String> dishList = new ArrayList<String>();
        Scanner sc = new Scanner(System.in);
        System.out.println("Input dish. Type DONE to complete your choice.");
        while (sc.hasNext()) {
            String value = sc.nextLine();
            if ("DONE".equalsIgnoreCase(value)) {
                break;
            }
            dishList.add(value);
        }
        System.out.println("Your choices:");
        for (String dish : dishList) {
            System.out.println(dish);
        }
    }
 
    public static void main(String[] args) {
        new Cafe();
    }
}
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
15.02.2016, 11:22  [ТС]
Цитата Сообщение от Doctor_ Посмотреть сообщение
Надо ввести DONE, чтобы программа начала выводит всё то, что ввёл пользователь.
Спасибо Doctor_, а как хранить предопределённое меню, чтобы пользователь выбирал из того что есть и колличество
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
15.02.2016, 11:27
А давайте вы напишите все условия которые должны быть. А то вы будете сейчас каждый раз что-то новое просить..
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
15.02.2016, 14:03  [ТС]
Одно из заданий:

- написать консольное приложение, для формирования заказа салата.

Основной функционал:
- выбор размера порции;
- выбор ингредиента и его количества;
- ингредиентов может быть выбрано несколько (например, сыр - 2, колбаса - 1, перец - 3);
- ингредиенты можно выбирать в произвольном порядке
- при повторном выборе одного и того же ингредиента складывать (или вычитать) его количество (по сути - редактирование);
- выдача заказа (вывести на экран заказанный салат).

Обязательные требования:
- использовать коллекции для хранения имеющихся на складе ингредиентов и их количества;
- запасы ингредиентов не должны уходить в минус;
- печать справки по команде "?" или "help".

Дополнительный функционал:
- печать справки в случае ошибочных действий пользователя.

Дополнительные требования:
- гибкость и расширяемость: предусмотреть возможность смены источника данных для ингредиентов (вместо коллекций может оказаться файл или база данных)
- применять паттерны проектирования (намёк на компоновку, DAO и т.д.)

Добавлено через 15 минут
Цитата Сообщение от Doctor_ Посмотреть сообщение
А давайте вы напишите все условия которые должны быть. А то вы будете сейчас каждый раз что-то новое просить..
Ну собственно вот

Добавлено через 2 часа 11 минут
Задачка сложноватая попалась...
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
15.02.2016, 14:07
Задача объемная, а сложного как раз ничего нет.
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
15.02.2016, 14:24  [ТС]
Цитата Сообщение от korshun84 Посмотреть сообщение
Задача объемная, а сложного как раз ничего нет.
Это так и есть, но я бы хотел увидеть примеры кода на хранение ингредиентов на складе, и вычитание их при совершённом заказе, ввод и вывод у меня есть
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
15.02.2016, 17:50
Цитата Сообщение от Alex_trader Посмотреть сообщение
я бы хотел увидеть примеры кода на хранение ингредиентов на складе
C коллекциями знакомы ?
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
15.02.2016, 19:17
Лучший ответ Сообщение было отмечено Alex_trader как решение

Решение

Ну что-то типа
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
package cafe;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        // считываем всё что у нас есть в файле
        Map<String, Integer> storageMap = new LinkedHashMap<String, Integer>();
        getStorageData(storageMap);
        Map<String, Integer> saladMap = new LinkedHashMap<String, Integer>();
        if (storageMap.isEmpty()) {
            System.out.println(Constants.EMPTY_STORAGE);
            return;
        }
        // выводим все продукты, которые у нас есть на складе
        printIngredients(Constants.AVAILABLE_INGREDIENTS, storageMap);
        showHowTo();
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String value = sc.nextLine();
            if ("q".equalsIgnoreCase(value)) {
                System.exit(0);
            }
            if ("DONE".equalsIgnoreCase(value)) {
                break;
            }
            processInput(value, storageMap, saladMap);
 
            if (!saladMap.isEmpty()) {
                System.out.println(Constants.REMOVE);
            }
        }
        printIngredients(Constants.YOUR_SALAD_END, saladMap);
    }
 
    /**
     * Метод показывает HOW TO тексты.
     */
    private static void showHowTo() {
        System.out.println(Constants.HOW_TO_CHOOSE);
        System.out.println(Constants.HOW_TO_EXIT);
        System.out.println(Constants.HOW_TO_FINISH);
    }
 
    /**
     * Метод, для обработки ввода пользователя.
     * 
     * @param saladMap2
     */
    private static void processInput(String value,
            Map<String, Integer> storageMap, Map<String, Integer> saladMap) {
        String[] splittedValue = value.split(" ");
        if (splittedValue.length == 2) {
            int ingredientNumber = stringToInt(splittedValue[0]);
            int ingredientCount = stringToInt(splittedValue[1]);
 
            // если пользователь вводит номер продукта, которого нету в списке доступных
            if (ingredientNumber <= 0 || ingredientNumber > storageMap.size()) {
                System.out.println(Constants.INGREDIENT_NUMBER_LIMIT);
                showHowTo();
                return;
            }
 
            processSaladMap(ingredientNumber, ingredientCount, storageMap, saladMap);
        } else {
            System.out.println(Constants.SELECTION_ERROR);
            showHowTo();
        }
    }
 
    private static void processSaladMap(int ingredientNumber, int ingredientCount, Map<String, Integer> storageMap, Map<String, Integer> saladMap) {
        StringBuilder key = new StringBuilder();
        if (ingredientCount > 0 && isIngredientPresent(ingredientNumber, ingredientCount, storageMap, key)) {
            if (saladMap.containsKey(key.toString())) {
                int amount = saladMap.get(key.toString());
                amount += ingredientCount;
                saladMap.put(key.toString(), amount);
            } else {
                saladMap.put(key.toString(), ingredientCount);
            }
 
            if (storageMap.containsKey(key.toString())) {
                int amount = storageMap.get(key.toString());
                amount -= ingredientCount;
                storageMap.put(key.toString(), amount);
            }
            printIngredients(Constants.YOUR_SALAD, saladMap);
            showHowTo();
            printIngredients(Constants.AVAILABLE_INGREDIENTS, storageMap);
        } else if (ingredientCount < 0 && isIngredientPresentInSalad(ingredientNumber, ingredientCount, saladMap, key)) {
            // убираем из салата ингредиенты
            int value = saladMap.get(key.toString());
            value += ingredientCount;
            saladMap.put(key.toString(), value);
            // возвращаем ингредиенты в общий список
            value = storageMap.get(key.toString());
            value -= ingredientCount;
            storageMap.put(key.toString(), value);
            printIngredients(Constants.YOUR_SALAD, saladMap);
            showHowTo();
            printIngredients(Constants.AVAILABLE_INGREDIENTS, storageMap);
        } else {
            System.out.println(Constants.INGREDIENT_UNAVAILABLE_AMOUNT);
            showHowTo();
        }
    }
    
    private static boolean isIngredientPresentInSalad(int ingredientNumber, int ingredientCount, Map<String, Integer> saladMap, StringBuilder key) {
        int i = 1;
        for (Entry<String, Integer> entry : saladMap.entrySet()) {
            if (i == ingredientNumber) {
                ingredientCount = -1 * ingredientCount;
                if (ingredientCount <= saladMap.get(entry.getKey())) {
                    key.append(entry.getKey());
                    return true;
                }
            }
            i++;
        }
        return false;
    }
 
    private static boolean isIngredientPresent(int ingredientNumber, int ingredientCount, Map<String, Integer> storageMap, StringBuilder key) {
        int i = 1;
        for (Entry<String, Integer> entry : storageMap.entrySet()) {
            if (i == ingredientNumber) {
                if (ingredientCount > 0 && ingredientCount <= entry.getValue()) {
                    key.append(entry.getKey());
                    return true;
                }
            }
            i++;
        }
        return false;
    }
 
    private static int stringToInt(String str) {
        try {
            return Integer.parseInt(str);
        } catch (Exception e) {
            return Constants.ERROR;
        }
    }
 
    /**
     * Метод для вывода значений из Map.
     */
    private static void printIngredients(String prefix,
            Map<String, Integer> ingredientMap) {
        System.out.println(prefix);
        int i = 1;
        for (Entry<String, Integer> entry : ingredientMap.entrySet()) {
            System.out.println(i + ". " + entry.getKey() + ": "
                    + entry.getValue());
            i++;
        }
    }
    
    private static void getStorageData(Map<String, Integer> storageMap){
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(new File("storage.txt")));
            String line = reader.readLine();
            while (line != null) {
                String[] splittedLine = line.split(" ");
                if (splittedLine.length == 2) {
                    storageMap.put(splittedLine[0],
                            Integer.parseInt(splittedLine[1]));
                }
                line = reader.readLine();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
    private static class Constants {
        private static final String EMPTY_STORAGE = "На складе нету продуктов.";
        private static final String AVAILABLE_INGREDIENTS = "Доступные ингредиенты:";
        private static final String HOW_TO_CHOOSE = "Для того чтобы выбрать ингреденты вам нужно ввести порядковый номер ингредиента и его количество.\nНапример, 1 2, будет значить что в салат будет добавлены 2 сыра.";
        private static final String HOW_TO_EXIT = "Для того чтобы выйти, введите q.";
        private static final String HOW_TO_FINISH = "Для того чтобы закончик выбор ингредиентов для салата, введите DONE.";
        private static final String SELECTION_ERROR = "Вы указали не правильную команду. Доступные операции:";
        private static final String INGREDIENT_NUMBER_LIMIT = "Вы указали неправильный номер продукта.";
        private static final String INGREDIENT_UNAVAILABLE_AMOUNT = "Выбраное количество индгредиента не доступно.";
        private static final String YOUR_SALAD = "\n\n\nИнгредиенты в вашем салате:";
        private static final String YOUR_SALAD_END = "\n\n\nВаш салат состоит из:";
        private static final String REMOVE = "У вас есть возможность убрать добавленые ингредиенты.\nДля этого вам надо ввести порядковый номер ингредиента в ващем салате и написать число с - знаком.\nНапример, 1 -2. Из салата будут убраны 2 сыра.";
 
        private static final int ERROR = -1;
    }
}


Кликните здесь для просмотра всего текста
Содержимое файла storage.txt
сыр 5
лук 10
колбаса 3
1
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
15.02.2016, 23:30  [ТС]
Doctor_, Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2016, 23:30
Помогаю со студенческими работами здесь

Простой пример работы Spring + JPA2 + H2
Сколько в интернете ни копался, находил только примеры, которые работают с MySQL, а мне нужно H2. Я даже не знаю, как настроить...

Нужен пример xml файла типа заказ в кафе
Заранее спасибо!!

Пример простейшей базы данных. Меню кафе или ресторана
привет.я ищу пример простейшей базы данных.все что нужно там сделать это вбить меню какого нибудь кафе или ресторана и все,просто у самого...

Создать пример меню кафе с помощью Inputbox и выдать общую сумму!
Помогите решить такую задачу! Вывести на экран обеденное меню. Выбор блюд – по их порядковому номеру с помощью функции InputBox....

Как в кафе,гостиницах работает WI-FI, принцип работы
Здравствуйте, меня интересует принцип работы вай-фая в кафе. Нужно так чтоб не меняя какието ИП или сбросов разных настроек сетевых,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru