C语言课程设计家庭财务管理系统

上传人:ta****u 文档编号:139497819 上传时间:2022-08-22 格式:DOCX 页数:9 大小:19.81KB
收藏 版权申诉 举报 下载
C语言课程设计家庭财务管理系统_第1页
第1页 / 共9页
C语言课程设计家庭财务管理系统_第2页
第2页 / 共9页
C语言课程设计家庭财务管理系统_第3页
第3页 / 共9页
资源描述:

《C语言课程设计家庭财务管理系统》由会员分享,可在线阅读,更多相关《C语言课程设计家庭财务管理系统(9页珍藏版)》请在装配图网上搜索。

1、课程设计报告课程设计题目:家庭财务管理系统学生姓名:专业:信息工程班级:指导教师:2018年1月8日需求分析根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及支出进行记录和管理。该系统要求:家庭月收入管理家庭月支出管理统计家庭总收入/总支出系统提供收入/支出的添加、删除和修改功能。1. 总体设计根据以上分析,本家庭账务管理系统主要包括: 从键盘键入家庭月收入、月支出数据; 查询月收入、月支出明细; 删除收入、支出数据; 修改收入、支出数据; 统计总收入/总支出; 退出系统。除main()函数之外,系统还定义了以下函数来实现各部分内容: add_income():添加收

2、入数据函数。 add_payout():添加支出数据函数。 search_data():查找数据函数。 initialize():初始化函数,读取文本数据。 show_info():显示数据函数。 count_total():统计函数,统计总收入、总支出。 update_data():修改信息函数。 delete_data():删除数据函数。 quit():退出函数。2. 程序结构功能图如下详细设计3.1收入管理3.2支出管理测试结果2.1 程序运行主菜单2.2 添加收入测试2.3 查询收入明细测试2.4 删除收入测试2.5 修改收入测试2.6 添加支出测试2.7 查询支出明细测试2.8 删除

3、支出测试2.9 修改支出测试统计总收入/支出测试退出系统测试3. 软件操作使用说明书本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示),然后按照主界面菜单指引操作即可。4. 总结编写程序之前要有一个整体的思路,不能写到哪里算哪里。这样很容易遗漏,连续性也不好。通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。希望在以后的课程设计中对于知识的运用能够更加的熟练。代码:#include#include#include#include#defineMAXNAME11/家庭成员姓名的最大长度#defineMAXDETAIL21/注最大长度/自定义枚举类型fi_

4、type,用来表示收入与支出typedefenum_fi_typeincome=1,/收入payout=-1/支出fi_type;/家庭财务信息结构体typedefstruct_fi_infointyear;intmonth;fi_typetype;charname9;floatmoney;chardetail11;fi_info;/存储财务数据结构的结构体typedefstruct_fi_datafi_infoinfo;struct_fi_data*next;fi_data;fi_data*head;/财务数据的头结点voidmenu();/菜单函数voidadd_income();void

5、search_income();voiddelete_income();voidupdate_income();voidadd_payout();voidsearch_payout();voiddelete_payout();voidupdate_payout();voidcount_total();voidquit();/voidsearch_data(fi_typetype);voiddelete_data(fi_typetype);voidupdate_data(fi_typetype);/voidinitialize();voidsave_to_file();voidclear_dat

6、a();fi_data*get_last();fi_data*get_previous(fi_data*p);voidinput_info(fi_info*info);voidshow_info(fi_data*p);voidmenu()printf(n);printf(ttprintf(ttprintf(tttprintf(ttprintf(ttn);n);家庭财务管理系统n);n);n);printf(tt*n);printf(ttprintf(1.printf(2.printf(ttt3.printf(4.收入管理:);添加收入);查询收入明细n);删除收入);修改收入n);printf

7、(tt*n);printf(ttprintf(5.printf(6.printf(ttt7.printf(8.支出管理:);添加支出);查询支出明细n);删除支出);修改支出n);printf(ttprintf(9.统计:);统计总收入/总支出n);*printf(tt*n);printf(tt退出:0.退出系统n);printf(tt*nnn);voidmain()intselected=0;initialize();while(selected=0&selected请选择要进行的操作(0-9):);if(scanf(%d,&selected)!=1|selected9)printf(tt输

8、入有误!请选择(0-9)之间的数字!按任意键重试);getchar();elseswitch(selected)case0:exit(0);clear_data();break;case1:add_income();save_to_file();break;case2:search_income();break;case3:delete_income();save_to_file();break;case4:update_income();save_to_file();break;case5:add_payout();save_to_file();break;case6:search_payo

9、ut();break;case7:delete_payout();save_to_file();break;case8:update_payout();save_to_file();break;case9:count_total();break;voidadd_income()/添加收入fi_data*p=(fi_data*)malloc(sizeof(fi_data);p-next=NULL;input_info(&(p-info);p-info.type=income;if(head=NULL)head=p;elseget_last()-next=p;voidadd_payout()/添加

10、支出fi_data*p=(fi_data*)malloc(sizeof(fi_data);p-next=NULL;input_info(&(p-info);p-info.type=payout;if(head=NULL)head=p;elseget_last()-next=p;/输入函数voidinput_info(fi_info*info)printf(tt请输入年月(YYYY/M);scanf(%d/%d,&(info-year),&(info-month);printf(tt请输入家庭成员姓名(最大长度为%d):,MAXNAME-1);scanf(%s,info-name);printf

11、(tt输入金额:);scanf(%f,&(info-money);printf(tt请输入备注(最大长度为%d):,20);scanf(%s,info-detail);/查找数据函数voidsearch_data(fi_typetype)intyear=0;intmonth=0;fi_data*p=NULL;intcount=0;charinput=;while(1)printf(tt请输入要查询的年月(YYYY/M);if(scanf(%d/%d,&year,&month)!=2)printf(tt输入有误n);elsep=head;count=0;while(p!=NULL)if(p-in

12、fo.year=year)&(p-info.month=month)&(p-info.type=type)show_info(p);system(PAUSE);count+;p=p-next;if(count=0)printf(tt没有找到数据n);printf(tt继续查找其他数据?(yorn);input=getchar();if(input=y|input=Y)continue;elsebreak;/初始化函数,读取文本数据voidinitialize()FILE*fp=NULL;fi_data*p=NULL;fi_data*last=NULL;intcount=0;fp=fopen(d

13、ata.txt,rb);if(fp=NULL)fp=fopen(data.txt,w);fclose(fp);return;p=(fi_data*)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);p-next=NULL;while(fread(&(p-info),sizeof(fi_info),1,fp)=1)if(head=NULL)head=p;elselast=get_last();last-next=p;count+;fseek(fp,count*sizeof(fi_info),SEEK_SET);p=(fi_data*)malloc

14、(sizeof(fi_data);memset(p,0,sizeof(fi_data);p-next=NULL;free(p);p=NULL;fclose(fp);/显示信息函数voidshow_info(fi_data*p)inti=0;printf(|tt|tt|tt|tt|tt|tt|n);printf(|NO.t|年/月tt|类型tt|姓名tt|金额tt|备注tt|n);printf(|%5dt|%4d/%02dt|%4st|%10st|%10.2f|%20s|n,i+1,p-info.year,p-info.month,p-info.type=income?收入:支出,p-info.

15、name,p-info.money,p-info.detail);printf(|tt|tt|tt|tt|tt|tt|n);/统计总收入、总支出voidcount_total()floattotal_income=0.0;floattotal_payout=0.0;fi_data*p=head;while(p!=NULL)if(p-info.type=income)total_income+=p-info.money;elsetotal_payout+=p-info.money;p=p-next;printf(tt+tt+tt+n);printf(tt|合计收入t|合计支出t|结余t|n);p

16、rintf(tt%12.2f|%12.2f|%12.2f|n,total_income,total_payout,total_income-total_payout);printf(tt+tt+tt+n);printf(tt按任意键返回主菜单);getchar();getchar();/保存到文件voidsave_to_file()FILE*fp=fopen(data.txt,wb);fi_data*p=head;while(p!=NULL)fwrite(&(p-info),sizeof(fi_info),1,fp);fseek(fp,0,SEEK_END);p=p-next;fclose(f

17、p);/修改信息函数voidupdate_data(fi_typetype)intyear=0;intmonth=0;fi_data*p=NULL;fi_data*pre=NULL;charinput;intcount=0;inti=0;while(1)printf(tt请输入要查询的年月(YYYY/M);if(scanf(%d/%d,&year,&month)!=2)printf(tt输入有误n);elsep=head;count=0;while(p!=NULL)if(p-info.year=year)&(p-info.month=month)&(p-info.type=type)count

18、+;show_info(p);input_info(&(p-info);printf(tt修改成功n);p=get_previous(p);p=p-next;if(count=0)printf(tt没有找到数据n);printf(tt继续查找其他数据?(yorn);input=getchar();if(input=y|input=Y)continue;elsebreak;voiddelete_data(fi_typetype)/删除数据函数intyear=0;intmonth=0;fi_data*p=NULL;fi_data*pre=NULL;intcount=0;charinput=;int

19、i=0;while(1)printf(tt请输入要查询的年月(YYYY/M);if(scanf(%d/%d,&year,&month)!=2)printf(tt输入有误n);elsep=head;count=0;while(p!=NULL)if(p-info.year=year)&(p-info.month=month)&(p-info.type=type)count+;show_info(p);pre=get_previous(p);if(pre=NULL)head=head-next;elsepre-next=p-next;free(p);printf(tt删除成功n);p=p-next;

20、if(count=0)(yorn);printf(tt没有找到数据n);printf(tt继续查找其他数据?input=getchar();if(input=y|input=Y)continue;elsebreak;voidclear_data()/清空链表数据fi_data*p=NULL;while(head!=NULL)if(head-next!=NULL)p=head;head=head-next;free(p);p=NULL;elsefree(head);head=NULL;fi_data*get_last()fi_data*p=head;if(p=NULL)returnp;while

21、(p!=NULL)&(p-next!=NULL)p=p-next;returnp;fi_data*get_previous(fi_data*p)fi_data*previous=head;while(previous!=NULL)if(previous-next=p)break;previous=previous-next;returnprevious;voidsearch_payout()search_data(payout);voiddelete_payout()delete_data(payout);voidupdate_payout()update_data(payout);voidsearch_income()search_data(income);voiddelete_income()delete_data(income);voidupdate_income()update_data(income);

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!