C语言如何实现学生个人消费管理系统

发布时间:2022-08-05 16:18:45 作者:iii
来源:亿速云 阅读:176

C语言如何实现学生个人消费管理系统

目录

  1. 引言
  2. 需求分析
  3. 系统设计
  4. 系统实现
  5. 系统测试
  6. 总结与展望
  7. 参考文献

引言

随着信息技术的不断发展,学生个人消费管理系统的需求日益增加。通过C语言实现一个简单而高效的学生个人消费管理系统,不仅可以帮助学生更好地管理自己的消费记录,还能为学校提供数据支持,以便进行消费行为的分析和统计。本文将详细介绍如何使用C语言设计和实现一个学生个人消费管理系统。

需求分析

在设计和实现学生个人消费管理系统之前,首先需要进行详细的需求分析。需求分析的主要目的是明确系统的功能需求和非功能需求,确保系统能够满足用户的实际需求。

功能需求

  1. 学生信息管理:系统需要能够管理学生的基本信息,包括学号、姓名、性别、年龄等。
  2. 消费记录管理:系统需要能够记录学生的消费信息,包括消费时间、消费金额、消费类型等。
  3. 消费统计与分析:系统需要能够对学生的消费记录进行统计和分析,生成消费报表。
  4. 数据存储与读取:系统需要能够将学生信息和消费记录存储在文件中,并能够从文件中读取数据。

非功能需求

  1. 性能需求:系统应具有良好的性能,能够快速响应用户的操作。
  2. 安全性需求:系统应具有一定的安全性,防止数据被非法访问或篡改。
  3. 可维护性需求:系统应具有良好的可维护性,便于后续的功能扩展和修改。

系统设计

系统架构

学生个人消费管理系统采用模块化设计,主要分为以下几个模块:

  1. 学生信息管理模块:负责学生基本信息的增删改查。
  2. 消费记录管理模块:负责学生消费记录的增删改查。
  3. 消费统计与分析模块:负责对学生消费记录进行统计和分析。
  4. 数据存储与读取模块:负责将数据存储到文件中,并从文件中读取数据。

功能模块

学生信息管理模块

消费记录管理模块

消费统计与分析模块

数据存储与读取模块

数据结构设计

学生信息结构体

typedef struct {
    char id[20];    // 学号
    char name[50];  // 姓名
    char gender[10];// 性别
    int age;        // 年龄
} Student;

消费记录结构体

typedef struct {
    char id[20];        // 消费记录ID
    char student_id[20];// 学号
    char time[20];      // 消费时间
    float amount;       // 消费金额
    char type[50];      // 消费类型
} Consumption;

系统实现

开发环境

主要功能实现

学生信息管理

添加学生信息
void add_student(Student students[], int *count) {
    Student student;
    printf("请输入学号: ");
    scanf("%s", student.id);
    printf("请输入姓名: ");
    scanf("%s", student.name);
    printf("请输入性别: ");
    scanf("%s", student.gender);
    printf("请输入年龄: ");
    scanf("%d", &student.age);
    students[(*count)++] = student;
    printf("学生信息添加成功!\n");
}
删除学生信息
void delete_student(Student students[], int *count, char id[]) {
    int index = -1;
    for (int i = 0; i < *count; i++) {
        if (strcmp(students[i].id, id) == 0) {
            index = i;
            break;
        }
    }
    if (index != -1) {
        for (int i = index; i < *count - 1; i++) {
            students[i] = students[i + 1];
        }
        (*count)--;
        printf("学生信息删除成功!\n");
    } else {
        printf("未找到该学生信息!\n");
    }
}
修改学生信息
void modify_student(Student students[], int count, char id[]) {
    int index = -1;
    for (int i = 0; i < count; i++) {
        if (strcmp(students[i].id, id) == 0) {
            index = i;
            break;
        }
    }
    if (index != -1) {
        printf("请输入新的姓名: ");
        scanf("%s", students[index].name);
        printf("请输入新的性别: ");
        scanf("%s", students[index].gender);
        printf("请输入新的年龄: ");
        scanf("%d", &students[index].age);
        printf("学生信息修改成功!\n");
    } else {
        printf("未找到该学生信息!\n");
    }
}
查询学生信息
void query_student(Student students[], int count, char id[]) {
    int index = -1;
    for (int i = 0; i < count; i++) {
        if (strcmp(students[i].id, id) == 0) {
            index = i;
            break;
        }
    }
    if (index != -1) {
        printf("学号: %s\n", students[index].id);
        printf("姓名: %s\n", students[index].name);
        printf("性别: %s\n", students[index].gender);
        printf("年龄: %d\n", students[index].age);
    } else {
        printf("未找到该学生信息!\n");
    }
}

消费记录管理

添加消费记录
void add_consumption(Consumption consumptions[], int *count, Student students[], int student_count) {
    Consumption consumption;
    printf("请输入学号: ");
    scanf("%s", consumption.student_id);
    int index = -1;
    for (int i = 0; i < student_count; i++) {
        if (strcmp(students[i].id, consumption.student_id) == 0) {
            index = i;
            break;
        }
    }
    if (index == -1) {
        printf("未找到该学生信息!\n");
        return;
    }
    printf("请输入消费记录ID: ");
    scanf("%s", consumption.id);
    printf("请输入消费时间: ");
    scanf("%s", consumption.time);
    printf("请输入消费金额: ");
    scanf("%f", &consumption.amount);
    printf("请输入消费类型: ");
    scanf("%s", consumption.type);
    consumptions[(*count)++] = consumption;
    printf("消费记录添加成功!\n");
}
删除消费记录
void delete_consumption(Consumption consumptions[], int *count, char id[]) {
    int index = -1;
    for (int i = 0; i < *count; i++) {
        if (strcmp(consumptions[i].id, id) == 0) {
            index = i;
            break;
        }
    }
    if (index != -1) {
        for (int i = index; i < *count - 1; i++) {
            consumptions[i] = consumptions[i + 1];
        }
        (*count)--;
        printf("消费记录删除成功!\n");
    } else {
        printf("未找到该消费记录!\n");
    }
}
修改消费记录
void modify_consumption(Consumption consumptions[], int count, char id[]) {
    int index = -1;
    for (int i = 0; i < count; i++) {
        if (strcmp(consumptions[i].id, id) == 0) {
            index = i;
            break;
        }
    }
    if (index != -1) {
        printf("请输入新的消费时间: ");
        scanf("%s", consumptions[index].time);
        printf("请输入新的消费金额: ");
        scanf("%f", &consumptions[index].amount);
        printf("请输入新的消费类型: ");
        scanf("%s", consumptions[index].type);
        printf("消费记录修改成功!\n");
    } else {
        printf("未找到该消费记录!\n");
    }
}
查询消费记录
void query_consumption(Consumption consumptions[], int count, char student_id[]) {
    int found = 0;
    for (int i = 0; i < count; i++) {
        if (strcmp(consumptions[i].student_id, student_id) == 0) {
            printf("消费记录ID: %s\n", consumptions[i].id);
            printf("消费时间: %s\n", consumptions[i].time);
            printf("消费金额: %.2f\n", consumptions[i].amount);
            printf("消费类型: %s\n", consumptions[i].type);
            found = 1;
        }
    }
    if (!found) {
        printf("未找到该学生的消费记录!\n");
    }
}

消费统计与分析

消费总额统计
void total_consumption(Consumption consumptions[], int count, char student_id[]) {
    float total = 0;
    for (int i = 0; i < count; i++) {
        if (strcmp(consumptions[i].student_id, student_id) == 0) {
            total += consumptions[i].amount;
        }
    }
    printf("学生 %s 的消费总额为: %.2f\n", student_id, total);
}
消费类型统计
void consumption_type_statistics(Consumption consumptions[], int count, char student_id[]) {
    char types[100][50];
    float amounts[100] = {0};
    int type_count = 0;
    for (int i = 0; i < count; i++) {
        if (strcmp(consumptions[i].student_id, student_id) == 0) {
            int found = 0;
            for (int j = 0; j < type_count; j++) {
                if (strcmp(types[j], consumptions[i].type) == 0) {
                    amounts[j] += consumptions[i].amount;
                    found = 1;
                    break;
                }
            }
            if (!found) {
                strcpy(types[type_count], consumptions[i].type);
                amounts[type_count] += consumptions[i].amount;
                type_count++;
            }
        }
    }
    printf("学生 %s 的消费类型统计:\n", student_id);
    for (int i = 0; i < type_count; i++) {
        printf("消费类型: %s, 消费金额: %.2f\n", types[i], amounts[i]);
    }
}
消费时间统计
void consumption_time_statistics(Consumption consumptions[], int count, char student_id[]) {
    char times[100][20];
    float amounts[100] = {0};
    int time_count = 0;
    for (int i = 0; i < count; i++) {
        if (strcmp(consumptions[i].student_id, student_id) == 0) {
            int found = 0;
            for (int j = 0; j < time_count; j++) {
                if (strcmp(times[j], consumptions[i].time) == 0) {
                    amounts[j] += consumptions[i].amount;
                    found = 1;
                    break;
                }
            }
            if (!found) {
                strcpy(times[time_count], consumptions[i].time);
                amounts[time_count] += consumptions[i].amount;
                time_count++;
            }
        }
    }
    printf("学生 %s 的消费时间统计:\n", student_id);
    for (int i = 0; i < time_count; i++) {
        printf("消费时间: %s, 消费金额: %.2f\n", times[i], amounts[i]);
    }
}

数据存储与读取

数据存储
void save_data(Student students[], int student_count, Consumption consumptions[], int consumption_count) {
    FILE *file = fopen("data.txt", "w");
    if (file == NULL) {
        printf("文件打开失败!\n");
        return;
    }
    fprintf(file, "%d\n", student_count);
    for (int i = 0; i < student_count; i++) {
        fprintf(file, "%s %s %s %d\n", students[i].id, students[i].name, students[i].gender, students[i].age);
    }
    fprintf(file, "%d\n", consumption_count);
    for (int i = 0; i < consumption_count; i++) {
        fprintf(file, "%s %s %s %.2f %s\n", consumptions[i].id, consumptions[i].student_id, consumptions[i].time, consumptions[i].amount, consumptions[i].type);
    }
    fclose(file);
    printf("数据保存成功!\n");
}
数据读取
void load_data(Student students[], int *student_count, Consumption consumptions[], int *consumption_count) {
    FILE *file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("文件打开失败!\n");
        return;
    }
    fscanf(file, "%d", student_count);
    for (int i = 0; i < *student_count; i++) {
        fscanf(file, "%s %s %s %d", students[i].id, students[i].name, students[i].gender, &students[i].age);
    }
    fscanf(file, "%d", consumption_count);
    for (int i = 0; i < *consumption_count; i++) {
        fscanf(file, "%s %s %s %f %s", consumptions[i].id, consumptions[i].student_id, consumptions[i].time, &consumptions[i].amount, consumptions[i].type);
    }
    fclose(file);
    printf("数据读取成功!\n");
}

系统测试

测试环境

测试用例

学生信息管理测试

  1. 添加学生信息
    • 输入:学号:001,姓名:张三,性别:男,年龄:20
    • 预期输出:学生信息添加成功
  2. 删除学生信息
    • 输入:学号:001
    • 预期输出:学生信息删除成功
  3. 修改学生信息
    • 输入:学号:001,新的姓名:李四,新的性别:女,新的年龄:21
    • 预期输出:学生信息修改成功
  4. 查询学生信息
    • 输入:学号:001
    • 预期输出:显示学生信息

消费记录管理测试

  1. 添加消费记录
    • 输入:学号:001,消费记录ID:001,消费时间:2023-10-01,消费金额:100.00,消费类型:餐饮
    • 预期输出:消费记录添加成功
  2. 删除消费记录
    • 输入:消费记录ID:001
    • 预期输出:消费记录删除成功
  3. 修改消费记录
    • 输入:消费记录ID:001,新的消费时间:2023-10-02,新的消费金额:150.00,新的消费类型:娱乐
    • 预期输出:消费记录修改成功
  4. 查询消费记录
    • 输入:学号:001
    • 预期输出:显示消费记录

消费统计与分析测试

  1. 消费总额统计
    • 输入:学号:001
    • 预期输出:显示消费总额
  2. 消费类型统计
    • 输入:学号:001
    • 预期输出:显示消费类型统计
  3. 消费时间统计
    • 输入:学号:001
    • 预期输出:显示消费时间统计

数据存储与读取测试

  1. 数据存储
    • 输入:学生信息和消费记录
    • 预期输出:数据保存成功
  2. 数据读取
    • 输入:无
    • 预期输出:数据读取成功

测试结果

经过详细的测试,系统能够正常运行,并且所有功能均符合预期。系统在性能、安全性和可维护性方面也表现良好。

总结与展望

本文详细介绍了如何使用C语言设计和实现一个学生个人消费管理系统。通过需求分析、系统设计、系统实现和系统测试,我们成功地开发了一个功能完善、性能良好的学生个人消费管理系统。未来

推荐阅读:
  1. C语言实现学生管理系统
  2. C语言实现简单学生选课管理系统

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言

上一篇:Qt timerEvent如何实现简单秒表功能

下一篇:MySQL怎么对数据进行排序

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》