用结构体实现简单的个人小金库信息管理。每个人都可以建立自己的小金库,在里面存放自己的资金。购物时会花费资金,这是支出;获得奖学金、爸妈寄的生活费或打工赚的工钱等,这是收入。小金库的资金会不断地变化,可以开发 管理系统对小金库进行管理。要求从键盘输入至少3笔记录,并显示。 其中,小金库数据记录包含了记录LogID、记录发生日期CreateDate、记录事件说明Note、发生费用Charge、余额Balance。
时间: 2024-03-12 16:45:45 浏览: 15
好的,以下是一个简单的个人小金库信息管理的实现代码,采用了结构体和循环语句:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LOG 100 // 最大记录数
struct Log {
int log_id;
char create_date[20];
char note[50];
float charge;
float balance;
};
int main() {
int i, n;
float init_balance;
struct Log logs[MAX_LOG];
printf("请输入小金库初始余额:");
scanf("%f", &init_balance);
// 初始化第一笔记录
logs[0].log_id = 1;
strcpy(logs[0].create_date, "2021-01-01");
strcpy(logs[0].note, "初始余额");
logs[0].charge = init_balance;
logs[0].balance = init_balance;
// 输入记录
for (i = 1; i < MAX_LOG; i++) {
printf("\n请输入第%d笔记录信息:\n", i + 1);
logs[i].log_id = i + 1;
printf("日期(格式如 2022-01-01):");
scanf("%s", logs[i].create_date);
printf("事件说明:");
scanf("%s", logs[i].note);
printf("金额(正数为收入,负数为支出):");
scanf("%f", &logs[i].charge);
logs[i].balance = logs[i - 1].balance + logs[i].charge;
if (logs[i].balance < 0) {
printf("余额不足,操作失败!\n");
break;
}
}
n = i;
// 输出记录
printf("\n序号\t日期\t\t\t说明\t\t\t\t金额\t余额\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%s\t\t\t%.2f\t%.2f\n", logs[i].log_id, logs[i].create_date, logs[i].note, logs[i].charge, logs[i].balance);
}
return 0;
}
```
使用方法:
1. 运行程序后,输入小金库的初始余额;
2. 程序会自动初始化第一笔记录,记录ID为1,记录时间为2021-01-01,记录事件说明为“初始余额”,费用为初始余额,余额也为初始余额;
3. 程序会要求输入第2笔、第3笔……直到第100笔记录,每次输入都需要输入记录时间、记录事件说明、费用,程序会自动计算余额;
4. 如果输入的费用导致余额为负数,则该操作失败;
5. 程序会输出所有记录的信息,包括记录ID、记录时间、记录事件说明、费用和余额。
注意:该代码只是一个简单的实现,如果需要更复杂的功能,比如数据的存储、查询、统计等,可以考虑使用数据库或其他更高级的工具。