📄 sj.cpp
字号:
#if !defined( __STDIO_H )
#include <StdIO.h>
#endif // __STDIO_H
#if !defined( __STRING_H )
#include <String.h>
#endif // __STRING_H
#if !defined( __STDLIB_H )
#include <StdLib.h>
#endif // __STDLIB_H
#define Uses_Window
#define Uses_Menu
#define Uses_DBase
#include <ly.h>
#include "sj.h"
#include "sjcfg.h"
#include "sjmenu.h"
#include "sjdbf.h"
Config config;
char szSJDbf[] = "SJ.DBF";
char szQfDbf[] = "QF.DBF";
char fnCjDbf[] = "CJ.DBF";
static char szCfgName[] = "SJ.CFG";
SJ::SJ()
{
InitGraph();
SetPageLength( 30 );
static char szTytle[]=" ~A电话费现场收缴系统 ~D版本2.2 ~B四川省高新通讯工程公司 ~F版权所有 ~E作者:杨千栋";
sjWin = new Window( 0, 640, 479, szTytle, tpNoSave );
AddMenu();
ClearStatus();
ShowStatus();
SetIdle( ShowClock );
FILE *fp = fopen( szCfgName, "rb" );
if( fp == NULL ) Error( "配置丢失,需要管理员重新配置" );
fread( &config, sizeof( Config ), 1, fp );
fclose( fp );
InitPassword( config.szPassword );
ReadZnjFree();
dbfSJ = new DBase( szSJDbf, tpNoLoad );
dbfQf = new DBase( szQfDbf, tpNoLoad );
dbfLog = new DBase( "LOG.DBF", tpNoLoad );
dbfDuty = new DBase( "DUTY.DBF" );
InitNet();
}
void SaveConfig()
{
FILE *fp = fopen( szCfgName, "wb" );
fwrite( &config, sizeof( Config ), 1, fp );
fclose( fp );
}
BOOL DateCmp( date& d1, date& d2 )
{
if( d1.da_year < d2.da_year ) return -1;
else if( d1.da_year == d2.da_year )
{
if( d1.da_mon < d2.da_mon ) return -1;
else if( d1.da_mon == d2.da_mon ) return d1.da_day - d2.da_day;
else return 1;
}
else return 1;
}
static BOOL CheckDate( char* szDate, date& d )
{ // 012345678901234567890
char str[ 11 ]; // 1997/02/05-1997/02/13
strcpy( str, szDate );
str[ 4 ] = str[ 7 ] = 0;
d.da_year = atoi( str );
if( d.da_year < 1996 && d.da_year > 2100 ) return FALSE;
d.da_mon = atoi( str + 5 );
if( d.da_mon < 1 && d.da_mon > 12 ) return FALSE;
d.da_day = atoi( str + 8 );
if( d.da_day < 1 && d.da_day > 31 ) return FALSE;
return TRUE;
}
void SJ::ReadZnjFree()
{
nZnjFree = 0;
FILE* fp = fopen( "SJ.ZNJ", "r" );
if( fp == NULL ) return;
char str[ 201 ];
while( fgets( str, 200, fp ) )
{
if( *str < '0' || *str > '9' ) continue;
str[ strlen( str ) - 1 ] = 0;
str[ 10 ] = 0;
if( !CheckDate( str, dZnjFree1[ nZnjFree ] ) ||
!CheckDate( str + 11, dZnjFree2[ nZnjFree ] ) ||
DateCmp( dZnjFree1[ nZnjFree ], dZnjFree2[ nZnjFree ] ) > 0 )
Error( "文件SJ.ZNJ中存在错误的日期" );
nZnjFree ++;
}
fclose( fp );
}
SJ::~SJ()
{
SaveConfig();
delete dbfSJ;
delete dbfQf;
delete dbfLog;
delete dbfDuty;
delete sjMenu;
delete sjWin;
CloseGraph();
}
void SJ::HandleEvent()
{
if( DoSJ() ) return;
ShowStatus();
Event event;
for(;;)
{
while( !GetEvent( event ) );
sjMenu->HandleEvent( event );
sjWin->HandleEvent( event );
if( event.what == evCommand )
{
switch( event.command )
{
case cmDoSJ:
if( DoSJ() ) return;
break;
case cmPrintQf:
//if( CheckPassword() ) PrintQf();
PrintQf();
break;
case cmPrintUser:
PrintUser();
break;
case cmClose:
case cmQuit:
return;
case cmBrowLog:
BrowLog();
break;
case cmPrintLog:
PrintLog();
break;
case cmDayCount:
DayCount();
break;
case cmMonthCount:
MonthCount();
break;
case cmYearCount:
YearCount();
break;
case cmSetPassword:
if( CheckPassword() ) SetPassword();
break;
case cmRegisterDuty:
if( CheckPassword() ) RegisterDuty();
break;
case cmInputQf:
if( CheckPassword() ) InputQf();
break;
case cmLoadDbf:
if( CheckPassword() ) LoadDbf();
break;
case cmSetFree:
if( CheckPassword() ) SetFree();
break;
case cmPrintStop:
//if( CheckPassword() ) PrintStop();
PrintStop();
break;
case cmReloadDbf:
if( CheckPassword() ) ReloadDbf();
break;
case cmSendYyDbf:
//if( CheckPassword() ) SendYyDbf();
SendYyDbf();
break;
case cmCancel:
case cmAbout:
About();
break;
case cmHelp:
Help();
break;
}
ShowStatus();
}
}
}
void SJ::About()
{
static char *szAboutText[] =
{
"话费现场收缴系统",
"版本: 2.2",
"四川省高新通讯工程公司 版权所有",
"(c)1996-1999",
"作者: 杨千栋",
NULL
};
extern char szAboutIcon[];
ShowMessage( "关于", szAboutText, szAboutIcon );
}
void SJ::Help()
{
static char *szHelp[] =
{
"■您可以按 ALT-X 键或选择菜单项〔收缴〕 ",
" 下的〔退出〕以退出本系统。 ",
"■窗口上部为标题栏,标题栏下为菜单条,本",
" 系统的所有功能都可以通过用鼠标选择菜单",
" 来完成。使用每个功能都可以获取帮助。 ",
"■窗口底部为提示栏,提示几个常用的功能键",
" 还显示出当前的日期和时间。 ",
NULL
};
ShowHelp(szHelp);
}
void SJ::ShowStatus()
{
::ShowStatus( "~CF2~0收缴 ~CF3~0查询日志 ~CALT+X~0退出" );
}
void main()
{
StartUp( "\\SJ" );
static SJ sj;
sj.HandleEvent();
}
void SJ::PrintQf()
{
MessageBox( "正在打印,按Esc退出..." );
int nFields[] = { fdTel, fdCNo, fdName, fdRChg, -1 };
if( PrnReady() && dbfSJ->PrintTytle( nFields ) )
{
for( long i = 0; i < dbfSJ->GetRecordNum(); i++ )
{
char szOk[ flBool ];
dbfSJ->GetField( i, fdOk, szOk );
if( *szOk == 'F' )
if( !dbfSJ->PrintRecord( i, nFields ) ) break;
}
}
NewPage();
DeleteMsgBox();
}
void SJ::PrintUser()
{
MessageBox( "正在打印,按Esc退出..." );
LoadIndex();
char szTel[ flTel + 1 ];
szTel[ flTel ] = 0;
int nFields[] = { fdQfTel, fdQfDate, fdQfRChg, -1 };
if( PrnReady() && dbfQf->PrintTytle( nFields ) )
{
for( long i = 0; i < dbfQf->GetRecordNum(); i++ )
{
dbfQf->GetField( i, fdQfTel, szTel );
if( SearchTel( szTel ) == 0xffff )
if( !dbfQf->PrintRecord( i, nFields ) ) break;
}
}
NewPage();
CloseIndex();
DeleteMsgBox();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -