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 + -
显示快捷键?