用结构体实现简单的个人小金库信息管理。每个人都可以建立自己的小金库,在里面存放自己的资金。购物时会花费资金,这是支出;获得奖学金、爸妈寄的生活费或打工赚的工钱等,这是收入。小金库的资金会不断地变化,可以开发 管理系统对小金库进行管理。要求从键盘输入至少3笔记录,并显示。 其中,小金库数据记录包含了记录LogID、记录发生日期CreateDate、记录事件说明Note、发生费用Charge、余额Balance。
时间: 2024-03-13 09:47:20 AIGC 浏览: 127 评论: 5
好的,我可以帮你解答这个问题。以下是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LOGS 50
struct Log {
int id;
char date[11];
char note[50];
float charge;
float balance;
};
struct PiggyBank {
char owner[20];
float balance;
struct Log logs[MAX_LOGS];
int num_logs;
};
void add_log(struct PiggyBank* pb, char* date, char* note, float charge) {
struct Log* log = &(pb->logs[pb->num_logs]);
log->id = pb->num_logs + 1;
strcpy(log->date, date);
strcpy(log->note, note);
log->charge = charge;
log->balance = pb->balance + charge;
pb->balance = log->balance;
pb->num_logs++;
}
void print_logs(struct PiggyBank* pb) {
printf("Logs for %s:\n", pb->owner);
printf("LogID\tDate\t\tNote\t\tCharge\tBalance\n");
for (int i = 0; i < pb->num_logs; i++) {
struct Log* log = &(pb->logs[i]);
printf("%d\t%s\t%s\t%.2f\t%.2f\n",
log->id, log->date, log->note, log->charge, log->balance);
}
}
int main() {
struct PiggyBank pb;
printf("Enter owner name: ");
scanf("%s", pb.owner);
pb.balance = 0;
pb.num_logs = 0;
char date[11], note[50];
float charge;
for (int i = 0; i < 3; i++) {
printf("Enter date (YYYY-MM-DD): ");
scanf("%s", date);
printf("Enter note: ");
scanf("%s", note);
printf("Enter charge: ");
scanf("%f", &charge);
add_log(&pb, date, note, charge);
}
print_logs(&pb);
return 0;
}
```
这个程序通过结构体`Log`来记录每一笔交易的信息,包括`LogID`、`CreateDate`、`Note`、`Charge`和`Balance`。然后,通过结构体`PiggyBank`来记录整个小金库的信息,包括账户持有人`owner`、当前余额`balance`和交易记录`logs`。在`add_log`函数中,每次添加一条新的交易记录时,都会为其分配一个新的`LogID`,并计算出新的余额`balance`。最后,在`print_logs`函数中,将会按照格式输出所有的交易记录。
你可以在程序中输入你自己的小金库信息,例如:
```
Enter owner name: Alice
Enter date (YYYY-MM-DD): 2021-01-01
Enter note: Salary
Enter charge: 1000
Enter date (YYYY-MM-DD): 2021-01-15
Enter note: Shopping
Enter charge: -200
Enter date (YYYY-MM-DD): 2021-02-01
Enter note: Bonus
Enter charge: 500
Logs for Alice:
LogID Date Note Charge Balance
1 2021-01-01 Salary 1000.00 1000.00
2 2021-01-15 Shopping -200.00 800.00
3 2021-02-01 Bonus 500.00 1300.00
```
希望这个程序能够对你有所帮助!
阅读全文
评论

萱呀
2025.07.27
整体而言,回答者提供了一个既完整又易操作的解决方案。

行走的瓶子Yolo
2025.06.12
示例运行结果有助于理解程序功能,方便用户上手使用。

那你干哈
2025.04.28
程序通过结构体合理组织数据,易于理解和扩展。👍

苏采
2025.04.05
该回答提供了一个简洁实用的个人小金库管理系统的示例代码,思路清晰。

鸣泣的海猫
2025.04.03
代码实现考虑了输入输出的完整流程,满足了基本需求。💓