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
7 years ago
by
raliis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace andmebaas.c
parent
534c4dc9
master
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
;
}
This diff is collapsed.
Click to expand it.
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