1、个人收支管理系统计算机科学与信息工程学院课程设计报告2011-2012第二学期课程设计名称 C语言课程设计设计题目 个人收支管理系统学生姓名 学号 专业班级 指导教师 2012年7月4日个人收支管理一、设计目的一些比较发达国家人的生活中对理财有着很严格的计划,因此国外的理财系统总体来说比较普遍,做的也比较完善.国内的理财系统主要偏重于办公财务软件,而个人理财和家庭理财方面的比较少,因此需要开发相关的系统软件,从而达到引导理性消费,合理安排收支。进行账目的统计,如果是手动统计的话,首先,如果每天统计的话,用于统计的账本和记录会越来越多,不利于保管,容易造成丢失;其次,随着纪录的增多,如果要查找以
2、前的记录,会变的越来越困难。因此,需要一个功能比较完善的记账系统来代替传统的手工统计。个人收支管理系统可以方便地记录您家庭的每日收支情况。二、功能描述如图1所示,本系统主要有8个板块构成:1.个人收支管理系统显示界面。个人收支管理系统必须在系统运行后第一时间显示出来。此界面显示了一个收入模式、一个支出模式、一个明细表、一个查询与统计、一个记录数据写入文件、一个读取文件的功能。2.收入模式。用户可以在收入模式中输入以下数据:顺序号、日期、摘要、金额、余额、币种,收入或支出标志。默认币种为人民币,也可以是美圆、欧元、日币或英镑。3.支出模式。用户可以在支出模式中输入以下数据:顺序号、日期、摘要、金
3、额、余额、币种,收入或支出标志。默认币种为人民币,也可以是美圆、欧元、日币或英镑。4.明细表。用户可以根据需要输入起止时间来查询一段时间内的收入支出情况,系统会通过列表的形式把内容展示出来。5.查询与统计。在此功能模式下,用户可以对一段时间的收入支出情况进行查询,可以得到总收入、总支出和余额。此数据是按月或按年份统计计算的。6.此板块属于拓展功能1-写入文件,记录数据。在此模块下,用户可以根据需要爆当前输入的数据保存下来,以备后用。7.此板块属于拓展功能2读取文件,读取数据。在此模块下,用户可以读取以前所记录的数据并进行查看。8.退出系统。三、总体设计1.系统执行主程序本系统执行主程序如图2所
4、示。首先,调用main函数,是系统进入主显示面。然后由用户选择所需要的功能,并进入相应功能程序,按照用户需求进行相应操作后回到主显示界面,等待用户继续按键选择功能进行操作。2.系统显示界面此系统界面主要由可供选择的功能组成:收入、支出、明细表、查询与统计、写入文件、读取文件。用户在进行选择后可通过switch语句进行跳转进入相应分程序。四、数据结构设计 data 结构体struct data int n;strlen()函数原型:size_t strlen(const char *s)该函数是用来计算字符串的长度,用于用户接下来的操作。5. strcpy()函数原型:char *strcpy(
5、char *s1,const char *s2)该函数用于把字符串s2复制给字符串s1。 *()函数原型:file *fp1;通过文件指针便于对流的访问。Fopen()函数原型:fopen (FILE_NAME,”r或”)该函数用于打开文件,进行读取或写入。Fclose ()函数原型:fclose()该函数主要用来关闭用户打开的文件。Main()函数原型:void main()Main()为主函数。四、程序实现源码分析()程序预处理#include 入 n); printf(2.支出 n); printf(3.明细表 n); printf(4.查询与统计 n); printf(5.写入文件 n
6、); printf(6.读取文件 n); printf(0.退出系统 n); printf(+n); printf(请输入你要进行操作:); scanf(%d,&n); ,pi.m,pi.d) &(check2(pi.y,pi.m,pi.d,y2,m2,d2) k=k+1; if (k=1) return 1; else return 0;int income(struct data p) int i;char q100; for(i=k-1;i+) do printf(请输入日期(例:2012-7-1):); scanf(%d-%d-%d,&pi.y,&pi.m,&pi.d); while(
7、!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(pi.biz)=0) strcpy(pi.biz,RMB); pi.x=1; pi.rmoney=pi-1.rmoney+pi.money; p
8、i.n=k; k=k+1; printf(请输入Enter继续:); fflush(stdin); gets(q); return 0; int expend(struct data p),&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
9、 (请输入币种(默认RMB):); gets (pi.biz); if(strlen(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(请输入起始时间(例2000-1-1)
10、:); scanf(%d-%d-%d,&y1,&m1,&d1); while(!check1(y1,m1,d1); do printf(请输入截至时间(例2000-1-1):); scanf(%d-%d-%d,&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(%dt%d-
11、%d-%dt%st%gt%gt%st%dn,pi.n,pi.y,pi.m,pi.d, pi.zy,pi.money,pi.rmoney,pi.biz,pi.x); printf(注意:标志1为收入,标志0为支出!); printf(请按Enter继续!); fflush(stdin); gets(q); return 0; int destat (struct data p) 询年份:n); printf(2.查询月份:n); scanf(%d,&z); if(z=1) printf(请输入要查询的年份:); scanf(%d,&y); for(i=0;i100;i+) if(y=pi.y)&
12、(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 (m12); 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)&(pi.m=m) sum2=sum2+pi.rmoney; rmoney=sum1-sum2; prin
13、tf(总收入: %gn,sum1); printf(总支出: %gn,sum2); printf(余额: %gn,rmoney); printf(请按Enter继续: ); fflush(stdin); gets(q); return 0; void write(struct data p)入 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);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1