写一个可以输入、修改、删除每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等,并以文件保存个人的收支情况 c语言程序
时间: 2024-05-07 10:22:01 浏览: 11
以下是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_MONTHS 12
#define MAX_EXPENSES 6
typedef struct {
float income;
float expenses[MAX_EXPENSES];
float savings;
} MonthlyBudget;
void print_menu();
int get_choice();
void input_budget(MonthlyBudget *budget);
void modify_budget(MonthlyBudget *budget);
void delete_budget(MonthlyBudget *budget);
void save_budget(MonthlyBudget *budget, char *filename);
void load_budget(MonthlyBudget *budget, char *filename);
int main() {
MonthlyBudget budgets[MAX_MONTHS];
int num_budgets = 0;
int choice;
while (1) {
print_menu();
choice = get_choice();
switch (choice) {
case 1:
if (num_budgets == MAX_MONTHS) {
printf("已达到最大记录数!\n");
} else {
input_budget(&budgets[num_budgets]);
num_budgets++;
printf("记录已保存!\n");
}
break;
case 2:
modify_budget(&budgets[num_budgets - 1]);
printf("记录已修改!\n");
break;
case 3:
delete_budget(&budgets[num_budgets - 1]);
num_budgets--;
printf("记录已删除!\n");
break;
case 4:
save_budget(budgets, "budget.txt");
printf("记录已保存到文件!\n");
break;
case 5:
load_budget(budgets, "budget.txt");
printf("记录已从文件中加载!\n");
break;
case 6:
exit(0);
default:
printf("无效的选项!\n");
break;
}
}
return 0;
}
void print_menu() {
printf("请选择操作:\n");
printf("1. 输入记录\n");
printf("2. 修改最新记录\n");
printf("3. 删除最新记录\n");
printf("4. 保存记录到文件\n");
printf("5. 从文件中加载记录\n");
printf("6. 退出程序\n");
}
int get_choice() {
int choice;
printf("请输入选项编号:");
scanf("%d", &choice);
return choice;
}
void input_budget(MonthlyBudget *budget) {
printf("请输入本月收入:");
scanf("%f", &budget->income);
printf("请输入本月食品消费:");
scanf("%f", &budget->expenses[0]);
printf("请输入本月房租:");
scanf("%f", &budget->expenses[1]);
printf("请输入本月子女教育费用:");
scanf("%f", &budget->expenses[2]);
printf("请输入本月水电费:");
scanf("%f", &budget->expenses[3]);
printf("请输入本月医疗费:");
scanf("%f", &budget->expenses[4]);
printf("请输入本月储蓄:");
scanf("%f", &budget->savings);
}
void modify_budget(MonthlyBudget *budget) {
printf("请输入新的本月收入(原值为%f):", budget->income);
scanf("%f", &budget->income);
printf("请输入新的本月食品消费(原值为%f):", budget->expenses[0]);
scanf("%f", &budget->expenses[0]);
printf("请输入新的本月房租(原值为%f):", budget->expenses[1]);
scanf("%f", &budget->expenses[1]);
printf("请输入新的本月子女教育费用(原值为%f):", budget->expenses[2]);
scanf("%f", &budget->expenses[2]);
printf("请输入新的本月水电费(原值为%f):", budget->expenses[3]);
scanf("%f", &budget->expenses[3]);
printf("请输入新的本月医疗费(原值为%f):", budget->expenses[4]);
scanf("%f", &budget->expenses[4]);
printf("请输入新的本月储蓄(原值为%f):", budget->savings);
scanf("%f", &budget->savings);
}
void delete_budget(MonthlyBudget *budget) {
budget->income = 0;
for (int i = 0; i < MAX_EXPENSES; i++) {
budget->expenses[i] = 0;
}
budget->savings = 0;
}
void save_budget(MonthlyBudget *budgets, char *filename) {
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
for (int i = 0; i < MAX_MONTHS; i++) {
fprintf(fp, "%.2f,", budgets[i].income);
for (int j = 0; j < MAX_EXPENSES; j++) {
fprintf(fp, "%.2f,", budgets[i].expenses[j]);
}
fprintf(fp, "%.2f\n", budgets[i].savings);
}
fclose(fp);
}
void load_budget(MonthlyBudget *budgets, char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
for (int i = 0; i < MAX_MONTHS; i++) {
fscanf(fp, "%f,", &budgets[i].income);
for (int j = 0; j < MAX_EXPENSES; j++) {
fscanf(fp, "%f,", &budgets[i].expenses[j]);
}
fscanf(fp, "%f\n", &budgets[i].savings);
}
fclose(fp);
}
```
该程序定义了一个 `MonthlyBudget` 结构体,用于保存每月的收入和支出情况。程序提供了以下操作:
1. 输入记录:根据用户输入创建新的 `MonthlyBudget` 对象,并将其添加到数组中。
2. 修改最新记录:修改最新的 `MonthlyBudget` 对象。
3. 删除最新记录:将最新的 `MonthlyBudget` 对象的所有值都设置为0。
4. 保存记录到文件:将所有 `MonthlyBudget` 对象保存到文件中。
5. 从文件中加载记录:从文件中读取 `MonthlyBudget` 对象并覆盖数组中的所有对象。
6. 退出程序:结束程序的运行。
注意,该程序还定义了一些常量,如 `MAX_MONTHS` 和 `MAX_EXPENSES`,用于限制数组的大小。如果需要,可以根据实际需求进行修改。另外,程序中的文件名 `budget.txt` 是硬编码的,也可以根据实际需求进行修改。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)