C语言财务管理系统(源代码)
- 格式:doc
- 大小:75.00 KB
- 文档页数: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
{
income=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_income();
void search_income();
void delete_income();
void update_income();
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_income,
search_income,
delete_income,
update_income,
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_income()
{
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 delete_income()
{
delete_data(income);
}
void update_income()
{
update_data(income);
}
void add_payout()
{
fi_data *p=(fi_data*)malloc(sizeof(fi_data));