c语言设计一个个人小管家 个人小管家应用系统给家庭提供了一个管理个人财务的平台,主要用于对家庭成员收入、支出进行添加、查询、删除、修改以及打印的操作,使得家庭财务收支状况一目了然。 主要功能包括: 1.主菜
时间: 2024-05-01 17:22:02 浏览: 5
单:提供主要操作选项,包括添加收入、添加支出、查询、删除、修改、打印等。
2.添加收入:输入收入金额、日期、来源等信息,保存到文件中。
3.添加支出:输入支出金额、日期、用途等信息,保存到文件中。
4.查询:可以按照日期、收支类型、金额等条件进行查询,查询结果可以打印出来。
5.删除:可以选择要删除的记录,进行删除操作。
6.修改:可以选择要修改的记录,进行修改操作。
7.打印:将所有记录打印出来,包括日期、收支类型、金额、来源/用途等信息。
以下是C语言程序的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_RECORDS 1000
typedef struct {
float amount; // 收支金额
char date[20]; // 日期
char type[10]; // 收支类型
char source[50]; // 来源/用途
} Record;
Record records[MAX_RECORDS]; // 定义记录数组
int num_records = 0; // 记录数
// 添加收入
void add_income() {
Record income;
printf("请输入收入金额:");
scanf("%f", &income.amount);
printf("请输入日期(格式为yyyy-mm-dd):");
scanf("%s", income.date);
printf("请输入收入类型:");
scanf("%s", income.type);
printf("请输入收入来源:");
scanf("%s", income.source);
records[num_records++] = income; // 添加到记录数组中
printf("添加成功!\n");
}
// 添加支出
void add_expense() {
Record expense;
printf("请输入支出金额:");
scanf("%f", &expense.amount);
printf("请输入日期(格式为yyyy-mm-dd):");
scanf("%s", expense.date);
printf("请输入支出类型:");
scanf("%s", expense.type);
printf("请输入支出用途:");
scanf("%s", expense.source);
records[num_records++] = expense; // 添加到记录数组中
printf("添加成功!\n");
}
// 查询
void search() {
int option;
printf("请选择查询方式:\n");
printf("1.按日期查询\n");
printf("2.按收支类型查询\n");
printf("3.按金额查询\n");
scanf("%d", &option);
switch (option) {
case 1:
printf("请输入日期(格式为yyyy-mm-dd):");
char date[20];
scanf("%s", date);
for (int i = 0; i < num_records; i++) {
if (strcmp(records[i].date, date) == 0) {
printf("%s %s %.2f %s\n", records[i].date, records[i].type, records[i].amount, records[i].source);
}
}
break;
case 2:
printf("请输入收支类型(income/expense):");
char type[10];
scanf("%s", type);
for (int i = 0; i < num_records; i++) {
if (strcmp(records[i].type, type) == 0) {
printf("%s %s %.2f %s\n", records[i].date, records[i].type, records[i].amount, records[i].source);
}
}
break;
case 3:
printf("请输入金额区间(格式为min-max):");
float min, max;
scanf("%f-%f", &min, &max);
for (int i = 0; i < num_records; i++) {
if (records[i].amount >= min && records[i].amount <= max) {
printf("%s %s %.2f %s\n", records[i].date, records[i].type, records[i].amount, records[i].source);
}
}
break;
default:
printf("输入有误!\n");
break;
}
}
// 删除
void delete() {
printf("请输入要删除的记录的日期:");
char date[20];
scanf("%s", date);
for (int i = 0; i < num_records; i++) {
if (strcmp(records[i].date, date) == 0) {
for (int j = i; j < num_records - 1; j++) {
records[j] = records[j + 1];
}
num_records--;
printf("删除成功!\n");
return;
}
}
printf("找不到要删除的记录!\n");
}
// 修改
void modify() {
printf("请输入要修改的记录的日期:");
char date[20];
scanf("%s", date);
for (int i = 0; i < num_records; i++) {
if (strcmp(records[i].date, date) == 0) {
Record new_record;
printf("请输入新的收支金额:");
scanf("%f", &new_record.amount);
printf("请输入新的日期(格式为yyyy-mm-dd):");
scanf("%s", new_record.date);
printf("请输入新的收支类型:");
scanf("%s", new_record.type);
printf("请输入新的来源/用途:");
scanf("%s", new_record.source);
records[i] = new_record;
printf("修改成功!\n");
return;
}
}
printf("找不到要修改的记录!\n");
}
// 打印
void print() {
for (int i = 0; i < num_records; i++) {
printf("%s %s %.2f %s\n", records[i].date, records[i].type, records[i].amount, records[i].source);
}
}
int main() {
int option;
while (1) {
printf("请选择操作:\n");
printf("1.添加收入\n");
printf("2.添加支出\n");
printf("3.查询\n");
printf("4.删除\n");
printf("5.修改\n");
printf("6.打印\n");
printf("7.退出\n");
scanf("%d", &option);
switch (option) {
case 1:
add_income();
break;
case 2:
add_expense();
break;
case 3:
search();
break;
case 4:
delete();
break;
case 5:
modify();
break;
case 6:
print();
break;
case 7:
exit(0);
default:
printf("输入有误!\n");
break;
}
}
return 0;
}
```
注意:该程序只是简单实现了一个个人小管家的基本功能,并不完整,还有很多细节需要完善。