C语言实现学生消费管理系统

C语言实现学生消费管理系统攻略】

一、需求分析

对于学生来说,管理自己的消费是很有必要的。因此我们需要实现一款学生消费管理系统,具备以下功能:

  • 学生信息管理:包括姓名、学号、性别等信息。
  • 消费信息管理:包括日期、消费品种(如食物、书籍等)、消费金额等信息。
  • 消费查询功能:能够查询某一段时间内的消费情况。
  • 统计分析功能:能够统计学生的消费情况,如消费总额、平均每日消费等。

二、设计思路

学生消费管理系统可以使用C语言来实现,具体的设计思路如下:

  1. 学生信息和消费信息的数据结构定义:使用结构体类型来定义学生信息和消费信息,包括姓名、学号、性别、消费日期、消费品种和消费金额等信息。
  2. 学生信息和消费信息的录入:使用scanf函数来录入信息,使用fscanf来从文件中读取信息。
  3. 学生信息和消费信息的查询:使用printf函数来显示信息,使用fprintf函数将数据存储到文件中。
  4. 统计分析功能的实现: 使用for循环和if语句来计算统计分析结果,并使用printf函数输出结果。

三、代码实现(示例一)

以下是学生消费管理系统的代码实现示例:

#include<stdio.h>

typedef struct student{
    char name[20];
    int id;
    char sex[10];
} Student; //定义学生信息结构体

typedef struct consumption{
    char date[10];
    char category[20];
    float amount;
} Consumption; //定义消费信息结构体

void input_student_info(Student *student);
void input_consumption_info(Consumption *consumption);
void save_student_info(Student student);
void save_consumption_info(Consumption consumption);

int main(){
    Student student;
    input_student_info(&student);
    save_student_info(student);
    Consumption consumption;
    input_consumption_info(&consumption);
    save_consumption_info(consumption);
    return 0;
}

void input_student_info(Student *student){
    printf("请输入学生姓名:");
    scanf("%s", student->name);
    printf("请输入学号:");
    scanf("%d", &student->id);
    printf("请输入性别:");
    scanf("%s", student->sex);
}

void input_consumption_info(Consumption *consumption){
    printf("请输入消费日期:");
    scanf("%s", consumption->date);
    printf("请输入消费品种:");
    scanf("%s", consumption->category);
    printf("请输入消费金额:");
    scanf("%f", &consumption->amount);
}

void save_student_info(Student student){
    FILE *f;
    f = fopen("student.txt", "w");
    fprintf(f, "%s %d %s", student.name, student.id, student.sex);
    fclose(f);
}

void save_consumption_info(Consumption consumption){
    FILE *f;
    f = fopen("consumption.txt", "w");
    fprintf(f, "%s %s %.2f", consumption.date, consumption.category, consumption.amount);
    fclose(f);
}

该程序可以录入学生信息和消费信息,并存储到文件中。

四、代码实现(示例二)

以下是消费查询功能的代码实现示例:

#include<stdio.h>

typedef struct consumption{
    char date[10];
    char category[20];
    float amount;
} Consumption; //定义消费信息结构体

void query_consumption_info(char *start_date, char *end_date);

int main(){
    query_consumption_info("2021-01-01", "2021-01-30");
    return 0;
}

void query_consumption_info(char *start_date, char *end_date){
    FILE *f;
    f = fopen("consumption.txt", "r");
    while(!feof(f)){
        Consumption consumption;
        fscanf(f, "%s %s %f", consumption.date, consumption.category, &consumption.amount);
        if(strcmp(consumption.date, start_date) >= 0 && strcmp(consumption.date, end_date) <= 0){
            printf("%s\t%s\t%.2f\n", consumption.date, consumption.category, consumption.amount);
        }
    }
    fclose(f);
}

该程序可以查询给定日期范围内的消费信息并输出到屏幕上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现学生消费管理系统 - Python技术站

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

相关文章

  • C 程序 检查整数是正还是负

    C程序检查整数是正还是负 程序概述 这个程序可以检查一个输入的整数是正还是负数。如果输入的整数大于0,则会输出”Positive”,否则输出”Negative”。 程序代码 #include <stdio.h> int main() { int num; printf("Enter a number: "); scanf(&q…

    C 2023年5月9日
    00
  • C语言各种符号的使用介绍下篇

    C语言各种符号的使用介绍 1. 赋值操作符 赋值操作符=用于将表达式右边的值赋给左边的变量。例如: int a; a = 10; 上述代码中,将整数值10赋值给变量a。 2. 算术操作符 2.1 加法操作符 加法操作符+用于将两个值相加。例如: int a = 10; int b = 20; int c = a + b; 上述代码中,将变量a和b的值相加,将…

    C 2023年5月23日
    00
  • javascript eval和JSON之间的联系

    JavaScript eval 和 JSON 都是 JavaScript 中用于处理字符串的工具,但它们的设计目的和使用方式是不同的。本文将详细讲解它们之间的联系。 eval eval 函数是 JavaScript 内置的全局函数,可以将一个字符串解析为 JavaScript 代码,并将其执行。我们可以将任何有效的 JavaScript 表达式作为 eval…

    C 2023年5月23日
    00
  • Java异常处理操作实例小结

    让我来详细讲解一下“Java异常处理操作实例小结”的完整攻略。 Java异常处理操作实例小结 异常概述 在 Java 程序中,异常是指程序执行时发生的某些不正常的情况,例如:“除数为零”、“数组越界”等等。如果在程序中没有对这些异常进行处理,那么程序就会抛出一个异常并中止执行。 异常处理方法 在 Java 中,处理异常的方式通常包括以下几种方式: 使用 tr…

    C 2023年5月23日
    00
  • C语言实现简易三子棋游戏

    C语言实现简易三子棋游戏 一、需求分析 能够绘制出游戏棋盘。 能够让玩家先手。 能够根据玩家落子的位置更新棋盘并判断胜负。 能够实现电脑自动下子并判断胜负。 运行结束后能统计结果并提供重新开始游戏的选项。 二、实现步骤 定义3 * 3的二维数组,用于表示棋盘。 实现绘制游戏棋盘的函数。 实现获取玩家输入坐标的函数。 实现判断坐标是否合法的函数。 实现在棋盘上…

    C 2023年5月23日
    00
  • 深入分析javascript中的错误处理机制

    深入分析JavaScript中的错误处理机制 在JavaScript中,错误处理是一个非常重要的话题。良好的错误处理可以帮助我们更好地调试和优化程序,提高程序的稳定性和可靠性。本文将介绍JavaScript中的错误处理机制,包括错误类型、错误捕获和处理方式等。 错误类型 在JavaScript中,有三种错误类型: 语法错误(SyntaxError):由于编写…

    C 2023年5月23日
    00
  • C++深入讲解对象的销毁之析构函数

    C++深入讲解对象的销毁之析构函数 什么是析构函数 在C++中,每个类都有一个析构函数。析构函数的作用是在对象被销毁时完成一些清理工作。 C++中的析构函数的命名规则为:在类名前加一个波浪线(~)构成一个特殊的函数名。例如,如果类名为MyClass,则析构函数的函数名应该为~MyClass()。 析构函数不需要任何参数,也不能重载。只能声明一个析构函数,因为…

    C 2023年5月22日
    00
  • 详解iOS中多线程app开发的GCD队列的使用

    详解iOS中多线程app开发的GCD队列的使用攻略 什么是GCD队列? GCD(Grand Central Dispatch)是苹果公司提供的一套多线程解决方案,它可以用来实现iOS app中的并发操作。其中的“Dispatch”意味着将一个任务(也就是代码块)分配到某个线程上执行。一般情况下,GCD队列包含两种类型:串行队列和并发队列。 串行队列(Seri…

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