📄 dosj.cpp
字号:
#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 + -