C语言财务管理系统源代码.doc
《C语言财务管理系统源代码.doc》由会员分享,可在线阅读,更多相关《C语言财务管理系统源代码.doc(14页珍藏版)》请在咨信网上搜索。
. . #include"stdio.h" #include"stdlib.h" #define MAX_NAME 11 #define MAX_DETAIL 21 #define MENU_COUNT 9 #define DATA_FILE "fa.dat" typedef wnum_fi_type { ine=1, payout=-1 }fi_type; typedef struct_fi_info { int year; int month; fi_type type; char name[MAX_NAME]; float money; char detail[MAX_DETAIL]; }fi_info; typedef struct_fi_data { fi_info info; struct_fi_data *next; }fi_data; void add_ine(); void search_ine(); void delete_ine(); void update_ine(); void add_payout(); void search_payout(); void delete_payout(); void update_payout(); 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[],int count); fi_data *head; char menu[]= "===============================================\n" "| 家庭财务管理系统 |\n" "+---------------------------------------------+\n" "| 收入管理 |\n" "| 1 添加收入 |\n" "| 2 查询收入明细 |\n" "| 3 删除收入 |\n" "| 4 修改收入 |\n" "| 支出管理 |\n" "| 5 添加支出 |\n" "| 6 查询支出明细 |\n" "| 7 删除支出 |\n" "| 8 修改支出 |\n" "| 统计 |\n" "| 9 统计总收入总支出 |\n" "----------------------------------------------+\n" "| 0 退出系统 |\n" "==============================================+\n"; void(*menu_fun[])()= { quit, add_ine, search_ine, delete_ine, update_ine, add_payout, search_payout, delete_payout, update_payout, count_total }; int main() { int selected=0; initialize(); while(selected>=0 && selected<=MENU_COUNT) { system("cls"); printf(menu); printf(">请选择要进展的操作(%d - %d):",0,MENU_COUNT); if(scanf("%d",&selected)!=1||selected<0||selected>MENU_COUNT) { printf(">输入错误!请选择[ %d - %d]之间的数字!按任意键重试...",0,MENU_COUNT); fflush(stdin); getchar(); } else { menu_fun[selected](); } selected=0; } } void add_ine() { 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=ine; if(head==NULL) { head=p; } else { get_last(head)->next=p; } } void search_ine() { search_data(ine); } void delete_ine() { delete_data(ine); } void update_ine() { update_data(ine); } void add_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; } else { get_last(head)->next=p; } } void search_payout() { search_data(payout); } void delete_payout() { delete_data(payout); } void update_payout() { update_data(payout); } void count_total() { float total_ine=0.0; float total_payout=0.0; fi_data *p=head; while(p!=NULL) { if(p->info.type==ine) { total_ine+=p->info.money; } else { total_payout+=p->info.money; } p=p->next; } printf("+---------+---------+---------+\n"); printf("| 合计收入 | 合计支出 | 结余 |\n"); printf("+---------+---------+---------+\n"); printf("|%12.2f|%12.2f|%12.2f|\n", total_ine, total_payout,total_ine - total_payout); printf("+---------+---------+---------+\n"); printf(">按任意键继续返回主菜单..."); fflush(stdin); getchar(); } void search_data(fi_type type) { int year=0; int month=0; fi_data *p=NULL; fi_data *result[9]={NULL}; int count=0; char input=' '; while(1) { printf(">请输入要查询的年月〔例如:2021/1〕"); if(scanf("%d/%d",&year,&month)!=2) { printf(">输入错误。\n"); } else { p=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(count<9) { result[count]=p; count++; } else { show_info(result,count); printf(">输入空格并回车翻页。其他键退出。"); fflush(stdin); input=getchar(); if(input==' ') { memset(result,0,sizeof(fi_data*)); count=0; result[count]=p; count++; } else { break; } } } p=p->next; } if(count!=0) { show_info(result,count); } else { printf(">没有找到数据。\n"); } printf(">继续查找其他数据?(y or n)"); fflush(stdin); input=getchar(); if(input=='y'||input=='Y') { continue; } else { break; } } } } void delete_data(fi_type type) { int year=0; int month=0; fi_data *p=NULL; fi_data *pre=NULL; fi_data *result[9]={NULL}; int count=0; char input=' '; int i=0; while(1) { printf(">请输入要查询的年月〔例如:2021/1〕"); if(scanf("%d/%d",&year,&month)!=2) { printf(">输入错误。\n"); } else { p=head; count=0; memset(result,0,sizeof(fi_data*)); while(p!=NULL) { if(p->info.year==year && p->info.month && p->info.type) { if(count=9) { result[count]=p; count++; } else { show_info(result,count); printf(">请输入空格并回车翻页。输入对应的序号删除。其他键退出:"); fflush(stdin) input=getchar(); if(input==' ') { memset(result,0,sizeof(fi_data*)); count=0; result[count]=p; count++; } else if(input=='1' && input<=48+count) { i=input-49; pre=get_previous(result[i]); if(pre==NULL) { head=head->next; } else { pre->next=result[i]->next; } free(result[i]); for(;i<count-1;i++) { result[i]=result[i+1]; } result[i]=p; printf(">删除成功。\n"); } else { break; } } } p=p->next; } if(count!=0) { show_info(result,count); printf(">输入对应的序号删除。其他键退出。"); fflush(stdin); input=getchar(); if(input>='1' && input<=48+count) { i=input-49; pre=get_previous(result[i]); if(pre==NULL) { head=head->next; } else { pre->next=result[i]->next; } free(result[i]); for(;i<count-1;i++) { result[i]=result[i+1]; } result[i]=NULL; count--; printf(">删除成功.\n"); } } else { printf(">没有找到数据。\n"); } printf(">继续查找数据?(y or n)"); fflush(stdin); input=getchar(); if(input=='y' || 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 *result[9]={NULL}; int count=0; char input=' '; int i=0; while(1) { printf(">请输入要查询的年月〔例如:2021/1〕"); if(scanf("%d/%d",&year,&month)!=2) { printf(">输入错误。\n"); } else { p=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(count<9) { result[count]=p; count++; } else { show_info(result,count); printf(">输入空格并回车翻页。输入对应的序号修改。其他键退出。"); fflush(stdin); input=getchar(); if(input==' ') { memset(result,0,sizeof(fi-data*)); count=0; result[count]=p; count++; } else if(input>='1' && input<=48+count) { i=input-49; input_info(&(result[i]->info)); printf(">修改成功。\n"); p=get_previous(p); } else { break; } } } p=p->next; } if(count!=0) { show_info(result,count); printf(">输入对应的序号修改。其他键退出。"); fflush(stdin); input=getchar(); if(input>='1' && input<=48+count) { i=input-49; input_info(&(result[i]->info)); show_info(result,count); printf(">修改成功。\n"); } } else { printf(">没有找到数据。\n"); } printf(">继续查找数据?(y or n)"); fflush(stdin); input=getchar(); if(input=='y' || input=='Y') { continue; } else { break; } } } } void initialize() { FILE *fp=NULL; fi_data *p=NULL; fi_data *last=NULL; int count=0; fp=fopen(DATA_FILE,"rb"); if(fp==NULL) { fp=fopen(DATA_FILE,"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); } void save_to_file() { FILE *fp=fopen(DATA_FILE,"wb"); fi_data *p=head; while(p!=NULL) { fwrite(&(p->info),sizeof(fi_info),1,fp); fseek(fp,0,SEEK_END); p=p->next; } fclose(fp); } void clear_data() { fi_data *p=NULL; while(head!=NULL) { if(head->next!=NULL) { p=head; head=head->next; free(p); p=NULL; } else { free(head); head=NULL; } } } fi_data *get_last() { fi_data *p=head; if(p==NULL) { return p; } while((p!=NULL) && (p->nezt!=NULL)) { p=p->next; } return p; } fi_data *get_previous(fi_data *p) { fi_data *previous=head; while(previous!=NULL) { if(previous->next==p) { break; } previous=previous->next; } return previous; } void input_info(fi_info *info) { printf(">请输入年月〔YYYY/M〕:"); scanf("%d/%d",*(info->year),&(info->month)); printf(">请输入家庭成员XX(最大长度为 %d):",MAX_NAME - 1); scanf("%s",info->name); printf(">请输入金额:"); scanf("%f",&(info->money)); printf(">请输入备注〔最大长度为 %d〕:",MAX_DETAIL - 1); scanf("%s",info->detail); } void show_info(fi_data *p[],int count) { int i=0; printf("+---+--------+-------+-------------+-------------+--------------------+\n"); printf("|No.| 年-月 | 类型 | | 金额 | 备注 |\n"); printf("+---+--------+-------+-------------+-------------+--------------------+\n"); for(i=0;i<count;i++) { printf("|%3d| %4d-%02d | %4s| %-10s | %10.2f | %-20s |\n", i+1, p[i]->info.year,p[i]->info.month, p[i]->info.type==ine?"收入":"支出", p[i]->info.name, p[i]->info.money, p[i]->info.detail); printf("+---+--------+-------+-------------+-------------+---------------------+\n"); } } . .word..- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 财务管理 系统 源代码
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文