收藏 分销(赏)

个人收支管理系统.doc

上传人:可**** 文档编号:5143829 上传时间:2024-10-27 格式:DOC 页数:15 大小:53.54KB
下载 相关 举报
个人收支管理系统.doc_第1页
第1页 / 共15页
个人收支管理系统.doc_第2页
第2页 / 共15页
个人收支管理系统.doc_第3页
第3页 / 共15页
个人收支管理系统.doc_第4页
第4页 / 共15页
个人收支管理系统.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、计算机科学与信息工程学院课程设计报告2011-2012第二学期课程设计名称 C语言课程设计设计题目 个人收支管理系统学生姓名 学号 专业班级 指导教师 2012年7月4日个人收支管理一、设计目的一些比较发达国家人的生活中对理财有着很严格的计划,因此国外的理财系统总体来说比较普遍,做的也比较完善。国内的理财系统主要偏重于办公财务软件,而个人理财和家庭理财方面的比较少,因此需要开发相关的系统软件,从而达到引导理性消费,合理安排收支。进行账目的统计,如果是手动统计的话,首先,如果每天统计的话,用于统计的账本和记录会越来越多,不利于保管,容易造成丢失;其次,随着纪录的增多,如果要查找以前的记录,会变的

2、越来越困难.因此,需要一个功能比较完善的记账系统来代替传统的手工统计.个人收支管理系统可以方便地记录您家庭的每日收支情况。二、功能描述如图1所示,本系统主要有8个板块构成:1。个人收支管理系统显示界面。个人收支管理系统必须在系统运行后第一时间显示出来。此界面显示了一个收入模式、一个支出模式、一个明细表、一个查询与统计、一个记录数据写入文件、一个读取文件的功能。2。收入模式.用户可以在收入模式中输入以下数据:顺序号、日期、摘要、金额、余额、币种,收入或支出标志.默认币种为人民币,也可以是美圆、欧元、日币或英镑。3.支出模式。用户可以在支出模式中输入以下数据:顺序号、日期、摘要、金额、余额、币种,

3、收入或支出标志.默认币种为人民币,也可以是美圆、欧元、日币或英镑。4。明细表.用户可以根据需要输入起止时间来查询一段时间内的收入支出情况,系统会通过列表的形式把内容展示出来.5.查询与统计。在此功能模式下,用户可以对一段时间的收入支出情况进行查询,可以得到总收入、总支出和余额。此数据是按月或按年份统计计算的。6。此板块属于拓展功能1-写入文件,记录数据。在此模块下,用户可以根据需要爆当前输入的数据保存下来,以备后用.7。此板块属于拓展功能2读取文件,读取数据。在此模块下,用户可以读取以前所记录的数据并进行查看。8.退出系统。个人收支管理系统退出系统读取文件写入文件查询与统计明细表支出模式收入模

4、式图1 简易系统功能模块图三、总体设计1。系统执行主程序本系统执行主程序如图2所示。首先,调用main函数,是系统进入主显示面。然后由用户选择所需要的功能,并进入相应功能程序,按照用户需求进行相应操作后回到主显示界面,等待用户继续按键选择功能进行操作。2。系统显示界面此系统界面主要由可供选择的功能组成:收入、支出、明细表、查询与统计、写入文件、读取文件。用户在进行选择后可通过switch语句进行跳转进入相应分程序。主显示界面开始退出系统摘要写入文件查询与统计币种金额日期明细表支出收入起始日期截止日期列表按年查询按月查询总收入总支出余额输入文件名保存文件读取文件输入文件名 读取文件图2 系统执行

5、主流程图四、数据结构设计 data 结构体struct dataint n;/顺序int y,m,d;char zy100; /摘要float money,rmoney;/金额,余额 char biz5; /币种int x; /收支类型(标记,明细表或查询统计用)p100;本程序中主要数据都需要显示顺序、日期、摘要、金额、余额、币种和收支类型,所以需要定义data 结构体.Int n:表示顺序。Int y,m,d:用来定义日期.Char zy: 摘要。Float money、rmoney:金额、余额.Char biz5:币种.Int x: 定义收支类型。五、函数功能描述1check():函数原

6、型:int check()check函数主要用于检查输入日期的合法性、日期的先后顺序是否正确,并查找符合日期要求的数据。2fflush()函数原型:fflush(stdin)主要用于清除缓存,方便用户接下来的操作。3.gets()函数原型:gets()函数主要用于把用户输入的数据保存到指定数据中。4。 strlen()函数原型:size_t strlen(const char s)该函数是用来计算字符串的长度,用于用户接下来的操作。5。 strcpy()函数原型:char *strcpy(char *s1,const char *s2)该函数用于把字符串s2复制给字符串s1。6。file *(

7、)函数原型:file *fp1;通过文件指针便于对流的访问。Fopen()函数原型:fopen (FILE_NAME,r或”)该函数用于打开文件,进行读取或写入。Fclose ()函数原型:fclose()该函数主要用来关闭用户打开的文件。Main()函数原型:void main()Main()为主函数.四、程序实现源码分析()程序预处理#include /标准函数库include string。h /字符串操作函数库int income()/收入模式int expend()/支出模式int list()/明细表int destat () /查询与统计void write()/写入文件void

8、 read ()/读取文件()主函数main()Main()函数主要实现了对整个程序的调用,以及相关功能模块的调用.它主要的工作是初始化程序。void main() int n; /确定用户需要进入的功能模块 do printf(+n);printf(” 个人收支管理 n); /用户可以进行的功能操作选项printf(”1。收入 n); printf(”2.支出 n); printf(3.明细表 n); printf(”4。查询与统计 n); printf(5.写入文件 n”);printf(6。读取文件 n”);printf(”0.退出系统 n); printf(+n);printf(”请输

9、入你要进行操作:);scanf(d”,&n); /捕获用户要进行的操作switch (n)case 1:income(p); system(”cls);break; /进入收入模块,结束后返回case 2:expend(p); system(”cls);break; /进入指出模块,结束后返回case 3:list(p); system(”cls);break; /进入明细表,结束后返回case 4:destat(p); system(cls”);break; /进入查询与统计,结束后返回case 5:write(p); system(”cls”);break; /进入写入文件,结束后返回ca

10、se 6:read(p); system(cls”);break; /进入读取文件,结束后返回 while(n!=0); /退出系统程序运行结果显示() 初始化界面() 进入收入模式结束时按Enter返回主界面() 进入支出模式结束时按Enter返回主界面()明细表结束时按Enter返回主界面()查询与统计 按年查询按月查询()写入文件()读取文件在这我们主要显示退出系统后读取文件操作显示:之后用户可以根据需要进行相应操作查看数据。()退出系统六、课程设计总结经过个星期的努力,终于完成了个人收支管理系统的设计.本来,在开始上课之前,我们都以为这是很简单的东西,毕竟我们都学习了这么时间,并且也在

11、课上进行了一次次的实战训练。可是,没想到,别看平时比较容易,在这一刻,要把课上学到的知识融会贯通,要想设计出自己心满意足的东西是多么的困难。不过,还好,总算完成了,也感受到了成功的喜悦.努力奋斗,并不是没有回报的!当然,在这个星期的过程中,我们也发现了许多问题并克服了它们。这些问题或许是上课时没注意到的细节问题,或是自己之前一直没能搞懂的知识点,但不论如何,它都让我们学会了好多新的东西,有了新的感悟。在此,感谢老师们的辛勤工作,无私贡献,感谢老师们的指导。七、源代码include #include stdlib。h#include string。hstruct dataint n;int y,

12、m,d;char zy100; /摘要float money,rmoney;/金额,余额 char biz5; /币种int x; /收支类型(标记,明细表或查询统计用)p100;int k=1;int check1(int y, int m, int d)/检测日期合法性 int a12=31,28,31,30,31,30,31,31,30,31,30,31;if(y0)if(m0&m13)if(d0&d=am1)return 1;if((y4=0)&(y%100!=0)|(y400=0)&(m=2)(d=29)return 1;return 0;int check2(int y1,int

13、m1,int d1,int y2,int m2,int d2)/检测日期的先后顺序是否正确if(y2y1) return 1;if(y2=y1&m2m1)return 1;if(y2=y1m2=m1&d2d1) return 1; if(y2=y1&m2=m1&d2=d1) return 1;else return 0;int check3(int y1,int m1,int d1,int y2,int m2,int d2) /查找符合要求的日期 int i,k=0;for(i=0;i100;i+)if((check2(y1,m1,d1,pi。y,pi.m,pi。d))&(check2(pi.

14、y,pi。m,pi。d,y2,m2,d2)k=k+1;if (k=1)return 1;elsereturn 0;int income(struct data p)int i;char q100;for(i=k-1;;i+)doprintf(”请输入日期(例:201271):”);scanf(”d-d-d,pi。y,&pi.m,&pi。d);while(!check1(pi.y,pi。m,pi。d));fflush(stdin);printf(”请输入摘要(默认:无):”);gets(pi。zy) ;if(strlen(pi。zy)=0)strcpy(pi.zy,”无”);fflush(std

15、in);printf(”请输入金额:);scanf(”%f”,pi。money);fflush(stdin); printf (”请输入币种(默认RMB):); gets (pi。biz); if(strlen(pi。biz)=0) strcpy(pi。biz,RMB”); pi.x=1; pi.rmoney=pi1。rmoney+pi.money; pi。n=k; k=k+1;; printf(”请输入Enter继续:); fflush(stdin); gets(q); return 0; int expend(struct data p)/支出 int i;char q100; for (

16、i=k-1;i+) doprintf(请输入日期(例:2012-7-1):”);scanf(%ddd”,&pi。y,pi.m,pi.d); while(!check1(pi。y,pi。m,pi。d));fflush(stdin);printf(”请输入摘要(默认:无):”);gets(pi。zy) ;if(strlen(pi.zy)=0)strcpy(pi。zy,无);fflush(stdin);printf(请输入金额:);scanf(”%f,pi.money); fflush(stdin);printf (”请输入币种(默认RMB):); gets (pi。biz); if(strlen(

17、pi.biz)=0) strcpy(pi.biz,”RMB); pi.x=0; pi.rmoney=pi-1.rmoney+pi.money; pi.n=k; k=k+1; printf(”请输入Enter继续:”); fflush(stdin); gets(q); return 0; int list(struct data p) char q100; int i,y1,m1,d1,y2,m2,d2; do printf(”输入时请注意日期的先后顺序!!n”); do printf(”请输入起始时间(例200011):”); scanf(%d-%dd”,&y1,m1,d1); while(!

18、check1(y1,m1,d1); do printf(请输入截至时间(例20001-1):”); scanf(d%dd”,&y2,m2,&d2); while(!check1(y2,m2,d2)); while(!check2(y1,m1,d1,y2,m2,d2);if(check3(y1,m1,d1,y2,m2,d2)=0) printf (”此时间段内没有收支记录!n”); else printf(”顺序号t日期tt摘要t金额t余额t币种t标志n”); for(i=0;ik;i+) printf(%dtdd%dt%st%gtgt%stdn,pi.n,pi.y,pi.m,pi。d,pi.z

19、y,pi。money,pi.rmoney,pi.biz,pi.x);printf(”注意:标志1为收入,标志0为支出!”);printf(”请按Enter继续!”);fflush(stdin);gets(q);return 0; int destat (struct data p) /查询与统计 int y,m,z,i; char q100; float sum1=0,sum2=0,rmoney; printf(请选择查询方式:n”); printf(”1.查询年份:n); printf(”2。查询月份:n”); scanf(”d”,z); if(z=1) printf(”请输入要查询的年份:

20、); scanf(%d”,y); for(i=0;i100;i+) if(y=pi.y)&(pi.x=1)) sum1=sum1+pi。rmoney; if(y=pi.y)(pi.x=0)) sum2=sum2+pi。rmoney; if(z=2) printf (”请输入年份:”); scanf (”%d”,y); do printf (”请输入月份:”); scanf (d”,m); while (m1m12); for(i=0;i100;i+) if ((pi.y=y)&(pi。x=1)&(pi.m=m) sum1=sum1+pi.rmoney; if ((pi。y=y)&(pi.x=0

21、)&(pi。m=m)) sum2=sum2+pi.rmoney; rmoney=sum1sum2; printf(总收入: %gn,sum1); printf(总支出: %gn,sum2); printf(余额: gn”,rmoney); printf(”请按Enter继续: ); fflush(stdin); gets(q); return 0; void write(struct data p)/写入文件 int i; FILE fp; char q20,t100; if(k1=0)printf(”请先输入数据!); else printf(”请输入文件名: ”);fflush(stdin

22、);gets(q);if(strlen(q)=0)strcpy(q,record。dat”); printf(”已保存为默认文件data.datn) ;fp=fopen(q,w”);for(i=0;ik;i+) fwrite(pi,sizeof(struct data),1,fp); printf (”记录已存储!n); printf (”n请按Enter键继续:);fflush(stdin);gets(t); void read (struct data p)/读取文件FILE *fp;char q20,t100;k=0; printf(输入文件名:); fflush(stdin);gets

23、 (q);if(strlen(q)=0) strcpy(q,”record。dat);printf(已打开默认文件data。datn”); if(fp=fopen(q,rb”)=NULL) printf(”文件不存在!n”);else fp=fopen(q,”r); while(!feof(fp) fread(pk+,sizeof(struct data),1,fp); fclose(fp); k=k-1; printf (文件已读取!n); printf (n请按Enter键继续:); fflush(stdin); gets(t);void main() int n; do printf(”

24、+n”);printf( 个人收支管理 n”); printf(1。收入 n); printf(”2.支出 n”); printf(”3。明细表 n); printf(4。查询与统计 n”); printf(5.写入文件 n”);printf(”6。读取文件 n);printf(0。退出系统 n); printf(”+n);printf(请输入你要进行操作:”);scanf(”d,&n);switch (n)case 1:income(p); system(cls”);break; case 2:expend(p); system(cls”);break; case 3:list(p); system(cls”);break; case 4:destat(p); system(cls”);break; case 5:write(p); system(”cls);break; case 6:read(p); system(”cls);break; while(n!=0);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服