版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告项目名称:家庭财务系统项目组长:ﻩ项目成员:班级名称:专业名称:计算机科学与技术完成时间:2010-6—1信息工程学院制案例描述1.、家庭财务系统功能实现家庭财务的添加、显示、查询、修改、删除和统计功能界面设计菜单:1.添加收入ﻩ2.显示收入 3.查询收入4.修改收入5.删除收入6.添加支出7.显示支出8.查询支出9.修改支出10.删除支出11.显示全部记录12。统计总收入和总支出0.退出系统本软件界面友好,不难操作,每一步执行后都有提示语,只要依据提示一步一步执行就可以了。而且每执行完一个功能,都会进行清屏,跳出菜单页,这样一方面防止函数执行页面过长,另一方面也便利你选择执行下个功能。模块化设计方案系统主要函数及功能1)#include〈stdio。h〉/*I/O函数*/#include〈string.h〉/*字符串函数*/#include〈stdlib。h〉/*标准库函数*/#include<malloc.h>/*开辟结点*/#defineNULL0/*宏定义命令*/2)face()函数:菜单函数,函数返回值为整数,代表所选的菜单项intface()3)init()函数:初始化函数,读取文件夹中信息到内存中,返回指向链表头的指针voidinit()4)add()函数:添加函数,参数为1,添加收入;参数为0,添加支出voidadd(inta)5)judge()函数:推断函数,推断文件里有没有记录信息,有信息,返回值为1;无信息,返回值为0intjudge()6)print()函数:显示函数,参数为1,只显示收入;参数为0,只显示输出;参数为2,即显示收入又显示输出voidprint(inta)7)search()函数:查询函数,参数为1,查询收入;参数为0,查询支出voidsearch(inta)8)modify()函数:修改函数,参数为1,修改收入;参数为0,修改支出voidmodify(inta)9)del()函数:删除函数,参数为1,删除收入;参数为0,删除支出voiddel(inta)10)count()函数:计算函数,参数为1,只计算总收入;参数为0,只总计算输出;参数为2,即计算总收入又计算总输出voidcount(inta)11)save()函数:保存函数,把内存中的信息读到文件夹中voidsave()主函数调用各功能函数流程图数据结构描述#include<stdio.h〉#include〈string.h〉#include〈stdlib。h>#include<malloc.h>#defineNULL0structfamily_financial{};//创建结构体指针structfamily_financial*head;floatincome=0,payout=0;intn=0;intface()//封面函数{}voidsave()//保存函数{ }voidinit()//初始化函数{}intjudge()//推断文件里有没有记录信息{}voidprint(inta)//显示记录{}voidadd(inta)//添加{}intsearch(inta)//查询{}voiddel(inta)//删除{}voidmodify(inta)//修改收入{}voidcount(inta)//计算金额{}main()//以下是main函数{system(”color7c”);init();count(1);for(;;){switch(face()){case1:add(1);break;//添加收入case2:print(1);break;//显示收入case3:search(1);break;//查询收入case4:modify(1);break;//修改收入case5:del(1);break;//删除收入case6:add(0);break;//添加支出case7:print(0);break;//显示支出case8:search(0);break;//查询支出case9:modify(0);break;//修改支出case10:del(0);break;//删除支出case11:print(2);break;//显示全部记录case12:count(2);break;//统计总收入和总支出case0:printf("\n\n\n\t\t再见,感谢您的使用!\n\n\n”);exit(0);break;//退出系统}save();fflush(stdin);/*以保证调试输出可以在正确的时间输出*/system("PAUSE");}}算法设计modify修改函数程序运行结果第一次使用第一次进入菜单页,选显示添加收入显示收入查询收入修改收入删除收入添加支出显示支出查询支出修改支出删除支出显示全部记录统计总收入和总支出总结工作时间(5号黑色)初始化—1小时添加–2分钟推断—20分钟显示–2小时查询–3小时修改–3小时删除–3小时统计—30分钟主函数-30分钟保存-30分钟修改优化—20小时2、分工情况每位成员都先了代码,把相对好的版块选取,然后由组长拼接,把报告做出来.3、心得体会看到课程设计要求的时候,大家在一起商量了一下,看要怎么做,后来商量出来的结果是:由于每个人都有自己不同的想法,那不如就每个人做一份,这样也有助于大家掌握这个课程所需要的相关知识。基本的课程要求达到之后,为了使课程设计更完善,我们上网找了相关课程案例,但由于网上的程序所用到的知识点,不符合我们的要求,而且有部分是我们看不懂的知识点,查了相关资料之后还是无法彻底的理解,所以我们只能相互商量自己完善程序,而放弃了在网上找的这个途径。在程序完成之后,由于这个程序的只能查询一个月的收入和支出情况,我们想要完善成能查找到任何时间段内的收入和支出情况。可是用户的输入挨次不肯定是完全依据时间挨次来的,所以要达到这个功能,首先得对个个结点内的信息依据时间挨次进行排序,由于原先考虑到用户输入的时间可能不肯定是整型,所以把时间设成了字符型,但要达到排序的目的就得把时间改为整型.在考虑过相关要求和要达到的功能之后,就开头了编程。功能程序完成之后,把代码放到原先的代码之中,运行之后,发现在累加的结果上消灭了问题,通过多次的查看代码和调试之后,发现问题还是没有彻底地解决,可是现在距离我们报告上交的时间已经不远了。考虑到时间的问题,我们决定放弃这个功能,等把报告交了之后,再连续修改代码,以达到这个功能。通过这次的课程设计:①觉得在修改代码方面,我们有很多不足,盼望在以后通过不断地写代码的过程中,能提高修改和完善代码的水平。②要重视团队合作,每个人都有自己不同的想法,把大家好的想法拼在一起,就会出来一个好的作品。附页(源代码附加注释)#include<stdio.h>#include〈string.h〉#include〈stdlib.h>#include<malloc.h>#defineNULL0structfamily_financial{intnum;//删除和修改时的编号charyear[10];//表示年份charmonth[10];//表示月份charday[10];//表示日期charname[20];//家庭成员floatmoney;//表示本次金额intz;//推断收入还是支出charevent[60];//收支备注structfamily_financial*next;};//创建结构体指针structfamily_financial*head;floatincome=0,payout=0;intn=0;intface()//封面函数{intc;system("cls");printf("\t☆\n”);printf("\t☆\t\t\t
收入管理\n");ﻩprintf("\t☆\t\t\t1.添加收入\n");ﻩprintf(”\t☆\t◎\t\t2。显示收入\n");ﻩprintf("\t☆\t欢\t\t3.查询收入\n”);printf("\t☆\t迎\t\t4。修改收入\n");printf("\t☆\t进\t\t5。删除收入\n”);printf(”\t☆\t入\n”);printf(”\t☆\t家\n");printf(”\t☆\t庭\t
支出管理\n");printf(”\t☆\t财\t\t6.添加支出\n");printf("\t☆\t务\t\t7。显示支出\n”);printf("\t☆\t管\t\t8.查询支出\n”);printf(”\t☆\t理\t\t9.修改支出\n");printf("\t☆\t系\t\t10。删除支出\n”);printf("\t☆\t统\n”);printf(”\t☆\n”);printf("\t☆\t\t\t
总计\n");printf("\t☆\t\t\t11。显示全部记录\n");printf("\t☆\t\t\t12。统计总收入和总支出\n");printf(”\t☆\n");printf("\t☆\t\t\t0。退出系统\n”); printf("\t☆\n");do{printf(”\n\t请选择菜单项(0—12):");/*提示输入选项*/scanf("%d”,&c);/*输入选择项*/}while(c〈0||c>12);/*选择项不在0~8之间的显示重新输*/system(”cls");printf(”\n\n**********家庭财务管理系统**********\n\n");returnc;/*返回主程序,依据选择的数值调用相应的函数*/}voidsave()//保存函数{ﻩstructfamily_financial*fam_p;ﻩFILE*fp;ﻩfp=fopen(”cwgl.txt”,"wb");ﻩif(fp!=NULL)ﻩ{ﻩfor(fam_p=head;fam_p!=NULL;fam_p=fam_p->next)ﻩfwrite(fam_p,sizeof(structfamily_financial),1,fp);ﻩﻩ}ﻩfclose(fp);ﻩ}voidinit()//初始化函数{structfamily_financial*p,*q; FILE*fp;ﻩfp=fopen("cwgl.txt”,"rb”);ﻩif(fp==NULL){ﻩprintf("\n\n\n\t敬重的用户,这是您第一次使用该软件\n\n");ﻩsystem("PAUSE");}ﻩif(fp!=NULL)ﻩﻩwhile(p=(structfamily_financial*)malloc(sizeof(structfamily_financial)),fread(p,sizeof(structfamily_financial),1,fp)!=NULL)ﻩ{ﻩif(n==0)ﻩﻩhead=p;elseﻩﻩq->next=p;q=p;ﻩn++;ﻩﻩﻩ}}intjudge()//推断文件里有没有记录信息{structfamily_financial*fam_p,*q;for(fam_p=head;fam_p!=NULL;fam_p=fam_p->next){if(fam_p==NULL)return0;elsereturn1;}}voidprint(inta)//显示记录{structfamily_financial*fam_p,*q;inti=1,j=0,d;d=judge();if(d==0)printf("\n\n\t没有任何信息,无法连续...请开头添加记录!\n\n\n");else{if(a==1||a==2){ﻩprintf("\n\t-收入:\n"); for(fam_p=head;fam_p!=NULL;fam_p=fam_p—〉next)ﻩ{ﻩif(fam_p->z==1){ﻩprintf("\n\t\t%d。日期:%s.%s。%s",i,fam_p—〉year,fam_p->month,fam_p->day);ﻩprintf(”\n\t\t家庭成员:%s",fam_p—>name);printf("\n\t\t本次金额:%。2f",fam_p-〉money);printf(”\n\t\t备注:%s",fam_p—〉event);ﻩprintf(”\n\n\t\t-----———---—--——--—-—----\n");ﻩ i++; j++;ﻩ}}}if(a==0||a==2){ﻩprintf("\n\n\t-支出:\n”);for(fam_p=head;fam_p!=NULL;fam_p=fam_p->next)ﻩ{ ﻩif(fam_p->z==0)ﻩﻩ{ ﻩprintf(”\n\t\t%d。日期:%s.%s。%s”,i,fam_p—>year,fam_p->month,fam_p->day);ﻩprintf("\n\t\t家庭成员:%s",fam_p—〉name);printf(”\n\t\t本次金额:%。2f”,fam_p->money);printf("\n\t\t备注:%s”,fam_p-〉event);printf("\n\n\t\t-—----—-------—-----—-—--\n");i++;j++; }ﻩ}}if(j==0)printf(”\n\n\t\t\t没有找到任何信息,无法输出!\n\n”);}}voidadd(inta)//添加{structfamily_financial*fam_p;fam_p=(structfamily_financial*)malloc(sizeof(structfamily_financial));if(a==1)printf(”\n\t~~~~~添加收入记录~~~~~\n”);elseprintf(”\n\t~~~~~添加支出记录~~~~~\n”);printf(”\n\t请输入姓名:");scanf(”%s",fam_p—>name);printf("\n\t请输入年份:”);scanf(”%s",fam_p—>year);printf("\n\t请输入月份:");scanf(”%s”,fam_p-〉month);printf(”\n\t请输入日期:”);scanf(”%s”,fam_p->day);if(a==1){printf("\n\t请输入收入金额:”);scanf("%f",&fam_p—>money);income=income+fam_p->money;fam_p->z=1;}else{printf("\n\t请输入支出金额:");scanf("%f",&fam_p->money);payout=payout+fam_p->money;fam_p->z=0;}printf("\n\t请输入备注:”);scanf("%s",fam_p->event);fam_p—>next=head;head=fam_p;n++;printf(”\n\t\t~~~~~添加成功~~~~~\n\n");save();}intsearch(inta)//查询{structfamily_financial*fam_p,*q;inti,k=0,d;floatsum=0;charpyear[10],pmonth[10],pname[20];d=judge();if(d==0)printf("\n\n\t没有任何信息,无法连续。..请开头添加记录!\n\n\n”);else{printf("\n\t~~~请先输入以下信息进行查询~~~\n\n");printf("\n\t请输入姓名:”);scanf("\t%s",pname);printf("\n\t请输入年份:");scanf("%s",pyear);printf("\n\t请输入月份:”);scanf("%s",pmonth);printf("\n\t-—%s年%s月\n”,pyear,pmonth);if(a==1){printf(”\n\t\t日期\t\t收入金额”);for(i=0,fam_p=head;fam_p!=NULL;q=fam_p,fam_p=fam_p—>next){fam_p-〉num=1;if(strcmp(pyear,fam_p->year)==0&&strcmp(pmonth,fam_p—>month)==0&&strcmp(pname,fam_p-〉name)==0&&fam_p-〉z==1){ﻩsum=sum+fam_p—>money; i++;k++; fam_p-〉num=i;printf("\n\t%d、%s日\t\t%.2f",i,fam_p-〉day,fam_p—>money);}}printf(”\n\n\t\t\t\t小计:本月%s共收入:%.2f\n\n",q-〉name,sum);}if(a==0){printf(”\n\t\t日期\t\t支出金额”);for(i=0,fam_p=head;fam_p!=NULL;q=fam_p,fam_p=fam_p->next){fam_p->num=0;if(strcmp(pyear,fam_p->year)==0&&strcmp(pmonth,fam_p->month)==0&&strcmp(pname,fam_p->name)==0&&fam_p—>z==0){ﻩ sum=sum+fam_p->money;ﻩﻩi++;k++;ﻩ fam_p->num=i;ﻩprintf("\n\t%d、%s日\t\t%.2f",i,fam_p->day,fam_p->money); }ﻩ}printf(”\n\n\t\t\t\t小计:本月%s共支出:%.2f\n\n”,q-〉name,sum);}if(i==0){ﻩsystem("cls");printf("\n\n**********家庭财务管理系统**********\n\n");printf(”\n\n\t\t\t找不到您要的信息,无法输出!\n\n");}}returnk;}voiddel(inta)//删除{structfamily_financial*fam_p,*q;inti,j=1,k,m;if(a==1)k=search(1);elsek=search(0);if(k!=0){while(j!=0){printf("\n\t请输入你要删除的编号:");scanf("%d”,&i);printf("\n\n\t是否要确认删除?(是:1/否:0)");scanf(”%d",&m);if(m==1){ﻩfor(q=fam_p=head;fam_p!=NULL;q=fam_p,fam_p=fam_p—〉next) {ﻩﻩif(fam_p->num==i)ﻩ {ﻩif(a==1)ﻩﻩﻩﻩincome=income—fam_p-〉money; ﻩelseﻩﻩﻩﻩpayout=payout+fam_p->money;ﻩif(fam_p==q)ﻩﻩhead=q—〉next; elseq—>next=fam_p—〉next;ﻩﻩfree(fam_p);ﻩﻩ} fam_p-〉num=0;ﻩﻩﻩsave(); }printf("\n\t\t~~~~~删除成功~~~~~");} ﻩprintf("\n\n\t是否要连续选择删除?(是:1/否:0):”); scanf("%d",&j);ﻩ}}}voidmodify(inta)//修改收入{structfamily_financial*fam_p;inti,j=1,k;if(a==1)k=search(1);elsek=search(0);if(k!=0){while(j!=0){printf("\n请输入你要修改的编号:");scanf("%d",&i);for(fam_p=head;fam_p!=NULL;fam_p=fam_p—〉next){ﻩif(fam_p->num==i)ﻩ{ﻩif(a==1) income=income-fam_p->money;ﻩelseﻩ payout=payout+fam_p—>money;ﻩprintf(”\n\t~~~~~请修改记录~~~~~\n\n”);printf(”\n\t请输入正确的姓名:");scanf(”%s",fam_p->name);printf(”\n\t请输入正确的年份:”);scanf(”%s",fam_p->year);printf("\n\t请输入正确的月份:");scanf(”%s",fam_p->month);printf("\n\t请输入正确的日期:");scanf("%s",fam_p->day);if(a==1)printf(”\n\t请输入正确的收入金额:");elseprintf("\n\t请输入正确的支出金额:");ﻩﻩscanf("%f”,&fam_p-〉money);if(a==1)ﻩﻩincome=income+fam_p->money;ﻩelseﻩ payout=payout-fam_p->money;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度奢侈品买卖与代理合同
- 2024中国石化金陵石化分公司毕业生招聘40人易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国电力建设集团河北工程限公司招聘70人易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国电信江西公司校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国海油春季校园招聘笔试易考易错模拟试题(共500题)试卷后附参考答案
- 2024年度船舶制造起重机安装调试合同
- 2024中国出口信用保险公司宁波分公司劳务派遣员工招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024年度橱柜企业与物流公司仓储运输合同
- 2024下半年江苏淮安市淮阴区招聘编外用工人员和部分国企人员16人易考易错模拟试题(共500题)试卷后附参考答案
- 2024上汽乘用车福建分公司校园招聘50人易考易错模拟试题(共500题)试卷后附参考答案
- 关于设计阶段监理的控制手段、方法及措施_工程管理
- 小学《纸浆画》校本教材
- 方便面成品感官品评(课堂PPT)
- 马后炮化工论坛阀门的基础知识
- 市政工程施工工期定额(定稿)
- 涂层厚度检测记录(共10页)
- 心理统计学公式总结
- 最新最全安徽建设工程清单计价取费费率
- 高中文科数学基础知识汇总
- 第六章缝隙天线及微带天线
- 数字电子设计报告生理刺激反应时间测试仪
评论
0/150
提交评论