📄 cai1.c
字号:
libread(type);
total_select++;
total_num[type[0] - '1']++;
libset(i, PRICE);
libread(cdata);
strmul(number, cdata, 8);
stradd(cdata, money, 8);
}
}
moveto(3,1);
putstr_h("冷菜: ");
len=itos(total_num[0], cdata);
cdata[len] = '\0';
putstr_h(cdata);
moveto(5,1);
putstr_h("热菜: ");
len=itos(total_num[1], cdata);
cdata[len] = '\0';
putstr_h(cdata);
moveto(7,1);
putstr_h("汤煲: ");
len=itos(total_num[2], cdata);
cdata[len] = '\0';
putstr_h(cdata);
moveto(9,1);
putstr_h("酒水: ");
len=itos(total_num[3], cdata);
cdata[len] = '\0';
putstr_h(cdata);
moveto(11,1);
putstr_h("总价: ");
putstr_h(money);
putstr_h("元");
moveto(15,14); /* 屏幕定位 */
putstr(" "); /* 覆盖屏幕右下角的"123" */
moveto(15,1);
putstr_h("ENTER看详细信息");
do
{
f = key(0);
}
while ( f!= ENTER);
curr_record = 0;
j = 0;
do {
total_select = 0;
for(i = 0; i < total; i++) {
libset(i, NUMBER);
libread(number);
if (strlen(number) == 0)
{
num = 0;
}
else
num = stoi(strlen(number), number);
if (num != 0)
{
total_select++;
}
}
clsn(1,16);
for(i = 0; i < 3; i++) {
while (curr_record < total)
{
libset(curr_record, NUMBER);
libread(number);
if (strlen(number) == 0)
{
num = 0;
}
else
num = stoi(strlen(number), number);
if (num != 0) {
j++;
break;
}
curr_record++;
}
if (curr_record >= total || j > total_select)
break;
moveto(i*4+1,1);
libset(curr_record, ID);
libread(id);
putstr_h(id);
putstr_h(" ");
libset(curr_record, NAME);
libread(name);
putstr_h(name);
moveto(i*4+3,5);
libset(curr_record, PRICE);
libread(price);
putstr_h(price);
putstr_h("元×");
putstr_h(number);
curr_record++;
}
clsn(13,4);
moveto(13,1);
if ( curr_record >= total || j >= total_select)
{
end_flag = 1;
putstr_h("F1修改,F2写卡\nENTER退出");
}
else {
putstr_h("F1修改,F2写卡\nENTER继续");
}
do
{
f = key(0);
}
while (f!= F1 && f!=F2 && f!=ENTER);
if (f == F1)
{
change();
goto sel_1;
}
if (f == F2)
{
writetocard();
return;
}
if (end_flag)
{
break;
}
} while (1);
return;
}
/* 结束点菜 */
void finish()
{
exit(0);
}
/* 将取出的当天日期格式由yy.mm.dd转换为yyyymmdd */
void dateup(xdata uchar *d)
{
xdata char d1[9];
getdate(d1);
if(d1[0]=='9')
{
d[0]='1';
d[1]='9';
}
else
{
d[0]='2';
d[1]='0';
}
d[2]=d1[0];
d[3]=d1[1];
d[4]=d1[3];
d[5]=d1[4];
d[6]=d1[6];
d[7]=d1[7];
d[8]=0;
}
/* 从键盘接收一串全高数字字符,带回显,存放在cdata */
/* 入口: n1为欲显示的原cdata中数据的长度,n2为最多允许接收的数据长度,reg为0时只可接收数字,为1时可接收字母,运算符等 */
/* 出口: 返回接收字符串的长度,字符串为空时返回0(若按下数值键后再按功能键,则把功能键值存放在cdata[2],若首先就按下功能键,则把该键值存放在cdata[1] */
uchar ksh(xdata uchar *cdata,xdata uchar n1,xdata uchar n2,xdata uchar reg)
{
xdata uchar x1,x2,y1,y2,k,i1,i2,f,end=0;
i1=n1;
x1=getx();
y1=gety();
if(n1!=0)
putn_h(n1,cdata);
do
{
if(i1!=n2)
{
putch_h('_');
x2=getx();
y2=gety()-1;
}
else
{
x2=getx();
y2=gety();
}
moveto(x2,y2);
ksh_1: k=key(0);
if(reg==0)
{
if(i1==n2&&k>=0x30&&k<=0x39)
goto ksh_1;
if(k<0x30||k>0x39&&k!=0x82)
end=1;
}
if(reg==1)
{
if(k==0x80)
goto ksh_1;
if(i1==n2&&!(k==0x8d||k==0x87||k==0x88||k==0x89||k==0x8e||k==0x8f||k==0x82))
goto ksh_1;
if(k==0x8d||k==0x87||k==0x88||k==0x89||k==0x8e||k==0x8f)
end=1;
}
cdata[i1]=k;
if(end)
{
f=0;
if(i1==0)
{
cdata[0]=0;
cdata[1]=k;
moveto(x1,y1);
putch_h(' ');
moveto(x1,y1);
}
else
{
if(k==0x8d)
{
cdata[i1]=0;
if(i1!=n2)
putch_h(' ');
f=i1;
}
else
{
cdata[0]=0;
cdata[1]=0;
cdata[2]=k;
moveto(x1,y1);
for(i2=0;i2<=y2-y1;i2++)
putch_h(' ');
}
}
return(f);
}
if(k==0x82)
{
if(i1!=0)
{
putch_h(' ');
i1=i1-1;
y2=y2-1;
moveto(x2,y2);
}
}
else
{
putch_h(cdata[i1]);
i1=i1+1;
}
}while(1);
}
void writetocard()
{
xdata uchar id[ID_LEN+1], number[NUMBER_LEN+1], cdata[2];
xdata uchar addr;
xdata int i, j, len, num;
cardtype(1);
cls();
moveto(3,5);
putstr_h("请插卡!");
while(cardtest());
poweron();
if (cardcomp(6, "FFFFFF"))
{
cls();
moveto(3,5);
putstr_h("密码错误!");
key(0);
return;
}
clsn(1,16);
moveto(3,3);
putstr_h("正在写卡...");
j = 0;
for(i = 0; i < total; i++) {
libset(i, NUMBER);
libread(number);
if (strlen(number) == 0)
{
num = 0;
}
else
num = stoi(strlen(number), number);
if (num != 0)
{
libset(i, ID);
libread(id);
addr = (uchar)(0x24 + j * (ID_LEN + 1));
cardwrit(0, addr, ID_LEN, id);
len = strlen(number);
stoi(len, number);
cdata[0] = stoi(len, number);
cardwrit(0, addr+3, 1, cdata);
j++;
}
}
cdata[0] = j;
addr = 0x20;
cardwrit(0, addr, 1, cdata);
poweroff();
clsn(1,16);
moveto(3,3);
putstr_h("写卡完成!");
key(0);
return;
}
void change()
{
xdata int num, j, curr_record;
xdata uchar id[ID_LEN+1], number[NUMBER_LEN+1];
xdata uchar f, cdata[7];
do {
sel_1:
clsn(15,2);
moveto(15,1);
putstr("输入编号:");
moveto(15,10);
putstr_h(" ");
moveto(15,10);
f=ksh(cdata,0,3,0); /* 等待输入一串字符,只允许是数字,最多2位 */
if(f==0) { /* 输入不是数字加确认键 */
if (cdata[1] == 0) /* 若输入是数值加其它功能键 */
{
bell(5);
continue;
} else { /* 否则所按第一个键即为功能键 */
if (cdata[1] == ENTER)
{
return; /* 退回上层菜单 */
}
moveto(15,1);
putstr_h("输入错误!");
bell(5);
clsn(15,2);
}
}
} while(!f);
for (j = 0; j < total; j++)
{
libset(j, ID);
libread(id);
if (!strncmp(cdata, id, 3))
{
break;
}
}
if (j >= total)
{
moveto(15,1);
putstr_h("未找到该菜!");
bell(5);
goto sel_1;
}
libset(j, NUMBER);
libread(number);
if (strlen(number) == 0)
{
num = 0;
}
else
num = stoi(strlen(number), number);
if (num == 0)
{
clsn(13,4);
moveto(13,1);
putstr("你未点该菜,F1点该菜,ENTER退出");
do
{
f = key(0);
}
while (f != F1 && f != ENTER);
if (f == ENTER)
{
return;
}
}
select_cai(j);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -