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

📄 shift.cpp

📁 DOS下一个完整的大型程序源代码
💻 CPP
字号:
#if !defined( __STRING_H )
#include <String.h>
#endif  // __STRING_H

#if !defined( __STDLIB_H )
#include <StdLib.h>
#endif  // __STDLIB_H

#define Uses_DBase
#define Uses_Window
#define Uses_Button
#include <ly.h>

#include "sj.h"
#include "sjdbf.h"

const
   winWidth     = 50 * 8 + 24,
   winHeight    = 14 * 16 + 29 + 36 + 12,
   winLeft      = 320 - winWidth / 2,
   winTop       = 240 - winHeight / 2 + 5,

   tableLeft    = winLeft + 12,
   tableTop     = winTop + 20 + 6,

   btnTop       = winTop + winHeight - 12 - 36,
   btnWidth     = 66,
   btnHeight    = 36,

   btnOkLeft    = winLeft + 12,
   btnOkTop     = btnTop,
   btnPrintLeft = btnOkLeft + 70 + 40,
   btnPrintTop  = btnTop,
   btnExitLeft  = btnPrintLeft + btnWidth + 40,
   btnExitTop   = btnTop,
   btnHelpLeft  = winLeft + winWidth - 13 - 70,
   btnHelpTop   = btnTop;

static char *szTable[] =
{
     //0         1         2         3        4
     //012345678901234567890123456789012345679012345679012
/*00*/"┏━━━━━━┯━━━━━━━━━━━━━━━━┓",
/*01*/"┃  收 款 员  │         123456                 ┃",
/*02*/"┠──────┼────────────────┨",
/*03*/"┃  日    期  │   1996年12月30日               ┃",
/*04*/"┠──────┼────────────────┨",
/*05*/"┃  共收用户  │           9999个               ┃",
/*06*/"┠──────┼────────────────┨",
/*07*/"┃  共 收 款  │     1234567.12元               ┃",
/*08*/"┠──────┼────────────────┨",
/*09*/"┃  滞 纳 金  │     1234567.12元               ┃",
/*10*/"┗━━━━━━┷━━━━━━━━━━━━━━━━┛",
/*11*/" 共有用户99999个,应收款1234567.12 + 欠费1234567.12",
/*12*/" 共收用户99999个,共收款1234567.12 + 欠费1234567.12",
/*13*/" 未收用户99999个,未收款1234567.12 + 欠费1234567.12",
};

static char *szHelp[] =
{
   "■按Enter或选择〔对〕交班         ",
   "■按<F2>或选择〔打印〕打印交班统计",
   "■按Esc或选择〔退出〕放弃交班     ",
   "■您可以随时看到交班统计,然后退出",
   NULL
};

void SJ::Shift()
{
   Window *win = new Window( winTop, winWidth, winHeight, "交班" );

   Button *btnOk = new Button( btnOkLeft, btnOkTop, tpOkButton );
   Button *btnPrint = new Button( btnPrintLeft, btnPrintTop, szBtnPrint, cmPrint, btnWidth, btnHeight );
   Button *btnExit = new Button( btnExitLeft, btnExitTop, szBtnExit, cmExit, btnWidth, btnHeight );
   Button *btnHelp = new Button( btnHelpLeft, btnHelpTop, tpHelpButton );

   win->Insert( btnOk, btnPrint, btnExit, btnHelp, NULL );

   memcpy( szTable[ 1 ] + 25, szDutyNum, flDuty );  // DutyNum
   char str[ 81 ];  // Date
   ::GetDate( str, TRUE );
   memcpy( szTable[ 3 ] + 19, str, 14 );

   int nClient = 0;
   double dMoney = 0.0,
          dAChg  = 0.0;
   char szDate[ 9 ];
   ::GetDate( szDate );
   long lRec = dbfLog->Search( szDate, fdLogDate );
   if( lRec >= 0 )
   {
      while( lRec < dbfLog->GetRecordNum() )
      {
         dbfLog->GetField( lRec, fdLogDuty, str );
         if( memcmp( szDutyNum, str, flLogDuty ) == 0 )
         {
            nClient ++;
            dMoney += dbfLog->GetDouble( lRec, fdLogRChg );
            dAChg += dbfLog->GetDouble( lRec, fdLogAChg );
         }
         lRec ++;
         dbfLog->GetField( lRec, fdLogDate, str );
         if( memcmp( szDate, str, flLogDate ) != 0 ) break;
      }
   }

   FormatNumber( nClient, szTable[ 5 ] + 27, 4 ); // Client
   FormatMoney( dMoney, szTable[ 7 ] + 21, flTotChg );  // Money
   FormatMoney( dAChg, szTable[ 9 ] + 21, flTotChg );  // AChg
   TotalCurMonth( szTable, 11 );

   HideCursor();
   setcolor( 2, 15 );
   int y = tableTop;
   for( int i = 0; i < 14 ; i ++, y += 16 )
     showhz( tableLeft, y, szTable[ i ] );
   ShowCursor();

   ::ShowStatus( "~CF1~0帮助 ~CF2~0打印 ~CESC~0退出" );
   Event event;
   BOOL bResult = FALSE;
   for(;;)
   {
      while( !GetEvent( event ) );
      win->HandleEvent( event );
      if( event.what == evKeyboard && event.key == kbF2 )
      {
         event.what = evCommand;
         event.command = cmPrint;
      }

      if( event.what == evCommand )
      {
         if( event.command == cmOk )
         {
            bResult = TRUE;
            break;
         }
         else if( event.command == cmPrint )
         {
            if( PrnReady() )
            {
               for( i = 0; i < 14 ; i ++ )
                 fprintf( stdprn, "%s\n", szTable[ i ] );
               NewPage();
            }
            win->Reselect( btnOk );
         }
         else if( event.command == cmExit ||
                  event.command == cmCancel ||
                  event.command == cmClose ) break;
         else if( event.command == cmHelp )
         {
            ShowHelp( szHelp );
            win->Reselect( btnOk );
         }
      }
   }
   delete win;
   if( bResult ) CheckIn();
}

⌨️ 快捷键说明

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