您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > C语言课程设计——家庭财务管理系统
课程设计报告课程设计题目:家庭财务管理系统学生姓名:专业:信息工程班级:指导教师:2018年1月8日1.需求分析根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及支出进行记录和管理。该系统要求:①家庭月收入管理②家庭月支出管理③统计家庭总收入/总支出④系统提供收入/支出的添加、删除和修改功能。2.总体设计根据以上分析,本家庭账务管理系统主要包括:①从键盘键入家庭月收入、月支出数据;②查询月收入、月支出明细;③删除收入、支出数据;④修改收入、支出数据;⑤统计总收入/总支出;⑥退出系统。除main()函数之外,系统还定义了以下函数来实现各部分内容:①add_income():添加收入数据函数。②add_payout():添加支出数据函数。③search_data():查找数据函数。④initialize():初始化函数,读取文本数据。⑤show_info():显示数据函数。⑥count_total():统计函数,统计总收入、总支出。⑦update_data():修改信息函数。⑧delete_data():删除数据函数。⑨quit():退出函数。程序结构功能图如下:3.详细设计3.1收入管理3.2支出管理4.测试结果3.3程序运行主菜单5.添加收入测试6.查询收入明细测试7.删除收入测试8.修改收入测试9.添加支出测试10.查询支出明细测试11.删除支出测试12.修改支出测试13.统计总收入/支出测试14.退出系统测试15.软件操作使用说明书本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示),然后按照主界面菜单指引操作即可。16.总结编写程序之前要有一个整体的思路,不能写到哪里算哪里。这样很容易遗漏,连续性也不好。通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。希望在以后的课程设计中对于知识的运用能够更加的熟练。代码:#includestdio.h#includestdlib.h#includestring.h#includeconio.h#defineMAXNAME11//家庭成员姓名的最大长度#defineMAXDETAIL21//注最大长度//自定义枚举类型fi_type,用来表示收入与支出typedefenum_fi_type{income=1,//收入payout=-1//支出}fi_type;//家庭财务信息结构体typedefstruct_fi_info{intyear;intmonth;fi_typetype;charname[9];floatmoney;chardetail[11];}fi_info;//存储财务数据结构的结构体typedefstruct_fi_data{fi_infoinfo;struct_fi_data*next;}fi_data;fi_data*head;//财务数据的头结点voidmenu();//菜单函数voidadd_income();voidsearch_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_data();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(\t\t~~~~~~~~~~~~~~~~~~~~~~\n);printf(\t\t~~~~~~~~~~~~~~~~~~~~~~\n);printf(\t\t\t家庭财务管理系统\n);printf(\t\t~~~~~~~~~~~~~~~~~~~~~~\n);printf(\t\t~~~~~~~~~~~~~~~~~~~~~~\n);printf(\t\t*******************************************\n);printf(\t\t收入管理:);printf(1.添加收入);printf(2.查询收入明细\n);printf(\t\t\t3.删除收入);printf(4.修改收入\n);printf(\t\t*******************************************\n);printf(\t\t支出管理:);printf(5.添加支出);printf(6.查询支出明细\n);printf(\t\t\t7.删除支出);printf(8.修改支出\n);printf(\t\t*******************************************\n);printf(\t\t统计:);printf(9.统计总收入/总支出\n);printf(\t\t*******************************************\n);printf(\t\t退出:0.退出系统\n);printf(\t\t*******************************************\n\n\n);}voidmain(){intselected=0;initialize();while(selected=0&&selected=9){system(cls);menu();printf(\t\t请选择要进行的操作(0-9):);if(scanf(%d,&selected)!=1||selected0||selected9){printf(\t\t输入有误!请选择(0-9)之间的数字!按任意键重试);getchar();}else{switch(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_payout();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()//添加支出{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(\t\t请输入年月(YYYY/M));scanf(%d/%d,&(info-year),&(info-month));printf(\t\t请输入家庭成员姓名(最大长度为%d):,MAXNAME-1);scanf(%s,info-name);printf(\t\t输入金额:);scanf(%f,&(info-money));printf(\t\t请输入备注(最大长度为%d):,20);scanf(%s,info-detail);}//查找数据函数voidsearch_data(fi_typetype){intyear=0;intmonth=0;fi_data*p=NULL;intcount=0;charinput='';while(1){printf(\t\t请输入要查询的年月(YYYY/M));if(scanf(%d/%d,&year,&month)!=2){printf(\t\t输入有误\n);}else{p=head;count=0;while(p!=NULL){if((p-info.year==year)&&(p-info.month==month)&&(p-info.type==type)){show_info(p);system(PAUSE);count++;}p=p-next;}if(count==0){printf(\t\t没有找到数据\n);}printf(\t\t继续查找其他数据?(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(data.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;else{last=get_last();last-next=p;}count++;fseek(fp,count*sizeof(fi_info),SEEK_SET);p=(fi_data*)malloc(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(|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n);printf(|NO.\t|年/月\t\t|类型\t\t|姓名\t\t|金额\t\t|备注\t\t|\n);printf(|%5d\t|%4d/%02d\t|%4s\t|%10s\t|%10.2f|%20s|\n,i+1,p-info.year,p-info.month,p-info.type==income?收入:支出,p-info.name,p-info.money,p-info.detail);printf(|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n);}//统计总收入、总支出voidcount_total(){floattotal_income=0.0;floattotal_payout=0.0;fi_data
本文标题:C语言课程设计——家庭财务管理系统
链接地址:https://www.777doc.com/doc-6261192 .html