求一个类似于银行发条明细的财务管理系统,下面这个太简单了
#include "stdio.h"#include "conio.h"
#include "stdlib.h"
struct JT
{
char rq[80];
char zy[80];
float xf;
float ye;
}J[10]; /*存财务信息*/
int N;
int ReadJ(char file[])/*读财务信息*/
{
int n,i=0;
FILE *fp=fopen("JTCWGLXT.txt","r");
char s[80];fgets(s,80,fp);
do
{
n=fscanf(fp,"%s %s %f %f",J[i].rq,J[i].zy,&J[i].xf,&J[i].ye);
if(n==4)i++;/*若读到4个数据则i加1*/
}
while(n==4);
fclose(fp);
return i;
}
void DispJ()/*显示财务信息*/
{
int i;
printf("%s %8s %8.2f %8.2f\n",J[0].rq,J[0].zy,J[0].xf,J[0].ye);
for(i=1;i<N;i++)
printf("%s %8s %8.2f %8.2f\n",J[i].rq,J[i].zy,J[i].xf,J[i-1].ye+J[i].xf);
}
void DispZ()/*显示财务总收入信息*/
{int i; float s=0;
printf("总收入:\n");
for(i=0;i<N;i++)
{
if(J[i].xf>0)
s=s+J[i].xf;
}
printf("%8.2f\n",s);
}
void DispF()/*显示财务总支出信息*/
{
int i; float s=0;
printf("总支出:\n");
for(i=0;i<N;i++)
{
if(J[i].xf<0)
s=s+J[i].xf;
}
printf("%8.2f\n",s);
}
void InsJ()/*增加财务信息*/
{
int n,i=N; /*设置师生关系记录数*/
printf("输入日期,摘要,收入或支出(支出为0退出)\n");
do
{
n=scanf("%s %s %f",J[i].rq,J[i].zy,&J[i].xf);
if(J[i].xf==0)break;/*收入和支出为0则退出*/
if(n==3)i++;
}
while(n==3);
N=i; /*修改财务信息记录数*/
}
void SaveJ(char file[])/*保存财务信息关系*/
{
int i;
FILE *fp=fopen(file,"w");
char s[80]="日期 摘要 收入与支出 余额\n";fputs(s,fp);/*写表头行*/
fprintf(fp,"%s %8s %8.2f %8.2f\n",J[0].rq,J[0].zy,J[0].xf,J[0].ye);
for(i=1;i<N;i++)
fprintf( fp,"%s %8s %8.2f %8.2f\n",J[i].rq,J[i].zy,J[i].xf,J[i-1].ye+J[i].xf);
fclose(fp);
}
void main()
{
char c='0';
N=ReadJ("JTCWGLXT.txt");
while(c!='9'&&c!=27) /*按9或Esc(=27)退出*/
{
printf("1.显示财务信息\n2.显示总收入信息\n3.显示总支出信息\n4.增加财务信息\n");
printf("5.退出系统(Esc)\n");/*显示菜单信息*/
c=getch();/*读菜单序号1~9*/
system("CLS");/*清屏,TC用clrscr();,VC用system("CLS");*/
switch(c)
{
case '1':DispJ();break; /*显示财务信息*/
case '2':DispZ();break;/*显示财务总收入信息*/
case '3':DispF();break;/*显示财务总支出信息*/
case '4':InsJ();break;/*增加财务关系信息*/
case '5':case 27: SaveJ("J2.txt");return; /*按9或Esc(=27)另存后退出*/
}
printf("按任意键返回主菜单\n");c=getch();
system("CLS");/*清屏,TC用clrscr();,VC用system("CLS");*/
}
}