C语言个人财务管理示例

发布时间:2024-11-04 23:41

本文实例为大家分享了C语言实现个人财务管理的具体代码。

该程序可以完成个人财务管理。每个人的财务项目应当包括姓名、年度、收入、支出等。为了叙述简单,以一个财政年度为统计单位,程序中可以计算每个人的每个财政年度的收入总额、支出总额、存款总额等,并能够打印出来。需要注意的是,收入总额不可能只输入一次,而可能是多次收入的和;同样地,支出总额也不可能只是一次支出,应是多次支出的总和。

【设计思想】本程序是一个财务管理程序,涉及收入和支出,虽然是个人财务管理程序,但最好能够按照一种标准的财务管理软件来考虑,所以在程序设计时;需要考虑如下几个因素:
每一笔收入或支出都可以理解为一笔交易,那么程序最多可以容纳多少笔交易决定数组的元素个数,必须有一个预测,不妨先假定为50笔。
确定结构体形式时需要认真考虑,它关系到程序实现的思路和方式。一个人的收入和支出显然是多次输入的,而每一笔交易必须记录交易的日期和姓名,所以结构体应包含日期和姓名信息。从银行存款单我们可以知道,每一次存款和取款的数目必须记录,而且是分别记录,所以结构体考虑增加收入和支出两个元素,这样就形成了如下描述每一笔交易的结构体。

代码:

#include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 50 struct Date{ int year,month,day; }; struct deal{ struct Date date; char name[12]; double earning; double payout; }; void Menu(); void InputOneDeal(struct deal *per); void PrintOneDeal(struct deal *per); void SortPerson(struct deal *per,struct deal **per_sort); int main() { struct deal person[SIZE]={0}; char key; int i=0; while(1){ Menu(); key=getche(); printf("\n"); switch(key) { case '1': InputOneDeal(person+i); i++; break; case '2': PrintOneDeal(person); break; case '3': exit(0); default:break; } } return 0; } void Menu() { printf("1.Input one deal\n"); printf("2.Print one year balance\n"); printf("3.Exit\n"); printf("Please select(1-3):"); } void InputOneDeal(struct deal *per) { char s[10]; printf("Date(YYYY-MM-DD):"); scanf("%d-%d-%d",&per->date.year,&per->date.month,&per->date.day); printf("name:"); scanf("%9s",s); printf("deal(+/-):"); scanf("%9s",s); if(s[0]=='-') per->payout=atof(s); else per->earning=atof(s); } void PrintOneDeal(struct deal *per) { struct deal *per_sort[SIZE]={NULL}; int i, year, tag; char name[12]; double earning, payout; SortPerson(per,per_sort) ; printf ("Name------Year--——-Earning----Payout----Balance\n" ) ;i =- 0; while(per_sort[i]!= NULL) { strcpy (name, per_sort[i]->name); printf ("%-12s ", name) ; tag = 1; while(per_sort[i]!= NULL && strcmp(name,per_sort[i]->name)==0) { year = per_sort[i]->date.year; earning = 0; payout = 0 ; while(per_sort[i]!= NULL && strcmp(name, per_sort[i]->name)==0 && year == per_sort[i]->date.year) { earning+=per_sort[i]->earning; payout+= per_sort[i]->payout; i++; } if (tag==1) { printf ("%-6d %11.2lf %11.2lf %11.2lf\n" , year,earning,payout,earning+payout) ; tag = 0 ; } else printf ("%12s %-6d %11.21f %11.21f %1.2lf\n", " ",year, earning, payout, earning + payout); } } } void SortPerson(struct deal *per,struct deal **per_sort) { int i, j, k; struct deal *t; i = 0; while((per+i)->date.year !=0) { per_sort[i] = per + i; i++; } for(i = 0; per_sort[i] != NULL; i++) { k = i; for(j = i+1;per_sort[j]!=NULL;j++) if(strcmp(per_sort[j]->name,per_sort[k]->name)<0||strcmp(per_sort[j]->name, per_sort[k]->name)==0 &&per_sort[j]->date.year < per_sort[k]->date.year) k=j; if(k != i) { t = per_sort [i] ; per_sort[i] = per_sort [k]; per_sort[k] = t; } } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程宝库。

下一节:C++数据结构 list详解C语言编程技术

list相较于vector来说会显得复杂,它的好处是在任意位置插入,删除都是一个O(1)的时间复杂度。 一、list的节点template <class T>struct __list_n ...

网址:C语言个人财务管理示例 https://www.yuejiaxmz.com/news/view/3574

相关内容

财务管理专业个人简历(精选5篇)
财务管理毕业生推荐信范文
财务管理应聘求职自我介绍5篇
学习财务管理的体会
林业局财务领导民主生活会发言
财务管理,财务杠杆系数
货款打入个人法人账户是否违反财务管理制度
民主生活会发言提纲+++财务
C/C++:个人收支系统实现
财务管理专业大学生职业规划范文[页3]

随便看看