南邮程序设计个人财务系统实验报告文档格式.docx
《南邮程序设计个人财务系统实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《南邮程序设计个人财务系统实验报告文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
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"
改变运行界面为红色
cls"
清屏语句
5switch(…..){case0:
…….;
case1:
………..};
四源程序相关主要代码
structfinance//财务数据结构体
typedefstructdata//月度统计
intsort_year;
intsort_month;
doublecount;
structdatasort*next;
}DSORT,*DSORTP;
DSORTdsort[N];
voidmainlist()//主菜单,可选功能数据管理、查询、统{
intb;
system("
printf("
\t\t******************************************\n"
\t\t\t10001125徐成双个人财务管理系统\n\n"
\t1.财务数据管理\n"
\t2.财务数据查询\n"
\t3.财务数据统计\n"
\t0.退出返回\n"
请输入选择的序号:
"
scanf("
%d"
&
b);
switch(b)
{
case1:
datalist();
break;
case2:
quelist();
case3:
stalist();
case0:
exit(0);
}
}
voiddatain()//数据录入
inti,word=1,x,k=0;
for(;
datalong<
N&
&
word==1;
datalong++)
{printf("
请输入编号:
\n"
pro[datalong].num);
请输入年:
pro[datalong].year);
请输入月:
pro[datalong].month);
请输入日:
pro[datalong].day);
请输入收支项目名称:
%s"
pro[datalong].name);
请输入收支金额:
%lf"
pro[datalong].amount);
要继续吗?
\n1.是2.退出\n"
word);
for(i=0;
i<
datalong;
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);
\n档案需要存档吗?
\t1.是2.否\n"
x);
writefile(x);
}voiddatamo()
intch,i;
请输入要修改的收支编号:
ch);
i++)
if(pro[i].num==ch)
请输入修改信息:
pro[i].num);
pro[i].year);
pro[i].month);
pro[i].day);
pro[i].name);
pro[i].amount);
writefile
(1);
voiddatadel()//数据删除
datalong+1;
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;
voiddatalist()
\t\t************************************\n"
\t\t\t\t财务数据管理\n\n"
-----1.财务录入\n"
-----2.财务修改\n"
-----3.财务删除\n"
-----0.退出返回\n"
scanf("
datain();
mainlist();
datamo();
datadel();
mainlist();
voidalldata()//输出所有信息
inti;
编号\t年\t月\t日\t收支信息\t金额\n"
%-10d%-9d%-5d%-5d%-15s%-5lf\n"
voidtdata()//按年月搜索
inty,m,i;
请输入年份"
y);
请输入月份"
m);
if(pro[i].year==y&
pro[i].month==m)
pro[i].num,pro[i].year,pro[i].month,pro[i].day,pro
[i].name,pro[i].amount);
voidquelist()//数据查询菜单功能所有数据、按年月、按收支查询
\t\t***************************************\n"
\t\t\t\t财务数据查询\n\n"
\t$$1.所有财务数据\n"
\t$$2.按年月查询\n"
\t$$3.按收入和支出查询\n"
\t$$0.退出返回\n"
\t请输入选择的序号:
alldata();
tdata();
sz();
case4:
doublesta(inty,intm)//按年月统计
doublesum=0;
sum+=pro[i].amount;
returnsum;
voidstalist()//统计菜单功能按时间、收支统计
inty,m;
\t\t**************************************\n"
\t\t\t\t财务收支统计\n\n"
\t--1.按年月统计\n"
\t--2.收支统计\n"
\t--0.退出返回\n"
该月份金额为:
%lf\n"
sta(y,m));
szsta();
voidmain()//数据处理菜单功能数据录入、修改、删除
datalong=readfile();
intreadfile()//财务信息读取
intk=0;
if((fp=fopen("
data.txt"
"
r"
))==NULL)//读取客房信息
建立文件。
w"
))==NULL)
无法进行存储信息。
重新登录。
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;
))==NULL)
写文件失败!
if(x==1)
for(i=0;
i<
datalong;
fwrite(&
pro[i],sizeof(FIN),1,fp);
文件修改成功。
}
charshuzi()//判断输入的是否是数字
charx;
if(isdigit(x=getchar()))
%c\n"
x);
getchar();
return(x);
else
请输入数字!
请重新选择序号:
shuzi();
return0;
五.测试数据和结果分析
编号
年份
月份
日份
收支
金额
001
2011
11
1
收入
4000
002
支出
4500
003
12
5000
004
3500
005
2012
006
1主菜单
2财务数据录入
3录入完成
4按收入查询
5支出查询
6按年月统计
7按收入统计
六调试过程中的问题
1调试过程中发现屏幕比较单一,通过system("
color48\n"
可以更改屏幕颜色,使其变的美观大方,井井有条。
2通过清屏语句system("
进行屏幕更改界面,使屏幕变得简单,清爽,不再那么杂乱。
3程序中不断调用函数进行相关功能的运算使用,每个函数需要进仅仅相扣,有时函数联系不紧密会出现错误,无法执行相关功能。
进行文件的读取写入时,并需要判断文件能否读取和写入。
七课题设计总结
实验中,刚开始我无从下手,经历了这次程序设计的整个过程,我们才发现我们知识的贫乏和知识面的狭窄。
主要原因是我很少编程序,对编程序我没有足够的实践经验,这也注定了我在编程序时会遇到好多困难,面对这样不可逃避的困难,我只能迎头勇敢面对,我找同学讨论,询问许多关于C语言的问题,从中我学到了关于结构体,文件,单链表等知识。
我不断查询资料,包括书本上的,网上的。
对于个人财务系统的资料有好多相关内容,然而这些都不是我想要,因为其中好多我都没学过,我只能选取一些学过的内容进行编程,当然我一个人完成编程是有困难的,在我好同学帮助下,最后我终于完成了编程,对于质量的好坏,就看老师来评论了。
这次程序设计,我对C语言有了更深的了解,原来自己编程的经历并不是很多,许多时候自己是纸上谈兵,但是通过此次编程让我将过去的所学的理论知识真正用到实践中,加深了我对所学知识的理解。