首页 > 其他分享 >财务管理系统简单版2

财务管理系统简单版2

时间:2024-08-04 10:27:10浏览次数:13  
标签:count case 财务 管理系统 简单 break records printf trans

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Transaction {
    char date[11];
    char category[21];
    double amount;
};

// 添加一条交易记录
void addRecord(struct Transaction* records, int* count) {
    struct Transaction trans;
    printf("请输入交易日期(格式:YYYY-MM-DD):");
    scanf("%s", trans.date);
    printf("请输入交易类别:");
    scanf("%s", trans.category);
    printf("请输入交易金额:");
    scanf("%lf", &trans.amount);
    while (trans.amount <= 0) {
        printf("错误:金额必须为正数,请重新输入:");
        scanf("%lf", &trans.amount);
    }
    records[*count] = trans;
    (*count)++;
    printf("交易记录已添加。\n");
}

// 查找交易记录
int searchRecord(struct Transaction* records, int count, char* date, char* category) {
    for (int i = 0; i < count; i++) {
        if (strcmp(records[i].date, date) == 0 && strcmp(records[i].category, category) == 0) {
            return i;
        }
    }
    return -1;
}

// 删除一条交易记录
void deleteRecord(struct Transaction* records, int* count) {
    char date[11], category[21];
    printf("请输入要删除的交易日期(格式:YYYY-MM-DD):");
    scanf("%s", date);
    printf("请输入要删除的交易类别:");
    scanf("%s", category);
    int index = searchRecord(records, *count, date, category);
    if (index == -1) {
        printf("错误:未找到符合条件的交易记录。\n");
    } else {
        for (int i = index; i < *count - 1; i++) {
            records[i] = records[i + 1];
        }
        (*count)--;
        printf("交易记录已删除。\n");
    }
}

// 修改一条交易记录
void modifyRecord(struct Transaction* records, int count) {
    char date[11], category[21];
    printf("请输入要修改的交易日期(格式:YYYY-MM-DD):");
    scanf("%s", date);
    printf("请输入要修改的交易类别:");
    scanf("%s", category);
    int index = searchRecord(records, count, date, category);
    if (index == -1) {
        printf("错误:未找到符合条件的交易记录。\n");
    } else {
        printf("请输入修改后的交易日期(原值为 %s):", records[index].date);
        scanf("%s", records[index].date);
        printf("请输入修改后的交易类别(原值为 %s):", records[index].category);
        scanf("%s", records[index].category);
        printf("请输入修改后的交易金额(原值为 %.2f):", records[index].amount);
        scanf("%lf", &records[index].amount);
        while (records[index].amount <= 0) {
            printf("错误:金额必须为正数,请重新输入:");
            scanf("%lf", &records[index].amount);
        }
        printf("交易记录已修改。\n");
    }
}

// 显示交易记录列表
void showRecords(struct Transaction* records, int count) {
    const int DATE_WIDTH = 12;
    const int CATEGORY_WIDTH = 20;
    const int AMOUNT_WIDTH = 12;
    printf("%*s%*s%*s\n", DATE_WIDTH, "日期", CATEGORY_WIDTH, "类别", AMOUNT_WIDTH, "金额");
    for (int i = 0; i < count; i++) {
        printf("%*s%*s%*.2f\n", DATE_WIDTH, records[i].date, CATEGORY_WIDTH, records[i].category, AMOUNT_WIDTH, records[i].amount);
    }
}

// 统计支出
double totalExpense(struct Transaction* records, int count) {
    double total = 0;
    for (int i = 0; i < count; i++) {
        if (records[i].amount < 0) {
            total += -records[i].amount;
        }
    }
    return total;
}

// 统计收入
double totalIncome(struct Transaction* records, int count) {
    double total = 0;
    for (int i = 0; i < count; i++) {
        if (records[i].amount > 0) {
            total += records[i].amount;
        }
    }
    return total;
}

int main() {
    struct Transaction records[100];
    int count = 0;
    while (1) {
        printf("请选择操作:\n");
        printf("1. 添加交易记录\n");
        printf("2. 删除交易记录\n");
        printf("3. 修改交易记录\n");
        printf("4. 显示交易记录\n");
        printf("5. 统计支出\n");
        printf("6. 统计收入\n");
        printf("0. 退出程序\n");
        int choice;
        scanf("%d", &choice);
        switch (choice) {
        case 1:
            addRecord(records, &count);
            break;
        case 2:
            deleteRecord(records, &count);
            break;
        case 3:
            modifyRecord(records, count);
            break;
        case 4:
            showRecords(records, count);
            break;
        case 5:
            printf("总支出为:%.2f\n", totalExpense(records, count));
            break;
        case 6:
            printf("总收入为:%.2f\n", totalIncome(records, count));
            break;
        case 0:
            printf("程序已退出。\n");
            return 0;
        default:
            printf("错误:无效的选择,请重新输入。\n");
        }
    }
    return 0;
}

欢迎订阅专栏,数据结构实验,期末大作业,前端后端都有哦,想我发哪个方面的资源或文章可以私信我,免费的哦

标签:count,case,财务,管理系统,简单,break,records,printf,trans
From: https://blog.csdn.net/2301_79235379/article/details/140902680

相关文章

  • CSS简单笔记
    1.CSS简介1.1HTML的局限性特别单纯,只关注内容的语义,只能做出简洁的网站页面。1.2CSS—网页的美容师CSS是层叠样式表(CascadingStyleSheets)的简称,有时我们会称之为CSS样式表或级联样式表。CSS也是一种标记语言,主要用来设置HTML页面中的文本内容(字体、大小、对齐方式等)、图......
  • Java计算机毕业设计酒店管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展和消费者对住宿体验要求的不断提升,酒店业面临着前所未有的挑战与机遇。传统的手工管理模式已难以满足现代酒店对效率、准确性和......
  • Java计算机毕业设计旅游度假村管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,旅游度假村作为集休闲、度假、娱乐于一体的综合性旅游目的地,其管理与服务质量的提升成为行业关注的焦点。传统的人工管理模式已......
  • SpringBoot+Vue图书(图书借阅)管理系统-附项目源码与配套文档
    摘 要 本论文阐述了一套先进的图书管理系统的设计与实现,该系统采用Java语言,结合现代Web开发框架和技术,旨在为图书馆提供高效、灵活且用户友好的资源管理解决方案。系统利用SpringBoot框架为核心,整合MyBatisORM工具,以及MySQL数据库,构建了一个高性能、可扩展的后端服务。前......
  • Python应用—简单邮件发送功能
    importsmtplibfromemail.mime.textimportMIMETextfromemail.headerimportHeader#使用正确的SMTP服务器地址和端口号#以163邮箱为例server=smtplib.SMTP_SSL('smtp.163.com',465)#使用SSL连接#登录邮箱server.login('自己账户','自己密码')#替换为......
  • 推荐一个基于 Spring boot 的后台管理框架,前后端分离,可快速开发OA、CMS网站后台管理,简
    前言在当前的软件开发领域,后台管理系统的需求量巨大,但许多团队在开发过程中面临诸多挑战。常见的痛点包括开发效率低下、系统不够灵活、缺乏统一的异常处理和日志记录,以及难以实现的权限控制等。此外,许多项目在技术选型上存在局限性,导致难以适应多变的业务需求。针对这些现状,......
  • ssm基于等保2.0的资产管理系统 毕业设计-附源码81412
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设基于......
  • 初级python代码编程学习----简单计算器代码学习 入门必看
    简单计算器的代码今天来点最简单的python代码。让有兴趣的网友可以快速尝试入门。 defadd(x,y):returnx+ydefsubtract(x,y):returnx-ydefmultiply(x,y):returnx*ydefdivide(x,y):ify==0:return"Error!Divisionb......
  • 基于Java的蛋糕甜品管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • [0384]基于JAVA的入驻企业智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的入驻企业智慧管理系统的设计与实现指导老师(一)选题的背景和意义在当前信息化与智能化高速发展的时代背景下,企业运营与管理的高效化、精细化已经成为提升竞争力的关键因素。基于Java的入驻企业......