Skip to content

Instantly share code, notes, and snippets.

@KUNAL1612
Created December 2, 2022 23:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KUNAL1612/d47110847b43b1d5ae0c039da53c1bd2 to your computer and use it in GitHub Desktop.
Save KUNAL1612/d47110847b43b1d5ae0c039da53c1bd2 to your computer and use it in GitHub Desktop.
// header files
#include<iostream>
#include<unordered_map>
#include<fstream>
#include<iomanip>
#include<sqlite3.db>
using namespace std;
//***************************************************************
// CLASS USED IN PROJECT
//****************************************************************
class student
{
int id;
std::string name[50];
int p_marks, c_marks, m_marks, e_marks;
double per;
char grade;
void calculate(); //function to calculate grade
public:
void getdata(); //function to accept data from user
void showdata() const; //function to show data on screen
void show_tabular() const;
int retidno() const;
}; //class ends here
void student::calculate()
{
per=(p_marks+c_marks+m_marks+e_marks)/4.0;
if(per>=60)
grade='A';
else if(per>=50)
grade='B';
else if(per>=33)
grade='C';
else
grade='F';
}
void student::getdata()
{
cout<<"\nEnter The ID number of student ";
cin>>id;
cout<<"\n\nEnter The Name of student ";
cin.ignore();
cin.getline(name,50);
cout<<"\nEnter The marks in physics out of 100 : ";
cin>>p_marks;
cout<<"\nEnter The marks in chemistry out of 100 : ";
cin>>c_marks;
cout<<"\nEnter The marks in maths out of 100 : ";
cin>>m_marks;
cout<<"\nEnter The marks in english out of 100 : ";
cin>>e_marks;
// cout<<"\nEnter The marks in computer science out of 100 : ";
// cin>>cs_marks;
calculate();
}
void student::showdata() const
{
cout<<"\n ID number of student : "<<id;
cout<<"\nName of student : "<<name;
cout<<"\nMarks in Physics : "<<p_marks;
cout<<"\nMarks in Chemistry : "<<c_marks;
cout<<"\nMarks in Maths : "<<m_marks;
cout<<"\nMarks in English : "<<e_marks;
cout<<"\nPercentage of student is :"<<per;
cout<<"\nGrade of student is :"<<grade;
}
void student::show_tabular() const
{
cout<<id<<setw(6)<<" "<<name<<setw(10)<<p_marks<<setw(4)<<c_marks<<setw(4)<<m_marks<<setw(4)
<<e_marks<<setw(4)<<cs_marks<<setw(8)<<per<<setw(6)<<grade<<endl;
}
int student::retid() const
{
return id;
}
//***************************************************************
// function declaration
//****************************************************************
void write_student(); //write the record in binary file
void display_all(); //read all records from binary file
void display_sp(int); //accept rollno and read record from binary file
void modify_student(int); //accept rollno and update record of binary file
void delete_student(int); //accept rollno and delete selected records from binary file
void class_result(); //display all records in tabular format from binary file
void result(); //display result menu
void intro(); //display welcome screen
void entry_menu(); //display entry menu on screen
//***************************************************************
// THE MAIN FUNCTION OF PROGRAM
//****************************************************************
int main()
{
char ch;
cout.setf(ios::fixed|ios::showpoint);
cout<<setprecision(2); // program outputs decimal number to two decimal places
intro();
do
{
system("cls"); //clearscreen
cout<<"\n\n\n\tMAIN MENU";
cout<<"\n\n\t01. RESULT MENU";
cout<<"\n\n\t02. ENTRY/EDIT MENU";
cout<<"\n\n\t03. EXIT";
cout<<"\n\n\tPlease Select Your Option (1-3) ";
cin>>ch;
switch(ch)
{
case '1': result();
break;
case '2': entry_menu();
break;
case '3':
break;
default :cout<<"\a";
}
}while(ch!='3');
return 0;
}
//***************************************************************
// function to write in file
//****************************************************************
void write_student()
{
student st;
st.getdata();
sqlite3* DB;
int exit = 0;
exit = sqlite3_open("students.db", &DB);
char* messaggeError;
std::string sql = "CREATE TABLE STUDENT("
"ID INT PRIMARY KEY NOT NULL, "
"NAME TEXT NOT NULL, "
"SUBJECT_1 INT NOT NULL, "
"SUBJECT_2 INT NOT NULL, "
"SUBJECT_3 INT NOT NULL, "
"SUBJECT_4 INT NOT NULL, "
"PER FLOAT NOT NULL, "
"GRADE CHAR NOT NULL, "
");";
exit = sqlite3_exec(DB, sql.c_str(), NULL, 0, &messaggeError);
if(exit != SQLITE_OK){
std::cerr << "Error Create Table" << std::endl;
sqlite3_free(messaggeError);
}
else
std::cout << "Table created Successfully" << std::endl;
std::string values = to_string(st.id) + st.name + to_string(p_marks) + to_string(c_marks) + to_string(m_marks) + to_string(e_marks) + st_string(per) + to_string(grade);
std::string sql2 = "INSERT INTO STUDENTS VALUES " + values + ";";
exit = sqlite3_exec(DB, sql2.c_str(), NULL, 0, &messaggeError);
if(exit != SQLITE_OK){
std::cerr << "Error Inserting into Table" << std::endl;
sqlite3_free(messaggeError);
}
else
std::cout << "Table Updated Successfully" << std::endl;
sqlite3_close(DB);
}
//***************************************************************
// function to read all records from file
//****************************************************************
void display_all()
{
sqlite3* DB;
char* messaggeError;
int exit = sqlite3_open("students.db", &DB);
std::string query = "SELECT * FROM STUDENT;";
char* messaggeError;
exit = sqlite3_exec(DB, sql.c_str(), NULL, 0, &messaggeError);
if(exit != SQLITE_OK){
std::cerr << "Error Reading from Table" << std::endl;
sqlite3_free(messaggeError);
}
else
std::cout << "Table read Successfully" << std::endl;
sqlite3_close(DB);
}
//***************************************************************
// function to read specific record from file
//****************************************************************
void display_sp(int n)
{
sqlite3* DB;
char* messaggeError;
int exit = sqlite3_open("example.db", &DB);
string query = "SELECT * FROM STUDENT WHERE ID = " + to_string(n) +";";
exit = sqlite3_exec(DB, sql.c_str(), NULL, 0, &messaggeError);
if(exit != SQLITE_OK){
std::cerr << "Error Reading from Table" << std::endl;
sqlite3_free(messaggeError);
}
else
std::cout << "Table read Successfully" << std::endl;
sqlite3_close(DB);
//***************************************************************
// function to modify record of file
//****************************************************************
void modify_student(int n)
{
// First delete the row
string query = "DELETE FROM STUDENT WHERE ID = " + to_string(n) +";";
exit = sqlite3_exec(DB, sql.c_str(), NULL, 0, &messaggeError);
if(exit != SQLITE_OK){
std::cerr << "Error Reading from Table" << std::endl;
sqlite3_free(messaggeError);
}
else
std::cout << "Table read Successfully" << std::endl;
student st;
st.getdata();
std::string values = to_string(st.id) + st.name + to_string(p_marks) + to_string(c_marks) + to_string(m_marks) + to_string(e_marks) + st_string(per) + to_string(grade);
std::string sql2 = "INSERT INTO STUDENTS VALUES " + values + ";";
exit = sqlite3_exec(DB, sql2.c_str(), NULL, 0, &messaggeError);
if(exit != SQLITE_OK){
std::cerr << "Error Inserting into Table" << std::endl;
sqlite3_free(messaggeError);
}
else
std::cout << "Table Updated Successfully" << std::endl;
sqlite3_close(DB);
}
//***************************************************************
// function to delete record of file
//****************************************************************
void delete_student(int n)
{
string query = "DELETE FROM STUDENT WHERE ID = " + to_string(n) +";";
exit = sqlite3_exec(DB, sql.c_str(), NULL, 0, &messaggeError);
if(exit != SQLITE_OK){
std::cerr << "Error Reading from Table" << std::endl;
sqlite3_free(messaggeError);
}
else
std::cout << "Table read Successfully" << std::endl;
sqlite3_close(DB);
}
//***************************************************************
// function to display result menu
//****************************************************************
void result()
{
char ch;
int id;
system("cls");
cout<<"\n\n\n\tRESULT MENU";
cout<<"\n\n\n\t1. Class Result";
cout<<"\n\n\t2. Student Report Card";
cout<<"\n\n\t3. Back to Main Menu";
cout<<"\n\n\n\tEnter Choice (1/2/3)? ";
cin>>ch;
system("cls");
switch(ch)
{
case '1' : class_result(); break;
case '2' : cout<<"\n\n\tEnter Student ID : "; cin>>id;
display_sp(id); break;
case '3' : break;
default: cout<<"\a";
}
}
//***************************************************************
// INTRODUCTION FUNCTION
//****************************************************************
void intro()
{
cout<<"WELCOME TO STUDENT MARKS REGISTRY\n\n";
cin.get();
}
//***************************************************************
// ENTRY / EDIT MENU FUNCTION
//****************************************************************
void entry_menu()
{
char ch;
int id;
system("cls");
cout<<"\n\n\n\tENTRY MENU";
cout<<"\n\n\t1.CREATE STUDENT RECORD";
cout<<"\n\n\t2.DISPLAY ALL STUDENTS RECORDS";
cout<<"\n\n\t3.SEARCH STUDENT RECORD ";
cout<<"\n\n\t4.MODIFY STUDENT RECORD";
cout<<"\n\n\t5.DELETE STUDENT RECORD";
cout<<"\n\n\t6.BACK TO MAIN MENU";
cout<<"\n\n\tPlease Enter Your Choice (1-6) ";
cin>>ch;
system("cls");
switch(ch)
{
case '1': write_student(); break;
case '2': display_all(); break;
case '3': cout<<"\n\n\tPlease Enter The ID number "; cin>>id;
display_sp(num); break;
case '4': cout<<"\n\n\tPlease Enter The ID number "; cin>>id;
modify_student(num);break;
case '5': cout<<"\n\n\tPlease Enter The ID number "; cin>>id;
delete_student(num);break;
case '6': break;
default: cout<<"\a"; entry_menu();
}
}
//***************************************************************
// END OF PROJECT
//***************************************************************
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment