mustaphos
MB Üyesi
- Kayıt
- 14 Eylül 2015
- Mesajlar
- 35
- Tepkiler
- 8
- Yaş
- 29
- Meslek
- Öğrenci
- Üniv
- Anadolu University
Merhabalar.
Bu programımda struct ve dosya işlem operatörleri ile bir öğrenci veritabanı yaptım.
Veritabanına erişip öğrenci kaydetme,silme,sıralama,arama,listeleme yapılabiliyor.
İyi çalışmalar.
/* Used libraries */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
/* Function prototypes */
void menu_function();
void insert_function();
void search_function();
void delete_function();
void list_function();
/* Variables */
int menu_value;
char yes_or_no;
int list_value;
/* Struct */
struct Students
{
char name[20];
char surname[20];
char grade[6];
char id[12];
};
void main()
{
menu_function();/* Call the menu function */
}
void menu_function ()
{
yes_or_no='y';/* Define yes_or_no variable 'y' to get into the loop */
while (yes_or_no=='y')
{
printf("Type [ 0 ] and press [ ENTER ] for help\n");
printf("Type [ 1 ] and press [ ENTER ] for insert a record\n");
printf("Type [ 2 ] and press [ ENTER ] for search a record\n");
printf("Type [ 3 ] and press [ ENTER ] for delete a record\n");
printf("Type [ 4 ] and press [ ENTER ] for list of records\n");
printf("Type [ 5 ] and press [ ENTER ] to exit program\n");
printf(">>> ");
scanf("%d",&menu_value);/* Get the menu_value to call function cases */
switch(menu_value)/* What user wants to do */
{
case 0:/* Insert a student */
{
printf("> The records saved in project2_database.bin \n");
printf("> Search and delete functions are uppercase and lowercase sensetive. \n");
printf("> If you want to find 'Mustafa' and search 'mustafa' the result not be found. \n");
printf("> So in search and delete function, type exactly what you recorded. \n");
printf("> The grade must be 0<grade<100. Not equal to 0 and 100. \n");
printf("> If you add record 'mustafa gokce 99.99 11111111111' program works perfectly. \n");
break;
}
case 1:/* Insert a student */
{
struct Students Student;
printf("Please write students name:\n");
printf(">>>");
scanf("%s",&Student.name);
printf("Please write students surname:\n");
printf(">>>");
scanf("%s",&Student.surname);
printf("Please write students grade:\n");
printf(">>>");
scanf("%s",&Student.grade);
printf("Please write students ID number:\n");
printf(">>>");
scanf("%s",&Student.id);
insert_function(Student);/* Call insert function */
break;
}
case 2:/* Find the student */
{
char find[20];
printf("Please write the name,surname,grade or id number you want to find:\n");
printf(">>>");
scanf("%s",&find);/* Which value will be searched ? Sensible to lower and upper case, so must be searched as exactly as saved. */
search_function(find);/* Call search function */
break;
}
case 3:/* Erase a student */
{
char sil[20];
printf("Please write the record's name,surname,grade or id number you want to delete:\n");
printf(">>>");
scanf("%s",&sil);/* Scan any data which student has and delete student which is owner of data */
delete_function(sil);/* Call delete function */
break;
}
case 4:/* List of records */
{
printf("Type [ 1 ] and press [ ENTER ] for names a-z\n");
printf("Type [ 2 ] and press [ ENTER ] for surnames a-z\n");
printf("Type [ 3 ] and press [ ENTER ] for grades 0-9\n");
printf("Type [ 4 ] and press [ ENTER ] for id numbers 0-9\n");
printf("Type [ 5 ] and press [ ENTER ] for list as recorded\n");
printf(">>> ");
scanf("%d",&list_value);/* Get the list_value to call function cases */
list_function(list_value);/* Call list function */
break;
}
case 5:
{
printf("Exiting the program\n");
exit(0);/* Exit the program */
}
}
yes_or_no='n';/* Define yes_or_no value n for ask continue or not */
printf("Continue the program ? [ y ] for yes or [ n ] for no\n");
printf(">>> ");
scanf("%s",&yes_or_no);/* Get the yes_or_no value for continue the program */
}
}
void insert_function(struct Students student)
{
FILE *print_file;
print_file = fopen("project2_database.bin","ab");/* Open file for adding record */
if(print_file==NULL)/* If file not exist than create */
{
printf("Error!");
exit(1);
}
fprintf (print_file,"%s %s %s %s\n",student.name,student.surname,student.grade,student.id) ;/* Add records to file */
fclose(print_file);/* Close file */
printf("Students name:%s\n",student.name);
printf("Students surname:%s\n",student.surname);
printf("Students grade:%s\n",student.grade);
printf("Students ID number:%s\n",student.id);
}
void search_function(char find[20])
{
struct Students student;
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;/* Open file for reading */
if(read_file==NULL)/* If file not exist than create */
{
printf("Error!");
exit(1);
}
else
{
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan file */
while(!feof(read_file))
{
if(strcmp(find,student.name)==0||strcmp(find,student.surname)==0||strcmp(find,student.grade)==0||strcmp(find,student.id)==0)/* If there is any match */
{
printf("%-20s %-20s %-5s %-12s\n",&student.name,&student.surname,&student.grade,&student.id);/* Print the match */
}
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan until end of the file */
}
}
fclose(read_file);/* Close file */
}
void delete_function(char sil[20])
{
struct Students student;
struct Students delete_student[1000];/* For rewrite the file without deleted datas */
int n=0;
int sayac;
FILE *read_file;
FILE *print_file;
read_file = fopen ( "project2_database.bin", "r" ) ;/* Open file for reading */
if(read_file==NULL)/* If file not exist than create */
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan datas in file */
while(!feof(read_file))
{
delete_student[n]=student;/* Each rows recorded as a struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan datas continuesly */
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=0;sayac<n;sayac++)
{
if(!(strcmp(sil,delete_student[sayac].name)==0||strcmp(sil,delete_student[sayac].surname)==0||strcmp(sil,delete_student[sayac].grade)==0||strcmp(sil,delete_student[sayac].id)==0))/* Print the datas which will not be deleted */
{
printf("%-20s %-20s %-5s %-12s\n",&delete_student[sayac].name,&delete_student[sayac].surname,&delete_student[sayac].grade,&delete_student[sayac].id);
}
}
}
fclose(fopen("project2_database.bin", "w"));/* Clean the file */
fclose(read_file);
print_file = fopen("project2_database.bin","ab");
if(print_file==NULL)
{
printf("Error!");
exit(1);
}
for(sayac=0;sayac<n;sayac++)
{
if(!(strcmp(sil,delete_student[sayac].name)==0||strcmp(sil,delete_student[sayac].surname)==0||strcmp(sil,delete_student[sayac].grade)==0||strcmp(sil,delete_student[sayac].id)==0))/* Write the datas which will not be deleted into the file */
{
fprintf (print_file,"%s %s %s %s\n",&delete_student[sayac].name,&delete_student[sayac].surname,&delete_student[sayac].grade,&delete_student[sayac].id) ;/* Write datas */
}
}
fclose(print_file);
}
void list_function(int list_value)
{
struct Students student;
static struct Students dynamic_student[1000];
static struct Students dynamic_student2[1000];
static struct Students dynamic_student3[1000];
static struct Students dynamic_student4[1000];
static struct Students student_temp;
int n=0;
int sayac;
int sayac2;
switch(list_value)
{
case 1:/* List names a-z */
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan file */
while(!feof(read_file))
{
dynamic_student[n]=student;/* Record the datas which are inside file to the dynamic struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan file continiously */
}
for(sayac=0;sayac<n;sayac++)
{
for(sayac2=0;sayac2<n;sayac2++)
{
if(strcmp(dynamic_student[sayac2].name, dynamic_student[sayac2+1].name) > 0)/* If right name comes first in alphabetical order with left name than switch the datas */
{
student_temp=dynamic_student[sayac2+1];
dynamic_student[sayac2+1]=dynamic_student[sayac2];
dynamic_student[sayac2]=student_temp;
}
}
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=1;sayac<n+1;sayac++)
{
printf("%-20s %-20s %-5s %-12s\n",&dynamic_student[sayac].name,&dynamic_student[sayac].surname,&dynamic_student[sayac].grade,&dynamic_student[sayac].id);/* Print the alphabetical sorted datas */
}
}
fclose(read_file);
break;
}
case 2:
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
while(!feof(read_file))
{
dynamic_student2[n]=student;/* Record the datas which are inside file to the dynamic struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
}
for(sayac=0;sayac<n;sayac++)
{
for(sayac2=0;sayac2<n;sayac2++)
{
if(strcmp(dynamic_student2[sayac2].surname, dynamic_student2[sayac2+1].surname) > 0)/* Compare surnames */
{
student_temp=dynamic_student2[sayac2+1];
dynamic_student2[sayac2+1]=dynamic_student2[sayac2];
dynamic_student2[sayac2]=student_temp;
}
}
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=1;sayac<n+1;sayac++)
{
printf("%-20s %-20s %-5s %-12s\n",&dynamic_student2[sayac].name,&dynamic_student2[sayac].surname,&dynamic_student2[sayac].grade,&dynamic_student2[sayac].id);/* Print datas in surnames alphabetical order */
}
}
fclose(read_file);
break;
}
case 3:
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
while(!feof(read_file))
{
dynamic_student3[n]=student;/* Record the datas which are inside file to the dynamic struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
}
for(sayac=0;sayac<n;sayac++)
{
for(sayac2=0;sayac2<n;sayac2++)
{
if(strcmp(dynamic_student3[sayac2].grade, dynamic_student3[sayac2+1].grade) > 0)/* Compare grades */
{
student_temp=dynamic_student3[sayac2+1];
dynamic_student3[sayac2+1]=dynamic_student3[sayac2];
dynamic_student3[sayac2]=student_temp;
}
}
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=1;sayac<n+1;sayac++)
{
printf("%-20s %-20s %-5s %-12s\n",&dynamic_student3[sayac].name,&dynamic_student3[sayac].surname,&dynamic_student3[sayac].grade,&dynamic_student3[sayac].id);/* Print records in ascending grades */
}
}
fclose(read_file);
break;
}
case 4:
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
while(!feof(read_file))
{
dynamic_student4[n]=student;/* Record the datas which are inside file to the dynamic struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
}
for(sayac=0;sayac<n;sayac++)
{
for(sayac2=0;sayac2<n;sayac2++)
{
if(strcmp(dynamic_student4[sayac2].id, dynamic_student4[sayac2+1].id) > 0)/* Compare ID numbers */
{
student_temp=dynamic_student4[sayac2+1];
dynamic_student4[sayac2+1]=dynamic_student4[sayac2];
dynamic_student4[sayac2]=student_temp;
}
}
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=1;sayac<n+1;sayac++)
{
printf("%-20s %-20s %-5s %-12s\n",&dynamic_student4[sayac].name,&dynamic_student4[sayac].surname,&dynamic_student4[sayac].grade,&dynamic_student4[sayac].id);/* Print datas in ascending ID form */
}
}
fclose(read_file);
break;
}
case 5:
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
while(!feof(read_file))
{
printf("%-20s %-20s %-5s %-12s\n",&student.name,&student.surname,&student.grade,&student.id);/* Print datas as recorded */
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
}
}
fclose(read_file);
break;
}
}
}
Bu programımda struct ve dosya işlem operatörleri ile bir öğrenci veritabanı yaptım.
Veritabanına erişip öğrenci kaydetme,silme,sıralama,arama,listeleme yapılabiliyor.
İyi çalışmalar.
/* Used libraries */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
/* Function prototypes */
void menu_function();
void insert_function();
void search_function();
void delete_function();
void list_function();
/* Variables */
int menu_value;
char yes_or_no;
int list_value;
/* Struct */
struct Students
{
char name[20];
char surname[20];
char grade[6];
char id[12];
};
void main()
{
menu_function();/* Call the menu function */
}
void menu_function ()
{
yes_or_no='y';/* Define yes_or_no variable 'y' to get into the loop */
while (yes_or_no=='y')
{
printf("Type [ 0 ] and press [ ENTER ] for help\n");
printf("Type [ 1 ] and press [ ENTER ] for insert a record\n");
printf("Type [ 2 ] and press [ ENTER ] for search a record\n");
printf("Type [ 3 ] and press [ ENTER ] for delete a record\n");
printf("Type [ 4 ] and press [ ENTER ] for list of records\n");
printf("Type [ 5 ] and press [ ENTER ] to exit program\n");
printf(">>> ");
scanf("%d",&menu_value);/* Get the menu_value to call function cases */
switch(menu_value)/* What user wants to do */
{
case 0:/* Insert a student */
{
printf("> The records saved in project2_database.bin \n");
printf("> Search and delete functions are uppercase and lowercase sensetive. \n");
printf("> If you want to find 'Mustafa' and search 'mustafa' the result not be found. \n");
printf("> So in search and delete function, type exactly what you recorded. \n");
printf("> The grade must be 0<grade<100. Not equal to 0 and 100. \n");
printf("> If you add record 'mustafa gokce 99.99 11111111111' program works perfectly. \n");
break;
}
case 1:/* Insert a student */
{
struct Students Student;
printf("Please write students name:\n");
printf(">>>");
scanf("%s",&Student.name);
printf("Please write students surname:\n");
printf(">>>");
scanf("%s",&Student.surname);
printf("Please write students grade:\n");
printf(">>>");
scanf("%s",&Student.grade);
printf("Please write students ID number:\n");
printf(">>>");
scanf("%s",&Student.id);
insert_function(Student);/* Call insert function */
break;
}
case 2:/* Find the student */
{
char find[20];
printf("Please write the name,surname,grade or id number you want to find:\n");
printf(">>>");
scanf("%s",&find);/* Which value will be searched ? Sensible to lower and upper case, so must be searched as exactly as saved. */
search_function(find);/* Call search function */
break;
}
case 3:/* Erase a student */
{
char sil[20];
printf("Please write the record's name,surname,grade or id number you want to delete:\n");
printf(">>>");
scanf("%s",&sil);/* Scan any data which student has and delete student which is owner of data */
delete_function(sil);/* Call delete function */
break;
}
case 4:/* List of records */
{
printf("Type [ 1 ] and press [ ENTER ] for names a-z\n");
printf("Type [ 2 ] and press [ ENTER ] for surnames a-z\n");
printf("Type [ 3 ] and press [ ENTER ] for grades 0-9\n");
printf("Type [ 4 ] and press [ ENTER ] for id numbers 0-9\n");
printf("Type [ 5 ] and press [ ENTER ] for list as recorded\n");
printf(">>> ");
scanf("%d",&list_value);/* Get the list_value to call function cases */
list_function(list_value);/* Call list function */
break;
}
case 5:
{
printf("Exiting the program\n");
exit(0);/* Exit the program */
}
}
yes_or_no='n';/* Define yes_or_no value n for ask continue or not */
printf("Continue the program ? [ y ] for yes or [ n ] for no\n");
printf(">>> ");
scanf("%s",&yes_or_no);/* Get the yes_or_no value for continue the program */
}
}
void insert_function(struct Students student)
{
FILE *print_file;
print_file = fopen("project2_database.bin","ab");/* Open file for adding record */
if(print_file==NULL)/* If file not exist than create */
{
printf("Error!");
exit(1);
}
fprintf (print_file,"%s %s %s %s\n",student.name,student.surname,student.grade,student.id) ;/* Add records to file */
fclose(print_file);/* Close file */
printf("Students name:%s\n",student.name);
printf("Students surname:%s\n",student.surname);
printf("Students grade:%s\n",student.grade);
printf("Students ID number:%s\n",student.id);
}
void search_function(char find[20])
{
struct Students student;
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;/* Open file for reading */
if(read_file==NULL)/* If file not exist than create */
{
printf("Error!");
exit(1);
}
else
{
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan file */
while(!feof(read_file))
{
if(strcmp(find,student.name)==0||strcmp(find,student.surname)==0||strcmp(find,student.grade)==0||strcmp(find,student.id)==0)/* If there is any match */
{
printf("%-20s %-20s %-5s %-12s\n",&student.name,&student.surname,&student.grade,&student.id);/* Print the match */
}
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan until end of the file */
}
}
fclose(read_file);/* Close file */
}
void delete_function(char sil[20])
{
struct Students student;
struct Students delete_student[1000];/* For rewrite the file without deleted datas */
int n=0;
int sayac;
FILE *read_file;
FILE *print_file;
read_file = fopen ( "project2_database.bin", "r" ) ;/* Open file for reading */
if(read_file==NULL)/* If file not exist than create */
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan datas in file */
while(!feof(read_file))
{
delete_student[n]=student;/* Each rows recorded as a struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan datas continuesly */
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=0;sayac<n;sayac++)
{
if(!(strcmp(sil,delete_student[sayac].name)==0||strcmp(sil,delete_student[sayac].surname)==0||strcmp(sil,delete_student[sayac].grade)==0||strcmp(sil,delete_student[sayac].id)==0))/* Print the datas which will not be deleted */
{
printf("%-20s %-20s %-5s %-12s\n",&delete_student[sayac].name,&delete_student[sayac].surname,&delete_student[sayac].grade,&delete_student[sayac].id);
}
}
}
fclose(fopen("project2_database.bin", "w"));/* Clean the file */
fclose(read_file);
print_file = fopen("project2_database.bin","ab");
if(print_file==NULL)
{
printf("Error!");
exit(1);
}
for(sayac=0;sayac<n;sayac++)
{
if(!(strcmp(sil,delete_student[sayac].name)==0||strcmp(sil,delete_student[sayac].surname)==0||strcmp(sil,delete_student[sayac].grade)==0||strcmp(sil,delete_student[sayac].id)==0))/* Write the datas which will not be deleted into the file */
{
fprintf (print_file,"%s %s %s %s\n",&delete_student[sayac].name,&delete_student[sayac].surname,&delete_student[sayac].grade,&delete_student[sayac].id) ;/* Write datas */
}
}
fclose(print_file);
}
void list_function(int list_value)
{
struct Students student;
static struct Students dynamic_student[1000];
static struct Students dynamic_student2[1000];
static struct Students dynamic_student3[1000];
static struct Students dynamic_student4[1000];
static struct Students student_temp;
int n=0;
int sayac;
int sayac2;
switch(list_value)
{
case 1:/* List names a-z */
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan file */
while(!feof(read_file))
{
dynamic_student[n]=student;/* Record the datas which are inside file to the dynamic struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;/* Scan file continiously */
}
for(sayac=0;sayac<n;sayac++)
{
for(sayac2=0;sayac2<n;sayac2++)
{
if(strcmp(dynamic_student[sayac2].name, dynamic_student[sayac2+1].name) > 0)/* If right name comes first in alphabetical order with left name than switch the datas */
{
student_temp=dynamic_student[sayac2+1];
dynamic_student[sayac2+1]=dynamic_student[sayac2];
dynamic_student[sayac2]=student_temp;
}
}
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=1;sayac<n+1;sayac++)
{
printf("%-20s %-20s %-5s %-12s\n",&dynamic_student[sayac].name,&dynamic_student[sayac].surname,&dynamic_student[sayac].grade,&dynamic_student[sayac].id);/* Print the alphabetical sorted datas */
}
}
fclose(read_file);
break;
}
case 2:
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
while(!feof(read_file))
{
dynamic_student2[n]=student;/* Record the datas which are inside file to the dynamic struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
}
for(sayac=0;sayac<n;sayac++)
{
for(sayac2=0;sayac2<n;sayac2++)
{
if(strcmp(dynamic_student2[sayac2].surname, dynamic_student2[sayac2+1].surname) > 0)/* Compare surnames */
{
student_temp=dynamic_student2[sayac2+1];
dynamic_student2[sayac2+1]=dynamic_student2[sayac2];
dynamic_student2[sayac2]=student_temp;
}
}
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=1;sayac<n+1;sayac++)
{
printf("%-20s %-20s %-5s %-12s\n",&dynamic_student2[sayac].name,&dynamic_student2[sayac].surname,&dynamic_student2[sayac].grade,&dynamic_student2[sayac].id);/* Print datas in surnames alphabetical order */
}
}
fclose(read_file);
break;
}
case 3:
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
while(!feof(read_file))
{
dynamic_student3[n]=student;/* Record the datas which are inside file to the dynamic struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
}
for(sayac=0;sayac<n;sayac++)
{
for(sayac2=0;sayac2<n;sayac2++)
{
if(strcmp(dynamic_student3[sayac2].grade, dynamic_student3[sayac2+1].grade) > 0)/* Compare grades */
{
student_temp=dynamic_student3[sayac2+1];
dynamic_student3[sayac2+1]=dynamic_student3[sayac2];
dynamic_student3[sayac2]=student_temp;
}
}
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=1;sayac<n+1;sayac++)
{
printf("%-20s %-20s %-5s %-12s\n",&dynamic_student3[sayac].name,&dynamic_student3[sayac].surname,&dynamic_student3[sayac].grade,&dynamic_student3[sayac].id);/* Print records in ascending grades */
}
}
fclose(read_file);
break;
}
case 4:
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
while(!feof(read_file))
{
dynamic_student4[n]=student;/* Record the datas which are inside file to the dynamic struct */
n++;
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
}
for(sayac=0;sayac<n;sayac++)
{
for(sayac2=0;sayac2<n;sayac2++)
{
if(strcmp(dynamic_student4[sayac2].id, dynamic_student4[sayac2+1].id) > 0)/* Compare ID numbers */
{
student_temp=dynamic_student4[sayac2+1];
dynamic_student4[sayac2+1]=dynamic_student4[sayac2];
dynamic_student4[sayac2]=student_temp;
}
}
}
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
for(sayac=1;sayac<n+1;sayac++)
{
printf("%-20s %-20s %-5s %-12s\n",&dynamic_student4[sayac].name,&dynamic_student4[sayac].surname,&dynamic_student4[sayac].grade,&dynamic_student4[sayac].id);/* Print datas in ascending ID form */
}
}
fclose(read_file);
break;
}
case 5:
{
FILE *read_file;
read_file = fopen ( "project2_database.bin", "r" ) ;
if(read_file==NULL)
{
printf("Error!");
exit(1);
}
else
{
printf("%-20s %-20s %-5s %-12s\n","NAME","SURNAME","GRADE","ID");
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
while(!feof(read_file))
{
printf("%-20s %-20s %-5s %-12s\n",&student.name,&student.surname,&student.grade,&student.id);/* Print datas as recorded */
fscanf (read_file, "%s %s %s %s",&student.name,&student.surname,&student.grade,&student.id) ;
}
}
fclose(read_file);
break;
}
}
}