版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程设计题目: 家庭财务管理系统学生姓名 :专业 : 信息工程班级 :指导教师 :1需求分析根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常 收入及支出进行记录和管理。该系统要求:家庭月收入管理家庭月支出管理 统计家庭总收入/总支出系统提供收入/支出的添加、删除和修改功能。2. 总体设计根据以上分析,本家庭账务管理系统主要包括: 从键盘键入家庭月收入、月支出数据; 查询月收入、月支出明细; 删除收入、支出数据; 修改收入、支出数据; 统计总收入/总支出; 退出系统。除main()函数之外,系统还定义了以下函数来实现各部分内容: add_income():添加收
2、入数据函数。 add_payout ():添加支出数据函数。 search_data ():查找数据函数。 ini tialize():初始化函数,读取文本数据。 show_info ():显示数据函数。 count_total ():统计函数,统计总收入、总支出。 update_data ():修改信息函数。 delete_data ():删除数据函数。 quit():退出函数。程序结构功能图如下:家庭财务管理系统收 入 管 理支111管理退计系已统3. 详细设计3.1收入管理3.2支出管理4.测试结果4.1程序运行主菜单室庭财务管理系统明细统退人1攵扎明细 攵人进行的操作佃月gi0nyy;
3、黠人裁器大长度英网皿iciHMXJCIHKBOCKJeKXXJtiM: W XU JC31X11JC J4JCJJ3):JitWKK UK X 收人 is=i-mo支出营理汚MtiMaKaiEKJtBOtKwaoiNJfacHxwiofmgxiEXJtsMJtaiEacKiCMKMaotaoEaoeaot 计汚统计总收2忘支出itSMiCKIf JtaCJifKJifiCXKMaOtNJCiClfNBriCirSMlCSMKKatmCHtKKlOfiOtXUKH冢庭财务管淫糸统回4.2添加收入测试Ci ndows11 system : 2DetsugFyyl. e e4.3查询收入明细测试溝漱
4、明细收入管理豊翻细 明 支支 沓-修 6 8出出支支加除i- 5 7 堆 菅 出 支统计汁统计总收人二总支出 退 岀词退岀系统请选择要进行的換作:2沁青输入要查询的穿月好匹肮”7年月1!20t3/09咲型;收入1008.00::备汪工资请按任意键畛心其也数据? 4.4删除收入测试4 hA*#. N*l* WUA AA貝VlAA, RHuW.MAAjAjfKj*nrrHnrwMnmmmMVirwvwnmrnimjrwHmmww耳XJOEXiMICMXX 3风*EKKKN 掛耳 XX 3E:MiMKliE XXXX斃入明细冢庭财务管理系统24岀羽细HX It JOOCJCKK JffKHKltK
5、UK KK KJClf UlflffKlt XKXKJtlt MKlTMlflKltiMKJC6.轉K科稱補稻耳港KiHPt耳轉齋黑禅齋清KiHKiM贰清料牺if清清秫齋啊轉M 统 计汁统计忌收入儿鼠支出 退 岀汨退岀系统 请选择雯迸行的操作個“竹诘切八耍查询的年月201-4/lII4iMO.i 月:类型:备汪1!2014Z01168.23 :lyy删除成功Pirss an key to cnnt-imie4.5修改收入测试M-:MJM)CJ:M Kil! XHJCXIOCW JtXJHXKKTHTHieTCJtXltJCJt J JtKKJC收A管理m添加收入趴查育3 删除收入屛其 N) B
6、Of MJtHBtiM 豪算 K:W 址耳英* 號豪 KJCMiMtiMlCiM K3f 號耳贰 Jt NJf 3 KZ输入年月(V/ri2013/2:lyy输入奈庭成员姓名(最大长度为丄少 输人眷注(最大长度为饷:工资.4.6添加支出测试冢庭财务管理糸统收入管理逍3-剃a” & 1-1梵耳菟耳址耳K MEJ, U资细支岀吩勰針诵面细U退岀:肌退出系统wwga行的操作=& S 殉入年月 VVV/M)2 013/1誌入家庭成負妊电(最大长度为丄4SWAWi=2M籍输黄審注嚎大长度加哄购物4.7查询支出明细测试I屜月II12O13Z01S作個海20i3/1:类型I支岀姓亡3*I金额2BB.00 I
7、倚汪购謝udviBiimiaufMawmwvwiviiBiwiuriVia-waufvawMiiw 家庭财务管理系统 nrrwmvwwwMwvwnrnmwmwwKirwwruYuwvwwsmwvrwnriffwwvnFiwrHnrhHwurwwrurunjw收初狒歓X NJf 孫 X N w2-04-W4翹:k轨耳NJieKH曲耳Hf*KTtM-E收入管理【2_LMJ4M XKJWJC JCXlMTeTW钿THt收入明纟田:攵入ME界貝其貝耳疑耳冥艮K耳KME界 界箕梵JOC 3KH M:耳NW算見其買梵就艮植耳拉算址舅覽如其支出管理汚一添加豆串査询支出阳细7-側除支田驭焉改支出:K“a :W
8、FjaNtf K Itf NJ* ;K“M; *M* :K hE 倚甘 1* 材 UIfrJtf N Jtfim;:M HH X 倨;M HU“a :M;:M :fcff 甘ik计=9 统计包收入/总支出退 出詬退出系统请选择要进行的操作0-”汐请辅入要査询的年月2013Z1;金额;#购物iNO.;年声月;类型:姓名II;1 iZUlJzoi:支岀 ilyy;删除成功Press any key to cont inue4.9修改支出测试支岀管理汗年帛类倒姓名金额备注12013/09300.00衣耶年/月农服2013/09裘型姓名金埶#?-支出200.00衣服家庭财务管理系统攵入明细 攵入6.查
9、询支岀明细 緘修改支出MM!” w屛 iwmt w W 弭 MM!也 Wimai WWW KX K W WI 誇科勢 * WK 禅弭闿胃冒 Wl统计汐统计总收入总支岀退出=0.退出系统: 8 2313/94.10统计总收入/支出测试家庭财务管理系绩奔偲曲!從ifeKif 肃!覽持仃打備障直*PtK義 貝*t 弹泛打応*祕收入管料:勰歆MMMMM K M -H * M M-耳 H 9( H 其 H 科碑其算 34 軾 M K M K J* M M M if H 冨 支出管陶:蔽薙二蠶超明细=HKliilf WW 甘审*1* *fW 材葺齋 If 脅 Kliflf 耳 W W MlliWmiFli
10、f 誉 W 材 ItflifafmfiMlfiMlf* 统 计=9 统计总牧入严总支出XSCIHMXXKXmeiMKIWXWIIKlMXSfXSCHmitWXXIKlMMtlWXiaKSfXSfXXmCNitl Jt=-Si 系绽K梵廉N:MM:f HME英展弭其脊比梵JKiMM:墟XW M: X X ME : t耒Jf XJK梵:梵賊X 梵耳 X连请选|星宴进齐的操作5-时沙 洽计收入;合计支岀:结余 !d734_G3I500.90142Jd.C31:世任苻一谴返回主茎4.11退出系统测试机机 2Z2222222Z家庭财务管理系统212XZZZZZZZ 仇 ZZZZZZZZZZ攵入询改 查修
11、 2 4 AA 攵文支岀管理心魏圭出6車询車岀明纟日 人冊!除支出8.修改支岀資乂快療关乂关賞关買关口廿賢吴買*買鬓賛買買冀買賞買賞買賞資賞快賞关缄关賞賞乂关口共賢统 廿,统计总收入/总支岀退岀:0 退岀系统 请选择要进行的操作0-9):0ress any key to continue.5.软件操作使用说明书本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示) 然后按照主界面菜单指引操作即可。6.总结编写程序之前要有一个整体的思路, 不能写到哪里算哪里。这样很容易遗漏,连 续性也不好。通过本次的课程设计让我对于数组、文件的存放、循环结构等知识 有了更加透彻的理解。希望在以后的课程
12、设计中对于知识的运用能够更加的熟 练。代码:#in elude #inelude #in elude #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 month;fi_type type;char name9;float money;
13、char detail11;fi_info;/ 存储财务数据结构的结构体typedef struct _fi_datafi_info info;struct _fi_data* next; fi_data;fi_data *head;/ 财务数据的头结点void menu();/ 菜单函数void add_income();void search_income();void delete_income();void update_income();void add_payout();void search_payout();void delete_payout();void update_pa
14、yout();void count_total();void quit();/void search_data(fi_type type);void delete_data(fi_type type);void update_data(fi_type type);/void initialize();void save_to_file();void clear_data();fi_data *get_last();fi_data *get_previous(fi_data *p);void input_info(fi_info *info);void show_info(fi_data *p)
15、;void menu()printf(n); printf(tt printf(tt printf(ttt printf(tt printf(ttn);n); 家庭财务管理系统 n);n);n);printf(tt*n);printf(tt printf(1. printf( 2. printf(ttt 3. printf( 4.收入管理 :); 添加收入 );查询收入明细 n); 删除收入 );修改收入 n);printf(tt*n);printf(tt printf(5. printf( 6. printf(ttt 7. printf( 8.支出管理 :); 添加支出 );查询支出明细 n
16、); 删除支出 );修改支出 n);printf(tt*n);printf(tt 统计:);printf(9.统计总收入 / 总支出 n);printf(tt*n);printf(tt 退出 :0. 退出系统 n);printf(tt*nnn);void main()int selected=0;initialize();while(selected=0&selected 请选择要进行的操作 (0-9):); if(scanf(%d,&selected)!=1|selected9)printf(tt 输入有误!请选择 (0-9) 之间的数字!按任意键重试 ); getchar();elsesw
17、itch(selected)case 0:exit(0);clear_data();break;case 1:add_income();save_to_file();break; case 2:search_income();break;case 3:delete_income();save_to_file();break; case 4:update_income();save_to_file();break; case 5:add_payout();save_to_file();break; case 6:search_payout();break;case 7:delete_payout
18、();save_to_file();break;case 8:update_payout();save_to_file();break; case 9:count_total();break;void add_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;void add_payout()/ 添加支出fi_data *p=(fi_d
19、ata *)malloc(sizeof(fi_data); p-next=NULL;input_info(&(p-info);p-info.type=payout; if(head=NULL) head=p;elseget_last()-next=p;/ 输入函数void input_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(tt输
20、入金额 :);scanf(%f,&(info-money);printf(tt请输入备注 ( 最大长度为 %d):,20);scanf(%s,info-detail);/ 查找数据函数void search_data(fi_type type)int year=0;int month=0;fi_data *p=NULL;int count=0;char input= ;while(1)printf(tt 请输入要查询的年月 (YYYY/M); if(scanf(%d/%d,&year,&month)!=2)printf(tt 输入有误 n);elsep=head;count=0; while(
21、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(tt没有找到数据 n);printf(tt继续查找其他数据? (y or n);input=getchar();if(input=y|input=Y) continue;else break;/ 初始化函数,读取文本数据void initialize()FILE * fp=NULL;fi_data *p=NULL;fi_data *
22、last=NULL;int count=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*s
23、izeof(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);/ 显示信息函数void show_info(fi_data *p)int i=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|%20
24、s|n,i+1,p-info.year,p-info.month,p-info.type=income?收入: 支出 ,,p-info.money,p-info.detail);printf(|tt|tt|tt|tt|tt|tt|n);/ 统计总收入、总支出void count_total()float total_income=0.0;float total_payout=0.0;fi_data *p=head;while(p!=NULL)if(p-info.type=income)total_income+=p-info.money;elsetotal_payout+
25、=p-info.money;p=p-next;printf(tt+tt+tt+n);printf(tt|合计收入t|合计支出t|结余t|n);printf(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();/ 保存到文件void save_to_file()FILE *fp=fopen(data.txt,wb );fi_data *p=head;while(p!=NUL
26、L) fwrite(&(p-info),sizeof(fi_info),1,fp);fseek(fp,0,SEEK_END);p=p-next;fclose(fp);/ 修改信息函数void update_data(fi_type type) int year=0;int month=0;fi_data *p=NULL;fi_data *pre=NULL;char input;int count=0;int i=0;while(1) printf(tt 请输入要查询的年月 (YYYY/M);if(scanf(%d/%d,&year,&month)!=2)printf(tt 输入有误 n);el
27、sep=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(tt 修改成功 n);p=get_previous(p);p=p-next;if(count=0)printf(tt 没有找到数据 n);printf(tt 继续查找其他数据? (y or n); input=getchar();if(input=y|input=Y) continue;elsebreak;void delete_data(fi_type type)/删除数据函数int year=0;int month=0;fi_data *p=NULL;fi_data *pre=NULL;int count=0;char input= ;int i=0;while(1) printf(tt 请输入要查询的年月 (YYYY/M); if(scanf(%d/%d,&year,&month)!=2)printf(tt 输入有误 n);elsep=head;count=0; while(p!=N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 硅胶材料制品工项目投资计划书
- 2025-2030智慧城市基础设施行业市场发展现状分析及趋势探索与投资潜力研究报告
- 2025-2030智慧城市交通系统规划布局研究及自动驾驶技术应用及管理协调
- 2025-2030智慧图书馆建设现状深度分析以及电子借阅技术应用规划指南
- 2025-2030智慧医疗系统投建策略与商业化运作研究报告
- 2025-2030智慧医疗影像设备行业市场供需分析及投资评估规划分析研究报告
- 2025-2030智慧医疗健康服务体系建设与商业模式创新可行性分析报告
- 2025-2030智慧冷链物流系统制造产业市场竞争态势分析及投资布局方向研究报告
- 2025-2030智慧农业装备行业技术现状研讨投资评估发展方向规划分析报告
- 2025-2030智慧农业行业市场竞争力分析与技术应用拓展与投资合作机会研究
- TSDPIA 05-2022 宠物猫砂通用技术规范
- 人教版PEP英语小学五年级下册《全册配套》课件
- 护理心理学心理应激-课件
- 信用卡风险管理介绍课件
- 「人教版」小学三年级上册数学全册优质课教学设计
- OSPF路由协议理论及配置(共23张PPT)
- 《对数函数的概念y=logx的图像和性质》 教学课件
- 人字扒杆安装注意事项
- 《铁路机车运用管理规程》
- DB11-T1448-2017城市轨道交通工程资料管理规程
- 费森尤斯卡比中国临床营养业务研究报告
评论
0/150
提交评论