Restoranda siparişlerin Yapısı

9 Cevap php

Ne bir restoran için emir (mevcut diller php ve javascript vardır) yapısı en iyi yolu olurdu? Birden fazla tablo (sen ... şeyleri tutmak olanlar) olduğundan, javascript nesneleri kullanarak düşündüm. Ama javascript ve OOP kesinlikle yeni oldukça yeni, bu yüzden bu iyi çözüm olup olmadığı, ve benim tasarım aslında ok olup olmadığından emin değilim. İşte ben ile geldi budur:

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

9 Cevap

Ben size yapısında bazı gereksiz elemanları ile yapabilirsiniz düşünüyorum:

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

Peki, emir tabloları bağımsız olmalıdır. Gerçekten koltuk / müşteri nesneler ve (isim, miktar, fiyat veya herhangi başka bir öğeye ait olan öğeler ile) bir veya daha fazla maddeden oluşan bir sipariş nesnenin oluşan bir tablo nesnesi olurdu.

Ek bir komplikasyon olarak, bir emir ya bir koltuk (bir kişi) ya da bir tablo (örneğin, paylaşılan meze) ait olabilir. (Bölünmüş kontrolleri sağlamak olsaydı gibi) tablo için fatura derlemeye çalışırken bu ilişkiyi destekleyen farklı şeyler yapmak için izin verecek.

Eğer madde diziden o alabilirsiniz olarak number_of_items gerekmez, böylece öğeleri bir dizi var isteyecektir.

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

İdeal öğe için başka bir sınıf var ve sadece ürün dizideki bunların bir listesini koymak isteyebilirsiniz.

Bu gibi görünecektir:

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

Sen dizi döngü ile toplam almak ve matematik yapabilirsiniz.

Matematik aşırı karmaşık olduğu sürece nesne saklanan değerleri derive yok tercih eğilimi, ama bu benim sadece budur.

İşte bir yoludur.

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));

Bu nasıl?

 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>
 }

Notlar:

  • öğe sayısı = ürün dizisinin uzunluğu.
  • birim fiyat menü nesnesine aittir.
  • Toplam herhangi bir zaman hesaplanabilir.
  • Talimatları (pişirme, servis) ihmal etmeyin!

Orada birden fazla tablo vardır ve her tablo bir hizmet olan birkaç sipariş dersin can-over.

Ben senin sistemin temel bileşeni / nesnenin çizgisinde bir şey oluşan, kapak kendisi olacağını düşünüyorum:

order_id, masa, kurs (bir ders en az orada olacağım), seçilmiş yemek ve maliyet, sipariş süresi (bu önemli görünmeyebilir, ama genellikle bir-iyi-Maitre d'hotel için veya servis müdürü) ve içecekler.

Ne özel hazırlık yönleri hakkında diğer yanıtlar, ek olarak? Eğer (Burger-aferin Burger-orta nadir,) ayrı Burger öğeleri istiyor musunuz, yoksa bu öğeye bağlı pişirme yönleri ile ayrı bir tablo istiyorsun?

Cevabınız gerçekten kitleye bağlıdır. Bu düzeni giren garson, kasiyer, sağlık müfettişi, ya da Yukarıdakilerin tümü için, mutfakta ekran için mi?

Ben nesneleri bir kimlik (koduna güdüsünden) önce herhangi bir kodlama gerçekleşmesi gerektiğini düşünüyorum. Bazı nesneler (bazıları zaten tanımlanmış) şunlardır:

  • tablo
  • garson
  • Ürün (önceden tanımlanmış günlük özel ve özel sipariş için yeteneği ile birlikte standart menü öğeleri listesi)
  • emir - öğeleri gruplama - Birden fazla sipariş onlar masaya bardan taşırsanız tablo başına, bir istemci bu geçişlerin her öğeleri ödeme ya da transfer ederek ele olabilir, birden garsonlar ve tablo olabilir olabilir

Ayrıca (yerine, yeni bir düzen, güncelleme, kapalı ve ücretli) yerleşik bir iş akışı gerekiyor ...

Gerçekten sizin program yazacağız nasıl bağlıdır. Eğer AJAX kullanmak olmaz, herhangi bir javascript yapıya ihtiyacımız yok. Ben kullandığınız sözdizimi kullanmayın (ben işlevlerinde bina sınıfları tercih) ama, madde çoğul olmalı ve bir dizi olmalıdır. O kaçınılmalıdır karmaşıklığı ekler eğer, bazı OO şeyler olması güzel görünüyor olsa da, bu hatırlıyorum. Bizim uygulamalarında AJAX kullanımı olsa da, biz onu alır, XML veri ile sadece PHP sınıfları ve Javascript fırsatlar kullanmak, nesnelerin Javascript temsil yok. Biz JS yalnızca sınıflar widget bulunmaktadır.