本月教学情况

 

本月基本结束第一阶段教学

 

学生知识点掌握速度较慢

 

课程进度适中,后期会加快

 

国庆来后开始做项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的实现: ```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` 是硬编码的,也可以根据实际需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值