nh1.cpp

来自「DOS下一个完整的大型程序源代码」· C++ 代码 · 共 118 行

CPP
118
字号
#include <String.h>
#include <StdIO.h>
#include <IO.h>

#define Uses_DBase
#define Uses_Blood
#include <ly.h>

#include "sjcfg.h"
#include "sjdbf.h"

Config config;
static BOOL IsFree( long lNo )
{
   for( int j = 0; j < 5; j ++ )
     if( lNo >= config.lFree[ j ][ 0 ] &&
         lNo <= config.lFree[ j ][ 1 ] ) return TRUE;
   return FALSE;
}

const nameLen = 30;
struct HJD04
{
   long lTel;
   char szUserName[ nameLen ];
   char szAdd[ 30 ];

   int  nType;
   int  nMask1;
   int  nMask2;
   long lZero[ 4 ];

   long lChg[ 4 ];

   long lLCTChg;
   long lLCTAdd;
   long lLCTTimes1;
   long lLCTTimes2;

   long lSBTChg;
   long lSBTAdd;
   long lSBTSc;
   long lSBTTimes;

   long lLDTChg;
   long lLDTAdd;
   long lLDTSc;
   long lLDTTimes;

   long lNewChg;
   long lRChg;
};

#if defined( ShiZhu )
const fdAddChg = fdLCTChg;
#elif defined( YouYang )
const fdAddChg = fdTOMChg;
#endif

void main()
{
   InitGraph();

   FILE *fp = fopen( "SJ.CFG", "rb" );
   if( fp == NULL ) Error( "配置丢失,需要管理员重新配置" );
   fread( &config, sizeof( Config ), 1, fp );
   fclose( fp );

   DBase *dbfSj = new DBase( "SJ.DBF", tpNoLoad );

   const hjd04Size = sizeof( HJD04 );
   fp = fopen( "MONBU", "rb" );
   if( fp == NULL ) Error( "MONBU文件不存在" );
   long lCount = filelength( fileno ( fp ) ) / hjd04Size;
   Blood *blood = new Blood( "正在处理", lCount );

   HJD04 hjd04;
   long lNo = 1, lUser = 0, lRec = 0;
   for( long i = 0; i < lCount; i ++ )
   {
      blood->Increase();
      fread( &hjd04, hjd04Size, 1, fp );

      if( hjd04.lTel == 0 ) continue;
      if( IsFree( lNo ++ ) ) continue;

      char szTel1[ flTel + 1 ];
      dbfSj->GetField( lRec, fdTel, szTel1 );
      szTel1[ flTel ] = 0;

      char szTel2[ flTel + 1 ],
           str[ flTel + 1 ];
      memset( szTel2, ' ', flTel );
      szTel2[ flTel ] = 0;
      sprintf( str, "%lx", hjd04.lTel ); // Tel.
      memcpy( szTel2, str, strlen( str ) );

      if( memcmp( szTel1, szTel2, flTel ) != 0 )
        Error( "SJ.DBF 和 MONBU 的电话号码不一样" );

      double dSBTChg = ( double )( hjd04.lSBTChg + hjd04.lSBTAdd ) / 100.0;
      //dSBTChg = -100;
      if( dSBTChg > 0.005 ) lUser ++;
      dbfSj->Replace( lRec, fdAddChg,
                      dbfSj->GetDouble( lNo, fdAddChg ) + dSBTChg );
      lRec ++;
   }
   delete blood;
   fclose( fp );
   delete dbfSj;

   char str[ 100 ];
   sprintf( str, "共有%lu个用户, %lu个用户农话费不为0", lRec, lUser );
   ShowMessage( str );

   CloseGraph();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?