C语言实现财务管理系统

C语言实现财务管理系统攻略

1. 系统概述

本系统采用C语言编写,实现了简单的财务管理功能,包括记账、查账、统计等功能,适合个人和小型企业使用。

2. 系统设计

系统包括以下几个模块:

  1. 用户登录模块

用户登录时需要输入用户名和密码,系统会验证用户信息是否正确。如果验证通过,系统会将用户信息保存到全局变量中。

  1. 记账模块

用户可以输入收支的详细信息,包括日期、类型、金额等。系统会将信息保存到文件中。

  1. 查账模块

用户可以查询某一时间段内的收支情况,系统会从文件中读取数据,并按时间进行排序。

  1. 统计模块

系统可以统计收入、支出和结余情况,并将结果输出到屏幕上。

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技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • MySQL数据库之内置函数和自定义函数 function

    MySQL是一个开源的关系型数据库管理系统,提供了许多内置函数和自定义函数用于操作和处理数据。这些函数可以大大简化SQL查询和数据处理的操作,提高效率和准确性。本文将介绍MySQL数据库中的内置函数和自定义函数,帮助您更好地利用函数来处理和查询数据。 内置函数 MySQL数据库提供了许多内置函数,这些函数可以用来完成各种任务,例如数学计算、字符串处理、日期和…

    C 2023年5月22日
    00
  • 基于malloc与free函数的实现代码及分析

    实现动态内存的分配和释放是C/C++程序中常见的问题。malloc和free函数是C/C++语言的标准库函数,用于动态分配和释放内存。本攻略将详细讲解基于malloc和free函数的动态内存分配和释放的实现方法及分析。 一、malloc函数的实现 在C/C++程序中,动态内存分配的过程通常由malloc函数实现。malloc函数的基本原理是向操作系统请求一定…

    C 2023年5月24日
    00
  • C 程序 查找int,float,double和char的大小

    针对本题,以下是完整的使用攻略: 1. 程序说明 此 C 程序是用来查找 int、float、double 和 char 所占字节数的。字节数表示了变量所占内存的大小,了解这些对于进行内存管理和程序优化非常有帮助。 程序中使用了 sizeof() 函数,该函数可以得到变量或数据类型所占用的字节数。下面给出了具体的使用方法。 2. 程序代码 #include&…

    C 2023年5月9日
    00
  • C语言实现文件读写功能流程

    C语言可以通过文件读写功能来读取文件中的数据内容或者将程序的数据写入到文件中,以实现数据的持久化操作。下面是C语言实现文件读写功能的完整攻略,包括文件读操作和文件写操作。 文件读操作 1. 打开文件 使用fopen函数打开文件,函数原型如下: FILE *fopen(const char *filename, const char *mode); filen…

    C 2023年5月23日
    00
  • C语言实现输入ascii码,输出对应的字符方式

    下面是一份详细的攻略,教你如何在C语言中实现输入ASCII码,输出对应的字符的功能。 1. 了解ASCII码 ASCII码是一种将字符编码成二进制数的标准,在C语言中也是普遍使用的字符编码方式。它包括了数字、字母、符号等可打印字符,为每个字符分配了一个唯一的7位或8位二进制编码。 在C语言中,我们可以使用整数类型的变量存储ASCII码,并且通过printf(…

    C 2023年5月24日
    00
  • 在python 脚本下解析json数据

    在Python脚本中解析JSON数据需要使用Python内置的json库,它提供了loads()和dumps()两个方法,分别用于JSON数据的解析和生成。 以下是完整的攻略步骤: 1. 导入json库 在Python脚本中解析JSON数据,需要先导入json库: import json 2. 使用loads()方法解析JSON数据 loads()方法可以将…

    C 2023年5月23日
    00
  • python 深入了解GIL锁详细

    Python深入了解GIL锁 什么是GIL锁? GIL全局解释器锁(Global Interpreter Lock),是Python解释器的一种机制。在Python多线程执行的时候,由于GIL锁的存在,同一时间只有一个线程能够执行,其他的线程只能在等待队列中等待。 GIL锁的存在意义 在解释Python代码的时候,Python会将解释器内存中的字节码编译成对…

    C 2023年5月22日
    00
  • C++ 如何判断四个点是否构成正方形

    判断四个点是否构成正方形是一个常见的问题,可以使用数学方法进行判断,也可以利用C++语言编写代码对四个点进行判断。 一、使用数学方法进行判断 如果四个点能构成正方形,那么它们应该满足以下条件: 四个点的四条边相等。 对角线相等。 两条对边之间的角度均为90度。 如果以上条件都满足,则四个点能构成正方形。 二、利用C++语言编写代码进行判断 以下是C++代码示…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部