还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
个人财务管理软件报告目录
一、需求分析旧的信息为:
2010111000.000000收入
1100.000000支出1请输入新的信息收入金额1100收入来源aaa支出金额200支出目的bbb修改成功!新的信息为
2010111100.000000aaa
200.0000000bbbb)请选择2请输入您要删除的日期201011请选择1旧的信息为
2010111000.000000收入
1100.000000支出
12010122000.000000收入
2200.000000支出
22010133000.000000收入
3300.000000支出3删除成功!新的信息为
2010122000.000000收入
2200.000000支出
22010133000.000000收入
3300.000000支出3是否继续y/nn pressany keyto continuec)请选择3请选择1旧的信息为:
20101000.000000收入
1100.000000支出
120102000.000000收入
2200.000000支出
220103000.000000收入
3300.000000支出3请输入新的信息2010144000收入4400支出4添加成功!新的信息为:
20101000.000000收入
1100.000000支出
120102000.000000收入
2200.000000支出
220103000.000000收入
3300.000000支出
320104000.000000收入
4400.000000支出4是否继续y/nn pressany keyto continued请选择4请输入您要查询得日期201011请选择
12010111000.000000收入
1100.000000支出1是否继续y/nn pressany keyto continuee)请选择5请输入你要统计的两个日期
2010112010132.统计该段时间的支出金额
3.统计该段时间的余额请选择
1.
6000.000000是否继续y/nn pressany keyto continue七.附录
1、源程序函数清单主函数fi修改函数f20删除函数:f3添加函数:f4查询函数f5统计函数f6主菜单函数f
72、源程序代码fl.cpp:#include〃stdio.h〃#includez,stdlib.h〃#includez,string.h〃#include〃f
2.h〃#include〃f
3.h〃#includez,f
4.h〃#include〃f
5.h〃#include,zf
6.h〃#include,zf
7.h〃struct people peo[SIZE];int N=3;void main{int i,a,b;char dl
[10]=〃收入l〃,d2
[10]=〃收入2〃,d3
[10]=〃收入3〃,el
[10]=〃支出1〃,e2
[10]=〃支出2〃,e3
[10]=〃支出3〃;FILE*fp;/*输入三天的账户信息*/peo
[0].year=2010;peo
[0].month=l;peo
[0].day=l;strcpypeo
[0].source,dl;;peo
[0].get=1000;strcpypeo
[0].motive,el;peo
[0].out=100;peo
[0].leave=peo
[0].get-peo
[0].out;peo[l].year=2010;peo[l].month=l;peo[l].day=2;strcpypeo[l].source,d2;peo[l].get=2000;strcpypeo[l].motive,e2;peo[l].out=200;peo[l].leave=peo[l].get-peo
[1].out;peo
[2].year=2010;peo
[2].month=l;peo
[2].day=3;strcpypeo
[2].source,d3;peo
[2].get=3000;strcpypeo
[2].motive,e3;peo
[2].out=300;peo
[2].leave=peo
[2].get-peo
[2].out;/*把数据写入文件*/fp=fopen〃f:\\pan.txt〃,〃w〃;for i=0;iN;i++{if fwritepeo[i],sizeofstruct people,1,fp!=1printf〃无法翻开!\n〃;exit0;fclosefp;/*菜单项选择择功能*/printf〃========个人账户管理软件========、/;printf〃=========设计人潘君宇==========\n〃;printf〃\n〃;printf〃\n〃;printf〃请登录\n〃;for;;printf〃请输入用户名和密码:\n〃;printf〃用户名〃;scanf〃%d〃,a;printf〃\n〃;printf〃密码〃;scanf〃%d〃,b;printf〃\n〃;ifa=10201306b=lprintf〃========恭喜输入正确,登录成功!======\n〃;printf〃====该软件中已存有2010年1月1号到3号的信息!二二\n〃;f7;elseprintf〃输入错误,请重新输入!\n〃;f
2.cpp#includez,stdio.h〃#include〃stdlib・h〃#includez,string.h〃#include,,f
2.h〃#include〃f
3.h〃#include〃f
4.h〃#include〃f
5.h〃#include〃f
6.h〃#include,zf
7.h〃extern struct people peo[SIZE];extern N;void f2int x,int y,int zint b,i,n,f lag=l;char c;FILE*fp;/*检查信息*/iffp=fopen〃f:\\pan.txt〃,〃r〃二二NULL printf〃无法找到该文件!\n〃;exit0;/*检查是否有该信息*/fori=0;iN;i++freadpeo[i],sizeofstruct people,1,fp;if x==peo[i].yeary==peo[i].monthz==peo[i].day{n=i;break;}if i二二Nprintf〃没有该天信息!\n〃;printf〃请重新选择!\n〃;f7;/*进入修改程序*/for;;printf〃=======H青选择=================\n/,;printf,z==============
0.返回主菜单二二二二二二二二二二二二二二二二二二二二=\n〃;printf〃========
1.修改该天信息==========\n〃;printf\n〃;scanf〃%d〃,b;switchbdefault:printf〃无此选项,请重新输入\n〃;break;case0:f7;case1:〃修改收入来源fp=fopen z,f:\\pan.txt〃,“w+〃;freadpeo[i],sizeofstruct people,1,fp;printf〃旧的信息为:\n〃;printf〃收入来源收入金额支出目的支出金额余额\n〃;printf〃%5s〃,peo[n].source;printf,z%3f〃,peo[n].get;printf〃%5s〃,peo[n].motive;printf〃%5f〃,peo[n].out;printf〃%3f\n〃,peo[n].leave;fscanf fp,〃%s〃,peo[n];printf〃请输入新的收入来源\n〃;scanf〃%s〃,peo[n].source;printf〃\n〃;〃修改收入金额printf〃请输入新的收入金额\n〃;scanf〃%f〃,peo[n].get;printf〃\n〃;〃修改支出目的printf〃请输入新的支出目的\\;scanf〃%s〃,peo[n].motive;printf〃\n〃;〃修改支出金额printf〃请输入新的支出金额\n〃;scanf〃%f〃,peo[n].out;printf〃\n〃;peo[n].leave=peo[n].get-peo[n].out;printf〃新的的信息为:\n〃;printf〃收入来源收入金额支出余额\n〃;目的支出金额printf〃%5sprintf〃%3f〃,peo[n].source;printf,z%5s〃,peo[n].get;printf〃%5f〃,peo[n].motive;printf〃%3f〃,peo[n].out;\n〃,peo[n].leave;fori=0;iN;i++if fwritepeo[i],sizeof struct people,1,fp!=1printf〃无法翻开!\n〃;exit0;}fclosefp;break;printf〃是否继续?y/n\n〃;scanf〃如〃,c;if c==,n,||c==,Nexit0;}F
3.cpp:#includez,stdio.h〃#include,zstdlib.h〃#include〃string.h〃#include〃f
2.h〃#includez,f
3.h〃#include〃f
4.h〃#include,,f
5.hz,#include〃f
6.h〃#includez,f
7.h〃extern struct people peo[SIZE];void f3int x,int y,int zintb,i,n,f lag=l;extern N;char c;FILE*fp;iffp=fopen〃f:\\pan.txt〃,〃r〃=NULL printf〃无法找到该文件!\n〃;exit0;/*检查是否有该信息*/fori=0;iN;i++if x二二peo[i].yeary=peo[i].monthz=peo[i].day n=i;break;}if i==N{printf〃没有该天信息!\n〃;printf〃请重新选择!\n〃;f7;/*进入删除程序*/for;;printf〃=青选择==================\,z;printf〃=返回主菜单n=========\n〃;printf z,==================l,册|J除该天信息========\n〃;printf〃===========================================\n〃;scanf〃断T,b;switchbdefault:printf〃无此选项,请重新输入\n〃;break;case0:f7;case1:fp=fopen,zf:\\pan.txt〃,〃w+〃;printf旧的信息为:\n〃;fori=0;iN;i++printf〃日期收入来源收入金额支出目的支出金额余额\n〃;printf,,%d%d%d,z,peo[i].year,peo[i].month,peo[i].day;printf〃%5s〃,peo[i].source;printf〃%3f〃,peo[i].get;printf z,%5s〃,peo[i].motive;printf〃%5f〃,peo[i].out;printf〃%3f\n〃,peo[i].leave;for i=n;iN;i++fscanffp,〃%s〃,peo[i];strcpypeo[i].source,peo[i+l].source;peo[i].year=peo[i+l].year;peo[i].month=peo[i+l].month;peo[i].day=peo[i+l].day;peo[i].get=peo[i+l].get;peo[i].out=peo[i+l].out;strcpy peo[i].motive,peo[i+1].motive;peo[i].leave=peo[i+l].leave;printf〃删除成功!\n〃;N=N-1;for i=0;iN;i++printf〃日期收入来源收入金额支出目的支出金额余额\n〃printf〃%2d%2d%2d z,,peo[i].year,peo[i].month,peo[i].day;printf〃%5s〃,peo[i].source;printf〃%3f〃,peo[i].get;printf〃%5s〃,peo[i].motive;printf〃%5f〃,peo[i].out;printf z,%3f\n〃,peo[i].leave;fori=0;iN;i++{iffwritepeo[i],sizeof structpeople,1,fp!=1printf无法翻开!\n〃;exit0;}fclose fp;break;printf〃是否继续?y/n\n〃;scanf〃如〃,c;if c==,n,||c--N,exit0;f
4.cpp#includez,stdio.h〃#includez,stdlib.h〃ttinclude^string.h〃#include,zf
2.h〃#include〃f
3.h〃#include〃f
4.h〃#include〃f
5.h〃#include,zf
6.h〃#include,zf
7.h〃extern structpeople peo[SIZE];extern N;void f4int i,b,n;char c;FILE*fp;iffp=fopen〃f:\\pan.txt〃,〃a〃=NULL{printf〃无法找到该文件!\n〃;exit0;for;;{printf〃==========================\n〃printf〃=============
0.返回主菜单=============\n〃printf z,=============
1.添力口信息二二二二二二二二二二二二二二二二二二\n〃printf〃=======================\n〃scanf%d〃,b;switch bdefault:printf〃无此选项,请重新输入\n〃;break;case0:f7;case1:/*进入添加程序*/fp二fopen〃f:\\pan.txt〃,〃rb〃;printf〃旧的信息为:\n〃;for i=0;iN;i++freadpeo[i],sizeofstruct people,1,fp;prinlf〃口期收入来源收入金额支出目的支出金额余额\n〃;〃,peo[i].year,peo[i].month,peo[i].printfz,%2d%2d%2dday;printf〃%5s〃,peo[i].source;printf〃%3f〃,peo[i].get;printf〃%5s〃,peo[i].motive;printf〃%5f〃,peo[i].out;printf〃%3f\n〃,peo[i].leave;}n=N;printf〃请输入新的信息日期:\n〃;scanf,z%d%d%dz,,peo[n].year,peo[n].month,peo[n].day;printf〃请输入新的信息收入金额和收入来源\n〃;scanf〃%f%s〃,peo[n].get,peo[n].source;printf〃请输入新的信息支出金额和支出目的\n〃;scanf〃%f%s,z,peo[n].out,peo[n].motive;peo[n].leave=peo[n].get-peo[n].out;N=N+l;printf〃=======现在的信息=======\n〃;for i=0;KN;i++printf〃日期收入来源收入金额支出目的支出金额余额\n〃;printf z,%2d%2d%2d z,,peo[i].year,peo[i].month,peo[i].day;printf〃%5s〃,peo[i].source;printf〃%3f〃,peo[i].get;printf〃%5s〃,peo[i].motive;printf〃%5f〃,peo[i].out;printf〃%3f\n〃,peo[i].leave;fp=fopen〃f:\\pan.txt〃,〃wb〃;for i=0;iN;i++{fwritepeo[i],sizeofstruct people,1,fp;fclose fp;break;printf〃是否继续y/n\n〃;scanf〃%s〃,c;if c==,n,||c==,N,exit0;}f
5.cpp:#includez,stdlib.h〃#include,zstring.h〃#include〃f
2.h〃#include,zf
3.h〃#include〃f
4.h〃
1.首先个人的财务信息里包括收支日期,收入金额、支出金额还有收入和支出的目的,还有账户余额因为是包括多个信息所以考虑到用结构体数组来储存这些信息,然后再把这些信息一起储存到文件中
2.该软件需要有六个功能,首先是登录功能,必须输入正确的用户名和密码才能使用软件第二是收支记录的管理,该局部包括添加功能,删除功能和修改功能第三是查询某天或某月的收支情况第四是统计一段时间的信息3,后面的收支功能,查询功能和统计功能都是从文件中读取,读取后存到结构体数组中,然后再进行操作,操作完后关闭文件,以免信息丧失
4.当用户名和密码输入错误,会提示你输入错误,请重新输入
5.如果是操作过程中输入错误,会回到最菜单重新操作
6.运行时用户可以根据提示进行操作,每进行一步操作,就会有相应的提示二.概要分析
1.程序中存储个人每天的财务信息用的是结构体数组,其中结构体中包括日期年月日,收入金额,支出金额,收入目的structpeople{int year;〃年份int month;//月份〃日期int day;〃收入金额〃float get;支出金额〃支float out;出目的〃收入char motive
[100];来源〃余额char source
[100];floatleave;}main函数{将三天的账户信息存储到文件中;提示用户输入用户名和密码,输入正确;进入邙;〃菜单项选择择函数switch{
1.修改信息;〃f2函数
2.添加信息;〃f3函数
3.删除信息;〃f4函数
4.查询信息;//f5函数
5.统计信息;〃f6函数第一层main函数第二层f7;第三层f2,f3,f4,f5,£6;调用时这些函数都可以通过f7函数来互相调用比方运行完f2函数后,可以调用f7,然后再调用f3函数
4.主函数添加信息到文件中和执行登录功能其他调用函数分别执行其他五大功能三.详细设计#include〃f
5.h〃#include〃f
6.h〃#include,zf
7.h〃extern structpeople peo[SIZE];extern N;void f5int x,int y,int zintb,i,n;char c;FILE*fp;iffp=fopen〃f:\\pan.txt〃,〃r〃=NULLprintf〃无法找到该文件!\n〃;exit0;/*检查是否有该信息*/fori=0;iN;i++|ifx==peo[i].yeary==peo[i].monthz==peo[i].day n二i;break;if i=Nprintf〃没有该天信息!\n〃;printf〃请重新选择!\n〃;f7;/*进入查询程序*/for;;printf〃==========请选择=========\n〃;printf---------------Q.返回主菜单=;printf/z===============l.查询该天信息;printf〃=======================\n〃;scanf〃%d〃,b;switch bfreadpeo[n],sizeofstruct people,1,fp;default:printf〃无此选项,请重新输入:\n〃;break;case0:f7;case1:printf(〃收入来源收入金额支出目的支出金额余额\n〃);printf〃%5s〃,peo[n].source;printf z,%3f〃,peo[n].get;printf〃%5s〃,peo[n].motive;printf%5f〃,peo[n].out;printf〃%3f〃,peo[n].leave;break;printf〃是否继续y/n\n〃;scanf〃%s〃,c;if(c二二n,exit0;fclose fp;F
6.cpp ttinclude^stdio.h〃#include/zstdlib.h〃#includez,string.h〃#include〃f
2.h〃#include〃f
3.h〃#includez,f
4.h〃#include,zf
5.h〃#include〃f
6.h〃#include〃f
7.h〃extern structpeoplepeo[SIZE];extern N;void f6int x,int y,int z,int xl,int yl,int zlintb,i,n,m,f lag=l;float sum;char c;FILE*fp;iffp=fopen〃f:\\pan.txt〃,〃r〃=NULL printf〃无法找到该文件!\n〃;exit0;/*检查是否有该信息*/fori=0;iN;i++ifx==peo[i].yeary==peo[i].monthz==peo[i].dayn二i;break;ifi==N{printf〃没有该段时间信息!\n〃;printf〃请重新选择!\n〃;f7;fori=0;iN;i++{if xl=peo[i].yearyl=peo[i].monthzl=peo[i].day m=i;break;ifi==N|printf〃没有该段时间信息!\n〃;printf〃请重新选择!\n〃;f7;/*进入统计程序*/fp=fopen,zf:\\pan.txt〃,〃r〃;whileflag==l{printf/,======================i#^#==========================\n/,printf,z==================0,返回主菜单=============\n〃printf〃=========
1.统计该段时间收入金额=======\n〃printf〃==================
2.统计该段时间支出金额==============\n〃printf〃二二=二二二=二二二二二二二二
3.统计该段时间余额==========\n〃printf/z scanf%d〃,b;switch b{freadpeo[i],sizeofstruct people,1,fp;default:printf〃无此选项,请重新输入:\n〃;break;case0:f7;case1:if nmfor i=n,sum=0;i=m;i++sum+=peo[i].get;printf〃%f〃,sum;fclosefp;break;elsefor i=m,sum=0;i=n;i++sum+=peo[i].get;printfsum;fclose fp;break;case2:ifnmfori=n,sum=0;i=m;i++sum+=peo[i].out;printfsum;fclosefp;break;}elsefor i=m,sum=0;i=n;i++sum+=peo[i].out;}printf〃%f〃,sum;fclosefp;break;}case3:ifnmfori=n,sum=0;i=m;i++sum+=peo[i].leave;printfsum;fclose fp;break;}elsefor i=m,sum=0;i=n;i++sum+=peo[i].leave;}printfsum;fclose fp;break;}}printf〃是否继续y/n\n,z;scanf〃%s〃,c;if c==,n,||c==,N,exit0;}f
7.cpp:ttinclude^stdio.h〃#include/zstdlib.h〃#includez,string.h〃#include〃f
2.h〃#include〃f
3.h〃#includez,f
4.h〃#include,zf
5.h〃#include〃f
6.h〃#include〃f
7.h〃void f7int flag,x,y,z,xl,yl,zl;printfprintf//======================1:修改信息=========\n〃printf,,======================2:^==================\z,printf,/======================3:添力口信息n-=========\n〃printf〃====================4查询信息=================\n〃printf〃二二二二二二二二二二二二二二二二二二二二二二5:统计信息二二二二二二二二二二二二二二二二二二\n〃printf//==================================================\n/,printf请选择:;scanf〃%d〃,flag;while flag!=0switchflagdefault:printf〃此选项不存在,请重新输入\n〃;break;case1:printf〃请输入您要修改的日期\n〃;scanf z/%d%d%d〃,x,y,z;f2x,y,z;break;case2:printf〃请输入您要删除的日期:\n〃;scanf〃%d%d%d〃,x,y,z;f3x,y,z;break;case3:f4;break;case4:printf〃请输入您要查询的日期\n〃;scanf〃%d%d%d〃,x,y,z;f5x,y,z;break;case5:printf〃请输入您要统计的两个日期\n〃;scanf C%d%d%d%d%d%dz,,x,y,z,xl,yl,zl;f6x,y,z,xl,yl,zl;break;}}
1、根本数据类型操作a)存储每天账户信息的数组结构体structpeople{int year;int month;int day;float get;float out;char motive
[100];char source
[100];float leave;)b)控制结构体数目的extern N刚开始运行该程序时,N的初始值为3,后来如果进行添加操作,则N的值就会加1,反之如果进行删除操作,则N的值就会减
12、流程图main函数
3、根本操作的算法描述a登录功能用户只有在输入正确的用户名和密码后才能进入系统进行操作for;;printf〃======请输入用户名和密码=======\n〃;printf〃用户名〃;scanf〃%d〃,a;//a表示用户名printf〃\n〃;printf〃密码:〃;〃13表示密码scanf〃%d〃,b;printf〃\n〃;if a=10201306b=l〃输入和条件一致的情况下进入if语句中printf〃=======恭喜输入正确,登录成功!===\n〃;printf〃该软件中已存有2010年1月1号到3号的信息!\n〃;else〃输入和条件不一致就进入else语句printf〃输入错误,请重新输入!\n〃;b主菜单功能用户可以自行选择要进行的操作printf〃二二二二二二二二二二二二二二二二二二=1修改信息printf//======================2:删除信息=========\n〃printf^----------------------3添加信息==========\n〃printf//======================4:查询信息==========\n〃printf〃====================5:统计信息==============\n〃printf〃请选择:〃;〃在屏幕上输出,指示用户操作scanf〃%d〃,flag;〃输入用户的选项并存在flag中while flag!=0{switchflagdefault:printf此选项不存在,请重新输入\n〃;break;case1:f2x,y,z;〃进入修改函数break;case2:f3x,y,z;〃进入删除函数break;case3:f4;〃进入添加函数break;case4:f5x,y,z;〃进入查询函数break;case5:f6x,y,z,xl,yl,zl;〃进入统计函数break;c修改功能用户如果觉得存储的信息有问题,可以在此进行修改fp=fopen,zf:\\pan.txt〃,〃w+〃;for i=0;KN;i++freadpeo[i],sizeof structpeople,1,fp;ifx==peo[i].yeary==peo[i].monthz==peo[i].dayn二i;〃查看是否有该天的信息存在break;}}if i二二N{printf〃没有该天信息!\n〃;printf〃请重新选择!\n〃;f7;fread peo[i],sizeof structpeople,1,fp;〃先从文件中读出printf〃请输入新的收入来源\n〃;scanf〃如〃,peo[n].source;printf〃请输入新的收入金额\n〃;scanf peo[n].get;printf〃请输入新的支出目的\n〃;scanf〃%s〃,peo[n].motive;入新的支出金额\n〃;scanf〃%f〃,peo[n].out;peo[n].leave=peo[n].get-peo[n].out;〃输入新的信息fori=0;iN;i++printf〃请输iffwritepeo[i],sizeof structpeople,1,fp!=1printf〃无法翻开!\n〃;exit0;fclosefp;〃把新的信息存储到文件当中,并关闭文件d删除功能用户可以在此删除不需耍的信息fp=fopenz,f:\\pan.txt〃,〃w+〃;〃翻开文件fori=0;iN;i++freadpeo[i],sizeofstruct people,1,fp;ifx==peo[i].yeary==peo[i].monthz==peo[i].dayn二i;〃查看是否有该天的信息存在break;ifi二二N printf〃没有该天信息!\n〃;printf〃请重新选择!\n〃;fori=n;iN;i++fscanf fp,〃%s〃,peo[i];〃将文件中的信息存到数组结构体里strcpypeo[i].source,peo[i+l].source;peo[i].year=peo[i+l].year;peo[i].month=peo[i+l]・month;peo[i].day=peo[i+l].day;peo[i].get=peo[i+l].get;peo[i].out=peo[i+l].out;strcpy peo[i].motive,peo[i+l].motive;peo[i].leave=peo[i+l],leave;〃用后面的信息覆盖前面的信息N二NT;〃删除后信息减少一组,所以N要减1fori=0;iN;i++{iffwritepeo[i],sizeofstruct people,1,fp!=1printf无法翻开!\n〃;exit0;fclosefp;〃将现有信息重新存回到文件中e添加功能用户可以在此添加新的账户信息fp=fopen,,f:\\pan.txt〃,〃rb〃;〃先翻开文件fread peo[i],sizeof structpeople,1,fp;〃将文件信息存到结构体数组里n二N;〃添加到结构体数组的末尾printf〃请输入新的信息日期\n〃;scanf z,%d%d%d,z,peo[n].year,peo[n].month,peo[n].day;printf〃请输入新的信息收入金额和收入来源\n〃;scanf〃%f%s〃,peo[n].get,peo[n].source;pi、intf〃请输入新的信息支出金额和支出目的\n〃;scanf〃%f%sz/,peo[n].out,peo[n].motive;peo[n].leave=peo[n].get-peo[n].out;〃输入新的信息到结构体中N=N+1;〃添加了新的数据所以N的值加1fp=fopen,zf:\\pan.txt〃,〃wb〃;fori=0;iN;i++fwitepeo[i],sizeofstruct people,1,fp;fclose fp;〃将新的一组结构体信息写到文件里f查询功能用户可以在此查询以前存有的账户信息fopen〃f:\\pan.txt〃,〃r〃;for i=0;iN;i++freadpeo[i],sizeofstruct people,1,fp;if x==peo[i].yeary=peo[i].monthz==peo[i].dayn二i;〃查看是否有该天的信息存在break;if i=Nprintf(〃没有该天信息!\n〃);printf(〃请重新选择!\n〃);f7();fread(peo[n],sizeof(structpeople),1,fp);〃将数据存到结构体数组中printf(〃收入来源收入金额支出目的支出金额余额\n〃);printf〃%5s〃,peo[n],source;printf〃%3f〃,peo[n].get;printf/z%5s〃,peo[n].motive;printf〃%5fpeo[n].out;printf〃%3f,z,peo[n].leave;〃输出您要查询的该天信息fclose fp;〃关闭文件防止信息丧失g)统计功能用户可以在此统计一段时间内的收入金额和支出金额for(i=0;iN;i++)freadpeo[i],sizeof structpeople,1,fp;ifx==peo[i].yeary==peo[i].monthz==peo[i].day〃查看是否有该天的信息存在break;}}if(i二二N)(printf(〃没有该天信息!\n〃);printf(〃请重新选择!\n〃);fori=0;iN;i++freadpeo[i],sizeofstruct people,1,fp;if xl-peo[i].yearyl==peo[i].monthzl==peo[i].day m=i;〃查看是否有该天的信息存在break;}if i二二Nprintf〃没有该天信息!\n〃;printf〃请重新选择!\n〃;如果存在该段时间信息,那么统计收入金额ifnm{fori=n,sum=0;i=m;i++sum+=peo[i].get;printfsum;fclose fp;break;elsefori=m,sum=0;i=n;i++sum+=peo[i].get;printf〃%f〃,sum;fclosefp;break;如果统计支出金额,只需将peo[i].get改为peo[i].out就行
3、各函数的调用关系图main函数I f7函数III!If2函数f3函数f4函数f5函数f6函数I f7函数四.调试分析
1.开始时没有将N定义为全局变量,导致在添加函数中N+1后,其他函数中的N却没有改变,导致最后查询的信息不完整
2.开始时没有将主菜单单独存到一个函数里面,这样就无法一次运行多个功能,最后将主菜单单独存到一个函数里以后,就可以在运行完一个功能之后,重新选择,这样就可以在一次调试中,运行所有的功能模块,减少了很多麻烦
3.第一次调试运行时,文件中没有存储任何的信息,所以每次进入都必须先要输入一定量的数据,然后才能进行下面的操作,后来加以改善,先在文件中存储几天的账户信息,这样在运行时就可以直接进行查询,修改,删除等操作了
4.第一次检查时,由于对文件的操作不是很熟练,发现了添加的数据并没有存储到文件之中,最后经过修正,参加了一个fwrite将信息写到了文件里五.用户手册
1、本程序的运行环境为DOS操作系统,执行文件为;
2、进入演示程序后,即显示对话形式的提示操作过程,如请输入用户名和密码,输入正确后便进入菜单项选择择请输入你的选项,输入选项后,如果选项不存在,会提示你选项不存在,请重新选择输入正确选项后,便会提示你输入日期如果进入的是修改函数,就会继续提示你输入新的信息;如果进入的时添加函数,会让你输入新的账户信息;如果进入的是删除函数,再删除完后会提示你删除成功;如果进入的时查询函数,会输出你要查询的当天账户信息;如果进入的统计函数,会提示你选择将要统计的信息
3、如果用户不小心进错了功能,可以输入0来返回主菜单,重新选择
4、进行完上面的操作之后,会提示用户是否继续运行该程序来进行其他的功能操作按n或N键stop或其它键继续六.测试数据====4青输入用户名和密码=======用户名10201306密码1恭喜输入正确,登录成功!1修改信息2:删除信息3:添加信息4:查询信息5:统计信息a)请选择:1请输入您要修改得日期201011请选择1。
个人认证
优秀文档
获得点赞 0