====================================================================
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <dos.h>
#include <windows.h>
#define DEAL50/*设计最大交易次数*/
struct date
{
int da_year;
int da_mon;
int da_day;
};
struct time
{
int ti_hour;
int ti_min;
int ti_sec;
};
struct deal
{
struct date dt;/*每笔交易的日期*/
struct time ti;/*每笔交易的时间*/
double earning;/*每笔交易的收入额度*/
double payout;/*每笔交易的支出额度*/
};
typedef struct deal FINANCE;
FINANCE person[DEAL]={0};
/*函数功能:求账面上的余额
函数参数:结构体指针变量per,代表指向结构体数组的指针
函数返回值:账面余额
*/
float Balance(FINANCE *per)
{
int i;
float sum1 = 0.0,sum2 = 0.0;
for(i=0;i<DEAL;i++)
{
sum1 += (per+i)->earning;
sum2 += (per+i)->payout;
}
return sum1+sum2;
}
/*函数功能:年度统计,输出年度收入总额、支出总额、余额
函数参数:结构体指针变量per,代表指向结构体数组的指针
整型变量year,代表年度,如2004
函数返回值:无
*/
void OneYearBalance(FINANCE *per,int year)
{
int i;
float sum1 = 0.0,sum2 = 0.0;
for(i=0;i<DEAL;i++)
{
if((per+i)->dt.da_year != year)continue;
sum1 += (per+i)->earning;
sum2 += (per+i)->payout;
}
printf("%d 年信息如下 : ",year);
printf("总收入 总支出 余额\n");
printf("%28.2f%21.2f%19.2f\n",sum1,sum2,sum1+sum2);
}
/*函数功能:打印所有的交易信息
函数参数:结构体指针变量per,代表指向结构体数组的指针
函数返回值:无
*/
void PrintBalance(FINANCE *per)
{
int i;
printf(" 日期 时间 收入 支出 余额 \n");
for(i=0;i<DEAL;i++)
{
if((per+i)->dt.da_year != 0)
{
printf("%d/%d/%d ",(per+i)->dt.da_year,
(per+i)->dt.da_mon,(per+i)->dt.da_day);
printf("%d:%d:%d :",(per+i)->ti.ti_hour,
(per+i)->ti.ti_min,(per+i)->ti.ti_sec);
}
if((per+i)->earning!=0)
printf("%8.2f\n",(per+i)->earning);
if((per+i)->payout!=0)
printf(" %8.2f\n",(per+i)->payout);
}
printf(" %8.2f\n",
Balance(per));
}
/*函数功能:打印某一年的交易信息
函数参数:结构体指针变量per,代表指向结构体数组的指针
函数返回值:无
*/
void PrintOneYear(FINANCE *per)
{
int i,year;
printf("请输入年份 :");
scanf("%d",&year);
printf(" 日期 时间 收入 支出 余额 \n");
for(i=0;i<DEAL;i++)
{
if((per+i)->dt.da_year != year) continue;
if((per+i)->dt.da_year!=0)
{
printf("%d/%d/%d ",(per+i)->dt.da_year,
(per+i)->dt.da_mon,(per+i)->dt.da_day);
printf("%d:%d:%d :",(per+i)->ti.ti_hour,
(per+i)->ti.ti_min,(per+i)->ti.ti