个人财务管理软件用户手册5339.docx
个人财务务管理软软件报告告目录一、需求求分析22388911一、 需求分析析 11.首先先个人的的财务信信息里包包括收支支日期,收收入金额额、支出出金额还还有收入入和支出出的目的的,还有有账户余余额。因因为是包包括多个个信息所所以考虑虑到用结结构体数数组来储储存这些些信息,然然后再把把这些信信息一起起储存到到文件中中。2. 该软件需需要有六六个功能能,首先先是登录录功能,必必须输入入正确的的用户名名和密码码才能使使用软件件。第二二是收支支记录的的管理,该该部分包包括添加加功能,删删除功能能和修改改功能。第三是是查询某某天或某某月的收收支情况况。第四四是统计计一段时时间的信信息。3. 后面的收收支功能能,查询询功能和和统计功功能都是是从文件件中读取取,读取取后存到到结构体体数组中中,然后后再进行行操作,操操作完后后关闭文文件,以以免信息息丢失。4. 当用户名名和密码码输入错错误,会会提示你你输入错错误,请请重新输输入。5. 如果是操操作过程程中输入入错误,会会回到最最菜单重重新操作作。6. 运行时用用户可以以根据提提示进行行操作,每每进行一一步操作作,就会会有相应应的提示示。二 概要分析析 1.程序中中存储个个人每天天的财务务信息用用的是结结构体数数组,其其中结构构体中包包括:日日期(年年月日),收收入金额额,支出出金额,收收入目的的。 strructt peeoplleintt yeear; /年年份intt moonthh; /月月份intt daay; /日期flooat gett; /收收入金额额flooat outt; /支出金金额chaar mmotiive1000; /支支出目的的chaar ssourrce1000;/收收入来源源flooat leaave;/余余额 22.本程程序各函函数的结结构mainn函数 将将三天的的账户信信息存储储到文件件中; 提提示用户户输入用用户名和和密码,输输入正确确; 进进入f77();/菜菜单选择择函数 sswittch() 1.修修改信息息; /f2()函数数2. 添加信息息;/ff3()函数3. 删除信息息;/ff4()函数4. 查询信息息;/ff5()函数5. 统计信息息;/ff6()函数 3.各模块块的调用用关系 第一一层:mmainn 函数数 第第二层:f7(); 第三三层:ff2() , f33(), ff4(), f5(), f66();调用时这这些函数数都可以以通过ff7()函函数来互互相调用用。比如如运行完完f2()函函数后,可可以调用用f7(),然然后再调调用f33()函函数。 4.主函数数:添加加信息到到文件中中和执行行登录功功能。 其他调调用函数数分别执执行其他他五大功功能。三 详细设计计1、 基本数据据类型操操作a) 存储每天天账户信信息的数数组结构构体struuct peoopleeintt yeear;intt moonthh;intt daay;flooat gett;flooat outt;chaar mmotiive1000;chaar ssourrce1000;flooat leaave; b)控控制结构构体数目目的exxterrn NN刚开始运运行该程程序时,NN的初始始值为33,后来来如果进进行添加加操作,则则N的值值就会加加1,反反之如果果进行删删除操作作,则NN的值就就会减11。 start2、 流程图 maiin函数数:int i,a,b i=0i<Nny将信息存到文件中 i+输入用户名和密码输入正确nF7()函数进入添加函数f4()进入删除函数f3()进入修改函数f2()菜单选择函数f7()y进入查询函数f5() end进入统计函数f6()3、基本本操作的的算法描描述 aa)登录录功能:用户只只有在输输入正确确的用户户名和密密码后才才能进入入系统进进行操作作。 foor(;) priintff("=请请输入用用户名和和密码:=n");prrinttf(""用户名名:"); sccanff("%d",&a); /a表表示用户户名prrinttf(""n"");prrinttf(""密码:"); /b表表示密码码sccanff("%d",&b);prrinttf(""n""); if(a=1022013306&&&b=1) /输入和和条件一一致的情情况下进进入iff语句中中 pprinntf("=恭恭喜输入入正确,登登录成功功!=n"");pprinntf("该软软件中已已存有220100年1月月1号到到3号的的信息!n""); ellse /输输入和条条件不一一致就进进入ellse语语句pprinntf("输入入错误,请请重新输输入!n"); b)主主菜单功功能:用用户可以以自行选选择要进进行的操操作 pprinntf("=11:修改改信息=n"); pprinntf("=22:删除除信息=n"); pprinntf("=33:添加加信息=n"); pprinntf("=44:查询询信息=n"); pprinntf("=55:统计计信息=n"); pprinntf("请选选择:"");/在在屏幕上上输出,指指示用户户操作 sscannf(""%d"",&fflagg); /输入用用户的选选项并存存在fllag中中 wwhille( flaag != 00) swwitcch(fflagg) ddefaaultt: pprinntf("此选选项不存存在,请请重新输输入:n");brreakk; ccasee 1: f22(x,y,zz); /进入修修改函数数 brreakk; ccasee 2: f33(x,y,zz); /进入删删除函数数 brreakk; ccasee 3: f44();/进进入添加加函数 bbreaak; ccasee 4: f55(x,y,zz);/进进入查询询函数 brreakk; ccasee 5: f66(x,y,zz,x11,y11,z11);/进进入统计计函数 brreakk; cc)修改改功能:用户如如果觉得得存储的的信息有有问题,可可以在此此进行修修改fp=ffopeen(""f:paan.ttxt"","ww+");for(i=00;i<<N;ii+)frreadd(&ppeoi,sizzeoff(sttrucct ppeopple),1,fp);iff(x=peeoii.yyearr&&yy=ppeoi.monnth&&&z=peeoii.dday) nn=i; /查看是是否有该该天的信信息存在在 brreakk;if(i=N)prrinttf(""没有该该天信息息!nn");prrinttf(""请重新新选择!n"");f77();freaad(&&peooi,siizeoof(sstruuct peooplee),11,fpp);/先从从文件中中读出prinntf("请输输入新的的收入来来源nn"); sscannf(""%s"",peeonn.ssourrce); priintff("请请输入新新的收入入金额n"); sscannf(""%f"",&ppeon.gett); priintff("请请输入新新的支出出目的n"); scaanf("%ss",ppeon.mottivee); priintff("请请输入新新的支出出金额n"); scaanf("%ff",&&peoon.ouut);peoon.leeavee=peeonn.gget-peoon.ouut;/输入入新的信信息 forr(i=0;ii<N;i+)if(fwrritee(&ppeoi,sizzeoff(sttrucct ppeopple),1,fp)!=11)priintff("无无法打开开!nn");exiit(00);ffcloose(fp);/把新的的信息存存储到文文件当中中,并关关闭文件件 d) 删除功功能:用用户可以以在此删删除不需需要的信信息 fp=foppen("f:ppan.txtt",""w+"");/打开开文件 forr(i=0;ii<N;i+)frreadd(&ppeoi,sizzeoff(sttrucct ppeopple),1,fp);iff(x=peeoii.yyearr&&yy=ppeoi.monnth&&&z=peeoii.dday) nn=i; /查看是是否有该该天的信信息存在在 brreakk;if(i=N)prrinttf(""没有该该天信息息!nn");prrinttf(""请重新新选择!n"");for(i=nn;i<<N;ii+)fsccanff(fpp,"%s",&peeoii);/将将文件中中的信息息存到数数组结构构体里strccpy(peooi.soourcce,ppeoi+11.ssourrce);peeoii.yyearr=peeoii+1.yeear;ppeoi.monnth=peooi+1.monnth;ppeoi.dayy=peeoii+1.daay; peooi.geet=ppeoi+11.gget;peoi.outt=peeoii+1.ouut;strccpy(peooi.mootivve,ppeoi+11.mmotiive); ppeoi.leaave=peooi+1.leaave;/用用后面的的信息覆覆盖前面面的信息息N=N-1;/删除除后信息息减少一一组,所所以N要要减1for(i=00;i<<N;ii+)if(ffwriite(&peeoii,ssizeeof(strructt peeoplle),1,ffp)!=1)priintff("无无法打开开!nn");exiit(00); fcclosse(ffp);/将将现有信信息重新新存回到到文件中中 e)添加功功能:用用户可以以在此添添加新的的账户信信息fp=ffopeen(""f:paan.ttxt"","rrb");/先打开开文件freaad(&&peooi,siizeoof(sstruuct peooplee),11,fpp);/将文文件信息息存到结结构体数数组里n=N; /添加加到结构构体数组组的末尾尾prinntf("请输输入新的的信息日日期:n");scannf(""%d %d %d"",&ppeon.yeaar,&&peoon.moonthh,&ppeon.dayy); priintff("请请输入新新的信息息收入金金额和收收入来源源:nn"); scaanf("%ff %ss",&&peoon.geet,ppeon.souurcee); priintff("请请输入新新的信息息支出金金额和支支出目的的:nn"); scaanf("%ff %ss",&&peoon.ouut,ppeon.mottivee); peoon.leeavee=peeonn.gget-peoon.ouut; /输入新新的信息息到结构构体中 NN=N+1; /添加了了新的数数据所以以N的值值加1 ffp=ffopeen(""f:paan.ttxt"","wwb"); ffor(i=00;i<<N;ii+)ffwitte(&&peooi,siizeoof(sstruuct peooplee),11,fpp);fcclosse(ffp);/将将新的一一组结构构体信息息写到文文件里 ff) 查询功功能:用用户可以以在此查查询以前前存有的的账户信信息fopeen(""f:paan.ttxt"","rr"); forr(i=0;ii<N;i+)ffreaad(&&peooi,siizeoof(sstruuct peooplee),11,fpp);iif(xx=ppeoi.yeaar&&&y=peooi.moonthh&&zz=ppeoi.dayy) n=ii; /查看看是否有有该天的的信息存存在 bbreaak;iff(i=N)pprinntf("没有有该天信信息!n");pprinntf("请重重新选择择!nn");ff7();freaad(&&peoon,siizeoof(sstruuct peooplee),11,fpp);/将数数据存到到结构体体数组中中prinntf("收入入来源 收入金金额 支支出目的的 支出出金额 余余额nn");prinntf("%55s ",peoon.soourcce);prinntf("%33f ",ppeon.gett);prinntf("%55s "",peeonn.mmotiive);prinntf("%55f ",ppeon.outt);prinntf("%33f ",ppeon.leaave);/输出您您要查询询的该天天信息 ffcloose(fp); /关闭文文件防止止信息丢丢失 g)统统计功能能:用户户可以在在此统计计一段时时间内的的收入金金额和支支出金额额 ffor(i=00;i<<N;ii+)frreadd(&ppeoi,sizzeoff(sttrucct ppeopple),1,fp);iff(x=peeoii.yyearr&&yy=ppeoi.monnth&&&z=peeoii.dday) nn=i; /查看是是否有该该天的信信息存在在 brreakk;if(i=N)prrinttf(""没有该该天信息息!nn");prrinttf(""请重新新选择!n""); forr(i=0;ii<N;i+)frreadd(&ppeoi,sizzeoff(sttrucct ppeopple),1,fp);iff(x11=ppeoi.yeaar&&&y1=peeoii.mmontth&&&z1=peeoii.dday) mm=i; /查看是是否有该该天的信信息存在在 brreakk;if(i=N)prrinttf(""没有该该天信息息!nn");prrinttf(""请重新新选择!n""); 如果存在在该段时时间信息息,那么么统计收收入金额额:if(nn<m) forr(i=n,ssum=0;ii<=mm;i+) summ+=ppeoi.gett; priintff("%f",summ);ffcloose(fp); breeak;elsse forr(i=m,ssum=0;ii<=nn;i+)summ+=ppeoi.gett; priintff("%f",summ);ffcloose(fp);bbreaak;如果统计计支出金金额,只只需将ppeoi.gett改为ppeoi.outt就行。 3、各各函数的的调用关关系图 maain函函数 f7()函函数 ff2()函数 f3()函数数 ff4()函数 f55()函函数 f66()函函数 f77()函函数 四 调试分析析1. 开始时没没有将NN定义为为全局变变量,导导致在添添加函数数中N+1后,其其他函数数中的NN却没有有改变,导导致最后后查询的的信息不不完整。2. 开始时没没有将主主菜单单单独存到到一个函函数里面面,这样样就无法法一次运运行多个个功能,最最后将主主菜单单单独存到到一个函函数里以以后,就就可以在在运行完完一个功功能之后后,重新新选择,这这样就可可以在一一次调试试中,运运行所有有的功能能模块,减减少了很很多麻烦烦。3. 第一次调调试运行行时,文文件中没没有存储储任何的的信息,所所以每次次进入都都必须先先要输入入一定量量的数据据,然后后才能进进行下面面的操作作,后来来加以改改善,先先在文件件中存储储几天的的账户信信息,这这样在运运行时就就可以直直接进行行查询,修修改,删删除等操操作了。4. 第一次检检查时,由由于对文文件的操操作不是是很熟练练,发现现了添加加的数据据并没有有存储到到文件之之中,最最后经过过修正,加加入了一一个fwwritte将信信息写到到了文件件里。五用户户手册 1、本本程序的的运行环环境为DDOS操操作系统统,执行行文件为为f1.dsww; 2、 进入演演示程序序后,即即显示对对话形式式的提示示操作过过程, 如:请请输入用用户名和和密码,输输入正确确后便进进入菜单单选择 请输输入你的的选项, 输入入选项后后,如果果选项不不存在,会会提示你你选项不不存在,请请重新选选择。 输入入正确选选项后,便便会提示示你输入入日期。如果进进入的是是修改函函数,就就会继续续提示你你输入新新的信息息;如果果进入的的时添加加函数,会会让你输输入新的的账户信信息;如如果进入入的是删删除函数数,再删删除完后后会提示示你删除除成功;如果进进入的时时查询函函数,会会输出你你要查询询的当天天账户信信息;如如果进入入的统计计函数,会会提示你你选择将将要统计计的信息息。3、 如如果用户户不小心心进错了了功能,可可以输入入0来返返回主菜菜单,重重新选择择。4、进行行完上面面的操作作之后,会会提示用用户是否否继续运运行该程程序来进进行其他他的功能能操作 按n或或N键键 sttop或或其它键键继续六测试试数据 =请输入入用户名名和密码码:= 用用户名:1022013306密码:11恭喜输入入正确,登登录成功功!1:修改改信息 2:删删除信息息3:添添加信息息 4:查询信信息 55:统计计信息 a)请请选择:1 请输入入您要修修改得日日期:220100 1 1 0.返返回主菜菜单 1.修修改该天天信息 请选择择 1 旧的的信息为为:20010 1 11 10000.00000000 收入入1 1100.00000000 支出出1 请输入入新的信信息:收收入金额额 11100 收入来来源 aaaa 支出金金额 2200 支出目目的 bbbb。修改成功功!新的信息息为 220100 1 1 111000.00000000 aaaa 2000.000000000 bbbb b)请请选择:2 请输入入您要删删除的日日期:220100 1 1 0.返返回主菜菜单 1.删删除该天天信息请选择:1 旧的的信息为为: 20010 1 11 10000.00000000 收入入1 1100.00000000 支出出1 220100 1 2 220000.00000000 收收入2 2000.00000000 支支出2 20010 1 33 30000.00000000 收入入3 3300.00000000 支出出3 删除成功功!新的信息息为: 220100 1 2 220000.00000000 收收入2 2000.00000000 支支出2 20010 1 33 30000.00000000 收入入3 3300.00000000 支出出3 是是否继续续 y/n n preess anyy keey tto cconttinuue c)请选择择:3 0.返返回主菜菜单 1.添加一一天的账账户信息息请选择:1旧的信息息为: 220100 1 1 110000.00000000 收收入1 1000.00000000 支支出1 220100 1 2 220000.00000000 收收入2 2000.00000000 支支出2 20010 1 33 30000.00000000 收入入3 3300.00000000 支出出3 请输入新新的信息息:20010 1 44 440000 收入入4 4400 支出44添加成功功!新的信息息为:220100 1 1 110000.00000000 收收入1 1000.00000000 支支出1 220100 1 2 220000.00000000 收收入2 2000.00000000 支支出2 20010 1 33 30000.00000000 收入入3 3300.00000000 支出出3 20010 1 44 40000.00000000 收入入4 4400.00000000 支出出4 是否继继续 yy/n n preess anyy keey tto cconttinuued)请选选择:44 请输输入您要要查询得得日期:20110 11 1 0.返返回主菜菜单 1.查查询该天天信息 请选择择 120100 1 1 110000.00000000 收收入1 1000.00000000 支支出1 是是否继续续 y/n n preess anyy keey tto cconttinuue ee)请选选择: 5 请输入你你要统计计的两个个日期:20110 11 1 20110 11 3 0.返返回主菜菜单 1.统统计该段段时间的的收入金金额2. 统计该段段时间的的支出金金额3. 统计该段段时间的的余额 请选择择 1. 60000.00000000 2. 6000.00000000 3. 554000.00000000是否继续续 y/n n ppresss aany keyy too coontiinuee七附录录 1、源程序序函数清清单 主函数数:f11() 修改函函数:ff2()删除函数数:f33()添加函数数:f44()查询函数数:f55()统计函数数:f66()主菜单函函数:ff7() 2、源程序序代码 f1.cppp: #inncluude""stddio.h"#inccludde"sstdllib.h"#inccludde"sstriing.h"#inccludde"ff2.hh"#inccludde"ff3.hh"#inccludde"ff4.hh"#inccludde"ff5.hh"#inccludde"ff6.hh"#inccludde"ff7.hh"struuct peooplee peeoSSIZEE;int N=33;voidd maain() intt i,a,bb; chhar d110="收收入1"",d22100=""收入22",dd3110="收入入3",e110="支支出1",e210="支支出2"",e33100=""支出33" FIILE *fpp; /*输入三三天的账账户信息息*/ ppeo0.yeaar=220100;peeo00.mmontth=11;peeo00.dday=1; sttrcppy(ppeo0.souurcee,d11);peoo0.geet=110000; sttrcppy(ppeo0.mottivee,e11);ppeo0.outt=1000; peeo00.lleavve=ppeo0.gett-peeo00.oout; peeo11.yyearr=20010;peoo1.moonthh=1;peoo1.daay=22; sttrcppy(ppeo1.souurcee,d22);ppeo1.gett=20000;strccpy(peoo1.mootivve,ee2);peoo1.ouut=2200;peo1.leaave=peoo1.geet-ppeo1.outt; peeo22.yyearr=20010;peoo2.moonthh=1;peoo2.daay=33; sttrcppy(ppeo2.souurcee,d33);ppeo2.gett=30000; sttrcppy(ppeo2.mottivee,e33);ppeo2.outt=3000; peeo22.lleavve=ppeo2.gett-peeo22.oout;/*把数数据写入入文件*/ fp=foppen("f:ppan.txtt",""w");forr(i=0;ii<N;i+)iif(ffwriite(&peeoii,ssizeeof(strructt peeoplle),1,ffp)!=1)priintff("无无法打开开!nn");exiit(00); ffcloose(fp);/*菜单单选择功功能*/ prrinttf(""=个人账账户管理理软件=n""); prrinttf(""=设计人人:潘君君宇=nn"); prrinttf(""n""); prrinttf(""n""); prrinttf(""请登录录:nn"); ffor(;) priintff("=请请输入用用户名和和密码:=n");pprinntf("用户户名:""); scaanf("%dd",&&a);pprinntf("nn");pprinntf("密码码:");sscannf(""%d"",&bb);pprinntf("nn"); if(a=1022013306&&&b=1) pprinntf("=恭恭喜输入入正确,登登录成功功!=nn");pprinntf("=该软软件中已已存有220100年1月月1号到到3号的的信息!=n"); ff7(); eelseepriintff("输输入错误误,请重重新输入入!n