Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
raliis
/
IAX0584
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
6fc58395
authored
Feb 14, 2018
by
raliis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace andmebaas.c
parent
534c4dc9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
185 additions
and
56 deletions
andmebaas1/andmebaas.c
andmebaas1/andmebaas.c
View file @
6fc58395
/**
* 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
);
eksamileht
(
pileti_liige
,
counter_sub
,
ainete_hulk
);
tudengid
=
fopen
(
"tudengid.txt"
,
"r"
);
// avab faili tudengid
ained
=
fopen
(
"ained.txt"
,
"r"
);
// avab faili andmed
return
0
;
}
int
tudeng_arv
=
0
;
int
tudengidSisse
(
FILE
*
tudengid
,
Student
*
tudeng
,
Student
*
tudeng_massiiv
)
{
int
i
=
0
;
int
counter
=
0
;
// skanneerib failist sisse andmed tundegite kohta
while
(
fscanf
(
tudengid
,
"%s %s %s "
,
tudeng
.
eesnimi
,
tudeng
.
perenimi
,
tudeng
.
matrikkel
)
!=
EOF
)
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
);
}
printf
(
"
\n
"
);
return
counter
;
}
int
ainedSisse
(
FILE
*
ained
,
Subject
*
aine
,
Subject
*
aine_massiiv
)
{
int
i
=
0
;
int
counter
=
0
;
int
aine_arv
=
0
;
while
(
fscanf
(
ained
,
"%s %s %d %d"
,
aine
->
nimi
,
aine
->
kood
,
&
aine
->
matrikkel
,
&
aine
->
tulemus
)
!=
EOF
)
{
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
++
;
}
// skanneerib failist sisse andmed ainete kohta
while
(
fscanf
(
ained
,
"%s %s %s %d"
,
aine
.
nimi
,
aine
.
kood
,
aine
.
matrikkel
,
&
aine
.
tulemus
)
!=
EOF
)
for
(
i
=
0
;
i
<
counter
;
i
++
)
{
//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
++
;
printf
(
"%s, %s, %d, %d
\n
"
,
aine_massiiv
[
i
].
nimi
,
aine_massiiv
[
i
].
kood
,
aine_massiiv
[
i
].
matrikkel
,
aine_massiiv
[
i
].
tulemus
);
}
fclose
(
ained
);
// ühildab vastavad andmed
yhildus
(
aine_massiiv
,
aine_arv
,
tudeng_massiiv
,
tudeng_arv
,
koond_massiiv
);
printf
(
"
\n
"
);
return
0
;
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
<
tudeng_arv
;
j
++
)
for
(
j
=
0
;
j
<
counter_stud
;
j
++
)
{
//printf ("%d, %d \n", i, j);
if
(
strcmp
(
aine_massiiv
[
i
].
matrikkel
,
tudeng_massiiv
[
j
].
matrikkel
)
==
0
)
if
(
aine_massiiv
[
i
].
matrikkel
==
tudeng_massiiv
[
j
].
matrikkel
)
{
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
);
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
++
;
}
}
}
//strcpy (koond_massiiv[i].perenimi, tudeng_massiiv[j].perenimi);
//strcpy (koond_massiiv[i].eesnimi, tudeng_massiiv[j].eesnimi);
for
(
i
=
0
;
i
<
counter
;
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
);
}
//printf ("\n%s, %s", koond_massiiv[i].perenimi, koond_massiiv[i].eesnimi);
}
else
printf
(
"
\n
"
);
return
;
}
int
sortimine
(
Pilet
*
pileti_liige
,
int
counter_sub
)
{
Pilet
temp
;
int
i
,
j
;
int
ainete_hulk
=
0
;
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
)
{
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
[
j
-
1
].
perenimi
,
pileti_liige
[
j
].
perenimi
)
>
0
)
{
temp
=
pileti_liige
[
j
-
1
];
pileti_liige
[
j
-
1
]
=
pileti_liige
[
j
];
pileti_liige
[
j
]
=
temp
;
}
}
}
}
return
;
for
(
i
=
0
;
i
<
counter_sub
;
i
++
)
{
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
);
}
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
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment