个人记账系统毕业课程设计报告.docx
- 文档编号:8966896
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:17
- 大小:100.93KB
个人记账系统毕业课程设计报告.docx
《个人记账系统毕业课程设计报告.docx》由会员分享,可在线阅读,更多相关《个人记账系统毕业课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
个人记账系统毕业课程设计报告
(此文档为word格式,下载后您可任意编辑修改!
)
软件工程学年设计
题目:
个人记账系统
院系:
计算机科学与技术
班级:
计算机班
学号:
姓名:
指导教师:
2011年7月15日
摘要
本报告介绍了一个运用C语言知识和DEVC++创建的用于个人财务情况管理的个人记账系统。
在该系统中创建了包含增加、删除、修改、查找、插入、浏览、统计的功能总列表,创建序号链接各功能列表,输入收入支出信息情况,增加信息,删除信息,,创建合计排序浏览用户可从总体上浏览个人财务信息情况。
关键词:
C语言,DEVc++,个人记账系统
目录
第一章绪论1
1.1开发背景及意义1
1.2相关技术背景2
1.3开发及运行环境4
第二章需求分析5
2.1设计目标5
2.2功能需求5
2.3可行性分析5
第三章总体设计7
3.1设计目标7
3.2系统结构设计7
3.3系统功能结构图7
第四章详细设计12
5.1基本对象设计12
5.2系统主程序的设计与实现13
5.3用户登录功能的设计与实现17
5.4流水账视图的设计与实现20
5.5消费结构视图的设计与实现23
5.6流水账明细视图的设计与实现24
5.7账户设置功能的设计与实现28
5.8消费趋势堆栈图的设计与实现29
5.9系统辅助功能的设计与实现30
第六章软件测试34
6.1系统测试34
6.2性能测试37
6.3验收测试37
第七章总结38
参考文献40
第一章绪论
1.1开发背景及意义
个人理财在我国得到大众的认可和金融机构的重视是近几年的事情。
人们对个人理财的重视程度,与我国市场经济制度不断完善、资本市场长足发展、金融产品的日趋丰富以及居民总体收入水平的逐年上升等等是分不开的。
但是比起美、日等发达国家,我国人民对于个人理财的理解还处于初级阶段。
但是其实理财并不困难,并非非要依靠个人理财专业人士的建议才能身体力行。
只要了解收支状况、设定财务目标、拟定策略、编列预算、执行预算到分析成果这六大步骤,便可以轻松的达成个人的财务管理。
至于要如何预估收入掌握支出进而检讨改进则有赖于平日的财务记录,简单的说记账是理财的第一步。
最近越来越多的人具有了记账的习惯,在上班族、学生族既定收入稳定的情况下,采取“节流”的科学理财方式是非常实际的,也符合个人理财统筹的原则。
家庭、个人的收入支出结构在日益发生变化,单纯地靠在本子上记录收入支出无法满足对于收入支出结构的统计分析,因此以个人用户为目标的记账软件应运而生。
相应的各种面向家庭及个人的理财软件也越来越多。
但是众多个人理财软件操作专业,对于个人用户来说功能过于强大,分析数据用语专业也不易理解。
因此开发一个操作简便、统计结果直观并对个人用户理财有参考价值的记账软件无疑能为广大个人用户提供方便。
在盛行个人理财的美国,70%以上的家庭都拥有一套自己的理财软件,其中最具影响力的理财软件要数Intuit公司开发的Quiken和微软公司开发的Money这两款软件。
现在,Intuit公司已成为世界最大的理财软件与理财咨询公司,Quiken也成为全世界用户最多的家庭理财软件。
欧美家庭平日的财务报表,预算,税务处理,银行账目的查询等等都借助软件的各项功能,使用理财软件帮助家庭打理日常的财务安排已经成为一件很平常的事。
但由于金融体制上的巨大差异,在欧美国家使用的个人家庭理财软件却并没有登陆中国市场。
但是国内的个人理财服务却刚刚起步,各式各样的个人理财软件也如雨后春笋,数不胜数。
至少有上百款的所谓个人理财软件,但实际上99%是个人写的业务小程序,功能比Excel方便一点而已,有的加一点报表功能,充其量叫记账软件。
如果个人理财软件仅有告诉你“柴米油盐酱醋茶”这种流水账的功能,Excel足够了。
但真正做到功能强大,技术专业,市场有影响力的,而且形成规模的,国内只有区区两款,成都的财智和深圳的家财通。
总而言之,在不久的将来家庭使用理财软件也将成为国内家庭的必需品。
能提供简单明了的功能及操作的记账软件更是被广泛需要。
这种软件也会为提升人们的生活质量发挥它最大的效用。
1.2相关技术背景
C语言是国内外广泛使用的一种计算机语言,学会使用C语言进行程序设计是计算机工作者的一项基本功。
对于我们大学生来说,学习这样一门“C程序设计教程”更是必要的。
本课程设计“家庭财务管理系统”就是通过学习《C程序设计》采用VisualC++作为编译环境,是程序编译和运行的。
本系统的总体思想基于结构化的程序设计。
应用高级语言程序设计中的基本控制结构,如循环和选择,着重实现管理系统的增、删、改、查等典型的管理功能由于主要实现的是管理系统的增、删、改、查等典型功能。
程序设计是一门实践性很强的课程,既要掌握概念,又要动手编译,还要上机调试运行,通过这一次的课程设计我们从实践中更进一步的学习和了解C语言,当然由于我们的技术水平有限,在这途中遇到很多问题,程序也未能做到很完美,望见谅!
1.3开发及运行环境
开发工具:
DEVc++
运行环境:
WindowsXPWindowsVistaWin7
第二章需求分析
需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。
需求分析就是分析软件用户的需求是什么。
如果投入大量的人力、物力、财力和时间开发出的软件却不被人需要,那么所有的投入都是徒劳。
本章将详细阐述对于个人记账系统的需求分析。
以使得本系统可以尽可能地满足大多数个人用户记录日常收支的需要。
2.1设计目标
为了做出满足个人用户的需要的符合质量要求的系统,制定以下设计目标:
Ø对于日常收入设parents,school,labor,others分类记录收入。
对于日常支出设clothes,food,");
printf("输入序号:
");
scanf("%d",&num);
if(num==0)
returnNULL;
else
{
cPtr=(APtr)malloc(sizeof(Account));
cPtr->num=num;
printf("输入日期,格式为****.**.**:
");
scanf("%s",cPtr->date);
printf("输入in或out表示收入和支出:
");
scanf("%s",cPtr->in_out);
printf("输入金额:
");
scanf("%f",&cPtr->amount);
printf("输入门类,收入有parents、school、labor、others\n"
"支出有:
clothes、food、);
cPtr->next=creat();
returncPtr;
}
2.显示账单
实现代码如下:
voidprint(APtr");
return;}
else
{
if(",_out,);
else
{
printf("%d\t%-10s\t%-5s\t\t%5.2f\t\t%-10s\t%5.2f\n",_out,);
print(,i;
chardate[12];
if((");
printf("1.按序号删除一条记录\n"
"2.按时间删除一条记录\n"
"3.删除全部记录\n");
scanf("%d",&i);
if(i==1)
{
printf("输入要删除的记录序号:
");
scanf("%d",&n);
p1=&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(p1->num==n)p1的num等于n
{
if(p1==");
}
else
printf("记录不存在,序号错误\n");
}
elseif(i==2)
{printf("输入要删除记录的日期:
");
scanf("%s",date);
p1=");
}
else
printf("记录不存在\n");
}
elseif(i==3)
{
while(");
}
return(",
"No.","date","in_out","amount","kind","remain");
if(",_out,);
else
{
cPtr=",cPtr->num,
cPtr->date,cPtr->in_out,cPtr->amount,cPtr->kind,cPtr->remain);
returncPtr;
}
else
printf("该条记录不存在\n");
}
returncPtr;
}
*5.按date查询*
voiddate_search(APtr",
"No.","date","in_out","amount","kind","remain");
cPtr=",cPtr->num,
cPtr->date,cPtr->in_out,cPtr->amount,cPtr->kind,cPtr->remain);
m=m+1;
}
cPtr=cPtr->next;
}
if(m==0)
{
printf("该条记录不存在\n");
}
}
3.账单排序浏览
实现代码如下:
voiddate_sort(APtr*sPtr)
{
APtrpPtr=NULL,cPtr=NULL,t1Ptr=NULL,t2Ptr=NULL;
inti,j;
for(i=0;i { pPtr=*sPtr; cPtr=(*sPtr)->next; for(j=0;j { if(strcmp(pPtr->date,cPtr->date)>0&&pPtr==*sPtr) { pPtr->next=cPtr->next; cPtr->next=pPtr; t1Ptr=pPtr; pPtr=cPtr; cPtr=t1Ptr; *sPtr=pPtr; } else { if(strcmp(pPtr->date,cPtr->date)>0) { t1Ptr->next=cPtr; cPtr->next=pPtr; pPtr->next=t2Ptr; t1Ptr=pPtr; pPtr=cPtr; cPtr=t1Ptr; } } if(cPtr->next! =NULL) { t1Ptr=pPtr; pPtr=cPtr; cPtr=cPtr->next; t2Ptr=cPtr->next; } } } } voidamount_sort(APtr*sPtr) { APtrpPtr=NULL,cPtr=NULL,t1Ptr=NULL,t2Ptr=NULL; inti,j; for(i=0;i { pPtr=*sPtr; cPtr=(*sPtr)->next; for(j=0;j { if(pPtr->amount>cPtr->amount&&pPtr==*sPtr) { pPtr->next=cPtr->next; cPtr->next=pPtr; t1Ptr=pPtr; pPtr=cPtr; cPtr=t1Ptr; *sPtr=pPtr; } else { if(pPtr->amount>cPtr->amount) { t1Ptr->next=cPtr; cPtr->next=pPtr; pPtr->next=t2Ptr; t1Ptr=pPtr; pPtr=cPtr; cPtr=t1Ptr; } } if(cPtr->next! =NULL) { t1Ptr=pPtr; pPtr=cPtr; cPtr=cPtr->next; t2Ptr=cPtr->next; } } } } 4.统计 实现代码如下: *9.统计各类数据* voidStat(APtr"); printf("1总收入和总支出\n" "2各门类总计统计\n" "3月度总计\n" "4各门类多占总量的比例\n"); scanf("%d",&choice); switch(choice) { case1: printf("计算总收入请输入in,计算总支出请输入out\n"); scanf("%s",IO); IO_total(,统计支出输入out: "); scanf("%s",IO); printf("请输入要统计的kind类型: "); scanf("%s",kind); kind_total(,统计支出输入out: "); scanf("%s",IO); printf("请输入要统计的年月,格式****.**: "); scanf("%s",date); mon_total(,统计支出输入out: "); scanf("%s",IO); printf("请输入要统计的kind类型: "); scanf("%s",kind); proportion(_out)==0) { sum+=cPtr->amount; } cPtr=cPtr->next; } printf("%s类的%s统计结果为: %f\n",kind,IO,sum); printf("保存结果,输入要保存的文件名: "); scanf("%s",str); if((fp=fopen(str,"a"))==NULL) { printf("文件打不开,无法保存\n"); } else { fprintf(fp,"%s","Theresultis"); fprintf(fp,"%s\t%s\t%f\n",kind,IO,sum); printf("保存成功\n"); } returnsum; } *总收入总支出* floatIO_total(APtr_out,IO)==0) { sum+=cPtr->amount; } cPtr=cPtr->next; } printf("%s的结果为: %f\n",IO,sum); printf("保存结果,输入要保存的文件名: "); scanf("%s",str); if((fp=fopen(str,"a"))==NULL) { printf("文件打不开,无法保存\n"); } else { fprintf(fp,"%s","Theresultis"); fprintf(fp,"%s\t%f\n",IO,sum); printf("保存成功\n"); } returnsum; } *月度开销* voidmon_total(APtr_out,IO)==0&&strncmp(cPtr->date,date,7)==0) { sum+=cPtr->amount; } cPtr=cPtr->next; } printf("%s该月%s总计为: %f\n",date,IO,sum); printf("保存结果,输入要保存的文件名: "); scanf("%s",str); if((fp=fopen(str,"a"))==NULL) { printf("文件打不开,无法保存\n"); } else { fprintf(fp,"%s","Theresultis"); fprintf(fp,"%s\t%s\t%f\n",date,IO,sum); printf("保存成功\n"); } } *各门类所占比例* voidproportion(APtr",kind,IO,pro); printf("保存结果,输入要保存的文件名: "); scanf("%s",str); if((fp=fopen(str,"a"))==NULL) { printf("文件打不开,无法保存\n"); } else { fprintf(fp,"%s","Theresultis"); fprintf(fp,"%s%s\t%f\n",kind,IO,pro); printf("保存成功\n"); } } 第三章总结 通过本此的课程设计,让我更熟练地掌握了《C程序设计教程》的知识,熟悉了一个管理系统的运用和操作,熟悉如何采用DEVC++作为编译环境,使程序成功的编译和运行,能够运用VC语言创建基本表和编辑信息,增加信息,删除信息,修改信息,查找信息和浏览信息。 通过对基本表格,编辑,增加,删除,修改,查找,浏览模块的链接,生成能操作运行的管理系统。 此次我们所设计的个人记账系统可应用于家庭的简单管理,对家庭各成员的财务收入,支出进行编辑,增加,删除,修改,合计排序浏览。 在这次课程设计中由于对知识掌握的不够熟悉,专业技术水平的有限,我遇到很多问题,从程序的初步设计,编辑到程序的运行,从一开始的按模块分工撰写,到各模块的链接运行。 特别是程序运行的时候,程序出现了一个错误,使整个程序运行不了,我更是在怎样运行程序上思想发生了冲突。 总之,VC程序设计为我提供了一个相互学习的平台,为更好地学习这门课程提供了坏境和基础,因为课程设计我更加全身心的投入了该科的学习,更能学以致用,这对我来说意义是非凡的。 参考文献 [1]谭浩强.C程序设计.北京: 清华大学出版社,2007.5. [2]黄明.C语言课程设计.北京: 电子工业出版社.2008.7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人 记账 系统 毕业 课程设计 报告