📄 yy.cpp
字号:
void CmHelp();
public:
SetCjTimeDialog() :
MDialog( GetMainWindow(), "SetCjTimeDialog" ) {}
DECLARE_RESPONSE_TABLE( SetCjTimeDialog );
};
DEFINE_RESPONSE_TABLE1( SetCjTimeDialog, MDialog )
EV_COMMAND( IDOK, CmOk ),
EV_COMMAND( IDHELP, CmHelp ),
END_RESPONSE_TABLE;
const flSeg = 24; // Including '\0'
void SetCjTimeDialog::SetupWindow()
{
static char szFormat[] = "%02u:%02u-%02u:%02u %02u:%02u-%02u:%02u";
char szSeg[ flSeg ];
sprintf( szSeg, szFormat, config.nCTSHour1, config.nCTSMin1,
config.nCTSHour2, config.nCTSMin2,
config.nCTSHour3, config.nCTSMin3,
config.nCTSHour4, config.nCTSMin4 );
SetDlgItemText( IDE_SEG1, szSeg );
sprintf( szSeg, szFormat, config.nCTGHour1, config.nCTGMin1,
config.nCTGHour2, config.nCTGMin2,
config.nCTGHour3, config.nCTGMin3,
config.nCTGHour4, config.nCTGMin4 );
SetDlgItemText( IDE_SEG2, szSeg );
sprintf( szSeg, szFormat, config.nCTDHour1, config.nCTDMin1,
config.nCTDHour2, config.nCTDMin2,
config.nCTDHour3, config.nCTDMin3,
config.nCTDHour4, config.nCTDMin4 );
SetDlgItemText( IDE_SEG3, szSeg );
MDialog::SetupWindow();
}
static BOOL CheckSeg( char* szSeg, char* nSeg )
{
//01234567890123456789012
//11:11-22:22 11:11-22:22
if( szSeg[ 2 ] != ':' || szSeg[ 5 ] != '-' || szSeg[ 8 ] != ':' ||
szSeg[ 11 ] != ' ' ||
szSeg[ 14 ] != ':' || szSeg[ 17 ] != '-' || szSeg[ 20 ] != ':'
) return FALSE;
char str[ 3 ]; str[ 2 ] = 0;
for( int i = 0; i < 8; i ++ )
{
memcpy( str, szSeg, 2 ); szSeg += 3;
nSeg[ i ] = atoi( str );
}
if( CheckHour( nSeg[ 0 ] ) && CheckHour( nSeg[ 2 ] ) &&
CheckHour( nSeg[ 4 ] ) && CheckHour( nSeg[ 6 ] ) &&
CheckMin( nSeg[ 1 ] ) && CheckMin( nSeg[ 3 ] ) &&
CheckMin( nSeg[ 5 ] ) && CheckMin( nSeg[ 7 ] )
) return TRUE;
ShowError( "存在错误的时间段" );
return FALSE;
}
void SetCjTimeDialog::CmOk()
{
char nTmp[ 3 ][ 8 ];
char szSeg[ flSeg ];
GetDlgItemText( IDE_SEG1, szSeg, flSeg );
if( *szSeg == 0 || !CheckSeg( szSeg, nTmp[ 0 ] ) )
{
ResetFocus();
return;
}
GetDlgItemText( IDE_SEG2, szSeg, flSeg );
if( *szSeg == 0 || !CheckSeg( szSeg, nTmp[ 1 ] ) )
{
::SetFocus( GetDlgItem( IDE_SEG2 ) );
return;
}
GetDlgItemText( IDE_SEG3, szSeg, flSeg );
if( *szSeg == 0 || !CheckSeg( szSeg, nTmp[ 2 ] ) )
{
::SetFocus( GetDlgItem( IDE_SEG3 ) );
return;
}
memcpy( &config.nCTSHour1, nTmp, 3 * 8 );
SaveConfig();
CloseWindow( IDOK );
}
void SetCjTimeDialog::CmHelp()
{
static char szHelp[] =
"■星期六和星期天只催缴个人,可\n"
" 设置两个时间段\n"
"■星期一到五可分别设置两个时间\n"
" 段催缴个人和单位\n"
"■时间段格式如: (0不能省略)\n"
" 08:00-12:00 14:00-18:00";
ShowHelp( szHelp );
ResetFocus();
}
class SetCjFreeDialog : public MDialog
{
void ResetFocus() { ::SetFocus( GetDlgItem( IDE_TEL ) ); }
void Reset();
void ShowCjFree() { ShowDbf( GetDlgItem( IDS_TEL ), dbfCjFree, FDCJFREE_TEL ); }
protected:
void SetupWindow();
void CmOk();
void CmDelete();
void CmPrint();
void CmHelp();
public:
SetCjFreeDialog() :
MDialog( GetMainWindow(), "SetCjFreeDialog" ) {}
DECLARE_RESPONSE_TABLE( SetCjFreeDialog );
};
DEFINE_RESPONSE_TABLE1( SetCjFreeDialog, MDialog )
EV_COMMAND( IDOK, CmOk ),
EV_COMMAND( IDB_DELETE, CmDelete ),
EV_COMMAND( IDB_PRINT, CmPrint ),
EV_COMMAND( IDHELP, CmHelp ),
END_RESPONSE_TABLE;
void SetCjFreeDialog::SetupWindow()
{
ShowCjFree();
MDialog::SetupWindow();
}
void SetCjFreeDialog::Reset()
{
SetDlgItemText( IDE_TEL, "" );
ResetFocus();
}
static BOOL CheckTel( char* szTel )
{
while( *szTel )
{
char ch = *szTel ++;
if( ( ch < '0' || ch > '9' ) && ch != ' ' )
{
ShowError( "电话号码不正确" );
return FALSE;
}
}
return TRUE;
}
void SetCjFreeDialog::CmOk()
{
char szTel[ flTel + 1 ];
GetDlgItemText( IDE_TEL, szTel, sizeof( szTel ) );
if( *szTel == 0 || !CheckTel( szTel ) )
{
ResetFocus();
return;
}
if( dbfCjFree->Seek( szTel ) )
ShowError( "电话号码已存在" );
else
{
dbfCjFree->AppendStart();
dbfCjFree->Replace( FDCJFREE_TEL, szTel );
dbfCjFree->Append();
dbfCjFree->Save();
ShowCjFree();
}
Reset();
}
void SetCjFreeDialog::CmDelete()
{
char szTel[ flTel + 1 ];
GetDlgItemText( IDE_TEL, szTel, sizeof( szTel ) );
if( *szTel == 0 || !CheckTel( szTel ) )
{
ResetFocus();
return;
}
if( dbfCjFree->Seek( szTel ) )
{
dbfCjFree->Delete();
dbfCjFree->Pack();
dbfCjFree->Save();
ShowCjFree();
}
else ShowError( "没有这个电话号码" );
Reset();
}
void SetCjFreeDialog::CmPrint()
{
dbfCjFree->PrintAll();
Reset();
}
void SetCjFreeDialog::CmHelp()
{
static char szHelp[] =
"■系统对免催号码不予催缴\n"
"■电话号码最多为8位数\n"
"■号码可以逐个添加或删除,按\n"
" Enter或选择〔添加〕添加,\n"
" 选择〔删除〕删除\n"
"■选择〔打印〕打印所\n"
" 有免催号码\n"
"■按Esc或选择〔退出〕退出";
ShowHelp( szHelp );
ResetFocus();
}
void Yy::CmSetCjFree()
{
if( !CheckPassword() ) return;
SetCjFreeDialog().Execute();
}
void Yy::CmSetCjTime()
{
if( !CheckPassword() ) return;
SetCjTimeDialog().Execute();
}
void Yy::CmResetCj()
{
if( !CheckPassword() ) return;
MsgBox( "正在初始化..." );
config.nScanTimes[ 0 ] = 0;
config.nScanTimes[ 1 ] = 0;
config.nCjTimes = 0;
config.nCjRec = 0;
config.nCjOK = 0;
dbfCj->Pack();
for( dbfCj->GoTop(); !dbfCj->IsEof(); dbfCj->Skip() )
dbfCj->Replace( FDCJ_TIMES, 0 );
dbfCj->Save();
DelMsgBox();
ShowMessage( "催缴重启动成功" );
}
class YyApp : public TApplication
{
public:
virtual void InitMainWindow();
};
void YyApp::InitMainWindow()
{
MainWindow = new Yy( szAppTytle );
//
// 主界面大小为640×480,位于屏幕中间
//
MainWindow->Attr.W = 640;
MainWindow->Attr.H = 480;
MainWindow->AssignMenu( szAppName );
MainWindow->Attr.AccelTable = szAppName;
MainWindow->SetIcon( this, szAppName );
StartUp( this ); // 初始化WinUtil,含软件合法性检查
}
//
// 主程序,带命令行处理,用于很少用到的设置
//
int OwlMain( int argc, char* argv[] )
{
ReadConfig(); // 读入系统配置
if( argc < 2 ) return YyApp().Run(); // 没代命令行参数则运行软件
strupr( argv[ 1 ] ); // 第一个命令行参数为命令项
//
// /H 或 /? 等命令为显示命令行用法及当前设置
// /P 命令初始化系统密码为"dir",此项功能不写入文档,
// 只在用户忘记密码时向其口述
//
if( strcmp( argv[ 1 ], "/P" ) == 0 ) ResetPassword();
else if( strcmp( argv[ 1 ], "/C" ) == 0 )
{
config.nChCj = atoi( argv[ 2 ] );
config.nChCx[ 0 ] = atoi( argv[ 3 ] );
config.nChCx[ 1 ] = atoi( argv[ 4 ] );
config.nChCx[ 2 ] = atoi( argv[ 5 ] );
}
else if( strcmp( argv[ 1 ], "/R" ) == 0 )
config.nCjRec = atoi( argv[ 2 ] );
char szMsg[ 201 ];
sprintf( szMsg,
"命令行用法及当前设置:\n"
"\n"
//"yy /p --> 密码复位\n"
"yy /c 0 1 2 3 --> 设语音通道\n"
"yy /r --> 设催缴记录号\n"
"\n"
"电话号码位数 = %2u\n"
"\n"
"催缴通道 = %u\n"
"查询通道 = %u, %u, %u\n"
"\n"
"已催缴用户数 = %u\n"
"催缴记录号 = %d\n"
"催缴轮数 = %u\n"
"催缴扫描次数 = %u, %u",
config.nTelLen,
config.nChCj,
config.nChCx[ 0 ], config.nChCx[ 1 ], config.nChCx[ 2 ],
config.nCjOK,
config.nCjRec,
config.nCjTimes,
config.nScanTimes[ 0 ], config.nScanTimes[ 1 ] );
ShowHelp( szMsg );
//
// 保存配置并退出
//
SaveConfig();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -