网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
10月04日漏签0天
android开发吧 关注:225,916贴子:948,973
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 37回复贴,共2页
  • ,跳到 页  
<<返回android开发吧
>0< 加载中...

分享一个点餐系统(可以连接小票打印机)

  • 只看楼主
  • 收藏

  • 回复
  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
分享一个连接了打印机点餐系统,基于安全考虑源码不完全公开,但是使用到的具体技术和细节会进行讲解
并附带少量代码,有疑问的可以留言或者私信,慢慢更新,吧主手下留情勿删。
以下是系统的一些信息:
手机端开发工具和语言:Android Studio+java 服务端开发工具和语言:bmob+node.js
手机端使用的网络请求框架:Retrofit
测试设备:android手机或模拟器+小票打印机(价格在100-300之间,如果不用连接打票则不需要)


  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

登录界面,系统一共有三种用户,管理员(餐厅老板),收银员,服务员。
界面有两个editText来填写账号和密码。
三个radioButton包含在一个radioGroup里面来判断当前是什么用户类型登录
两个button来进行登录和退出。
只要两个输入内容不为空即两个editText.getText().toString().length>0并且
选择了登录类型即radioGroup.getCheckedRadioButtonId() != -1
就连接网络进行登录,如果对应的用户类型账号密码存在,登录成功。
网络请求框架使用的是Retrofit,具体不讲解,请自行学习。


2025-10-04 15:51:42
广告
不感兴趣
开通SVIP免广告
  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
function onRequest(request, response, modules) {
//获取用户名
var userName=request.query.userName;
//获取密码
var password=request.query.password;
//获取数据库对象
var db = modules.oData;
db.find({
"table":"res_gu_admin" , //表名
"where":{"userName":userName+"","password":password+""} //查询条件是一个JSON object
},function(err,data){ //回调函数
//将返回结果转换为Json对象
var resultObject= JSON.parse(data);
response.send(resultObject);
});
}

以上是我服务端管理员登录的的js代码,和表的结构和数据
首先去获取到从app传过来的用户名和密码,然后获取一个数据库对象db用于操作表,
再去调用ad.find方法查询res_gu_admin这张表,如果表中有对应的管理员,
通过JSON转换后就会返回一个长度不为0的list,登录成功
这里我们账号为测试酒楼,密码为123456,登录类型为管理员登录。


  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

FoodManageFragment由1个RecyclerView、5个EditText、两个Button组成,
RecyclerView负责展示已添加的菜、并提供删除功能。
EditText在添加菜时填写菜名、价格、类型、标签、数量
Button有确定添加和退出登录功能
需要说明的时标签内容取了菜名的首字母和首字母对应的拼音九键数字,方便服务员点餐的
时候搜索菜名。
此时的界面实际上就是上方一个FoodManageFragment,下方一个导航的fragment,
二者通过activity进行通信。


  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/**
* 通过下方的选择来判断当前使用哪一个fragment
*/
public void changeFragmentByString(String string) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.activity_admin_manage_fl);
switch (string) {
case "菜单":
if (fragment instanceof FoodManageFragment) {
return;
}
FoodManageFragment foodManageFragment = new FoodManageFragment();
getSupportFragmentManager().beginTransaction().
replace(R.id.activity_admin_manage_fl, foodManageFragment).commit();
break;
case "收银员":
if (fragment instanceof CashierManageFragment) {
return;
}
CashierManageFragment cashierManagefragment = new CashierManageFragment();
getSupportFragmentManager().beginTransaction().
replace(R.id.activity_admin_manage_fl, cashierManagefragment).commit();
break;
case "服务员":
if (fragment instanceof WaiterManageFragment) {
return;
}
WaiterManageFragment waiterManageFragment = new WaiterManageFragment();
getSupportFragmentManager().beginTransaction().
replace(R.id.activity_admin_manage_fl, waiterManageFragment).commit();
break;
case "桌子":
if (fragment instanceof TableManageFragment) {
return;
}
TableManageFragment tableManageFragment = new TableManageFragment();
getSupportFragmentManager().beginTransaction().
replace(R.id.activity_admin_manage_fl, tableManageFragment).commit();
break;
case "其他":
if (fragment instanceof OtherManageFragment) {
return;
}
OtherManageFragment otherManageFragment = new OtherManageFragment();
getSupportFragmentManager().beginTransaction().
replace(R.id.activity_admin_manage_fl, otherManageFragment).commit();
break;
}
}
管理员activity中切换fragment的代码,点击下方导航fragment的时候调用,通过传过来的不同String来切换到不同的fragment,这里CashierManageFragment收银员管理界面、WaiterManagefragment服务员管理界面、TableManageFragment桌子管理界面比较
简单且与FoodManageFragment菜单管理界面类似,就跳过了。我们为系统添加了一个账号密码都为cashier的收银员,账号密码都是waiter的服务员、桌子id从1到10的10张桌子。


  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

使用服务员登录后来到服务员的桌子管理界面WaiterTableFragment
一个RecyclerView用于展示桌子的状态和对桌子进行操作,
两个Button用于刷新和退出登录,
这里我们点击一号桌开桌,桌子就会现实开桌时常,可以进行退菜和点菜。


  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

服务员点餐界面WaiterOrderFoodFragment,两个RecyclerView,两个EditText,两个Button
RecyclerView分别展示所有菜单和想点的菜。
上方的EditText用以搜索菜单,下方的EditText用以添加备注,
这里我们点了三个菜、两份主食、一个饮料,并添加备注,点击下单。


  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

下单成功,可以继续点菜,这里我们再搜索的EditText里面输入了信息,所有只出现了对应的
菜单,可以看见,由于我们的操作,小白菜和白米饭的数量发生了变化,又因为这两个的标签里面包含了b,所以他们出现在菜单中。刚刚下单成功后,放在厨房的打印机打印出了如下的信息。


2025-10-04 15:45:42
广告
不感兴趣
开通SVIP免广告
  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

模拟退菜情况,假如米饭没有了,鱼也卖光了,我们需要把点过的东西推掉,进入到退菜的界面,添加退菜信息和备注,退菜成功,厨房收到以下的打印信息。


  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

退菜成功,我们可以看到,白米饭和水煮鱼的数量恢复了。
服务员就只有开桌、点菜和退菜这三个功能。


  • minicow11
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/**
* 通过关键字检索菜单
*
* @Return 检索后的菜单
*/
private List<FoodBean.ResultsBean> getTargetFoodList(String string) {
List<FoodBean.ResultsBean> newList = new ArrayList<>();
for (FoodBean.ResultsBean resultsBean : allFoodList) {
if (resultsBean.getName().equals("菜名")) {
newList.add(resultsBean);
continue;
}
if (resultsBean.getName().contains(string) || resultsBean.getTab().contains(string)
|| resultsBean.getCategory().contains(string)) {
// ) {
newList.add(resultsBean);
}
}
return newList;
}
通过关键字检索菜单,遍历所有菜单的集合,如果名字是"菜名“,表示是第一行提示信息,直接添加不参与检索,否则如果菜的名字、菜的标签、菜的类型中有一项包含了关键字则添加到解锁菜单中,最后返回解锁后菜单。


  • hhhhhh99day
  • 托儿所
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主可以介绍下连接打印机方面吗?谢谢


  • mmmWen
  • 二年级
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主自己做的吗,很好哎。判断fragment、还有检索比较感兴趣哈哈哈,可能在之后的学习中会用到,要是有不明白的到时候可以问你吗


  • 翠花外婆
  • 幼儿园
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主的点餐系统能给我一份么,可以有偿


2025-10-04 15:39:42
广告
不感兴趣
开通SVIP免广告
  • 贴吧用户_74WV5KZ
  • 一年级
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主怎么联系


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 37回复贴,共2页
  • ,跳到 页  
<<返回android开发吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示