我在哪里可以找到使用struct在C中创建的数据库的一些示例?

时间:2017-05-26 18:12:00

标签: c database pointers struct

我在大学里获得了一项任务,我需要使用struct在C中创建数据库,数据库的结构如下:

学生

  • 名称
    • 名称
    • 姓氏
  • 学期
    • 学期开设的课程
      • 所述课程的名称
      • 等级
      • 本课程授予的学分

重要的是,每学期,任何学生都可以参加任何一定数量的课程。

现在我被困了,因为要求如下:

  • 我应该可以更新任何学生的信息
  • 编辑他们的成绩,并使用不同的文件计算学分数,其中说明每门课程授予的学分数。
  • 搜索学生

我非常熟悉指针和结构,我正在寻找C中类似数据库的例子,因为我还没有掌握如何在我的数据库中添加/更新/删除学生的概念,地狱我甚至不知道如何正确存放它们! 任何帮助将不胜感激。

以下是我到目前为止所写的内容:

#include <stdio.h>
#include <stdlib.h>


typedef struct UDA {
    char clave[9];
    char nombre[125];
} UDA;

typedef struct NOMBRE{
    char N[100];
} NOMBRE;

typedef struct PERIODO{
    UDA *uda;
} PERIODO;

typedef struct ALUMNO{
    int nua;
    NOMBRE nombre;
    PERIODO *periodo;
} ALUMNO;

int main(int argc, const char * argv[]) {
    int s, d;
    FILE *clave;
    FILE *alumi;

    ALUMNO student;

    switch (argc) {
        case 3:
            clave = fopen(argv[1], "r");
            alumi = fopen(argv[2], "a+");
            break;
        case 2:
            if(argv[1][0] == 'c'){
                clave = fopen(argv[1], "r");
                alumi = fopen("alumnos.txt", "a+");
                fprintf(alumi, "0\n");
            } else {
                printf("ERROR\nArchivos faltantes\n");
                return 0;
            }
            break;
        case 1:
            clave = fopen("claves.txt", "r");
            alumi = fopen("alumnos.txt", "a+");
            fprintf(alumi, "0\n");
            break;
    }

    do{
        printf("Desea:\n1. Agregar alumno\n2. Actualizar alumno\n3. Eliminar alumno\n4. Mostrar informacion de un alumno\n\t> ");
        scanf("%d", &d);
    } while(d<1 || d>4);

    switch (d) {
        case 1:
            getchar();
            printf("Ingrese el nombre del alumno: ");
            scanf("%[^\n]", student.nombre.N);
            fprintf(alumi, "%s\n", student.nombre.N);

    }

    fclose(alumi);
    fclose(clave);
    return 0;
}  

这里还有两行claves.txt,它是包含课程名称的文件。

NELI06001   Algebra Lineal
AGLIS4001   Analisis de Documentales en una Lengua Extranjera

1 个答案:

答案 0 :(得分:1)

要回答您的评论(如果我理解正确的话),您可以打开2个文件,命名一个临时文件并开始复制从文件1到文件2的所有内容,直到找到您想要更改的内容,更改它并继续复制其余的重命名您创建的“temp”文件并删除旧文件。

0xFF0000FF

在删除和重命名之前,确保事情确实发生了变化,否则你将留下一个空文件。

我很想听到不同的/更有效的答案,因为我还在学习。