版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、欧阳学创编欧阳学创编C语言程序设计报告时间:设计题目家庭财务记账糸统20学院:通信与信息工程学院年级:通信1101班组长:组员:2012年07月07日通信与信息工程学院实验报告设计题目:家庭财务记账系统一、程序设计的要求1、要求设计一个家庭财务的记录系统,记录家庭的收入、支出明细,并且对访问者有权限要求。2、要求写出设计报告,报告中要求写出总体设计框架和详细程序分析。欧阳学创编欧阳学创编3、6名学生分一组,选出组长共同完成。在报告中各个同学要明确写出自己所做的工作,并由组长认可评定。4、手写及设计方案均用A4制打印以便统一装订成册,并且要求上交电子文本。二、程序设计分组本小组成员共6个人,可评
2、出一个组长,其中有两人负责在图书管查资料,一人负责写实验报告,剩余4个人每人编辑若干个程序功能,并且在运行无误后交上.。三、程序设计环境硬件环境:每生一台机2.软件环境:Vc+6.0总体设计()功能模块设计添加收入信息主菜单中选择1的时候进行添加收入操作,系统调用add_income()函数来添加收入信息,首先建立单链表,函数调用input_info()函数提示用户输入收入信息,并存储到单链表中,输入完成后返回到主菜单界面。查询收入明细主菜单中选择2的时候进行查询收入明细操作,系统调用search_income()函数来查询收入的明细,调用search_data()函数来完成具体的查询操作。首
3、先提示用户输入要查询的年月,如果用户输入错误,给出输入错误的提示信息,如果用户输入正确,在单链表中查找该年月的收入信息,如果查找成功,按照指定格式显示找到的收入信息。每页显示9条收入信息,如果找到的收入信息多余9条,按空格键翻页。如果没有找到任何信息,系统给出提示信息。查找成功后提示用户是否继续查询操作,如果用户输入“Y”或“y”,则再次进行查询操作;否则,返回主菜单界面。删除收入信息主菜单中选择3的时候进行删除收入信息的操作,调用delete_data()函数进行删除收入的操作。首先提示用户输入要删除收入的年月,然后根据用户输入的年月信息在单链表中查找相关信息,如果查找成功调用show_in
4、fo()函数显示查找到的收入信息,每页最多显示9条信息,如果查找到的收入信息多余9条,则按空格键翻页,最后提示用户输入要删除的收入信息的序号,完成删除的操作。如果查找不成功,给出相应的提示信息。删除操作结束后,提示用户是否继续删除的操作,如果用户输入“Y”或“y”,则再次进行查询操作;否则,返回主菜单界面。更新收入信息主菜单中选择4的时候进行更新收入信息的操作,调用update_data()函数进行更新收入的操作。首先,提示用户输入要更新收入的年月,然后,根据用户输入的年月信息在单链表中查找相关信息。如果查找成功则调用show_info()函数,显示查找到的收入信息,每页最多显示9条信息;如果
5、查找到的收入信息多于9条,则按空格键翻页,最后提示用户输入要更新的收入信息的序号,调用input_info()函数,输入更新的收入信息,完成更新的操作。如果查找不成功,则给出相应的提示信息。更更新操作结束后,提示用户是否继续进行更新操作,如果用户输入“Y”或“y”,则再次进行查询操作;否则,返回主菜单界面。添加支出信息主菜单中选择5的时候进行添加支出操作,系统调用add_income()函数来添加支出信息。添加支出信息的操作与添加收入信息的操作相似。查询支出明细主菜单中选择6的时候进行查询支出明细操作,系统调用search_income()函数来查询支出的明细,调用search_data()函
6、数来完成具体的查询操作。查询支出明细的操作与查询收入明细的操作相似。删除支出信息主菜单中选择7的时候进行删除支出信息的操作,调用delete_data()函数进行删除支出的操作。删除支出的操作与删除收入的操作相似。更新支出信息主菜单中选择8的时候进行统计操作,调用update_data()函数进行更新支出的操作。更新支出的操作与更新收入的操作相似。统计收入、总支出后财务J己账系统主菜单中选择9的时候进行统计操作,调用count_total()函数进行总收入、总支出的统计。在单链表中,计算收入和支出的总和,并将两者想见得到家庭收入的结余,并按一定的格式显示出来。统计结束后,按任意键返回主菜单界面
7、。10.退出系统退出操作,据保存到文件,退出系统。I添家庭财务管理的功能模块如图所询示。删除支出修改支出主菜单中选择-0的时候退出系统,调用quit()函数进行先调用save-to-file()函数支出管将、单链表中的数再调用clear_data(函数清空单链表_最后IILI明细丿I家庭财务管理的功能模块(二)程序处理流程系统的执行应从系统菜单的选择开始,允许用户输入09之间的数值来选择要进行的操作,输入其他字符都是无效的,系统会给出错误的提示信息。若用户输入0,调用quit()退出系统;若输入一,则调用add_income()函数,进行添加输入操作;如输入2,则调用search_income
8、()函数,进行查询收入明细;若输入3,则调用delete_income函数,进行删除收入操作,若用户输入4,则调用update_income函数,修改收入操作;若输入5,则调用add_payout()函数,进行添加支出操作;若输入6,则调用search-payout()函数,进行查询支出明细操作;如输入7,则调用delete_payout(),进行删除支出操作;若输入8,则调用update_payout()函数,进行修改支出操作;若输入9,则调用counttotal()函数,进行统计总收入、总支出操作。其处理流程入图所示。建立单链表,调用input_info()函数,提示用户输入要添加的收入或
9、支出的信息;并将输入的信息存储到单链表中,输入完成后返回主菜单界面。查询操作提示用户输入查询的年月,如果用户提示错误,则给出相应的出错提示信息;如果用户输入正确,则根据用户输入的数据在单链表中查找收入或支出的信息。如果没有找到,则给出没有数据的提示;如果找到,则判断记录个数欧阳学创编是否小于9,如果小于9,直接显示结果,否则提示用户按空格翻页。查询操作的处理流程如图所示。欧阳学创编欧阳学创编开始否是输入正确?定义指针p指输入条否是提示错误提示没有数据结果个数是0?取得p指向节点的数据显示结果否否旦PP的值等于用是提示用户按空格键翻页结果个数9?是将p的值添加到结果中尸输入的条件?用尸翻页?欧阳
10、学创编P=p-next再次查询?清空结果结束2.查询操作欧阳学创编提示用户输入查询删除的年月,如果用户输入错误,则给出相应的出错提示信息;如果用户输入正确,则根据用户输入的数据在单链表中查找收入或支出的信息。如果没有找到,则给出没有数据的提示信息;如果找到,显示找到取得p指向节点的数否否是将p的值添加到结果中否是显示结果提示用户按数字键删除数据P是NULL?是.P=p-next提示用户按空格键翻页清空结果是结束用用尸番蘇?尸删j除第i删除链对应的乍表中值在结占老中删人宀除第i1值再次查询?4.修改操作首先提示用户输入查询的年月,如果用户输入错误,则给出相应的出错提示信息;如果用户输入正确,则根
11、据用户输入的数据在单链表中查找收入或支出的信息。如果没有找到,则给出没有数据的提示信息;如果找到,显示找到的记录信息,并提示用户输入序号进行修改操作。修改成功后给出相应的提示信息。修改的处理流程如图所示。用户输条件是否是P数为0?否否P的值等于用是户输入的条件?是结果个输入正确?欧阳学创编提示用户按数字键删除数据定义指针p指向头节点取得p指向节点的数提示没有数据提示错误显示结果欧阳学创编欧阳学创编常量定义#defineMAX_NAME11/*家庭成员姓名最大长度*/#defineMAX_DETAIL21/*备注最大长度*/#defineMENU_COUNT9/*菜单选项个数*/#defineD
12、ATA_FILEfs.dat/*数据文件文件名*/2数据结构定义(1)定义枚举,表示收入和支出typedefenum_fi_typeincome=1,/*收入*/payout=-1/*支出*/fi_type;(2)定义储存家庭财务信息的结构体typedefstruct_fi_infointyear;intmonth;fi_typetype;charnameMAX_NAME;floatmoney;chardetailMAX_DETAIL;fi_info;(3)定义储存财务数据结构的结构体typedefstruct_fi_datafi_infoinfo;struct_fi_data*next;fi
13、_data;3函数声明主菜单对应的处理函数voidadd_income();/*添加收入*/voidsearch_income();/*查询收入*/voiddelete_income();/*删除收入*/voidupdate_income();/*修改收入*/voidadd_payout();/*添加支出*/voidsearch_payout();/*查询支出*/voiddelete_payout();/*删除支出*/voidupdate_payout();/*修改支出*/voidcount_total();/*统计总收入总支出*/voidquit();/*退出*/主要处理函数voidsear
14、ch_data(fi_typetype);/*查询处理*/voiddelete_data(fi_typetype);/*删除处理*/voidupdate_data(fi_typetype);/*更新处理*/辅助函数voidmima();/*密码*/voidinitialize。;/*系统初始化*/voidsave_to_file();/*数据保存文件*/voidclear_data();/*清空链表数据*/fi_data*get_last();/*得到链表数据最后一个节点*/fi_data*get_previous(fi_data*p);/*取前一个节点*/voidinput_info(fi_
15、info*info);/*输入财务数据信息*/voidshow_info(fi_data*p,intcount);/*显示财务信息*/(二)模块设计文件包含#include#includestdlib.h#include#include定义一个头节点fi_data*head;常量定义以下是主菜单中要显示的字符。charmenu=n|家庭财务管理系统|n+n|收入管理|n|(1)添加收入|n|(2)查询收入|n|(3)删除收入|n|(4)修改收入|n+n|支出管理|n|(5)添加支出|n|(6)查询支出|n|(7)删除支出|n|(8)修改支出|n|(9)合计|+-|+-(0)退出|n4.定义函数
16、指针数组函数指针数组menu_main_func储存的是主菜单项中10个功能函数的地址,分别对应09菜单项。void(*menu_fun)()=quit,add_income,search_income,delete_income,update_income,add_payout,search_payout,delete_payout,update_payout,;5.主函数intmain()intseleted=0;mima();initialize();while(seleted=0&seleted请选择要进行的操作(d-%d),0,MENU_COUNT);if(scanf(%d,&sel
17、eted)!=1|seletedMENU_COUNT)printf(输入错误!请选择%d-%d之间的数,按任意键重试。,0,MENU_COUNT);fflush(stdin);getchar();elsemenu_funseleted();seleted=0;6.主菜单对应的处理函数添加收入函数名称:add_income函数功能:用户在主菜单中选择1的时候调用此函数,用来添加收入信息的操作。处理流程:首先建立链表,调用input_info()函数,提示用户输入输入信息,并将输入的信息储存到单链表中,输入完成后返回到主菜单界面。程序清单:voidadd_income()fi_data*p=(fi
18、_data*)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);p-next=NULL;input_info(&(p-info);p-info.type=income;if(head=NULL)head=p;elseget_last(head)-next=p;查询收入明细函数名称:search_income函数功能:用户在主菜单中选择2的时候调用此函数,用来查询收入明细的操作,函数中调用search_data()来完成收入明细的查询。程序清单:voidsearch_income()search_data(income);删除收入函数名称:del
19、ete_income函数功能:用户在主菜单中选择3的时候调用此函数,用来删除收入信息的操作。在函数中调用delete_data()来完成。程序清单:voiddelete_income()delete_data(income);修改收入函数名称:updata_income函数功能:用户在主菜单中选择4的时候调用此函数,用来修改收入信息的操作。函数中调用update_data()来完成的。程序清单:voidupdate_income()update_data(income);添加支出函数名称:add_payout函数功能:用户在主菜单中选择5的时候调用此函数,用来添加支出信息的操作。处理流程:首先
20、建立链表,调用input_info()函数,提示用户输入输入信息,并将输入的信息储存到单链表中,输入完成后返回到主菜单界面。程序清单:voidadd_payout()fi_data*p=(fi_data*)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);input_info(&(p-info);p-info.type=payout;if(head=NULL)head=p;elseget_last(head)-next=p;查询支出明细函数名称:search_payout函数功能:用户在主菜单中选择6的时候调用此函数,用来查询收入明细的操作,函
21、数中调用search_data()来完成收入明细的查询。程序清单:voidsearch_payout()search_data(payout);(7)删除支出函数名称:delete_payout函数功能:用户在主菜单中选择7的时候调用此函数,用来删除支出信息的操作。在函数中调用delete_data()来完成。程序清单:voiddelete_payout()delete_data(payout);修改支出函数名称:updata_payout函数功能:用户在主菜单中选择8的时候调用此函数,用来修改收入信息的操作。函数中调用update_data()来完成的。程序清单:voidupdate_pay
22、out()update_data(payout);统计总收入总支出函数名称:count_total函数功能:主菜单中选择9的时候进行统计的操作,在单链表中,计算收入和支出的总和,并将两者想减得到家庭收入的结余,并按一定的格式显示出来。程序清单:voidcounttotal()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;
23、printf(+n);printf(|合计收入|合计支出|结余|n);printf(+n);printf(|%12.2f|%12.2f|%12.2f|n,total_income,total_payout,total_income-total_payout);printf(+n);printf(按任意键返回主菜单。n);fflush(stdin);getchar();退出系统函数名称:quit函数功能:将链表中的数据释放,退出系统。程序清单:voidquit()save_to_file();clear_data();exit(0);7.主要处理函数(1)查询处理函数名称:search_data
24、函数功能:收入和支出的查询操作。处理流程:提示用户按照指定格式输入要查询的年月,如果用户输入错误,给出提示;如果用户输入正确,则在单链表中查找该年月的收入信息。如果查询成功,判断查询结果个数是否小于9,调用函数show_info()显示找到的收入信息;如果大于9,按空格进行翻页操作。如果没有找到任何信息,系统给出提示信息。提示用户是否继续查询,如果用户输入Y或y,则再次进行查询操作;否则,返回主菜单界面。程序清单:/*查询处理*/voidsearch_data(fi_typetype)intyear=0;intmonth=0;fi_data*p=NULL;fi_data*result9=NULL;intcount=0;charinput=;while(1)printf(请输入要查询的年月(例如:2009/1);if(scanf(%d/%d,&year,&month)!=2)printf(输入错误。n);elsep=head;count=0;memset(result,0,sizeof(fi_data*);while(p!=NULL)if(p-info.year=year&p-info.month=month&p-info.type=type)if(count9)resultcount=p;count+;elseshow_info(result,count);printf(输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025资产管理公司劳务合同模板
- 2025年短视频内容分发协议协议
- 2025年短视频内容创作合同协议(原创版权)
- 2025年短视频客服保密合同协议
- 2025关于养鸡场地租赁合同
- 2025合同范本,租赁合同范本参考
- 临时招工协议书
- 合作工程股东协议书
- 亚马逊w8免税协议书
- rtsp协议书播放器
- 学校体育发展五年规划(2025.9-2030.9)
- 2025年陇南市人民检察院司法警察辅助人员招聘考试笔试试题
- 2025北京市顺义区卫生健康委员会所属事业单位招聘额度人员14人笔试考试参考题库及答案解析
- 2025年绥化辅警招聘真题及答案
- 第十四章全等三角形章末复习课件-人教版数学八年级上册
- 人工智能行业现状与未来展望
- Unit3+Sports+and+fitness+一轮词汇复习+课件+-2026届高三英语人教版必修第一册
- 中国远洋海运2025校园招聘笔试历年参考题库附带答案详解
- 2025年工会社会工作者招聘笔试模拟试题库及答案
- GB/T 14996-2025变形高温合金冷轧板材和带材
- 人教版(2024)八年级上册地理第二章《中国的自然环境》大单元教学设计
评论
0/150
提交评论