Requisitos previos: lista vinculada
Problema: Cree un sistema de gestión de registros de estudiantes que pueda realizar las siguientes operaciones:
- Insertar registro de estudiante
- Eliminar registro de estudiante
- Mostrar registro de estudiante
- Buscar registro de estudiante
El registro del estudiante debe contener los siguientes elementos
- Nombre de estudiante
- Rollo Número de Estudiante
- Curso en el que está inscrito el estudiante
- Marcas totales del estudiante
Enfoque: con el conocimiento básico de las operaciones en las listas vinculadas , como la inserción, la eliminación de elementos en la lista vinculada , se puede crear el sistema de gestión de registros de estudiantes. A continuación se explican las funcionalidades que se van a implementar:
- Verificar registro: es una función de utilidad para crear un registro que verifica antes de la inserción si el registro ya existe o no. Utiliza el concepto de verificar un Node con Datos dados en una lista enlazada .
- Crear registro: es tan simple como crear un nuevo Node en la lista de enlaces vacíos o insertar un nuevo Node en una lista de enlaces no vacíos.
- Buscar registro: buscar un registro es similar a buscar una clave en la lista vinculada . Aquí, en la clave del registro del estudiante, se encuentra el número de registro, ya que el número de registro es único para cada estudiante.
- Eliminar registro: Eliminar registro es similar a eliminar una clave de una lista vinculada . Aquí la clave es el número de rollo. Eliminar registro es una función de devolución de enteros, devuelve -1 si no se encuentra dicho registro con un número de rollo dado; de lo contrario, elimina el Node con la clave dada y devuelve 0 .
- Mostrar Registro: Muestra el registro es similar a imprimir todos los elementos de la lista Vinculada .
Manejo de excepciones
Aunque la implementación del manejo de excepciones es bastante simple, se deben tener en cuenta algunas cosas antes de diseñar un sistema de este tipo:
- El número de registro debe usarse como clave para distinguir entre dos registros diferentes, por lo tanto, al insertar el registro, verifique si este registro ya existe en nuestra base de datos o no, si ya existe, informe inmediatamente al usuario que el registro ya existe e inserte ese registro en la base de datos .
- El registro debe insertarse en orden ordenado para que esto haga que el número de lista sea una clave y use el Node de inserción en la lista ordenada ordenada .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Node Class class Node { public: int roll; string Name; string Dept; int Marks; Node* next; }; // Stores the head of the Linked List Node* head = new Node(); // Check Function to check that if // Record Already Exist or Not bool check(int x) { // Base Case if (head == NULL) return false; Node* t = new Node; t = head; // Traverse the Linked List while (t != NULL) { if (t->roll == x) return true; t = t->next; } return false; } // Function to insert the record void Insert_Record(int roll, string Name, string Dept, int Marks) { // if Record Already Exist if (check(roll)) { cout << "Student with this " << "record Already Exists\n"; return; } // Create new Node to Insert Record Node* t = new Node(); t->roll = roll; t->Name = Name; t->Dept = Dept; t->Marks = Marks; t->next = NULL; // Insert at Begin if (head == NULL || (head->roll >= t->roll)) { t->next = head; head = t; } // Insert at middle or End else { Node* c = head; while (c->next != NULL && c->next->roll < t->roll) { c = c->next; } t->next = c->next; c->next = t; } cout << "Record Inserted " << "Successfully\n"; } // Function to search record for any // students Record with roll number void Search_Record(int roll) { // if head is NULL if (!head) { cout << "No such Record " << "Available\n"; return; } // Otherwise else { Node* p = head; while (p) { if (p->roll == roll) { cout << "Roll Number\t" << p->roll << endl; cout << "Name\t\t" << p->Name << endl; cout << "Department\t" << p->Dept << endl; cout << "Marks\t\t" << p->Marks << endl; return; } p = p->next; } if (p == NULL) cout << "No such Record " << "Available\n"; } } // Function to delete record students // record with given roll number // if it exist int Delete_Record(int roll) { Node* t = head; Node* p = NULL; // Deletion at Begin if (t != NULL && t->roll == roll) { head = t->next; delete t; cout << "Record Deleted " << "Successfully\n"; return 0; } // Deletion Other than Begin while (t != NULL && t->roll != roll) { p = t; t = t->next; } if (t == NULL) { cout << "Record does not Exist\n"; return -1; p->next = t->next; delete t; cout << "Record Deleted " << "Successfully\n"; return 0; } } // Function to display the Student's // Record void Show_Record() { Node* p = head; if (p == NULL) { cout << "No Record " << "Available\n"; } else { cout << "Index\tName\tCourse" << "\tMarks\n"; // Until p is not NULL while (p != NULL) { cout << p->roll << " \t" << p->Name << "\t" << p->Dept << "\t" << p->Marks << endl; p = p->next; } } } // Driver code int main() { head = NULL; string Name, Course; int Roll, Marks; // Menu-driven program while (true) { cout << "\n\t\tWelcome to Student Record " "Management System\n\n\tPress\n\t1 to " "create a new Record\n\t2 to delete a " "student record\n\t3 to Search a Student " "Record\n\t4 to view all students " "record\n\t5 to Exit\n"; cout << "\nEnter your Choice\n"; int Choice; // Enter Choice cin >> Choice; if (Choice == 1) { cout << "Enter Name of Student\n"; cin >> Name; cout << "Enter Roll Number of Student\n"; cin >> Roll; cout << "Enter Course of Student \n"; cin >> Course; cout << "Enter Total Marks of Student\n"; cin >> Marks; Insert_Record(Roll, Name, Course, Marks); } else if (Choice == 2) { cout << "Enter Roll Number of Student whose " "record is to be deleted\n"; cin >> Roll; Delete_Record(Roll); } else if (Choice == 3) { cout << "Enter Roll Number of Student whose " "record you want to Search\n"; cin >> Roll; Search_Record(Roll); } else if (Choice == 4) { Show_Record(); } else if (Choice == 5) { exit(0); } else { cout << "Invalid Choice " << "Try Again\n"; } } return 0; }
Salida: a continuación se muestran las capturas de pantalla de la salida de las diversas funciones proporcionadas por el sistema de gestión de registros de estudiantes:
- Crear registro:
- Mostrar registro:
- Eliminar el registro:
- Registro de búsqueda:
- Expediente del estudiante:
Publicación traducida automáticamente
Artículo escrito por srivastavaharshit848 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA