c语言程序设计家庭收支类,家庭支出管理系统—c语言程序设计
时间: 2023-09-10 21:05:37 浏览: 50
好的,家庭收支管理系统可以分为以下几个部分:
1. 用户登录/注册:用户需要输入用户名和密码进行登录或者注册账号。
2. 添加支出/收入:用户可以添加自己的支出或者收入,包括支出/收入的类型、金额和时间等信息。
3. 修改支出/收入:用户可以对已有的支出/收入进行编辑和修改。
4. 删除支出/收入:用户可以删除已有的支出/收入。
5. 查询支出/收入:用户可以根据时间、类型等条件进行查询,查看自己的支出/收入情况。
6. 统计支出/收入:系统可以根据用户输入的时间范围,统计用户在这段时间内的支出/收入情况。
7. 导出支出/收入数据:用户可以将自己的支出/收入数据导出为Excel或者其他格式,方便进行数据分析和管理。
下面是一个简单的家庭收支管理系统的C语言代码示例:
```
#include <stdio.h>
#include <string.h>
// 定义支出/收入结构体
struct item {
char type[20]; // 类型
float amount; // 金额
char date[20]; // 时间
};
// 定义用户结构体
struct user {
char username[20]; // 用户名
char password[20]; // 密码
struct item items[100]; // 支出/收入记录
int count; // 记录数
};
// 用户数组,最多支持10个用户
struct user users[10];
// 当前登录用户的下标
int cur_user = -1;
// 注册函数
void signup() {
char username[20], password[20];
printf("请输入用户名:");
scanf("%s", username);
printf("请输入密码:");
scanf("%s", password);
for (int i = 0; i < 10; i++) {
if (strcmp(users[i].username, username) == 0) {
printf("该用户名已被注册,请重新输入!\n");
return;
}
}
strcpy(users[cur_user + 1].username, username);
strcpy(users[cur_user + 1].password, password);
users[cur_user + 1].count = 0;
cur_user = cur_user + 1;
printf("注册成功!\n");
}
// 登录函数
void login() {
char username[20], password[20];
printf("请输入用户名:");
scanf("%s", username);
printf("请输入密码:");
scanf("%s", password);
for (int i = 0; i <= cur_user; i++) {
if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) {
cur_user = i;
printf("登录成功!\n");
return;
}
}
printf("用户名或密码错误,请重新输入!\n");
}
// 添加支出/收入函数
void add_item() {
char type[20], date[20];
float amount;
printf("请输入支出/收入类型:");
scanf("%s", type);
printf("请输入金额:");
scanf("%f", &amount);
printf("请输入时间:");
scanf("%s", date);
int count = users[cur_user].count;
strcpy(users[cur_user].items[count].type, type);
users[cur_user].items[count].amount = amount;
strcpy(users[cur_user].items[count].date, date);
users[cur_user].count = count + 1;
printf("添加成功!\n");
}
// 修改支出/收入函数
void edit_item() {
int index;
printf("请输入要修改的记录编号:");
scanf("%d", &index);
if (index < 1 || index > users[cur_user].count) {
printf("记录编号错误,请重新输入!\n");
return;
}
char type[20], date[20];
float amount;
printf("请输入支出/收入类型:");
scanf("%s", type);
printf("请输入金额:");
scanf("%f", &amount);
printf("请输入时间:");
scanf("%s", date);
strcpy(users[cur_user].items[index - 1].type, type);
users[cur_user].items[index - 1].amount = amount;
strcpy(users[cur_user].items[index - 1].date, date);
printf("修改成功!\n");
}
// 删除支出/收入函数
void delete_item() {
int index;
printf("请输入要删除的记录编号:");
scanf("%d", &index);
if (index < 1 || index > users[cur_user].count) {
printf("记录编号错误,请重新输入!\n");
return;
}
for (int i = index; i < users[cur_user].count; i++) {
strcpy(users[cur_user].items[i - 1].type, users[cur_user].items[i].type);
users[cur_user].items[i - 1].amount = users[cur_user].items[i].amount;
strcpy(users[cur_user].items[i - 1].date, users[cur_user].items[i].date);
}
users[cur_user].count = users[cur_user].count - 1;
printf("删除成功!\n");
}
// 查询支出/收入函数
void query_item() {
char type[20], start_date[20], end_date[20];
printf("请输入要查询的类型(全部输入0):");
scanf("%s", type);
printf("请输入开始时间(格式:YYYY-MM-DD):");
scanf("%s", start_date);
printf("请输入结束时间(格式:YYYY-MM-DD):");
scanf("%s", end_date);
printf("编号\t类型\t金额\t时间\n");
for (int i = 0; i < users[cur_user].count; i++) {
if (strcmp(type, "0") == 0 || strcmp(users[cur_user].items[i].type, type) == 0) {
if (strcmp(users[cur_user].items[i].date, start_date) >= 0 && strcmp(users[cur_user].items[i].date, end_date) <= 0) {
printf("%d\t%s\t%.2f\t%s\n", i + 1, users[cur_user].items[i].type, users[cur_user].items[i].amount, users[cur_user].items[i].date);
}
}
}
}
// 统计支出/收入函数
void sum_item() {
char start_date[20], end_date[20];
float sum = 0;
printf("请输入开始时间(格式:YYYY-MM-DD):");
scanf("%s", start_date);
printf("请输入结束时间(格式:YYYY-MM-DD):");
scanf("%s", end_date);
for (int i = 0; i < users[cur_user].count; i++) {
if (strcmp(users[cur_user].items[i].date, start_date) >= 0 && strcmp(users[cur_user].items[i].date, end_date) <= 0) {
sum = sum + users[cur_user].items[i].amount;
}
}
printf("总金额为:%.2f\n", sum);
}
// 导出支出/收入数据函数
void export_item() {
FILE *fp;
char filename[30];
printf("请输入要导出的文件名(不含后缀名):");
scanf("%s", filename);
strcat(filename, ".txt");
fp = fopen(filename, "w");
fprintf(fp, "编号\t类型\t金额\t时间\n");
for (int i = 0; i < users[cur_user].count; i++) {
fprintf(fp, "%d\t%s\t%.2f\t%s\n", i + 1, users[cur_user].items[i].type, users[cur_user].items[i].amount, users[cur_user].items[i].date);
}
fclose(fp);
printf("导出成功!\n");
}
int main() {
int choice;
while (1) {
printf("\n1. 注册\n2. 登录\n3. 添加支出/收入\n4. 修改支出/收入\n5. 删除支出/收入\n6. 查询支出/收入\n7. 统计支出/收入\n8. 导出支出/收入数据\n9. 退出\n请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
signup();
break;
case 2:
login();
break;
case 3:
add_item();
break;
case 4:
edit_item();
break;
case 5:
delete_item();
break;
case 6:
query_item();
break;
case 7:
sum_item();
break;
case 8:
export_item();
break;
case 9:
return 0;
default:
printf("输入错误,请重新选择!\n");
}
}
}
```
以上是一个简单的家庭收支管理系统的C语言代码示例,可以根据自己的需求进行修改和扩展。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)