定期储蓄存款利息计算源码

发布时间:2011-02-25 23:28:03   来源:文档文库   
字号:

/* lxjs.c */

getll(mk,bp,ep,rd,rv)

char mk[];

long bp,ep,rd[];

double rv[];

{

int i,l,cc;

char s[5];

RATE p;

i=0;

fileopen(FILEOPEN,"drate","nu_rq",ratlist,RAT_N);

strcpy(p.num,mk);

p.rq=bp;

cc=dbfind("drate",GREATER,(char *)0,&l,&p);

if(cc) cc=dbfind("drate",LAST,(char *)0,&l,&p);

else cc=dbfind("drate",PREVIOUS,(char *)0,&l,&p);

if(cc || strcmp(mk,p.num)){

if(mk[0]-'!') next("计息时遇到错误....利率找不到:",mk,1);

fileclose("drate");

return(-1);

}

rd[i]=p.rq;

rv[i]=p.rate;

cc=dbfind("drate",NEXT,(char *)0,&l,&p);

while(cc==0 && strcmp(mk,p.num)==0 && ep>p.rq) {

i++;

rd[i]=p.rq;

rv[i]=p.rate;

cc=dbfind("drate",NEXT,(char *)0,&l,&p);

}

fileclose("drate");

return(i);

}

get1ll(zh,qx,ld,x)

char zh[];

int qx;

long ld;

double *x;

{

int l;

char nu[20];

long rd[5];

double rv[5];

INDEX p;

strcpy(nu,zh);

sprintf(nu+4,"%3d",qx);

if(nu[4]==' ') nu[4]='0';

if(nu[5]==' ') nu[5]='0';

nu[7]=0;

fileopen(FILEOPEN,"dindex","idxnu",idxlist,IDX_N);

dbfind("dindex",COMPARISON,nu,&l,&p);

fileclose("dindex");

strcpy(nu,p.idxref);

l=getll(nu,ld,ld,rd,rv); /* l=getll(nu,ld+1,ld+1,rd,rv); */

if(l== -1) *x = 0.0;

else *x = rv[0];

return;

}

hzgblx(lb,le,ce,lx,nu)

long lb,le;

double ce,*lx;

char *nu;

{

int i,n;

int dd;

long rd[30];

double rv[30],xx;

n=getll(nu,lb,le,rd,rv);

if(n== -1) {

*lx=0.0;

return(-1);

}

rd[n+1]=le;

i=1;

xx=0.0;

while (i<=n+1){

if(i==1) dd=ldayof(lb,rd[i]);

else dd=ldayof(rd[i-1],rd[i]);

xx += ce * dd * rv[i-1]/(360*100);

i++;

}

i=(xx<0.00)?(-10):10; /* */

modf(fabs(xx/10)+0.5,lx); /* 变为毫后再舍入 */

*lx *= i;

return(0);

}

hzlx(nu,ld,m,lx)

char *nu;

long ld;

double m,*lx;

{

int k,mm,d,dd;

short y[3];

double x,ll;

rjulmdy(ld,y,YDATETYPE);

/* get1ll(nu,0,ld,&ll); */

d=(y[2]>30)?30:y[2];

mm=(y[1]>=7)?y[1]:(y[1]+12);

dd=360-((mm-7)*30+d-1);

k=(m<0.00) ? (-1) : 1;

modf((m*k)/100,&x);

x = x * dd*3/300;

modf(x*10+0.5,lx);

*lx = *lx*k/10; /* 给出三厘积数 */

return;

}

tzlx(nu,kh,ld,m,lx,ll)

char *nu;

long ld,kh;

double m,*lx,*ll;

{

long days;

int i;

double x,ll1,ll2;

days=ldayof(kh,ld);

i=(int)(days/30);

if (i>=12) i=13;

else if (i>=1) i++;

else if(days>=15) i=1;

else i=0;

get1ll(nu,i,ld,&ll2);

get1ll(nu,0,ld,&ll1);

if (i==13) x=-1*m*(360*ll2+(days-360)*ll1)/(360*100);

else x=-1*m*days*ll2/(360*100);

*ll=ll2;

modf((x+0.5),lx);

return;

}

本文来源:https://www.2haoxitong.net/k/doc/a8fb13106c175f0e7cd13772.html

《定期储蓄存款利息计算源码.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式