c语言编写一个个人小管家应用系统给家庭提供了一个管理个人财务的平台,主要用于对家庭成员收入、支出进行添加、查询、删除、修改以及打印的操作,使得家庭财务收支状况一日了然。 主要功能包括: 1.主菜单。主要包括收入管理、支出管理和退出: 2.添加收入记录: 3.查询收入记录: 4.删除收入记录; 5.修改收入记录: 6.打印收入记录: 7.添加支出记录: 8.查询支出记录: 9.删除支出记录; 10.修改支出记录: 11.打印支出记录: 12.退出系统。
时间: 2023-06-27 13:03:41 浏览: 147
c编写的。家庭财务管理系统
以下是一个简单的个人小管家应用系统的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义最大记录数
#define MAX_RECORDS 100
// 定义收支类型
typedef enum {
INCOME,
EXPENSE
} RecordType;
// 定义收支记录结构体
typedef struct {
RecordType type; // 收支类型
float amount; // 金额
char date[20]; // 日期
char description[50]; // 描述
} Record;
// 定义全局变量
Record records[MAX_RECORDS]; // 所有记录
int numRecords = 0; // 记录数
// 显示主菜单
void showMainMenu() {
printf("========================\n");
printf(" 个人小管家应用系统\n");
printf("========================\n");
printf("1. 收入管理\n");
printf("2. 支出管理\n");
printf("3. 退出\n");
printf("========================\n");
printf("请选择操作:");
}
// 显示收入管理菜单
void showIncomeMenu() {
printf("========================\n");
printf(" 收入管理\n");
printf("========================\n");
printf("1. 添加收入记录\n");
printf("2. 查询收入记录\n");
printf("3. 删除收入记录\n");
printf("4. 修改收入记录\n");
printf("5. 打印收入记录\n");
printf("6. 返回主菜单\n");
printf("========================\n");
printf("请选择操作:");
}
// 显示支出管理菜单
void showExpenseMenu() {
printf("========================\n");
printf(" 支出管理\n");
printf("========================\n");
printf("1. 添加支出记录\n");
printf("2. 查询支出记录\n");
printf("3. 删除支出记录\n");
printf("4. 修改支出记录\n");
printf("5. 打印支出记录\n");
printf("6. 返回主菜单\n");
printf("========================\n");
printf("请选择操作:");
}
// 添加收支记录
void addRecord(RecordType type) {
if (numRecords >= MAX_RECORDS) {
printf("记录已满,无法添加!\n");
return;
}
Record r;
r.type = type;
printf("请输入金额:");
scanf("%f", &r.amount);
printf("请输入日期(格式为yyyy-mm-dd):");
scanf("%s", r.date);
printf("请输入描述:");
scanf("%s", r.description);
records[numRecords++] = r;
printf("记录已添加!\n");
}
// 查询收支记录
void queryRecord(RecordType type) {
float total = 0;
printf("日期\t\t金额\t\t描述\n");
printf("=======================================\n");
for (int i = 0; i < numRecords; i++) {
Record r = records[i];
if (r.type == type) {
printf("%s\t%.2f\t%s\n", r.date, r.amount, r.description);
total += r.amount;
}
}
printf("=======================================\n");
printf("总计:%.2f\n", total);
}
// 删除收支记录
void deleteRecord(RecordType type) {
int index = -1;
printf("请输入要删除的记录日期(格式为yyyy-mm-dd):");
char date[20];
scanf("%s", date);
for (int i = 0; i < numRecords; i++) {
Record r = records[i];
if (r.type == type && strcmp(r.date, date) == 0) {
index = i;
break;
}
}
if (index != -1) {
for (int i = index; i < numRecords - 1; i++) {
records[i] = records[i + 1];
}
numRecords--;
printf("记录已删除!\n");
} else {
printf("未找到该记录!\n");
}
}
// 修改收支记录
void modifyRecord(RecordType type) {
printf("请输入要修改的记录日期(格式为yyyy-mm-dd):");
char date[20];
scanf("%s", date);
for (int i = 0; i < numRecords; i++) {
Record r = records[i];
if (r.type == type && strcmp(r.date, date) == 0) {
printf("请输入新的金额:");
scanf("%f", &r.amount);
printf("请输入新的日期(格式为yyyy-mm-dd):");
scanf("%s", r.date);
printf("请输入新的描述:");
scanf("%s", r.description);
records[i] = r;
printf("记录已修改!\n");
return;
}
}
printf("未找到该记录!\n");
}
// 打印收支记录
void printRecord(RecordType type) {
printf("日期\t\t金额\t\t描述\n");
printf("=======================================\n");
for (int i = 0; i < numRecords; i++) {
Record r = records[i];
if (r.type == type) {
printf("%s\t%.2f\t%s\n", r.date, r.amount, r.description);
}
}
printf("=======================================\n");
}
int main() {
int choice;
while (1) {
showMainMenu();
scanf("%d", &choice);
switch (choice) {
case 1: // 收入管理
while (1) {
showIncomeMenu();
scanf("%d", &choice);
switch (choice) {
case 1:
addRecord(INCOME);
break;
case 2:
queryRecord(INCOME);
break;
case 3:
deleteRecord(INCOME);
break;
case 4:
modifyRecord(INCOME);
break;
case 5:
printRecord(INCOME);
break;
case 6:
goto MAIN_MENU;
default:
printf("无效操作!\n");
break;
}
}
case 2: // 支出管理
while (1) {
showExpenseMenu();
scanf("%d", &choice);
switch (choice) {
case 1:
addRecord(EXPENSE);
break;
case 2:
queryRecord(EXPENSE);
break;
case 3:
deleteRecord(EXPENSE);
break;
case 4:
modifyRecord(EXPENSE);
break;
case 5:
printRecord(EXPENSE);
break;
case 6:
goto MAIN_MENU;
default:
printf("无效操作!\n");
break;
}
}
case 3: // 退出系统
printf("谢谢使用!\n");
exit(0);
default:
printf("无效操作!\n");
break;
}
MAIN_MENU:;
}
return 0;
}
```
该程序使用了结构体来存储收支记录,全局变量记录了所有的记录和记录数,通过各个函数来实现收支记录的添加、查询、删除、修改和打印等操作。程序中使用了循环和跳转语句来实现菜单的显示和操作选择。
阅读全文