文档库 最新最全的文档下载
当前位置:文档库 › C语言课程设计——家庭财务管理系统

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

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

课程设计报告

课程设计题目:家庭财务管理系统

学生姓名:

专业: 信息工程

班级:

指导教师:

2018年1月8 日

1.需求分析

根据家庭账务管理的需要,建立一个“家庭账务管理系统” 收入

,以方便对家庭日常及支出进行记录和管理。该系统要求:①家庭月收入管理②家

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

2.总体设计

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

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

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

③删除收入、支出数据;

④修改收入、支出数据;

⑤统计总收入/总支出;

⑥退出系统。

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

①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添加收入测试

明細

8

统 退

>1 麗卿加」

人冢雇成貝姓宕〔最大长芨为i0>=iyy

耀絨黠離大长度技邮:jdic

w E i M i ta iE KW i o t KJ t ao ta cM a o t NW 3

<図梵:11:梵]|[

梵:《

]<屛冠屛耳耳

9

<耳3<耳

1

<>

63<梵

1

<耳

计詔?统计总收人/忌支出

S HMXJCKKBOCKJtJt WK W)C :H.J<:JI.)C :IIJE

X W M : X X X I CH X W >CW ;3t 3<:H :

弭:H 3Ej C]itS<]f K>e K* 支出管理汚

冢庭财务管理系统

F

C 逼Vk i nd OWE 11 sy=rtem z 2\D

ebug\Fyyl. G

4.3查询收入明细测试

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

'请选择要进行的換作<0-9>:2 沁青输入要查询的穿月好匹肮”7

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

4.4删除收入测试

4 hAi>A N*L * WM B . i^ulA WUAWUK J *

冢庭财务管理系统

rrwwwrMrHrrwYvruruwruwnmmrirurhmmmww

耳XJO E X i MICMXX 址风址耳XM I>EKK KN

耳 XX 3E :MiMKl iE XXXX 斃

入明细

M=建建茉豪事,i Wi atfH

W*?ME ?=MX K WlFafr M i 幕荒豪務整豪豪亲=M i MH Sfr M i *H

c.

闿曲

若耳豪科,^■■轉

if ■苗]<

満■科■■■>< ■齋

if 轉

苗曲

満耳酬耳■贰科贰轉

曹 统 计汁?统计忌收入儿鼠支出 退 岀汨?退岀系统 》请选择雯迸行的操作個“竹

>请初1/厘查询的年月<¥¥¥¥zH>201-4/l I I 4

》删除成功

P I ^RSS an^ key to cnnt-imie

溝漱明细

收入管理豊翻

明 支支 沓-修

6

8

出出 支支 加除

i

■-

?5 年月

1 !20t3/09

咲型 ;收入

1008.00:

:备汪

工资

支出吨勰雜.

iMO-

:类型

:备汪

1 !2014/01

168.23 :

lyy

岀羽细

4.5修改收入测试

JCJ H JCJOtKJt ■* XU JOCWJtKJW M ><:?■: ■! JCJ! MUM BL JCJt MH JCKJCJtK 菱理 KJIM

A 管理m

添加收入

趴查育

3-删除收入

弭XJ ta<>E M X a O t MJC H K i M

算 KW 址耳 KJ t 址豪 KJC M SX i MIC i M K3t 址耳贰疋 XJ f a t X

支出管理出

7

统计叽统计总收人血支岀

退

出汕*退出系纟充

>iMA^2013z2

〉诗输入擁成员姓名〔最大长度为诃》 ”書输人眷注t 最大长度为饷庆工资.

4.6添加支出测试

NO.

1 !2013/fR

U ?

UC (_

作月

操年:

咲型

;金额

叫夂入

3000

1400.00:

「查询支出明细 8 ?修改支出

4.7查询支出明细测试

■ Ud'WmmflUrMgumW -FMiWihiriiMIUriVia^WUirMiWMiiW

家庭财务管理系统

X >E X i M~:MiKK>ti O f HX a<]<>E :W >E X>E

耳 N X

其 M M i K 弭 K 瓮 XXXX N M N NX H M ; ]?S M

收入管鵲:勰怒m

林明细

X KU >[]<■: K JOCK WJCJfXlHf i l H l fJOt Jot

KU it MnOiJCKX

支岀管瑋汚?探加支出 "查询支出明细

巴删除支出孔修改支出 统

计伙统计总收人/負支岀 K KM 普材■

K4 m W M i K

唇?科恒■

退 出:0-退出系统

I

;青按任意键継续.-亠

4.8删除支出测试

I 屜月 I I

S 作個-9,海

^<¥V¥V/M>20i3/1

:类型 I 支岀

■姓亡

3*

;金埶

1备注

200.00 1

购物

M

E

界貝其貝耳疑耳冥艮K 耳KM

E 界]< 界箕梵JO

C 3KH M :

耳NW 算見其買梵就艮植耳拉算址舅覽如其

支出管理參報鑒:義鏗细

:K“a< :WFj a Ntf K Itf NJ* ;K“M ; *M* :K h E 倚

甘 1* 材 UIfrJtf N Jtfim ;:M H H X l il

: K W ;M H U“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

iZUlJZOl

:支岀 i

iyy

J

1 1 购物

1 1 i

1 1

i

》删除成功

1

1

[Press any key to continue

4.9修改支出测试

?:?■

泉庭财务管理系统

收入管理沁

3

務賑旳细

4.10统计总收入/支出测试

家庭财务管理系绒

iSWWMYWM¥WWWWAANiHWWVSAHM¥W%hnAiSWfW

芽I* it 員ji ?iKifcK ??!J R PtK ?貝 ?■*■*“* 応*

收 '管理d 添加收入上一査询収入明细

*删除收入4-*SK 入

请尹 统

计=9 ■统计总收入严总支出 X X J t XXXXXK aC X K K XMtK !M XS f K S C H'XXXXX I M ! X m e K X**K St X!KK XK'XW

出汕”通出系统 K 梵廉拉艮梵耳疋艮3CM8. ■ :JC i M ■>!梵

滩X

農梵X X M E 4C 旌舅Jt i MK 耳■:梵英]< 梵耳X

朋觀呈婪进行的操作汚 ;合计支岀 :结余 :

500,901 423^.631 :按任焉缶月

家庭财务管理系统

ru 41WEH U f HEiM *M"U d *M**UI *M * EJ ■ *19! I

、MX W5 &FU *、『

WT

梵ME it WE 梵K XW iM KE M iMr 梵琏

梵覺

梵K 梵 W 港味疋址

梵曲

梵琏

梵:M 3< H

收入管理1席加収入霊查询收入明细

4圖除收入4

W t f If U ?=Mtl i f If ■????????i f If ???i f ? 筑查询支岀明细 緘修改支出 h l 屛

轉I H ■冒!w K ■!< w K ■弭昇轉?屛

衬!M 筑岸捕曲

KF 弭屛

W!岸屛

耐忖

岸K 屛利

K ■

统 计汐?统计总收入"总支岀 退

支岀管理惰 出通■退岀系统

攵入 <0-9>:8

2013/9

■M

-

12013/09

年月

咲型

I 备注

lyy

300.00:

》请输人年月2013内

>请嫡△寡庭喩员妃名〔最工长厦为讪:丄妁 、输人金额:左腼

冰蕃注塢

俵服

i2013/09

;裘型 :支出

I 金额 200.00:

衣朋

衣服

[合计L 反入

4734-63I

一湛返回主苹

吉出背理汗

4.11退出系统测试

5 .软件操作使用说明书

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

6.总结

编写程序之前要有一个整体的思路,不能写到哪里算哪里。这样很容易遗漏,连续性也不好。通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。希望在以后的课程设计中对于知识的运用能够更加的熟练。

代码:

#in elude

#in elude

#in elude

#include #define MAXNAME 11 // 家庭成员姓名的最大长度#define MAXDETAIL 21 // 注最大长度

//自定义枚举类型fi_type,用来表示收入与支出

typedef enum _fi_type

{

income=1,// 收入

payout =-1 // 支出

} fi_type;

// 家庭财务信息结构体

typedef struct _fi_info

{

int year;

int month;

fi_type type;

char name[9];

float money;

char detail[11];

}fi_info;

// 存储财务数据结构的结构体

typedef struct _fi_data

可编辑范本

fi_info info;

struct _fi_data* next;

} fi_data;

fi_data *head;// 财务数据的头结点void menu();// 菜单函数

void add_income();

void search_income();

void delete_income();

void update_income();

void add_payout();

void search_payout();

void delete_payout();

void update_payout();

void count_total();

void quit();

//

void search_data(fi_type type); void delete_data(fi_type type); void update_data(fi_type type);

//

void initialize();

void save_to_file(); void clear_data(); fi_data *get_last();

fi_data *get_previous(fi_data *p); void input_info(fi_info *info); void show_info(fi_data *p); void menu()

{

printf("\n");

printf("\t\t 收入管理 :"); printf("1. 添加收入 "); printf(" 2.查询收入明细 \n"); printf("\t\t\t 3. 删除收入 "); printf(" 4.修改收入 \n");

printf("\t\t

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

printf("\t\t\t

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

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

printf("\t\t

~~~~~~~~~~~~~~~~~~~~~~\n");

printf("\t \t* ****************************************

**\n")

; \t*

**************************************** ;

printf("\t\t 支出管理:");

printf("5. 添加支出 "); printf(" 6.查询支出明细 \n"); printf("\t\t\t 7. 删除支出 "); printf(" 8.修改支出 \n");

printf("\t\t 统 计:");

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

printf("\t\t 退 出 :0.退出系统 \n");

}

void main()

{

int selected=0; 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*

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

**\n");

printf("\t\t*

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

**\n");

printf("\t\t*

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

**\n\n\n");

printf("\t\t> 输入有误!请选择(0-9)之间的数

字!按任意键重试");

getchar();

}

else

{

switch(selected)

{

case 0:exit(0);clear_data();break;

case 1:add_income();save_to_file();break;

case 2:search_income();break;

case 3:delete_income();save_to_file();break;

case 4:update_income();save_to_file();break;

case 5:add_payout();save_to_file();break;

case 6:search_payout();break;

case 7:delete_payout();save_to_file();break;

case 8:update_payout();save_to_file();break;

case 9:count_total();break;

}

}

}

}

void add_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;

}

void add_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;

}

// 输入函数

相关文档