南邮程序设计个人财务系统实验报告.docx

上传人:b****5 文档编号:6800508 上传时间:2023-01-10 格式:DOCX 页数:15 大小:77.71KB
下载 相关 举报
南邮程序设计个人财务系统实验报告.docx_第1页
第1页 / 共15页
南邮程序设计个人财务系统实验报告.docx_第2页
第2页 / 共15页
南邮程序设计个人财务系统实验报告.docx_第3页
第3页 / 共15页
南邮程序设计个人财务系统实验报告.docx_第4页
第4页 / 共15页
南邮程序设计个人财务系统实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

南邮程序设计个人财务系统实验报告.docx

《南邮程序设计个人财务系统实验报告.docx》由会员分享,可在线阅读,更多相关《南邮程序设计个人财务系统实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

南邮程序设计个人财务系统实验报告.docx

南邮程序设计个人财务系统实验报告

个人财务系统

一.实验内容和要求:

课题:

个人财务系统的设计

内容和要求:

(1)定义个人财务相关的结构体。

(2)进行个人财务明细信息录入修改删除。

(3)可以进行相关信息查询。

(4)能够进行财务信息分类汇总统计。

二.需求分析

(1)刚运行出来的界面是个人财务管理系统主界面,里面有四个主要功能1财务数据管理财务数据查询3财务数据统计0退出返回。

通过输入序号分别进入其中一个子菜单内。

(2)比如输入1财务数据管理,进入另一个界面,里面又有三个子功能分别是财务录入、修改、删除。

输入2时进入财务数据查询界面,共有三个方法进行查询,可以查所有财务数据,按年月查询,按收入和支出查询。

输入3进入财务数据统计界面,里面有两个功能,可分别按年月统计和收支统计。

三.概要设计

(1).程序中有四个头文件

#include标准io库头文件,只要用到printf(输出)和scanf(输入)时都要引入该头文件。

#include也是库头文件,主要用syetem(),exit(),等函数时要引用该头文件;

#include是旧的C头文件,对应的是基于char*的字符串处理函数;

#include是定义类型函数时要引用该头文件。

(2)定义各函数变量,如:

voidmainlist();

voiddatalist();

voiddatain();//输入信息

voiddatamo();//信息修改

voiddatadel();//删除信息

voidquelist();

voidalldata();//查询所有信息

voidtdata();//按年月查询

voidsz();//按收支查询

voidstalist();

doublesta(inty,intm);//按月份或年份统计收支

voidszsta();//收支统计

charshuru();//判断输入是否为数字

intreadfile();//读取财务信息

voidwritefile(intx);//记录财务信息

(3)进行各个函数功能的运用

voidmainlist()主菜单定义个人财务系统的管理,查询,统计,其中用到switch();{case0,case1,case2,case3}语句进行选择功能,for语句限制输入数据的长度并判断数据是否要存档,并通过printf,scanf语句进行相关数据的输入输出。

在定义主函数中,进行文件的定义readfile()进行读取文件writefile()进行写入文件。

并判断能否读取和写入,charshuzi()判断输入的是否是数字,如果不是数据重新输入或返回。

(4)实验中主要用到的函数和主要语句

1#defineN100宏指令,定义100个数据变量。

2structfinance//财务数据结构体定义finance为结构名

{

intnum;结构体成员别列

intyear;

intmonth;

intday;

charname[30];

doubleamount;

}FIN,pro[N];FIN为结构别名

3FILE*fp;文件指针

4system("colorf1\n");改变运行界面为白色

system("color48\n");改变运行界面为红色

system("cls");清屏语句

5switch(…..){case0:

…….;case1:

………..};

四源程序相关主要代码

structfinance//财务数据结构体

{

intnum;

intyear;

intmonth;

intday;

charname[30];

doubleamount;

}FIN,pro[N];

typedefstructdata//月度统计

{

intsort_year;

intsort_month;

doublecount;

structdatasort*next;

}DSORT,*DSORTP;DSORTdsort[N];

voidmainlist()//主菜单,可选功能数据管理、查询、统{

intb;

system("colorf1\n");

printf("\t\t******************************************\n");

printf("\t\t\t10001125徐成双个人财务管理系统\n\n");

printf("\t\t******************************************\n");

printf("\t1.财务数据管理\n");

printf("\t2.财务数据查询\n");

printf("\t3.财务数据统计\n");

printf("\t0.退出返回\n");

printf("请输入选择的序号:

");

scanf("%d",&b);

system("cls");

switch(b)

{

case1:

datalist();break;

case2:

quelist();break;

case3:

stalist();break;

case0:

exit(0);break;

}

}

voiddatain()//数据录入

{

inti,word=1,x,k=0;

for(;datalong

{printf("请输入编号:

\n");

scanf("%d",&pro[datalong].num);

printf("请输入年:

\n");

scanf("%d",&pro[datalong].year);

printf("请输入月:

\n");

scanf("%d",&pro[datalong].month);

printf("请输入日:

\n");

scanf("%d",&pro[datalong].day);

printf("请输入收支项目名称:

\n");

scanf("%s",pro[datalong].name);

printf("请输入收支金额:

\n");

scanf("%lf",&pro[datalong].amount);

printf("要继续吗?

\n1.是2.退出\n");

scanf("%d",&word);

}

for(i=0;i

{

printf("%-5d%-5d%-5d%-5d%-10s%-5lf\n",pro[i].num,pro[i].year,pro[i].month,pro[i].day,pro[i].name,pro

[i].amount);

}

printf("\n档案需要存档吗?

\t1.是2.否\n");

scanf("%d",&x);

writefile(x);

}voiddatamo()

{

intch,i;

printf("请输入要修改的收支编号:

\n");

scanf("%d",&ch);

for(i=0;i

{

if(pro[i].num==ch)

{

printf("请输入修改信息:

\n");

printf("请输入编号:

\n");

scanf("%d",&pro[i].num);

printf("请输入年:

\n");

scanf("%d",&pro[i].year);

printf("请输入月:

\n");

scanf("%d",&pro[i].month);

printf("请输入日:

\n");

scanf("%d",&pro[i].day);

printf("请输入收支项目名称:

\n");

scanf("%s",pro[i].name);

printf("请输入收支金额:

\n");

scanf("%lf",&pro[i].amount);

writefile

(1);

}

}

}

voiddatadel()//数据删除

{

intch,i;

printf("请输入要修改的收支编号:

\n");

scanf("%d",&ch);

for(i=0;i

{

if(pro[i].num==ch)

{

pro[i].num=pro[i+1].num;

pro[i].year=pro[i+1].year;

pro[i].month=pro[i+1].month;

pro[i].day=pro[i+1].day;

strcpy(pro[i].name,pro[i+1].name);

pro[i].amount=pro[i+1].amount;

datalong=datalong-1;

writefile

(1);

}

}

}

voiddatalist()

{

intb;

system("cls");

system("color48\n");

printf("\t\t************************************\n");

printf("\t\t\t\t财务数据管理\n\n");

printf("\t\t************************************\n");

printf("-----1.财务录入\n");

printf("-----2.财务修改\n");

printf("-----3.财务删除\n");

printf("-----0.退出返回\n");

printf("请输入选择的序号:

");

scanf("%d",&b);

system("cls");

switch(b)

{

case1:

datain();mainlist();break;

case2:

datamo();mainlist();break;

case3:

datadel();mainlist();break;

case0:

mainlist();break;

}

}

voidalldata()//输出所有信息

{

inti;

printf("编号\t年\t月\t日\t收支信息\t金额\n");

for(i=0;i

{

printf("%-10d%-9d%-5d%-5d%-15s%-5lf\n",pro[i].num,pro[i].year,pro[i].month,pro[i].day,pro[i].name,pro

[i].amount);

}

}

voidtdata()//按年月搜索

{

inty,m,i;

printf("请输入年份");

scanf("%d",&y);

printf("请输入月份");

scanf("%d",&m);

printf("编号\t年\t月\t日\t收支信息\t金额\n");

for(i=0;i

{

if(pro[i].year==y&&pro[i].month==m)

{

printf("%-10d%-9d%-5d%-5d%-15s%-5lf\n",pro[i].num,pro[i].year,pro[i].month,pro[i].day,pro

[i].name,pro[i].amount);

}

}

}

voidquelist()//数据查询菜单功能所有数据、按年月、按收支查询

{

intb;

system("color48\n");

printf("\t\t***************************************\n");

printf("\t\t\t\t财务数据查询\n\n");

printf("\t\t***************************************\n");

printf("\t$$1.所有财务数据\n");

printf("\t$$2.按年月查询\n");

printf("\t$$3.按收入和支出查询\n");

printf("\t$$0.退出返回\n");

printf("\t请输入选择的序号:

");

scanf("%d",&b);

system("cls");

switch(b)

{

case1:

alldata();mainlist();break;

case2:

tdata();mainlist();break;

case3:

sz();mainlist();break;

case4:

mainlist();break;

}

}

doublesta(inty,intm)//按年月统计

{

inti;

doublesum=0;

for(i=0;i

{

if(pro[i].year==y&&pro[i].month==m)

{

sum+=pro[i].amount;

}

}

returnsum;

}

voidstalist()//统计菜单功能按时间、收支统计

{

intb;

inty,m;

system("cls");

system("color48\n");

printf("\t\t**************************************\n");

printf("\t\t\t\t财务收支统计\n\n");

printf("\t\t**************************************\n");

printf("\t--1.按年月统计\n");

printf("\t--2.收支统计\n");

printf("\t--0.退出返回\n");

printf("\t请输入选择的序号:

");

scanf("%d",&b);

switch(b)

{

case1:

{

printf("请输入年份");

scanf("%d",&y);

printf("请输入月份");

scanf("%d",&m);

printf("该月份金额为:

%lf\n",sta(y,m));mainlist();break;

}

case2:

szsta();mainlist();break;

case3:

mainlist();break;

}

}

voidmain()//数据处理菜单功能数据录入、修改、删除

{

datalong=readfile();

mainlist();

}

intreadfile()//财务信息读取

{

intk=0;

if((fp=fopen("data.txt","r"))==NULL)//读取客房信息

{

printf("建立文件。

\n");

if((fp=fopen("data.txt","w"))==NULL)

{

printf("无法进行存储信息。

重新登录。

\n");exit(0);

}

}

do

{

fread(&pro[k],sizeof(FIN),1,fp);

k++;

}while(pro[k-1].num!

=0);

returnk-1;

fclose(fp);

}

voidwritefile(intx)//财务信息写入

{

inti=0;

if((fp=fopen("data.txt","w"))==NULL)

{

printf("写文件失败!

\n");exit(0);

}

if(x==1)

{

for(i=0;i

{

fwrite(&pro[i],sizeof(FIN),1,fp);

}

printf("文件修改成功。

\n");

fclose(fp);

}

}

charshuzi()//判断输入的是否是数字

{

charx;

if(isdigit(x=getchar()))

{

printf("%c\n",x);

getchar();

return(x);

}

else

{

printf("%c\n",x);

printf("请输入数字!

\n");

printf("请重新选择序号:

");

shuzi();

}

return0;

}

五.测试数据和结果分析

编号

年份

月份

日份

收支

金额

001

2011

11

1

收入

4000

002

2011

11

1

支出

4500

003

2011

12

1

收入

5000

004

2011

12

1

支出

3500

005

2012

1

1

收入

4000

006

2012

1

1

支出

3500

1主菜单

2财务数据录入

3录入完成

4按收入查询

5支出查询

6按年月统计

7按收入统计

六调试过程中的问题

1调试过程中发现屏幕比较单一,通过system("colorf1\n");system("color48\n");可以更改屏幕颜色,使其变的美观大方,井井有条。

2通过清屏语句system("cls");进行屏幕更改界面,使屏幕变得简单,清爽,不再那么杂乱。

3程序中不断调用函数进行相关功能的运算使用,每个函数需要进仅仅相扣,有时函数联系不紧密会出现错误,无法执行相关功能。

进行文件的读取写入时,并需要判断文件能否读取和写入。

七课题设计总结

实验中,刚开始我无从下手,经历了这次程序设计的整个过程,我们才发现我们知识的贫乏和知识面的狭窄。

主要原因是我很少编程序,对编程序我没有足够的实践经验,这也注定了我在编程序时会遇到好多困难,面对这样不可逃避的困难,我只能迎头勇敢面对,我找同学讨论,询问许多关于C语言的问题,从中我学到了关于结构体,文件,单链表等知识。

我不断查询资料,包括书本上的,网上的。

对于个人财务系统的资料有好多相关内容,然而这些都不是我想要,因为其中好多我都没学过,我只能选取一些学过的内容进行编程,当然我一个人完成编程是有困难的,在我好同学帮助下,最后我终于完成了编程,对于质量的好坏,就看老师来评论了。

这次程序设计,我对C语言有了更深的了解,原来自己编程的经历并不是很多,许多时候自己是纸上谈兵,但是通过此次编程让我将过去的所学的理论知识真正用到实践中,加深了我对所学知识的理解。

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1