C语言课程设计家庭财务管理系统.docx
- 文档编号:6506990
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:25
- 大小:209.94KB
C语言课程设计家庭财务管理系统.docx
《C语言课程设计家庭财务管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计家庭财务管理系统.docx(25页珍藏版)》请在冰豆网上搜索。
C语言课程设计家庭财务管理系统
课程设计报告
课程设计题目:
家庭财务管理系统
学生姓名:
专业:
信息工程
班级:
指导教师:
1•需求分析
根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及支出进行记录和管理。
该系统要求:
①家庭月收入管理②家庭月支出管理
3统计家庭总收入/总支出④系统提供收入/支出的添加、删除和修改功能。
2.总体设计
根据以上分析,本家庭账务管理系统主要包括:
1从键盘键入家庭月收入、月支出数据;
2查询月收入、月支出明细;
3删除收入、支出数据;
4修改收入、支出数据;
5统计总收入/总支出;
6退出系统。
除main()函数之外,系统还定义了以下函数来实现各部分内容:
1add_income():
添加收入数据函数。
2add_payout():
添加支出数据函数。
3search_data():
查找数据函数。
4initialize():
初始化函数,读取文本数据。
5show_info():
显示数据函数。
6count_total():
统计函数,统计总收入、总支出。
7update_data():
修改信息函数。
8delete_data():
删除数据函数。
9quit():
退出函数。
程序结构功能图如下:
家庭财务管理系统
收入管理
支
111
管
理
退
niw
计系
七统
3.详细设计
3.1收入管理
3.2支出管理
4.测试结果
4.1程序运行主菜单
室庭财务管理系统
明细
统
退
A
>S
文人明细攵人
迁行的操作佃
月CY¥¥¥/h)2013/l
展成貝姓宕〔最大长SS10>:
lyy
;黠人裁器大长財网皿ic
!
HM:
M:
J : MJ<: MJ<: M・: : W! M: ]MXUKJ! .JC31X11JCJ4JCJ 3-19W 支±ta=s mesma 计汚•统计总忘支出 itSMiCKIfJtaCJifKJifiCXKMaOtNJCiClfNinCirSMlCSMKKacmCHtKKlOfiOtXUKH 冢庭财务管淫系统 回 4.2添加收入测试 C牝INindowe11systemz2\Debug\Fyyl.e 4.3查询收入明细测试 溝漱明细 收入管理豊翻 细明支支沓-修 ■■ 68 出出 支支 加除 i ■-« 57 ■■ 堆菅出支 统计汁•统计总收人二总支出退岀词•退岀系统 '请选择要进行的換作<0-9>: 2 沁青输入要查询的穿月好匹肮”7 请按任意键畛心其也数据? 4.4删除收入测试 4hA*#.N*l*WUAAA貝VlAA,RHuW.MAAjAjfKj* •nrrHnrwMnmmmMVirwvwnmrnimjrwHmmww 耳XJOEXiMICMXX3<风*<耳XMI>EKKKN掛耳XX3 MiMKliEXXXX斃 入明细 冢庭财务管理系统 2 4 HXItJOOCJCKKJffKHKltKUKKKKJClfUlflffKltXKXKJtltMKlTMlflKltiMKJC 6. 轉K科稱補稻耳港KiHPt■耳轉齋■黑禅齋■清KiHKiM贰清料牺if清清秫齋啊轉M统计汁•统计忌收入儿鼠支出 退岀汨•退岀系统》请选择雯迸行的操作個“竹 》诘切八耍查询的年月<¥¥Wzf1>201-4/l II4 》删除成功 Pi^rssan^keytocnnt-imie 4.5修改收入测试 ■M- : MJM)CJ<: MK]il! XHJCXIOCWJtXJHXKKTHTHieTCJtXltJCJtJ 收A管理m添加收入趴查育 3•删除收入 屛・其N■)«BOfMJtHBtiM豪算K: W址耳英*號豪KJCMiMtiMlCiMK3f號耳贰JtNJf3 「查询支出明细 8•修改支出 统计也统计创"辺吏出 退出: 肌退出系纟充 输入年月(¥¥¥V/ri>2013/2 输入奈庭成员姓名(最大长度为丄少输人眷注(最大长度为饷': 工资. 4.6添加支出测试 冢庭财务管理糸统 收入管理』逍 3-剃 a ”■■&■»■1- 1梵耳菟耳址耳KMEJ ] 「, ■U 资细 支岀吩勰針诵 面细 」 U 退岀: 肌退出系统 >wwga行的操作<0-9>=&>'S殉入年月 »誌入家庭成負妊电(最大长度为丄4S WAWi=2M 籍输黄審注嚎大长度加哄购物 4.7查询支出明细测试 ■udviBiimiaufMawmwvwiviiBiwiuriVia^-waufvawMiiw家庭财务管理系统nrrwmvwwwMwvwnrnmwmwwKirwwruYuwv ■wwsmwvrwnriffwwvnFiwrHnrhHwurwwrurunjw 收初狒歓 XNJf孫XNw 2-0 4-W 4翹: k轨耳NJieKH曲耳><嵐耳昶x*入明细 攵人 ^41HLMLJ^LJR 支岀管瑋汚•探加支出巴删除支出 般护细 绕i+=? .^^fcA/.aSS emer 退 S: 0-iai系绕 i■ 奮按任意键继续.'• 4.8删除支出测试 泉庭财务管理系统 ME界貝其貝耳疑耳冥艮K耳KME界]<界箕梵JOC3KHM: 耳NW算見其買梵就艮植耳拉算址舅覽如其 支出管理汚一添加豆串「査询支出阳细 7-側除支田驭焉改支出 : K“a<: WFjaNtfKItfNJ*;K“M;*M*: KhE倚甘1*材UIfrJtfNJtfim;: MHHX倨;MHU“a<: M;: M: fcff甘 ik计=9•统计包收入/总支出 退出詬•退出系统 》请选择要进行的操作<0-”汐 》请辅入要査询的年月 ;N0.;年声月;类型: 姓名 I I ;1i2U13z(»l;支岀ilyy ';删除成功 Fr«ssan 4.9修改支出测试 支岀管理汗 hlWIH■冒! wK■! MKtilKWWW弭屛轉岸屛耐忖岸弭昇K屛利K■统计汐•统计总收入"总支岀 退出=0.退出系统 <¥¥¥¥/H>2313/9 缺辭晋廠 农服 4.10统计总收入/支出测试 家庭财务管理系绩 niiMHivmMiFWW-rwwwiMHrwawui'WHiiaviivwiw%' >谙选«婪进行的操作<0-9>=? 合计收入 d734-63 4.11退出系统测试 JkWIV^JkWAWWANWJJUVUVUVUVLrAHKJtfUJUAJ 餾才务管理系统 nsrwnwrsmmmrmxmnrjwrKmnrwwirirKmHVMYU1 0明ll-Lk 沓一修 AAs济册 支岀管理=s.a支岀「査询支岀明纟日 厂冊! 除支岀鉄慘改支出 统计伙统计施收人/总支出 整减穽姒整址整買址M址賢宾貝MIC軒慕配X慕X穽穽姒整过整肚址號址賢W貝退出©退岀系统 科耳科if料K議耳濟科刺誉河耳■耳HilfXi芹jf科齋番齋耳豪屛耳科■科iOfif議耳濟耳刺誉舞耳 精选摄萝进1亍的操作d旳 rcssanykeytocontinue. 5.软件操作使用说明书 本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示)然后按照主界面菜单指引操作即可。 6.总结 编写程序之前要有一个整体的思路,不能写到哪里算哪里。 这样很容易遗漏,连续性也不好。 通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。 希望在以后的课程设计中对于知识的运用能够更加的熟练。 代码: #inelude #inelude #inelude #ineludevconio.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」nfo; //存储财务数据结构的结构体 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 printf("\t\t printf("\t\t\t printf("\t\t printf("\t\t printf("\t\t***************************************** printf("\t\t printf("1. printf("2. printf("\t\t\t3. printf("4. 支出管理: "); 添加支出"); 查询支出明细\n");删除支出"); 修改支出\n"); printf("\t\t*******************************************\n")・ printf("\t\t printf("5. printf("6. printf("\t\t\t7. printf("8. 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=O; initialize(); while(selected>=0&&selected<=9) { system("cls"); menu(); printf("\t\t>请选择要进行的操作(0-9): "); if(scanf("%d",&selected)! =1||selected<0||selected>9) { printf("\t\t>输入有误! 请选择(0-9)之间的数字! 按任意键重试"); getchar(); } else { switch(selected) { caseO: exit(O);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; else get_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; else get_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); seanf("%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⑴ { 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; else break; } } } //初始化函数,读取文本数据 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」nfo(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*p=head; while(p! =NULL) { if(p->info.type==income) { total_income+=p->info.money; } else { total_payout+=p->info.money; } p=p->next; } printf("\t\t+\t\t+\t\t+\n"); printf("\t\t|合计收入\t|合计支出\t|结余\t|\n"); printf("\t\t%12.2f|%12.2f|%12.2f|\n",total_income,total_payout,total_income-total_payout); printf("\t\t+\t\t+\t\t+\n"); printf("\t\t>按任意键返回主菜单"); 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,O,SEEK_END); p=p->next; } fclose(fp); } //修改信息函数 voidupdate_data(fi_typetype) {intyear=0; intmonth=0; fi_data*p=NULL; fi_data*pre=NULL; charinput; intcount=0; inti=0; 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)) { count++; show_info(p); input_info(&(p->info)); printf("\t\t修改成功\n"); P=get_previous(p); } p=p->next; } if(count==0) printf("\t\t>没有找到数据\n"); printf("\t\t>继续查找其他数据? (yorn)"); input=getchar(); if(input=='y'||input=='Y') continue; else break; } } } voiddelete_data(fi_typetype)//删除数据函数 { intyear=0; intmonth=0; fi_data*p=NULL; fi_data*pre=NULL; intcount=0; charinput=': inti=0; while (1) {printf("\t\t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 家庭 财务管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)