家庭支出管理系统的程序设计.doc

上传人:韩长文 文档编号:5021671 上传时间:2020-01-29 格式:DOC 页数:19 大小:125KB
返回 下载 相关 举报
家庭支出管理系统的程序设计.doc_第1页
第1页 / 共19页
家庭支出管理系统的程序设计.doc_第2页
第2页 / 共19页
家庭支出管理系统的程序设计.doc_第3页
第3页 / 共19页
家庭支出管理系统的程序设计.doc_第4页
第4页 / 共19页
家庭支出管理系统的程序设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《家庭支出管理系统的程序设计.doc》由会员分享,可在线阅读,更多相关《家庭支出管理系统的程序设计.doc(19页珍藏版)》请在三一文库上搜索。

1、家庭支出管理系统一、课程内容和要求内容:该系统要求对一个家庭某月的支出情况进行统计和分析。通过此课题,熟练掌握数组、指针的各种操作,以及一些算法思想的应用。要求:(1)支出信息包括:支出类型(主要可以分为饮食,服饰装扮,礼金,教育培训,电器,健身,通讯,子女培养,旅游,文化娱乐,医疗,交通,聚会,居住等小项),金额,消费地点,消费时间等。(2)需要实现的功能1) 用户根据口令进入系统2)输入某一月份,完成该月份的支出管理3)输入并统计该月的支出情况4)显示该月支出信息表,内容应包括日期,金额等5)按支出类型进行分类统计和排序6)进行本月消费分析,即分析每项支出所占总支出的百分比,并显示分析结果

2、7)显示按支出类型排序后的支出信息8)将排序后的内容存为文件。(3)界面友好,输入信息符合逻辑如存款金额不为负数、不可能有非数字的字符等。(4)数据结构和函数自行定义,要求清晰明确。二、需求分析 结构体定义:用结构体来定义所要的消费信息的种类(消费类型,消费金额,消费地点,消费时间)。 菜单函数int menu_select():显示该系统所拥有的功能,并利于用户选择自己所需要实现的功能。密码函数void password():验证用户所输入的密码是否正确,并且根据用户意愿修改密码,从而进入系统。输入密码时密码要用*表示。输入函数int Inputitems(family sum,int n)

3、:输入用户所要的消费情况。求总金额函数void Getsum(family sum, int n):实现简单的求和功能,计算出用户所输入的消费的总金额。输出函数void Showitems(family sum,int n):输出用户所输入的信息。排序函数void paixu(family sum,int n):对用户所输入的消费情况进行归类,并对同种类型的金额进行从小到大排序。分析函数void Analyseitems(family sum,int n):对用户所输入的消费情况中的同种类型进行叠加,计算各类型金额占总金额的百分比,通过它们各类型金额所占的百分比来直观显示哪种类型比较重要。保存

4、函数void save(family sum,int n):保存用户所要保存的消费信息进入文件。主函数void main():通过该函数调用上述各函数,从而实现该系统的管理功能。三、概要设计程序框架:主菜单月份菜单密码验证及修改退出系统输入总和输出排序分析保存退出开始先编写一菜单函数来显示该系统所能实现的功能,让用户了解并使用该系统所拥有的管理功能,并且编辑密码函数来实现根据用户指令进入管理系统;之后通过主函数来调用菜单函数menu_select,密码函数password,求总金额函数Getsum,输入函数Inputitems,输出函数Showitems,排序函数paixu,分析函数Analy

5、seitems,保存函数save,从而来实现该系统的管理功能。而添加数据的功能是采用调用输入函数Inputitems来实现的。定义结构体:定义消费的类型,声明各结构成员的变量含义typedef struct /定义结构体char type20;/消费类型float Getsum;/消费金额char place20;/消费地点int time;/消费时间family;菜单函数:通过getchar语句来读入所要实现的功能序号,从而进入相应的函数模块。密码函数:通过文件指针应用,用scanf语句来读取用户所输入的密码,并与文件中所保存的密码相比较,看是否能够进入管理系统,并通过指针的应用来修改密码。

6、输入函数:通过scanf语句逐项输入消费的信息(类型,金额,地点,时间),输入完毕后,跳回管理菜单重新选择。求总函数:通过for循环来实现消费金额Getsum的叠加,从而求出所输入的消费情况的总金额getsum。输出函数:应用for循环来逐项输出消费情况。排序函数:用for双循环来对消费情况进行归类以及对同种类型的金额运用选择排序法从小到大排序,并对文件指针*fp的应用来使排序之后的消费信息存入文件。分析函数:通过对排序函数的调用,来使消费信息进行归类,通过for双循环来计算出各类型的金额sum1,并求出各类型的花费占总金额的百分比a。保存函数:应用文件指针*fp来将消费信息存入文件。主函数:

7、通过switch语句和case语句来调用各函数,从而实现各函数的功能。四、源程序代码#include #include #include #include #include #include #include typedef struct /定义结构体char type20;/消费类型float Getsum;/消费金额char place20;/消费地点int time;/消费时间family;family fam80;int menu_select()/显示该系统所具备的功能char c;dosystem(cls);/清屏printf(tt*n);printf(tt*菜单系统*n);pri

8、ntf(tt|1.输入消费信息|n);printf(tt|2.计算消费总和|n);printf(tt|3.显示消费情况|n);printf(tt|4.对同种类型消费进行排序并显示|n);printf(tt|5.消费情况分析|n);printf(tt|6.添加消费信息|n);printf(tt|7.保存数据|n);printf(tt|0.退出系统|n);printf(tt*n);printf(tt*n);printf(ttt请对应选择所需选项(0-7):);c=getchar();while(c7);return(c-0);void password()/密码验证或密码修改int m;print

9、f(tt*n);printf(tt*n);printf(tt*tt1.密码修改 *n);printf(tt*tt2.登陆 *n);printf(tt*n);printf(tt*n);printf(ttt请输入您所要的选项(1,2):);scanf(%d,&m);getchar();switch(m)case 1:/密码修改int i,j;char a7,b7,c7,d7;FILE *fp1; FILE *fp2;fp1=fopen(D:密码.txt,r);if(!fp1)printf(file cannot be opened);exit(1);for(i=0;!feof(fp1);i+)ai

10、=fgetc(fp1);fclose(fp1);printf(ttt请输入原密码:);for(j=0;j=0&bj=a&bj=A&bj=Z)putchar(*);if(a0=b0&a1=b1&a2=b2&a3=b3&a4=b4&a5=b5)doprintf(ttt请设置您的新密码: );for(j=0;j=0&cj=a&cj=A&cj=Z)putchar(*);printf(ttt请确认您的新密码: );for(j=0;j=0&dj=a&dj=A&dj=Z)putchar(*);while(!(c0=d0&c1=d1&c2=d2&c3=d3&c4=d4&c5=d5);fp2=fopen(D:密

11、码.txt,w+);if(!fp2)printf(the file cannot be opened!);exit(1);i=0;while (i6)fprintf(fp2,%c,ci);i+;fclose(fp2);printf(ttt密码修改成功!n);elseprintf(ttt密码错误n);exit(0); case 2:/密码验证char e7,f7;int n=0;int i,j;FILE *fp1;fp1=fopen(D:密码.txt,r); if(!fp1)printf(the file cannot be opened!);exit(1);for(i=0;!feof(fp1)

12、;i+) ei=fgetc(fp1); fclose(fp1);doprintf(ttt请输入六位数密码:);for(j=0;j=0&fj=a&fj=A&fj3)printf(errorn);exit(0);while(!(e0=f0&e1=f1&e2=f2&e3=f3&e4=f4&e5=f5);printf(nttt欢迎使用!n);int Inputitems(family sum,int n)/输入消费信息int i=0;char sign=y,x10;while(sign!=n&sign!=N)printf(ttt种类:); scanf(ttt%s,sumn+i.type);printf

13、(ttt支出(大于0):);scanf(ttt%f,&sumn+i.Getsum);printf(ttt地点:);scanf(ttt%s,sumn+i.place);printf(ttt时间(0-31):);scanf(ttt%d,&sumn+i.time);if(sumn+i.time31)return false;gets(x);printf(ttt需要再次输入吗?(y/n);scanf(ttt%c,&sign);i+;return(n+i);void Getsum(family sum, int n) /计算消费总金额float getsum=0;int i=0;for(i=0;in;i

14、+)getsum+=sumi.Getsum;printf(ttt%fn,getsum);void Showitems(family sum,int n)/输出所输入的消费信息int i;printf(ttt-n);printf(ttt种类 支出 地点 时间n);printf(ttt-n);for(i=1;i1&i%10=0)printf(ttt-n);printf(ttt);system(pause);printf(ttt-n);printf(ttt);system(pause);void paixu(family sum,int n)/对消费信息进行归类和选择法排序int i,j;famil

15、y temp; FILE *fp;fp=fopen(D:支出信息.txt,a+); if(fp=NULL)printf(tttthe file cannot be opened!n);exit(1); for(i=0;in-1;i+)for(j=i+1;jsumj.Getsum) temp=sumj; sumj=sumi; sumi=temp; fprintf(fp,排序后:n);for(i=0;in;i+)fprintf(fp,%-8s %-12f %-8s %-10dn,sumi.type,sumi.Getsum,sumi.place,sumi.time);fclose(fp);print

16、f(ttt保存成功!n);void Analyseitems(family sum,int n) /求各种消费类型的金额占总金额的百分比paixu(sum,n); float total=0,a=0,sum1;int i,j;for(i=0;in;i+)total+=sumi.Getsum;for(i=0;in;i+) sum1=sumi.Getsum;for(j=i+1;jn;j+)if(strcmp(sumi.type,sumj.type)=0)sum1+=sumj.Getsum;i+;a=(sum1/total)*100;printf(ttt%-8s%-10f%n,sumi.type,a

17、); void save(family sum,int n)/保存消费信息 int i;FILE *fp;fp=fopen(D:支出信息.txt,a+);if(fp=NULL)printf(tttthe file cannot be opened!n);exit(1);fseek(fp,-1,SEEK_END);fputc(n,fp);for(i=0;in;i+)fprintf(fp,%-8s %-12f %-8s %-10dn,sumi.type,sumi.Getsum,sumi.place,sumi.time);fclose(fp);printf(ttt保存成功!n);void main(

18、)/主函数password();getch();int n=0,m;char c;do printf(ttt请输入您所要管理的月份(1-12):);scanf(%d,&m);while(m12);for(;)switch(menu_select() /选择菜单序号case 1:printf(ttt请输入相应消费情况n);n=Inputitems(fam,n);printf(ttt想保存数据请输入y/Y!n);getchar();scanf(%c,&c);if(c=y|c=Y)save(fam,n);printf(ttt);system(pause);break;case 2:printf(tt

19、t消费总和n);Getsum(fam,n);printf(ttt);system(pause);break;case 3:printf(ttt消费情况n);Showitems(fam,n);break;case 4:printf(ttt消费排序n);paixu(fam,n);Showitems(fam,n);printf(ttt);system(pause);break;case 5:printf(ttt消费金额分析n);Analyseitems(fam,n);printf(ttt想保存数据请输入y/Y!n);getchar();scanf(%c,&c);if(c=y|c=Y)save(fam

20、,n);printf(ttt);system(pause);break; case 6:printf(ttt添加消费情况n);n=Inputitems(fam,n);getchar();scanf(%c,&c);if(c=y|c=Y)save(fam,n);break;case 7:printf(ttt保存消费数据n);save(fam,n);printf(ttt);system(pause);case 0:printf(ttt谢谢使用!n);system(pause);exit(0);五、测试数据及其结果分析第一步,根据用户指令看是否先进入系统还是修改密码:1)若进行密码修改:选择1 * *

21、 * 1.密码修改 * * 2.登陆 * * * 请输入您所要的选项(1,2):1 请输入原密码:123456* 请设置您的新密码: 000000* 请确认您的新密码: 000000* 密码修改成功! 请输入六位数密码:000000* 欢迎使用!2) 若进行密码验证:选择2 * * * 1.密码修改 * * 2.登陆 * * * 请输入您所要的选项(1,2):2 请输入六位数密码:000000* 欢迎使用!第二步,选择所要管理的月份请输入您所要管理的月份(1-12):3第三步,根据菜单系统选择所要运行的功能1)选择1,输入消费情况,如果不想继续输入就选择n,否则选择y * *菜单系统* |1.

22、输入消费信息| |2.计算消费总和| |3.显示消费情况| |4.对同种类型消费进行排序并显示| |5.消费情况分析| |6.添加消费信息| |7.保存数据| |0.退出系统| * * 请对应选择所需选项(0-7):1 请输入相应消费情况 种类:yi 支出(大于0):2 地点:nan 时间(0-31):9 需要再次输入吗?(y/n)y 种类:shi 支出(大于0):4 地点:re 时间(0-31):9 需要再次输入吗?(y/n)y 种类:yi 支出(大于0):1 地点:jing 时间(0-31):7 需要再次输入吗?(y/n)n 想保存数据请输入y/Y!n 请按任意键继续. . .2)选择2,

23、计算消费的总金额 * *菜单系统* |1.输入消费信息| |2.计算消费总和| |3.显示消费情况| |4.对同种类型消费进行排序并显示| |5.消费情况分析| |6.添加消费信息| |7.保存数据| |0.退出系统| * * 请对应选择所需选项(0-7):2 消费总和 7.000000 请按任意键继续. . .3)选择3,显示消费的情况 * *菜单系统* |1.输入消费信息| |2.计算消费总和| |3.显示消费情况| |4.对同种类型消费进行排序并显示| |5.消费情况分析| |6.添加消费信息| |7.保存数据| |0.退出系统| * * 请对应选择所需选项(0-7):3 消费情况 -

24、种类 支出 地点 时间 - yi 2.000000 nan 9 shi 4.000000 re 9 yi 1.000000 jing 7 请按任意键继续. . .4)选择4,对同种类型消费进行排序并显示和保存 * *菜单系统* |1.输入消费信息| |2.计算消费总和| |3.显示消费情况| |4.对同种类型消费进行排序并显示| |5.消费情况分析| |6.添加消费信息| |7.保存数据| |0.退出系统| * * 请对应选择所需选项(0-7):4 消费排序 保存成功! - 种类 支出 地点 时间 - shi 4.000000 re 9 yi 1.000000 jing 7 yi 2.0000

25、00 nan 9 请按任意键继续. . .5)选择5,对消费情况进行分析,计算同种类型占总金额的百分比。想保存分析结果就输入y或Y * *菜单系统* |1.输入消费信息| |2.计算消费总和| |3.显示消费情况| |4.对同种类型消费进行排序并显示| |5.消费情况分析| |6.添加消费信息| |7.保存数据| |0.退出系统| * * 请对应选择所需选项(0-7):5 消费金额分析 shi 57.142857 % yi 42.857143 % 想保存数据请输入y/Y!n 请按任意键继续. . .6)选择6,添加数据 * *菜单系统* |1.输入消费信息| |2.计算消费总和| |3.显示消费情况| |4.对同种类型消费进行排序并显示| |5.消费情况分析| |6.添加消费信息| |7.保存数据| |0.退出系统| * * 请对应选择所需选项(0-7):6 添加消费情况 种类:shi

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

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1