C语言实现财务管理系统攻略
1. 系统概述
本系统采用C语言编写,实现了简单的财务管理功能,包括记账、查账、统计等功能,适合个人和小型企业使用。
2. 系统设计
系统包括以下几个模块:
- 用户登录模块
用户登录时需要输入用户名和密码,系统会验证用户信息是否正确。如果验证通过,系统会将用户信息保存到全局变量中。
- 记账模块
用户可以输入收支的详细信息,包括日期、类型、金额等。系统会将信息保存到文件中。
- 查账模块
用户可以查询某一时间段内的收支情况,系统会从文件中读取数据,并按时间进行排序。
- 统计模块
系统可以统计收入、支出和结余情况,并将结果输出到屏幕上。
3. 系统实现
3.1 用户登录模块实现
用户登录模块采用了文件保存用户信息的方式,用户信息包括用户名和密码。用户登录时,系统会读取用户信息文件,然后将输入的用户名和密码与文件中的信息进行比对。比对通过后,系统会将用户名和密码保存到全局变量中。
示例:
#define MAX_USER_NUM 100
#define MAX_USER_NAME_LEN 20
#define MAX_PASSWORD_LEN 20
struct User {
char name[MAX_USER_NAME_LEN];
char password[MAX_PASSWORD_LEN];
};
struct User users[MAX_USER_NUM];
int login() {
char name[MAX_USER_NAME_LEN];
char password[MAX_PASSWORD_LEN];
printf("请输入用户名:");
scanf("%s", name);
printf("请输入密码:");
scanf("%s", password);
FILE* fp = fopen("users.txt", "r");
int i = 0;
while (fscanf(fp, "%s %s", users[i].name, users[i].password) != EOF) {
if (strcmp(users[i].name, name) == 0 && strcmp(users[i].password, password) == 0) {
printf("登录成功\n");
return i;
}
i++;
}
fclose(fp);
printf("用户名或密码错误\n");
return -1;
}
3.2 记账模块实现
记账模块采用了链表保存数据,每条数据包括日期、类型、金额等信息。用户输入信息后,系统会将信息添加到链表最后。
示例:
struct Record {
char* date;
char* type;
int amount;
struct Record* next;
};
struct Record* head = NULL;
void add_record() {
struct Record* new_record = (struct Record*)malloc(sizeof(struct Record));
printf("请输入日期(格式:yyyy-mm-dd):");
scanf("%s", new_record->date);
printf("请输入类型:");
scanf("%s", new_record->type);
printf("请输入金额:");
scanf("%d", &new_record->amount);
new_record->next = NULL;
if (head == NULL) {
head = new_record;
} else {
struct Record* cur = head;
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = new_record;
}
printf("记账成功\n");
}
3.3 查账模块实现
查账模块采用了冒泡排序对数据进行排序,排序后按格式输出到屏幕上。
示例:
void sort_records(struct Record* head) {
if (head == NULL || head->next == NULL) {
return;
}
struct Record* cur = head;
while (cur->next != NULL) {
struct Record* next = cur->next;
while (next != NULL) {
if (strcmp(cur->date, next->date) > 0) {
char* temp_date = cur->date;
cur->date = next->date;
next->date = temp_date;
char* temp_type = cur->type;
cur->type = next->type;
next->type = temp_type;
int temp_amount = cur->amount;
cur->amount = next->amount;
next->amount = temp_amount;
}
next = next->next;
}
cur = cur->next;
}
}
void show_records(char* start_date, char* end_date) {
sort_records(head);
struct Record* cur = head;
while (cur != NULL) {
if (strcmp(cur->date, start_date) >= 0 && strcmp(cur->date, end_date) <= 0) {
printf("%s %s %d\n", cur->date, cur->type, cur->amount);
}
cur = cur->next;
}
}
3.4 统计模块实现
统计模块直接从链表中读取数据,根据类型进行累加,并输出结果到屏幕上。
示例:
void show_statistics() {
int income = 0;
int expense = 0;
int balance = 0;
struct Record* cur = head;
while (cur != NULL) {
if (strcmp(cur->type, "收入") == 0) {
income += cur->amount;
} else {
expense += cur->amount;
}
cur = cur->next;
}
balance = income - expense;
printf("收入:%d\n支出:%d\n结余:%d\n", income, expense, balance);
}
4. 总结
本系统实现了简单的财务管理功能,包括记账、查账、统计等功能,可以作为个人、小型企业的财务管理工具。实现过程中采用了C语言,运用了文件读写、链表操作、排序等技巧。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现财务管理系统 - Python技术站