Commit 6fc58395 by raliis

Replace andmebaas.c

parent 534c4dc9
Showing with 183 additions and 54 deletions
/**
* File: andmebaas1.c
* Author: Rainer Liis
* Created: 14.02.2018
* Last edit: 14.02.2018
*
* Description: programm, mis loeb sisse ühest failist tudengite andmed
* ja teisest ainete andmed ja prindib uude faili eksamipileti.
*/
#include <stdio.h>
#include <string.h>
#include "struktuurid.h"
void yhildus (Subject *aine_massiiv, int aine_arv, Student *tudeng_massiiv, int tudeng_arv, Output *koond_massiiv);
void perenime_sortimine ();
int tudengidSisse (FILE *tudengid, Student *tudeng, Student *tudeng_massiiv);
int ainedSisse (FILE *ained, Subject *aine, Subject *aine_massiiv);
void yhildus (Subject *aine_massiiv, Student *tudeng_massiiv, Pilet *pileti_liige, int counter_sub, int counter_stud);
int sortimine (Pilet *pileti_liige, int counter_sub);
void eksamileht (Pilet *pileti_liige, int counter_sub, int ainete_hulk);
int main ()
int main (void)
{
FILE *tudengid, *ained; // tekitab pointerid failidele
Student tudeng; // muutuja tudengi andmete hoiustamiseks
Student tudeng_massiiv[25]; // massiiv tudengite hoidmiseks
Subject aine; // muutuja aine andmete hoiustamiseks
Subject aine_massiiv[25]; // massiiv ainete hoiustamiseks
Output koond_massiiv[25];
Pilet pileti_liige[30]; // muutuja ainete ja tudengite ühildamiseks
Student tudeng[30]; // muutuja tudengi andmete hoiustamiseks
Subject aine[30]; // muutuja aine andmete hoiustamiseks
Student tudeng_massiiv[30]; // massiiv tudengite hoidmiseks
Subject aine_massiiv[30]; // massiiv ainete hoiustamiseks
int counter_stud; // tudengite loendur
int counter_sub; // ainete loendur
int ainete_hulk; // loeb ära mitu erinevat ainet on
tudengid = fopen ("tudengid1.txt", "r"); // avab faili tudengid
ained = fopen ("ained1.txt", "r"); // avab faili andmed
counter_stud = tudengidSisse (tudengid, tudeng, tudeng_massiiv);
counter_sub = ainedSisse (ained, aine, aine_massiiv);
fclose (tudengid);
fclose (ained);
yhildus (aine_massiiv, tudeng_massiiv, pileti_liige, counter_sub, counter_stud);
ainete_hulk = sortimine (pileti_liige, counter_sub);
printf ("Aineid kokku: %d\n", ainete_hulk);
tudengid = fopen ("tudengid.txt", "r"); // avab faili tudengid
ained = fopen ("ained.txt", "r"); // avab faili andmed
eksamileht (pileti_liige, counter_sub, ainete_hulk);
int tudeng_arv = 0;
return 0;
}
// skanneerib failist sisse andmed tundegite kohta
while (fscanf(tudengid,"%s %s %s ", tudeng.eesnimi, tudeng.perenimi, tudeng.matrikkel) != EOF)
int tudengidSisse (FILE *tudengid, Student *tudeng, Student *tudeng_massiiv)
{
int i = 0;
int counter = 0;
while (fscanf (tudengid, "%s %s %d", tudeng->eesnimi, tudeng->perenimi, &tudeng->matrikkel) != EOF)
{
printf("%s\t %s\t %s \n", tudeng.eesnimi, tudeng.perenimi, tudeng.matrikkel);
//puts (tudeng_massiiv[tudeng_arv].eesnimi);
//puts (tudeng_massiiv[tudeng_arv].perenimi);
//puts (tudeng_massiiv[tudeng_arv].matrikkel);
tudeng_massiiv[tudeng_arv] = tudeng;
tudeng_arv++;
strcpy (tudeng_massiiv[i].eesnimi, tudeng->eesnimi);
strcpy (tudeng_massiiv[i].perenimi, tudeng->perenimi);
tudeng_massiiv[i].matrikkel = tudeng->matrikkel;
i++;
counter++;
}
fclose (tudengid);
printf (" \n\n");
for (i = 0; i < counter; i++)
{
printf ("%s, %s, %d\n", tudeng_massiiv[i].eesnimi, tudeng_massiiv[i].perenimi, tudeng_massiiv[i].matrikkel);
}
int aine_arv = 0;
printf (" \n");
return counter;
}
int ainedSisse (FILE *ained, Subject *aine, Subject *aine_massiiv)
{
int i = 0;
int counter = 0;
// skanneerib failist sisse andmed ainete kohta
while (fscanf(ained,"%s %s %s %d", aine.nimi, aine.kood, aine.matrikkel, &aine.tulemus) != EOF)
while (fscanf (ained, "%s %s %d %d", aine->nimi, aine->kood, &aine->matrikkel, &aine->tulemus) != EOF)
{
//printf("%s \t", aine.kood);
printf("%s %s %s %d \n", aine.nimi, aine.kood, aine.matrikkel, aine.tulemus);
//puts (aine_massiiv[aine_arv].nimi);
//puts (aine_massiiv[aine_arv].kood);
//puts (aine_massiiv[aine_arv].matrikkel);
//printf ("%d\n\n", aine.tulemus);
aine_massiiv[aine_arv] = aine;
aine_arv++;
strcpy (aine_massiiv[i].nimi, aine->nimi);
strcpy (aine_massiiv[i].kood, aine->kood);
aine_massiiv[i].matrikkel = aine->matrikkel;
aine_massiiv[i].tulemus = aine->tulemus;
i++;
counter++;
}
fclose (ained);
// ühildab vastavad andmed
yhildus (aine_massiiv, aine_arv, tudeng_massiiv, tudeng_arv, koond_massiiv);
for (i = 0; i < counter; i++)
{
printf ("%s, %s, %d, %d\n", aine_massiiv[i].nimi, aine_massiiv[i].kood, aine_massiiv[i].matrikkel, aine_massiiv[i].tulemus);
}
return 0;
printf (" \n");
return counter;
}
void yhildus (Subject *aine_massiiv, int aine_arv, Student *tudeng_massiiv, int tudeng_arv, Output *koond_massiiv)
void yhildus (Subject *aine_massiiv, Student *tudeng_massiiv, Pilet *pileti_liige, int counter_sub, int counter_stud)
{
int i;
int j;
int k = 0;
int counter = 0;
printf ("%d, %d \n", aine_arv, tudeng_arv);
for (i = 0; i < aine_arv; i++)
for (i = 0; i < counter_sub; i++)
{
for (j = 0; j < counter_stud; j++)
{
for (j = 0; j < tudeng_arv; j++)
if (aine_massiiv[i].matrikkel == tudeng_massiiv[j].matrikkel)
{
//printf ("%d, %d \n", i, j);
if (strcmp (aine_massiiv[i].matrikkel, tudeng_massiiv[j].matrikkel) == 0)
strcpy (pileti_liige[k].aineNimi, aine_massiiv[i].nimi);
strcpy (pileti_liige[k].perenimi, tudeng_massiiv[j].perenimi);
strcpy (pileti_liige[k].eesnimi, tudeng_massiiv[j].eesnimi);
pileti_liige[k].matrikkel = tudeng_massiiv[j].matrikkel;
pileti_liige[k].tulemus = aine_massiiv[i].tulemus;
k++;
counter++;
}
}
}
for (i = 0; i < counter; i++)
{
printf ("%s, %s, %s, %s, %s, %d", aine_massiiv[i].nimi, aine_massiiv[i].kood,
tudeng_massiiv[j].matrikkel, tudeng_massiiv[j].eesnimi, tudeng_massiiv[j].perenimi,
aine_massiiv[i].tulemus);
printf ("%s, %s, %s, %d, %d\n", pileti_liige[i].aineNimi, pileti_liige[i].perenimi, pileti_liige[i].eesnimi, pileti_liige[i].matrikkel, pileti_liige[i].tulemus);
}
printf (" \n");
return;
}
int sortimine (Pilet *pileti_liige, int counter_sub)
{
Pilet temp;
int i, j;
int ainete_hulk = 0;
//strcpy (koond_massiiv[i].perenimi, tudeng_massiiv[j].perenimi);
//strcpy (koond_massiiv[i].eesnimi, tudeng_massiiv[j].eesnimi);
//printf ("\n%s, %s", koond_massiiv[i].perenimi, koond_massiiv[i].eesnimi);
for (i = 0; i < counter_sub; i++)
{
for (j = 0; j < counter_sub; j++)
{
if (strcmp (pileti_liige[j-1].aineNimi, pileti_liige[j].aineNimi) == 0)
{
if (strcmp (pileti_liige[j-1].perenimi, pileti_liige[j].perenimi) > 0)
{
temp = pileti_liige[j-1];
pileti_liige[j-1] = pileti_liige[j];
pileti_liige[j] = temp;
}
else
}
}
}
for (i = 0; i < counter_sub; i++)
{
printf ("%d\t %d, %d\n", strcmp (aine_massiiv[i].matrikkel, tudeng_massiiv[j].matrikkel), i, j);
printf ("%s, %s\n\n", aine_massiiv[i].matrikkel, tudeng_massiiv[j].matrikkel);
if (strcmp (pileti_liige[i-1].aineNimi, pileti_liige[i].aineNimi) != 0)
{
ainete_hulk++;
}
}
for (i = 0; i < counter_sub; i++)
{
printf ("%s, %s, %s, %d, %d\n", pileti_liige[i].aineNimi, pileti_liige[i].perenimi, pileti_liige[i].eesnimi, pileti_liige[i].matrikkel, pileti_liige[i].tulemus);
}
return;
printf (" \n");
return ainete_hulk;
}
void perenime_sortimine ()
void eksamileht (Pilet *pileti_liige, int counter_sub, int ainete_hulk)
{
int i;
int j = 0;
Pilet ainete_loend[ainete_hulk];
FILE *output;
for (i = 0; i < counter_sub; i++)
{
if (strcmp (pileti_liige[i-1].aineNimi, pileti_liige[i].aineNimi) != 0)
{
strcpy (ainete_loend[j].aineNimi, pileti_liige[i].aineNimi);
j++;
}
}
for (i = 0; i < ainete_hulk; i++)
{
output = fopen (ainete_loend[i].aineNimi, "r");
if (output)
{
printf ("Avati fail %s\n", ainete_loend[i].aineNimi);
fclose (output);
}
else
{
output = fopen (ainete_loend[i].aineNimi, "w");
fprintf (output, "%s\n Perenimi Eesnimi Matrikkel Tulemus\n", ainete_loend[i].aineNimi);
printf ("Loodi fail %s\n", ainete_loend[i].aineNimi);
fclose (output);
}
}
for (i = 0; i < ainete_hulk; i++)
{
output = fopen (ainete_loend[i].aineNimi, "a");
for (j = 0; j < counter_sub; j++)
{
if (strcmp (ainete_loend[i].aineNimi, pileti_liige[j].aineNimi) == 0)
{
fprintf (output, "%s %s %d %d\n", pileti_liige[j].perenimi, pileti_liige[j].eesnimi, pileti_liige[j].matrikkel, pileti_liige[j].tulemus);
printf ("Faili nimega %s prinditi: %s %s %d %d\n", pileti_liige[j].aineNimi, pileti_liige[j].perenimi, pileti_liige[j].eesnimi, pileti_liige[j].matrikkel, pileti_liige[j].tulemus);
}
}
fclose (output);
}
return;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment