餐厅订单的结构

时间:2009-09-15 17:29:41

标签: php javascript oop

构建餐厅订单的最佳方式是什么(可用的语言是php和javascript)?由于有多个表(你保留的东西......),我想到了在javascript中使用对象。但我对javascript很新,对OOP来说是全新的,所以我不确定这是否是最好的解决方案,以及我的设计是否真的没问题。以下是我的想法:

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

9 个答案:

答案 0 :(得分:3)

嗯,订单应该独立于表格。实际上,你有一个由座位/客户对象组成的表对象和一个由一个或多个项目组成的订单对象(包含名称,数量,价格或其他任何属于某个项目的项目)。

作为额外的复杂因素,订单可以属于座位(一个人)或一个表(例如,共享开胃菜)。支持这种关系可以让你在尝试编写表格账单时做不同的事情(比如你必须提供拆分支票)。

答案 1 :(得分:2)

您不需要number_of_items,因为您可以从item数组中获取它,因此您需要一个项目数组。

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

理想情况下,您可能希望为项目设置另一个类,并在项目数组中放置它们的列表。

看起来像是:

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

您可以通过循环遍历数组来获得总数并进行数学计算。

除非数学过于复杂,否则我倾向于不在对象中存储可导出的值,但这正是我所做的。

答案 2 :(得分:1)

我认为你可以废除结构中的一些冗余元素:

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

答案 3 :(得分:1)

这是一种方式。

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

答案 4 :(得分:0)

这个怎么样?

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

注意:

  • 项数=项数组的长度。
  • 单价属于菜单对象。
  • 总计可以随时计算。
  • 不要忘记说明(烹饪,服务)!

答案 5 :(得分:0)

有多个表,每个表可以在服务过程中有多个订单。

我认为你的系统的基本组件/对象将是封面本身,包括以下内容:

order_id,表格,课程(至少有一门课程),所选菜肴及其成本,订购时间(这可能看起来不太重要,但通常是 - 好的 - maitre酒店或服务经理)和饮料。

答案 6 :(得分:0)

除了其他答案,特殊的准备方向呢?你想要单独的汉堡食品(汉堡 - 中等稀有,汉堡做得好),或者你想要一个单独的餐桌与烹饪方向链接到该项目?

您的回答确实取决于您的受众群体。它是用于厨房的屏幕,女服务员进入订单,收银员,健康检查员还是以上所有?

答案 7 :(得分:0)

我认为对象的识别需要在任何编码之前进行(抵制编码的冲动)。一些对象包括(一些已经确定):

  • 服务员
  • 项目(标准菜单项目的预定义列表以及每日特价和特殊订单的能力)
  • 订单 - 项目分组 - 每个表可能有多个订单,如果客户从一个酒吧移到另一个桌子,客户可以有多个服务员和桌子,每个转换都可以通过支付或转移项目来处理

您还需要内置工作流程(新订单,履行,更新,关闭和付费)......

答案 8 :(得分:-1)

这取决于你将如何编写程序。如果您不使用AJAX,则不需要任何javascript结构。我不使用你使用的语法(我更喜欢在函数中构建类)但是,item应该是复数并且必须是数组。记住这一点,虽然看起来很好有一些OO的东西,如果它增加了复杂性,应该避免。虽然我们在应用程序中使用AJAX,但是我们没有对象的Javascript表示,我们只使用PHP类和Javascript处理它获得的XML数据。只有JS中的类才是小部件。