C语言课程设计家庭财务管理系统.docx

上传人:b****6 文档编号:4989342 上传时间:2022-12-12 格式:DOCX 页数:24 大小:251.16KB
下载 相关 举报
C语言课程设计家庭财务管理系统.docx_第1页
第1页 / 共24页
C语言课程设计家庭财务管理系统.docx_第2页
第2页 / 共24页
C语言课程设计家庭财务管理系统.docx_第3页
第3页 / 共24页
C语言课程设计家庭财务管理系统.docx_第4页
第4页 / 共24页
C语言课程设计家庭财务管理系统.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C语言课程设计家庭财务管理系统.docx

《C语言课程设计家庭财务管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计家庭财务管理系统.docx(24页珍藏版)》请在冰豆网上搜索。

C语言课程设计家庭财务管理系统.docx

C语言课程设计家庭财务管理系统

课程设计报告

课程设计题目:

家庭财务管理系统

学生姓名:

专业:

信息工程

班级:

指导教师:

2018年1月

1•需求分析

根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及支出进行记录和管理。

该系统要求:

①家庭月收入管理②家庭月支出管理

3统计家庭总收入/总支出④系统提供收入/支出的添加、删除和修改功能。

2.总体设计

根据以上分析,本家庭账务管理系统主要包括:

1从键盘键入家庭月收入、月支出数据;

2查询月收入、月支出明细;

3删除收入、支出数据;

4修改收入、支出数据;

5统计总收入/总支出;

6退出系统。

除main()函数之外,系统还定义了以下函数来实现各部分内容:

1add_income():

添加收入数据函数。

2add_payout():

添加支出数据函数。

3search_data():

查找数据函数。

4initialize():

初始化函数,读取文本数据。

5show_info():

显示数据函数。

6count_total():

统计函数,统计总收入、总支出。

7update_data():

修改信息函数。

8delete_data():

删除数据函数。

9quit():

退出函数。

程序结构功能图如下:

家庭财务管理系统

111

收入管理

 

3.详细设计

3.1收入管理

3.2支出管理

 

 

4.测试结果

4.1程序运行主菜单

 

 

室庭财务管理系统

 

支出管理^翩雜霭題护细

统il艸■统计总收入h总支岀

 

》请选>更进彳二的撲作ca-v>:

4.3查询收入明细测试

 

溝漱明细

收入管理豊翻

细明支支沓-修

■■

68

出出

支支

加除

i

■-«

57

■■

堆菅出支

 

统计汁•统计总收人二总支出退岀词•退岀系统

'请选择要进行的換作<0-9>:

2

沁青输入要查询的穿月好匹肮”7

 

请按任意键畛心其也数据?

4.4删除收入测试

4hA*#.N*l*WUAAA貝VlAA,RHuW.MAAjAjfKj*

•nrrHnrwMnmmmMVirwvwnmrnimjrwHmmww

耳XJOEXiMICMXX3<风*<耳XMI>EKKKN掛耳XX3E:

MiMKliEXXXX斃

入明细

冢庭财务管理系统

2

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

3•删除收入

屛・其N■)«BOfMJtHBtiM豪算K:

W址耳英*號豪KJCMiMtiMlCiMK3f號耳贰JtNJf3

「查询支出明细

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

>请选择要进行的操隹

<0-9>=7

1

A请输入要査询的年月

H■

¥1

2013Z1

1

1

1

1

1

:

NO.

1

;年声月"咲型

1

;姓名

;金额

!

#i£

;1

1

1

1

1

iZUlJZOl:

支岀i

ii1

iyyJ

1

1

购物

1

1

i

11

i

》删除成功

1

1

[Pressanykeytocontinue

4.9修改支出测试

 

家庭财务管理系统

支岀管理汗

计守•统计邕收入/总支岀

退

<¥¥¥¥/H>2313/9

年帛

姓名

金额

备注

衣耶

12013/09

300.00

农服

裘型

姓名

年/月

金埶

#?

-

支出

衣服

2013/09

200.00

>谙邈择禮进肓的擁忙汚

任苣槌返回

攵入明细攵入

■:

XX莫K耳XW奪X■梵:

HMSX来JK3

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

4.10统计总收入/支出测试

4.11退出系统测试

 

餾捞管理系统

fWViWiVfVfYWriOVfWVfUWfWW&fVfWIVfUW

收人管理:

■碁・ai・著増科耳図耳风■■耳>!

■史岀譽聽【鶴护

统计伙统计施收人/总支出

整减穽姒整址整買址M址賢宾貝MIC軒慕配X慕X穽穽姒整过整肚址號址賢W貝退出血退岀系统

储选择要逝亍牆作

Pressanykeytocontinue.

5.软件操作使用说明书

本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示)然后按照主界面菜单指引操作即可。

收入管理曲•添加収入皐查询收入明细

m•删陈收入4•修改收入

・・・■・・・■■・■・■・■・■!

<■■]<■■■・:

・・■・・■・■・

■・・・■・・・■■・・■>{■■■■■■・:

・・■・・・■■・■■■«:

■・

统计叽统计刘女dz总妾由退出询•退岀系统

・・・■・・・■■・■■:

卜请选揉要进盯的换作<">:

6.总结

编写程序之前要有一个整体的思路,不能写到哪里算哪里。

这样很容易遗漏,连续性也不好。

通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。

希望在以后的课程设计中对于知识的运用能够更加的熟练。

代码:

#inelude#inelude

#inelude

家庭成员姓名的最大长度

//注最大长度

#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\tprintf("\t\t\tprintf("\t\tprintf("\t\t

家庭财务管理系统\n");

printf("\t\t*

****************************************

**\n");

收入管理:

”);

添加收入");

查询收入明细\n");删除收入");

修改收入\n");

printf("\t\t*

****************************************

**\n");

支出管理:

");

添加支出");

查询支出明细\n");

printf("\t\t\t7.删除支出");

printf("8.修改支出\n");

printf("\t\t*

****************************************

**\n");

printf("\t\t统计:

");

printf("9.统计总收入/总支出\n");

printf("\t\t退出:

0.退出系统\n");

 

}

voidmain()

{

intselected=O;

initialize();

while(selected>=0&&selected<=9)

{

system("cls");

menu();

printf("\t\t>请选择要进行的操作(0-9):

");

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

=1||selected<0||selected>9)

{

printf("\t\t>输入有误!

请选择(0-9)之间的数字!

按任意键重试");

getchar();

}

else

{

switch(selected)

{

caseO:

exit(O);clear_data();break;

case1:

add_income();save_to_file();break;

case2:

search_income();break;

case3:

delete_income();save_to_file();break;

case4:

update_income();save_to_file();break;

case5:

add_payout();save_to_file();break;

case6:

search_payout();break;

case7:

delete_payout();save_to_file();break;

case8:

update_payout();save_to_file();break;

case9:

count_total();break;

}

}

}

}

voidadd_income()〃添加收入

{

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

p->next=NULL;

input_info(&(p->info));

p->info.type=income;

if(head==NULL)head=p;

else

get_last()->next=p;

}

voidadd_payout()〃添加支出

{

fi_data*p=(fi_data*)malloc(sizeof(fi_data));p->next=NULL;

input_info(&(p->info));

p->info.type=payout;

if(head==NULL)head=p;

else

get_last()->next=p;

}

//输入函数

voidinput_info(fi_info*info)

{

printf("\t\t>请输入年月(YYYY/M)");

scanf("%d/%d",&(info->year),&(info->month));

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

",MAXNAME-1);

seanf("%s",info->name);

printf("\t\t>输入金额:

");

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

printf("\t\t>请输入备注(最大长度为%d):

",20);

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

}

//查找数据函数

voidsearch_data(fi_typetype)

{

intyear=0;

intmonth=0;

fi_data*p=NULL;

intcount=0;

charinput=':

while⑴

{

printf("\t\t>请输入要查询的年月(YYYY/M)");

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

=2)

{

printf("\t\t>输入有误\n");

}

else

{

p=head;

count=0;

while(p!

=NULL)

{

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

{

show_info(p);

system("PAUSE");

count++;

}

p=p->next;

}

if(count==0)

{

printf("\t\t>没有找到数据\n");

}

printf("\t\t>继续查找其他数据?

(yorn)");

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.txt","rb");

if(fp==NULL)

{

fp=fopen("data.txt","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);

}

//显示信息函数

voidshow」nfo(fi_data*p)

{

inti=0;

printf("|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n");

printf("|NO.\t|年/月\t\t|类型\t\t|姓名\t\t|金额\t\t|备注\t\t|\n");

printf("|%5d\t|%4d/%02d\t|%4s\t|%10s\t|%10.2f|%20s|\n",i+1,

p->info.year,p->info.month,p->info.type==income?

"收入":

"支出",

p->info.name,p->info.money,p->info.detail);

printf("|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n");

}

//统计总收入、总支出

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("\t\t+\t\t+\t\t+\n");

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

printf("\t\t%12.2f|%12.2f|%12.2f|\n",total_income,total_payout,total_income-total_payout);

printf("\t\t+\t\t+\t\t+\n");

printf("\t\t>按任意键返回主菜单");

getchar();

getchar();

}

//保存到文件

voidsave_to_file()

{

FILE*fp=fopen("data.txt","wb");

fi_data*p=head;

while(p!

=NULL)

{

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

fseek(fp,O,SEEK_END);

p=p->next;

}

fclose(fp);

}

//修改信息函数

voidupdate_data(fi_typetype)

{intyear=0;

intmonth=0;

fi_data*p=NULL;

fi_data*pre=NULL;

charinput;

intcount=0;

inti=0;

while

(1)

{printf("\t\t>请输入要查询的年月(YYYY/M)");

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

=2)

{

printf("\t\t>输入有误\n");

}

else

{

p=head;

count=0;

while(p!

=NULL)

{

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

{

count++;

show_info(p);

input_info(&(p->info));

printf("\t\t修改成功\n");

P=get_previous(p);

}

p=p->next;

}

if(count==0)

printf("\t\t>没有找到数据\n");

printf("\t\t>继续查找其他数据?

(yorn)");

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;

intcount=0;

charinput=':

inti=0;

while

(1)

{printf("\t\t>请输入要查询的年月(YYYY/M)");

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

=2)

{

printf("\t\t>输入有误\n");

}

else

{

p=head;

count=0;

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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