




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档#includenstdio.hH#includcvstdlib.hn#dcfine MAX.NAME 11#dcfineMAX_DETAIL21#define MENU.COUNT 9#dcfine DATA_FILE Mfa.datH typedef wnum_fijype (income=l,payout=-lIfijype;typedef stnict.fijnfo (int year;int month;fijype type;char nanie|MAX_NAME;float money;char detaill MAX.DETAIL;JfiJnfo;typedef stnic
2、t_fi_data (fijnfo info;struct fi data *next;fi_data;void addJncomeO;void search_income();void dcleteJncomeO;void updateJnconicO;void add_payout();void search_payout();void delete_payout();void update_payout():void countjotal();void quit();void search_data(fi_type type);void delete_data(fi_type type)
3、;void update_data(fi_type type);void initialize();void savejo_file();void clear_data();fi.data *get_last();fi_data *get_previous(fi_data *p);void input_info(fijnfo *info);void show_info(fi_data *p,int count);fLdata *head;char mcnun=”1家庭财务管理系统lnM”+nH"I收入管理ln"”11添加收入lnMMl2查询收入明细lnMnl3删除收入lnM
4、”14修改收入lnMNl支出管理lnMHl5添加支出lnMHl6查询支出明细ln”Nl7删除支出lnM"I8修改支出ln"nl统计lnH"I9统计总收入总支出ln"H+nMNl0退出系统lnH void(*menu_fun)0= quit,addjncome, search_income, deletejncome, update_income, add_payout, search_payout, dclete_payout, updatc_payout, countjotal );int main() (int selected=O;initiali
5、zeO;while(selectcd>=0 && selectcd<=MENU_COUNT) system(MclsM);printf(menu);printf(、请选择要进行的操作(%d - %d):O.MENU_COUNT); if(scanf(,%d'&selectcd)!=lllselected<Ollselected>MENU_COUNT) (printf(、输入错误!请选择%d-%d之间的数字!按任意键重试二O.MENU-COUNT); ftlush(stdin);getchar();)else ( mcnu_funselec
6、ted();)selected=O;) ) void addJncomeO(fi_data *p=(fi_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;)else ( get_last(head )->next=p;) ) void search_income()(search_data(income);)void dcleteJncomeO
7、 (dclete_data(income);)void updateJncomeO (update_data(income);)void add_payout() fi_data *p=(fLdata*)maIloc(sizeof(fLdata);memset(p,0,sizeof(fLdata);input Jnfo(&(p->info);p->info.typc=payout: if(head=NULL) ( head=p;)else(get_last(head )->next=p;) ) void search_payout() ( search_data(pa
8、yout); ) void dclete_payout() ( dclete_data(payout); ) void update_payout() ( update_data(payout); ) 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_incomc+=p->info.money; ) else ( total_payout+=p->info.money
9、; ) p=p->next;)printf(H+nM);结余printf("l合计收入I合计支出I printf("+n");count=0;resultcount=p;count+;)else( break:) )p=p->next:)if(count!=0)(show_info(result,count);)else(printf(、没有找到数据。n");)printf(、继续查找其他数据?(y or n)M); fflush(stdin);input=getchar();if(input=yilinput=,Y,)( continue;
10、)else break:)void delete_data(fi_type type) (int year=0;int month=0;fLdata *p=NULL:fi_data *pre=NULL;fi_data *result9= NULL);int count=0;char input='int i=0;while(l)(printf(、请输入要查询的年月(例如:2009/1) ”);if(scanf(n%d/%dH.&year,&month)!=2)(printf(、输入错误。nn);)else(p=head;count=0:niemset(result,0,
11、sizeof(fi_data*);while(p!=NULL)(if(p->info.year=year && p->info.month && p->info.type)(if(count=9)(resultcount=p;count+;)else(showjnfo(result,count);printf(、请输入空格并回车翻页。输入对应的序号删除。其他键退出,);fflush(stdin)input=getchar();if(input=' ')(memset(result,0,sizeof(fi_data*);count
12、=0;resultcount=p;count+;)else if(input= 1' && input<=48+count)(i=input-49;pre=get_previous(resulti);if(pre=NULL)(hcad=head->next;)elsepre->next=resulti->next;)free(resulti);for(;i<count-l;i+)(resulti=resulti+l;)resulti=p;printf(、删除成功nH);)else( break:) ) p=p->next;)if(co
13、unt!=0)(showjnfo(result,count);printf(、输入对应的序号删除。其他键退出。"); fflush(stdin);input=getchar();if(input>=r && input<=48+count)(i=input-49;pre=get_previous(resulti);if(pre=NULL)(head=head->next;)else(pre->next=resulti->next;)free(resulti);for(;i<count-l;i+)(resulti=resulti+l;
14、)resulti=NULL;count-;printf("删除成功 An");)else(printf(、没有找到数据。n");)printf(、继续查找数据? (y or n)");fflush(stdin);input=getchar();if(input=y II input=,Y,) (continue;)else( break:)void update_data(fi_type type)(int year=0;int month=0;fi_data *p=NULL;fi_data *pre=NULL;fi_data *result9= NUL
15、L);int count=0;char input'; int i=0;while( 1) (printf(、请输入要查询的年月(例如:2009/1) ”); if(scanf(u%d/%dH,&year,&month) !=2)(printf(、输入错误。nH);)else(p=hcad;count=0;meniset(result,0,sizeof(fi_data*);while(p!=NULL)if(p->info.year=year && p->info.month=month && p->info.type=t
16、ype) (if(count<9)(resultcount=p;count+;)else(showjnfo(result,count);printf(、输入空格并回车翻页。输入对应的序号修改。其他键退出。 fflush(stdin);input=getchar();if(input=*r) (memset(result,0,sizeof(fi-data*);count=0;resultcount=p;count+;)else if(input>= 1' && input<=48+count) (i=input-49;input_info(&(r
17、esulti->info);printf(、修改成功。nH);p=get_previous(p);)else( break:) )p=p->next:)if(count!=0)(show_info(result,count);printf(、输入对应的序号修改。其他键退出。");fflush(stdin);input=getchar();if(input>=r && input<=48+count)i=input-49;inputjnfo(&(result|i|->info);show_info(result,count);pri
18、ntf(、修改成功 . nH);)else(printf(、没有找到数据。n");)printf(、继续查找数据?(yorn)”);fflush(stdin);input=getchar();if(input=y II input=,Y,)(continue;)else break:)void initialize()(HLE *fp=NULL;fLdata *p=NULL;fi_data *last=NULL:int count=0;fp=fopen(DATA_FILEJrb”); if(fp=NULL) (fp=fopen(DATA_FILE/'wH);fclose(fp
19、);return;)p=(fi_data*)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);p->next=NULL:while(fread(&(p->infoXsizeof(fi_info)J Jp)=l) (if(head=NULL)hcad=p;)else(last=getjast();last->next=p;)count+;fseek(fpxount *sizeof(fi_info),SEEK_SET); p=(fi_data*)malloc(sizeof(fi_data);memset(p,0,sizeo
20、f(fi_data);p->next=NULL;)free(p);p=NULL;fclose(fp);)void save_to_fileO(HLE *fp=fopen(DATA_FILEJwb");fi_data *p=head;while(p!=NULL) (fwrite(&(p->info),sizeof(fi_info), 1 Jp);fseek(fp,O.SEEK_END);p=p->next:)fclose(fp);)void clear_data()(fLdata *p=NULL;while(head !=NULL) (if(head->
21、next!=NULL)(p=head;head=head->next;free(p);p=NULL:)elsefree(head);hcad=NULL;)fi_data *get_last() (fLdata *p=head;if(p=NULL)( return p;)while(p!=NULL) && (p->nezt!=NULL) ( p=p->next;)return p;)fLdata *get_previous(fi_data *p)(fi_data *previous=head;while(previous!=NULL)(if(previous-&
22、gt;next=p)( break:)previous=previous->next;)return previous;)void input_info(fijnfo *info)(printf(">请输入年月(YYYY/M) :");scanf(,'%d/%d,*(info->year),&(info->month);printf(、请输入家庭成员姓名(最大长度为%d):".MAX_NAME - 1); scanf(n%sHjnfo->name);primf('请输入金额scanf(H%f&(info->money);printf(、请输入备注(最大长度为%d) :",MAX_DETAIL- 1);scanf(H%sH4nfo->detail);)void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 森林府邸答题题目及答案
- 2023-2024学年河北省秦皇岛市卢龙县高二下学期7月期末考试数学试题(解析版)
- 行车安全心得体会
- 骨科医院宣传资料
- 食品化学幻灯片课件
- 作业现场定置管理制度
- 作文小学班级管理制度
- 供水公司制度管理制度
- 供水系统目标管理制度
- 供热公司各项管理制度
- 红十字会资产管理制度
- DB31/T 1249-2020医疗废物卫生管理规范
- 四川省宜宾市翠屏区2025届数学七下期末综合测试试题含解析
- 乡镇合法性审查工作报告
- 2025届四川成都锦江区数学七下期末质量检测试题含解析
- 2025年发展对象考试题题库及答案
- 2025上半年山东文旅集团有限公司直属企业招聘88人笔试参考题库附带答案详解
- 《临床精准用血培训》课件
- 《外国文学》课件-说不尽的莎士比亚教学课件:《麦克白》
- 2025中国新型储能行业发展白皮书
- 油气管道输送试题及答案
评论
0/150
提交评论