In this article I would like to share with you a database system that I wrote in C++ and my back end is binary file in C++ that has a function to add,edit, view and delete the record of the student. It has also a function to compute the student grades.
programming projects , thesis and capstone projects, IT consulting
work, computer tutorials and web development work kindly contact me in the following email address for further details. If you want to advertise in my website kindly contact me also in my email address also. Thank you.
Program Listing
student.cpp
// student.cpp
// Written By Mr. Jake R. Pomperada, BSCS, MAED-IT
// July 26, 2018 Thursday
// Bacolod City, Negros Occidental Philippines
#include <iostream>
#include <iomanip>
#include <cmath>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
using namespace std;
int main( )
{
FILE *fp, *ft ;
char another, choice ;
struct student
{
char stud_id_no[300];
char name[300];
char course[300];
char subject[300];
float prelim,midterm,endterm,final_grade;
} ;
struct student grade;
char student_id[300];
long int recsize;
int flag=0;
fp = fopen ("GRADE_DB.DAT", "rb+" ) ;
if ( fp == NULL )
{
fp = fopen ( "GRADE_DB.DAT", "wb+" ) ;
if ( fp == NULL )
{
puts ( "Cannot open file" ) ;
exit(0) ;
}
}
recsize = sizeof ( grade ) ;
while ( 1 )
{
system("CLS");
setprecision(0);
cout <<"\n";
cout << "\n============================================";
cout <<"\n";
cout <<"\n STUDENT GRADING DATABASE SYSTEM IN C++";
cout <<"\n";
cout << " Created By Mr. Jake R. Pomperada, MAED-IT";
cout <<"\n=============================================";
cout <<"\n\n";
cout << "1. INSERT STUDENT RECORD";
cout <<"\n";
cout << "2. BROWSE STUDENT RECORD";
cout <<"\n";
cout << "3. EDIT STUDENT RECORDS" ;
cout <<"\n";
cout << "4. FIND STUDENT RECORDS";
cout <<"\n";
cout << "5. REMOVE STUDENT RECORDS";
cout <<"\n";
cout << "6. QUIT PROGRAM" ;
cout <<"\n\n";
cout <<"SELECT YOUR OPTION :=> ";
fflush (stdin) ;
choice = getche() ;
switch ( choice )
{
case '1' :
fseek ( fp, 0 , SEEK_END ) ;
another = 'Y' ;
while ( another == 'Y' )
{
system("cls");
cout <<"\n\n";
cout << "=== INSERT NEW STUDENT GRADE RECORD ===";
cout <<"\n\n";
cout <<"Enter Student ID Number : ";
cin >> grade.stud_id_no;
cout << "Enter Student Name: ";
fflush (stdin) ;
gets(grade.name);
cout <<"Enter Course : ";
fflush (stdin) ;
gets(grade.course);
cout <<"Enter Subject : ";
fflush (stdin) ;
gets(grade.subject);
cout <<"Enter Prelim Grade: ";
cin >> grade.prelim;
cout << "Enter Midtem Grade: ";
cin >> grade.midterm;
cout << "Enter Endterm Grade: ";
cin >> grade.endterm;
grade.final_grade = (grade.prelim * 0.30) + (grade.midterm * 0.30) + (grade.endterm * 0.40);
cout << "\n";
cout << "\n Student Final Grade : " << round(grade.final_grade);
fwrite (&grade, recsize, 1, fp ) ;
cout << "\n\n";
cout << "\nAdd New Student Record (Y/N) : " ;
fflush (stdin) ;
another = toupper(getche()) ;
}
break ;
case '2' :
system("cls");
rewind ( fp );
cout << "\n\n";
cout <<"=== VIEW STUDENT GRADE RECORD ===";
cout <<"\n\n";
while ( fread ( &grade, recsize, 1, fp ) == 1 )
{
cout <<"\n";
cout <<"\n ID Number : " <<grade.stud_id_no;
cout <<"\n Name : " <<grade.name;
cout <<"\n Course : " <<grade.course;
cout <<"\n Subject : " << grade.subject;
cout <<"\n Prelim Grade : " <<grade.prelim;
cout <<"\n Midterm Grade : " <<grade.midterm;
cout <<"\n Endterm Grade : " <<grade.endterm;
cout <<"\n";
grade.final_grade = (grade.prelim * 0.30) + (grade.midterm * 0.30) + (grade.endterm * 0.40);
cout <<"\n Student Final Grade : " <<round(grade.final_grade);
}
cout <<"\n\n";
system("pause");
break ;
case '3' :
another = 'Y' ;
while ( another == 'Y' )
{
system("cls");
cout <<"=== EDIT STUDENT GRADE RECORD ===";
cout <<"\n\n";
cout <<"Enter Student ID Number : ";
cin >> student_id;
rewind ( fp ) ;
cout <<"\n";
while ( fread ( &grade, recsize, 1, fp ) == 1 )
{
if ( strcmp ( grade.stud_id_no, student_id) == 0 )
{
cout <<"Enter Student ID Number : ";
fflush (stdin) ;
gets(grade.stud_id_no);
cout <<"Enter Student Name : ";
fflush ( stdin ) ;
gets(grade.name);
cout <<"Enter Course: ";
fflush ( stdin ) ;
gets(grade.course);
cout <<"Enter Subject : ";
fflush ( stdin ) ;
gets(grade.subject);
cout <<"Enter Prelim Grade : ";
cin >> grade.prelim;
cout <<"Enter Midtem Grade : ";
cin >> grade.midterm;
cout <<"Enter Endterm Grade: ";
cin >> grade.endterm;
cout <<"\n";
grade.final_grade = (grade.prelim * 0.20) + (grade.midterm * 0.30) + (grade.endterm * 0.50);
cout <<"\n Student Final Grade : " << round(grade.final_grade);
fseek ( fp, - recsize, SEEK_CUR ) ;
fwrite ( &grade, recsize, 1, fp ) ;
break ;
}
}
if (strcmp(grade.stud_id_no,student_id) != 0 )
{
cout <<"\n\n";
cout <<"No Student Record in the Database.";
cout <<"\n";
system("pause");
break;
}
cout <<"\n\n";
cout <<"\nEdit Another Student Record (Y/N) : ";
fflush ( stdin ) ;
another = toupper(getche());
}
break ;
case '4' :
rewind ( fp ) ;
another = 'Y' ;
while ( another == 'Y' )
{
system("cls");
cout <<"=== Find Student Records ===";
cout <<"\n\n";
cout <<"Enter Student ID Number : ";
cin >>student_id;
cout <<"\n";
rewind ( fp ) ;
while ( fread ( &grade, recsize, 1, fp ) == 1 )
{
if ( strcmp (grade.stud_id_no,student_id) == 0 )
{
cout <<"\n";
cout <<"\n ID Number : " <<grade.stud_id_no;
cout <<"\n Name : " << grade.name;
cout <<"\n Course : " <<grade.course;
cout <<"\n Subject : " <<grade.subject;
cout <<"\n Prelim Grade : " <<grade.prelim;
cout <<"\n Midterm Grade : " <<grade.midterm;
cout <<"\n Endterm Grade : " << grade.endterm;
cout <<"\n";
grade.final_grade = (grade.prelim * 0.30) + (grade.midterm * 0.30) + (grade.endterm * 0.40);
cout <<"\n Student Final Grade : " << round(grade.final_grade);
cout <<"\n\n";
system("pause");
break;
}
}
if (strcmp(grade.stud_id_no,student_id) != 0 )
{
cout <<"\n\n";
cout <<"No Student Record found in the Database.";
cout <<"\n";
system("pause");
break;
}
cout <<"\n\n";
cout <<"\n Find Another Student Record (Y/N) : " ;
fflush ( stdin ) ;
another = toupper(getche());
}
break ;
case '5' :
another = 'Y' ;
while ( another == 'Y' )
{
system("cls");
cout <<"=== REMOVE STUDENT GRADE RECORD ===";
cout <<"\n\n";
cout <<"Enter Student ID Number : ";
cin >> student_id;
cout <<"\n";
ft = fopen ( "TEMP.DAT", "wb" ) ;
rewind ( fp ) ;
while ( fread ( &grade, recsize, 1, fp ) == 1 )
{
if ( strcmp (grade.stud_id_no, student_id) != 0 )
fwrite ( &grade, recsize, 1, ft ) ;
else
flag=1;
}
fclose ( fp ) ;
fclose ( ft ) ;
remove ( "GRADE_DB.DAT" ) ;
rename ( "TEMP.DAT", "GRADE_DB.DAT" ) ;
fp = fopen ( "GRADE_DB.DAT", "rb+" ) ;
if(flag==1) {
cout <<"\n\n";
cout <<"Record Successfully Deleted From the Database.";
cout <<"\n";
system("pause");
}
else if (flag!=1) {
cout <<"\n\n";
cout <<"Record Not Found in the Database.";
cout <<"\n";
system("pause");
}
cout <<"\n\n";
cout << "Remove Another Student Record (Y/N) : " ;
fflush (stdin) ;
another = toupper(getche());
}
break ;
case '6' :
fclose ( fp ) ;
cout <<"\n\n";
cout <<"END OF PROGRAM";
cout <<"\n\n";
cout << "Thank You Very Much For Using This Software.";
cout <<"\n\n";
system("PAUSE");
exit(0);
}
}
}
I am currently accepting programming work, it project, school
programming projects , thesis and capstone projects, IT consulting
work, computer tutorials and web development work kindly contact me in the following email address for further details. If you want to advertise in my website kindly contact me also in my email address also. Thank you.
My email address are the following jakerpomperada@gmail.com and jakerpomperada@yahoo.com.
My mobile number here in the Philippines is 09173084360.
My telephone number at home here in Bacolod City, Negros Occidental Philippines is +63 (034) 4335675.
Sample Program Output
Program Listing
student.cpp
// student.cpp
// Written By Mr. Jake R. Pomperada, BSCS, MAED-IT
// July 26, 2018 Thursday
// Bacolod City, Negros Occidental Philippines
#include <iostream>
#include <iomanip>
#include <cmath>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
using namespace std;
int main( )
{
FILE *fp, *ft ;
char another, choice ;
struct student
{
char stud_id_no[300];
char name[300];
char course[300];
char subject[300];
float prelim,midterm,endterm,final_grade;
} ;
struct student grade;
char student_id[300];
long int recsize;
int flag=0;
fp = fopen ("GRADE_DB.DAT", "rb+" ) ;
if ( fp == NULL )
{
fp = fopen ( "GRADE_DB.DAT", "wb+" ) ;
if ( fp == NULL )
{
puts ( "Cannot open file" ) ;
exit(0) ;
}
}
recsize = sizeof ( grade ) ;
while ( 1 )
{
system("CLS");
setprecision(0);
cout <<"\n";
cout << "\n============================================";
cout <<"\n";
cout <<"\n STUDENT GRADING DATABASE SYSTEM IN C++";
cout <<"\n";
cout << " Created By Mr. Jake R. Pomperada, MAED-IT";
cout <<"\n=============================================";
cout <<"\n\n";
cout << "1. INSERT STUDENT RECORD";
cout <<"\n";
cout << "2. BROWSE STUDENT RECORD";
cout <<"\n";
cout << "3. EDIT STUDENT RECORDS" ;
cout <<"\n";
cout << "4. FIND STUDENT RECORDS";
cout <<"\n";
cout << "5. REMOVE STUDENT RECORDS";
cout <<"\n";
cout << "6. QUIT PROGRAM" ;
cout <<"\n\n";
cout <<"SELECT YOUR OPTION :=> ";
fflush (stdin) ;
choice = getche() ;
switch ( choice )
{
case '1' :
fseek ( fp, 0 , SEEK_END ) ;
another = 'Y' ;
while ( another == 'Y' )
{
system("cls");
cout <<"\n\n";
cout << "=== INSERT NEW STUDENT GRADE RECORD ===";
cout <<"\n\n";
cout <<"Enter Student ID Number : ";
cin >> grade.stud_id_no;
cout << "Enter Student Name: ";
fflush (stdin) ;
gets(grade.name);
cout <<"Enter Course : ";
fflush (stdin) ;
gets(grade.course);
cout <<"Enter Subject : ";
fflush (stdin) ;
gets(grade.subject);
cout <<"Enter Prelim Grade: ";
cin >> grade.prelim;
cout << "Enter Midtem Grade: ";
cin >> grade.midterm;
cout << "Enter Endterm Grade: ";
cin >> grade.endterm;
grade.final_grade = (grade.prelim * 0.30) + (grade.midterm * 0.30) + (grade.endterm * 0.40);
cout << "\n";
cout << "\n Student Final Grade : " << round(grade.final_grade);
fwrite (&grade, recsize, 1, fp ) ;
cout << "\n\n";
cout << "\nAdd New Student Record (Y/N) : " ;
fflush (stdin) ;
another = toupper(getche()) ;
}
break ;
case '2' :
system("cls");
rewind ( fp );
cout << "\n\n";
cout <<"=== VIEW STUDENT GRADE RECORD ===";
cout <<"\n\n";
while ( fread ( &grade, recsize, 1, fp ) == 1 )
{
cout <<"\n";
cout <<"\n ID Number : " <<grade.stud_id_no;
cout <<"\n Name : " <<grade.name;
cout <<"\n Course : " <<grade.course;
cout <<"\n Subject : " << grade.subject;
cout <<"\n Prelim Grade : " <<grade.prelim;
cout <<"\n Midterm Grade : " <<grade.midterm;
cout <<"\n Endterm Grade : " <<grade.endterm;
cout <<"\n";
grade.final_grade = (grade.prelim * 0.30) + (grade.midterm * 0.30) + (grade.endterm * 0.40);
cout <<"\n Student Final Grade : " <<round(grade.final_grade);
}
cout <<"\n\n";
system("pause");
break ;
case '3' :
another = 'Y' ;
while ( another == 'Y' )
{
system("cls");
cout <<"=== EDIT STUDENT GRADE RECORD ===";
cout <<"\n\n";
cout <<"Enter Student ID Number : ";
cin >> student_id;
rewind ( fp ) ;
cout <<"\n";
while ( fread ( &grade, recsize, 1, fp ) == 1 )
{
if ( strcmp ( grade.stud_id_no, student_id) == 0 )
{
cout <<"Enter Student ID Number : ";
fflush (stdin) ;
gets(grade.stud_id_no);
cout <<"Enter Student Name : ";
fflush ( stdin ) ;
gets(grade.name);
cout <<"Enter Course: ";
fflush ( stdin ) ;
gets(grade.course);
cout <<"Enter Subject : ";
fflush ( stdin ) ;
gets(grade.subject);
cout <<"Enter Prelim Grade : ";
cin >> grade.prelim;
cout <<"Enter Midtem Grade : ";
cin >> grade.midterm;
cout <<"Enter Endterm Grade: ";
cin >> grade.endterm;
cout <<"\n";
grade.final_grade = (grade.prelim * 0.20) + (grade.midterm * 0.30) + (grade.endterm * 0.50);
cout <<"\n Student Final Grade : " << round(grade.final_grade);
fseek ( fp, - recsize, SEEK_CUR ) ;
fwrite ( &grade, recsize, 1, fp ) ;
break ;
}
}
if (strcmp(grade.stud_id_no,student_id) != 0 )
{
cout <<"\n\n";
cout <<"No Student Record in the Database.";
cout <<"\n";
system("pause");
break;
}
cout <<"\n\n";
cout <<"\nEdit Another Student Record (Y/N) : ";
fflush ( stdin ) ;
another = toupper(getche());
}
break ;
case '4' :
rewind ( fp ) ;
another = 'Y' ;
while ( another == 'Y' )
{
system("cls");
cout <<"=== Find Student Records ===";
cout <<"\n\n";
cout <<"Enter Student ID Number : ";
cin >>student_id;
cout <<"\n";
rewind ( fp ) ;
while ( fread ( &grade, recsize, 1, fp ) == 1 )
{
if ( strcmp (grade.stud_id_no,student_id) == 0 )
{
cout <<"\n";
cout <<"\n ID Number : " <<grade.stud_id_no;
cout <<"\n Name : " << grade.name;
cout <<"\n Course : " <<grade.course;
cout <<"\n Subject : " <<grade.subject;
cout <<"\n Prelim Grade : " <<grade.prelim;
cout <<"\n Midterm Grade : " <<grade.midterm;
cout <<"\n Endterm Grade : " << grade.endterm;
cout <<"\n";
grade.final_grade = (grade.prelim * 0.30) + (grade.midterm * 0.30) + (grade.endterm * 0.40);
cout <<"\n Student Final Grade : " << round(grade.final_grade);
cout <<"\n\n";
system("pause");
break;
}
}
if (strcmp(grade.stud_id_no,student_id) != 0 )
{
cout <<"\n\n";
cout <<"No Student Record found in the Database.";
cout <<"\n";
system("pause");
break;
}
cout <<"\n\n";
cout <<"\n Find Another Student Record (Y/N) : " ;
fflush ( stdin ) ;
another = toupper(getche());
}
break ;
case '5' :
another = 'Y' ;
while ( another == 'Y' )
{
system("cls");
cout <<"=== REMOVE STUDENT GRADE RECORD ===";
cout <<"\n\n";
cout <<"Enter Student ID Number : ";
cin >> student_id;
cout <<"\n";
ft = fopen ( "TEMP.DAT", "wb" ) ;
rewind ( fp ) ;
while ( fread ( &grade, recsize, 1, fp ) == 1 )
{
if ( strcmp (grade.stud_id_no, student_id) != 0 )
fwrite ( &grade, recsize, 1, ft ) ;
else
flag=1;
}
fclose ( fp ) ;
fclose ( ft ) ;
remove ( "GRADE_DB.DAT" ) ;
rename ( "TEMP.DAT", "GRADE_DB.DAT" ) ;
fp = fopen ( "GRADE_DB.DAT", "rb+" ) ;
if(flag==1) {
cout <<"\n\n";
cout <<"Record Successfully Deleted From the Database.";
cout <<"\n";
system("pause");
}
else if (flag!=1) {
cout <<"\n\n";
cout <<"Record Not Found in the Database.";
cout <<"\n";
system("pause");
}
cout <<"\n\n";
cout << "Remove Another Student Record (Y/N) : " ;
fflush (stdin) ;
another = toupper(getche());
}
break ;
case '6' :
fclose ( fp ) ;
cout <<"\n\n";
cout <<"END OF PROGRAM";
cout <<"\n\n";
cout << "Thank You Very Much For Using This Software.";
cout <<"\n\n";
system("PAUSE");
exit(0);
}
}
}