C语言课程设计家庭财务管理系统Word下载.docx
《C语言课程设计家庭财务管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计家庭财务管理系统Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
》请选>更进彳二的撲作ca-v>:
4.3查询收入明细测试
溝漱明细
收入管理豊翻
细明支支沓-修
■■
68
出出
支支
加除
i
■-«
57
堆菅出支
统计汁•统计总收人二总支出退岀词•退岀系统
'
请选择要进行的換作<
0-9>
:
2
沁青输入要查询的穿月好匹肮”7
请按任意键畛心其也数据?
<
y叶n>
4.4删除收入测试
4hA*#.N*l*WUAAA貝VlAA,RHuW.MAAjAjfKj*
•nrrHnrwMnmmmMVirwvwnmrnimjrwHmmww
耳XJOEXiMICMXX3<
风*<
耳XMI>
EKKKN掛耳XX3<
Wr>
E:
MiMKliEXXXX斃
入明细
冢庭财务管理系统
4
HXItJOOCJCKKJffKHKltKUKKKKJClfUlflffKltXKXKJtltMKlTMlflKltiMKJC
6.
轉K科稱補稻耳港KiHPt■耳轉齋■黑禅齋■清KiHKiM贰清料牺if清清秫齋啊轉M统计汁•统计忌收入儿鼠支出退岀汨•退岀系统》请选择雯迸行的操作個“竹
》诘切八耍查询的年月<
¥
Wzf1>
201-4/l
II4
》删除成功
Pi^rssan^keytocnnt-imie
4.5修改收入测试
■M-
MJM)CJ<
MK]il!
XHJCXIOCWJtXJHXKKTHTHieTCJtXltJCJtJ<
JtKKJC收A管理m添加收入趴查育
3•删除收入
屛・其N■)«
BOfMJtHBtiM豪算K:
W址耳英*號豪KJCMiMtiMlCiMK3f號耳贰JtNJf3<
X
「查询支出明细
8•修改支出
统计也统计创"
辺吏出
退出:
肌退出系纟充
4.6添加支出测试
4.7查询支出明细测试
■udviBiimiaufMawmwvwiviiBiwiuriVia^-waufvawMiiw家庭财务管理系统nrrwmvwwwMwvwnrnmwmwwKirwwruYuwv
■wwsmwvrwnriffwwvnFiwrHnrhHwurwwrurunjw
收初狒歓
XNJf孫XNw
2-0
4-W
4翹:
k轨耳NJieKH曲耳><嵐耳昶x*入明细
攵人
HLMLJ^LJR
支岀管瑋汚•探加支出巴删除支出
般护细
绕i+=?
.^^fcA/.aSS
emer
退
S:
0-iai系绕
i■
奮按任意键继续.'
•
4.8删除支出测试
«
■
泉庭财务管理系统收入管理沁
3
務賑旳细
ME界貝其貝耳疑耳冥艮K耳KME界]<界箕梵JOC3KHM:
耳NW算見其買梵就艮植耳拉算址舅覽如其
支出管理參報鑒:
義鏗细
:
K“a<
:
WFjaNtfKItfNJ*;
K“M;
*M*:
KhE倚甘1*材UIfrJtfNJtfim;
MHHXlil:
KW;
MHU“a<
M;
M:
fcff甘
ik计=9•统计包收入/总支出退出詬•退出系统
KKM^M«
tK>
CHHX^KKMM^K>
£
KMtKMK4CX^KM^KM^K»
tK4tK»
tX^MdKX^KHK>
tK
>请选择要进行的操隹
<
=7
1
A请输入要査询的年月
H■
1
Y¥
YYZM>
2013Z1
NO.
;
年声月"
咲型
姓名
金额
!
#i£
;
iZUlJZOl:
支岀i
ii1
iyyJ
购物
11
[Pressanykeytocontinue
4.9修改支出测试
支岀管理汗
统
计守•统计邕收入/总支岀
/H>
2313/9
年帛
备注
衣耶
12013/09
300.00
农服
裘型
年/月
金埶
#?
-
支出
衣服
2013/09
200.00
>
谙邈择禮进肓的擁忙汚
任苣槌返回
攵入明细攵入
■:
XX莫K耳XW奪X■梵:
HMSX来JK3<
J<
HHX英X冥XNX梵黑梵]<
梵:
MXXJtXiMJCJiEXX
■W!
”M屛£
胃押■弭岸W!
岸翳詞制胃WEWIf■K屛W!
K删打删勢■»
!
■捕・骑K4HI
出汨•退出系统
合计支出
500,001
】结余
4204.63
收®
瀰
合计收入
4734.63
去出篙理沾.添呻去串S査询支出阴卸叽删除支二航膨改支出
=WW*WIff目W*1*弭W菁Iff群K材1W祈**IfWMiW”材1<
*1*舊1*舊KW
计=9•纟充i十总收入严总支出
XBiCIMXNFeM^CXXlMKIWSeiHIICIMXlMIXXIMXIK痕出m退也累统
rwna-MivrMi^mivwiwhiwr*awi*iH<
W'
iwiwiva-YiMrhi
4.10统计总收入/支出测试
4.11退出系统测试
餾捞管理系统
fWViWiVfVfYWriOVfWVfUWfWW&
fVfWIVfUW
收人管理:
脇
■碁・ai・著増科耳図耳风■■耳>
■史岀譽聽【鶴护
统计伙统计施收人/总支出
整减穽姒整址整買址M址賢宾貝MIC軒慕配X慕X穽穽姒整过整肚址號址賢W貝退出血退岀系统
储选择要逝亍牆作
Pressanykeytocontinue.
5.软件操作使用说明书
本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示)然后按照主界面菜单指引操作即可。
收入管理曲•添加収入皐查询收入明细
m•删陈收入4•修改收入
・・・■・・・■■・■・■・■・■!
■■]<
■■■・:
・・■・・■・■・
■・・・■・・・■■・・■>
{■■■■■■・:
・・■・・・■■・■■■«
■・
统计叽统计刘女dz总妾由退出询•退岀系统
・・・■・・・■■・■■:
卜请选揉要进盯的换作<
"
6.总结
编写程序之前要有一个整体的思路,不能写到哪里算哪里。
这样很容易遗漏,连续性也不好。
通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。
希望在以后的课程设计中对于知识的运用能够更加的熟练。
代码:
#inelude<
stdio.h>
#inelude<
stdlib.h>
string.h>
家庭成员姓名的最大长度
//注最大长度
#ineludevconio.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」nfo;
//存储财务数据结构的结构体
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"
);
printf("
\t\tprintf("
\t\t\tprintf("
\t\t
家庭财务管理系统\n"
\t\t*
****************************************
**\n"
收入管理:
”);
添加收入"
查询收入明细\n"
删除收入"
修改收入\n"
支出管理:
添加支出"
查询支出明细\n"
printf("
\t\t\t7.删除支出"
8.修改支出\n"
\t\t统计:
9.统计总收入/总支出\n"
\t\t退出:
0.退出系统\n"
}
voidmain()
intselected=O;
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)
caseO:
exit(O);
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()〃添加支出
p->
info.type=payout;
//输入函数
voidinput_info(fi_info*info)
请输入年月(YYYY/M)"
scanf("
%d/%d"
&
(info->
year),&
month));
请输入家庭成员姓名(最大长度为%d):
MAXNAME-1);
seanf("
%s"
info->
name);
输入金额:
%f"
(info->
money));
请输入备注(最大长度为%d):
20);
detail);
//查找数据函数
voidsearch_data(fi_typetype)
intyear=0;
intmonth=0;
fi_data*p=NULL;
intcount=0;
charinput='
while⑴
请输入要查询的年月(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'
||input=='
Y'
)
continue;
//初始化函数,读取文本数据
voidinitialize()
FILE*fp=NULL;
fi_data*last=NULL;
fp=fopen("
data.txt"
"
rb"
if(fp==NULL)
w"
fclose(fp);
return;
p=(fi_data*)malloc(sizeof(fi_data));
memset(p,0,sizeof(fi_data));
while(fread(&
info),sizeof(fi_info),1,fp)==1){
if(head==NULL)
head=p;
last=get_last();
last->
fseek(fp,count*sizeof(fi_info),SEEK_SET);
p=(fi_data*)malloc(sizeof(fi_data));
free(p);
p=NULL;
//显示信息函数
voidshow」nfo(fi_data*p)
inti=0;
|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n"
|NO.\t|年/月\t\t|类型\t\t|姓名\t\t|金额\t\t|备注\t\t|\n"
|%5d\t|%4d/%02d\t|%4s\t|%10s\t|%10.2f|%20s|\n"
i+1,
info.year,p->
info.month,p->
info.type==income?
收入"
支出"
info.name,p->
info.money,p->
info.detail);
//统计总收入、总支出
voidcount_total()
floattotal_income=0.0;
floattotal_payout=0.0;
fi_data*p=head;
if(p->
info.type==income)
total_income+=p->
info.money;
total_payout+=p->
\t\t+\t\t+\t\t+\n"
\t\t|合计收入\t|合计支出\t|结余\t|\n"
\t\t%12.2f|%12.2f|%12.2f|\n"
total_income,total_payout,total_income-total_payout);
按任意键返回主菜单"
//保存到文件
voidsave_to_file()
FILE*fp=fopen("
wb"
fwrite(&
info),sizeof(fi_info),1,fp);
fseek(fp,O,SEEK_END);
//修改信息函数
voidupdate_data(fi_typetype)
{intyear=0;
fi_data*pre=NULL;
charinput;
while
(1)
{printf("
\t\t修改成功\n"
P=get_previous(p);
voiddelete_data(fi_typetype)//删除数据函数
,&
month)!