工学系课程设计报告_第1页
工学系课程设计报告_第2页
工学系课程设计报告_第3页
工学系课程设计报告_第4页
工学系课程设计报告_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录目录一、系统开发的背景一、系统开发的背景.1二、系统分析与设计二、系统分析与设计.1(一)(一)系统功能要求系统功能要求.1(二)(二)系统模块结构设计系统模块结构设计.1三、系统的设计与实现三、系统的设计与实现.3(一)(一)学生收支录入:学生收支录入:enterenter()().3(二)(二)学生收支查询:学生收支查询:searchsearch()().6(三)(三)学生收支修改:学生收支修改:reviserevise ()().9(四)(四)学生收支总览:学生收支总览:allall()().12(六)(六)数据重置数据重置resettingresetting()() .17(七)(

2、七)数据保存数据保存savesave()() .18(八)(八)自动打开数据自动打开数据openopen()() .18四、系统测试四、系统测试.19(一)(一)测试测试mainmain()()函数函数 .19(二)(二)测试测试enterenter()函数()函数.19(三)(三)测试收支查询函数测试收支查询函数searchsearch()().21(四)(四)测试收支总览测试收支总览allall()().23(五)(五)测试支出排名测试支出排名rankingranking()().23(六)(六)测试数据保存测试数据保存savesave()() .24(七)(七)测试数据重置测试数据重置r

3、esettingresetting()() .24五、总结五、总结.25六、附件(代码、部分图表)六、附件(代码、部分图表).25学生综合测评系统学生综合测评系统一、一、系统开发的系统开发的背景背景为了能让学生更好的了解自己的收支情况,更好的控制开销。因此用c 语言编写了这个学生个人开支系统。二、系统分析与设计二、系统分析与设计(一)(一) 系统功能要求系统功能要求可以录入学生某月的收入和支出情况,用户可以修改和查询某月收支情况,当录入结束,用户可以选择保存。1、 当月总收入为:当月收入加上月结余。2、 当月支出为包括伙食费、日常用品费、娱乐费、水电费、通讯费及车费和其他费用。3、 录入、查询

4、、修改、总览、排名、重置、保存和退出 8 样功能。4、 本程序开始时能自动读取存档。修改后可以选择保存。(二)(二) 系统模块结构设计系统模块结构设计通过对系统功能的分析,学生个人收支系统功能如图 x 所示。图 1 学生个人收支功能图通过上图的功能分析,把整个系统划分为 8 个模块:1、 学生当月收支录入,借助函数 enter()开始先。在函数 enter()中,收入(收入外加上月结余)录入借助 income(),支出(伙食费、娱乐费、生活用品费、水电费、通讯费及车费和其他费用)的录入借助 pay()函数。2、 学生收支查询,借助函数 search() ,该模块主要实现,某月收支查询,用户输入

5、月份即可查询出当月的收入、支出和结余明细。收入直接输出,而支出则调用函数 search0() ,结余则直接输出3、 学生收支修改,可以修改学生某月的收入和支出。借助函数revise()实现。在 revise()函数中又借助 inrevise()修改收入,payrevise()修改支出。4、 学生收支总览,借助函数 all(),输出全年所有月份的收入、支学生个人收支系统收支录入收支查询收支总览数据重置数据保存退出收支修改收支排名出和结余。5、 学生收支排名,借助函数 ranking(),该模块主要实现对月和年支出项目大小的排序。月支出排名借助 ranking_0()函数,年排名借助ranking

6、_1 函数。6、 数据的重置借助函数 resetting()来实现,将所有数据清零。该函数会在运行时提示用户输入“resetting” ,如果输入正确则执行重置功能。如果错误则返回主函数。7、 保存功能借助函数 save(),该模块实现了对当前用户数据的保存。8、 在程序开始时,借助函数 open()自动读取数据。三、系统的设计三、系统的设计与实现与实现(一)(一) 学生收支录入:学生收支录入:enterenter()()分析:首先提示用户输入月份,然后收入录入借助函数 income() ,支出录入借助函数 pay() 。最后自动计算结余。每录入一项询问用户是否正确。流程图如图 2 所示。图

7、2:enter()流程图yn输出上月结余输入本月收入输入本月支出开始month=0&month12|monthn);goto error_0;income(month);pay(month);void income(int month_0)char c;printf(nn *n);printf( %-2d 月收入录入n,month_0);printf( *n);for(;)if(month_0!=1)printf( 上月结余:%5.1fn,ipmonth_0-2.e);printf( 本月收入:);scanf(%f,&ipmonth_0-1.alimoney);if(month

8、_0=1)ipmonth_0-1.suma=ipmonth_0-1.alimoney;printf( %2d 月全部收入为:%5.1f¥n,month_0,ipmonth_0-1.suma);if(month_0!=1)ipmonth_0-1.suma=ipmonth_0-2.e+ipmonth_0-1.alimoney;printf( %2d 月全部收入为:%5.1f+%5.1f=%5.1f¥n,month_0,ipmonth_0-2.e,ipmonth_0-1.alimoney,ipmonth_0-1.suma);ipmonth_0-1.e=ipmonth_0-1.suma-ipmonth

9、_0-1.sum;c=getchar();error:printf( 是否正确?(y/n) );scanf(%c,&c);if(c=y)printf(n 录入成功!nn);break;elseif(c=n)printf(n 重新输入!n 返回n);continue;elseprintf(n 输入有误n 返回nn);goto error;void pay(int month_0)char c;printf(nn *n);printf( %2d 月支出录入n,month_0);printf( *n);for(;)printf( 伙食费:);scanf(%f,&ipmonth_0-1

10、.board);printf( 日常用品费:);scanf(%f,&ipmonth_0-1.supplies);printf( 娱乐费:);scanf(%f,&ipmonth_0-1.amuserment);printf( 水电费:);scanf(%f,&ipmonth_0-1.elec);printf( 通讯费及车费:);scanf(%f,&ipmonth_0-m);printf( 其他费用:);scanf(%f,&ipmonth_0-1.other);ipmonth_0-1.sum=ipmonth_0-1.board+ipmonth_0-1.supp

11、lies+ipmonth_0-1.amuserment+ipmonth_0-1.elec+ipmonth_0-m+ipmonth_0-1.other;ipmonth_0-1.e=ipmonth_0-1.suma-ipmonth_0-1.sum;printf( %2d 月全部支出为:%5.1f¥n,month_0,ipmonth_0-1.sum);c=getchar();error:printf( 是否正确?(y/n) );scanf(%c,&c);if(c=y)printf(n 录入成功!nn);break;elseif(c=n)printf(n 重新输入!n 返回nn);contin

12、ue;elseprintf(n 输入有误n 返回nn);goto error;(二)(二) 学生收支查询:学生收支查询:search()search()分析:首先提示用户输入要查询的月份,然后用户选择查询内容(收入,支出和结余 3 项)输出当月收支明细流。流程图如图 3 所示。图 3:search()流程图该模块的具体代码如下所示:01 或 2 或 3n输出本月收入输入本月支出输入本月结余开始month=0&monthnn);goto error;break;c=getchar();error_0:printf( 是否继续查询?(y/n) );scanf(%c,&c);if(c

13、=y)goto yes;elseif(c=n)printf(n 返回nn);break;elseprintf(n 输入有误nn 返回nn);goto error_0;void search0(int month)printf( n);printf( %2d 月支出情况 n,month);printf( n);printf( 伙食费 %-5.1f ¥n,ipmonth-1.board);printf( n);printf( 日常用品费 %-5.1f ¥n,ipmonth-1.supplies);printf( n);printf( 娱乐费 %-5.1f ¥n,ipmonth-1.amuserme

14、nt);printf( n);printf( 水电费 %-5.1f ¥n,ipmonth-1.elec);printf( n);printf( 通讯费和车费%-5.1f ¥n,ipmonth-m);printf( n);printf( 其他费用 %-5.1f ¥n,ipmonth-1.other);printf( n);printf( 全部支出 %-5.1f ¥n,ipmonth-1.sum);printf( n);(三)(三) 学生收支修改:学生收支修改:reviserevise ()()分析:首先提示用户输入要修改的月份,然后用户选择要修改的内容(收入和支出) 。每次修改后询问用户是否正确

15、。流程图如图 4 所示。n输出上月结余输入修改收入输入修改的支出开始month=0&month12|monthnn);goto error_0;for(;)error:printf( 请选择:n);printf( 1收入n);printf( 2支出n);printf( 0返回主菜单n);scanf(%d,&x);switch(x)case 1:inrevise(month);break;case 2:payrevise(month);break;case 0:return;break;default:printf( 输入有误!nn 返回nn);goto error;break;

16、void inrevise(int month_0)char c;printf(nn *n);printf( %-2d 月收入修改n,month_0);printf( *n);for(;)if(month_0!=1)printf( 上月结余:%5.1fn,ipmonth_0-2.e);printf( 本月收入:);scanf(%f,&ipmonth_0-1.alimoney);if(month_0=1)ipmonth_0-1.suma=ipmonth_0-1.alimoney;printf( %2d 月全部收入为:%5.1f¥n,month_0,ipmonth_0-1.suma);if

17、(month_0!=1)ipmonth_0-1.suma=ipmonth_0-2.e+ipmonth_0-1.alimoney;printf( %2d 月全部收入为:%5.1f+%5.1f=%5.1f¥n,month_0,ipmonth_0-2.e,ipmonth_0-1.alimoney,ipmonth_0-1.suma);ipmonth_0-1.e=ipmonth_0-1.suma-ipmonth_0-1.sum;c=getchar();error:printf( 是否正确?(y/n) );scanf(%c,&c);if(c=y)printf(n 录入成功!nn);break;el

18、seif(c=n)printf(n 重新输入!nn 返回nn);continue;elseprintf(n 输入有误nn 返回nn);goto error;void payrevise(int month_0)char c;printf(nn *n);printf( %2d 月支出修改n,month_0);printf( *n);for(;)printf( 伙食费:);scanf(%f,&ipmonth_0-1.board);printf( 日常用品费:);scanf(%f,&ipmonth_0-1.supplies);printf( 娱乐费:);scanf(%f,&i

19、pmonth_0-1.amuserment);printf( 水电费:);scanf(%f,&ipmonth_0-1.elec);printf( 通讯费及车费:);scanf(%f,&ipmonth_0-m);printf( 其他费用:);scanf(%f,&ipmonth_0-1.other);ipmonth_0-1.sum=ipmonth_0-1.board+ipmonth_0-1.supplies+ipmonth_0-1.amuserment+ipmonth_0-1.elec+ipmonth_0-m+ipmonth_0-1.other;ipmonth_0-1.e=

20、ipmonth_0-1.suma-ipmonth_0-1.sum;printf( %2d 月全部支出为:%5.1f¥n,month_0,ipmonth_0-1.sum);c=getchar();error:printf( 是否正确?(y/n) );scanf(%c,&c);if(c=y)printf(n 录入成功!nn);break;elseif(c=n)printf(n 重新输入!n 返回nn);continue;elseprintf(n 输入有误n 返回nn);goto error;(四)(四) 学生收支总览:学生收支总览:allall()()分析:直接输出全年每个月的收入、支出和

21、结余。用制表符制表。流程图如图 5 所示。图 5:all()流程图该模块的具体代码如下所示:void all()printf(n);printf( 全年收支情况总览 n);printf(n);printf( 1 月 2 月 3 月 4 月 5 月 6 月 7 月 8 月 9 月 10 月 11 月 12 月 n);printf(n);printf(收入 %-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-开始输出全年总览结束6.1fn,ip0.suma,ip1.suma,ip2.suma,ip3.suma,ip

22、4.suma,ip5.suma,ip6.suma,ip7.suma,ip8.suma,ip9.suma,ip10.suma,ip11.suma);printf(n);printf(全部支出%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1fn,ip0.sum,ip1.sum,ip2.sum,ip3.sum,ip4.sum,ip5.sum,ip6.sum,ip7.sum,ip8.sum,ip9.sum,ip10.sum,ip11.sum);printf(n);printf(结余 %-6.1f%-6.1f%

23、-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1fn,ip0.e,ip1.e,ip2.e,ip3.e,ip4.e,ip5.e,ip6.e,ip7.e,ip8.e,ip9.e,ip10.e,ip11.e);printf(n);(五)(五) 支出排名支出排名 rankingranking()()分析:支出排名需要在 ranking()函数中再调用两个函数,一个ranking_0() ,一个是 ranking_1() 。ranking_0()为月支出排名,ranking_1()为年支出排名。排名用两个 for 循环的起泡法来实现。流

24、程图如图 6 所示。图 6:ranking()流程图该模块的具体代码如下所示:void ranking()int x;void ranking_0();void ranking_1();printf(nn *n);printf( 支出排名n);printf( *n);for(;)printf( 请选择:n);printf( 1.月支出排名n);printf( 2.年支出排名n);printf( 0.退出n);0输出年排名开始结束输入排名选项判断用户选择输出月排名12scanf(%d,&x);switch(x)case 1:ranking_0();break;case 2:ranking

25、_1();break;case 0:return;break;void ranking_0()int i,j,t_0,month,b6;float a6,t;for(i=0;i6;i+)bi=i+1;printf( 请输入月份:);scanf(%d,&month);a0=ipmonth-1.board;a1=ipmonth-1.supplies;a2=ipmonth-1.amuserment;a3=ipmonth-1.elec;a4=ipmonth-m;a5=ipmonth-1.other;for(i=0;i5;i+)for(j=0;j5-i;j+)if(ajaj+1)t=aj;aj=

26、aj+1;aj+1=t;t_0=bj;bj=bj+1;bj+1=t_0;printf(nn *n); printf( %2d 月支出排名n,month); printf( *n);printf( 1.);switch(b0)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a0);printf( 2

27、.);switch(b1)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a1);printf( 3.);switch(b2)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case 4

28、:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a2);printf( 4.);switch(b3)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a3);printf

29、( 5.);switch(b4)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a4);printf( 6.);switch(b5)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;cas

30、e 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a5);void ranking_1()int i,j,t_0,b6;float a6,t;for(i=0;i6;i+)bi=i+1;ai=0;for(i=0;i12;i+)a0+=ipi.board;a1+=ipi.supplies;a2+=ipi.amuserment;a3+=ipi.elec;a4+=ipm;a5+=ipi.other;for(i=0;i5;i+)for(j=0;j5-i;j+)if(aja

31、j+1)t=aj;aj=aj+1;aj+1=t;t_0=bj;bj=bj+1;bj+1=t_0;printf(nn *n); printf( 年支出排名n); printf( *n);printf( 1.);switch(b0)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a0);printf(

32、 2.);switch(b1)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a1);printf( 3.);switch(b2)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case

33、 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a2);printf( 4.);switch(b3)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a3);prin

34、tf( 5.);switch(b4)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;case 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a4);printf( 6.);switch(b5)case 1:printf(伙食费 );break;case 2:printf(日常用品费 );break;case 3:printf(娱乐费 );break;c

35、ase 4:printf(水电费 );break;case 5:printf(通讯费和车费);break;case 6:printf(其他费用 );break;printf(%5.1fn,a5);(六)(六) 数据重置数据重置 resettingresetting()()分析:数据重置功能可以将所有值清零,基本原理就是将所有的值赋为零值。为了保证用户误清零,需要用户在输入”resetting”后才能运行数据重置功能。流程图如图 7 所示。图 7:resetting()流程图该模块的具体代码如下所示:void resetting()int i;char c9;char c_0=resetting

36、;printf( 一旦重置所有数据将清零,请问是否重置,是请输入resettingn 否输入任意键返回n);scanf(%s,c);if(c0=c_00&c1=c_01&c2=c_02&c3=c_03&c4=c_04&c5=c_05&c6=c_06&c7=c_07&c8=c_08&c9=c_09)开始结束提示用户输入“resetting”用户输入“resetting”判断输入是否为resetting将所有数值赋为 0ynfor(i=0;i12;i+)ipi.month=i+1;ipi.alimoney=0; ipi.amu

37、serment=0; ipi.board=0; ipm=0; ipi.e=0; ipi.elec=0; ipi.other=0; ipi.sum=0; ipi.supplies=0;ipi.suma=0;printf( 重置成功!nn);(七)(七) 数据保存数据保存 save()save()分析:数据重置功能为了让数据再利用,因为本程序需要没要都进行录入,所以要用文件来保存。保存成功后提醒用户保存成功。该模块的具体代码如下所示:void save()file *fp;int i;if(fp=fopen(ip.dat,wb)=null)printf( 文件打开失败!n);return;for(

38、i=0;i12;i+)fwrite(&ipi,sizeof(struct ip),1,fp);printf( 保存成功!nn);fclose(fp);(八)(八) 自动打开数据自动打开数据 openopen()()分析:在每次程序运行时自动打开上次保存的数据,若无法打开数据,则提示打开失败,退出程序。该模块的具体代码如下所示:void open()file *fp;int i;if(fp=fopen(ip.dat,rb)=null)printf(n 文件打开失败!nn);exit(0);for(i=0;i12;i+)fread(&ipi,sizeof(struct ip),1,

39、fp);fclose(fp);四、系统测试四、系统测试(一)(一) 测试测试 main()main()函数函数测试使用依次选择的方法,逐一测试每个功能是否能进入。因为每个模块都有返回的选项,所以可以逐一测试。测试结果如图 9。图 9 主菜单(二)(二) 测试测试 enterenter()函数()函数测试时输入输入一月份,选择一月收支录入,将收入和支出都录入。再输入十二月份再次测试。另外再输入超出范围的值来测试,看程序是否有提示。测试结果如图 10、图 11、图 12、图 13 和图 14。图 10 选择月份图 11 收入录入图 12 收入录入确认图 13 支出录入错误图 14 支出录入成功(三

40、)(三) 测试收支查询函数测试收支查询函数 searchsearch()()分别查询一月和十二月的收入、支出和结余。再输入超出范围的值尝试。测试结果如图 15、图 16、图 17 和图 18。图 15 输入查询月份图 16 1 月查询菜单图 17 收入查询(选择 1)图 18 支出查询(选择 2)(四)(四) 测试收支总览测试收支总览 allall()()收支总览为年收支总览。直接选择总览功能。测试结果如图 19。图 19 全年支出总览(五)(五) 测试支出排名测试支出排名 rankingranking()()支出排名分为两个板块,一个为月支出,一个为年支出。分别测试这两个板块。测试结果如图

41、20、图 21 和图 22。图 20 支出排名主菜单图 21 月支出查询(选择 1 月)图 22 年支出排名(六)(六) 测试数据保存测试数据保存 savesave()()选择保存,看是否显示保存成功。然后关闭程序再次打开,选择总览看是否有数值。测试结果如图 23。 图 23 数据保存(七)(七) 测试数据重置测试数据重置 resettingresetting()()录入些数据,选择数据重置功能,输入 resetting 大写看是否提示重置成功,然后再看总览,数据是否重置。然后再次录入些数据,选择数据重置功能,不输入 resetting 看是否能重置。测试结果如图 24和图 25。图 24 数

42、据重置图 25 数据重置成功五、总结五、总结系统完成了学生个人收支录入、查询、修改、总览和排序等功能。系统仅为单人的收支系统,还不能达到多人收支系统。另外模拟直方图因数值过大也暂时无法加入。我的收获为:结构体和函数更加熟练。学会了文件。很多技巧的应用,如 exit()、return、goon 等。同类型的系统编程时能更好更快的做出来。六、附件(代码、部分图表)六、附件(代码、部分图表)#include#include#includestruct ip/*日期*/int month;/*收入*/float alimoney; /*生活费*/float suma; /*全部进账*/ /*支出*/f

43、loat board; /*伙食费*/float supplies; /*日常用品*/float amuserment; /*娱乐*/float elec; /*电*/float comm; /*通讯*/float other; /*其他*/float sum; /*支出合*/float e; /*结余*/*名称*/ip12;void main()void enter(); /*录入*/void search(); /*查询*/void revise(); /*修改*/void all(); /*总览*/void ranking(); /*排名*/void resetting(); /*重置*

44、/void save(); /*文件*/void open(); /*打开*/int x;open();for(;)printf(nn *n);printf( 学生收支系统n);printf( *n);printf( 1录入n);printf( 2查询n);printf( 3修改n);printf( 4总览n);printf( 5排名n);printf( 6保存n);printf( 7重置n);printf( 0退出n);scanf(%d,&x);switch(x)case 1:enter();break;case 2:search();break;case 3:revise();br

45、eak;case 4:all();break;case 5:ranking();break;case 6:save();break;case 7:resetting();break;case 0:exit(0);break;default:printf( 输入有误!n 返回n);break;void enter()void income(int month);void pay(int month_0);int month;printf(nn *n);printf( 收支录入n);printf( *n);error_0:printf( 请输入月份:);scanf(%d,&month);i

46、f(month12|monthn);goto error_0;income(month);pay(month);void income(int month_0)char c;printf(nn *n);printf( %-2d 月收入录入n,month_0);printf( *n);for(;)if(month_0!=1)printf( 上月结余:%5.1fn,ipmonth_0-2.e);printf( 本月收入:);scanf(%f,&ipmonth_0-1.alimoney);if(month_0=1)ipmonth_0-1.suma=ipmonth_0-1.alimoney;p

47、rintf( %2d 月全部收入为:%5.1f¥n,month_0,ipmonth_0-1.suma);if(month_0!=1)ipmonth_0-1.suma=ipmonth_0-2.e+ipmonth_0-1.alimoney;printf( %2d 月全部收入为:%5.1f+%5.1f=%5.1f¥n,month_0,ipmonth_0-2.e,ipmonth_0-1.alimoney,ipmonth_0-1.suma);ipmonth_0-1.e=ipmonth_0-1.suma-ipmonth_0-1.sum;c=getchar();error:printf( 是否正确?(y/n

48、) );scanf(%c,&c);if(c=y)printf(n 录入成功!nn);break;elseif(c=n)printf(n 重新输入!n 返回n);continue;elseprintf(n 输入有误n 返回nn);goto error;void pay(int month_0)char c;printf(nn *n);printf( %2d 月支出录入n,month_0);printf( *n);for(;)printf( 伙食费:);scanf(%f,&ipmonth_0-1.board);printf( 日常用品费:);scanf(%f,&ipmont

49、h_0-1.supplies);printf( 娱乐费:);scanf(%f,&ipmonth_0-1.amuserment);printf( 水电费:);scanf(%f,&ipmonth_0-1.elec);printf( 通讯费及车费:);scanf(%f,&ipmonth_0-m);printf( 其他费用:);scanf(%f,&ipmonth_0-1.other);ipmonth_0-1.sum=ipmonth_0-1.board+ipmonth_0-1.supplies+ipmonth_0-1.amuserment+ipmonth_0-1.elec

50、+ipmonth_0-m+ipmonth_0-1.other;ipmonth_0-1.e=ipmonth_0-1.suma-ipmonth_0-1.sum;printf( %2d 月全部支出为:%5.1f¥n,month_0,ipmonth_0-1.sum);c=getchar();error:printf( 是否正确?(y/n) );scanf(%c,&c);if(c=y)printf(n 录入成功!nn);break;elseif(c=n)printf(n 重新输入!n 返回nn);continue;elseprintf(n 输入有误n 返回nn);goto error;void

51、search()void search0(int month);int month,x;char c;for(;) printf(nn *n);printf( 收支查询n);printf( *n);yes:printf( 请输入月份:);scanf(%d,&month);for(;)error:printf( 请选择:n);printf( 1收入n);printf( 2支出n);printf( 3结余n);printf( 0返回主菜单n);scanf(%d,&x);switch(x)case 1:printf( %2d 月全部收入:%5.1f¥nn,month,ipmonth-

52、1.alimoney);goto error;break;case 2:search0(month);goto error;break;case 3:printf( 本月结余为:%5.1f¥nn,ipmonth-1.e);break;case 0:return;break;default:printf( 输入有误!nn 返回nn);goto error;break;c=getchar();error_0:printf( 是否继续查询?(y/n) );scanf(%c,&c);if(c=y)goto yes;elseif(c=n)printf(n 返回nn);break;elseprin

53、tf(n 输入有误nn 返回nn);goto error_0;void search0(int month)printf( n);printf( %2d 月支出情况 n,month);printf( n);printf( 伙食费 %-5.1f ¥n,ipmonth-1.board);printf( n);printf( 日常用品费 %-5.1f ¥n,ipmonth-1.supplies);printf( n);printf( 娱乐费 %-5.1f ¥n,ipmonth-1.amuserment);printf( n);printf( 水电费 %-5.1f ¥n,ipmonth-1.elec)

54、;printf( n);printf( 通讯费和车费%-5.1f ¥n,ipmonth-m);printf( n);printf( 其他费用 %-5.1f ¥n,ipmonth-1.other);printf( n);printf( 全部支出 %-5.1f ¥n,ipmonth-1.sum);printf( n);void revise()void inrevise(int month);void payrevise(int month_0);int x,month;printf(nn *n);printf( 收支修改n);printf( *n);error_0:printf( 请输入月份:)

55、;scanf(%d,&month);if(month12|monthnn);goto error_0;for(;)error:printf( 请选择:n);printf( 1收入n);printf( 2支出n);printf( 0返回主菜单n);scanf(%d,&x);switch(x)case 1:inrevise(month);break;case 2:payrevise(month);break;case 0:return;break;default:printf( 输入有误!nn 返回nn);goto error;break;void inrevise(int mon

56、th_0)char c;printf(nn *n);printf( %-2d 月收入修改n,month_0);printf( *n);for(;)if(month_0!=1)printf( 上月结余:%5.1fn,ipmonth_0-2.e);printf( 本月收入:);scanf(%f,&ipmonth_0-1.alimoney);if(month_0=1)ipmonth_0-1.suma=ipmonth_0-1.alimoney;printf( %2d 月全部收入为:%5.1f¥n,month_0,ipmonth_0-1.suma);if(month_0!=1)ipmonth_0

57、-1.suma=ipmonth_0-2.e+ipmonth_0-1.alimoney;printf( %2d 月全部收入为:%5.1f+%5.1f=%5.1f¥n,month_0,ipmonth_0-2.e,ipmonth_0-1.alimoney,ipmonth_0-1.suma);ipmonth_0-1.e=ipmonth_0-1.suma-ipmonth_0-1.sum;c=getchar();error:printf( 是否正确?(y/n) );scanf(%c,&c);if(c=y)printf(n 录入成功!nn);break;elseif(c=n)printf(n 重新输

58、入!nn 返回nn);continue;elseprintf(n 输入有误nn 返回nn);goto error;void payrevise(int month_0)char c;printf(nn *n);printf( %2d 月支出修改n,month_0);printf( *n);for(;)printf( 伙食费:);scanf(%f,&ipmonth_0-1.board);printf( 日常用品费:);scanf(%f,&ipmonth_0-1.supplies);printf( 娱乐费:);scanf(%f,&ipmonth_0-1.amuserment

59、);printf( 水电费:);scanf(%f,&ipmonth_0-1.elec);printf( 通讯费及车费:);scanf(%f,&ipmonth_0-m);printf( 其他费用:);scanf(%f,&ipmonth_0-1.other);ipmonth_0-1.sum=ipmonth_0-1.board+ipmonth_0-1.supplies+ipmonth_0-1.amuserment+ipmonth_0-1.elec+ipmonth_0-m+ipmonth_0-1.other;ipmonth_0-1.e=ipmonth_0-1.suma-ipmo

60、nth_0-1.sum;printf( %2d 月全部支出为:%5.1f¥n,month_0,ipmonth_0-1.sum);c=getchar();error:printf( 是否正确?(y/n) );scanf(%c,&c);if(c=y)printf(n 录入成功!nn);break;elseif(c=n)printf(n 重新输入!n 返回nn);continue;elseprintf(n 输入有误n 返回nn);goto error;void all()printf(n);printf( 全年收支情况总览 n);printf(n);printf( 1 月 2 月 3 月 4 月 5 月 6 月 7 月 8 月 9 月 10 月 11 月 12 月 n);printf(n);printf(收入 %-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1fn,ip0.suma,ip1.suma,ip2.suma,ip3.suma,ip4.suma,ip5.suma,ip6.suma,ip7.suma,ip8.suma,ip9.suma,ip

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论