家庭支出管理系统c语言程序设计.docx

上传人:b****5 文档编号:12567386 上传时间:2023-04-20 格式:DOCX 页数:58 大小:848.94KB
下载 相关 举报
家庭支出管理系统c语言程序设计.docx_第1页
第1页 / 共58页
家庭支出管理系统c语言程序设计.docx_第2页
第2页 / 共58页
家庭支出管理系统c语言程序设计.docx_第3页
第3页 / 共58页
家庭支出管理系统c语言程序设计.docx_第4页
第4页 / 共58页
家庭支出管理系统c语言程序设计.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

家庭支出管理系统c语言程序设计.docx

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

家庭支出管理系统c语言程序设计.docx

家庭支出管理系统c语言程序设计

程序设计报告

(2015/2016学年第二学期)

 

题目:

家庭支出管理系统

 

专业微电子科学与工程

组长学号姓名

组员学号姓名

指导教师许棣华

指导单位

日期2016年6月3日

成员分工

组长()

 

组员()

 

组员()

 

评分细则

评分项

优秀

良好

中等

遵守机房规章制度

上机时的表现

学习态度

程序准备情况

程序设计能力

团队合作精神

课题功能实现情况

算法设计合理性

用户界面设计

报告书写认真程度

内容详实程度

文字表达熟练程度

回答问题准确度

简短评语

 

教师签名:

年月日

评分等级

备注

评分等级共五种:

优秀、良好、中等、及格、不及格

家庭支出管理系统

一、课题内容和要求

1、该系统要求对一个家庭某月的支出情况进行统计和分析。

通过此课题,熟练掌握数组、指针的各种操作,以及一些算法思想的应用。

2、功能要求:

(1)支出信息包括:

支出类型(主要可以分为饮食,服饰装扮,礼金,教育培训,电器,健身,通讯,子女培养,旅游,文化娱乐,医疗,交通,聚会,居住等小项),金额,消费地点,消费时间等。

(2)需要实现的功能:

1)用户根据口令进入系统

2)输入某一月份,完成该月份的支出管理

3)输入并统计该月的支出情况

4)显示该月支出信息表,内容应包括日期,金额等

5)按支出类型进行分类统计和排序

6)进行本月消费分析,即分析每项支出所占总支出的百分比,并显示分析结果

7)显示按支出类型排序后的支出信息

8)将排序后的内容存为文件。

(3)界面友好,输入信息符合逻辑如存款金额不为负数、不可能有非数字的字符等。

二、需求分析

家庭支出管理系统的功能框架图如图1所示。

分析函数

图1功能框架图

(1)功能选择函数:

此函数是为了让用户根据主界面选择功能并根据提示来进行操作。

(2)输入函数:

为了实现将各个支出项目的类别,支出的金额以及消费的时间,地点等存入需要的文件里,所以必须先要存在存储器里。

(3)输出函数:

即通过行列表来直观对应存储文件中的项目的类别,金额,消费时间及地点。

(4)分析函数:

读取本月的存储文档中的信息,对本月的消费进行分析,求出本月的消费总和,分析出每项支出所占总支出的百分比,通过他们各自的项目金额所占的百分比来直观显示那个指出比较重要。

随后与本月收入进行比较,求出收支比。

(5)类别排序函数:

就是将输入的信息进行按类别排序。

(6)保存函数:

将本次添加的信息进行保存到相应月份的支出信息文档中。

(7)登录界面:

因为家庭支出管理系统涉及到私人财务,所以需要利用密码函数对程序进行保密。

因此只有在输入正确的口令后才能进入该系统。

同时添加了一个随机验证码的验证过程。

(全文中的

(1)、

(2)、(3)等格式必须统一为中文括号或者英文括号。

(中文字体:

宋体,英文字体:

TimesNewRoman,小四号,不加粗,两端对齐,1.5倍行距,首行缩进2字符,段前段后距为0)

三、概要设计

1主要结构体

(二级标题格式:

宋体,小四号,不加粗,两端对齐,不缩进,下同)

typedefstruct//定义结构体

{

chartype[20];//消费类型

floatGetsum;//消费金额

charplace[20];//消费地点

inttime;//消费时间

}family;

familyfam[80];

2主要函数流程图

(1)登录界面:

包括密码函数,采用数组赋值并与预设值逐字比较的方法进行密码验证。

以及验证码函数,验证码采用srand(time(NULL))与p[0]=rand()%1000产生一个0-1000的随机数作为验证码。

如图1所示

图1

(2)主函数:

包括菜单显示函数以及功能选择函数,菜单显示函数在屏幕上输出选择界面,功能选择函数利用选择结构进入不同的功能函数模块,模块如下列所示。

在十二个月份存储文件齐全的情况下,各功能可随意使用,无使用上的顺序要求。

如图二所示;

图2图3

(3)功能模块一信息添加函数:

利用输入函数将支出信息赋值给fam,然后利用类别整理函数进行类别整理,最后利用选择结构选择某一月份,打开该月份的信息存储文档,进行信息的写入,最后关闭文件。

如图3,图4所示。

图4图5

(4)功能模块二信息显示函数:

利用选择结构打开某一月份的信息存储文档,然后读取其中的信息并逐行显示在屏幕上然后关闭文件。

如图5,图6所示。

图6

(5)功能模块三信息分析函数:

利用选择结构打开某一月份的存储文件,读取该月信息,求消费总和并求出各项支出占总支出比,随后可以输入本月的收入以求出本月的收支比。

如图7所示。

图7

(6)功能模块四退出函数:

关闭程序。

四、源程序代码

#include

#include

#include

#include

#include

#include

#include

#include

typedefstruct//定义结构体

{

chartype[20];//消费类型

floatGetsum;//消费金额

charplace[20];//消费地点

inttime;//消费时间

}family;

familyfam[80];

intmenu_select()//显示该系统所具备的功能

{

intc;

do{

system("cls");//清屏

printf("\t\t欢迎来到家庭支出管理系统(勤俭节约,避免破产,严肃脸.jpg)\n");

printf("\t\t************极端简朴的菜单系统*********\n");

printf("\t\t|1.输入消费信息|\n");

printf("\t\t|2.显示消费情况|\n");

printf("\t\t|3.消费情况分析|\n");

printf("\t\t|4.退出系统|\n");

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

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

printf("\t\t\t请对应选择所需选项(1-4):

");

scanf("%d",&c);

}while(c<1||c>8);

returnc;

}

voidpassword()//密码登录部分

{

chard[6];

charm[6];

m[0]='1',m[1]='2',m[2]='3',m[3]='4',m[4]='5',m[5]='6';//数组比较printf("请输入六位数密码:

");//输入密码

for(intn=0;;)

{

printf("请输入密码:

\n");

for(inti=0;i<6;i++)

{

d[i]=getch();

if(d[i]>='0'||d[i]<='9'||d[i]>='a'||d[i]<='z'||d[i]>='A'||d[i]<='Z')

putchar('*');

}

if(d[0]==m[0]&&d[1]==m[1]&&d[2]==m[2]&&d[3]==m[3]&&d[4]==m[4]&&d[5]==m[5])

{

printf("\n\t\t\t密码正确!

请进行验证!

\n");break;

}

if(d[0]!

=m[0]||d[1]!

=m[1]||d[2]!

=m[2]||d[3]!

=m[3]||d[4]!

=m[4]||d[5]!

=m[5])//当密码错误时如下

printf("\n密码错误!

请重新输入:

");

if(n>3)

{

printf("系统即将关闭,88!

\n");

system("pause");

exit(0);

}

n++;

}

}

voidverification_code()//验证码部分

{

intp[1]={0};

intq[1]={0};

for(intk=0;;)

{

srand(time(NULL));

printf("验证码为:

\n");

p[0]=rand()%1000;//产生0-1000的随机数

printf("%d",p[0]);

printf("请输入验证码:

");

scanf("%d",&q[0]);“

if(q[0]!

=p[0])

printf("验证码错误,请重新输入。

");

else

{

printf("\n欢迎使用!

\n");

system("pause");

break;

}

if(k>3)

{

printf("系统即将关闭,88!

\n");

system("pause");

exit(0);

}

k++;

}

}

intInputitems(familysum[],intn)//输入消费信息

{

inti=0;

charsign='y',x[10];

while(sign!

='n'&&sign!

='N')

{

printf("\t\t\t种类:

");

scanf("\t\t\t%s",sum[n+i].type);

printf("\t\t\t支出(大于0):

");

scanf("\t\t\t%f",&sum[n+i].Getsum);

printf("\t\t\t地点:

");

scanf("\t\t\t%s",sum[n+i].place);

printf("\t\t\t时间(0-31):

");

scanf("\t\t\t%d",&sum[n+i].time);

if(sum[n+i].time<1||sum[n+i].time>31)

returnfalse;

gets(x);

printf("\t\t\t需要再次输入吗?

(y/n)");

scanf("\t\t\t%c",&sign);

i++;

}

return(n+i);

}

voidShowitems(familysum[],intn)//输出某月份的消费信息

{

inti=0,month;

FILE*fp;

printf("请选择月份;");

scanf("%d",&month);

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

printf("\t\t\t种类支出地点时间\n");

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

switch(month)

{

case1:

fp=fopen("D:

\\一月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case2:

fp=fopen("D:

\\二月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case3:

fp=fopen("D:

\\三月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case4:

fp=fopen("D:

\\四月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case5:

fp=fopen("D:

\\五月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case6:

fp=fopen("D:

\\六月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case7:

fp=fopen("D:

\\七月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case8:

fp=fopen("D:

\\八月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case9:

fp=fopen("D:

\\九月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case10:

fp=fopen("D:

\\十月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case11:

fp=fopen("D:

\\十一月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

case12:

fp=fopen("D:

\\十二月支出信息.txt","r");

if(fp==0)

{

printf("fileerror\n");

exit

(1);

}

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

while(!

feof(fp))

{

printf("%-8s%-12f%-8s%-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);

fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);

}

fclose(fp);

break;

}

printf("\t\t\t");

system("pause");

}

void

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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