Структура заказов в ресторане

Каким будет лучший способ структурировать заказы для ресторана (доступные языки – php и javascript)? Поскольку существует несколько таблиц (те, на которые вы храните все …), я думал об использовании объектов в javascript. Но я совершенно новый для javascript и абсолютно новый для ООП, поэтому я не уверен, является ли это лучшим решением, и действительно ли мой дизайн на самом деле в порядке. Вот что я придумал:

var order = { id: 0, table: 0, number_of_items: 0, item: { name: "", quantity: 0, unit_price: 0 }, total: 0 }; 

Я думаю, вы можете покончить с некоторыми избыточными элементами в своей структуре:

 var order = { id: 445221, table: 42, items: [ { name: "Steak", quantity: 1, unit_price: 15 }, { name: "Beer", quantity: 1, unit_price: 3 } ] }; 

Ну, заказы должны быть независимы от таблиц. На самом деле у вас будет объект таблицы, состоящий из объектов места / клиента и объекта заказа, состоящего из одного или нескольких элементов (с элементами, имеющими имя, количество, цену или что-то еще, что принадлежит предмету).

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

Вам не нужно number_of_items, поскольку вы можете получить это из массива элементов, поэтому вам нужно иметь массив элементов.

 var order = { id: 0, table: 0, items: [] }; 

В идеале вы можете захотеть получить еще один класс для элемента и просто поместить его в массив элементов.

Это будет выглядеть так:

 items = [{name: "", quantity: 0, unit_price: 0}, {...}, {...}] 

Вы можете получить общее количество, пройдя через массив и выполнив математику.

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

Вот один из способов.

 function item(name, price) { this.name = name; this.price = price; } function order(id, table) { this.id = id; this.table = table; this.items = []; } order.prototype.countItems = function() { return this.items.length; } order.prototype.getTotal = function() { var total = 0.0; for(var i = 0;i < this.items.length; i++) { total += this.items[i].price; } return total; } var myorder = new order(1234, 12); myorder.items.push(new item("coke", 1.25)); 

Как насчет этого?

  order = { id: <unique identifier>, table: <table number>, items : <array of objects as declared below> } item = { item_id: <id of the item in the menu> instructions : <text> } 

Заметки:

  • количество элементов = длина массива элементов.
  • Цена единицы относится к объекту меню.
  • общая сумма может быть рассчитана в любое время.
  • Не забывайте инструкции (приготовление пищи, обслуживание)!

Существует несколько таблиц, и каждая таблица может обрабатывать курс службы – имеет несколько заказов.

Я бы подумал, что основным компонентом / объектом вашей системы будет сама обложка, состоящая из чего-то вроде:

order_id, стол, курс (будет минимум один курс), выбранное блюдо и его стоимость, время заказа (это может показаться неважным, но, как правило, это отель-go-maitre d'hotel или сервис-менеджер) и напитки.

В дополнение к другим ответам, как насчет специальных направлений подготовки? Вы хотите, чтобы отдельные предметы Burger (Burger-medium редкие, Burger-well done), или вы хотите отдельный стол с указаниями на приготовление пищи, связанными с этим предметом?

Ваш ответ действительно зависит от вашей аудитории. Это для экрана на кухне, для официантки, входящей в заказ, кассира, инспектора здравоохранения или всего вышеперечисленного?

Я думаю, что идентификация объектов должна происходить до любого кодирования (сопротивляться стремлению к кодированию). Некоторые объекты включают (некоторые уже идентифицированы):

  • Таблица
  • Официант
  • item (предварительно определенный список стандартных пунктов меню, а также возможность ежедневных специальных и специальных заказов)
  • порядок – группировка элементов – может быть более одного порядка в таблице, клиент может иметь несколько официантов и таблиц, если они перемещаются из таблицы в таблицу, каждый из этих переходов может обрабатываться путем оплаты или передачи элементов

Вам также нужен рабочий процесс (новый заказ, выполненный, обновленный, закрытый и оплаченный) …

Это действительно зависит от того, как вы напишете свою программу. Если вы не будете использовать AJAX, вам не нужна структура javascript. Я не использую используемый вами синтаксис (я предпочитаю создавать классы в функциях), но элемент должен быть множественным и должен быть массивом. Помните об этом, хотя, кажется, приятно иметь некоторые вещи OO, если это добавляет сложности, их следует избегать. Хотя мы используем AJAX в наших приложениях, у нас нет Javascript-представления объектов, мы используем только классы PHP и Javascript с данными XML, которые он получает. Только классы, которые мы имеем в JS, являются виджетами.