个人收支管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学与信息工程学院
课程设计报告
2011-2012第二学期
课程设计名称C语言课程设计
设计题目个人收支管理系统
学生姓名
学号
专业班级
指导教师
2012年7月4日
个人收支管理
一、设计目的
一些比较发达国家人的生活中对理财有着很严格的计划,因此国外的理财系统总体来说比较普遍,做的也比较完善.国内的理财系统主要偏重于办公财务软件,而个人理财和家庭理财方面的比较少,因此需要开发相关的系统软件,从而达到引导理性消费,合理安排收支。
进行账目的统计,如果是手动统计的话,首先,如果每天统计的话,用于统计的账本和记录会越来越多,不利于保管,容易造成丢失;其次,随着纪录的增多,如果要查找以前的记录,会变的越来越困难。因此,需要一个功能比较完善的记账系统来代替传统的手工统计。
个人收支管理系统可以方便地记录您家庭的每日收支情况。
二、功能描述
如图1所示,本系统主要有8个板块构成:
1.个人收支管理系统显示界面。个人收支管理系统必须在系统运行后第一时间显示出来。此界面显示了一个收入模式、一个支出模式、一个明细表、一个查询与统计、一个记录数据写入文件、一个读取文件的功能。
2.收入模式。用户可以在收入模式中输入以下数据:顺序号、日期、摘要、金额、余额、币种,收入或支出标志。默认币种为人民币,也可以是美圆、欧元、日币或英镑。
3.支出模式。用户可以在支出模式中输入以下数据:顺序号、日期、摘要、金额、余额、币种,收入或支出标志。默认币种为人民币,也可以是美圆、欧元、日币或英镑。
4.明细表。用户可以根据需要输入起止时间来查询一段时间内的收入支出情况,系统会通过列表的形式把内容展示出来。
5.查询与统计。在此功能模式下,用户可以对一段时间的收入支出情况进行查询,可以得到总收入、总支出和余额。此数据是按月或按年份统计计算的。
6.此板块属于拓展功能1---写入文件,记录数据。在此模块下,用户可以根据需要爆当前输入的数据保存下来,以备后用。
7.此板块属于拓展功能2—读取文件,读取数据。在此模块下,用户可以读取以前所记录的数据并进行查看。
8.退出系统。
1.本系统执行主程序如图2所示。首先,调用main 函数,是系统进入主显示面。然后由用户选择所需要的功能,并进入相应功能程序,按照用户需求进行相应操作后回到主显示界面,等待用户继续按键选择功能进行操作。
2.系统显示界面
此系统界面主要由可供选择的功能组成:收入、支出、明细表、查询与统计、写入文件、读取文件。用户在进行选择后可通过switch 语句进行跳转进入相应分程序。
data 结构体
struct data{
int n;strlen()
函数原型:size_t strlen(const char *s)
该函数是用来计算字符串的长度,用于用户接下来的操作。
5. strcpy()
函数原型:char *strcpy(char *s1,const char *s2)
该函数用于把字符串s2复制给字符串s1。
*()
函数原型:file *fp1;
通过文件指针便于对流的访问。
7.Fopen()
函数原型:fopen (FILE_NAME,”r或w”) 该函数用于打开文件,进行读取或写入。8.Fclose ()
函数原型:fclose()
该函数主要用来关闭用户打开的文件。9.Main()
函数原型:void main()
Main()为主函数。
四、程序实现
1.源码分析
(1)程序预处理
#include <>入\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);
,p[i].m,p[i].d)) &&(check2(p[i].y,p[i].m,p[i].d,y2,m2,d2)))
k=k+1;
}
if (k=1)
return 1;
else
return 0;
}
int income(struct data p[])
{
int i;char q[100];
for(i=k-1;;i++){
do{
printf("请输入日期(例:2012-7-1):");
scanf("%d-%d-%d",&p[i].y,&p[i].m,&p[i].d);
}
while(!check1(p[i].y,p[i].m,p[i].d));
fflush(stdin);
printf("请输入摘要(默认:无):");
gets(p[i].zy) ;
if(strlen(p[i].zy)==0)strcpy(p[i].zy,"无");
fflush(stdin);
printf("请输入金额:");
scanf("%f",&p[i].money);
fflush(stdin);
printf ("请输入币种(默认RMB):");
gets (p[i].biz);
if(strlen(p[i].biz)==0) strcpy(p[i].biz,"RMB");
p[i].x=1;
p[i].rmoney=p[i-1].rmoney+p[i].money;
p[i].n=k;
k=k+1;;
printf("请输入Enter继续:");
fflush(stdin);
gets(q);
return 0;
}
}
int expend(struct data p[]),&p[i].m,&p[i].d);
}
while(!check1(p[i].y,p[i].m,p[i].d));
fflush(stdin);
printf("请输入摘要(默认:无):");
gets(p[i].zy) ;
if(strlen(p[i].zy)==0)strcpy(p[i].zy,"无");
fflush(stdin);
printf("请输入金额:");
scanf("%f",&p[i].money);