Система управления студенческими записями с использованием связанного списка
Опубликовано: 2 Сентября, 2022
Предпосылки: связанный список
Проблема: Создайте систему управления записями учащихся, которая может выполнять следующие операции:
- Вставить студенческую запись
- Удалить студенческую запись
- Показать студенческую запись
- Поиск студенческой записи
Личный кабинет должен содержать следующие пункты
- Имя студента
- Ролл номер студента
- Курс, на который зачислен студент
- Всего оценок студента
Подход: Имея базовые знания об операциях со связанными списками, таких как вставка и удаление элементов в связанном списке, можно создать систему управления записями учащихся. Ниже описаны функции, которые должны быть реализованы:
- Проверка записи: это служебная функция создания записи, которая проверяет перед вставкой, что запись уже существует или нет. Он использует концепцию проверки узла с заданными данными в связанном списке.
- Создать запись: это так же просто, как создать новый узел в пустом связанном списке или вставить новый узел в непустой связанный список.
- Поиск записи: поиск записи аналогичен поиску ключа в связанном списке. Здесь в ключе записи учащегося указан номер списка, поскольку номер списка уникален для каждого учащегося.
- Удалить запись: Удалить запись аналогично удалению ключа из связанного списка. Здесь ключевой номер рулона. Удалить запись — это целочисленная функция, возвращающая -1 , если такая запись с заданным номером списка не найдена, в противном случае она удаляет узел с заданным ключом и возвращает 0 .
- Показать запись: показывает, что запись аналогична печати всех элементов связанного списка.
Обработка исключений
Хотя реализация обработки исключений довольно проста, перед проектированием такой системы необходимо принять во внимание несколько моментов:
- Номер рулона должен использоваться в качестве ключа для различения двух разных записей, поэтому при вставке записи проверьте, существует ли эта запись уже в нашей базе данных или нет, если она уже существует, то немедленно сообщите пользователю, что запись уже существует, и вставьте эту запись в базу данных. .
- Запись должна быть вставлена в отсортированном порядке для этого, чтобы сделать номер списка ключом и использовать узел вставки в отсортированном связанном списке.
Ниже приведена реализация вышеуказанного подхода:
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
" ; 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
" ; } // 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
" ; return ; } // Otherwise else { Node* p = head; while (p) { if (p->roll == roll) { cout << "Roll Number " << p->roll << endl; cout << "Name " << p->Name << endl; cout << "Department " << p->Dept << endl; cout << "Marks " << p->Marks << endl; return ; } p = p->next; } if (p == NULL) cout << "No such Record " << "Available
" ; } } // 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
" ; 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
" ; return -1; p->next = t->next; delete t; cout << "Record Deleted " << "Successfully
" ; return 0; } } // Function to display the Student"s // Record void Show_Record() { Node* p = head; if (p == NULL) { cout << "No Record " << "Available
" ; } else { cout << "Index Name Course" << " Marks
" ; // Until p is not NULL while (p != NULL) { cout << p->roll << " " << p->Name << " " << p->Dept << " " << p->Marks << endl; p = p->next; } } } // Driver code int main() { head = NULL; string Name, Course; int Roll, Marks; // Menu-driven program while ( true ) { cout << "
Welcome to Student Record " "Management System
Press
1 to " "create a new Record
2 to delete a " "student record
3 to Search a Student " "Record
4 to view all students " "record
5 to Exit
" ; cout << "
Enter your Choice
" ; int Choice; // Enter Choice cin >> Choice; if (Choice == 1) { cout << "Enter Name of Student
" ; cin >> Name; cout << "Enter Roll Number of Student
" ; cin >> Roll; cout << "Enter Course of Student
" ; cin >> Course; cout << "Enter Total Marks of Student
" ; cin >> Marks; Insert_Record(Roll, Name, Course, Marks); } else if (Choice == 2) { cout << "Enter Roll Number of Student whose " "record is to be deleted
" ; cin >> Roll; Delete_Record(Roll); } else if (Choice == 3) { cout << "Enter Roll Number of Student whose " "record you want to Search
" ; cin >> Roll; Search_Record(Roll); } else if (Choice == 4) { Show_Record(); } else if (Choice == 5) { exit (0); } else { cout << "Invalid Choice " << "Try Again
" ; } } return 0; } |
Вывод: Ниже приведены скриншоты вывода различных функций, предоставляемых системой управления студенческими записями:
- Создать запись:
- Показать запись:
- Удалить запись:
- Запись поиска:
- Студенческая запись: