C++

C++ Project on School Management

C++ Project on School Management

Aim: To develop a School Management System in C++ that handles student stream allotment (Science, Commerce, Arts) based on marks and administrator-defined criteria.

#include
#include
#include
#include
#include
#include
#include
#include

struct marks_criteria
{
    int sc_min, com_min, arts_min, seat_sc, seat_com, seat_arts;
} crit;

struct administrator
{
    char user_name[10];
    char password[10];
} admin;

struct student
{
    char name[20];
    int regno, m_eng, m_math, m_sc, m_sst, m_lang;
    int pref_code, stream;
    // Sc=1, Com=2; Arts=3;

    public:
        void new_file();
        void input_data();
        void allot_stream();
        int get_stream();
        void display();
        int show_per()
        {
            return((m_eng + m_math + m_sc + m_sst + m_lang) / 5);
        }
};

void welcome();
void menu();
int verify_password();
void assign_user();
void clear();
void input_criteria();
void read_criteria();
void read_student();
void create_eligible_sc();
void create_eligible_com();
void create_eligible_arts();
void read_eligible_sc();
void read_eligible_com();
void read_eligible_arts();
char * stream_name(int strm);
void select_list(char *in_file, char *out_file);
void thanks();

student s;

void main()
{
    clrscr();
    welcome();

    fstream fin, fout;
    fstream fsc, fcom, farts;
    char opt = '1', ch;

    while(opt != '8')
    {
        textmode(C80);
        textcolor(BLUE);
        textbackground(WHITE);
        clrscr();
        cout << "\n\t======================  MAIN   MENU  =======================\n";
        cout << "\n\t[1] CREATE / MODIFY ADMISSION CRITERIA(Administrator only)";
        cout << "\n\n\t[2] ENTER STUDENT'S DATA ";
        cout << "\n\n\t[3] ALLOTMENT OF  STREAM";
        cout << "\n\n\t[4] DISPLAY CRITERIA FOR SELECTION";
        cout << "\n\n\t[5] DISPLAY ALLOTMENT OF STUDENT'S STREAM";
        cout << "\n\n\t[6] DISPLAY ALL STUDENT'S REGISTERED";
        cout << "\n\n\t[7] CREATE / DISPLAY MERIT LIST";
        cout << "\n\n\t[8] QUIT";
        cout << "\n\t=============================================================\n";
        cout << "\n\n\t\tEnter your  choice : ";
        opt = getche();
        switch(opt)
        {
        case '1':
            int p;
            assign_user();
            p = verify_password();
            if(p == 0)
            {
                input_criteria();
            }
            else
            {
                cout << "\n\tU R Not a Valid User.";
                cout << "\n\tU Dont have the Authority to Create Question Bank. Bye\n\n";
            }
            break;

        case '2':
            int option;
            clrscr();
            cout << "\nWhat do u want --\n\n\n\n\n\tCreate  a new student information  file or Append to the existing file?\n\n\t(press 1 for new creation and 2 for appending)";
            cin >> option;
            if(option == 1)
            {
                s.new_file();
            }
            else
            {
                s.input_data();
            }
            break;

        case '3':
            clrscr();
            fin.open("student", ios::in | ios::out);

            fsc.open("elig_sc", ios::out);
            fcom.open("eligcom", ios::out);
            farts.open("eligart", ios::out);

            while(fin.read((char*)& s, sizeof(s)))
            {
                s.allot_stream();
                s.get_stream();

                cout << "\nApplication Rejected. Not Eligible\n";

                if(s.get_stream() == 1)
                    fsc.write((char*)& s, sizeof(s));

                if(s.get_stream() == 2)
                    fcom.write((char*)& s, sizeof(s));

                if(s.get_stream() == 3)
                    farts.write((char*)& s, sizeof(s));
            }
            fin.close();
            fsc.close();
            fcom.close();
            farts.close();
            cout << "\n\n\n\n\n";
            cout << "\n*******************************************";
            cout << "\n\n\tSTREAM ALLOCATION DONE.";
            cout << "\n*******************************************";
            getch();
            break;

        case '4':
            read_criteria();
            cout << "\n Sc  : <=" << crit.sc_min;
            break;

        case '5':
        case '6':
        {
            char k, c;
            clrscr();
            cout << "\n\tWhich Stream do you want to display?\n";
            cout << "\n\t[1] Science";
            cout << "\n\t[2] Commerce";
            cout << "\n\t[3] Arts";
            cout << "\n\n\t\tEnter your choice : ";
            k = getche();
            if(k >= '1' && k <= '3')
            {
                while(fin.read((char*)& s, sizeof(s)))
                {
                    s.display();
                    cout << "\n\t Continue (y/n)? : ";
                    c = getche();
                    c = tolower(c);
                    if(c == 'n')
                        break;
                }
            }
            fin.close();
            fin.close();
            fin.close();
            break;
        }

        case '8':
            thanks();
            break;
        }
    }
}

// END OF WHILE

void assign_user()
{
    strcpy(admin.user_name, "abhisek");
    strcpy(admin.password, "nokia");
}

int verify_password()
{
    char u_name[10];
    char u_pwd[10], temp[2];
    int x = 1;
    cout << "\n\n   Enter user name : ";
    cin >> u_name;
    cout << "\n\n   Enter Password : ";
    cin >> u_pwd;
    x = strcmp(admin.user_name, u_name);
    if(x == 0)
    {
        x = strcmp(admin.password, u_pwd);
    }
    cin.getline(temp, 2);
    return(x);
}

void student::allot_stream()
{
    int per = (m_eng + m_math + m_sc + m_sst + m_lang) / 5;
    read_criteria();

    switch(pref_code)
    {
        case 1:
            if(per >= crit.sc_min)
                stream = pref_code;
            else
                stream = 0;
            break;
        case 2:
            if(per >= crit.com_min)
                stream = pref_code;
            else
                stream = 0;
            break;
        case 3:
            if(per >= crit.arts_min)
                stream = pref_code;
            else
                stream = 0;
            break;
    }
}

int student::get_stream()
{
    return(stream);
}

void input_criteria()
{
    fstream fout;
    fout.open("criteria", ios::in | ios::out);
    cout << "\nEnter  the  required marks for SCIENCE stream (in percentage) : ";
    cin >> crit.sc_min;
    cout << "\nEnter  No. of Seats for SCIENCE stream : ";
    cin >> crit.seat_sc;
    cout << "\nEnter  the  required marks for COMMERCE stream(in percentage) : ";
    cin >> crit.com_min;
    cout << "\nEnter  No. of Seats for COMMERCE stream :";
    cin >> crit.seat_com;
    cout << "\nEnter  the  required marks for ARTS stream(in percentage) : ";
    cin >> crit.arts_min;
    cout << "\nEnter  No. of Seats for ARTS stream : ";
    cin >> crit.seat_arts;
    fout.write((char*)& crit, sizeof(crit));
    fout.close();
}

void read_criteria()
{
    fstream fin;
    fin.open("criteria", ios::in);
    fin.read((char*)& crit, sizeof(crit));
    fin.close();
}

void student::input_data()
{
    clrscr();
    fstream fin;
    fin.open("student", ios::app | ios::out);
    char t[2], ans;
    while(1)
    {
        cout << "\nEnter  the  name of the  student  : ";
        gets(name);
        cout << "\n\nEnter  the roll of the  student : ";
        cin >> regno;
        cout << "\n\nEnter  marks in eng      : ";
        cin >> m_eng;
        cout << "\n\nEnter  marks in math     : ";
        cin >> m_math;
        cout << "\n\nEnter  marks in science  : ";
        cin >> m_sc;
        cout << "\n\nEnter  marks in sst      : ";
        cin >> m_sst;
        cout << "\n\nEnter  marks in language : ";
        cin >> m_lang;
        clrscr();
        cin >> pref_code;
        stream = -1;
        fin.write((char*)& s, sizeof(s));
        cin.getline(t, 2);
        cout << "\n\tEnter More Student ? (y/n) : ";
        ans = getche();
        ans = tolower(ans);
        if(ans == 'n')
            break;
    }
    fin.close();
}

void student::new_file()
{
    clrscr();
    fstream fin;
    fin.open("student", ios::out);
    char t[2], ans;
    while(1)
    {
        cout << "\nEnter  the  name of the  student  : ";
        gets(name);
        cout << "\n\nEnter  the roll of the  student : ";
        cin >> regno;
        cout << "\n\nEnter  marks in eng      : ";
        cin >> m_eng;
        cout << "\n\nEnter  marks in math     : ";
        cin >> m_math;
        cout << "\n\nEnter  marks in science  : ";
        cin >> m_sc;
        cout << "\n\nEnter  marks in sst      : ";
        cin >> m_sst;
        cout << "\n\nEnter  marks in language : ";
        cin >> m_lang;
        clrscr();
        cin >> pref_code;
        stream = -1;
        fin.write((char*)& s, sizeof(s));
        cin.getline(t, 2);
        cout << "\n\tEnter More Student ? (y/n) : ";
        ans = getche();
        ans = tolower(ans);
        if(ans == 'n')
            break;
    }
    fin.close();
}

void student::display()
{
    cout << "\n============================================\n";
    cout << "\n\tNAME           : " << name;
}
Share:

Comments from readers

Leave a Comment

Share your thoughts below. Comments appear after a quick review.

You may also want to see: