个人记账系统课程设计报告Word格式.docx

上传人:b****1 文档编号:4880766 上传时间:2023-05-04 格式:DOCX 页数:26 大小:526.22KB
下载 相关 举报
个人记账系统课程设计报告Word格式.docx_第1页
第1页 / 共26页
个人记账系统课程设计报告Word格式.docx_第2页
第2页 / 共26页
个人记账系统课程设计报告Word格式.docx_第3页
第3页 / 共26页
个人记账系统课程设计报告Word格式.docx_第4页
第4页 / 共26页
个人记账系统课程设计报告Word格式.docx_第5页
第5页 / 共26页
个人记账系统课程设计报告Word格式.docx_第6页
第6页 / 共26页
个人记账系统课程设计报告Word格式.docx_第7页
第7页 / 共26页
个人记账系统课程设计报告Word格式.docx_第8页
第8页 / 共26页
个人记账系统课程设计报告Word格式.docx_第9页
第9页 / 共26页
个人记账系统课程设计报告Word格式.docx_第10页
第10页 / 共26页
个人记账系统课程设计报告Word格式.docx_第11页
第11页 / 共26页
个人记账系统课程设计报告Word格式.docx_第12页
第12页 / 共26页
个人记账系统课程设计报告Word格式.docx_第13页
第13页 / 共26页
个人记账系统课程设计报告Word格式.docx_第14页
第14页 / 共26页
个人记账系统课程设计报告Word格式.docx_第15页
第15页 / 共26页
个人记账系统课程设计报告Word格式.docx_第16页
第16页 / 共26页
个人记账系统课程设计报告Word格式.docx_第17页
第17页 / 共26页
个人记账系统课程设计报告Word格式.docx_第18页
第18页 / 共26页
个人记账系统课程设计报告Word格式.docx_第19页
第19页 / 共26页
个人记账系统课程设计报告Word格式.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

个人记账系统课程设计报告Word格式.docx

《个人记账系统课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《个人记账系统课程设计报告Word格式.docx(26页珍藏版)》请在冰点文库上搜索。

个人记账系统课程设计报告Word格式.docx

需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。

需求分析就是分析软件用户的需求是什么。

如果投入大量的人力、物力、财力和时间开发出的软件却不被人需要,那么所有的投入都是徒劳。

本章将详细阐述对于个人记账系统的需求分析。

以使得本系统可以尽可能地满足大多数个人用户记录日常收支的需要。

2.1设计目标

为了做出满足个人用户的需要的符合质量要求的系统,制定以下设计目标:

Ø

对于日常收入设parents,school,labor,others分类记录收入。

对于日常支出设clothes,food,house,travel,else分类记录

2.2功能需求

为满足用户需要,要求本系统有以下功能:

记录日常收支情况的功能。

查找某天的收支情况的功能。

插入忘记的收支的功能。

显示账单的功能。

统计的功能。

2.3可行性分析

本课题是基于DEV c++环境,实现记账系统的开发。

为了使本设计更具可行性,本系统的设计严格按照软件工程的设计思想要求,首先对系统进行了可行性分析。

为了使分析更为清晰、完整,设计本系统的时,将可行性分析分为经济可行性、操作可行性、技术可行性三个方面进行分析。

1.经济上可行性:

DEV c++是免费开源的软件,使得开发成本大大下降。

而且可重用性高,节省了二次开发的费用。

资源利用率高,成本低。

从成本效益角度考虑十分可行。

2.操作上的可行性:

该设计的模块界面简洁,方便快捷,简单易学。

即便电脑初学者也可以轻松的操作所有系统的功能。

并不需要掌握繁杂的财务专业知识也可以对自己的日常收支有一个大体的把握。

3.技术上的可行性:

该设计结合了软件工程和会计学两个专业的知识,通过相关技术的学习和钻研是对大学几年学习内容的很好的串联。

在给定的时间一定能完成需求说明要求的功能,并且确保软件运行速度及性能均达到用户期望。

第二章总体设计

软件总体设计是把需求分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。

从需求分析到总体设计,是一个逐渐扩充模型的过程。

系统总体设计确定实现系统的策略和目标系统的高层结构。

确定设计中的类、关联、接口形式及实现操作的算法。

符合传统面向对象设计的准则:

模块化,抽象,信息隐藏,低耦合,高内聚。

3.1设计目标

本系统为个人用户提供一个记录日常收支情况,并得到相应统计结果的平台,主要实现以下目标:

提供日常收支情况记录查看及修改的功能。

备份账目信息。

3.2系统结构设计

个人记账系统面向的用户主要是个人用户,用户只要记录流水账信息便可经过测算得到相应的统计结果,结合实际调查的其他资料可以得出系统的主要功能和辅助功能,并进行主控界面及基本对象的设计。

根据上述分析,结合用户的具体需求,确定系统主要包括四大功能,分别是流水账、统计报表。

3.3系统功能结构图

具体系统结构如下图:

第三章详细设计

软件详细设计是软件工程的重要阶段,软件详细设计细化了高层的体系结构设计,将软件结构中的主要部件划分为能独立编码、编译和测试的软件单元,并进行软件单元的设计,并最终将影响软件实现的成败。

优秀的详细设计在提高编码质量、保证开发周期、节约开发成本等各方面都起着非常重要的作用,是一个软件项目成功的关键保证。

本章将按照设计实现的顺序介绍各个单元的设计与实现情况。

4.1基本对象设计

按照面向对象的分析与设计方法的基本思想,“万物皆对象”,把“对象”作为解决问题的重心。

根据个人记账系统的具体情况分析主要对象有流水账、统计数据等。

  1.流水账对象

流水账对象代表用户所记录的每一笔账目。

每一笔账目信息包括账目发生的年月日信息,账目所属的消费或收入的详细类别,账目名称和金额。

2.统计数据对象

本来其实统计数据对象可以不设立,因为全部的统计数据都可以通过计算得到。

但是考虑到用户查询较为频繁,为了避免每次查询均要计算一次,特别设立了统计数据对象。

实际上,用于保存计算结果的数据量比较小,牺牲了这些许的空间却能换来整个系统的高性能,这无疑是很值得的。

统计数据对象包含了消费结构所需要的各项收支的统计计算结果。

4.2系统主程序的设计与实现

在设计系统主程序时,着重考虑项目的核心功能,并围绕核心功能进行设计。

显然本项目的核心功能就是记账。

用户需要很方便的进行记账活动,并且可以快速看到记账结果。

经过反复考虑设计系统的主控界面如图5-1所示。

4.3流水账视图的设计与实现

1.输入数据创建链表

实现代码如下:

APtrcreat()

{

APtrcPtr;

intnum;

printf("

输入的序号为0时代表输入记录结束\n"

);

输入序号:

"

scanf("

%d"

&

num);

if(num==0)

returnNULL;

else

{

cPtr=(APtr)malloc(sizeof(Account));

cPtr->

num=num;

printf("

输入日期,格式为****.**.**:

scanf("

%s"

cPtr->

date);

输入in或out表示收入和支出:

in_out);

输入金额:

%f"

cPtr->

amount);

输入门类,收入有parents、school、labor、others\n"

"

支出有:

clothes、food、house、travel、else:

kind);

输入余额:

remain);

next=creat();

returncPtr;

}

2.显示账单

voidprint(APtrheadPtr)

if(headPtr==NULL)

{printf("

链表为空\n"

return;

{

if(headPtr->

next==NULL)

%d\t%-10s\t%-5s\t\t%5.2f\t\t%-10s\t%5.2f\n"

headPtr->

num,

headPtr->

date,headPtr->

in_out,headPtr->

amount,headPtr->

kind,headPtr->

headPtr->

print(headPtr->

next);

}

3.删除记录

APtrdel(APtrheadPtr)

APtrp1;

APtrp2;

intn,i;

chardate[12];

nolist!

return(headPtr);

}

选择删除方式,输入序号:

\n"

1.按序号删除一条记录\n"

"

2.按时间删除一条记录\n"

3.删除全部记录\n"

i);

if(i==1)

输入要删除的记录序号:

n);

p1=headPtr;

while(p1->

num!

=n&

&

p1->

next!

=NULL)

p2=p1;

p1=p1->

next;

if(p1->

num==n)//p1的num等于n

if(p1==headPtr)

{

headPtr=headPtr->

}

else

p2->

next=p1->

free(p1);

删除成功\n"

记录不存在,序号错误\n"

elseif(i==2)

{printf("

输入要删除记录的日期:

date);

p1=headPtr;

while(strcmp(date,p1->

date)!

=0&

p1->

p2=p1;

}

if(strcmp(date,p1->

date)==0)

if(p1==headPtr)

{

headPtr=headPtr->

}

else

{

free(p1);

else

printf("

记录不存在\n"

elseif(i==3)

while(headPtr!

headPtr=headPtr->

return(headPtr);

4.账单查找

/*4.按num查询*/

APtrnum_search(APtrheadPtr,intnum)

%3s\t%-10s\t%-8s\t%-10s\t%-10s\t%-10s\n"

No."

"

date"

in_out"

amount"

kind"

remain"

num==num)

cPtr=headPtr;

while(cPtr!

=NULL&

=num)

cPtr=cPtr->

if(cPtr!

=NULL)

cPtr->

date,cPtr->

in_out,cPtr->

amount,cPtr->

kind,cPtr->

该条记录不存在\n"

/*5.按date查询*/

voiddate_search(APtrheadPtr,chardate[])

intm=0;

while(cPtr!

if(strcmp(cPtr->

date,date)==0)

{

printf("

cPtr->

m=m+1;

if(m==0)

5.账单排序浏览

voiddate_sort(APtr*sPtr)

APtrpPtr=NULL,cPtr=NULL,t1Ptr=NULL,t2Ptr=NULL;

inti,j;

for(i=0;

i<

n-1;

i++)

pPtr=*sPtr;

cPtr=(*sPtr)->

for(j=0;

j<

n-1-i;

j++)

if(strcmp(pPtr->

date)>

0&

pPtr==*sPtr)

pPtr->

next=cPtr->

next=pPtr;

t1Ptr=pPtr;

pPtr=cPtr;

cPtr=t1Ptr;

*sPtr=pPtr;

0)

t1Ptr->

next=cPtr;

next=t2Ptr;

if(cPtr->

t2Ptr=cPtr->

voidamount_sort(APtr*sPtr)

i++)

j++)

if(pPtr->

amount>

amount&

amount)

6.统计

/*9.统计各类数据*/

voidStat(APtrheadPtr)

intchoice;

charIO[4],kind[30],date[12];

请选择项目序号:

1总收入和总支出\n"

2各门类总计统计\n"

3月度总计\n"

4各门类多占总量的比例\n"

choice);

switch(choice)

case1:

printf("

计算总收入请输入in,计算总支出请输入out\n"

IO);

IO_total(headPtr,IO);

break;

case2:

统计收入输入in,统计支出输入out:

请输入要统计的kind类型:

kind);

kind_total(headPtr,kind,IO);

case3:

请输入要统计的年月,格式****.**:

mon_total(headPtr,date,IO);

case4:

proportion(headPtr,kind,IO);

/*各门类总计统计*/

floatkind_total(APtrheadPtr,charkind[],charIO[])

FILE*fp;

floatsum=0;

charstr[20];

APtrcPtr=headPtr;

if(strcmp(kind,cPtr->

kind)==0&

strcmp(IO,cPtr->

in_out)==0)

sum+=cPtr->

amount;

%s类的%s统计结果为:

%f\n"

kind,IO,sum);

保存结果,输入要保存的文件名:

str);

if((fp=fopen(str,"

a"

))==NULL)

文件打不开,无法保存\n"

fprintf(fp,"

Theresultis"

%s\t%s\t%f\n"

保存成功\n"

returnsum;

/*总收入总支出*/

floatIO_total(APtrheadPtr,charIO[])

if(strcmp(cPtr->

in_out,IO)==0)

%s的结果为:

IO,sum);

))==NULL)

%s\t%f\n"

/*月度开销*/

voidmon_total(APtrheadPtr,chardate[],charIO[])

if(strcmp(cPtr->

in_out,IO)==0&

strncmp(cPtr->

date,date,7)==0)

%s该月%s总计为:

date,IO,sum);

/*各门类所占比例*/

voidproportion(

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2