⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 样板抄表程序.c

📁 电力或水行业手持PDA应用样板程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/*****************************************************\
**
**                      抄表机应用程序例程源代码(仅供参考)
**
**                      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 + -