学生管理系统

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef struct {

    char name[50];

    int id;

    int age;

    float grade;

} Student;

//1.添加学生信息:包括学生的姓名、学号、年龄、成绩等。

//count指针定义学生数量

void addStudent(Student* students, int* count)

{

    //Student addstudent;

    printf("请输入所添加学生的姓名:");

    scanf("%s", students[*count].name);

    printf("请输入所添加学生的学号:");

    scanf("%d", &students[*count].id);

    printf("请输入所添加学生的年龄:");

    scanf("%d", &students[*count].age);

    printf("请输入所添加学生的成绩:");

    scanf("%f", &students[*count].grade);

    (*count)++;

   

}

//2.删除学生信息:通过学号删除学生信息

void deleteStudent(Student* students, int* count, int id)

{

    for (int i = 0; i < *count; i++)

    {

        if (students[i].id == id)

        {

            for (int j = i; j < *count; j++)

            {

                students[j] = students[j + 1];

            }

            (*count)--;

            break;

        }

        else

        {

            printf("没有这个学号的学生\n");

        }

    }

   

}

//3.修改学生信息:修改已有的学生信息。

void modifyStudent(Student* students, int count, int id)

{

    Student newstudent;

    printf("依次输入新学生的姓名,年龄和成绩:\n");

    scanf("%s",newstudent.name);

    scanf("%d",&newstudent.age);

    scanf("%f",&newstudent.grade);

    //scanf("%s %d %.2f", newstudent.name, &newstudent.id, &newstudent.grade);

    newstudent.id = id;

    for (int i = 0; i < count; i++)

    {

        if (students[i].id == id)

        {

            students[i] = newstudent;

            break;

        }

    }

}

//4.查找学生信息:通过学号查找学生信息。

void findStudentById(Student* students, int count, int id)

{

    for (int i = 0; i < count; i++)

    {

        if (students[i].id == id)

        {

           

            printf("学生姓名:%s\n", students[i].name);

            printf("学生ID:%d\n", students[i].id);

            printf("学生年龄:%d\n", students[i].age);

            printf("学生成绩:%.2f\n", students[i].grade);

           

        }

        else

        {

            printf("没有这个学号的学生\n");

        }

       

    }

}

//5.查找学生信息:通过姓名查找学生信息。

void findStudentByName(Student* students, int count, char* name)

{

    for (int i = 0; i < count; i++)

    {

        int compare=strcmp(students[i].name,name);

        if (compare==0)

        {

            printf("学生姓名:%s\n", students[i].name);

            printf("学生ID:%d\n", students[i].id);

            printf("学生年龄:%d\n", students[i].age);

            printf("学生成绩:%.2f\n", students[i].grade);

        }

        else

        {

            printf("没有这个姓名的学生\n");

        }

    }

}

//6.显示所有学生信息

void displayAllStudents(Student* students, int count)

{

    for (int i = 0; i < count; i++)

    {

        printf("学生姓名:%s\n", students[i].name);

        printf("学生ID:%d\n", students[i].id);

        printf("学生年龄:%d\n", students[i].age);

        printf("学生成绩:%.2f\n", students[i].grade);

        printf("\n");

    }

}

//7.对学生成绩进行排序

void sortStudentsByGrade(Student* students, int count)

{

    for (int i = 0; i < count; i++)

    {

        for (int j = 0; j < count - 1 - i; j++)

        {

            if (students[j].grade < students[j + 1].grade)

            {

                Student temp = students[j];

                students[j] = students[j + 1];

                students[j + 1] = temp;

            }

        }

    }

}

//8.把学生信息保存到文件中

void saveToFile(Student * students, int count, const char* filename)

{

        FILE* file = fopen("students.txt", "w");

        if (file == NULL)

        {

            printf("Error opening file.\n");

            return;

        }

        for (int i = 0; i <count; i++)

        {

            fprintf(file, "%s %d %d %.2f",

                students[i].name, students[i].id,

                students[i].age, students[i].grade);

        }

        fclose(file);

}

//从文件中加载学生信息

//Student* students, int* count, const char* filename

void loadFromFile(Student* students, int* count, const char* filename)

{

    FILE* file = fopen("students.txt", "r");

    if (file == NULL)

    {

        printf("Error opening file.\n");

        return;

    }

    while (fscanf(file, "%s %d %d %f",

        students[*count].name, &students[*count].id,

        &students[*count].age, &students[*count].grade) != EOF)

    {

        count++;

    }

    fclose(file);

}

int main()

{

    int choice;

    char students[100];

    int count = 0;

    char name[50];

    int id;

    char filename;

    while (1)

    {

        printf("1.Add Student\n");

        printf("2.Delete Student\n");

        printf("3.Modify Student\n");

        printf("4.Find Student by ID\n");

        printf("5.Find Student by Name\n");

        printf("6.Display All Students\n");

        printf("7.Sort Student by Grade\n");

        printf("8.save to file\n");

        printf("9.load From file\n");

        printf("10.Exit\n");

        printf("Enter your choice\n");

        scanf("%d", &choice);

        switch (choice)

        {

            case 1:

            {

                addStudent(students, &count);

                break;

            }

            case 2:

            {

                printf("请输入所要删除学生的学号:");

                scanf("%d", &id);

                deleteStudent(students, &count, id);

                break;

            }

            case 3:

            {

                printf("请输入所要修改学生的学号:");

                scanf("%d", &id);

                modifyStudent(students, count, id);

                break;

            }

            case 4:

            {

                printf("请输入所要查找学生的学号:");

                scanf("%d", &id);

                findStudentById(students, count, id);

                break;

            }

            case 5:

            {

                printf("请输入所要查找学生的姓名:");

                scanf("%s", name);

                findStudentByName(students, count, name);

                break;

            }

            case 6:

            {

                displayAllStudents(students, count);

                break;

            }

            case 7:

            {

                sortStudentsByGrade(students, count);

                break;

            }

            case 8:

            {

                saveToFile(students, count, filename);

                break;

            }

            case 9:

            {

                loadFromFile(students, &count, filename);

                break;

            }

            case 10:

                break;

            default:

            {

                printf("It donot have this choice.\n");

            }

        }

        if (choice == 10)

        break;

    }

    return;

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值