Sistema de gestión de estudiantes versión en lenguaje C.

Ideas

Ingrese al archivo de carga, muestre el menú y seleccione la función. Si no elige salir, use binario para leer y escribir el archivo en el bucle while para implementar las funciones de agregar, ver a todos los estudiantes y buscar estudiantes .

Display_Menu()菜单

Load_File()加载文件

Add_Student()新增学生方法:
使用二进制追加读和写打开
判断是否有相同的学号,没有的话写入数据到文件中。

Student_Information()查看全部学生信息:
使用while读取,读取数量不为0则一直读取输出打印。

Lookup_Student()查找学生
使用循环读取数据,在循环中判断输入的学号是否与文件中的学号相同,相同则不写入文件中,不相同即写入文件中。

representaciones

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Barra de menús

void Display_Menu(){
    
    
    printf("=================================================\n");
    printf("=               1.新增学生                        =\n");
    printf("=              2.查看全部学生                      =\n");
    printf("=               3.查找学生                        =\n");
    printf("=              4.重新加载文件                      =\n");
    printf("=                 5.退出                         =\n");
    printf("=================================================\n");
}

función principal

int main() {
    
    
    FILE *fp;
    char option;
    char szPath[20];
    printf("请输入需要加载的文件:");
    scanf("%s",&szPath);
    getchar();
    fp = fopen(szPath,"ab+");
    if(fp == NULL){
    
    
        printf("打开失败\n");
        exit(0);
    }
    Display_Menu();
    scanf("%c",&option);

    while(option != '5'){
    
    
        switch (option) {
    
    
            case '1':
                Add_Student(szPath);break;
            case '2':
                Student_Information(szPath);break;
            case '3':
                Lookup_Student(szPath);
                break;
            case '4':
                printf("请输入需要加载的文件:");
                scanf("%s",szPath);
                Load_File(szPath);
                break;
            case '5':
                fclose(fp);
                exit(0);
            default:
                exit(0);
        }
        Display_Menu();
        getchar();
        scanf("%c",&option);
    }
    fclose(fp);
    return 0;
}

Carga de archivos

int Load_File(char filename[20]){
    
    
    FILE *fp;
    fp = fopen(filename,"ab+");
    if(fp == NULL){
    
    
        printf("打开失败\n");
    }else{
    
    
        printf("加载成功\n");
    }
    fclose(fp);
    return 0;
}

Agregar nuevo estudiante

fopen(filename,"ab+") utiliza lectura y escritura de anexos binarios para abrir
Check_Student(st->no,filename) para determinar si existen los mismos ID de estudiante. De lo contrario, escriba los datos en el archivo.

int Add_Student(char *filename){
    
    
    struct Student st;
    FILE *fp = fopen(filename,"ab+");
    printf("==新增学生界面==\n");
    printf("请输入学生信息\n");
    printf("学号:");
    scanf("%d",&st.no);
    printf("姓名:");
    scanf("%s",st.name);
    getchar();
    printf("性别(F:女,M:男):");
    scanf("%c",&st.sex);
    printf("年龄:");
    scanf("%d",&st.age);

    if(Check_Student(st.no,filename)){
    
    
        fwrite(&st,sizeof(struct Student),1,fp);
        printf("成功\n");
        fclose(fp);
        return 0;
    }else{
    
    
        printf("该学生已经存在\n");
        fclose(fp);
        return 0;
    }

}

Ver todos los estudiantes

Utilice while para leer. Si el número de lecturas no es 0, lea la siguiente línea de datos.

int Student_Information(char *filename){
    
    
    struct Student *st;
    FILE *fp = fopen(filename,"rb+");
    rewind(fp);
    while (fread(st, sizeof(struct Student),1,fp) != 0){
    
    
        printf("%s-%d-%d-%s\n", st->name, st->no, st->age, st->sex == 'F' ? "女" : "男");
    }
    fclose(fp);
    return 0;
}

encontrar estudiantes

Utilice un bucle para leer datos y determine si el número de estudiante ingresado es el mismo que el número de estudiante en el archivo. Si son iguales, no se escribirán en el archivo.

int Lookup_Student(char *filename){
    
    
    int szNo;
    struct Student *st;
    printf("请输入要查找的学生学号:");
    scanf("%d",&szNo);
    FILE *fp = fopen(filename,"rb+");
    while (fread(st, sizeof(struct Student),1,fp) != 0){
    
    
        if(st->no == szNo){
    
    
            printf("%s-%d-%d-%s\n", st->name, st->no, st->age, st->sex == 'F' ? "女" : "男");
        }
    }
    fclose(fp);
    return 0;
}

dirección de código

Github: https://github.com/Ltike/Learning.git

Supongo que te gusta

Origin blog.csdn.net/qq_43802454/article/details/121297692
Recomendado
Clasificación