c语言财务管理系统
时间: 2023-07-03 17:10:45 浏览: 43
好的,以下是一个简单的 C 语言财务管理系统的示例,它可以实现添加、删除、查询和修改财务记录的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_RECORDS 100 // 最大记录数
struct finance_record {
char date[20]; // 日期
char type[20]; // 类型
double amount; // 金额
};
struct finance_system {
struct finance_record records[MAX_RECORDS]; // 财务记录数组
int count; // 记录数量
};
void add_record(struct finance_system *fs) {
if (fs->count >= MAX_RECORDS) {
printf("财务记录已满,无法添加新记录\n");
return;
}
struct finance_record r;
printf("请输入日期(例如:2022-01-01):");
scanf("%s", r.date);
printf("请输入类型(例如:收入、支出):");
scanf("%s", r.type);
printf("请输入金额:");
scanf("%lf", &r.amount);
fs->records[fs->count] = r;
fs->count++;
printf("添加成功!\n");
}
void delete_record(struct finance_system *fs) {
int index;
printf("请输入要删除的记录索引:");
scanf("%d", &index);
if (index < 0 || index >= fs->count) {
printf("无效的记录索引\n");
return;
}
for (int i = index; i < fs->count - 1; i++) {
fs->records[i] = fs->records[i + 1];
}
fs->count--;
printf("删除成功!\n");
}
void query_record(struct finance_system *fs) {
char date[20];
printf("请输入要查询的日期(例如:2022-01-01,输入 all 查询所有记录):");
scanf("%s", date);
if (strcmp(date, "all") == 0) {
printf("所有财务记录如下:\n");
for (int i = 0; i < fs->count; i++) {
printf("%d. 日期:%s,类型:%s,金额:%.2lf\n", i, fs->records[i].date, fs->records[i].type, fs->records[i].amount);
}
} else {
printf("查询结果如下:\n");
for (int i = 0; i < fs->count; i++) {
if (strcmp(fs->records[i].date, date) == 0) {
printf("日期:%s,类型:%s,金额:%.2lf\n", fs->records[i].date, fs->records[i].type, fs->records[i].amount);
}
}
}
}
void update_record(struct finance_system *fs) {
int index;
struct finance_record r;
printf("请输入要修改的记录索引:");
scanf("%d", &index);
if (index < 0 || index >= fs->count) {
printf("无效的记录索引\n");
return;
}
printf("请输入新的日期(例如:2022-01-01):");
scanf("%s", r.date);
printf("请输入新的类型(例如:收入、支出):");
scanf("%s", r.type);
printf("请输入新的金额:");
scanf("%lf", &r.amount);
fs->records[index] = r;
printf("修改成功!\n");
}
int main() {
struct finance_system fs = {0};
while (1) {
printf("请选择操作:\n");
printf("1. 添加记录\n");
printf("2. 删除记录\n");
printf("3. 查询记录\n");
printf("4. 修改记录\n");
printf("5. 退出程序\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_record(&fs);
break;
case 2:
delete_record(&fs);
break;
case 3:
query_record(&fs);
break;
case 4:
update_record(&fs);
break;
case 5:
printf("谢谢使用,再见!\n");
return 0;
default:
printf("无效的选择,请重新输入\n");
}
}
return 0;
}
```
这个程序定义了两个结构体,一个是 finance_record 表示一条财务记录,包括日期、类型和金额三个字段;另一个是 finance_system 表示整个财务管理系统,包括一个记录数组和一个记录数量字段。程序通过循环菜单的方式,让用户选择要执行的操作,包括添加记录、删除记录、查询记录和修改记录。用户可以根据提示输入相关信息进行操作。