标题: 批处理能否做一个点餐系统? [打印本页]
作者: lovealei 时间: 2011-9-1 16:10 标题: 批处理能否做一个点餐系统?
- 米线类(编号1开头)
- ----------------------------------------------------------------------------------
- [111] 杂酱米线(小) 3.5元 [121] 杂酱米线(中) 4.0元 [131] 杂酱米线(大) 4.5元
- [112] 焖肉米线(小) 4.0元 [122] 焖肉米线(中) 4.5元 [132] 焖肉米线(大) 4.5元
- [113] 牛肉米线(小) 4.0元 [123] 牛肉米线(中) 4.5元 [133] 牛肉米线(大) 4.5元
- [114] 猪脚米线(小) 4.0元 [124] 猪脚米线(中) 4.5元 [134] 猪脚米线(大) 4.5元
- [115] 三鲜米线(小) 3.5元 [125] 三鲜米线(中) 4.0元 [135] 三鲜米线(大) 4.5元
- ----------------------------------------------------------------------------------
-
- 卷粉类(编号2开头)
- ----------------------------------------------------------------------------------
- [211] 杂酱卷粉(小) 3.5元 [221] 杂酱卷粉(中) 4.0元 [231] 杂酱卷粉(大) 4.5元
- [212] 焖肉卷粉(小) 4.0元 [222] 焖肉卷粉(中) 4.5元 [232] 焖肉卷粉(大) 5.0元
- [213] 牛肉卷粉(小) 4.0元 [223] 牛肉卷粉(中) 4.5元 [233] 牛肉卷粉(大) 5.0元
- [214] 猪脚卷粉(小) 4.0元 [224] 猪脚卷粉(中) 4.5元 [234] 猪脚卷粉(大) 5.0元
- [215] 三鲜卷粉(小) 3.5元 [225] 三鲜卷粉(中) 4.0元 [235] 三鲜卷粉(大) 4.5元
- ----------------------------------------------------------------------------------
-
- 面条类(编号3开头)
- ----------------------------------------------------------------------------------
- [311] 杂酱面条(小) 4.0元 [321] 杂酱面条(中) 4.5元 [331] 杂酱面条(大) 5.0元
- [312] 焖肉面条(小) 4.5元 [322] 焖肉面条(中) 5.0元 [332] 焖肉面条(大) 5.5元
- [313] 牛肉面条(小) 4.5元 [323] 牛肉面条(中) 5.0元 [333] 牛肉面条(大) 5.5元
- [314] 猪脚面条(小) 4.5元 [324] 猪脚面条(中) 5.0元 [334] 猪脚面条(大) 5.5元
- [315] 三鲜面条(小) 4.0元 [325] 三鲜面条(中) 5.0元 [335] 三鲜面条(大) 5.0元
- ----------------------------------------------------------------------------------
-
- 饵丝类(编号4开头)
- ----------------------------------------------------------------------------------
- [411] 杂酱饵丝(小) 4.0元 [421] 杂酱饵丝(中) 4.5元 [431] 杂酱饵丝(大) 5.0元
- [412] 焖肉饵丝(小) 4.5元 [422] 焖肉饵丝(中) 5.0元 [432] 焖肉饵丝(大) 5.5元
- [413] 牛肉饵丝(小) 4.5元 [423] 牛肉饵丝(中) 5.0元 [433] 牛肉饵丝(大) 5.5元
- [414] 猪脚饵丝(小) 4.5元 [424] 猪脚饵丝(中) 5.0元 [434] 猪脚饵丝(大) 5.5元
- [415] 三鲜饵丝(小) 4.0元 [425] 三鲜饵丝(中) 4.5元 [435] 三鲜饵丝(大) 5.0元
- ----------------------------------------------------------------------------------
-
- 饺子类(编号5开头)
- ----------------------------------------------------------------------------------
- [511] 清汤饺子(小) 4.5元 [521] 清汤饺子(中) 5.0元 [531] 清汤饺子(大) 5.5元
- [512] 酸辣饺子(小) 4.5元 [522] 酸辣饺子(中) 5.0元 [532] 酸辣饺子(大) 5.5元
- [513] 麻辣饺子(小) 4.5元 [523] 麻辣饺子(中) 5.0元 [533] 麻辣饺子(大) 5.5元
- ----------------------------------------------------------------------------------
-
- 请输入编号:
复制代码
上面代码中,111 112 113 等是商品编号, 对应相应的变量 S111,S112,S113 , 每个商品有对应的价格变量 SJ111,SJ112,SJ113
这些变量已经定义好, 接下来的问题是:
如果只选择一个商品是很好解决的,但是如果是选择多个商品呢? 还有多个商品,多个数量的问题,
比如说选择了这三种商品,要如何计算总价 111] 杂酱米线(小) 3.5元 [121] 杂酱米线(中) 4.0元 [131] 杂酱米线(大) 4.5元
又比如说
[111] 杂酱米线(小) 3.5元 二份
[121] 杂酱米线(中) 4.0元 三份
[131] 杂酱米线(大) 4.5元 一份
又要如何计算?
作者: CUer 时间: 2011-9-1 16:47
把你定义变量的那部分代码贴出来看看
作者: lovealei 时间: 2011-9-1 16:57
复制代码
作者: bingxing8000 时间: 2011-9-1 17:40
很有创意啊
作者: garyng 时间: 2011-9-1 17:41
回复 3# lovealei
楼主要开“批处理餐厅”吗?
作者: CrLf 时间: 2011-9-1 17:56
本帖最后由 CrLf 于 2011-9-2 18:43 编辑
很有意思,我试试:- @echo off&setlocal enabledelayedexpansion
- for %%a in (米线 卷粉 面条 饵丝 饺子) do (
- set /a a+=1
- set a!a!=%%a
- )
- ::主食
- set b=@小中大
- ::份量
- for %%a in (杂酱 焖肉 牛肉 猪脚 三鲜) do (
- set /a c+=1
- set c!c!=%%a
- )
- ::配料
-
- set -=------------------------------------------------------------------------------
- for /l %%a in () do (
- setlocal&echo;&echo !-:~-35! 菜 单 !-:~-35!
- for /l %%a in (1 1 23) do set k= !k!
- for /f %%a in ('findstr /b "[0-9][0-9][0-9]=" %0') do (
- set J%%a
- for /f "delims==" %%b in ("%%a") do (
- set @=%%b
- for /f "tokens=1-3" %%c in ("!@:~,1! !@:~1,1! !@:~2,1!") do (
- if %%c neq !last! (
- if defined echo echo !echo!
- echo !-!
- for %%f in (tn echo) do set %%f=
- set last=%%c
- )
- set /a tn+=1,t=tn%%2
- set na=%%b:!c%%e!!a%%c!(!b:~%%d,1!)!k!
- set mo=!k:~-8!!J%%b:~,-1!.!J%%b:~-1! 元
- set echo=!echo! !na:~,15!!mo:~-7!
- if !t!==0 echo !echo!&set echo=
- )
- )
- )
- echo !-!
- rem 输出菜单
-
- echo;
- set /p in=请输入菜单:(可以同时多选)^
-
-
- echo;
- for %%b in (!in!) do (
- if defined J%%b (
- set @=%%b
- for /f "tokens=1-3" %%c in ("!@:~,1! !@:~1,1! !@:~2,1!") do (
- set na=%%b:!c%%e!!a%%c!(!b:~%%d,1!)!k!
- set mo=!k:~-8!!J%%b:~,-1!.!J%%b:~-1! 元
- echo !na:~,20!!mo:~-7!
- set /a $+=!J%%b!
- )
- ) else echo %%b: [无此条目]
- )
- if defined @ (
- echo;
- set $=!k!!$:~,-1!.!$:~-1! 元
- echo !k![总价:!$:~-6!]!k:~-14!!date! !time!
- )
- pause>nul
- for /l %%a in (1 1 4) do echo;
- endlocal
- )
- ::菜单输入、计算和输出
-
- ::以下为菜目编号与价格(以角为单位,方便计算)
- 111=35
- 112=40
- 113=40
- 114=40
- 115=35
-
- 211=35
- 212=40
- 213=40
- 214=40
- 215=35
-
- 311=40
- 312=45
- 313=45
- 314=45
- 315=40
-
- 411=40
- 412=45
- 413=45
- 414=45
- 415=40
-
- 511=45
- 512=45
- 513=45
复制代码
效果如下:- -------------------------------- 菜 单 --------------------------------------
- ------------------------------------------------------------------------------
- 111:杂酱米线(小) 3.5 元 112:焖肉米线(小) 4.0 元
- 113:牛肉米线(小) 4.0 元 114:猪脚米线(小) 4.0 元
- 115:三鲜米线(小) 3.5 元
- ------------------------------------------------------------------------------
- 211:杂酱卷粉(小) 3.5 元 212:焖肉卷粉(小) 4.0 元
- 213:牛肉卷粉(小) 4.0 元 214:猪脚卷粉(小) 4.0 元
- 215:三鲜卷粉(小) 3.5 元
- ------------------------------------------------------------------------------
- 311:杂酱面条(小) 4.0 元 312:焖肉面条(小) 4.5 元
- 313:牛肉面条(小) 4.5 元 314:猪脚面条(小) 4.5 元
- 315:三鲜面条(小) 4.0 元
- ------------------------------------------------------------------------------
- 411:杂酱饵丝(小) 4.0 元 412:焖肉饵丝(小) 4.5 元
- 413:牛肉饵丝(小) 4.5 元 414:猪脚饵丝(小) 4.5 元
- 415:三鲜饵丝(小) 4.0 元
- ------------------------------------------------------------------------------
- 511:杂酱饺子(小) 4.5 元 512:焖肉饺子(小) 4.5 元
- ------------------------------------------------------------------------------
-
- 请输入菜单:(可以同时多选)
- 112 122 313 214 512 415
-
- 112:焖肉米线(小) 4.0 元
- 122: [无此条目]
- 313:牛肉面条(小) 4.5 元
- 214:猪脚卷粉(小) 4.0 元
- 512:焖肉饺子(小) 4.5 元
- 415:三鲜饵丝(小) 4.0 元
-
- [总价:21.0 元] 2011/09/01 周四 23:11:31.32
复制代码
作者: bluewing009 时间: 2011-9-1 18:40
很好做吧,既然名字、单价已知,可以set一个choose变量,作为选择编号(即点菜输入),定义格式:“编号 数量”然后以空格分离(没有数量的可设置为1),那么价格=单价*数量,然后累加即可。最后得出一个总价。
作者: cjiabing 时间: 2011-9-1 22:21
本帖最后由 cjiabing 于 2011-9-1 22:38 编辑
虽然复杂了点,但更实用了点。
如果想要界面漂亮点请参考:
批处理自定义界面(大小和颜色) http://www.bathome.net/thread-13918-1-1.html
- @echo off&setlocal enabledelayedexpansion
- MODE con: COLS=100
- title 点餐结算系统
- echo;
- echo; 点餐结算系统
- echo;
- echo;
- echo;编号——名 称——价格 编号——名 称——价格 编号——名 称——价格
- echo -------------------------------------------------------------------------------------
- :菜单
- set str1=
- set str2=
- set str3=
- for /f "usebackq skip=80 tokens=1,2,3,4,5,6,7,8* delims=-][ " %%a in ("%~0") do (
- if %%a lss 999999 if "%%c" geq "0.0元" set "str1=%%a - %%b - %%c;"
- if %%d lss 999999 if "%%f" geq "0.0元" set "str2=%%d - %%e - %%f;"
- if %%g lss 999999 if "%%i" geq "0.0元" set "str3=%%g - %%h - %%i;"
- if defined str1 if defined str2 if defined str3 echo;!str1! !str2! !str3!
- )
- echo -------------------------------------------------------------------------------------
- set 总价=0
- set var=
- cd.>DCJStemp
- ::由于批处理不能进行浮点运算,无法获得小数点后一位数,请自行更换算法。
- echo;
- echo 开始点菜,输入方法【编号 数量】示例如下:
- echo 购买编号为111的“杂酱米线”“两份”,则输入:111 2
- echo 点餐过程中的总价没有去掉小数点,最后结账时才计算小数点。
- echo 返回菜单【M】结束点菜【Q】
- :点菜
- echo;
- set /p input= 请输入:
- echo;
- if "%input%"=="" goto 点菜
- if /i "%input%"=="Q" goto 结账
- if /i "%input%"=="M" goto 菜单
- for /f "tokens=1,2" %%x in ("%input%") do (
- for /f "usebackq skip=7 tokens=1,2,3,4,5,6,7,8* delims=-][ " %%a in ("%~0") do (
- if %%x==%%a (
- for /f "tokens=1,2 delims=.元" %%o in ("%%c") do set /a 总价=%%o%%p*%%y+!总价!
- set "var=%%a;名称:%%b;单价:%%c;总价:!总价!;"
- echo !var!&echo !var!>>DCJStemp
- )
- if %%x==%%d (
- for /f "tokens=1,2 delims=.元" %%o in ("%%f") do set /a 总价=%%o%%p*%%y+!总价!
- set "var=编号:%%d;名称:%%e;单价:%%f;总价:!总价!;"
- echo !var!&echo !var!>>DCJStemp
- )
- if %%x==%%g (
- for /f "tokens=1,2 delims=.元" %%o in ("%%i") do set /a 总价=%%o%%p*%%y+!总价!
- set "var=编号:%%g;名称:%%h;单价:%%i;总价:!总价!;"
- echo !var!&echo !var!>>DCJStemp
- )
- )
- )
- goto 点菜
- :结账
- set _总价=0
- set /a _总价=!总价!/10
- cls
- echo;
- echo;
- echo; 结 账
- echo -------------------------------------------------------------------------------------
- echo;
- echo;
- echo 你已经点的菜:
- echo;
- type DCJStemp
- echo;
- echo 实际总价格:%_总价%.!总价:~-1,1! 元
- echo;
- echo;
- echo -------------------------------------------------------------------------------------
- pause
- del /f /q DCJStemp>nul 2>nul
- cls
- goto 菜单
- ------------------------------以下放菜谱--------------------------------------
-
-
- 米线类(编号1开头)
- ----------------------------------------------------------------------------------
- [111] 杂酱米线(小) 3.5元 [121] 杂酱米线(中) 4.0元 [131] 杂酱米线(大) 4.5元
- [112] 焖肉米线(小) 4.0元 [122] 焖肉米线(中) 4.5元 [132] 焖肉米线(大) 4.5元
- [113] 牛肉米线(小) 4.0元 [123] 牛肉米线(中) 4.5元 [133] 牛肉米线(大) 4.5元
- [114] 猪脚米线(小) 4.0元 [124] 猪脚米线(中) 4.5元 [134] 猪脚米线(大) 4.5元
- [115] 三鲜米线(小) 3.5元 [125] 三鲜米线(中) 4.0元 [135] 三鲜米线(大) 4.5元
- ----------------------------------------------------------------------------------
-
- 卷粉类(编号2开头)
- ----------------------------------------------------------------------------------
- [211] 杂酱卷粉(小) 3.5元 [221] 杂酱卷粉(中) 4.0元 [231] 杂酱卷粉(大) 4.5元
- [212] 焖肉卷粉(小) 4.0元 [222] 焖肉卷粉(中) 4.5元 [232] 焖肉卷粉(大) 5.0元
- [213] 牛肉卷粉(小) 4.0元 [223] 牛肉卷粉(中) 4.5元 [233] 牛肉卷粉(大) 5.0元
- [214] 猪脚卷粉(小) 4.0元 [224] 猪脚卷粉(中) 4.5元 [234] 猪脚卷粉(大) 5.0元
- [215] 三鲜卷粉(小) 3.5元 [225] 三鲜卷粉(中) 4.0元 [235] 三鲜卷粉(大) 4.5元
- ----------------------------------------------------------------------------------
-
- 面条类(编号3开头)
- ----------------------------------------------------------------------------------
- [311] 杂酱面条(小) 4.0元 [321] 杂酱面条(中) 4.5元 [331] 杂酱面条(大) 5.0元
- [312] 焖肉面条(小) 4.5元 [322] 焖肉面条(中) 5.0元 [332] 焖肉面条(大) 5.5元
- [313] 牛肉面条(小) 4.5元 [323] 牛肉面条(中) 5.0元 [333] 牛肉面条(大) 5.5元
- [314] 猪脚面条(小) 4.5元 [324] 猪脚面条(中) 5.0元 [334] 猪脚面条(大) 5.5元
- [315] 三鲜面条(小) 4.0元 [325] 三鲜面条(中) 5.0元 [335] 三鲜面条(大) 5.0元
- ----------------------------------------------------------------------------------
-
- 饵丝类(编号4开头)
- ----------------------------------------------------------------------------------
- [411] 杂酱饵丝(小) 4.0元 [421] 杂酱饵丝(中) 4.5元 [431] 杂酱饵丝(大) 5.0元
- [412] 焖肉饵丝(小) 4.5元 [422] 焖肉饵丝(中) 5.0元 [432] 焖肉饵丝(大) 5.5元
- [413] 牛肉饵丝(小) 4.5元 [423] 牛肉饵丝(中) 5.0元 [433] 牛肉饵丝(大) 5.5元
- [414] 猪脚饵丝(小) 4.5元 [424] 猪脚饵丝(中) 5.0元 [434] 猪脚饵丝(大) 5.5元
- [415] 三鲜饵丝(小) 4.0元 [425] 三鲜饵丝(中) 4.5元 [435] 三鲜饵丝(大) 5.0元
- ----------------------------------------------------------------------------------
-
- 饺子类(编号5开头)
- ----------------------------------------------------------------------------------
- [511] 清汤饺子(小) 4.5元 [521] 清汤饺子(中) 5.0元 [531] 清汤饺子(大) 5.5元
- [512] 酸辣饺子(小) 4.5元 [522] 酸辣饺子(中) 5.0元 [532] 酸辣饺子(大) 5.5元
- [513] 麻辣饺子(小) 4.5元 [523] 麻辣饺子(中) 5.0元 [533] 麻辣饺子(大) 5.5元
- ----------------------------------------------------------------------------------
复制代码
作者: raymai97 时间: 2011-9-1 22:27
用批处理做,感觉有点怪啊~
作者: mstsc 时间: 2011-9-5 23:03
很有创意的想法啊 慢慢学习中
作者: BAT1 时间: 2011-9-7 04:27
在实际使用中会有这样一种情况:
比如,8号台先点了2个菜9瓶酒,
5号台点了2个菜
8号后来又加了3个菜要合到前面2个菜里一起算
1号点了5个菜
8号买单的时候又退回3瓶酒
8号是要在临走的时候再付钱那么这个脚本要怎么做呢?
还有就是价钱开的比我们这边便宜多了,我也想去吃,我们这里猪肉面条卖13块一碗。
作者: wolfan 时间: 2011-9-7 12:38
本帖最后由 wolfan 于 2011-9-7 12:41 编辑
强大啊。
然后在加上一个打印接口(400MM小单打印)在加个导入EXLCE方便财务管理~
说话~ CMD的打印是不是可以按照窗口的大小来输出打印呢?
作者: cjiabing 时间: 2011-9-7 13:25
回复 11# BAT1
搞那么复杂,不过稍微懂得for、if、set的都不算难!~自己搞下
作者: BAT1 时间: 2011-9-7 18:48
本帖最后由 BAT1 于 2011-9-7 19:10 编辑
回复 13# cjiabing
其实我也试着写过,但是完成后的脚本很长很长。
记得batman 说过,代码超过100行的批处理里面就有很多垃圾代码
而且,我们论坛的综止是“不求最大,但求最好,做最实用的批处理论坛”
所以希望cjiabing版主亲自出马,用 矢豆 小 米青 练 的代码(100行以内)写一个最好的点餐系统。切记不是第二好,也不是第三好,是最好!!!(在功能上最好添加上11楼的要求)
作者: 冷玉公子 时间: 2011-9-7 19:38
哈哈 这个我觉得应该是把选择的东西输出到一个临时的文本中,然后选择完毕后,再读取计算就OK了吗、
很有兴趣帮你写这个 哈哈
作者: cjiabing 时间: 2011-9-7 23:18
回复 14# BAT1
还限死给我一百行,晕!
一百行里面确实有很多垃圾代码。不过十行内也有几行是垃圾的。
如果要写得尽量完美一点,就不要计较太多垃圾代码了,有时候,垃圾代码也很好。
为我所用,即是最好。
要写也要看我有时间先,最近瞎忙得很。你们也不能干等,吃干饭啊,好好学习以上提到的几个命令就可以解决了啊,只是流程和结构而已嘛。
楼上的,它要做的是几台机子同时联机的,算账是同时进行的,是动态的,不是一次性的。
联机的我不会做,不过大把多人会做。
作者: Batcher 时间: 2011-9-8 00:12
回复 14# BAT1
如果他说单身好,咱就得打一辈子光棍吗?
作者: BAT1 时间: 2011-9-8 08:17
回复 16# cjiabing
版主别着急呀 最近没时间写的话,那就过段时间再写也没关系呀。
作者: BAT1 时间: 2011-9-8 08:20
回复 17# Batcher
如果他说单身好,咱就帮“他”打一辈子光棍 (注意:是他打......光棍)
作者: cjiabing 时间: 2011-9-8 13:07
回复 19# BAT1
bat-batman 2011-9-6 23:37:15
我还是那句话,批不能写死了
——引用大大的经典名言,同样,批不能只写死于100行以内。
再有,假如初恋很好,你们能让我一辈子初恋吗?
作者: lovealei 时间: 2011-9-9 09:40
回复 5# garyng
呵呵,差不多吧 等我开起来有空来光顾啊,
作者: lovealei 时间: 2011-9-9 09:42
回复 6# CrLf
谢谢版主,功能上还差着些,不过可以用啦 收货完毕!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |