C语言课程设计家庭财务管理系统方案文档格式.docx
《C语言课程设计家庭财务管理系统方案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计家庭财务管理系统方案文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
①add_income():
添加收入数据函数。
②add_payout():
添加支出数据函数。
③search_data():
查找数据函数。
④initialize():
初始化函数,读取文本数据。
⑤show_info():
显示数据函数。
⑥count_total():
统计函数,统计总收入、总支出。
⑦update_data():
修改信息函数。
⑧delete_data():
删除数据函数。
⑨quit():
退出函数。
程序结构功能图如下:
3.详细设计
3.1收入管理
3.2支出管理
4.测试结果
4.1程序运行主菜单
4.2添加收入测试
4.3查询收入明细测试
4.4删除收入测试
4.5修改收入测试
4.6添加支出测试
4.7查询支出明细测试
4.8删除支出测试
4.9修改支出测试
4.10统计总收入/支出测试
4.11退出系统测试
5.软件操作使用说明书
本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示),然后按照主界面菜单指引操作即可。
6.总结
编写程序之前要有一个整体的思路,不能写到哪里算哪里。
这样很容易遗漏,连续性也不好。
通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。
希望在以后的课程设计中对于知识的运用能够更加的熟练。
代码:
#include<
stdio.h>
stdlib.h>
string.h>
conio.h>
#defineMAXNAME11//家庭成员姓名的最大长度
#defineMAXDETAIL21 //注最大长度
//自定义枚举类型fi_type,用来表示收入与支出
typedefenum_fi_type
{
income=1,//收入
payout=-1//支出
}fi_type;
//家庭财务信息结构体
typedefstruct_fi_info
intyear;
intmonth;
fi_typetype;
charname[9];
floatmoney;
chardetail[11];
}fi_info;
//存储财务数据结构的结构体
typedefstruct_fi_data
fi_infoinfo;
struct_fi_data*next;
}fi_data;
fi_data*head;
//财务数据的头结点
voidmenu();
//菜单函数
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);
voidmenu()
printf("
\n"
);
\t\t~~~~~~~~~~~~~~~~~~~~~~\n"
\t\t\t家庭财务管理系统\n"
\t\t*******************************************\n"
\t\t收入管理:
"
1.添加收入"
2.查询收入明细\n"
\t\t\t3.删除收入"
4.修改收入\n"
\t\t支出管理:
5.添加支出"
6.查询支出明细\n"
\t\t\t7.删除支出"
8.修改支出\n"
\t\t统计:
9.统计总收入/总支出\n"
\t\t退出:
0.退出系统\n"
\t\t*******************************************\n\n\n"
}
voidmain()
intselected=0;
initialize();
while(selected>
=0&
&
selected<
=9)
system("
cls"
menu();
\t\t>
请选择要进行的操作(0-9):
if(scanf("
%d"
&
selected)!
=1||selected<
0||selected>
9)
输入有误!
请选择(0-9)之间的数字!
按任意键重试"
getchar();
else
switch(selected)
case0:
exit(0);
clear_data();
break;
case1:
add_income();
save_to_file();
case2:
search_income();
case3:
delete_income();
case4:
update_income();
case5:
add_payout();
case6:
search_payout();
case7:
delete_payout();
case8:
update_payout();
case9:
count_total();
voidadd_income()//添加收入
fi_data*p=(fi_data*)malloc(sizeof(fi_data));
p->
next=NULL;
input_info(&
(p->
info));
info.type=income;
if(head==NULL)
head=p;
get_last()->
next=p;
voidadd_payout()//添加支出
info.type=payout;
//输入函数
voidinput_info(fi_info*info)
请输入年月(YYYY/M)"
scanf("
%d/%d"
(info->
year),&
month));
请输入家庭成员姓名(最大长度为%d):
MAXNAME-1);
%s"
info->
name);
输入金额:
%f"
money));
请输入备注(最大长度为%d):
20);
detail);
//查找数据函数
voidsearch_data(fi_typetype)
intyear=0;
intmonth=0;
fi_data*p=NULL;
intcount=0;
charinput='
'
;
while
(1)
请输入要查询的年月(YYYY/M)"
year,&
month)!
=2)
输入有误\n"
p=head;
count=0;
while(p!
=NULL)
if((p->
info.year==year)&
info.month==month)&
info.type==type))
show_info(p);
PAUSE"
count++;
p=p->
next;
if(count==0)
没有找到数据\n"
继续查找其他数据?
(yorn)"
input=getchar();
if(input=='
y'
|