Рубрики

Управление данными студентов в C ++

Базы данных используются во всех аспектах нашей жизни прямо сейчас. Триллионы байтов данных хранятся на серверах по всему миру. SQL является одним из самых основных методов использования такой базы данных. Но вы когда-нибудь задумывались об использовании C ++ для поддержки такой базы данных. В этом посте мы поговорим о реализации различных представлений в текстовом файле в зависимости от типа пользователя и внесем соответствующие изменения.

Данные, хранящиеся с использованием этого кода:
1) Регистрационный номер
2) Имя
3) Знаки в CSE1001
4) Знаки в CSE1002
5) Проктор ID

Следующий код представляет собой простую реализацию проекта управления студентами, написанного на C ++

// Включаем все необходимые библиотеки.
#include<stdio.h>   
#include<iostream>
#include<fstream>
#include<string.h>

  

using namespace std;

  

int main(){

    // Учитывая максимальную длину введенных данных (name), равную 15.

    char data[15];  

    int n = 0, option = 0, count_n = 0;

    // Это начальная отметка, назначенная субъекту.

    string empty = "00";    

    string proctor = "";

    // Имя файла, в котором хранится БД.

    ifstream f("Example.txt");      

    string line;

     

    // Следующий цикл for подсчитывает общее количество строк в файле.

    for (int i = 0; std::getline(f, line); ++i){    

        count_n++;}

      

    while(option != 6){

   // Это распечатывает все доступные опции в БД

    cout << "\nAvailable operations: \n1. Add New Students\n2."

        << "Student Login\n3. Faculty Login\n4. Proctor Login\n5. Admin View\n"

        << "6. Exit\nEnter option: ";

    cin >> option;

  

    if(option == 1){

    cout << "Enter the number of students: ";

    cin >> n;

      

    count_n = count_n + n;

      

    for (int i = 0;i < n;i++){

        ofstream outfile;

            outfile.open("Example.txt",ios::app);

        // Все данные одного учащегося хранятся построчно.

        cout << "Enter your registration number: ";

        cin >> data;

        outfile << data << "\t";

          

        cout << "Enter your name: ";

        cin >> data;

        int len = strlen(data);

          

        while (len < 15){

            data[len] = ' ';

            len = len + 1;

        }

        outfile << data << "\t";

        // Вставка пустых данных изначально в файл

        outfile << empty << "\t";

        outfile << empty << "\t";    

          

        cout << "Enter your proctor ID: ";

        cin >> proctor;

          

        outfile << proctor << endl;

    }}

      

    else if (option == 2){

        char regno[9];

        cout << "Enter your registration number: ";

        cin >> regno;

        ifstream infile;

        int check = 0;

        infile.open("Example.txt",ios::in);

          

        // Этот цикл выводит данные в соответствии с указанным регистрационным номером.

        while (infile >> data){

        if (strcmp(data,regno) == 0){

            cout << "\nRegistration Number: " << data << endl;

            infile >> data;

            cout << "Name: " << data << endl;

              

            infile >> data;

                cout << "CSE1001 mark: " << data << endl;

              

            infile>>data;

            cout<<"CSE1002 mark: "<<data<<endl;

              

            infile>>data;

            cout<<"Proctor ID: "<<data<<endl;

              

            infile.close();

            check = 1;}

        }

          

        if (check == 0){

            cout<<"No such registration number found!"<<endl;}  

          

    }

      

    // Этот цикл используется для просмотра и добавления оценок в базу данных студента.

    else if (option == 3){

        char subcode[7];

        cout << "Enter your subject code: ";

        cin >> subcode;

        string code1 = "CSE1001", code2 = "CSE1002",mark = "";

        ifstream infile;

        int check = 0;

          

        cout << "\nAvailable operations: \n1. Add data about marks\n"

                << "2. View data\nEnter option: ";

        cin >> option;

          

        if (option == 1){

            cout << "Warning! You would need to add mark"

                    << "details for all the students!" << endl;

            for(int i = 0;i < count_n;i++){

                fstream file("Example.txt");

  

                                // Поиск в файле выполнен в соответствии с длиной

            // вставляемых данных. Это необходимо скорректировать соответственно

            // для разных длин данных.

  

            if(strcmp(subcode,code1.c_str()) == 0){

                        file.seekp(26+37*i,std::ios_base::beg);

                    cout << "Enter the mark of student#" << (i+1) << " : ";

                cin >> mark;

                file.write(mark.c_str(),2);}

              

            if(strcmp(subcode,code2.c_str()) == 0){

                file.seekp(29+37*i,std::ios_base::beg);

                cout << "Enter the mark of student#" << (i+1) << " : ";

                cin >> mark;

                file.write(mark.c_str(),2);}

            }

              

        }

  

        // Этот цикл используется для просмотра оценок ученика.

        // Дополнительные команды infile были использованы для получения определенной отметки

        // только после того, как данные разделены табуляцией.

  

        else if(option == 2){

        infile.open("Example.txt",ios::in);

        if (strcmp(subcode,code1.c_str()) == 0){

            cout << "Registration number - Marks\n" << endl;

            while(infile >> data){

            cout << data;

            infile >> data;

                infile >> data;

            cout << " - " << data << endl;

            infile >> data;

            infile >> data;

            check = 1;

            }

        }

          

        infile.close();

        infile.open("Example.txt",ios::in);     

  

        if(strcmp(subcode,code2.c_str()) == 0){

            cout << "Registration number - Marks\n" << endl;

                while(infile >> data){

            cout << data;

            infile >> data;

            infile >> data;

            infile >> data;

            cout << " - " << data << endl;

            infile >> data;

            check = 1;

            }

        }}

          

        infile.close();

          

        if (check == 0){

            cout << "No such subject code found!" << endl;

        }

          

    }

  

    // Этот цикл отображает все данные студентов под одним и тем же идентификатором.

  

    else if (option == 4){

        char procid[7];

        cout << "Enter your proctor ID: ";

        cin >> procid;

            int check = 1;

        char temp1[100], temp2[100], temp3[100];

        char temp4[100], id[100];

        ifstream infile;

        infile.open("Example.txt",ios::in);

          

        while (infile >> temp1){

            infile >> temp2;            

        infile >> temp3;

        infile >> temp4;

        infile >> id;

          

        if (strcmp(id,procid) == 0){            

            cout << "\nRegistration Number: " << temp1 << endl;

            cout << "Name: " << temp2 << endl;

            cout << "CSE1001 Mark: " << temp3 << endl;

            cout << "CSE1002 Mark: " << temp4 << endl;

            check = 1;

        }

        }

          

        if (check == 0){

            cout << "No such proctor ID found!" << endl;

        }}

      

    // Этот цикл выступает в роли администратора для просмотра всех данных в файле.

  

    else if(option == 5){

        char password[25];

        cout << "Enter the admin password: ";

        cin >> password;

  

        // Это значение переменной можно изменить по вашему требованию

        // пароля администратора.

  

        string admin_pass = "admin";

          

        if (strcmp(password,admin_pass.c_str()) == 0){

            cout << "Reg No.       \tName\tCSE1001\tCSE1002\tProctor ID" << endl;

            ifstream infile;

            infile.open("Example.txt",ios::in);

            char data[20];

              

            while(infile >> data){

                cout << data << "\t";

                infile >> data;

                cout << data << "\t";

                infile >> data;

                cout << data << "\t";

                infile >> data;

                cout << data << "\t";

                infile >> data;

                cout << data << endl;

            }

        }

    }

}}

Выход:


Available operations: 
1. Add New Students
2. Student Login
3. Faculty Login
4. Proctor Login
5. Admin View
6. Exit
Enter option: 1
Enter the number of students: 2
Enter your registration number: 15BCE2083
Enter your name: Dheeraj
Enter your proctor ID: 1001
Enter your registration number: 15BCE2082
Enter your name: Rohan
Enter your proctor ID: 1002

Available operations: 
1. Add New Students
2. Student Login
3. Faculty Login
4. Proctor Login
5. Admin View
6. Exit
Enter option: 3
Enter your subject code: CSE1001

Available operations: 
1. Add data about marks
2. View data
Enter option: 1
Warning! You would need to add mark details for all the students!
Enter the mark of student#1 : 52
Enter the mark of student#2 : 89
No such subject code found!

Available operations: 
1. Add New Students
2. Student Login
3. Faculty Login
4. Proctor Login
5. Admin View
6. Exit
Enter option: 5
Enter the admin password: admin
Reg No.       	Name	CSE1001	CSE1002	Proctor ID
15BCE2083	Dheeraj	52	00	1001
15BCE2082	Rohan	89	00	1002

Available operations: 
1. Add New Students
2. Student Login
3. Faculty Login
4. Proctor Login
5. Admin View
6. Exit
Enter option: 6 


------------------
(program exited with code: 0)
Press return to continue

Обратите внимание, что я установил положение указателя в соответствии с длиной данных, вводимых в текстовом файле. Некоторые из вещей, которые я предположил, это то, что регистрационный номер всегда имеет длину 9 символов, код темы — CSE1001 / CSE1002, идентификатор проктора — 4 символа, метки — всего 2 символа. Вам необходимо изменить код соответствующим образом, если вы хотите ввести другой тип данных.

Эта статья предоставлена Dheeraj Nair . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Управление данными студентов в C ++

0.00 (0%) 0 votes