当前位置:   article > 正文

C语言学生信息管理系统_学生管理系统c语言框架

学生管理系统c语言框架

C语言版学生信息管理系统

一,开发环境

  1. 操作系统:windows10, windows11, linux, mac等。
  2. 开发工具:Qt, vscode, visual studio等
  3. 开发语言:c语言

二,功能需求

在这里插入图片描述

1. 用户界面:

  • 提供一个简洁的文本界面,用户可以通过键入命令或选择选项来执行不同的操作。
  • 用户可以方便地选择要执行的操作,例如添加、查询、编辑、删除学生信息或显示所有学生信息。

2. 学生信息记录:

  • 用户可以录入学生的基本信息,如学号、姓名、年龄、性别、班级等。
  • 学生信息应存储在内存中,在程序周期内可进行操作。

3. 信息查询:

  • 用户可以通过学号或姓名查询学生信息。
  • 显示查询结果给用户。

4. 信息修改:

  • 用户可以选择一个特定的学生信息进行编辑。
  • 提供修改学生的基本信息如学号、姓名、年龄、性别、班级等。

5. 信息删除:

  • 用户可以选择删除特定的学生信息。
  • 在删除之前,询问用户是否确实要执行删除操作以防止错误。

6. 列表:

  • 用户可以查看并显示所有已录入的学生信息的列表

三,功能设计

1. 主界面:

  • 当程序启动时,首先显示一个欢迎消息,如“欢迎使用学生信息管理系统”。
  • 接着展示一个主菜单,列出所有可用的操作。例如:
请选择一个操作:
1. 添加学生信息
2. 查询学生信息
3. 修改学生信息
4. 删除学生信息
5. 显示所有学生信息
6. 退出系统
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 用户可以通过输入相应的数字选择一个操作。

2. 添加学生信息:

  • 用户选择“添加学生信息”后,系统提示用户逐个输入学生的信息。例如:
请输入学生的学号: 
请输入学生的姓名: 
请输入学生的年龄: 
请输入学生的性别: 
请输入学生的班级: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在信息录入后,系统将保存这些信息,并给出一个确认消息,如“学生信息已成功添加”。

3. 查询学生信息:

  • 用户选择“查询学生信息”后,系统提示用户输入查询条件。例如:
请选择查询方式:
1. 通过学号查询
2. 通过姓名查询
  • 1
  • 2
  • 3
  • 根据用户的选择,系统提示输入相应的信息。例如,“请输入学生的学号”或“请输入学生的姓名”。
  • 显示匹配的学生信息或提示未找到结果。

4. 修改学生信息:

  • 用户选择“修改学生信息”后,系统首先提示用户输入学生的学号。
  • 如果找到相应的学生信息,系统将显示该学生的当前信息,并提示用户输入新的信息。例如:
学生信息:
学号: 123
姓名: 张三
年龄: 20
性别: 男
班级: 计算机1班

请输入新的学生信息:
请输入学生的姓名: 
请输入学生的年龄: 
请输入学生的性别: 
请输入学生的班级: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 确认修改并保存。

5. 删除学生信息:

  • 用户选择“删除学生信息”后,系统提示用户输入要删除的学生的学号。

6. 显示所有学生信息:

  • 当用户选择“显示所有学生信息”时,系统应该列出存储在内存中的所有学生信息。
  • 数据可以以表格的形式呈现,例如:
+--------+--------+------+-------+------------+
学号   | 姓名   | 年龄 | 性别  | 班级        |
+--------+--------+------+-------+------------+
1001   | 张三    | 20   || 计算机1|
1002   | 李四    | 21   || 计算机2|
+--------+--------+------+-------+------------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 在列表末尾提供返回主菜单的选项。

7. 退出系统:

  • 当用户选择“退出系统”时,程序应给出一个友好的退出消息,如“感谢使用学生信息管理系统!再见!”然后安全地关闭程序。

四,代码结构

StudentInfoManagementSystem/
├── CMakeLists.txt
├── src/
│   ├── main.c
│   ├── student.c
│   └── student.h
├── build/
└── README.md
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

五,源代码

student.h

// student.h
#ifndef STUDENT_H
#define STUDENT_H

typedef struct {
    int id;
    char name[50];
    int age;
    char gender[10];
    char class_name[50];
} Student;

void add_student(Student students[], int *num_students);
void query_student(Student students[], int num_students);
void modify_student(Student students[], int num_students);
void delete_student(Student students[], int *num_students);
void display_students(Student students[], int num_students);

#endif // STUDENT_H
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

student.c

// student.c
#include <stdio.h>
#include <string.h>
#include "student.h"

void add_student(Student students[], int *num_students) {
    printf("请输入学生的学号: ");
    scanf("%d", &students[*num_students].id);
    printf("请输入学生的姓名: ");
    scanf("%s", students[*num_students].name);
    printf("请输入学生的年龄: ");
    scanf("%d", &students[*num_students].age);
    printf("请输入学生的性别: ");
    scanf("%s", students[*num_students].gender);
    printf("请输入学生的班级: ");
    scanf("%s", students[*num_students].class_name);
    (*num_students)++;
}

void query_student(Student students[], int num_students) {
    int choice;
    printf("请选择查询方式:\n");
    printf("1. 通过学号查询\n");
    printf("2. 通过姓名查询\n");
    printf("请输入你的选择: ");
    scanf("%d", &choice);

    if (choice == 1) {
        int id;
        printf("请输入学生的学号: ");
        scanf("%d", &id);
        for (int i = 0; i < num_students; i++) {
            if (students[i].id == id) {
                printf("学号: %d, 姓名: %s, 年龄: %d, 性别: %s, 班级: %s\n", 
                    students[i].id, students[i].name, students[i].age, students[i].gender, students[i].class_name);
                return;
            }
        }
        printf("未找到该学生信息\n");
    } else if (choice == 2) {
        char name[50];
        printf("请输入学生的姓名: ");
        scanf("%s", name);
        for (int i = 0; i < num_students; i++) {
            if (strcmp(students[i].name, name) == 0) {
                printf("学号: %d, 姓名: %s, 年龄: %d, 性别: %s, 班级: %s\n", 
                    students[i].id, students[i].name, students[i].age, students[i].gender, students[i].class_name);
                return;
            }
        }
        printf("未找到该学生信息\n");
    } else {
        printf("无效的选择\n");
    }
}

void modify_student(Student students[], int num_students) {
    int id;
    printf("请输入要修改的学生的学号: ");
    scanf("%d", &id);

    int index = -1;
    for (int i = 0; i < num_students; i++) {
        if (students[i].id == id) {
            index = i;
            break;
        }
    }

    if (index != -1) {
        printf("请输入学生的新姓名: ");
        scanf("%s", students[index].name);
        printf("请输入学生的新年龄: ");
        scanf("%d", &students[index].age);
        printf("请输入学生的新性别: ");
        scanf("%s", students[index].gender);
        printf("请输入学生的新班级: ");
        scanf("%s", students[index].class_name);
        printf("学生信息已更新。\n");
    } else {
        printf("未找到该学生信息。\n");
    }
}

void delete_student(Student students[], int *num_students) {
    int id;
    printf("请输入要删除的学生的学号: ");
    scanf("%d", &id);

    int index = -1;
    for (int i = 0; i < *num_students; i++) {
        if (students[i].id == id) {
            index = i;
            break;
        }
    }

    if (index != -1) {
        for (int i = index; i < (*num_students) - 1; i++) {
            students[i] = students[i + 1];
        }
        (*num_students)--;
        printf("学生信息已删除。\n");
    } else {
        printf("未找到该学生信息。\n");
    }
}

void display_students(Student students[], int num_students) {
    printf("+--------+--------+------+-------+------------+\n");
    printf("| 学号    | 姓名    | 年龄  | 性别  | 班级        |\n");
    printf("+--------+--------+------+-------+------------+\n");
    for (int i = 0; i < num_students; i++) {
        printf("| %-6d | %-6s | %-4d | %-5s | %-10s |\n",
               students[i].id, students[i].name, students[i].age, students[i].gender, students[i].class_name);
    }
    printf("+--------+--------+------+-------+------------+\n");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

# 设置项目名称和版本
project(StudentInfoManagementSystem VERSION 1.0)

# 设置C标准
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED True)

# 添加一个可执行文件
add_executable(StudentInfoManagementSystem src/main.c src/student.c)

# 如果你有其他库文件或者链接的需求,你可以在这里添加
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

六,功能展示

1. 用户界面

在这里插入图片描述

2. 添加学生信息

在这里插入图片描述

3. 查询学生信息

在这里插入图片描述

4. 修改学生信息

在这里插入图片描述

5. 删除学生信息

在这里插入图片描述

6. 显示所有学生信息

在这里插入图片描述

项目资料

项目的资料及代码已整理打包,有需要可取,也可定制开发,附带GPT提问链接。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/382632
推荐阅读