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

📄 dosj.cpp

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

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

#if !defined( __DOS_H )
#include <Dos.h>
#endif  // __DOS_H

#if !defined( __GRAPHICS_H )
#include <Graphics.h>
#endif  // __GRAPHICS_H

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

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

#if defined( ShiZhu )
  #define XIAN "石柱县邮电局"
#elif defined( XiTuo )
  #define XIAN "西沱电信支局"
#elif defined( PengShui )
  #define XIAN "彭水县电信局"
#elif defined( YouYang )
  #define XIAN "酉阳县电信局"
#elif defined( XiuShan )
  #define XIAN "秀山县邮电局"
#endif

struct Map
{
   char nField;
   char szName[ 11 ];
   char nRow, nCol;
};

const AChgCol = 44;
const chgOff = 10,
      chgLen = 8;
#if defined( XiuShan )
const maxChg = 15;
static Map map[] =
{
    5, "市话月租",  6, 24, /*1*/ 19, "电报挂号",  6, 44, // 9
    7, "市话计次",  8, 24, /*2*/ 22, "市话租线",  8, 44, //10
    8, "长 话 费", 10, 24, /*3*/ 15, "农话租维", 10, 44, //11
   17, "移动电话", 12, 24, /*4*/ 12, "农话月租", 12, 44, //12
   21, "代 维 费", 14, 24, /*5*/ 13, "农话计次", 14, 44, //13
   11, "长途出租", 16, 24, /*6*/ 14, "农话会议", 16, 44, //14
   16, "无线寻呼", 18, 24, /*7*/  6, "信息费用", 18, 44, //15
   18, "电 报 费", 20, 24, /*8*/
};
#elif defined( PengShui )
const maxChg = 15;
static Map map[] =
{
    5, "市话月租",  6, 24, /*1*/ 13, "移动电话",  6, 44, // 9
    6, "市话计次",  8, 24, /*2*/ 14, "数据通信",  8, 44, //10
    7, "农话计次", 10, 24, /*3*/ 15, "租 线 费", 10, 44, //11
    8, "长 话 费", 12, 24, /*4*/ 16, "出租电路", 12, 44, //12
    9, "电 报 费", 14, 24, /*5*/ 17, "线路租维", 14, 44, //13
   10, "新业务费", 16, 24, /*6*/ 18, "代 维 费", 16, 44, //14
   11, "市话租维", 18, 24, /*7*/ 19, "其它费用", 18, 44, //15
   12, "无线寻呼", 20, 24, /*8*/
};
#elif defined( ShiZhu ) || defined( XiTuo )
const maxChg = 15;
static Map map[] =
{
   15, "月 租 费",  6, 24, /*1*/ 16, "半月租费",  6, 44, // 9
    9, "市 话 费",  8, 24, /*2*/ 17, "新业务费",  8, 44, //10
   10, "农 话 费", 10, 24, /*3*/ 18, "无线电费", 10, 44, //11
    8, "县间话费", 12, 24, /*4*/  5, "国际话费", 12, 44, //12
    7, "省际话费", 14, 24, /*5*/  6, "港 澳 台", 14, 44, //13
   11, "数据通信", 16, 24, /*6*/ 12, "电话会议", 16, 44, //14
   14, "121 气象", 18, 24, /*7*/ 13, "电 报 费", 18, 44, //15
   19, "信 息 费", 20, 24, /*8*/
};
//const maxChg = 11;
//static Map map[] =
//{
//   15, "固定费用",  6, 24, /*1*/ 16, "人 工 费",  6, 44, // 9
//    9, "市 话 费",  8, 24, /*2*/ 17, "新业务费",  8, 44, //10
//   10, "农 话 费", 10, 24, /*3*/ 18, "无 线 费", 10, 44, //11
//    8, "省内话费", 12, 24, /*4*/  5, "国际话费", 12, 44, //12
//    7, "省际话费", 14, 24, /*5*/  6, "港 澳 台", 14, 44, //13
//   11, "网 话 费", 16, 24, /*6*/ //12, "农话会议", 16, 44, //14
// 14, "无线寻呼", 18, 24, /*7*/  6, "信息费用", 18, 44, //15
// 16, "电 报 费", 20, 24, /*8*/
//};
//#elif defined( XiTuo )
//const maxChg = 8;
//static Map map[] =
//{
//   15, "固定费用",  6, 24, /*1*/ 16, "电 报 费",  6, 44, // 9
//    9, "市 话 费",  8, 24, /*2*/ 17, "新业务费",  8, 44, //10
//   10, "农 话 费", 10, 24, /*3*/ 18, "人 工 费", 10, 44, //11
//    7, "长 话 费", 12, 24, /*4*/ 19, "其它费用", 12, 44, //12
////  7, "电 报 费", 14, 24, /*5*/  6, "其它费用", 14, 44, //13
//// 11, "网 话 费", 16, 24, /*6*/ 12, "农话会议", 16, 44, //14
//// 14, "无线寻呼", 18, 24, /*7*/  6, "信息费用", 18, 44, //15
//// 16, "电 报 费", 20, 24, /*8*/
//};
#elif defined( YouYang )
const maxChg = 12;
static Map map[] =
{
   15, "固定费用",  6, 24, /*1*/ 16, "人 工 费",  6, 44, // 9
    9, "市 话 费",  8, 24, /*2*/ 17, "新业务费",  8, 44, //10
   10, "农 话 费", 10, 24, /*3*/ 18, "无 线 费", 10, 44, //11
    7, "国 内 1", 12, 24, /*4*/  5, "国际话费", 12, 44, //12
    8, "国 内 2", 14, 24, /*5*/  6, "港 澳 台", 14, 44, //13
   12, "网 话 费", 16, 24, /*6*/ 13, "信息费用", 16, 44, //14
// 14, "无线寻呼", 18, 24, /*7*/  6, "农话会议", 18, 44, //15
// 16, "电 报 费", 20, 24, /*8*/
};
#endif
static char *szSj[] =
{
     //0         1         2         3         4         5         6         7
     //0123456789012345678901234567890123456789012345678901234567890123456789012345
/*00*/" 计费日期   月  日 ─   月  日   电话号码            №                    ",
/*01*/"┏━━━━━┯━━━━━━━━━━━━━━━━━━━┯━━━━━┯━━━━┓",
/*02*/"┃ 用户名称 │                                      │缴费合同号│        ┃",
/*03*/"┠─────┼───────────────────┼─────┴────┨",
/*04*/"┃金额(大写)│                                      │(小写)¥            ┃",//$
/*05*/"┠─────┼────┬────┬────┬────┼────┬─────┨",
/*06*/"┃          │        │        │        │        │月    份│ 欠费金额 ┃",
/*07*/"┃          ├────┼────┼────┼────┼────┼─────┨",
/*08*/"┃          │        │        │        │        │        │          ┃",
/*09*/"┃          ├────┼────┼────┼────┼────┼─────┨",
/*10*/"┃    其    │        │        │        │        │        │          ┃",
/*11*/"┃          ├────┼────┼────┼────┼────┼─────┨",
/*12*/"┃          │        │        │        │        │        │          ┃",
/*13*/"┃          ├────┼────┼────┼────┼────┼─────┨",
/*14*/"┃          │        │        │        │        │        │          ┃",
/*15*/"┃          ├────┼────┼────┼────┼────┼─────┨",
/*16*/"┃    中    │        │        │        │        │        │          ┃",
/*17*/"┃          ├────┼────┼────┼────┼────┼─────┨",
/*18*/"┃          │        │        │        │        │        │          ┃",
/*19*/"┃          ├────┼────┼────┼────┼────┼─────┨",
/*20*/"┃          │        │        │滞 纳 金│        │共 欠 费│          ┃",
/*21*/"┗━━━━━┷━━━━┷━━━━┷━━━━┷━━━━┷━━━━┷━━━━━┛",
#if defined( XiuShan )
/*22*/" 邮局帐号: 县工行 2210033─153      收款员:              收款时间:         ",
#elif defined( PengShui ) || defined( YouYang )
/*22*/" 邮局帐号:                          收款员:              收款时间:         ",
#elif defined( ShiZhu )
/*22*/" 查询电话: 333128                   收款员:              收款时间:         ",
#elif defined( XiTuo )
/*22*/" 查询电话: 361135                   收款员:              收款时间:         ",
#endif
};

static char* szQfFb[] =
{
     //0         1         2         3         4         5         6         7
     //0123456789012345678901234567890123456789012345678901234567890123456789012345
/*00*/"┏━━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━┯━━━━━┓\n",
/*01*/"┃                  欠  费  附  表                  │月    份│ 欠费金额 ┃\n",
/*02*/"┠─────────────────────────┼────┼─────┨\n",
/*03*/"┃                                                  │        │          ┃\n",
/*04*/"┗━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━┷━━━━━┛\n",
};

static char szTrue[]  = "已交费",
            szFalse[] = "未交费";

const
   winWidth      = 640 - 8,
   winHeight     = 425,
   winLeft       = 320 - winWidth / 2,
   winRight      = winLeft + winWidth,
   winTop        = 24,
   winBottom     = winTop + winHeight,

   sjWidth       = 76 * 8,
   sjLeft        = 320 - sjWidth / 2,
   sjTop         = winTop + 16,

   ttTelLeft     = sjLeft + 8,  // tt: tytle
   ttTelTop      = winBottom - 15 - 20 - 17,
   fdTelLeft     = ttTelLeft,
   fdTelTop      = ttTelTop + 17,
   fdTelWidth    = 8 * 16 + 2,

   fdOkWidth     = 50,
   fdOkLeft      = fdTelLeft + fdTelWidth,
   fdOkTop       = fdTelTop,

   ttInputLeft   = fdOkLeft + fdOkWidth + 63 - 26,
   ttInputTop    = ttTelTop,
   fdInputLeft   = ttInputLeft,
   fdInputTop    = fdTelTop,
   fdInputWidth  = 86,

   ttOutputLeft  = fdInputLeft + fdInputWidth + 51 - 26,
   ttOutputTop   = ttTelTop,
   fdOutputLeft  = ttOutputLeft,
   fdOutputTop   = fdTelTop,
   fdOutputWidth = fdInputWidth,

   btnOkWidth    = 97,
   btnOkHeight   = 37,
   btnOkLeft     = sjLeft + sjWidth - 8 - btnOkWidth,
   btnOkTop      = ttTelTop;

void ShowBill( BOOL bShowTable )
{
   HideCursor();
   CMHZ::setcolor( 2, 15 );
   if( bShowTable )
   {
      for( int i = 0; i < maxChg; i ++ )
        memcpy( szSj[ map[ i ].nRow ] + map[ i ].nCol - chgOff,
                map[ i ].szName, chgLen );
   }
   int nIteration = 2 - bShowTable,
       nYIteration = 16 * nIteration;
   for( int i = 0, y = sjTop; i < 22; i += nIteration, y += nYIteration )
     CMHZ::showhz( sjLeft, y, szSj[ i ] );
   ShowCursor();
}

void DxMoney( char *szMoney, char *str )
{
   static char szNumber[] = "零壹贰叁肆伍陆柒捌玖";
   static char szUnit[] = "万仟佰拾元角分";

   const cnDxMoneyLen = 32;
   memset( str, ' ', cnDxMoneyLen );

# if( flRChg == 10 )
   szMoney ++;
#endif
   char ch = *szMoney ++;
   if( ch != ' ' )
   {
      if( ch != '1' )
      {
	 memcpy( str, szNumber + ( ch - '0' ) * 2, 2 );
         str += 2;
      }
      memcpy( str, szUnit + 6, 2 );  // 拾
      str += 2;
   }
   BOOL bAfterDot = FALSE;
   for( int nUnit = 0; nUnit < 14; )
   {
      ch = *szMoney ++;
      if( ch >= '0' && ch <= '9')
      {
         memcpy( str, szNumber + ( ch - '0' ) * 2, 2 );
         str += 2;
         if( bAfterDot || ( !bAfterDot && ch != '0' ) )
         {
            memcpy( str, szUnit + nUnit, 2 );
            str += 2;
         }
      }
      if( ch != '.' ) nUnit += 2;
      else bAfterDot = TRUE;
   }
}

void LeftTrim( char *szMoney )
{
   char szTmp[ flRChg ];
   memcpy( szTmp, szMoney, flRChg );
   char *p = szTmp;
   while( *p == ' ' ) p ++;
   memset( szMoney, ' ', flRChg );
   memcpy( szMoney, p, flRChg - ( p - szTmp ) );
}

int ElapsedDay( date& d1, date& d2 )
{
   static char nMonthDay[] =
   {
      31, 30, 31, 30,  // 1   2   3   4
      31, 30, 31, 31,  // 5   6   7   8
      30, 31, 30, 31   // 9  10  11  12
   };
   int nDay;
   if( d1.da_year == d2.da_year && d1.da_mon == d2.da_mon )
      nDay = d2.da_day - d1.da_day + 1;
   else
   {
      nDay = nMonthDay[ d1.da_mon - 1 ] - d1.da_day + 1;
      if( d1.da_year == d2.da_year )
         for( int i = d1.da_mon; i < d2.da_mon - 1; i ++ ) nDay += nMonthDay[ i ];
      else
      {
         for( int i = d1.da_mon; i < 12; i ++ ) nDay += nMonthDay[ i ];
         nDay += ( d2.da_year - d1.da_year - 1 ) * 365;
	 for( i = 0; i < d2.da_mon - 1; i ++ ) nDay += nMonthDay[ i ];
      }
      nDay += d2.da_day;
   }
   return nDay;
}

int SJ::ElapsedDay( char *szDate )
{
   struct date d1, d2;
   getdate( &d2 );

   szDate[ 2 ] = 0;
   szDate[ 5 ] = 0;

⌨️ 快捷键说明

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