您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 酒店点餐系统4-顾客终端模块设计
1专业:计算机科学与技术班级:077051班题目:酒店点餐系统2顾客终端模块设计1、点餐终端设计..............................................................................31.1功能描述................................................................................31.2开发过程................................................................................32、评分模块设计..............................................................................92.1开发过程................................................................................93、顾客终端信息设置....................................................................123.1开发过程..............................................................................124、顾客终端通信接口设计............................................................154.1开发过程..............................................................................155、资源对话框对照说明................................................................1631、点餐终端设计1.1功能描述本模块实现用户按不同方式检索菜品信息,向系统管理终端发送确定点菜消息,顾客终端能够显示并处理系统管理端直接发送或间接发送的消息,在顾客就餐完毕后,能够对厨师所做菜品进行评分。界面如图1:图11.2开发过程1)向项目中添加一个新Dialog资源,资源ID为IDD_CLIENTTERMINAL_DIALOG。在对话框资源中单击右键,选择“Properties”然后修改“Caption”为“点餐终端”。2)向Dialog添加2个StaticText、2个GroupBox、1个Picture、2个DataGricControl、1个ComboBox、1个EditBox和4个Button,更改资源属性,设置相应的变量,如表1:表1IDPropertiesMemberVariablesTypesMemberIDC_STATIC默认CStatic*m_PicStatic4IDC_MENU_DATAGRIDCaption:菜品表,MargueeStyle:3-dbgHighlightRowCDataGridm_DishesDataGridIDC_DISHES_DATAGRIDCaption:点菜表,MargueeStyle:3-dbgHighlightRowCDataGridm_MenuDataGridIDC_ADD_IN无CaptionCShadeButtonSTm_btn_AddIDC_MOVE_OUT无CaptionCShadeButtonSTm_btn_RemoveIDOKCaption:确定点餐,OwnerDrawCBitmapButtonm_btn_OrderClarifyIDC_SCORECaption:评分,OwnerDrawCBitmapButtonm_btn_Mark3)关键程序代码使用外部变量:externCClientTerminalApptheApp;//将其添加在ClientTerminalDlg.cpp文件最前面程序运行后先启动终端初始化窗口,用于配置所要连接的系统管理终端的IP地址和端口号,并设置其所在桌号。然后初始化网络连接,并尝试20次以连接系统管理终端,并设置定时器,使终端每隔2s测试网络状况。最后,清理终端显示,并创建评分对话框。//顾客终端初始化voidCClientTerminalDlg::SystemInit(){//显示终端初始化窗口……//系统管理连接初始化m_ServerIP=m_TIDlg.m_IP;m_ServerPort=m_TIDlg.m_SerPort;//连接管理系统服务器ConnectInit();m_ConnectNormal=FALSE;//连接非正常//连接服务器BOOLbRet=m_Socket.Connect(m_ServerIP,m_ServerPort);intnNum=0;while(!bRet){nNum++;bRet=m_Socket.Connect(m_ServerIP,m_ServerPort);if(nNum20){MessageBox(_T(连接服务器超时,系统将自动进行连接!),_T(友情提示));break;}}if(bRet==TRUE){//发送连接消息5CMessageMsg;Msg.CreateMsg(OSM_CONNECT,OST_CLIENT|m_CTDeskID,OST_SERVER|0x0001);m_Socket.Send(&Msg,sizeof(CMessage));m_ConnectNormal=TRUE;//连接正常}//每2s重连一次m_ReconnectNum=0;SetTimer(3,2000,NULL);//图片相关的初始化m_hPhotoBitmap=NULL;m_pBMPBuffer=NULL;//清空终端的记录ClearTerminal();//控制单击变双击事件参数初始化m_MenuClickCount=0;m_DishesClickCount=0;//创建评分对话框m_pSDDlg=newCScoreDlg;}清除点菜终端信息,m_HasOrdered记录终端是否有点菜行为,同时m_DishesTotal记录所点菜品总数,以便于控制退菜操作://清除点菜终端信息voidCClientTerminalDlg::ClearTerminal(){//清除显示的图片DestroyPhoto();((CStatic*)GetDlgItem(IDC_DISHES_PICTURE))-SetBitmap(m_hPhotoBitmap);//禁用点菜和评分按钮,m_HasOrdered设为FALSE,表示未点餐m_HasOrdered=FALSE;m_btn_Mark.EnableWindow(m_HasOrdered);((CComboBox*)GetDlgItem(IDC_COMBO2))-SetCurSel(0);m_btn_OrderClarify.EnableWindow(m_HasOrdered);//点菜时间置空m_DishTime.Empty();//点菜份数置为m_DishesTotal=0;//按菜品编号,显示所有菜品SearchAndDisplay(SC_DISHES_NAME);m_DishesDataGrid.SetRefDataSource(NULL);m_DishesDataGrid.Refresh();}搜索菜品信息://依据检索式和检索条件设置列表显示状态6voidCClientTerminalDlg::SearchAndDisplay(intcondition,CStringsearch){//在菜单表中显示结果CStringselected;switch(condition){caseSC_DISHES_NAME:selected.Format(EXECSearchDishes'%%%%%s%%%%',search);/**/break;caseSC_COOK_NAME:selected.Format(EXECSearchSpecialty'%%%s%%',search);break;}//依据检索式刷新菜品列表RefreshTable(selected,m_MenuDataGrid);}点菜操作://将菜品表中所选菜品添加到点菜表中voidCClientTerminalDlg::OnAddIn(){if(m_HasOrdered==TRUE){MessageBox(_T(抱歉,系统暂不支持追加菜品!),_T(友情提示));return;}if(m_MenuDataGrid.GetRow()==-1){MessageBox(没有选择所要点的菜品!,友情提示);return;}//设置点菜时间if(m_DishTime.IsEmpty()){CTimetime=CTime::GetCurrentTime();m_DishTime=time.Format(%Y-%m-%d%H:%M:%S);//启用点菜按钮m_btn_OrderClarify.EnableWindow(TRUE);}//获取选择的列的信息CStringdishid,cookid;intcon=GetSelected(dishid,cookid,m_MenuDataGrid);//设置SQL语句,向点菜表中插入新数据CStringinserted,selected;switch(con){caseSC_COOK_NAME:inserted.Format(EXECDishedFuction'%s',%d,'%s','%s',m_DishTime,m_CTDeskID,dishid,cookid);break;7caseSC_DISHES_NAME:inserted.Format(EXECDishedFuction'%s',%d,'%s','NONE',m_DishTime,m_CTDeskID,dishid);break;}//录入点菜表theApp.m_DbOp.InsertItem(inserted);//刷新点菜列表selected.Format(EXECSearchDished'%s',%d,m_DishTime,m_CTDeskID);RefreshTable(selected,m_DishesDataGrid);//点菜份数自增m_DishesTotal+=1;}确定点餐,不能实现菜品追加的功能,同时网络异常时也不能完成点菜操作:voidCClientTerminalDlg::OnOK(){if(m_HasOrdered==TRUE){MessageBox(_T(抱歉,系统暂不支持追加菜品!),_T(友情提示));return;}//修改点餐时间为点击“确定点餐”时的时间if(SetRealDishedTime()==FALSE){MessageBox(_T(点菜时出现问题,请联系服务人员!),_T(友情提示));return;}if(m_ConnectNormal==FALSE){//如果网络未连接,则不能点菜MessageBox(_T(网络连接异常,2秒后重试!),_T(友情提示));return;}CMessageMsg;//向系统管理发送“点菜消息”Msg.CreateMsg(OSM_DISHED,OST_CLIENT|m_CTDeskID,OST_COOK|0x0001,m_DishTime);m_Socket.Send(&Msg,sizeof(CMessage));m_HasOrdered=TRUE;//评分按钮可用,m_HasOrdered设为TRUEm_btn_Mark.EnableWindow(m_HasOrdered);}退菜操作,当菜品全退回时,禁用“确定点餐”按钮:voidCClientTerminal
本文标题:酒店点餐系统4-顾客终端模块设计
链接地址:https://www.777doc.com/doc-4898276 .html