收藏 分销(赏)

《家庭财务系统》课程设计报告.doc

上传人:精*** 文档编号:2516871 上传时间:2024-05-31 格式:DOC 页数:29 大小:1.22MB
下载 相关 举报
《家庭财务系统》课程设计报告.doc_第1页
第1页 / 共29页
《家庭财务系统》课程设计报告.doc_第2页
第2页 / 共29页
《家庭财务系统》课程设计报告.doc_第3页
第3页 / 共29页
《家庭财务系统》课程设计报告.doc_第4页
第4页 / 共29页
《家庭财务系统》课程设计报告.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、家庭财务系统课程设计报告 作者: 日期:29 个人收集整理 勿做商业用途课程设计报告项目名称:家庭财务系统项目组长:项目成员:班级名称:专业名称:计算机科学与技术完成时间:201061信息工程学院制一、 案例描述1.、家庭财务系统功能 实现家庭财务的添加、显示、查询、修改、删除和统计功能二、 界面设计菜单: 1。添加收入 2.显示收入 3。查询收入 4.修改收入 5.删除收入 6.添加支出 7。显示支出 8。查询支出 9.修改支出 10。删除支出 11。显示所有记录 12.统计总收入和总支出 0.退出系统 本软件界面友好,不难操作,每一步执行后都有提示语 ,只要按照提示一步一步执行就可以了。而

2、且每执行完一个功能,都会进行清屏,跳出菜单页,这样一方面防止函数执行页面过长,另一方面也方便你选择执行下个功能。模块化设计方案1、 系统主要函数及功能 1) #includestdio。h /*I/O函数/#include /*字符串函数*/#includestdlib.h /标准库函数/#includemalloc。h/开辟结点 */define NULL 0 /宏定义命令*/ 2)face()函数:菜单函数,函数返回值为整数,代表所选的菜单项int face() 3)init()函数:初始化函数,读取文件夹中信息到内存中,返回指向链表头的指针void init()4)add()函数:添加函

3、数,参数为1,添加收入;参数为0,添加支出void add(int a)5)judge()函数:判断函数,判断文件里有没有记录信息,有信息,返回值为1;无信息,返回值为0int judge()6)print()函数:显示函数,参数为1,只显示收入;参数为0,只显示输出;参数为2,即显示收入又显示输出void print(int a)7)search()函数:查询函数,参数为1,查询收入;参数为0,查询支出void search(int a) 8)modify()函数:修改函数,参数为1,修改收入;参数为0,修改支出void modify(int a) 9)del()函数:删除函数 ,参数为1,

4、删除收入;参数为0,删除支出 void del(int a) 10)count()函数:计算函数,参数为1,只计算总收入;参数为0,只总计算输出;参数为2,即计算总收入又计算总输出void count(int a) 11)save()函数:保存函数,把内存中的信息读到文件夹中void save()2、 主函数调用各功能函数流程图三、 数据结构描述include#includestdlib.h#include#define NULL0 struct family_financial;/创建结构体指针struct family_financial *head; float income=0,pay

5、out=0;int n=0; int face()/封面函数void save() /保存函数 void init() /初始化函数 int judge()/判断文件里有没有记录信息 void print(int a) /显示记录 void add(int a) /添加 int search(int a)/查询void del(int a)/删除 void modify(int a)/修改收入void count(int a)/计算金额main() /以下是main函数 system(”color 7c”); init(); count(1); for(;) switch(face()) ca

6、se 1: add(1);break; /添加收入 case 2: print(1);break; /显示收入 case 3: search(1);break; /查询收入 case 4: modify(1);break; /修改收入 case 5: del(1);break; /删除收入 case 6: add(0); break; /添加支出 case 7: print(0); break; /显示支出 case 8: search(0); break; /查询支出 case 9: modify(0); break; /修改支出 case 10: del(0);break; /删除支出 c

7、ase 11: print(2); break; /显示所有记录 case 12: count(2);break; /统计总收入和总支出 case 0: printf(nnntt 再见,谢谢您的使用! nnn); exit(0); break; /退出系统 save(); fflush(stdin);/*以保证调试输出可以在正确的时间输出/ system(PAUSE); 四、 算法设计modify修改函数五、 程序运行结果 第一次使用第一次进入菜单页,选显示 添加收入显示收入查询收入修改收入删除收入添加支出显示支出查询支出修改支出删除支出显示所有记录统计总收入和总支出六、 总结1、 工作时间(

8、5号黑色)初始化-1小时添加 2分钟判断20分钟显示 2小时查询 3小时修改 3小时删除 3小时统计-30分钟主函数-30分钟保存30分钟修改优化20小时2、分工情况每位成员都先了代码,把相对好的版块选取,然后由组长拼接,把报告做出来.3、心得体会看到课程设计要求的时候,大家在一起讨论了一下,看要怎么做,后来讨论出来的结果是:因为每个人都有自己不同的想法,那不如就每个人做一份,这样也有助于大家掌握这个课程所需要的相关知识.基本的课程要求达到之后,为了使课程设计更完善,我们上网找了相关课程案例,但由于网上的程序所用到的知识点,不符合我们的要求,而且有部分是我们看不懂的知识点,查了相关资料之后还是

9、无法彻底的理解,所以我们只能相互讨论自己完善程序,而放弃了在网上找的这个途径。在程序完成之后,因为这个程序的只能查询一个月的收入和支出情况,我们想要完善成能查找到任何时间段内的收入和支出情况。可是用户的输入顺序不一定是完全按照时间顺序来的,所以要达到这个功能,首先得对个个结点内的信息根据时间顺序进行排序,由于原先考虑到用户输入的时间可能不一定是整型,所以把时间设成了字符型,但要达到排序的目的就得把时间改为整型。在考虑过相关要求和要达到的功能之后,就开始了编程。功能程序完成之后,把代码放到原先的代码之中, 运行之后,发现在累加的结果上出现了问题,通过多次的查看代码和调试之后,发现问题还是没有彻底

10、地解决,可是现在距离我们报告上交的时间已经不远了.考虑到时间的问题,我们决定放弃这个功能,等把报告交了之后,再继续修改代码,以达到这个功能.个人收集整理,勿做商业用途文档为个人收集整理,来源于网络通过这次的课程设计:觉得在修改代码方面,我们有很多不足,希望在以后通过不断地写代码的过程中,能提高修改和完善代码的水平。要重视团队合作,每个人都有自己不同的想法,把大家好的想法拼在一起,就会出来一个好的作品。附页(源代码附加注释)#includestdio。h#includeincludeincludemalloc。hdefine NULL0 struct family_financial int n

11、um; /删除和修改时的编号 char year10; /表示年份 char month10; /表示月份 char day10; /表示日期 char name20; /家庭成员 float money; /表示本次金额 int z; /判断收入还是支出 char event60; /收支备注 struct family_financial next;/创建结构体指针struct family_financial *head; float income=0,payout=0;int n=0; int face()/封面函数 int c; system(”cls); printf(t n);

12、printf(”t t tt收入管理 n); printf(t t tt 1.添加收入 n”); printf(t t tt 2.显示收入 n”); printf(t t 欢 tt 3。查询收入 n”); printf(t t 迎 tt 4.修改收入 n”); printf(”t t 进 tt 5。删除收入 n”); printf(”t t 入 n”); printf(t t 家 n); printf(t t 庭 t支出管理 n); printf(”t t 财 tt 6.添加支出 n); printf(t t 务 tt 7。显示支出 n); printf(”t t 管 tt 8.查询支出 n)

13、; printf(”t t 理 tt 9.修改支出 n); printf(t t 系 tt10.删除支出 n); printf(t t 统 n”); printf(t n); printf(”t t tt总 计 n”); printf(”t t tt11。显示所有记录 n”); printf(”t t tt12。统计总收入和总支出n”); printf(”t n); printf(”t t tt 0.退出系统 n); printf(t n); do printf(”nt 请选择菜单项(012):”); /提示输入选项/ scanf(%d,&c); /输入选择项*/ while(c0|c12);

14、 /*选择项不在08之间的显示重新输/ system(”cls”); printf(nn *家庭财务管理系统*nn ”); return c; /返回主程序,根据选择的数值调用相应的函数*/void save() /保存函数 struct family_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(struct family_financial),1,fp); fclose(fp); voi

15、d init() /初始化函数 struct family_financial *p,q;FILE fp;fp=fopen(cwgl。txt,”rb”);if(fp=NULL) printf(”nnnt 尊敬的用户,这是您第一次使用该软件nn”); system(PAUSE”); if (fp!=NULL)while(p=(struct family_financial *)malloc(sizeof(struct family_financial)),fread(p,sizeof(struct family_financial),1,fp)!=NULL) if(n=0) head=p; el

16、se qnext=p; q=p; n+; int judge()/判断文件里有没有记录信息 struct family_financial fam_p,*q; for(fam_p=head;fam_p!=NULL;fam_p=fam_pnext) if(fam_p=NULL) return 0; else return 1; void print(int a) /显示记录 struct family_financial *fam_p,q; int i=1,j=0,d; d=judge(); if(d=0) printf(nnt没有任何信息,无法继续.。.请开始添加记录!nnn); else i

17、f(a=1a=2) printf(”nt 收入:n); for(fam_p=head;fam_p!=NULL;fam_p=fam_pnext) if(fam_p-z=1) printf(ntt%d. 日 期:%s.s。%s,i,fam_p-year,fam_p-month,fam_pday); printf(ntt 家庭成员:s”,fam_p-name); printf(”ntt 本次金额:。2f,fam_p-money); printf(”ntt 备 注:%s”,fam_p-event); printf(”nntt-n); i+; j+; if(a=0a=2) printf(nnt 支出:n

18、”); for(fam_p=head;fam_p!=NULL;fam_p=fam_pnext) if(fam_p-z=0) printf(nttd。 日 期:s.%s.%s,i,fam_p-year,fam_p-month,fam_p-day); printf(ntt 家庭成员:%s,fam_pname); printf(”ntt 本次金额:。2f,fam_p-money); printf(ntt 备 注:%s”,fam_p-event); printf(”nntt-n); i+; j+; if(j=0) printf(nnttt 没有找到任何信息,无法输出!nn); void add(int

19、 a) /添加 struct family_financial *fam_p; fam_p=(struct family_financial*) malloc(sizeof(struct family_financial); if(a=1) printf(”nt 添加收入记录n”); else printf(”nt 添加支出记录n); printf(nt 请输入姓名:”); scanf(s,fam_p-name); printf(nt 请输入年份:); scanf(s”,fam_p-year); printf(nt 请输入月份:”); scanf(”s”,fam_p-month); print

20、f(nt 请输入日期:); scanf(%s,fam_p-day); if(a=1) printf(nt 请输入收入金额:”); scanf(”f,fam_p-money); income=income+fam_pmoney; fam_pz=1; else printf(nt 请输入支出金额:”); scanf(”%f”,fam_pmoney); payout=payout+fam_pmoney; fam_pz=0; printf(”nt 请输入备注:); scanf(”s”,fam_pevent); fam_pnext=head; head=fam_p; n+; printf(”ntt添 加

21、 成 功 nn”); save(); int search(int a)/查询 struct family_financial fam_p,*q; int i,k=0,d; float sum=0; char pyear10,pmonth10,pname20; d=judge(); if(d=0) printf(nnt没有任何信息,无法继续。.请开始添加记录!nnn); else printf(nt 请先输入以下信息进行查询nn”); printf(”nt 请输入姓名:”); scanf(”t %s”,pname); printf(”nt 请输入年份:”); scanf(s,pyear); p

22、rintf(nt 请输入月份:”); scanf(s”,pmonth); printf(nt - s年s月n,pyear,pmonth); if(a=1) printf(ntt 日 期tt收入金额”); 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_pmonth)=0strcmp(pname,fam_p-name)=0&fam_pz=1) sum=sum+fam_p-money; i+;k+; fam_pn

23、um=i; printf(nt %d、 s 日tt %.2f”,i,fam_p-day,fam_pmoney); printf(”nntttt小计:本月 %s 共收入:.2fnn,qname,sum); if(a=0) printf(ntt 日 期tt支出金额”); 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_pyear)=0&strcmp(pmonth,fam_pmonth)=0strcmp(pname,fam_pname)=0&fam_pz=0) sum=

24、sum+fam_pmoney; i+;k+; fam_p-num=i; printf(nt %d、 s 日tt %.2f,i,fam_pday,fam_pmoney); printf(”nntttt小计:本月 %s 共支出:%。2fnn,q-name,sum); if(i=0) system(cls); printf(nn *家庭财务管理系统*nn ); printf(”nnttt 找不到您要的信息,无法输出!nn); return k;void del(int a)/删除 struct family_financial *fam_p,q; int i,j=1,k,m; if(a=1) k=s

25、earch(1); else k=search(0); if(k!=0) while(j!=0) printf(nt请输入你要删除的编号:); scanf(d”,i); printf(nnt是否要确认删除?(是: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=incomefam_p-money; else payout=payout+fam_p-money; if (fam_p=q) head=q-next

26、; else q-next=fam_pnext; free(fam_p); fam_pnum=0; save(); printf(”ntt删 除 成 功 ); printf(nnt是否要继续选择删除?(是:1 / 否:0):); scanf(”d,&j); void modify(int a)/修改收入 struct family_financial *fam_p; int i,j=1,k; if(a=1) k=search(1); else k=search(0); if(k!=0) while(j!=0) printf(”n请输入你要修改的编号:”); scanf(%d,i); for(f

27、am_p=head;fam_p!=NULL;fam_p=fam_pnext) if(fam_p-num=i) if(a=1) income=income-fam_p-money; else payout=payout+fam_pmoney; printf(”nt 请修改记录nn”); printf(nt 请输入正确的姓名:”); scanf(”s,fam_pname); printf(nt 请输入正确的年份:”); scanf(”s”,fam_p-year); printf(”nt 请输入正确的月份:”); scanf(s”,fam_pmonth); printf(”nt 请输入正确的日期:)

28、; scanf(”%s,fam_p-day); if(a=1) printf(nt 请输入正确的收入金额:”); else printf(”nt 请输入正确的支出金额:);scanf(”%f,&fam_pmoney); if(a=1) income=income+fam_p-money; else payout=payoutfam_pmoney; fam_p-num=0; printf(ntt修 改 成 功 nn); save(); printf(nn是否要继续选择修改?(是:1 / 否:0):); scanf(%d”,j); void count(int a)/计算金额 struct fam

29、ily_financial fam_p,*q; for(q=fam_p=head;fam_p!=NULL;q=fam_p,fam_p=fam_p-next) if(fam_pz=1) income=income+fam_p-money; else payout=payout+fam_pmoney; if(a=2) printf(nntt 总 收 入:%。2f ”,income); printf(nntt 总 支 出:.2f ”,payout); printf(”nntt 合 计 总 额:。2f nn,income-payout);save();main() /以下是main函数 system(

30、”color 7c); init(); count(1); for(;;) switch(face() case 1: add(1);break; /添加收入 case 2: print(1);break; /显示收入 case 3: search(1);break; /查询收入 case 4: modify(1);break; /修改收入 case 5: del(1);break; /删除收入 case 6: add(0); break; /添加支出 case 7: print(0); break; /显示支出 case 8: search(0); break; /查询支出 case 9: modify(0); break; /修改支出 case 10: del(0);break; /删除支出 case 11: print(2); break; /显示所有记录 case 12: count(2);break; /统计总收入和总支出 case 0: printf(nnntt 再见,谢谢您的使用! nnn”); exit(0); break; /退出系统 save(); fflush(stdin);/*以保证调试输出可以在正确的时间输出/ system(”PAUSE”);

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 管理财经 > 财经会计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服