C语言财务管理系统源代码.docx

上传人:b****8 文档编号:8828507 上传时间:2023-02-02 格式:DOCX 页数:21 大小:18.94KB
下载 相关 举报
C语言财务管理系统源代码.docx_第1页
第1页 / 共21页
C语言财务管理系统源代码.docx_第2页
第2页 / 共21页
C语言财务管理系统源代码.docx_第3页
第3页 / 共21页
C语言财务管理系统源代码.docx_第4页
第4页 / 共21页
C语言财务管理系统源代码.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言财务管理系统源代码.docx

《C语言财务管理系统源代码.docx》由会员分享,可在线阅读,更多相关《C语言财务管理系统源代码.docx(21页珍藏版)》请在冰豆网上搜索。

C语言财务管理系统源代码.docx

C语言财务管理系统源代码

#include"stdio.h"

#include”stdlib.h"

#defineMAX_NAME11

#defineMAX_DETAIL21

#defineMENU_COUNT9

#defineDATA_FILE"fa。

dat”

typedefwnum_fi_type

income=1,

payout=-1

}fi_type;

typedefstruct_fi_info

{

intyear;

intmonth;

fi_typetype;

charname[MAX_NAME];

floatmoney;

chardetail[MAX_DETAIL];

}fi_info;

typedefstruct_fi_data

fi_infoinfo;

struct_fi_data*next;

}fi_data;

voidadd_income();

voidsearch_income();

voiddelete_income();

voidupdate_income();

voidadd_payout();

voidsearch_payout();

voiddelete_payout();

voidupdate_payout();

voidcount_total();

voidquit();

voidsearch_data(fi_typetype);

voiddelete_data(fi_typetype);

voidupdate_data(fi_typetype);

voidinitialize();

voidsave_to_file();

voidclear_data();

fi_data*get_last();

fi_data*get_previous(fi_data*p);

voidinput_info(fi_info*info);

voidshow_info(fi_data*p[],intcount);

fi_data*head;

charmenu[]=

"===============================================\n"

”|家庭财务管理系统|\n"

”+-----—------—-——-—-—--—--—-——--——-—-——-—-——--+\n”

"|收入管理|\n”

”|1添加收入|\n”

"|2查询收入明细|\n”

"|3删除收入|\n”

"|4修改收入|\n”

"|支出管理|\n”

"|5添加支出|\n"

"|6查询支出明细|\n”

"|7删除支出|\n”

"|8修改支出|\n"

”|统计|\n”

"|9统计总收入总支出|\n"

"----——--—---—---——--———-——-——-———--——--—--——--+\n”

”|0退出系统|\n”

”==============================================+\n”;

void(*menu_fun[])()=

{

quit,

add_income,

search_income,

delete_income,

update_income,

add_payout,

search_payout,

delete_payout,

update_payout,

count_total

};

intmain()

{

intselected=0;

initialize();

while(selected>=0&&selected〈=MENU_COUNT)

{

system(”cls”);

printf(menu);

printf(”>请选择要进行的操作(%d-%d):

”,0,MENU_COUNT);

if(scanf("%d",&selected)!

=1||selected<0||selected〉MENU_COUNT)

{

printf(”>输入错误!

请选择[%d—%d]之间的数字!

按任意键重试..。

”,0,MENU_COUNT);

fflush(stdin);

getchar();

}

else

{

menu_fun[selected]();

}

selected=0;

}

voidadd_income()

{

fi_data*p=(fi_data*)malloc(sizeof(fi_data));

memset(p,0,sizeof(fi_data));

p—>next=NULL;

input_info(&(p-〉info));

p->info。

type=income;

if(head==NULL)

head=p;

else

get_last(head)—>next=p;

}

voidsearch_income()

{

search_data(income);

voiddelete_income()

delete_data(income);

voidupdate_income()

update_data(income);

}

voidadd_payout()

fi_data*p=(fi_data*)malloc(sizeof(fi_data));

memset(p,0,sizeof(fi_data));

input_info(&(p—〉info));

p—>info.type=payout;

if(head==NULL)

head=p;

}

else

get_last(head)—〉next=p;

}

voidsearch_payout()

{

search_data(payout);

}

voiddelete_payout()

{

delete_data(payout);

}

voidupdate_payout()

update_data(payout);

}

voidcount_total()

floattotal_income=0。

0;

floattotal_payout=0.0;

fi_data*p=head;

while(p!

=NULL)

if(p—>info.type==income)

total_income+=p—>info.money;

else

{

total_payout+=p->info.money;

}

p=p->next;

printf("+-----—--—+-—————--—+———-——---+\n");

printf("|合计收入|合计支出|结余|\n");

printf("+——————---+-—----——-+-—--—--—-+\n”);

printf(”|%12。

2f|%12.2f|%12.2f|\n",total_income,total_payout,total_income-total_payout);

printf("+—-——--———+-—----—-—+———————--+\n");

printf("〉按任意键继续返回主菜单。

”);

fflush(stdin);

getchar();

voidsearch_data(fi_typetype)

{

intyear=0;

intmonth=0;

fi_data*p=NULL;

fi_data*result[9]={NULL};

intcount=0;

charinput=’';

while

(1)

printf("〉请输入要查询的年月(例如:

2009/1)”);

if(scanf("%d/%d”,&year,&month)!

=2)

{

printf(”>输入错误。

\n”);

else

{

p=head;

count=0;

memset(result,0,sizeof(fi_data*));

while(p!

=NULL)

{

if(p—>info。

year==year&&p-〉info。

month==month&&p-〉info。

type==type)

{

if(count<9)

result[count]=p;

count++;

}

else

show_info(result,count);

printf(">输入空格并回车翻页。

其他键退出。

”);

fflush(stdin);

input=getchar();

if(input==’')

memset(result,0,sizeof(fi_data*));

count=0;

result[count]=p;

count++;

}

else

break;

}

p=p->next;

if(count!

=0)

{

show_info(result,count);

}

else

{

printf(”>没有找到数据。

\n”);

}

printf(”〉继续查找其他数据?

(yorn)");

fflush(stdin);

input=getchar();

if(input=='y’||input==’Y’)

{

continue;

}

else

{

break;

}

}

}

voiddelete_data(fi_typetype)

intyear=0;

intmonth=0;

fi_data*p=NULL;

fi_data*pre=NULL;

fi_data*result[9]={NULL};

intcount=0;

charinput=’’;

inti=0;

while

(1)

{

printf(”>请输入要查询的年月(例如:

2009/1)”);

if(scanf("%d/%d",&year,&month)!

=2)

{

printf(”>输入错误。

\n”);

}

else

p=head;

count=0;

memset(result,0,sizeof(fi_data*));

while(p!

=NULL)

if(p—>info.year==year&&p—〉info.month&&p-〉info.type)

if(count=9)

result[count]=p;

count++;

}

else

{

show_info(result,count);

printf(”>请输入空格并回车翻页。

输入对应的序号删除。

其他键退出:

”);

fflush(stdin)

input=getchar();

if(input==’')

{

memset(result,0,sizeof(fi_data*));

count=0;

result[count]=p;

count++;

}

elseif(input=='1’&&input<=48+count)

i=input-49;

pre=get_previous(result[i]);

if(pre==NULL)

head=head—>next;

}

else

{

pre—>next=result[i]—〉next;

}

free(result[i]);

for(;i

result[i]=result[i+1];

}

result[i]=p;

printf(">删除成功。

\n");

}

else

{

break;

}

}

p=p—>next;

}

if(count!

=0)

{

show_info(result,count);

printf(”>输入对应的序号删除。

其他键退出。

");

fflush(stdin);

input=getchar();

if(input>='1'&&input<=48+count)

i=input—49;

pre=get_previous(result[i]);

if(pre==NULL)

{

head=head-〉next;

}

else

{

pre->next=result[i]-〉next;

}

free(result[i]);

for(;i

{

result[i]=result[i+1];

}

result[i]=NULL;

count——;

printf(">删除成功.\n");

else

{

printf(”>没有找到数据。

\n");

}

printf(”>继续查找数据?

(yorn)”);

fflush(stdin);

input=getchar();

if(input=='y'||input=='Y')

continue;

else

{

break;

}

}

voidupdate_data(fi_typetype)

intyear=0;

intmonth=0;

fi_data*p=NULL;

fi_data*pre=NULL;

fi_data*result[9]={NULL};

intcount=0;

charinput='';

inti=0;

while

(1)

{

printf(">请输入要查询的年月(例如:

2009/1)");

if(scanf(”%d/%d",&year,&month)!

=2)

{

printf(”>输入错误。

\n");

}

else

p=head;

count=0;

memset(result,0,sizeof(fi_data*));

while(p!

=NULL)

if(p->info。

year==year&&p-〉info.month==month&&p-〉info.type==type)

{

if(count<9)

result[count]=p;

count++;

}

else

{

show_info(result,count);

printf(”〉输入空格并回车翻页。

输入对应的序号修改.其他键退出。

”);

fflush(stdin);

input=getchar();

if(input=='')

memset(result,0,sizeof(fi-data*));

count=0;

result[count]=p;

count++;

}

elseif(input>=’1’&&input〈=48+count)

i=input—49;

input_info(&(result[i]—〉info));

printf(”>修改成功。

\n”);

p=get_previous(p);

else

break;

}

}

p=p—>next;

}

if(count!

=0)

{

show_info(result,count);

printf("〉输入对应的序号修改。

其他键退出。

");

fflush(stdin);

input=getchar();

if(input>=’1'&&input〈=48+count)

i=input-49;

input_info(&(result[i]—>info));

show_info(result,count);

printf(”〉修改成功。

\n”);

}

}

else

printf(”〉没有找到数据。

\n");

}

printf(">继续查找数据?

(yorn)”);

fflush(stdin);

input=getchar();

if(input=='y’||input=='Y’)

{

continue;

else

break;

}

}

voidinitialize()

{

FILE*fp=NULL;

fi_data*p=NULL;

fi_data*last=NULL;

intcount=0;

fp=fopen(DATA_FILE,”rb");

if(fp==NULL)

fp=fopen(DATA_FILE,"w");

fclose(fp);

return;

}

p=(fi_data*)malloc(sizeof(fi_data));

memset(p,0,sizeof(fi_data));

p-〉next=NULL;

while(fread(&(p->info),sizeof(fi_info),1,fp)==1)

if(head==NULL)

head=p;

}

else

{

last=get_last();

last—>next=p;

count++;

fseek(fp,count*sizeof(fi_info),SEEK_SET);

p=(fi_data*)malloc(sizeof(fi_data));

memset(p,0,sizeof(fi_data));

p-〉next=NULL;

}

free(p);

p=NULL;

fclose(fp);

}

voidsave_to_file()

{

FILE*fp=fopen(DATA_FILE,”wb");

fi_data*p=head;

while(p!

=NULL)

fwrite(&(p->info),sizeof(fi_info),1,fp);

fseek(fp,0,SEEK_END);

p=p—>next;

fclose(fp);

}

voidclear_data()

{

fi_data*p=NULL;

while(head!

=NULL)

if(head->next!

=NULL)

{

p=head;

head=head—>next;

free(p);

p=NULL;

else

free(head);

head=NULL;

}

}

fi_data*get_last()

fi_data*p=head;

if(p==NULL)

{

returnp;

while((p!

=NULL)&&(p->nezt!

=NULL))

{

p=p—〉next;

returnp;

}

fi_data*get_previous(fi_data*p)

fi_data*previous=head;

while(previous!

=NULL)

{

if(previous-〉next==p)

break;

}

previous=previous-〉next;

returnprevious;

voidinput_info(fi_info*info)

{

printf(”〉请输入年月(YYYY/M):

”);

scanf(”%d/%d”,*(info—〉year),&(info->month));

printf(">请输入家庭成员姓名(最大长度为%d):

",MAX_NAME-1);

scanf("%s”,info->name);

printf(”>请输入金额:

");

scanf("%f”,&(info->money));

printf(”〉请输入备注(最大长度为%d):

”,MAX_DETAIL-1);

scanf("%s",info->detail);

}

voidshow_info(fi_data*p[],intcount)

inti=0;

printf(”+-——+--—--—-—+--———-—+--——-—--—————+-—----———----+--—-----—---——---———+\n");

printf(”|No.|年—月|类型|姓名|金额|备注|\n”);

printf("+———+-—--—-——+——-———-+—---—-——--———+—-—---———--—-+——-—---—--—--—------+\n");

for(i=0;i〈count;i++)

{

printf(”|%3d|%4d-%02d|%4s|%-10s|%10。

2f|%-20s|\n”,

i+1,

p[i]—〉info。

year,p[i]—>info.month,

p[i]—〉info.type==income?

"收入":

”支出”,

p[i]->info.name,

p[i]->info。

money,

p[i]—>info。

detail);

printf(”+---+———--——-+-————-—+---—-------—-+—-—-——-—---——+————————-—-—-———-———-+\n");

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1