公共组件详细设计说明书.docx
《公共组件详细设计说明书.docx》由会员分享,可在线阅读,更多相关《公共组件详细设计说明书.docx(66页珍藏版)》请在冰点文库上搜索。
公共组件详细设计说明书
详细设计说明书
基本公用函数
中国邮政储蓄银行
第1章日期时间类
1.1取系统当前时间 longGetTime()
1.1.1功能说明
取系统当前时间
1.1.2输入参数
无
1.1.3输出参数
无
1.1.4返回值
hhmmss格式的时间
1.1.5说明
本函数取的是当前应用服务器上的机器时间(不同的应用服务器上时间不可能完全同步)。
1.2取系统当前日期 voidrtoday(char*today)
1.2.1功能
取操作系统当前日期
1.2.2输入参数
无
1.2.3输出参数
9位字符串,操作系统当前日期(格式为YYYYMMDD)
1.2.4返回值
无
1.2.5说明
本函数取的是当前应用服务器上的机器日期(不同的应用服务器上日期不可能完全同步)。
1.3日期转化为年月日intDate2MDY(char*date,int*month,int*day,int*year)
1.3.1功能
根据字符串日期获取年月日
1.3.2输入参数
字符串日期*date(格式为YYYYMMDD)
1.3.3输出参数
月份*month
日期*day
年份*year
1.3.4返回值
0表示成功;其他值表示失败。
当date在(01/01/1900)和(12/31/9999)之间时成功。
1.3.5说明
不需要的参数可以填NULL,不用定义另外的变量。
如:
只关心日期时可以这样调用:
Date2MDY(date,NULL,&day,NULL);
1.4是否闰年 intIsLeapYear(intyear)
1.4.1功能
判断指定年份是否闰年
1.4.2输入参数
整型年份year
1.4.3输出参数
无
1.4.4返回值
TRUE表示是闰年;FALSE表示不是。
1.5日期转换为天数intDate2Day(chardate1[9],int*retday)
1.5.1功能:
字符串日期转换为天数
1.5.2输入参数
字符串日期char[9];
1.5.3输出参数
整型日期天数:
retday
1.5.4返回值
-1,转换错误;0转换成功
1.5.5说明
天数(从1899.12.31开始)
1.6根据日期计算星期几intrdayofweek(char*date)
1.6.1功能
根据字符串型日期返回礼拜几
1.6.2输入参数
字符串日期型
1.6.3输出参数
无
1.6.4返回值
正整数(0~6)周日~周六-1失败
1.7根据增加天数计算日期intDateChange(char*in_date,intdays,char*out_date)
1.7.1功能
字符串型日期添加天数
1.7.2输入参数
字符串日期型
int型天数
1.7.3输出参数
字符串日期型
1.7.4返回参数
0成功;-1失败;
1.8日期格式化转换intDate2fmt(char*date,char*fmt,char*out_str)
1.8.1功能
字符串型日期格式化输出
1.8.2输入参数
date字符串日期型
fmt字符串型格式字符串支持%Y%M%D
1.8.3输出参数
out_date格式化后的字符串
1.8.4返回值
0成功-1失败
1.9取系统时间戳voidGetTimeStamp(char*stamp)
1.9.1功能
取系统时间戳,格式为YYYYMMDDHHMMSSMMM,共17位。
1.9.2输入参数
无
1.9.3输出参数
17位的时间戳,格式为YYYYMMDDHHMMSSMMM
1.9.4返回值
无
1.10取系统时间戳intdtcurrent(long*dt)
1.10.1功能
取系统时间戳(从1970/1/1/00.00.00开始的秒数)
1.10.2输入参数
无
1.10.3输出参数
long型的描述
1.10.4返回值
0成功-1失败
1.11取时间戳格式化输出intDT2fmt(longdt,char*fmt,char*out_str)
1.11.1功能
long型时间戳格式化输出
1.11.2输入参数
long型时间戳
字符串格式支持%Y%M%D%h%m%s
1.11.3输出参数
格式化后的字符串
1.11.3.1返回参数
0成功-1失败
1.12字符串时间转换成long时间戳intasc2DT(char*str,long*dt)
1.12.1功能
14位字符串时间转换成long时间戳
1.12.2输入参数
字符串日期型14位输入YYYYMMDDHHMMSS
1.12.3输出参数
long型的时间戳
1.12.4返回参数
0成功-1失败
1.13时间戳转换成字符串时间intDT2asc(longdt,char*str)
1.13.1功能
时间戳转换成字符串时间
1.13.2输入参数
long型的时间戳
1.13.3输出参数
字符串14位YYYYMMDDHHMMSS
1.13.4返回函数
0成功-1失败
1.14月,日,年转换成字符串型时间intMDY2Date(intm,intd,inty,char*out_date)
1.14.1功能
int型月,日,年转换成字符串型时间
1.14.2输入参数
int型月,日,年
1.14.3输出参数
字符串日期型
1.14.4返回值
0成功-1失败
1.15天数转换成字符串型日期intday2Date(intdays,char*out_date)
1.15.1功能
天数转换成字符串型日期
1.15.2输入参数
Int型天数
1.15.3输出参数
字符串日期型
1.15.4返回值
0成功-1失败
1.16判断字符串型日期是否合法intIsvalidDate(char*date)
1.16.1功能
判断字符串型日期是否合法
1.16.2输入参数
字符串型日期
1.16.3输出参数
无
1.16.4返回值
0——合法-1——非法
1.17计算两个字符串日期的间的天数intdaysBetween(chartime1[9],chartime2[9],int*retday)
1.17.1功能
计算两个字符串日期的差
1.17.2输入参数
chartime1[9]日期一yyyymmdd格式
chartime2[9]日期二yyyymmdd格式
1.17.3输出参数
int型日期天数
1.17.4返回值
>=0合法
-1日期非法
1.18初始化日期字符串voidsetinitdate(char*initdate)
1.18.1功能
初始化日期字符串
1.18.2输入参数
无
1.18.3输出参数
日期型字符字符串
1.18.4返回值
无
1.18.5备注
初始化成8个0
1.19时间戳转换成字符串日期和long型的time intDt2DateTime(longdt,char*date,long*time)
1.19.1功能
把时间戳转换成字符串日期和long型的time
1.19.2输入参数
long型的时间戳
1.19.3输出参数
字符串日期,long型的时间(hhmmss);
1.19.4返回
0成功-1失败
1.20字符串日期,long型的时间转换成时间戳intDateTime2Dt(char*date,long*time,long*timestamp)
1.20.1输入参数
字符串日期,long型的时间(hhmmss)
1.20.2输出参数
long型的时间戳
1.20.3返回值
0成功-1失败
1.21计算指定年月的天数intDaysOf(intyear,intmonth)
1.21.1功能
返回指定年月的天数
1.21.2输入参数
整型年份year
整型月份month
1.21.3输出参数
无
1.21.4返回值
指定年月的天数
1.22判断整型日期是否是指定类型的日期intIsDayType(db_longdate,inttype)
1.22.1功能
判断整型日期是否是指定类型的日期
1.22.2输入参数
整型日期date
日期类型type
DAY_MONTH_BEGIN表示月初
DAY_MONTH_END表示月末
DAY_YEAR_BEGIN表示年初
DAY_YEAR_END表示年末
DAY_PERSONAL_INT表示个人存款结息日
DAY_COMPANY_INT表示单位存款结息日
DAY_OVERDRAFT_INT表示透支结息日
1.22.3输出参数
无
1.22.4返回值
>0日期合法;=0日期为”00000000”;-1表示不合法。
1.23计算变动日期intShiftDay(char*SDate,intiCount,intiUnit,intiAdjustType,char*RDate)
1.23.1功能
计算变动日期
1.23.2输入参数
字符串日期date
变动的数值count,大于0表示向以后变动;小于0表示向以前变动
变动的单位countUnit
SHIFT_UNIT_DAY表示单位为天
SHIFT_UNIT_MONTH表示单位为月
SHIFT_UNIT_YEAR表示单位为年
调整类型adjustType
SHIFT_NO_ADJUST不进行任何调整
SHIFT_MONTH_BEGIN调整到月初
SHIFT_MONTH_END调整到月末
SHIFT_YEAR_BEGIN调整到年初
SHIFT_YEAR_END调整到年末
1.23.3输出参数
无
1.23.4返回值
变动后的日期。
-1表示参数错误
1.23.5说明
本函数可以用来计算到期日、求统计区间的起止日期等。
当用来计算到期日时,adjustType填SHIFT_NO_ADJUST,函数内部会按照人民银行计算日期的标准对日期进行自动调整(例如3月31日存入三个月定期,到期日会是6月30日)。
但当变动单位是天时不进行自动调整。
count为0时可以用来求本年年初年末或本月月初月末。
1.24计算两个日期间隔的月数intDiffMonth(char*lDate1,char*lDate2)
1.24.1功能
返回两个日期间隔的月数
1.24.2输入参数
两个字符串日期date1;date2
1.24.3输出参数
无
1.24.4返回值
两日期间隔的月数(非负整数)
1.25重置秒表voidResetStopwatch()
1.25.1功能
重置秒表(清0)并开始计时
1.25.2输入参数
无
1.25.3输出参数
无
1.25.4返回值
无
1.26暂停秒表voidStopStopwatch()
1.26.1功能
暂停秒表
1.26.2输入参数
无
1.26.3输出参数
无
1.26.4返回值
无
1.27恢复计时voidResumeStopwatch()
1.27.1功能
恢复计时
1.27.2输入参数
无
1.27.3输出参数
无
1.27.4返回值
无
1.28读秒表longReadStopwatch()
1.28.1功能
读秒表
1.28.2输入参数
无
1.28.3输出参数
无
1.28.4返回值
秒表读数(单位:
毫秒)
1.28.5说明
本函数不改变秒表状态(本来是停止的还是停止;本来是计时的继续计时)。
另外,当时间太长时,读数可能溢出。
第2章字符串处理类
2.1去掉字符串前导空白字符char*LTrim(char*str)
2.1.1功能
去掉字符串前导空白字符(使isspace返回真的字符,包括空格、TAB、回车等)
2.1.2输入参数
字符串str
2.1.3输出参数
字符串str
2.1.4返回值
字符串str
2.2去掉字符串尾部空白字符char*RTrim(char*str)
2.2.1功能
去掉字符串尾部空白字符
2.2.2输入参数
字符串str
2.2.3输出参数
字符串str
2.2.4返回值
字符串str
2.3去掉字符串前后空白字符char*AllTrim(char*str)
2.3.1功能
去掉字符串前后空白字符
2.3.2输入参数
字符串str
2.3.3输出参数
字符串str
2.3.4返回值
字符串str
2.4去掉字符串中所有空白字符voidPack(char*str)
2.4.1功能
去掉字符串中所有空白字符
2.4.2输入参数
字符串str
2.4.3输出参数
字符串str
2.4.4返回值
无
2.5字符串比较长度intstrrcmp(char*s1,char*s2,intn)
2.5.1功能
对字符串尾部按字典序进行比较
2.5.2输入参数
字符串1s1
字符串2s2
长度n
2.5.3输出参数
无
2.5.4返回值
<0表示s1后n个字符组成的子串小于s2后n个字符组成的子串;0表示等于;>0表示大于
2.5.5说明
本函数从尾部开始往前比较
2.6在字符串中查找特定字符char*strchr(char*s,intc)系统函数
2.6.1功能
在字符串中查找特定字符
2.6.2输入参数
字符串s
待查字符c
2.6.3输出参数
无
2.6.4返回值
非NULL表示c在s中的第一次出现位置;NULL表示s中不含c
2.6.5说明
另外有一个函数char*strrchr(char*s,intc)和本函数功能类似,但从字符串尾部开始往前查找
2.7获取子串在母串中的第一次出现位置char*strstr(char*s1,char*s2)系统函数
2.7.1功能
获取子串在母串中的第一次出现位置
2.7.2输入参数
母串s1
子串s2
2.7.3输出参数
无
2.7.4返回值
非NULL表示s2在s1中的第一次出现位置;NULL表示s1中不含s2
2.8从母串中截取出子串intMidStr(char*s1,intstart,intlen,char*s2)
2.8.1功能
从母串中截取出子串
2.8.2输入参数:
母串s1
起始位置start(从0开始计数)
长度len
2.8.3输出参数
子串s2
2.8.4返回值
0表示成功;-1表示参数错误(起始位置大于等于母串长,或者长度小于等于0或大于剩余部分长度,当长度大于剩余部分长度时,s2中仍包含剩余部分)
2.9根据分隔符从母串中取子串int_GetFld(char*s1,intn,char*s2,intc)
2.9.1功能
根据分隔符从母串中取子串
2.9.2输入参数
母串s1
字段编号n(从0开始编号)
子串s2
字段分隔符c
2.9.3输出参数
子串s2
2.9.4返回值
s2的长度
2.9.5说明
此函数可以用来从类似于unload文本格式中取出指定字段。
另外有一个函数intGetFld(char*s1,intn,char*s2)专门用于这个目的,它直接调用_GetFld(s1,n,s2,’|’)
2.10判断是否数值字符串intIsNumStr(char*s)
2.10.1功能
判断是否数值字符串(包括各种允许的数值形式:
如整数、小数、科学计数等)
2.10.2输入参数
字符串s
2.10.3输出参数
无
2.10.4返回值
TRUE表示是;FALSE表示不是
2.11判断是否数字字符串intIsDigitStr(char*s)
2.11.1功能
判断是否数字字符串(所有字符都是’0’~’9’之间的字符)
2.11.2输入参数
字符串s
2.11.3输出参数
无
2.11.4返回值
TRUE表示是;FALSE表示不是
2.11.5说明
注意这个函数和上面函数的区别。
2.12字符串转换为长整数longatol(char*s)系统函数
2.12.1功能
字符串转换为长整数
2.12.2输入参数
字符串s
2.12.3输出参数
无
2.12.4返回值
长整数
2.12.5说明
类似还有atof(转换为double型)、atoi(转换为int型)
2.1316进制字符转换为BCD码字符串intChar2Bcd(charhex,char*bcd)
2.13.1功能
16进制字符转换为BCD码字符串
2.13.2输入参数
16进制字符hex(’0’~’9’|’A’~’F’|’a’~’f’)
2.13.3输出参数
BCD码字符串bcd(4字节长)
2.13.4返回值
0表示成功;-1表示参数非法
2.14BCD码字符串转换为16进制字符intBcd2Char(char*bcd,char*hex)
2.14.1功能
BCD码字符串转换为16进制字符
2.14.2输入参数
BCD码字符串bcd(4字节长,由’0’|’1’组成)
2.14.3输出参数
16进制字符*hex
2.14.4返回值
0表示成功;-1表示参数非法
2.15计算帐号校验位intAcctChkBit(char*acct_no,intacct_type)
2.15.1功能
计算帐号校验位
2.15.2输入参数
帐号acct_no(带不带校验位都可以)
帐号类型acct_type
ACCT_DEP_CARD16表示16位储蓄卡
ACCT_DEP_CARD19表示19位储蓄卡
ACCT_DEP20表示20位储蓄帐号
ACCT_DEP19表示19位储蓄帐号
ACCT_CREDIT表示信用卡
ACCT_ACC表示会计帐号
ACCT_CUSTID表示客户编号
2.15.3返回值
检验位数值
2.16校验帐号校验位intChkAcct(char*acct_no,intacct_type)
2.16.1功能
校验帐号校验位
2.16.2输入参数
帐号acct_no
帐号类型acct_type
ACCT_DEP_CARD16表示16位储蓄卡
ACCT_DEP_CARD19表示19位储蓄卡
ACCT_DEP20表示20位储蓄帐号
ACCT_DEP19表示19位储蓄帐号
ACCT_CREDIT表示信用卡
ACCT_ACC表示会计帐号
ACCT_CUSTID表示客户编号
2.16.3返回值
0表示成功;其他表示失败
2.17产生字符串char*_str(char*fmt,…)
2.17.1功能:
产生字符串
2.17.2输入参数:
同printf
2.17.3输出参数:
无
2.17.4返回值:
字符串
2.17.5说明:
返回值指向长度为1024的静态缓冲区,每次调用都覆盖以前调用的结果。
所以,如果需要保留结果,必须将其复制到其他地方(例如使用strcpy)。
同样的原因,不能在一个函数调用中调用多次本函数(例如printf(“%s%s\n”,_str(“aaa”),_str(“bbb”)))。
另外,当产生的字符串长于1023时也不能使用本函数。
2.18设置缓冲区voidInitStr(char*str,intbufsize)
2.18.1功能:
(为StrCat函数)设置缓冲区
2.18.2输入参数:
字符串str
缓冲区大小bufsize
2.18.3输出参数:
无
2.18.4返回值:
无
2.18.5说明:
详见StrCat
2.19将字符串拼接到缓冲区intStrCat(char*fmt,…)
2.19.1功能:
将字符串拼接到缓冲区
2.19.2输入参数:
同printf
2.19.3输出参数:
无
2.19.4返回值:
0表示成功;其他表示失败(缓冲区满)
2.19.5说明:
很多地方需要将很多域拼接到一个字符串中。
当域很多时,使用strcat效率是很低的。
用InitStr函数设置字符串的地址和容量,然后用反复调用本函数进行拼接。
第3章金额、数值类
3.1voidRound(double*f,intprec)
3.1.1功能
对双精度数四舍五入
3.1.2输入参数
双精度数*f
取舍精度(小数位数)prec
3.1.3输出参数
双精度数*f
3.1.4返回值
无
3.2voidMny2Chn(doublemny,char*chn)
3.2.1功能
将双精度型的金额转换为大写汉字字符串
3.2.2输入参数
双精度金额mny
3.2.3输出参数
大写汉字字符串chn,如”壹圆伍角整”
3.2.4返回值
无
3.2.5说明
当金额太大(超过千亿)时,chn中将直接存放全角数字字符串(无法读出金额)
3.3voidMny2Sbc(doublemny,char*sbc)
3.3.1功能
将双精度型的金额转换为全角数字字符串
3.3.2输入参数
双精度金额mny
3.3.3输出参数
全角数字字符串sbc,如”¥1·50”
3.3.4返回值
无
3.4voidMny2Acc(doublemny,char*acc)
3.4.1功能
将双精度型的金额转换为会计形式的半角数字字符串
3.4.2输入参数
双精度金额mny
3.4.3输出参数
全角数字字符串sbc,如”-1,234,567.00”
3.4.4返回值
无
3.5intPerAcctChkBit(intper_acct_no)
3.5.1功能
计算公积金个人帐号检验位
3.5.2输入参数
公积金个人帐号per_acct_no
3.5.3返回值
帐号校验位
3.6MIN(a,b)
3.6.1功能
返回两数中较小者。
3.6.2说明
这是一个宏。
#defineMIN(a,b)((a)<(b)?
(a):
(b))
3.7MAX(a,b)
3.7.1功能
返回两数中较大者。
3.7.2说明
这是一个宏。
#defineMAX(a,b)((a)>(b)?
(a):
(b))
3.8ABS(a)
3.8.1功能
返回绝对值。
3.8.2说明
这是一个宏。
#defineABS(