C语言课程设计——家庭财务管理系统_第1页
C语言课程设计——家庭财务管理系统_第2页
C语言课程设计——家庭财务管理系统_第3页
C语言课程设计——家庭财务管理系统_第4页
C语言课程设计——家庭财务管理系统_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

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

2、e():添加收入数据函数。 add_payout ():添加支出数据函数。 search_data ():查找数据函数。 ini tialize():初始化函数,读取文本数据。 show_info ():显示数据函数。 count_total():统计函数,统计总收入、总支出。 update_data ():修改信息函数。 delete_data ():删除数据函数。 quit():退出函数。程序结构功能图如下:3. 详细设计3.1收入管理3.2支岀管理4. 测试结果4.1程序运行主菜单4.2添加收入测试4.3查询收入明细测试4.4删除收入测试4.5修改收入测试4.6添加支出测试4.7查询支出

3、明细测试4.8删除支出测试4.9修改支出测试 4.10统计总收入/支出测试 4.11退出系统测试5. 软件操作使用说明书本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示), 然后按照主界面菜单指引操作即可。6. 总结编写程序之前要有一个整体的思路,不能写到哪里算哪里。这样很容易遗漏,连续性也不好。通过本次的课程设计让我对于数组、文件的存放、循环结构等知识 有了更加透彻的理解。希望在以后的课程设计中对于知识的运用能够更加的熟 练。代码:#in elude <stdio.h>#inelude <stdlib.h>#in elude <stri ng.h&

4、gt;#in elude vconi o.h>#defi ne MAXNAME 11 /家庭成员姓名的最大长度#define MAXDETAIL 21/ 注最大长度/自定义枚举类型fi_type,用来表示收入与支出typedef enum _fi_typein come=1, 收入payout =-1 / 支出 fi_type;/家庭财务信息结构体typedef struct _fi_infoint year;int mon th;fi_type type;char n ame9;float mon ey;char detail11;fi_i nfo;/存储财务数据结构的结构体typed

5、ef struct _fi_datafi_info info;struct _fi_data* n ext; fi_data;fi_data *head;财务数据的头结点void menu ();/菜单函数void add_ in come();void search_ in come();void delete_ in come();void update_ in come();void add_payout();void search_payout();void delete_payout();void update_payout();void coun t_total();void qu

6、it();/void search_data(fi_type type); void delete_data(fi_type type);void update_data(fi_type type); /void in itialize();void save_to_file();void clear_data();fi_data *get_last();fi_data *get_previous(fi_data *p); void in put_ in fo(fi_ info *in fo);void show_i nfo(fi_data *p);void menu() prin tf(&q

7、uot;n");prin tf("tt prin tf("tt prin tf("ttt prin tf("tt prin tf("tt家庭财务管理系统n");收入管理:");添加收入");查询收入明细n"); 删除收入");修改收入n");prin tf("tt*n")prin tf("ttprin tf("1.printf(" 2.prin tf("ttt 3.printf(" 4.支出管理:"

8、;);添加支出");查询支出明细n"); 删除支出");修改支出n");prin tf("tt*n")prin tf("ttprin tf("5.printf(" 6.prin tf("ttt 7.printf(" 8.prin tf("tt*n")prin tf("tt统 计:");printf("9.统计总收入/总支出n");prin tf("tt*n")printf("tt退 出:0.退出系

9、统 n");prin tf("tt* *、nnn");void mai n()int selected=O;in itialize();while(selected>=0&&selected<=9)system("cls");menu();printf("tt>请选择要进行的操作(0-9):");if(sca nf("%d", &selected)!=1|selected<0|selected>9)printf("tt>输入有误!请选择

10、(0-9)之间的数字!按任意键重试");getchar();elseswitch(selected)case 0:exit(0);clear_data();break;case 1:add_ in come();save_to_file();break;case 2:search_ in come();break;case 3:delete_ in come();save_to_file();break;case 4:update_ in come();save_to_file();break;case 5:add_payout();save_to_file();break;case

11、 6:search_payout();break;case 7:delete_payout();save_to_file();break;case 8:update_payout();save_to_file();break; case 9:co un t_total();break;void add_ in come()添加收入fi_data *p=(fi_data *)malloc(sizeof(fi_data);p-> next=NULL;in put_i nfo(&(p->i nfo);p->in fo.type=in come;if(head=NULL)he

12、ad=p;elseget_last()->n ext=p;void add_payout()添加支出fi_data *p=(fi_data *)malloc(sizeof(fi_data);p-> next=NULL;in put_i nfo(&(p->i nfo);p->in fo.type=payout;if(head=NULL)head=p;elseget_last()->n ext=p;/输入函数void in put_i nfo(fi_i nfo *info)printf("tt>请输入年月(YYYY/M)");sca

13、nf("%d/%d",&(in fo->year),&(in fo->mo nth);prin tf("tt>请输入家庭成员姓名(最大长度为d):",MAXNAME-1);sca nf("%s",i nfo-> name);printf("tt>输入金额:");sca nf("%f",&(i nfo->mo ney);printf("tt>请输入备注(最大长度为%d):",20);sca nf("%s

14、",i nfo->detail);/查找数据函数void search_data(fi_type type)int year=0;int mon th=0;fi_data *p=NULL;int coun t=0;char in put=':while(1)prin tf("tt>请输入要查询的年月(YYYY/M)");if(sca nf("%d/%d", &year,&mon th)!=2)printf("tt>输入有误 n");elsep=head;coun t=0;while(

15、p!=NULL)if(p->in fo.year=year)&&(p->info.mon th=month)&&(p->in fo.type=type)show_ in fo(p);system("PAUSE");coun t+;p=p->n ext;if(co un t=0)printf("tt>没有找到数据n");prin tf("tt>继续查找其他数据?(y or n)");in put=getchar();if(i nput='y'|i npu

16、t='Y')con ti nue;elsebreak;/初始化函数,读取文本数据void in itialize()FILE * fp=NULL;fi_data *p=NULL;fi_data *last=NULL;int coun t=0;fp=fope n( "data.txt","rb");if(fp=NULL)fp=fope n( "data.txt","w");fclose(fp);retur n;p=(fi_data*)malloc(sizeof(fi_data);memset(p,0,

17、sizeof(fi_data);p-> next=NULL;while(fread(&(p->in fo),sizeof(fi_ in fo),1,fp)=1)if(head=NULL)head=p;elselast=get_last();last- >n ext=p;coun t+;fseek(fp,cou nt*sizeof(fi_i nfo),SEEK_SET);p=(fi_data *)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);p-> next=NULL;free(p);p=NULL;fclose

18、(fp);II显示信息函数void shownfo(fi_data *p)int i=0;prin tf("|tt|tt|tt|tt|tt|tt|n");printf("|NO.t |年I 月 tt| 类型 tt| 姓名 tt| 金额 tt| 备注 tt|n");prin tf("|%5dt|%4d/%02dt|%4st|%10st|%10.2f|%20s|n",i+1,p->info.year,p->info.month,p->info.type=income?"收入":"支出&quo

19、t;,p->info.n ame,p->info.mon ey,p->in fo.detail);prin tf("|tt|tt|tt|tt|tt|tt|n");/统计总收入、总支出void coun t_total()float total_ in come=0.0;float total_payout=0.0;fi_data *p=head;while(p!=NULL)if(p->in fo.type=in come)total_ in come+=p->info.mon ey;elsetotal_payout+=p->info.mo

20、n ey;p=p->n ext;prin tf("tt+tt+tt+n");prin tf("tt%12.2f|%12.2f|%12.2f|n",total_i ncome,total_payout,total_i ncome -total_payout);prin tf("tt+tt+tt+n");printf("tt>按任意键返回主菜单");getchar();getchar();/保存到文件void save_to_file()FILE *fp=fope n("data.txt"

21、;,"wb");fi_data *p=head;while(p!=NULL)fwrite(&(p->i nfo),sizeof(fi_i nfo),1,fp);fseek(fp,O,SEEK_END);p=p->n ext;fclose(fp);/修改信息函数void update_data(fi_type type) int year=0;int mon th=0;fi_data *p=NULL;fi_data *pre=NULL;char in put;int coun t=0;int i=0;while(1) prin tf("tt>

22、;请输入要查询的年月(YYYY/M)");if(sca nf("%d/%d", &year,&mon th)!=2)printf("tt>输入有误 n");elsep=head;coun t=0;while(p!=NULL)if(p->in fo.year=year)&&(p->info.mon th=month)&&(p->in fo.type=type)coun t+;show_ in fo(p);in put_i nfo(&(p->i nfo);prin

23、tf("tt修改成功 n");P=get_previous(p);p=p->n ext;if(co un t=0)printf("tt>没有找到数据n");prin tf("tt>继续查找其他数据?(y or n)");in put=getchar();if(i nput='y'|i nput='Y')con ti nue;elsebreak;void delete_data(fi_type type)/删除数据函数int year=0;int mon th=0;fi_data *p=

24、NULL;fi_data *pre=NULL;int coun t=0;char in put=':int i=0;while(1) prin tf("tt>请输入要查询的年月(YYYY/M)");if(sca nf("%d/%d",&year,&mo nth)!=2)printf("tt>输入有误 n");elsep=head;coun t=0;while(p!=NULL)if(p->in fo.year=year)&&(p->info.mon th=month)&&(p->in fo.type=type) coun t+;show_ in fo(p);pre=get_previous(p); if(pre=NULL) head=head->n ext;elsepre->n ext=p->n ext;free(p);printf("tt>删除成功 n");p=p->n ext;if(co un t=0)printf

温馨提示

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

评论

0/150

提交评论