📄 dian.c
字号:
/* 将取出的当天日期格式由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;
}
/* 功能: 按下向上键,记录号减1,按下向下键,记录号加1 */
/* 入口: k为所按键值,r为当前记录号 */
/* 出口: 返回处理后的记录号 */
int fy(xdata char k,xdata int r)
{
xdata int t1;
if(k==0x8e)
{
if(r==0)
{
cls();
moveto(15,14);
putstr(" ");
moveto(5,3);
putstr_h("已到首记录!");
bell(5);
}
if(r>0)
r-=1;
}
else if(k==0x8f)
{
t1=libsumr()-2;
if(r==t1)
{
cls();
moveto(15,14);
putstr(" ");
moveto(5,3);
putstr_h("已到末记录!");
bell(5);
}
if(r<t1)
r+=1;
}
return(r);
}
/* 功能: 按下向上键,记录号为上一未抄记录,按下向下键,记录号为下一未抄记录 */
/* 入口: k为所按键值,r为当前记录号 */
/* 出口: 返回处理后的记录号 */
/* 注: 调用的函数uchar wcpd(xdata int r)用来判断记录是否为未抄,r为要判断的记录号,未抄返回0,已抄返回1 */
int lcfy(xdata uchar k,xdata int r)
{
xdata int r1;
xdata uchar f,bz;
f=1;
if(k==0x8e)
{
for(r1=r-1;r1>=0;r1--)
{
bz=wcpd(r1);
if(bz==0)
{
f=0;
break;
}
}
if(f==0)
r=r1;
if(r1<0)
{
cls();
moveto(15,14);
putstr(" ");
moveto(5,2);
putstr("未抄记录已到首");
bell(5);
}
}
if(k==0x8f)
{
for(r1=r+1;r1<total;r1++)
{
bz=wcpd(r1);
if(bz==0)
{
f=0;
break;
}
}
if(f==0)
r=r1;
if(r1==total)
{
cls();
moveto(15,14);
putstr(" ");
moveto(5,2);
putstr("未抄记录已到末");
bell(5);
}
}
return(r);
}
/* 功能: 搜索与输入字符串相符的记录 */
/* 入口: s为欲比较的字符串,l为字符串长度,fn为欲比较的字段序号 */
/* 出口: 返回数据库中符合条件的第一条记录号,若找不到则返回0xffff */
int ss(xdata uchar *s,xdata uchar l)
{
xdata int r,f;
xdata uchar kdata[20];
cls();
moveto(15,14);
putstr(" ");
moveto(7,3);
putstr("请等待...");
for(r=0;r<total;r++)
{
libset(r,DBH);
libread(kdata);
f=strncmp(kdata,s,l);
if(f==0)
goto ee;
}
for(r=0;r<total;r++)
{
libset(r,CBH);
libread(kdata);
f=strncmp(kdata,s,l);
if(f==0)
break;
}
ee: if(r==total)
r=0xffff;
cls();
return(r);
}
/*帮助程序菜单*/
void help(void)
{
char c,k;
for(;;)
{
cls();
moveto(15,14); /* 屏幕定位 */
putstr(" "); /* 覆盖屏幕右下角的"123" */
moveto(1,6);
putstr_h("帮 助");
moveto(4,1);
putstr_h("1:抄表使用说明");
moveto(6,1);
putstr_h("2:通讯使用说明");
moveto(8,1);
putstr_h("3:样板程序说明");
moveto(10,1);
putstr_h("4:注意事项");
moveto(12,1);
putstr_h("F2:退出");
moveto(15,1);
putstr_h("请选择_");
lab: k=key(0);
if(k!=0x31&&k!=0x32&&k!=0x33&&k!=0x34&&k!=0x89)
goto lab;
switch(k)
{
case 0x89:return;
case 0x31:hlp1();break;
case 0x32:hlp2();break;
case 0x33:hlp4();break;
case 0x34:hlp3();break;
}
}
}
/*抄表使用说明*/
void hlp1(void)
{
char k;
be: cls();
moveto(15,14); /* 屏幕定位 */
putstr(" "); /* 覆盖屏幕右下角的"123" */
moveto(1,1);
putstr_h("(1) 按'开'键后再");
moveto(3,1);
putstr_h("按'运行'键就可运");
moveto(5,1);
putstr_h("抄表程序。");
moveto(7,1);
putstr_h("(2) 抄表时F2键常");
moveto(9,1);
putstr_h("作为返回键,F1键");
moveto(11,1);
putstr_h("常用于查询抄表。");
moveto(13,1);
putstr_h("(3)主菜单<续上次");
moveto(15,1);
putstr_h("抄表> 是指接着上");
l1: k=key(0);
if(k!=0x8f&&k!=0x89) /*F2退出,V向下翻页*/
goto l1;
if(k==0x89)
return;
cls();
moveto(15,14); /* 屏幕定位 */
putstr(" "); /* 覆盖屏幕右下角的"123" */
moveto(1,1);
putstr_h("次已抄电表号的后");
moveto(3,1);
putstr_h("面继续抄表。");
moveto(5,1);
putstr_h("主菜单<抄未抄户>");
moveto(7,1);
putstr_h("是搜索已抄电表中");
moveto(9,1);
putstr_h("未抄的电表。");
moveto(13,1);
putstr_h("F2 返回 ^上V下页");
l2: k=key(0);
if(k!=0x89&&k!=0x8e) /*F2退出,^向上翻页*/
goto l2;
if(k==0x89)
return;
goto be;
}
/*通讯使用说明*/
void hlp2(void)
{
char k;
cls();
moveto(15,14); /* 屏幕定位 */
putstr(" "); /* 覆盖屏幕右下角的"123" */
moveto(1,1);
putstr_h("按'开'键后依次按");
moveto(3,1);
putstr_h("'F1''1',抄表机进");
moveto(5,1);
putstr_h("入通讯状态, 此时");
moveto(7,1);
putstr_h("按其它键无反应,");
moveto(9,1);
putstr_h("若一定要此时退出");
moveto(11,1);
putstr_h("通讯, 须按最上一");
moveto(13,1);
putstr("排中间的'O'键。");
moveto(15,1);
putstr_h("F2 返回");
be: k=key(0);
if(k!=0x89) /*F2退出*/
goto be;
}
/*注意事项*/
void hlp3(void)
{
char k;
be: cls();
moveto(15,14); /* 屏幕定位 */
putstr(" "); /* 覆盖屏幕右下角的"123" */
moveto(1,1);
putstr_h("(1) 请使用充电电");
moveto(3,1);
putstr_h("池,不要使用普通");
moveto(5,1);
putstr_h("碱性电池 (因其电");
moveto(7,1);
putstr_h("压可能为1.7V以上");
moveto(9,1);
putstr_h("(2) 对于刚开机时");
moveto(11,1);
putstr_h("的F1功能,一般由");
moveto(13,1);
putstr_h("计算机人员操作,");
moveto(15,1);
putstr_h("对于抄表人员,操");
l1: k=key(0);
if(k!=0x89&&k!=0x8f) /*F2退出,^向上翻页*/
goto l1;
if(k==0x89)
return;
cls();
moveto(15,14); /* 屏幕定位 */
putstr(" "); /* 覆盖屏幕右下角的"123" */
moveto(1,1);
putstr_h("作不当可能会失误");
moveto(3,1);
putstr_h("(3) 当抄表员有疑");
moveto(5,1);
putstr_h("问时, 请记住当时");
moveto(7,1);
putstr_h("的现象, 并立即告");
moveto(9,1);
putstr_h("知计算机人员, 在");
moveto(11,1);
putstr_h("机房重现当时现象");
moveto(13,1);
putstr_h("从而分析解决问题");
moveto(15,1);
putstr_h("F2 返回 ^上V下页");
l2: k=key(0);
if(k!=0x89&&k!=0x8e) /*F2退出,v向下翻页*/
goto l2;
if(k==0x89)
return;
goto be;
}
/*抄表机程序说明"*/
void hlp4(void)
{
char k;
be: cls();
moveto(15,14); /* 屏幕定位 */
putstr(" "); /* 覆盖屏幕右下角的"123" */
moveto(1,1);
putstr_h("此抄表程序是我公");
moveto(3,1);
putstr_h("司做的一个样板,");
moveto(5,1);
putstr_h("具有一定的代表性");
moveto(7,1);
putstr_h("客户也可以对此程");
moveto(9,1);
putstr_h("序做适当改动,在");
moveto(11,1);
putstr_h("磁盘中有其源程序");
moveto(13,1);
putstr_h("和详细的注解。");
moveto(15,1);
putstr_h("F2 返回");
l1: k=key(0);
if(k!=0x89) /*F2退出*/
goto l1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -