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

📄 yy.cpp

📁 电信语音系统源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
     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 + -