C语言财务管理系统源代码Word文档格式.docx
- 文档编号:22022623
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:20
- 大小:16.79KB
C语言财务管理系统源代码Word文档格式.docx
《C语言财务管理系统源代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言财务管理系统源代码Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
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)
输入错误!
请选择[%d-%d]之间的数字!
按任意键重试..."
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));
info.type=income;
if(head==NULL)
head=p;
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));
info.type=payout;
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;
total_payout+=p->
p=p->
next;
+---------+---------+---------+\n"
|合计收入|合计支出|结余|\n"
|%12.2f|%12.2f|%12.2f|\n"
total_income,total_payout,total_income-total_payout);
按任意键继续返回主菜单..."
voidsearch_data(fi_typetype)
intyear=0;
intmonth=0;
fi_data*p=NULL;
fi_data*result[9]={NULL};
intcount=0;
charinput='
'
while
(1)
请输入要查询的年月(例如:
2009/1)"
%d/%d"
year,&
month)!
=2)
printf("
输入错误。
\n"
p=head;
count=0;
memset(result,0,sizeof(fi_data*));
info.year==year&
p->
info.month==month&
info.type==type)
if(count<
9)
result[count]=p;
count++;
show_info(result,count);
输入空格并回车翻页。
其他键退出。
input=getchar();
if(input=='
)
break;
if(count!
=0)
没有找到数据。
继续查找其他数据?
(yorn)"
y'
||input=='
Y'
continue;
voiddelete_data(fi_typetype)
fi_data*pre=NULL;
inti=0;
请输入要查询的年月(例如:
info.month&
info.type)
if(count=9)
请输入空格并回车翻页。
输入对应的序号删除。
其他键退出:
fflush(stdin)
elseif(input=='
1'
&
input<
=48+count)
i=input-49;
pre=get_previous(result[i]);
if(pre==NULL)
head=head->
pre->
next=result[i]->
free(result[i]);
for(;
i<
count-1;
i++)
result[i]=result[i+1];
result[i]=p;
删除成功。
if(input>
='
pre->
result[i]=NULL;
count--;
删除成功.\n"
继续查找数据?
||input=='
voidupdate_data(fi_typetype)
输入对应的序号修改。
memset(result,0,sizeof(fi-data*));
elseif(input>
(result[i]->
修改成功。
p=get_previous(p);
voidinitialize()
FILE*fp=NULL;
fi_data*last=NULL;
fp=fopen(DATA_FILE,"
rb"
if(fp==NULL)
w"
fclose(fp);
return;
p=(fi_data*)malloc(sizeof(fi_data));
while(fread(&
info),sizeof(fi_info),1,fp)==1)
last=get_last();
last->
fseek(fp,count*sizeof(fi_info),SEEK_SET);
free(p);
p=NULL;
voidsave_to_file()
FILE*fp=fopen(DATA_FILE,"
wb"
fwrite(&
info),sizeof(fi_info),1,fp);
fseek(fp,0,SEEK_END);
voidclear_data()
while(head!
if(head->
next!
free(head);
head=NULL;
fi_data*get_last()
if(p==NULL)
returnp;
while((p!
=NULL)&
(p->
nezt!
=NULL))
fi_data*get_previous(fi_data*p)
fi_data*previous=head;
while(previous!
if(previous->
next==p)
previous=previous->
returnprevious;
voidinput_info(fi_info*info)
请输入年月(YYYY/M):
scanf("
*(info->
year),&
(info->
month));
请输入家庭成员姓名(最大长度为%d):
MAX_NAME-1);
%s"
info->
name);
请输入金额:
%f"
money));
请输入备注(最大长度为%d):
MAX_DETAIL-1);
detail);
voidshow_info(fi_data*p[],intcount)
+---+--------+-------+-------------+-------------+--------------------+\n"
|No.|年-月|类型|姓名|金额|备注|\n"
for(i=0;
count;
|%3d|%4d-%02d|%4s|%-10s|%10.2f|%-20s|\n"
i+1,
p[i]->
info.year,p[i]->
info.month,
info.type==income?
收入"
:
支出"
info.name,
info.money,
info.detail);
+---+--------+-------+-------------+-------------+---------------------+\n"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 财务管理 系统 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)