?? 樣板抄表程序.c
字號:
**
** 抄表機應用程序例程源代碼(僅供參考)
**
** ModuleName:樣板抄表程序.c
**
** writted by Huang LanQing
**
** Guangzhou Tianxiang Technology Co.,Ltd.
**
\*****************************************************/
#include "header.h" //調用頭文件header.h
//主函數
void main(void)
{
U8 MenuChoice;
const P_U8 MainMenu[]={//菜單顯示格式
"[1]續上次抄",
"[2]抄漏抄表",
"[3]按順序抄",
"[4]查詢抄表",
"[5]抄表統計",
};
U8 szKeyChoice[]={"12345 "};
szKeyChoice[5]=QUERY;
strcpy(dbfname,"chaobiao.dbf");
use(""); //關閉數據庫
if(use(dbfname)!=OK)//打開數據庫,與use("")一起調用,如果不等于ok,即1,則顯示錯誤如下
{
cls();
moveto(1,1); putstr("錯誤:");
moveto(1,3); putstr("類型:數據庫打開錯誤");
moveto(1,5); putstr("原因:1,數據庫未下裝");
moveto(1,7); putstr(" 2,數據庫名不正確");
moveto(1,15);putstr("按任意鍵退出");
key(0);
return;
}
if(reccount<0||reccount==0)//如果數據庫記錄數為0或小于0,數據庫是空庫,顯示以下錯誤并返回
{
cls();
moveto(1,1); putstr("錯誤:");
moveto(1,5); putstr("原因:數據庫為空庫");
moveto(1,15);putstr("按任意鍵退出");
key(0);
return;
}
while(1)
{
cls();
moveto(14,15);
putstr(" ");
moveto(1,1);
putstr(" 某某電力公司");
Show_Date();
drawrect(15,16,110,110);
MenuChoice=popup(3,4,15,13,MainMenu,szKeyChoice,5,5,0);//顯示菜單函數
//MenuChoice=cpopup(MainMenu,szKeyChoice,5,5,0);//顯示菜單函數
switch(MenuChoice)
{
case 0:
Input_Record(Continue_MSG);break;//續上次抄表
case 1:
Input_Record(No_MSG);break; //抄漏抄表
case 2:
Input_Record(Ordinal_MSG);break;//從第一戶開始抄表
case 3:
case 5:
Input_Record(Query_MSG);break; //查詢
case 4:
Statistic_MSG();break; //統計
case 255:
return;
}
}
}
//顯示系統日期
void Show_Date()
{
int i;
U8 nian[5],yue[5],ri[5],date[10];
getdate(date); //取系統日期,存放在date串中,格式為yyyy/mm/dd
for(i=0;i<4;i++) //分別從date串中取年、月、日,存放在nian、yue、ri串中
nian[i]=date[i];
for(i=0;i<2;i++)
yue[i]=date[i+5];
for(i=0;i<2;i++)
ri[i]=date[i+8];
nian[4]=0;
yue[2]=0;
ri[2]=0;
moveto(2,15);
putstr(nian);
putstr("年");
putstr(yue);
putstr("月");
putstr(ri);
putstr("日");
}
//將系統日期由格式yyyy/mm/dd轉換為yyyymmdd
void Get_Date(char *date)
{
int i;
getdate(date); //取系統日期,存放在date串中,格式為yyyy/mm/dd
date[4]=date[5];
date[5]=date[6];
date[6]=date[8];
date[7]=date[9];
date[8]=0;
}
int Open_Archives(int Number)//提檔
{
U8 str[50];
cls();
moveto(14,15);
putstr(" ");
moveto(1,1);
putstr("戶號:");
libset(Number,YHBH);
libread(str);
putn(10,str);
moveto(1,3);
putstr("表號:");
libset(Number,DBBH);
libread(str);
putn(10,str);
moveto(1,5);
putstr("戶名:");
libset(Number,HM);
libread(str);
putstr(str);
moveto(1,7);
putstr("地址:");
libset(Number,YDDZ);
libread(str);
putstr(str);
moveto(1,13);
putstr("電話:");
libset(Number,DHHM);
libread(str);
putstr(str);
moveto(1,15);
putstr("性質:");
libset(Number,YDXZ);
libread(str);
switch(str[0])//根據數據庫中YDXZ字段的數據,如為1表示用電性質為居民,2為工業,3為商業,4為
{
case '1':
putstr("居民");break;
case '2':
putstr("工業");break;
case '3':
putstr("商業");break;
case '4':
putstr("農業");break;
}//switch
key(0);
return MSG_ESC;
}
//此函數顯示基本的信息,包括戶號、表號等等
//bzsign返回是否已抄,已抄:1,未抄:0
char Base_Show(unsigned int Number)
{
U8 str[70],bz,bzSign=0,l;//bzSign用來記錄表是否已抄,已抄:1,未抄:0
cls();
moveto(14,15);
putstr(" ");
drawrect(0,0,127,127);
moveto(2,2);
putstr("戶號:");
libset(Number,YHBH);
libread(str);
putn(10,str);
drawline(0,24,127,24);
moveto(2,5);
putstr("戶名:");
libset(Number,HM);
libread(str);
putn(9,str);
drawline(0,48,127,48);
moveto(2,8);
putstr("倍率:");
libset(Number,BL);
libread(str);
putstr(str);
moveto(2,10);
putstr("上月:");
libset(Number,SYDS);
libread(str);
putstr(str);
moveto(2,12);
putstr("本月:");
moveto(2,14);
putstr("電量:");
libset(Number,YCBZ);
libread(str);
bz=atoi(str);
moveto(12,8);
switch(bz)//根據數據庫中YCBZ字段的數據,如為1表示異常標志為已抄,即正常,2為回零,3為燒表
{
case 0:
putstr("未抄");break;
case 1:
putstr("已抄");break;
case 2:
putstr("回零");break;
case 3:
putstr("燒表");break;
case 4:
putstr("違章");break;
case 5:
putstr("倒行");break;
case 6:
putstr("新換");break;
case 7:
putstr("丟失");break;
case 8:
putstr("異常");break;
default:
putstr("未抄");break;
}
libset(Number,CBBZ);
libread(str);
bz=atoi(str);
if(bz==1)//如果CBBZ為1表示已抄,則顯示本月讀數以及本月電量
{
bzSign=1;
moveto(7,12);
libset(Number,BYDS);
libread(str);
putstr(str);
moveto(7,14);
libset(Number,BYDL);
libread(str);
putstr(str);
}
return bzSign;
}
//處理翻頁鍵,根據flag的不同翻頁,返回記錄號
unsigned int PageUpDown(unsigned int Number,unsigned int direction,unsigned int flag)
{
unsigned int temp,rt;
U8 str[5];
if(flag==No_MSG)//flag==No_MSG表示是抄漏抄戶
{
if(direction==DOWN||direction==ENTER)//DOWN或ENTER向下翻頁
{
rt=Number;
Number++;
str[0]='0';str[1]=0;
libset(Number,CBBZ);
if(liblocate(str,0)==1) temp=currn;
else
{
cls();
draw_border(2,6,15,11);
moveto(4,8);
putstr(" 后無未抄 ");
bell(10);
delay(DELAY_TIME);
temp=rt;
}
if(Number>=reccount)
{
cls();
draw_border(2,6,15,11);
moveto(4,8);
putstr(" 后無未抄 ");
bell(10);
delay(DELAY_TIME);
temp=rt;
}
return temp;
}
else/*否則k=KEY_PAGEUP向前翻頁*/
{
rt=Number;
Number--;
str[0]='0';str[1]=0;
libset(Number,CBBZ);
if(liblocate(str,10)==1) temp=currn;
else
{
cls();
draw_border(2,6,15,11);
moveto(4,8);
putstr(" 前無未抄 ");
bell(10);
delay(DELAY_TIME);
temp=rt;
}
if((int)Number<0)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -