JS点餐统计

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/modelmd/ https://blog.csdn.net/modelmd/article/details/78746561
最近遇到个问题,晚上加班点菜,人数太多,大家都在微信上发菜名,起初人数比较少时,可以使用excel记录,现在加班的人多的,用excel记录,就麻烦
整个点餐流程是如下:
    1.在微信群聊上发起点餐信号,如"点餐了"
    2.微信群聊中的小伙伴点某快餐店的菜
    3.发出点餐结束信号,如"点餐结束"
    4.统计微信群聊上每个人点的菜
    5.给快餐店打电话,提供每种菜个几份,总的份数

整个JS点餐的列表已存入Mysql数据库,数据如下

+----+--------+----------------+------+
| id | zwjp   | zwmz           | dj   |
+----+--------+----------------+------+
|  1 | jd     | 煎蛋           |    2 |
|  2 | mtdf   | 麻婆豆腐饭     |   12 |
|  3 | xlrm   | 雪里肉沫饭     |   12 |
|  4 | sdjrm  | 酸豆角肉沫饭   |   12 |
|  5 | xjdf   | 湘家豆腐饭     |   13 |
|  6 | sljz   | 酸辣鸡杂饭     |   15 |
|  7 | bcrp   | 包菜肉片饭     |   15 |
|  8 | hlbrs  | 胡萝卜肉丝饭   |   15 |
|  9 | dgrp   | 冬菇肉片饭     |   15 |
| 10 | opcr   | 藕片炒肉饭     |   15 |
| 11 | hccr   | 花菜炒肉饭     |   15 |
| 12 | csrs   | 脆笋肉丝饭     |   15 |
| 13 | wsrp   | 莴笋肉片饭     |   15 |
| 14 | jzgrs  | 金针菇肉丝饭   |   16 |
| 15 | scxsm  | 酸菜小笋肉沫饭 |   12 |
| 16 | xghgr  | 香干回锅肉     |   16 |
| 17 | schgr  | 酸菜回锅肉饭   |   16 |
| 18 | lyymc  | 鲮鱼油麦菜饭   |   13 |
| 19 | tdhsr  | 土豆红烧肉饭   |   17 |
| 20 | ydfhsr | 油豆腐红烧肉饭 |   17 |
| 21 | slbrs  | 酸萝卜肉丝饭   |   13 |
| 22 | qght   | 青瓜火腿饭     |   13 |
| 23 | gtrhbd | 骨头肉荷包蛋饭 |   17 |
| 24 | njytx  | 农家一桶香     |   17 |
| 25 | fqcd   | 番茄炒蛋饭     |   13 |
| 26 | lgcd   | 凉瓜炒蛋饭     |   13 |
| 27 | blsj   | 板栗烧鸡       |   17 |
| 28 | bctj   | 爆炒田鸡       |   17 |
| 29 | qjcd   | 青椒炒蛋饭     |   13 |
| 30 | jccd   | 韭菜炒蛋饭     |   13 |
| 31 | zjyf   | 仔姜鸭饭       |   17 |
| 32 | schc   | 酸菜回肠饭     |   18 |
| 33 | tdrs   | 土豆丝肉丝饭   |   13 |
| 34 | qcxgrs | 芹菜香干肉丝饭 |   14 |
| 35 | slbzd  | 酸萝卜猪肚饭   |   18 |
| 36 | mckr   | 梅菜扣肉饭     |   18 |
| 37 | zcrs   | 榨菜肉丝饭     |   14 |
| 38 | hthd   | 火腿滑蛋饭     |   14 |
| 39 | fznn   | 腐竹牛腩饭     |   18 |
| 40 | tdnn   | 土豆牛腩饭     |   18 |
| 41 | wpcqz  | 外婆菜茄子饭   |   14 |
| 42 | dghd   | 冬菇滑鸡饭     |   14 |
| 43 | slbnr  | 酸萝卜牛肉饭   |   18 |
| 44 | jzgnr  | 金针菇牛肉饭   |   18 |
| 45 | ycrs   | 洋葱肉丝饭     |   14 |
| 46 | lgrs   | 凉瓜肉丝饭     |   14 |
| 47 | csnr   | 脆笋牛肉饭     |   18 |
| 48 | xxxg   | 攸县香干肉丝   |   15 |
| 49 | nbdhbd | 腊八豆荷包蛋饭 |   14 |
| 50 | hsyk   | 红烧鱼块饭     |   15 |
| 51 | sjdrs  | 四季豆肉丝饭   |   15 |
| 52 | xcnr   | 小炒牛肉饭     |   18 |
| 53 | mxr    | 木须肉饭       |   15 |
| 54 | hlzg   | 滑嫩猪肝饭     |   15 |
| 55 | xcr    | 小炒肉饭       |   15 |
| 56 | qgcr   | 青瓜炒肉饭     |   15 |
| 57 | gtr    | 骨头肉饭       |   15 |
+----+--------+----------------+------+

设计思路如下:
1.Ajax发送请求获取Mysql数据表的数据,在后台将整个表的数据封装成JSON
2.前端使用JQuery解析JSON放入数据中
3.使用DOM操作动态增加节点,每一行放4种菜,每一种菜有文本框,加、减按钮,价格放入隐藏域
4.html初始页面有统计总份数按钮,总价格

源码如下:
1.HTML页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>菜单</title>
<script type='text/javascript' src='../../jquery/jquery-3.2.1.js'></script>
<script type="text/javascript" src='../../common/commonconstants.js'></script>
<script type="text/javascript" src='../../menu/adddom.js'></script>
<style>
    #menutable {
        border:1px solid #ff3399;
    }
</style>
</head>
<body>
<div align="center" id = "main">
    <table id = "menutable">
    </table>
</div>
<div id = "price">
</div>
<div align="center" id = "buttons">
<input type = "button" value = "份数" onclick = "count()" /><input type="text" id = "count" name = "count" />
<input type = "button" value = "价格" onclick = "price()" /><input type="text" id = "allprice" name = "allprice" />
<!--<input type = "button" value = "提交" onclick = "submitData()">-->
<!--<input type = "button" value = "重置" onclick = "resetdiv()" />-->
</div>
</body>
</html>

2.adddom.js

var dishesArray = [];
var table;
var pricediv;
$(document).ready(function(){
    if(!getDishes()){   //数据加载不成功,就不继续跑了
        return ;
    }
    initTable();
});
function initTable(){
    table = document.getElementById('menutable');
    pricediv = document.getElementById('price');
    var dishesLen = dishesArray.length;
    for(var i = 0; i < parseInt(dishesLen / 4); i++){
        var tr = document.createElement("tr");
        for(var j = 0; j < 4; j++){
            var data = dishesArray[i*4 + j];
            addtdNode(tr, data);
        }
        table.appendChild(tr);
    }
    if(dishesLen % 4 != 0){
        var tr = document.createElement("tr");
        for(var i = dishesLen - dishesLen % 4; i < dishesLen; i++){
            var data = dishesArray[i];
            addtdNode(tr, data);
            table.appendChild(tr);
        }
    }
    initText();
}
function addtdNode(tr, data){
    var td1 = document.createElement("td");
    var zwmz = document.createTextNode(data['zwmz']);
    var td2 = document.createElement("td");
    var name = data['zwjp'];
    var id = 'text_' + data['zwjp'];
    var txid = id ;
    var innerhtml = '<input name="'+name+ '"' + ' type="text" id="'+ id + '"' + '/>' + 
    '<input type="button" value="+" onclick="add(' + txid + ')"/>' + 
    '<input type="button" value="-" onclick="sub(' + txid + ')"/>';
    td1.appendChild(zwmz);
    td2.innerHTML = innerhtml;
    tr.appendChild(td1);
    tr.appendChild(td2);
    var priceid = 'price_' + data['zwjp'];
    var dj = data['dj'];
    var pricehtml = '<input   type="hidden"   name="' + priceid + '"   id="' + priceid + '"  value="' + dj + '"/>';
    pricediv.innerHTML = pricediv.innerHTML + pricehtml;
}
function getDishes(){
    var dataInit = false;
    $.ajax({
        type: "POST",
        async:false,
        url: contextPath + "/getDishes.do",
        success: function(msg){
            //window.alert(msg);
            if(msg.indexOf('<!DOCTYPE') != -1){
                window.alert('请先登录!!!');
                window.location.href = contextPath + "/login/login.jsp"
//              document.write(msg);
            }else{
                dishesArray = $.parseJSON(msg);
                dataInit = true;
            }

        }
    });
    return dataInit;
}
function initText(){
    $("[id^=text_]").each(function () {
        $(this).val(0);
    });
}
function add(t_id){
    var n = parseInt($(t_id).val()) + 1;
    $(t_id).val(n);
}
function sub(t_id){
    var n = parseInt($(t_id).val()) - 1;
    if(n > 0 ){
        $(t_id).val(n);
    }
    else if(n == 0){
        $(t_id).val(0);
    }
}

function count(){
    var sum = 0;
    $("[id^=text_]").each(function () {
        sum = sum + parseInt($(this).val());
    });
    $("#count").val(sum);
}

function price(){
    var pricesum = 0;
    $("[id^=text_]").each(function () {
        var price_id = '#' + 'price_' + this.id.split('_')[1];
        pricesum = pricesum + parseInt($(this).val()) * parseInt($(price_id).val());
    });
    $("#allprice").val(pricesum);
}

页面如下:
这里写图片描述

开始快乐的点餐了

整个设计过程中,数据录入数据库比较麻烦,后期想法直接从宣传单获取数据 :
1.实现图片文字识别
2.中文拼音首字母获取

第2个想法已经实现了,第1个比较有难度啊,从图片上获取中文识别不了,使用了,识别不出汉字
Tesseract-OCR>tesseract -v
tesseract 3.02
leptonica-1.68 (Mar 14 2011, 10:43:03) [MSC v.1500 LIB Release 32 bit]
libgif 4.1.6 : libjpeg 8c : libpng 1.4.3 : libtiff 3.9.4 : zlib 1.2.5

Tesseract-OCR>tesseract –list-langs
List of available languages (3):
chi_sim
eng
osd

猜你喜欢

转载自blog.csdn.net/modelmd/article/details/78746561
今日推荐