📄 main_func.c.bak
字号:
break;
}
}
memset(p_client_rec->serial_menu_NO,'0',sizeof(p_client_rec->serial_menu_NO));
p_client_rec->serial_menu_quant = 0;
memcpy(p_client_rec->menu_NO,p_menu_rec->id,sizeof(p_menu_rec->id));
p_client_rec->menu_quant = menu_quant;
if(k==2) {
select_appenda(arr_dish_namelzm,p_client_rec,&lPtr,&cPtr,k++);
k--;
}
//if(k<MAX_APPEND_PERMIT) {
if(k==0) memset(p_client_rec->append[k],0,16);
if(k==2) {
memset(p_client_rec->append[2],0,16);
memset(p_client_rec->append[3],0,16);
memset(p_client_rec->append[4],0,16);
}
if(k==3) {memset(p_client_rec->append[3],0,16);memset(p_client_rec->append[4],0,16);}
if(k==4) memset(p_client_rec->append[4],0,16);
for(++k;k<MAX_APPEND_PERMIT;k++){
memset(p_client_rec->append[k],0,16);
//DispStr_CE(0,2,"没错",DISP_CENTER|DISP_CLRSCR);
//delay_and_wait_key(0,EXIT_KEY_ALL,0);
}
//}
for(i=0;i<MAX_APPEND_PERMIT;i++)
{
if(ac_wage>=100) memset(p_client_rec->append[i],0,16);
}
return SUCCESSFUL;
}
//-------------------------------------------------------------------------------------
//Function : get_new_start_item_dish
//Description: 选择菜品时,当用户输入字符串时,调节显示位置,返回新的显示位置
//Input : p_arr_ids 在表(ID_TAB_MENU)中的位置数组,非id号
// num_ids - p_arr_ids长度 ac_wage还不是很好
// method - 0:编号 1:拼音
// str_input - 客户输入的字符串
// len_str_input - 客户输入的字符串长度
//Output : p_new_start_item 新的显示位置,以p_arr_ids起点为0
//Return : FAILURE 没有找到
// SUCCESSFUL 找到
//-------------------------------------------------------------------------------------
short get_new_start_item_dish(const unsigned long *p_arr_ids,unsigned long num_ids,int method,
const unsigned char *str_input,int len_str_input,unsigned long *p_new_start_item)
{
int i;
char flag;
tab_menu *p_menu_rec;
int pos_start=0,pos_end=num_ids-1,pos_m;
short ret;
//二分法,此处为顺序排列,从小到大
/* TRACE(str_input);
sprintf(str_dsp,"len:%d:%d:%d",len_str_input,num_ids,method);
TRACE(str_dsp);
sprintf(str_dsp,"%d:%d:%d",p_arr_ids[0],p_arr_ids[1],p_arr_ids[2]);
TRACE(str_dsp);
getch();*/
if(len_str_input<=0)
{
*p_new_start_item = 0;
return SUCCESSFUL;
}
if(num_ids<=0) return FAILURE;
pos_start = 0;
pos_end=num_ids-1;
pos_m = (pos_start+pos_end)/2;
while(1)
{
p_menu_rec = (tab_menu*)DB_jump_to_record(ID_TAB_MENU,p_arr_ids[pos_m],&flag);
if(method==0) ////编号
{
ret = memcmp(p_menu_rec->id,str_input,len_str_input);
}else { //拼音
ret = memcmp(p_menu_rec->abbr,str_input,len_str_input);
}
if(ret>0)
{
pos_end = pos_m;
} else if(ret<0){
pos_start = pos_m;
} else {
if(pos_m>0)
{
for(i=pos_m-1;i>=0;i--)
{
p_menu_rec = (tab_menu*)DB_jump_to_record(ID_TAB_MENU,p_arr_ids[i],&flag);
if(method==0) ////编号
{
ret = memcmp(p_menu_rec->id,str_input,len_str_input);
}else { //拼音
ret = memcmp(p_menu_rec->abbr,str_input,len_str_input);
}
if(ret == 0)
{
pos_m = i;
} else break;
}
}
*p_new_start_item = pos_m;
return SUCCESSFUL;
}
pos_m = (pos_start+pos_end)/2;
if(pos_m==pos_start||pos_m==pos_end)
{
p_menu_rec = (tab_menu*)DB_jump_to_record(ID_TAB_MENU,p_arr_ids[pos_start],&flag);
if(method==0) ////编号
{
ret = memcmp(p_menu_rec->id,str_input,len_str_input);
}else { //拼音
ret = memcmp(p_menu_rec->abbr,str_input,len_str_input);
}
if(ret == 0)
{
*p_new_start_item = pos_start;
return SUCCESSFUL;
}
p_menu_rec = (tab_menu*)DB_jump_to_record(ID_TAB_MENU,p_arr_ids[pos_end],&flag);
if(method==0) ////编号
{
ret = memcmp(p_menu_rec->id,str_input,len_str_input);
}else { //拼音
ret = memcmp(p_menu_rec->abbr,str_input,len_str_input);
}
if(ret == 0)
{
*p_new_start_item = pos_end;
return SUCCESSFUL;
}
//TRACE("No find err");
//getch();
return FAILURE;
}
//sprintf(str_dsp,"%d:%d:%d,%d",pos_start,pos_m,pos_end,p_arr_ids[pos_m]);
//TRACE(str_dsp);
//getch();
}
return FAILURE;
}
//---------------------------------------------------------------------------------------------
//Function : order_dish
//Description: 点单个菜
//Input : None
//Output : None
//Return : SUCCESSFUL,-1
//---------------------------------------------------------------------------------------------
short order_dish()
{
int cur_start_item_addr=0,cur_sel_line=1,cur_method=0;
int new_start_item_addr,new_sel_line,new_method;
short ret;
tab_client_menu rec;
unsigned long selected_dish_pos=0;
int counter;
unsigned char str_dsp[100];
new_start_item_addr = cur_start_item_addr;
new_sel_line = cur_sel_line;
new_method = cur_method;
while(1)
{
//update the parameters
cur_start_item_addr = new_start_item_addr;
cur_sel_line = new_sel_line;
cur_method = new_method;
//1.select disk name
ret = select_dish(cur_start_item_addr,cur_sel_line,cur_method,
&new_start_item_addr,&new_sel_line,&new_method,&selected_dish_pos);
if(ret != SUCCESSFUL) return ret;
//2.input dish quant and append items
ret = input_dish_rec_info(selected_dish_pos,&rec);
if(ret!=SUCCESSFUL) continue;
//3.add a record to database
counter_client_disk_total(&counter);
if(counter>=MAX_CLIENT_DISH)
{
DispStr_CE(0,3,"已点菜超过最大值",DISP_CENTER|DISP_CLRSCR);
sprintf(str_dsp,"现有菜%d个",counter);
DispStr_CE(0,5,str_dsp,DISP_CENTER);
delay_and_wait_key(3,EXIT_KEY_ALL,0);
return FAILURE;
}
if(!DB_add_record(ID_TAB_CLIENT_MENU,&rec))
{
DispStr_CE(0,2,"添加点菜纪录失败",DISP_CENTER|DISP_CLRSCR);
delay_and_wait_key(0,EXIT_KEY_ALL,0);
return -1;
}
}
return SUCCESSFUL;
}
//---------------------------------------------------------------------------------------------
//Function : disp_client_counter_result
//Description: 显示客户已经点菜的统计结果,此时按F3键加公共附加项
//Input : None
//Output : None
//Return : SUCCESSFUL
//---------------------------------------------------------------------------------------------
short disp_client_counter_result()
{
short ret;
unsigned long total,total_money,num_cool,num_hot;
unsigned char strbuf[50];
//1.统计结果
ret = counter_client_dish(&total,&total_money,&num_cool,&num_hot);
if(ret != SUCCESSFUL ) return ret;
//2.显示
sprintf(strbuf,"共%d个菜",total);
DispStr_CE(0,0,strbuf,DISP_POSITION|DISP_CLRSCR);
sprintf(strbuf,"合计%d.%02d元",total_money/10000,total_money/100%100);
DispStr_CE(0,2,strbuf,DISP_POSITION);
sprintf(strbuf,"凉菜:%d 热菜:%d",num_cool,num_hot);
DispStr_CE(0,4,strbuf,DISP_POSITION);
// sprintf(strbuf,"已上传%d个菜",num_upld);
// DispStr_CE(0,6,strbuf,DISP_POSITION);
//3.按F3键加公共附加项
if(delay_and_wait_key(0,EXIT_KEY_ALL,0)==EXIT_KEY_F3)
{
}
return SUCCESSFUL;
}
//---------------------------------------------------------------------------------------------
//Function : get_a_client_dish_rec_disp_str
//Description: 读取客户点菜记录的字符串
//Input : d_type -- 记录的类型 0: 当前记录表 1:历史备份数据 2.暂存数据
// seq_backup -- 备份数据,备份序号
// pos_rec_db -- 在数据库客户点菜记录表(tab_client_dish或备份数据)中的位置序号
// seq_disp -- 显示序号 example: 1.xxxxxxxxxxx 中的 1
//Output : p_disp_str -- 返回的32个字节长指针
//Return : FAILURE
// SUCCESSFUL
//---------------------------------------------------------------------------------------------
short get_a_client_dish_rec_disp_str(int d_type,int seq_backup,unsigned long pos_rec_db,
unsigned long seq_disp,unsigned char *p_disp_str)
{
unsigned long ret,j;
tab_client_menu *p_client_menu_rec;
tab_menu *p_menu_rec;
char flag;
char strbuf[60],strTmp[60];
int money;
p_client_menu_rec = (tab_client_menu*)DB_jump_to_record_client_data(d_type,seq_backup,pos_rec_db,&flag); //read form client dish table
if(!flag)
{
ret = get_dish_info_by_NO(p_client_menu_rec->menu_NO,&p_menu_rec);
if(ret==SUCCESSFUL)
{
memset(strbuf,0,sizeof(strbuf));
memcpy(strbuf,p_menu_rec->name,sizeof(p_menu_rec->name));
if(p_client_menu_rec->serial_menu_quant)
sprintf(strTmp,"%d#%s",seq_disp,strbuf);
else
sprintf(strTmp,"%d.%s",seq_disp,strbuf);
memset(p_disp_str,' ',16);
memcpy(p_disp_str,strTmp,strlen(strTmp));
memset(strTmp,0,sizeof(strTmp));
for(j=0;j<MAX_APPEND_PERMIT;j++)
{
if(memcmp(p_client_menu_rec->append[j],strTmp,16))
{
add_puls(p_disp_str);
break;
}
}
memset(strbuf,0,sizeof(strbuf));
memcpy(strbuf,p_menu_rec->unit,sizeof(p_menu_rec->unit));
money = p_menu_rec->price*p_client_menu_rec->menu_quant;
if(p_client_menu_rec->menu_quant%100)
sprintf(strTmp," %d.%02d%s%d.%02d",p_client_menu_rec->menu_quant/100,p_client_menu_rec->menu_quant%100,strbuf,money/10000,money%10000);
else
sprintf(strTmp," %d%s%d.%02d",p_client_menu_rec->menu_quant/100,strbuf,money/10000,money%10000);
memset(p_disp_str+16,' ',16);
memcpy(p_disp_str+16,strTmp,strlen(strTmp));
return SUCCESSFUL;
} else {
memset(strbuf,0,sizeof(strbuf));
memcpy(strbuf,p_client_menu_rec->menu_NO,6);
if(p_client_menu_rec->serial_menu_quant)
sprintf(strTmp,"%d#%s",seq_disp,strbuf);
else
sprintf(strTmp,"%d.%s",seq_disp,strbuf);
memset(p_disp_str,' ',16);
memcpy(p_disp_str,strTmp,strlen(strTmp)); //first 16bytes
if(p_client_menu_rec->menu_quant%100)
sprintf(strTmp," 数量:%d.%02d",p_client_menu_rec->menu_quant/100,p_client_menu_rec->menu_quant%100);
else
sprintf(strTmp," 数量:%d",p_client_menu_rec->menu_quant/100);
memset(strbuf,' ',sizeof(strbuf));
memcpy(strbuf,strTmp,strlen(strTmp));
memcpy(p_disp_str+16,strbuf,16); //second 16 bytes
//TRACE("g_c_d_d_s:err g_d_i_no");
//getch();
return SUCCESSFUL;
}
} else {
//TRACE("g_c_d_d_s:err del");
//getch();
return FAILURE;
}
}
//---------------------------------------------------------------------------------------------
//Function : upld_client_dish
//Description: 上传,备份数据
//Input : None
//Output : None
//Return :
//---------------------------------------------------------------------------------------------
short upld_client_dish()
{
short ret,ret1;
char tMenu[3*16+2] = "1.上传数据 2.暂时保存 3.删除数据 \0";
char desk_NO[10],waiter_NO[10],person_num,waiter_PWD[10];
int lPtr=0,cPtr=0;
unsigned char sinput[30];
char strTmp[20];
int rev=0,rev1=0;
char flag;
char strbuf[20];
int tag=0,tag1=0;
//1.选择上传类型
DispStr_CE(0,0,"请选择上传类型:",DISP_POSITION|DISP_CLRSCR);
ret = browse_menu(1,tMenu,&cPtr,&lPtr );
if(ret<0) return ret;
//if(ret==0||ret==1||ret==2)
if(ret==0||ret==1)
{
//2.输入: 台号,工号,密码,人数
g_upld_client_mode = ret;
memset(desk_NO,0,sizeof(desk_NO));
memset(waiter_NO,0,sizeof(waiter_NO));
person_num = 0;
memset(waiter_PWD,0,sizeof(waiter_PWD));
memcpy(desk_NO,g_desk_NO,sizeof(g_desk_NO));
person_num = g_person_num;
memcpy(waiter_NO,g_waiter_NO,sizeof(g_waiter_NO));
memcpy(waiter_PWD,g_waiter_PWD,sizeof(g_waiter_PWD));
ret1 = input_desk_info(desk_NO,&person_num, waiter_NO,waiter_PWD);
if(ret1!=0) return ret1;
if(ret==0) //3.上传通讯
{
ret = comm_upld_client_dish();//上传■■■■■■■■■■■■■■■■■■■■■■■■■■
if(ret == SUCCESSFUL)
{
ret = backup_client_data();
}
}else if(ret==1){//暂时保存
backup_client_data();
}
} //■■■■■■■■■■■■■■■■■■■■■■■■■■
else if(ret==2){//删除数据
rev1=delete_mode();
if(rev1==0||rev1==1)
{
if(rev1==0)
{
//browse_client_dish(0,0,0);
rev=delete_client_menu();
//sprintf(strbuf,"%d",rev);
//DispStr_CE(0,4,strbuf,DISP_POSITION|DISP_CLRSCR);
//delay_and_wait_key(2,EXIT_KEY_ALL,0);
if(rev>-1)
{
clr_scr();
for(tag=0,tag1=0;tag1<=rev;tag++)
{
DB_jump_to_record(ID_TAB_CLIENT_MENU,tag,&flag);
if(tag1==rev&&flag==0) break;
if(flag==2){
continue;
}
if(flag==1)
{
break;
}
if(flag==0){
if(tag1==rev) break;//可以不要
tag1++;
continue;
}
}
if(flag==1)
{
DispStr_CE(0,2,"记录为空!",DISP_POSITION|DISP_CLRSCR);
delay_and_wait_key(2,EXIT_KEY_ALL,0);
}
if(flag==0)
{
ret = input_waiter_NO_PWD(0,0,waiter_NO,waiter_PWD);
if(ret == SUCCESSFUL)
if(tag1==rev){
DB_delete_record(ID_TAB_CLIENT_MENU,tag);
DispStr_CE(0,2,"删除成功!",DISP_POSITION|DISP_CLRSCR);
delay_and_wait_key(2,EXIT_KEY_ALL,0);
}
}
}
}
if(rev1==1)
{
clr_scr();
ret = input_waiter_NO_PWD(0,0,waiter_NO,waiter_PWD);
if(ret == SUCCESSFUL)
ret = backup_client_data();
if(ret == SUCCESSFUL)
{
DispStr_CE(0,2,"数据删除成功!",DISP_POSITION|DISP_CLRSCR);
delay_and_wait_key(2,EXIT_KEY_ALL,0);
}
}
}
} //■■■■■■■■■■■■■■■■■■■■■■■■■■
return ret; //■■■■■■■■■■■■■■■■■■■■■■■■■■
}
//------------------------------------------------------------------------------
//删除方式选择
int delete_mode()
{
int ret;
int cPtr = 0;
int lPtr = 0;
char dMenu[2*16+2] = "1.单条删除 2.全部删除 \0";
//clr_scr();
ret=2;
DispStr_CE(0,0,"请选择删除方式:",DISP_POSITION|DISP_CLRSCR);
//delay_and_wait_key(0,EXIT_KEY_ALL,0);
ret = browse_menu(1,dMenu,&cPtr,&lPtr );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -